Imported Upstream version 1.3.1
diff --git a/ChangeLog b/ChangeLog
index dcd6878..55a508d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,194 +1,11 @@
-=== release 1.2.4 ===
+=== release 1.3.1 ===
 
-2014-04-18  Sebastian Dröge <slomo@coaxion.net>
+2014-05-03  Sebastian Dröge <slomo@coaxion.net>
 
 	* configure.ac:
-	  releasing 1.2.4
+	  releasing 1.3.1
 
-2014-04-10 12:10:47 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
-
-	* gst-libs/gst/video/gstvideometa.c:
-	  videometa: fix texture_type memcpy size
-	  Coverity 1139589, 1139588
-
-2014-04-08 15:43:50 +0200  Wim Taymans <wtaymans@redhat.com>
-
-	* gst-libs/gst/sdp/gstsdpmessage.c:
-	  sdp: guard against address parse errors.
-
-2014-03-25 17:11:34 +0100  Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
-
-	* gst/adder/gstadder.c:
-	  adder: rework the logic to check if eos has to be sent.
-	  Checking the size available was incorrect, and the infos
-	  for per-pad EOS are available.
-	  Same logic as audiomixer.
-	  fixes: https://bugzilla.gnome.org/show_bug.cgi?id=727025
-
-2014-04-04 02:14:50 +1100  Jan Schmidt <jan@centricular.com>
-
-	* gst/playback/gstplaybin2.c:
-	  playbin: Drop reference to any source element in NULL state
-	  Drop the reference instead of waiting for either finalize(), or
-	  for a new source when reused. Everyone else already forgot about
-	  the old source.
-
-2014-03-16 17:04:44 +0100  Ognyan Tonchev <otonchev@gmail.com>
-
-	* gst-libs/gst/rtsp/gstrtspconnection.c:
-	  rtspconnection: Fix minor memory leaks in error handling
-	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=726642
-
-2014-03-05 00:35:30 +0000  Tim-Philipp Müller <tim@centricular.com>
-
-	* gst/typefind/gsttypefindfunctions.c:
-	  typefindfunctions: lower H.263 typefinder max probability
-	  The typefinder returns LIKELY for as little as one possible
-	  sync and no bad sync (not even taking into account how much
-	  data was looked at for that). It's generally just not fit
-	  for purpose, so should just not return anything like LIKELY
-	  at all ever, even more so since it only recognises one out
-	  of ten H263 files, and likes to mis-detect mp3s as H263.
-	  https://bugzilla.gnome.org/show_bug.cgi?id=700770
-	  https://bugzilla.gnome.org/show_bug.cgi?id=725644
-
-2014-02-24 11:17:05 -0500  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
-
-	* gst-libs/gst/audio/gstaudiobasesink.c:
-	  audiobasesink: clip start samples to match clipped start time
-	  Clock slaving can clip start time to zero, giving us a shorted
-	  duration than we originally got. To keep in sync, we must then
-	  discard the samples falling before that zero timestamp.
-	  This possibly fixes random distortion caused by constant PA
-	  underflows which are never resynced.
-
-2014-03-02 11:58:58 +0100  Ognyan Tonchev <ognyan@axis.com>
-
-	* gst-libs/gst/rtsp/gstrtspconnection.c:
-	  rtspconnection: Call closed() when GET is closed in tunneled mode
-	  This patch adds read source on the write socket in tunneled
-	  mode and we get a callback when client disconnects the GET
-	  channel.
-	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=725313
-
-2014-02-04 13:55:49 +0100  Eric Trousset <etrousset@awox.com>
-
-	* gst-libs/gst/tag/gsttagdemux.c:
-	  tagdemux: Forward TIME seeks upstream too, maybe upstream can handle that
-	  https://bugzilla.gnome.org/show_bug.cgi?id=723597
-
-2014-02-19 13:53:06 +0100  Ognyan Tonchev <ognyan@axis.com>
-
-	* gst-libs/gst/rtsp/gstrtspconnection.c:
-	  rtspconnection: Remove read child source when POST is disconnected
-	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=724720
-
-2014-02-19 01:55:50 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
-
-	* ext/ogg/gstoggdemux.c:
-	  oggdemux: allow file to go until the end in push mode
-	  When seeking back to original state after duration seeks, let
-	  upstream know that we want the whole file, including the last
-	  byte that wasn't requested on the duration seeks.
-	  https://bugzilla.gnome.org/show_bug.cgi?id=724633
-
-2014-02-18 15:02:57 +0100  Sebastian Dröge <sebastian@centricular.com>
-
-	* gst/playback/gstplaybin2.c:
-	  playbin: Keep inputselector around until we release its pads
-	  Otherwise there's an interesting race condition when we destroy
-	  the inputselector (actually it will be destroyed later when its state
-	  change message gets destroyed) and afterwards release its sinkpad.
-	  This is the code path when the last channel is removed from the
-	  input selector.
-	  Gave this warning sometimes, for chained oggs or whenever else
-	  we change decode groups:
-	  GStreamer-CRITICAL **: Padname '':sink_0 does not belong to element inputselector0 when removing
-
-2014-02-16 15:32:47 +0100  Sebastian Dröge <sebastian@centricular.com>
-
-	* gst/playback/gstplaysink.c:
-	  playsink: Only remove the complete text chain if the text pad goes away
-	  If the text pads does not go away we just set the overlay to silent, which
-	  allows us to immediately re-enable subs later again. However before this
-	  change we also released the streamsynchronizer text pads, which deadlocked
-	  because there was still dataflow going on. Just do this only if we remove
-	  the complete chain.
-	  https://bugzilla.gnome.org/show_bug.cgi?id=683504
-
-2014-02-11 16:35:45 +0100  Sebastian Dröge <sebastian@centricular.com>
-
-	* gst/playback/gstplaybin2.c:
-	  playbin: First try to get the pad's current caps, then query caps
-	  The caps query might give us ANY caps while the pad has fixed caps
-	  configured currently.
-
-2014-02-10 16:33:50 +0100  Sebastian Dröge <sebastian@centricular.com>
-
-	* gst/playback/gstplaybin2.c:
-	  playbin: Fix memory leak in autoplugging code
-	  We should not leak element factories ideally.
-
-2014-01-18 13:31:06 +0100  Sebastian Dröge <sebastian@centricular.com>
-
-	* gst/playback/gstplaybin2.c:
-	  playbin: Insert decoders without GstAVElement information between the other decoders
-	  Otherwise they would be preferred over all decoders independent
-	  of their ranks.
-	  https://bugzilla.gnome.org/show_bug.cgi?id=722316
-
-2014-01-18 13:12:16 +0100  Sebastian Dröge <sebastian@centricular.com>
-
-	* gst/playback/gstplaybin2.c:
-	  playbin: Only put parsers and sinks first, not all non-decoders
-	  https://bugzilla.gnome.org/show_bug.cgi?id=722316
-
-2014-02-10 16:33:35 +0100  Sebastian Dröge <sebastian@centricular.com>
-
-	* tests/check/elements/playbin-complex.c:
-	  playbin: Fix memory leak in unit test
-
-=== release 1.2.3 ===
-
-2014-02-08 11:44:13 +0100  Sebastian Dröge <sebastian@centricular.com>
-
-	* ChangeLog:
-	* NEWS:
-	* RELEASE:
-	* configure.ac:
-	* docs/plugins/inspect/plugin-adder.xml:
-	* docs/plugins/inspect/plugin-alsa.xml:
-	* docs/plugins/inspect/plugin-app.xml:
-	* docs/plugins/inspect/plugin-audioconvert.xml:
-	* docs/plugins/inspect/plugin-audiorate.xml:
-	* docs/plugins/inspect/plugin-audioresample.xml:
-	* docs/plugins/inspect/plugin-audiotestsrc.xml:
-	* docs/plugins/inspect/plugin-cdparanoia.xml:
-	* docs/plugins/inspect/plugin-encoding.xml:
-	* docs/plugins/inspect/plugin-gio.xml:
-	* docs/plugins/inspect/plugin-ivorbisdec.xml:
-	* docs/plugins/inspect/plugin-libvisual.xml:
-	* docs/plugins/inspect/plugin-ogg.xml:
-	* docs/plugins/inspect/plugin-pango.xml:
-	* docs/plugins/inspect/plugin-playback.xml:
-	* docs/plugins/inspect/plugin-subparse.xml:
-	* docs/plugins/inspect/plugin-tcp.xml:
-	* docs/plugins/inspect/plugin-theora.xml:
-	* docs/plugins/inspect/plugin-typefindfunctions.xml:
-	* docs/plugins/inspect/plugin-videoconvert.xml:
-	* docs/plugins/inspect/plugin-videorate.xml:
-	* docs/plugins/inspect/plugin-videoscale.xml:
-	* docs/plugins/inspect/plugin-videotestsrc.xml:
-	* docs/plugins/inspect/plugin-volume.xml:
-	* docs/plugins/inspect/plugin-vorbis.xml:
-	* docs/plugins/inspect/plugin-ximagesink.xml:
-	* docs/plugins/inspect/plugin-xvimagesink.xml:
-	* gst-plugins-base.doap:
-	* win32/common/_stdint.h:
-	* win32/common/config.h:
-	  Release 1.2.3
-
-2014-02-08 11:43:58 +0100  Sebastian Dröge <sebastian@centricular.com>
+2014-05-03 17:22:10 +0200  Sebastian Dröge <sebastian@centricular.com>
 
 	* po/af.po:
 	* po/az.po:
@@ -228,18 +45,1541 @@
 	* po/uk.po:
 	* po/vi.po:
 	* po/zh_CN.po:
-	  Update .po files
-
-2014-02-04 16:21:55 +0100  Sebastian Dröge <sebastian@centricular.com>
-
-	* po/id.po:
-	* po/nb.po:
-	* po/nl.po:
-	* po/pt_BR.po:
-	* po/sk.po:
-	* po/sr.po:
 	  po: Update translations
 
+2014-05-02 19:09:59 -0400  Olivier Crête <olivier.crete@collabora.com>
+
+	* gst-libs/gst/rtp/gstrtpbasepayload.c:
+	* tests/check/libs/rtpbasepayload.c:
+	  rtpbasepayload: Implement reconfigure event & renegotiation without subclass
+	  Implement the reconfigure event, also do correct downstream caps negotiation
+	  if the subclass doesn't implementy set_caps.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=725361
+
+2014-05-02 19:09:44 -0400  Olivier Crête <olivier.crete@collabora.com>
+
+	* tests/check/libs/rtpbasepayload.c:
+	  tests/check/libs/rtpbasepayload.c: Run gst-indent
+	  https://bugzilla.gnome.org/show_bug.cgi?id=725361
+
+2014-05-03 10:14:51 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* common:
+	  Automatic update of common submodule
+	  From bcb1518 to 211fa5f
+
+2014-05-02 18:30:16 -0400  Olivier Crête <olivier.crete@collabora.com>
+
+	* gst-libs/gst/rtp/gstrtpbasepayload.c:
+	  rtpbasepayload: Save the PT after fixating
+
+2014-05-02 19:36:34 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst-libs/gst/rtsp/gstrtspdefs.c:
+	* gst-libs/gst/rtsp/gstrtspdefs.h:
+	  rtspdefs: remove outdated comments
+
+2014-05-02 15:09:35 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* gst-libs/gst/rtp/gstrtpbuffer.c:
+	  rtpbuffer: avoid underflow in size calculation
+
+2014-05-01 19:31:09 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
+
+	* gst-libs/gst/video/gstvideodecoder.c:
+	  videodecoder: do not parse caps for not using it
+	  Saving some cpu
+
+2014-01-03 11:06:22 +0100  John Bassett <john.bassett@pexip.com>
+
+	* gst-libs/gst/rtp/gstrtpbasepayload.c:
+	  rtpbasepayload: restrict initial random sequence number to be <= 32767
+	  In order to prevent SRTP roll over counter issues the initial sequence
+	  number is restricted to <= 32767. This is recommended by RFC 4568 section 6.4.
+
+2014-05-01 15:11:04 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/sdp/gstsdpmessage.c:
+	  sdp: Add some more gobject-introspection annotations for bindings
+	  https://bugzilla.gnome.org/show_bug.cgi?id=729123
+
+2014-05-01 13:15:57 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/playback/gstplaybin2.c:
+	  playbin: Don't block on non-serialized events
+	  https://bugzilla.gnome.org/show_bug.cgi?id=729321
+
+2014-05-01 13:08:24 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/playback/gstplaysink.c:
+	  playsink: Don't block on non-serialized events
+	  https://bugzilla.gnome.org/show_bug.cgi?id=729321
+
+2014-05-01 13:06:53 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/playback/gstplaysinkconvertbin.c:
+	  playsinkconvertbin: Don't block on non-serialized events
+	  https://bugzilla.gnome.org/show_bug.cgi?id=729321
+
+2014-05-01 13:05:05 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/playback/gstsubtitleoverlay.c:
+	  subtitleoverlay: Don't block on non-serialized events
+	  https://bugzilla.gnome.org/show_bug.cgi?id=729321
+
+2014-04-30 11:06:27 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* gst-libs/gst/rtp/gstrtcpbuffer.c:
+	  rtcpbuffer: check claimed data size against available size
+	  Coverity 1208773
+
+2014-04-23 08:06:36 +0200  Göran Jönsson <goranjn@axis.com>
+
+	* gst-libs/gst/rtsp/gstrtspconnection.c:
+	  rtspconnection: Empty queue when flush.
+	  Empty the watchs queue when calling
+	  gst_rtsp_watch_set_flushing with flushing variabel is TRUE.
+	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=728772
+
+2014-03-16 16:09:36 +0100  Ognyan Tonchev <otonchev@gmail.com>
+
+	* tests/check/libs/rtspconnection.c:
+	  rtspconnection: Add more tests
+	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=728907
+
+2014-04-29 10:15:47 -0400  Luis de Bethencourt <luis@debethencourt.com>
+
+	* gst/videotestsrc/videotestsrc.c:
+	  videotestsrc: fix undefined behaviour of left-shift
+	  With a small type for the color values being left-shifted, the result is
+	  undefined and it could potentially overflow.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=729195
+
+2014-04-29 10:59:02 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* win32/common/libgstrtsp.def:
+	* win32/common/libgstsdp.def:
+	  win32: fix export files again
+	  Revert unintended parts of d8a0927930a87a2eb60d4c98cb3fea8aed911b27
+
+2014-04-29 11:39:18 +0200  Christian Fredrik Kalager Schaller <uraeus@linuxrising.org>
+
+	* gst-plugins-base.spec.in:
+	* win32/common/libgstrtsp.def:
+	* win32/common/libgstsdp.def:
+	  Add mikey.h file
+
+2014-04-29 09:58:21 +0200  Haakon Sporsheim <haakon@pexip.com>
+
+	* gst-libs/gst/audio/gstaudiodecoder.c:
+	  audiodecoder: Make caps writable before fixating
+	  https://bugzilla.gnome.org/show_bug.cgi?id=729114
+
+2014-04-29 09:54:18 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/sdp/gstsdpmessage.c:
+	  sdpmessage: Add array length annotation to gst_sdp_message_parse_buffer
+	  https://bugzilla.gnome.org/show_bug.cgi?id=729123
+
+2014-04-29 08:46:02 +0200  Stian Selnes <stian@pexip.com>
+
+	* gst-libs/gst/rtp/gstrtpbuffer.c:
+	  rtpbuffer: fix memory leak when gst_rtp_buffer_map fails
+	  Make sure rtp->data[3] is set before jumping to error path.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=729117
+
+2014-04-28 18:47:06 +0530  Ravi Kiran K N <ravi.kiran@samsung.com>
+
+	* tools/gst-play.c:
+	  gst-play: add option to supply media files from playlist file
+	  https://bugzilla.gnome.org/show_bug.cgi?id=728845
+
+2014-04-27 00:49:01 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gio/gstgiobasesink.c:
+	  giobasesink: we mustn't change the format of a query response
+	  Not even in the DEFAULT case. That's bad 0.10 behaviour, no caller
+	  is ever going to check the format of the response.
+
+2014-04-27 00:25:16 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/playback/gstplay-enum.c:
+	  playbin: add nick for soft colorbalance play flag to fix gst-inspect
+	  Fix gst-inspect-1.0 playbin criticals when printing the
+	  flags, which was caused by a missing nick name for one
+	  of the flags.
+
+2014-04-26 23:26:09 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* ext/alsa/gstalsasink.c:
+	* ext/alsa/gstalsasrc.c:
+	* ext/ogg/gstoggdemux.c:
+	* ext/ogg/gstoggmux.c:
+	* ext/theora/gsttheoradec.c:
+	* ext/theora/gsttheoraenc.c:
+	* ext/theora/gsttheoraparse.c:
+	* ext/vorbis/gstvorbisdec.c:
+	* ext/vorbis/gstvorbisenc.c:
+	* ext/vorbis/gstvorbisparse.c:
+	* gst-libs/gst/app/gstappsink.c:
+	* gst-libs/gst/app/gstappsrc.c:
+	* gst-libs/gst/audio/gstaudiobasesink.c:
+	* gst-libs/gst/audio/gstaudiobasesrc.c:
+	* gst-libs/gst/audio/gstaudioclock.c:
+	* gst-libs/gst/audio/gstaudiofilter.c:
+	* gst-libs/gst/audio/gstaudioringbuffer.c:
+	* gst-libs/gst/audio/gstaudiosink.c:
+	* gst-libs/gst/audio/gstaudiosrc.c:
+	* gst-libs/gst/rtp/gstrtcpbuffer.c:
+	* gst-libs/gst/rtp/gstrtpbuffer.c:
+	* gst-libs/gst/rtp/gstrtphdrext.c:
+	* gst-libs/gst/rtp/gstrtppayloads.c:
+	* gst-libs/gst/rtsp/gstrtspconnection.c:
+	* gst-libs/gst/rtsp/gstrtspdefs.c:
+	* gst-libs/gst/rtsp/gstrtspextension.c:
+	* gst-libs/gst/rtsp/gstrtspmessage.c:
+	* gst-libs/gst/rtsp/gstrtsprange.c:
+	* gst-libs/gst/rtsp/gstrtsptransport.c:
+	* gst-libs/gst/rtsp/gstrtspurl.c:
+	* gst-libs/gst/sdp/gstmikey.c:
+	* gst-libs/gst/sdp/gstsdpmessage.c:
+	* gst/adder/gstadder.c:
+	* gst/audioconvert/gstaudioconvert.c:
+	* gst/playback/gstplaybin2.c:
+	* gst/tcp/gstmultifdsink.c:
+	* gst/tcp/gstmultihandlesink.c:
+	* gst/tcp/gstmultioutputsink.c:
+	* gst/tcp/gstmultisocketsink.c:
+	* gst/videorate/gstvideorate.c:
+	* gst/videoscale/gstvideoscale.c:
+	  docs: remove outdated and pointless 'Last reviewed' lines from docs
+	  They are very confusing for people, and more often than not
+	  also just not very accurate. Seeing 'last reviewed: 2005' in
+	  your docs is not very confidence-inspiring. Let's just remove
+	  those comments.
+
+2014-04-25 17:32:59 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gio/gstgiobasesink.c:
+	  giobasesink: Implement handling of the SEEKING query
+
+2014-04-25 11:30:37 +0200  Edward Hervey <bilboed@bilboed.com>
+
+	* gst-libs/gst/audio/gstaudiodecoder.c:
+	  audiodecoder: Plug caps leaks
+	  We were returning in various places without unreffing the caps, and
+	  we were also leaking (overwriting) the caps we got from _get_current_caps()
+	  Spotted by Haakon Sporsheim in #gstreamer
+
+2014-04-22 18:28:10 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/audioresample/resample.c:
+	  audioresample: Don't left-shift into the sign bit, instead use unsigned integers
+
+2014-04-22 00:21:01 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
+
+	* gst-libs/gst/tag/gstexiftag.c:
+	  tag: exif: avoid adding empty strings
+	  Fixes assertion with some jpeg files
+
+2014-04-21 15:35:32 +0200  Wim Taymans <wtaymans@redhat.com>
+
+	* tools/gst-play.c:
+	  play: Improve pipeline states
+	  First set the pipeline to the PAUSED state to check if we are dealing
+	  with a live pipeline or not. Then move to the desired state.
+	  If we don't do this, it is possible that we receive a BUFFERING message
+	  before we know that the pipeline is live and we would set the pipeline
+	  to PAUSED and deadlock.
+
+2014-04-21 15:33:10 +0200  Wim Taymans <wtaymans@redhat.com>
+
+	* tools/gst-play.c:
+	  play: Update buffering state for live pipelines
+	  Update the buffering variable, even for live pipelines so that we don't
+	  print \n for each buffering message.
+
+2014-04-16 19:53:14 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/video/video-frame.c:
+	  videoframe: Initialise GstVideoFrame to zeroes if mapping fails
+	  This should allow for more meaningful errors. Dereferencing NULL
+	  is more useful information than dereferencing a random address
+	  happened to be on the stack.
+
+2014-04-16 11:43:40 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* gst-libs/gst/tag/gstexiftag.c:
+	  exiftag: catch buffer mapping failure
+	  Might be what caused:
+	  Coverity 1139734
+
+2014-04-15 19:17:06 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* tests/check/elements/audioresample.c:
+	  audioresample: Fix memory leaks in test
+
+2014-04-15 19:16:44 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/audioresample/gstaudioresample.c:
+	* gst/audioresample/resample.c:
+	  audioresample: Fix up indention
+
+2014-04-15 19:16:18 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/audioresample/resample_sse.h:
+	  audioresample: Fix out of bounds memory accesses
+
+2014-04-15 13:57:08 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/pango/gstbasetextoverlay.c:
+	  pango: Make static caps actually static to fix a memory leak
+
+2014-04-15 13:54:45 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* tests/check/elements/videotestsrc.c:
+	  videotestsrc: Fix memory leak in test
+
+2014-04-15 13:48:46 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* tests/check/elements/encodebin.c:
+	  encodebin: Fix memory leak in test
+
+2014-04-15 13:48:17 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/pbutils/encoding-profile.c:
+	  encoding-profile: Free preset name in finalize
+
+2014-04-15 13:39:39 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/ogg/gstoggmux.c:
+	  oggmux: Clear Ogg streams before initing them
+	  They might've been inited before, in which case we leak
+	  memory when initing them again without clearing.
+
+2014-04-15 13:03:34 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* tests/check/elements/audioconvert.c:
+	  audioconvert: Fix leaks in unit test
+
+2014-04-15 11:55:22 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* tests/check/libs/videodecoder.c:
+	* tests/check/libs/videoencoder.c:
+	  videoencoder/decoder: Fix memory leaks in the tests
+
+2014-04-15 11:53:43 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* tests/check/libs/audiodecoder.c:
+	  audiodecoder: Actually allocate enough memory for 64 bits, not just 32 bits
+	  Also fix a memory leak.
+
+2014-04-15 11:43:41 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* tests/check/libs/audioencoder.c:
+	  audioencoder: Fix memory leaks in unit test
+
+2014-04-15 10:29:12 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* tests/check/libs/rtp.c:
+	  rtp: Fix GBytes memory leak in test
+
+2014-04-12 07:10:36 +0200  Wim Taymans <wtaymans@redhat.com>
+
+	* gst-libs/gst/rtp/gstrtpbasedepayload.c:
+	  rtpbasedepay: add stats property
+	  Add a stats property that holds a structure with all the current
+	  values of the depayloader.
+	  See https://bugzilla.gnome.org/show_bug.cgi?id=646577
+
+2014-04-12 06:43:24 +0200  Wim Taymans <wtaymans@redhat.com>
+
+	* gst-libs/gst/rtp/gstrtpbasepayload.c:
+	  rtpbasepayload: update docs
+
+2014-04-12 06:27:36 +0200  Wim Taymans <wtaymans@redhat.com>
+
+	* gst-libs/gst/rtp/gstrtpbasepayload.c:
+	  rtpbasepayload: add current timestamp and seqnum offset to stats
+	  Expose the current timestamp and seqnum offset in the stats
+	  See https://bugzilla.gnome.org/show_bug.cgi?id=646577
+
+2014-04-11 10:24:10 +0200  Josep Torra <n770galaxy@gmail.com>
+
+	* ext/pango/gsttextrender.c:
+	* ext/pango/gsttextrender.h:
+	  textrender: push segment event after caps event
+	  Fixes warning "Sticky event misordering, got 'segment' before 'caps'".
+
+2014-04-10 16:08:29 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* ext/ogg/gstoggstream.c:
+	  oggstream: use G_GUINT64_CONSTANT instead of ll suffix
+	  Thanks slomo for pointing out it's not standard.
+
+2014-04-10 15:55:57 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* sys/xvimage/xvcontext.c:
+	  xvimage: remove dead code
+	  matching_attr can not be NULL here, we've tested that away a few
+	  lines beforehand.
+	  Coverity 1139655
+
+2014-04-10 15:51:05 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* gst/videotestsrc/gstvideotestsrc.c:
+	  videotestsrc: bail out on unsupported caps
+	  This avoids using uninitialized data (and properly rejects caps).
+	  Coverity 1139898
+
+2014-04-10 15:16:03 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* gst/typefind/gsttypefindfunctions.c:
+	  typefind: remove pointless checks for data being NULL
+	  It was already checked in an early out, and as it's only
+	  incremented for at most the size of the passed buffer, it
+	  can only become NULL in an address wraparound.
+	  While there, don't cast away const on a pointer.
+	  Coverity 1139845
+
+2014-04-10 13:34:58 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* gst/playback/gstdecodebin2.c:
+	  decodebin: consider "no demuxer" case to not have dynamic pads
+	  This fixes a possible NULL dereference.
+	  Coverity 1195146
+
+2014-04-10 13:28:30 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* gst/encoding/gstencodebin.c:
+	  encodebin: guard against gst_pad_get_peer returning NULL
+	  If it does, the pad may be leaked if it's a request pad, though.
+	  Coverity 1139799
+
+2014-04-10 13:26:42 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* gst/encoding/gstencodebin.c:
+	  encodebin: guard against pathological NULL dereference
+	  Coverity 1139798
+
+2014-04-10 12:32:24 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* gst/audioresample/resample.c:
+	  audioresample: reject 0 denominator when creating resampler
+	  Coverity 1195140, 1195139, 1195138
+
+2014-04-10 12:14:48 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* gst-libs/gst/video/video-overlay-composition.c:
+	  video-overlay-composition: guard against NULL pointer dereference on error
+	  If gst_video_overlay_rectangle_apply_global_alpha is called with
+	  a rectangle with unsuitable alpha, expanding the alpha plane will
+	  fail, and thus lead to dereferencing a NULL src pointer. It's not
+	  certain this will happen in practice, as the function is static
+	  and callers might ensure suitable alpha before calling, but there
+	  is no apparent explicit such check.
+	  Add prologue asserts for proper alpha to explicitely prevent this.
+	  Coverity 1139707
+
+2014-04-10 12:10:47 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* gst-libs/gst/video/gstvideometa.c:
+	  videometa: fix texture_type memcpy size
+	  Coverity 1139589, 1139588
+
+2014-04-10 11:19:26 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* gst-libs/gst/sdp/gstsdpmessage.c:
+	  sdpmessage: fix multi statement macros
+	  Wasn't playing nice with an if statement below.
+	  Coverity 1139767
+
+2014-04-10 11:14:25 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* gst-libs/gst/audio/gstaudiocdsrc.c:
+	  audiocdsrc: guard aginst overflow
+	  An audio CD may contain about a tenth of the samples 32 bit can
+	  represent, so it doesn't seem likely this will be hit in practice.
+	  Coverity 1139805
+
+2014-04-10 12:30:50 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst-libs/gst/pbutils/descriptions.c:
+	  pbutils: descriptions: default to systemstream=false for partial video/mpeg caps
+	  Assume systemstream=false for video/mpeg caps where that field
+	  is missing.
+
+2014-04-10 10:57:53 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* gst-libs/gst/audio/gstaudiobasesink.c:
+	  audiobasesink: avoid possible sample count overflow
+	  At 48 kHz, 2<<31 samples is reached before 13 hours so it
+	  sounds plausible this would be hit.
+	  Coverity 1139800, 1139801
+
+2014-04-10 10:45:21 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* ext/theora/gsttheoraenc.c:
+	  theoraenc: fix comparison to unset timestamp
+	  Also rejects negative timestamps that aren't GST_CLOCK_TIME_NONE.
+	  Coverity 1139797
+
+2014-04-10 10:33:46 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* ext/ogg/gstoggstream.c:
+	  oggstream: fix a few left shifts operations on 32 bits cast to 64 bits
+	  This should not cause any actual bug since Theora and Daala have
+	  a maximum shift of 31, and a packet duration of 2^31 seems very
+	  implausible. But it fixes:
+	  Coverity 1139804, 1139803, 1139802
+
+2014-04-10 10:29:34 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* ext/ogg/gstoggstream.c:
+	  oggstream: remove NULL test after dereference
+	  And add NULLness asserts at top of function. The only call
+	  to this passes local variable pointers, so non NULL.
+	  Coverity 206375
+
+2014-04-10 10:25:46 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* ext/ogg/gstoggmux.c:
+	  oggmux: test for failure to return tag
+	  It should really not happen unless the tag list it corrupt,
+	  but the API returns a failure code so we may as well use it.
+	  Coverity 1139595
+
+2014-04-10 10:22:43 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* ext/ogg/gstoggdemux.c:
+	  oggdemux: do not dereference NULL pad in warning message
+	  Coverity 1197695
+
+2014-04-10 09:18:05 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/video/video-event.c:
+	  video-event: Update the running times in the force-keyunit events from the pad offsets
+
+2014-04-09 16:03:15 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/playback/gstdecodebin2.c:
+	  decodebin: In adaptive streaming mode, only have a fixed buffer limit for the non-buffering multiqueue
+
+2014-04-08 15:43:50 +0200  Wim Taymans <wtaymans@redhat.com>
+
+	* gst-libs/gst/sdp/gstsdpmessage.c:
+	  sdp: guard against address parse errors.
+
+2014-03-25 17:11:34 +0100  Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
+
+	* gst/adder/gstadder.c:
+	  adder: rework the logic to check if eos has to be sent.
+	  Checking the size available was incorrect, and the infos
+	  for per-pad EOS are available.
+	  Same logic as audiomixer.
+	  fixes: https://bugzilla.gnome.org/show_bug.cgi?id=727025
+
+2014-04-08 12:46:21 +0200  Josep Torra <n770galaxy@gmail.com>
+
+	* gst-libs/gst/audio/gstaudioringbuffer.c:
+	  audioringbuffer: parse channels field from compressed audio caps
+	  Also parse channels as an optional field in the caps for compressed
+	  audio formats.
+
+2014-04-06 22:26:20 +1000  Jan Schmidt <jan@centricular.com>
+
+	* gst/playback/gstsubtitleoverlay.c:
+	  subtitleoverlay: Consider all caps for overlays, not just the first.
+	  Check all supported caps on the overlay video pad, not just the
+	  first of (possibly) many.
+
+2014-04-05 13:25:46 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* tools/gst-play-1.0.1:
+	  tools: update gst-play-1.0 man page
+
+2014-04-02 07:20:43 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
+
+	* gst-libs/gst/video/gstvideodecoder.c:
+	  videodecoder: do not deactivate the bufferpool, just unref
+	  Videodecoder does late renegotiation, it will wait for the next
+	  buffer before renegotiating its caps and bufferpool. It might happen
+	  that downstream element switched from passthrough to non-passthrough
+	  and sent a reconfigure upstream (that caused this renegotiation).
+	  This downstream element will ask the video sink below for the bufferpool
+	  with an allocation query and will get the same bufferpool that
+	  videodecoder is holding, too.
+	  When renegotiating, if videodecoder deactivates its bufferpool it
+	  might be deactivating the bufferpool that some element downstream
+	  is using and cause the pipeline to fail.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=727498
+
+2014-02-24 11:17:05 -0500  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* gst-libs/gst/audio/gstaudiobasesink.c:
+	  audiobasesink: clip start samples to match clipped start time
+	  Clock slaving can clip start time to zero, giving us a shorted
+	  duration than we originally got. To keep in sync, we must then
+	  discard the samples falling before that zero timestamp.
+	  This possibly fixes random distortion caused by constant PA
+	  underflows which are never resynced.
+
+2014-04-04 17:36:04 +0200  Wim Taymans <wtaymans@redhat.com>
+
+	* gst-libs/gst/sdp/gstmikey.c:
+	* gst-libs/gst/sdp/gstmikey.h:
+	* tests/check/libs/mikey.c:
+	* win32/common/libgstsdp.def:
+	  mikey: Fix the KEMAC payload
+	  The KEMAC payload actually needs to have subpayloads and the key should
+	  go into the KEY_DATA subpayload. Add support for subpayloads and
+	  implement the KEY_DATA payload.
+	  Add some pointers to the conversion functions that allow us to add
+	  encryption and decryption later.
+
+2014-04-04 02:14:50 +1100  Jan Schmidt <jan@centricular.com>
+
+	* gst/playback/gstplaybin2.c:
+	  playbin: Drop reference to any source element in NULL state
+	  Drop the reference instead of waiting for either finalize(), or
+	  for a new source when reused. Everyone else already forgot about
+	  the old source.
+
+2014-04-01 10:38:23 +0200  Göran Jönsson <goranjn@axis.com>
+
+	* win32/common/libgstrtsp.def:
+	  rtspconnection: Added gst_rtsp_watch_set_flushing to list.
+	  Added gst_rtsp_watch_set_flushing to list in file
+	  libgstrtsp.def
+
+2014-03-30 18:26:59 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/video/gstvideodecoder.c:
+	  videodecoder: Always drain the decoder after a discont group in reverse playback mode
+
+2014-03-30 17:54:11 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/video/gstvideodecoder.c:
+	  videodecoder: Flush the decoder once per discont group, not once per keyframe
+
+2014-03-30 17:54:11 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/video/gstvideodecoder.c:
+	  videodecoder: Handle reverse playback with multiple GOPs per discont group properly
+	  baseparse will reverse each GOP for us already, so the segment events can
+	  be after our keyframe. Make sure to get it and all other relevant sticky
+	  events before starting to decode.
+
+2014-03-29 10:23:05 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/video/gstvideodecoder.c:
+	  videodecoder: Log event types of events that are pushed downstream
+
+2014-03-27 20:15:01 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/video/gstvideodecoder.c:
+	  videodecoder: In reverse playback mode we need to finish the subclass after passing all frames to it
+
+2014-03-28 09:32:20 +0100  Wim Taymans <wtaymans@redhat.com>
+
+	* gst-libs/gst/rtsp/gstrtspconnection.c:
+	* gst-libs/gst/rtsp/gstrtspconnection.h:
+	  rtspconnection: add flush method
+	  Add a method to set/unset the flushing state that makes _wait_backlog()
+	  unlock.
+	  See https://bugzilla.gnome.org/show_bug.cgi?id=725898
+
+2014-03-27 16:43:10 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* sys/ximage/ximagesink.c:
+	  ximagesink: only extrapolate alpha mask for 32-bit depth
+	  Instead of passing bogus alpha mask values when there's no alpha.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=727188
+
+2014-03-25 11:14:51 +0100  Wim Taymans <wtaymans@redhat.com>
+
+	* gst-libs/gst/sdp/gstmikey.c:
+	  mikey: fix return values of g_return_*
+
+2014-03-25 11:07:34 +0100  Wim Taymans <wtaymans@redhat.com>
+
+	* gst-libs/gst/rtsp/gstrtsptransport.c:
+	  rtsptransport: UDP is also default for SAVP and AVPF
+
+2014-03-20 12:29:33 +0100  Wim Taymans <wtaymans@redhat.com>
+
+	* docs/libs/gst-plugins-base-libs-docs.sgml:
+	* docs/libs/gst-plugins-base-libs-sections.txt:
+	* gst-libs/gst/sdp/gstmikey.c:
+	* gst-libs/gst/sdp/gstmikey.h:
+	  docs: add MIKEY docs
+
+2014-03-15 18:46:52 +0100  Wim Taymans <wtaymans@redhat.com>
+
+	* gst-libs/gst/sdp/Makefile.am:
+	* gst-libs/gst/sdp/gstmikey.c:
+	* gst-libs/gst/sdp/gstmikey.h:
+	* tests/check/Makefile.am:
+	* tests/check/libs/mikey.c:
+	* win32/common/libgstsdp.def:
+	  mikey: add MIKEY parsing helpers
+	  MIKEY is defined in RFC 3830 and is used to exchange SRTP encryption
+	  parameters between a sender and a receiver in a secure way.
+	  This library implements a subset of the features, enough to implement
+	  RFC 4567, using MIKEY in SDP and RTSP.
+
+2014-03-16 17:04:44 +0100  Ognyan Tonchev <otonchev@gmail.com>
+
+	* gst-libs/gst/rtsp/gstrtspconnection.c:
+	  rtspconnection: Fix minor memory leaks in error handling
+	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=726642
+
+2014-03-16 17:06:02 +0100  Ognyan Tonchev <otonchev@gmail.com>
+
+	* gst-libs/gst/rtsp/gstrtspconnection.c:
+	  rtspconnection: Fix connection_poll()
+	  * Only check for conditions we are interested in.
+	  * Makes no sense to specify G_IO_ERR and G_IO_HUP in condition, they
+	  will always be reported if they are true.
+	  * Do not create timed source if timeout is NULL.
+	  * Correctly wait for sources to be dispatched, context_iteration() is
+	  not guaranteed to always block even if set to do so.
+	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=726641
+
+2014-03-20 09:18:31 +0100  Wim Taymans <wtaymans@redhat.com>
+
+	* gst-libs/gst/rtp/gstrtpbasepayload.c:
+	  rtpbasepayload: add pt and ssrc to stats
+
+2014-03-16 08:34:30 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
+
+	* tests/check/elements/decodebin.c:
+	* tests/check/elements/decodebin2.c:
+	  tests: decodebin: port old decodebin2 test for parser and decoder linking
+	  They were in the old decodebin2.c tests file and were never ported.
+	  Now we can get rid of decodebin2.c
+
+2014-03-16 17:00:38 +0100  Arun Raghavan <arun@accosted.net>
+
+	* gst/playback/gstplay-enum.c:
+	* gst/playback/gstplay-enum.h:
+	* gst/playback/gstplaybin2.c:
+	* gst/playback/gstplaysink.c:
+	* gst/playback/gstplaysink.h:
+	* tests/examples/playback/playback-test.c:
+	  playback: Add video-/audio-filter properties
+	  This provides an audio-filter and video-filter property to allow
+	  applications to set filter elements/bins. The idea is that these will
+	  e
+	  applied if possible -- for non-raw sinks, the filters will be skipped.
+	  If the application wishes to force the application of the filters, this
+	  can be done by setting the new flag introduced on playsink -
+	  GST_PLAY_FLAG_FORCE_FILTERS.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=679031
+
+2014-03-16 18:38:25 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/playback/gstplay-enum.h:
+	* gst/playback/gstplaybin2.c:
+	* gst/playback/gstplaysink.c:
+	* gst/playback/gstplaysink.h:
+	  Revert "playback: Add video-/audio-filter properties"
+	  This reverts commit fb8fdedb4f4649aa33700bbc720131c1678df49f.
+
+2014-03-15 16:05:22 +0100  Arun Raghavan <arun.raghavan@collabora.co.uk>
+
+	* gst/playback/gstplay-enum.h:
+	* gst/playback/gstplaybin2.c:
+	* gst/playback/gstplaysink.c:
+	* gst/playback/gstplaysink.h:
+	  playback: Add video-/audio-filter properties
+	  This provides an audio-filter and video-filter property to allow
+	  applications to set filter elements/bins. The idea is that these will be
+	  applied if possible -- for non-raw sinks, the filters will be skipped.
+	  If the application wishes to force the application of the filters, this
+	  can be done by setting the new flag introduced on playsink -
+	  GST_PLAY_FLAG_FORCE_FILTERS.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=679031
+
+2014-03-15 20:21:32 +0000  Руслан Ижбулатов <lrn1986@gmail.com>
+
+	* gst-libs/gst/rtsp/gstrtspconnection.c:
+	  rtspconnection: Silence a compiler warning
+	  Cast the argument into (const char *) on W32, as winsock2 expects it.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=726433
+
+2014-03-15 11:24:23 +0100  Arun Raghavan <arun.raghavan@collabora.co.uk>
+
+	* gst/playback/gstplaysink.c:
+	  playsink: Fix documentation for what the audio chain looks like
+	  https://bugzilla.gnome.org/show_bug.cgi?id=679031
+
+2014-03-11 21:58:49 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* docs/plugins/gst-plugins-base-plugins.args:
+	* docs/plugins/gst-plugins-base-plugins.signals:
+	* docs/plugins/inspect/plugin-adder.xml:
+	* docs/plugins/inspect/plugin-alsa.xml:
+	* docs/plugins/inspect/plugin-app.xml:
+	* docs/plugins/inspect/plugin-audioconvert.xml:
+	* docs/plugins/inspect/plugin-audiorate.xml:
+	* docs/plugins/inspect/plugin-audioresample.xml:
+	* docs/plugins/inspect/plugin-audiotestsrc.xml:
+	* docs/plugins/inspect/plugin-cdparanoia.xml:
+	* docs/plugins/inspect/plugin-encoding.xml:
+	* docs/plugins/inspect/plugin-gio.xml:
+	* docs/plugins/inspect/plugin-libvisual.xml:
+	* docs/plugins/inspect/plugin-ogg.xml:
+	* docs/plugins/inspect/plugin-pango.xml:
+	* docs/plugins/inspect/plugin-playback.xml:
+	* docs/plugins/inspect/plugin-subparse.xml:
+	* docs/plugins/inspect/plugin-tcp.xml:
+	* docs/plugins/inspect/plugin-theora.xml:
+	* docs/plugins/inspect/plugin-typefindfunctions.xml:
+	* docs/plugins/inspect/plugin-videoconvert.xml:
+	* docs/plugins/inspect/plugin-videorate.xml:
+	* docs/plugins/inspect/plugin-videoscale.xml:
+	* docs/plugins/inspect/plugin-videotestsrc.xml:
+	* docs/plugins/inspect/plugin-volume.xml:
+	* docs/plugins/inspect/plugin-vorbis.xml:
+	* docs/plugins/inspect/plugin-ximagesink.xml:
+	* docs/plugins/inspect/plugin-xvimagesink.xml:
+	  docs: update plugin docs and remove old properties and signals
+	  Re-generate .args and .signals file from scratch so that
+	  old signals that no longer exist (such as the 'new-decoded-pad'
+	  signal on decodebin) no longer show up in the documentation.
+
+2014-03-11 22:15:13 +0100  Stefan Sauer <ensonic@users.sf.net>
+
+	* gst/adder/gstadder.c:
+	  adder: set a group-id on the stream-start event
+	  Set a default group-id to fix a warning printed by the sink.
+
+2014-03-11 17:39:54 +0100  Christian Fredrik Kalager Schaller <uraeus@linuxrising.org>
+
+	* gst-plugins-base.spec.in:
+	  Add new header file
+
+2014-03-06 12:59:08 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
+
+	* ext/ogg/gstoggdemux.c:
+	* ext/ogg/gstoggmux.c:
+	* ext/ogg/gstoggstream.c:
+	* ext/ogg/gstoggstream.h:
+	  oggmux: implement vp8 granulepos function
+	  Add an extra function to the oggstream map to inform it about
+	  the incoming buffers. This way oggmux can keep a count on the
+	  vp8 invisible frames and calculate the granulepos correctly.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=722682
+
+2014-03-05 16:34:42 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
+
+	* ext/ogg/gstoggmux.c:
+	* ext/ogg/gstoggstream.c:
+	* ext/ogg/gstoggstream.h:
+	  oggmux: create vp8 header data if not provided in caps
+	  vp8 stream header shouldn't be assumed to be provided in caps always
+	  as this would repeat the same code in all demuxers/encoders. Instead,
+	  make oggmux generate them if they are not supplied.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=722682
+
+2014-03-06 13:55:17 +0100  Göran Jönsson <goranjn@axis.com>
+
+	* docs/libs/gst-plugins-base-libs-sections.txt:
+	* gst-libs/gst/rtsp/gstrtspconnection.c:
+	* gst-libs/gst/rtsp/gstrtspconnection.h:
+	* win32/common/libgstrtsp.def:
+	  rtspconnection: gst_rtsp_watch_wait_backlog
+	  New method that wait until there is room in backlog queue.
+	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=725898
+
+2014-03-06 13:50:27 +0100  David Svensson Fors <davidsf@axis.com>
+
+	* gst-libs/gst/rtsp/gstrtspconnection.c:
+	* gst-libs/gst/rtsp/gstrtspconnection.h:
+	  rtspconnection: GstRTSPWatch func for tunnel GET response
+	  Add a callback in GstRTSPWatch where the response to HTTP GET for
+	  tunneled connections can be modified.
+	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=725878
+
+2014-03-06 15:34:47 +0100  Wim Taymans <wtaymans@redhat.com>
+
+	* gst-libs/gst/rtsp/gstrtspdefs.c:
+	* gst-libs/gst/rtsp/gstrtspdefs.h:
+	  rtspdefs: add RFC 4567 headers and status code
+	  This new Header and status code is used for SRTP
+
+2014-03-07 17:09:24 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/playback/gstdecodebin2.c:
+	* gst/playback/gsturidecodebin.c:
+	  decodebin: Buffer up to 5 seconds in multiqueue buffering mode
+	  2 seconds might be too small for some container formats, e.g.
+	  MPEGTS with some video codec and AAC/ADTS audio with 700ms
+	  long buffers. The video branch of multiqueue can run full while
+	  the audio branch is completely empty, especially because there
+	  are usually more queues downstream on the audio branch.
+
+2014-03-06 22:37:44 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/playback/gstdecodebin2.c:
+	  decodebin: Keep the number of buffers after an adaptive streaming demuxer lower
+	  Usually these buffers are multiple seconds large, and having a maximum
+	  of 5 buffers in the multiqueue there can use a lot of memory. Lower
+	  this to 2 for adaptive streaming demuxers.
+
+2014-03-06 22:28:46 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/playback/gstdecodebin2.c:
+	  decodebin: Simplify adaptive streaming demuxer code a bit
+
+2014-03-06 17:49:09 +0000  Adrien Schwartzentruber <adrien.schwartzentruber@gmail.com>
+
+	* ext/pango/gstbasetextoverlay.c:
+	  pango: demote debug WARNING to LOG for variable framerate video input
+	  No need why we need to warn about that, it's perfectly allowed.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=725837
+
+2014-01-30 15:41:49 +0000  Matthieu Bouron <matthieu.bouron@collabora.com>
+
+	* tests/check/Makefile.am:
+	* tests/check/elements/textoverlay.c:
+	  tests: add textoverlay passthrough with composition feature unit tests
+	  https://bugzilla.gnome.org/show_bug.cgi?id=721953
+
+2014-01-23 12:20:05 +0000  Matthieu Bouron <matthieu.bouron@collabora.com>
+
+	* ext/pango/gstbasetextoverlay.c:
+	  pango: basetextoverlay: handle video/x-raw(ANY) if downstream supports the GstVideoOverlayCompositionMeta API
+	  https://bugzilla.gnome.org/show_bug.cgi?id=721953
+
+2014-01-23 12:19:13 +0000  Matthieu Bouron <matthieu.bouron@collabora.com>
+
+	* gst-libs/gst/video/video-overlay-composition.h:
+	  video-overlay-composition: add GST_CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION
+
+2014-03-04 16:51:58 +0200  Andres Gomez <agomez@igalia.com>
+
+	* REQUIREMENTS:
+	* docs/plugins/gst-plugins-base-plugins.args:
+	* docs/plugins/gst-plugins-base-plugins.signals:
+	  docs: Removing GnomeVFS left bits
+	  gnomevfs was removed time ago but there are still some left bits.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=725658
+
+2014-03-05 00:35:30 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/typefind/gsttypefindfunctions.c:
+	  typefindfunctions: lower H.263 typefinder max probability
+	  The typefinder returns LIKELY for as little as one possible
+	  sync and no bad sync (not even taking into account how much
+	  data was looked at for that). It's generally just not fit
+	  for purpose, so should just not return anything like LIKELY
+	  at all ever, even more so since it only recognises one out
+	  of ten H263 files, and likes to mis-detect mp3s as H263.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=700770
+	  https://bugzilla.gnome.org/show_bug.cgi?id=725644
+
+2014-03-02 11:58:58 +0100  Ognyan Tonchev <ognyan@axis.com>
+
+	* gst-libs/gst/rtsp/gstrtspconnection.c:
+	* tests/check/libs/rtspconnection.c:
+	  rtspconnection: Call closed() when GET is closed in tunneled mode
+	  This patch adds read source on the write socket in tunneled
+	  mode and we get a callback when client disconnects the GET
+	  channel.
+	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=725313
+
+2014-03-02 12:58:21 +0100  Sebastian Rasmussen <sebras@hotmail.com>
+
+	* gst-libs/gst/video/video-format.c:
+	  videoformat: Remove duplicate/incorrect section
+	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=725521
+
+2014-03-02 12:54:08 +0100  Sebastian Rasmussen <sebras@hotmail.com>
+
+	* gst-libs/gst/rtsp/gstrtspconnection.c:
+	* gst-libs/gst/rtsp/gstrtsptransport.c:
+	* gst-libs/gst/rtsp/gstrtspurl.c:
+	* gst-libs/gst/video/video-format.c:
+	  docs: Add annotations for return values
+	  Rephrase and clarify some return value descriptions
+	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=725521
+
+2014-03-02 05:06:07 +0100  Sebastian Rasmussen <sebras@hotmail.com>
+
+	  docs: Fix argument and annotation typos
+	  * colorbalance: Fix misspelled annotation
+	  * rtsp: Replace incorrectly documented function argument
+	  * sdp: Escape @ character to avoid gtk-doc warning
+	  * video-*: Add missing annotation colon
+	  * videodecoder/video-color: Fix function argument typos
+	  * videoutils: Remove unknown annotation field
+	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=725521
+
+2014-03-02 05:09:05 +0100  Sebastian Rasmussen <sebras@hotmail.com>
+
+	* .gitignore:
+	  .gitignore: Ignore gcov intermediate files
+	  https://bugzilla.gnome.org/show_bug.cgi?id=725479
+
+2014-02-28 09:34:31 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* common:
+	  Automatic update of common submodule
+	  From fe1672e to bcb1518
+
+2014-02-20 20:01:30 +0000  Matthieu Bouron <matthieu.bouron@collabora.com>
+
+	* gst/playback/gstplaybin2.c:
+	  playbin: improve autoplug_query_caps return
+	  Makes autoplug_query_caps return
+	  downstream_caps + intersect_first(filter_caps, element_caps)
+	  https://bugzilla.gnome.org/show_bug.cgi?id=724828
+
+2014-02-26 22:11:01 +0100  Stefan Sauer <ensonic@users.sf.net>
+
+	* common:
+	  Automatic update of common submodule
+	  From 1a07da9 to fe1672e
+
+2014-02-26 11:43:06 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst-libs/gst/rtsp/gstrtspconnection.c:
+	  rtsp: fix build with older GLib versions
+	  The gio/gnetworking.h header is only available since glib 2.36
+	  https://bugzilla.gnome.org/show_bug.cgi?id=725206
+
+2014-02-26 11:45:24 +0100  Ognyan Tonchev <ognyan@axis.com>
+
+	* gst-libs/gst/rtsp/gstrtspconnection.c:
+	  rtspconnection: Add missing include
+	  https://bugzilla.gnome.org/show_bug.cgi?id=725206
+
+2014-02-21 14:01:37 +0000  Matthieu Bouron <matthieu.bouron@collabora.com>
+
+	* gst/playback/gstplaysinkconvertbin.c:
+	  playsinkconvertbin: improve gst_play_sink_convert_bin_getcaps return
+	  If we have the peer caps and a caps filter, return peer_caps +
+	  intersect_first (filter, converter_caps) instead of
+	  intersect_first (filter, peer_caps + converter_caps) and preservers
+	  downstream caps preference order.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=724893
+
+2014-01-31 00:06:18 +0100  Sebastian Rasmussen <sebrn@axis.com>
+
+	* tests/check/Makefile.am:
+	* tests/check/libs/.gitignore:
+	* tests/check/libs/rtp-basepayloading.c:
+	* tests/check/libs/rtpbasedepayload.c:
+	* tests/check/libs/rtpbasepayload.c:
+	  tests: Refactor RTP basepayloading test into pay/depay parts
+	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=723328
+
+2014-01-31 00:19:16 +0100  Sebastian Rasmussen <sebrn@axis.com>
+
+	* gst-libs/gst/rtp/gstrtpbasepayload.c:
+	  rtpbasepayload: Let caps event also configure seqnum-offset
+	  Previously the sequence number kept track of by GstRTPBasePayload would
+	  only be set when going from READY to PAUSED state. This meant that a
+	  downstream element that attempted to configure a basepayloader by
+	  setting seqnum-offset e.g. in its sinkpad's caps template would have
+	  trouble configuring the basepayloader. The reason was that the caps
+	  event which arrives with the desired value for seqnum-offset did not
+	  arrive at the basepayloader until caps negotiation took place,
+	  significantly later than the transition from READY to PAUSED.
+	  The result after this patch is that the default value for the
+	  seqnum-offset property, or later set values for this property, will take
+	  effect when going from READY to PAUSED like before. In addition the an
+	  arriving caps event will also affect the basepayloaders configured
+	  sequence number as the event arrives.
+
+2014-01-31 00:18:35 +0100  Sebastian Rasmussen <sebrn@axis.com>
+
+	* gst-libs/gst/rtp/gstrtpbasepayload.c:
+	  rtpbasepayload: Fix payload type property boundary value
+	  The payload type field in an RTP packet header is 7 bits wide, hence the
+	  boundary values ought to be 0x00 and 0x7f, not the previously stated
+	  values 0x00 and 0x80.
+
+2014-01-31 00:06:30 +0100  Sebastian Rasmussen <sebrn@axis.com>
+
+	* gst-libs/gst/rtp/gstrtpbasedepayload.c:
+	  rtpbasedepayload: Fix typos in comments
+
+2014-02-21 19:28:55 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* docs/libs/gst-plugins-base-libs-docs.sgml:
+	* docs/libs/gst-plugins-base-libs-sections.txt:
+	* gst-libs/gst/video/gstvideopool.c:
+	  docs: add GstVideoPool to docs
+
+2014-02-21 09:53:09 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/playback/gstdecodebin2.c:
+	  decodebin: If we have a demuxer without dynamic srcpads, just assume no-more-pads
+	  Otherwise we will wait until the multiqueue after the demuxer will
+	  overrun, which is clearly not needed then.
+
+2014-02-21 09:43:38 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/playback/gstdecodebin2.c:
+	  decodebin: Also make sure to not duplicate an element factory after a group
+	  If we are using an adaptive stream demuxer, which outputs a non-container
+	  stream, we are putting another multiqueue after the *parser* following
+	  the adaptive stream demuxer. We do not want to add another instance of
+	  the same parser right after this multiqueue.
+
+2014-02-20 15:38:48 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/playback/gstdecodebin2.c:
+	  decodebin: During pre-rolling always use the auto-preroll limits on multiqueues
+	  Even if we're buffering in the multiqueues.
+
+2014-02-20 15:37:54 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/playback/gstdecodebin2.c:
+	  decodebin: Pass through the seekability information when setting multiqueue limits
+
+2014-02-20 15:36:47 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/playback/gstdecodebin2.c:
+	  decodebin: During exposing of pads don't set the multiqueue limits multiple times to different values
+	  Instead just set them once in the very end to the correct values.
+
+2014-02-20 15:07:26 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/playback/gstdecodebin2.c:
+	  decodebin: Only enable multiqueue buffering once we're pre-rolled
+	  Otherwise we will emit buffering messages not just from the last
+	  multiqueue but also from previous multiqueues... confusing the
+	  application with different percentages during pre-rolling.
+
+2014-02-20 15:02:09 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/playback/gstdecodebin2.c:
+	  decodebin: Make sure that we always have a second multiqueue for adaptive streaming demuxers
+	  For adaptive streaming demuxer we insert a multiqueue after
+	  this demuxer. This multiqueue will get one fragment per buffer.
+	  Now for the case where we have a container stream inside these
+	  buffers, another demuxer will be plugged and after this second
+	  demuxer there will be a second multiqueue. This second multiqueue
+	  will get smaller buffers and will be the one emitting buffering
+	  messages.
+	  If we don't have a container stream inside the fragment buffers,
+	  we'll insert a multiqueue below right after the next element after
+	  the adaptive streaming demuxer. This is going to be a parser or
+	  decoder, and will output smaller buffers.
+
+2014-02-19 10:21:16 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/playback/gsturidecodebin.c:
+	  uridecodebin: Always use buffering in multiqueue for adaptive streams
+
+2014-02-19 10:06:13 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/playback/gsturidecodebin.c:
+	  uridecodebin: Only add a queue2 for buffering for non-adaptive streaming streams
+
+2013-02-06 08:46:58 -0300  Thiago Santos <thiago.sousa.santos@collabora.com>
+
+	* gst/playback/gsturidecodebin.c:
+	  uridecodebin: pass on the buffering property for adaptive streams
+	  Adaptive streams should download its data inside the demuxer, so
+	  we want to use multiqueue's buffering messages to control the
+	  pipeline flow and avoid losing sync if download rates are low;
+	  https://bugzilla.gnome.org/show_bug.cgi?id=707636
+
+2014-02-21 19:07:59 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* tests/check/libs/.gitignore:
+	  tests: add new unit tests to .gitignore
+
+2014-02-19 13:54:17 +0100  Ognyan Tonchev <ognyan@axis.com>
+
+	* tests/check/Makefile.am:
+	* tests/check/libs/rtspconnection.c:
+	  rtspconnection: New unit test
+	  See https://bugzilla.gnome.org/show_bug.cgi?id=724720
+
+2014-02-19 13:53:06 +0100  Ognyan Tonchev <ognyan@axis.com>
+
+	* gst-libs/gst/rtsp/gstrtspconnection.c:
+	  rtspconnection: Remove read child source when POST is disconnected
+	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=724720
+
+2014-02-19 16:10:25 -0800  Aleix Conchillo Flaqué <aleix@oblong.com>
+
+	* win32/common/libgstrtsp.def:
+	  defs: update for new rtspconnection symbols
+
+2014-02-19 01:55:50 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
+
+	* ext/ogg/gstoggdemux.c:
+	  oggdemux: allow file to go until the end in push mode
+	  When seeking back to original state after duration seeks, let
+	  upstream know that we want the whole file, including the last
+	  byte that wasn't requested on the duration seeks.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=724633
+
+2014-02-19 23:54:59 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
+
+	* ext/ogg/gstoggdemux.c:
+	* ext/ogg/gstoggdemux.h:
+	  oggdemux: remove unused instance variable event
+	  It is never set to anything
+
+2014-02-16 17:39:35 -0800  Aleix Conchillo Flaqué <aleix@oblong.com>
+
+	* gst-libs/gst/rtsp/gstrtspconnection.c:
+	* gst-libs/gst/rtsp/gstrtspconnection.h:
+	  rtspconnection: allow specifying a certificate database
+	  Two new functions have been added,
+	  gst_rtsp_connection_set_tls_database() and
+	  gst_rtsp_connection_get_tls_database(). The certificate database will be
+	  used when a certificate can't be verified with the default database.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=724393
+
+2014-02-16 23:55:17 -0800  Aleix Conchillo Flaqué <aleix@oblong.com>
+
+	* gst-libs/gst/rtsp/gstrtspconnection.c:
+	  rtspconnection: get rid of superfluous whitespaces
+
+2014-02-18 20:48:57 +0100  Stefan Sauer <ensonic@users.sf.net>
+
+	* tests/check/elements/encodebin.c:
+	  encodebin: simplify tests
+	  Also use the profile helper for the ogg profile here.
+
+2014-02-18 13:08:09 -0500  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* gst-libs/gst/video/video-info.c:
+	  video: Fix NV12_64Z32 default offset and size
+	  This was a regression introduced by f52fd7a68, where we started using
+	  the stride to encode the dimensions in tiles. This patch simply updates
+	  offset and size calculation as described in the documentation,
+	  part-mediatype-video-raw.txt.
+
+2014-02-18 15:02:57 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/playback/gstplaybin2.c:
+	  playbin: Keep inputselector around until we release its pads
+	  Otherwise there's an interesting race condition when we destroy
+	  the inputselector (actually it will be destroyed later when its state
+	  change message gets destroyed) and afterwards release its sinkpad.
+	  This is the code path when the last channel is removed from the
+	  input selector.
+	  Gave this warning sometimes, for chained oggs or whenever else
+	  we change decode groups:
+	  GStreamer-CRITICAL **: Padname '':sink_0 does not belong to element inputselector0 when removing
+
+2014-02-18 10:42:04 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/audioconvert/gstchannelmix.c:
+	  audioconvert: never do mixing for 1->1 channel conversions
+	  MONO and NONE position are the same, for example, but in
+	  general there isn't much to do here for such a conversion.
+	  Fixes problem in audioconvert, which would end up using
+	  a mixmatrix when converting between different mono format
+	  because it thinks MONO positioning is different from
+	  unpositioned channels, which is not the case in this
+	  special case. The mixmatrix would end up being 0.0 so
+	  audioconvert would convert to silence samples.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=724509
+
+2014-02-18 10:32:46 +0000  Rafał Mużyło <galtgendo@o2.pl>
+
+	* gst-libs/gst/audio/audio-info.c:
+	  audio: map channels=1,channel-mask=0 to MONO instead of NONE
+	  Fixes problem in audioconvert, which would end up using
+	  a mixmatrix when converting between different mono format
+	  because it thinks MONO positioning is different from
+	  unpositioned channels, which is not the case in this
+	  special case. The mixmatrix would end up being 0.0 so
+	  audioconvert would convert to silence samples.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=724509
+
+2014-02-16 21:24:29 +0100  Stefan Sauer <ensonic@users.sf.net>
+
+	* tests/check/elements/encodebin.c:
+	  encodebin: refactor tests
+	  Add a new test to demo how to get missing plugin message.
+	  Split some tests that unneccesarily munge unrelated checks into one test.
+
+2014-02-16 15:32:47 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/playback/gstplaysink.c:
+	  playsink: Only remove the complete text chain if the text pad goes away
+	  If the text pads does not go away we just set the overlay to silent, which
+	  allows us to immediately re-enable subs later again. However before this
+	  change we also released the streamsynchronizer text pads, which deadlocked
+	  because there was still dataflow going on. Just do this only if we remove
+	  the complete chain.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=683504
+
+2014-02-14 20:16:04 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* tools/Makefile.am:
+	* tools/gst-play.c:
+	  tools: gst-play: add volume control
+
+2014-02-13 16:03:01 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
+
+	* ext/ogg/gstoggmux.c:
+	  oggmux: properly flush when seeking at the beginning
+	  Reset all internal status when collect pads forwards a flush-stop
+	  from the pads to be able to start the stream again.
+
+2014-02-12 17:34:32 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/playback/gsturidecodebin.c:
+	  uridecodebin: Don't leak pad references
+
+2014-02-02 23:59:36 +0100  Sebastian Rasmussen <sebras@hotmail.com>
+
+	* tests/check/Makefile.am:
+	  tests: Don't build disabled plugins' check tests
+	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=723492
+
+2014-02-11 16:35:45 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/playback/gstplaybin2.c:
+	  playbin: First try to get the pad's current caps, then query caps
+	  The caps query might give us ANY caps while the pad has fixed caps
+	  configured currently.
+
+2014-02-10 16:33:50 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/playback/gstplaybin2.c:
+	  playbin: Fix memory leak in autoplugging code
+	  We should not leak element factories ideally.
+
+2014-02-10 16:33:35 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* tests/check/elements/playbin-complex.c:
+	  playbin: Fix memory leak in unit test
+
+2014-02-09 23:17:03 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/playback/gstsubtitleoverlay.c:
+	  subtitleoverlay: Remove unused function
+
+2014-02-09 11:28:48 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/audio/gstaudiosrc.h:
+	  audiosrc: Fix typo in docs
+	  We read *from* the audio device, not to it.
+
+2014-02-08 17:11:54 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* tests/check/elements/videoscale.c:
+	  videoscale: Fix compiler warning in unit test
+	  error: implicit conversion from enumeration type
+	  'GstFormat' to different enumeration type 'GstVideoFormat'
+
+2014-02-08 17:11:04 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* tests/check/elements/videoconvert.c:
+	  videoconvert: Fix compiler warning in unit test
+	  error: implicit conversion from enumeration type
+	  'GstFormat' to different enumeration type 'GstVideoFormat'
+
+2014-02-08 17:07:15 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* tests/examples/playback/playback-test.c:
+	  playback-test: Fix types for comparisons
+	  Storing a 64 bit integer in a 32 bit integer and then checking
+	  for the error cases might not be ideal.
+	  error: comparison of constant -9223372036854775808 with
+	  expression of type 'guint' (aka 'unsigned int') is always true
+
+2014-02-08 17:02:27 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/ogg/gstoggmux.h:
+	  oggmux: Fix typo in header include guard
+	  clang does not like this.
+
+2014-02-08 17:01:38 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/alsa/gstalsaplugin.c:
+	  alsa: Make clang happy with our g_strdup_vprintf() wrapper
+
+2014-02-07 15:33:34 +0100  Wim Taymans <wtaymans@redhat.com>
+
+	* tests/examples/playback/playback-test.c:
+	  playback-test: allow seeking outside of the range
+	  For download buffer, allow seeking outside of the already downloaded
+	  area.
+
+2014-02-07 02:09:10 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
+
+	* ext/pango/gstbasetextoverlay.c:
+	  basetextoverlay: use correct segment for text
+	  video time uses the 'segment' and the text time should use
+	  the 'text_segment'.
+	  If different segments are used for video and text it would
+	  lead to out of sync video/subtitles.
+
+2014-02-04 14:31:29 +0100  Wim Taymans <wtaymans@redhat.com>
+
+	* tests/check/libs/rtp.c:
+	  check: add some more checks
+	  Add header and payload length check in case of CSRCs.
+	  See https://bugzilla.gnome.org/show_bug.cgi?id=723196
+
+2014-02-03 02:35:57 +0100  Sebastian Rasmussen <sebras@hotmail.com>
+
+	* tests/examples/seek/jsseek.c:
+	  jsseek: Add missing HAVE_X check
+	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=723507
+
+2014-02-04 13:55:49 +0100  Eric Trousset <etrousset@awox.com>
+
+	* gst-libs/gst/tag/gsttagdemux.c:
+	  tagdemux: Forward TIME seeks upstream too, maybe upstream can handle that
+	  https://bugzilla.gnome.org/show_bug.cgi?id=723597
+
+2014-01-31 23:27:03 +0100  Stefan Sauer <ensonic@users.sf.net>
+
+	* docs/libs/gst-plugins-base-libs-docs.sgml:
+	* docs/libs/gst-plugins-base-libs-sections.txt:
+	* gst-libs/gst/audio/audio-channels.c:
+	* gst-libs/gst/audio/gstaudiometa.c:
+	  docs: doc fixes for audio library
+	  Add sections docs for audiometa. Fix sections docs for audiochannels. Remove old
+	  mixerutil section.
+
+2014-01-31 13:40:36 +0000  Julien Isorce <julien.isorce@collabora.co.uk>
+
+	* gst/videotestsrc/gstvideotestsrc.c:
+	  videotestsrc: ensure having caps when setting the buffer pool config
+	  It happens if downstream does not propose a buffer pool.
+	  GST_DEBUG=2 gst-launch-1.0 videotestsrc ! fakesink
+	  https://bugzilla.gnome.org/show_bug.cgi?id=723271
+
+2014-01-30 21:18:04 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* tools/gst-play.c:
+	  gst-play: Support non-ASCII tags
+	  By calling setlocale() to get us multi-byte/UTF-8 support.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=723164
+
+2014-01-28 14:28:27 +0100  Bastien Nocera <hadess@hadess.net>
+
+	* tools/gst-discoverer.c:
+	  gst-discoverer: Support non-ASCII tags
+	  By calling setlocale() to get us multi-byte/UTF-8 support.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=723164
+
+2014-01-30 10:43:48 +0100  Edward Hervey <bilboed@bilboed.com>
+
+	* common:
+	  Automatic update of common submodule
+	  From d48bed3 to 1a07da9
+
+2014-01-29 13:58:07 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
+
+	* gst/encoding/gststreamsplitter.c:
+	  streamsplitter: push pending events before eos
+	  Push any pending events downstream before pushing eos
+
+2014-01-29 12:33:21 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
+
+	* tests/check/Makefile.am:
+	* tests/check/libs/.gitignore:
+	* tests/check/libs/audioencoder.c:
+	  tests: audioencoder: add tests analogous to the videoencoder ones
+
+2014-01-29 12:32:16 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
+
+	* gst-libs/gst/audio/gstaudioencoder.c:
+	  audioencoder: push pending events and tags before EOS
+	  if there are tags or events pending and an EOS is received, push those
+	  events and tags before the EOS.
+
+2014-01-28 15:25:05 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
+
+	* tests/check/libs/videoencoder.c:
+	  tests: videoencoder: check that tags are pushed before eos
+	  Check that if a new tag event is received right before eos it
+	  is pushed before the eos
+
+2014-01-28 15:30:35 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
+
+	* gst-libs/gst/video/gstvideoencoder.c:
+	  videoencoder: push tags and events before eos
+	  if any tags or events are pending, push them before pushing eos
+
+2014-01-28 15:06:39 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
+
+	* tests/check/Makefile.am:
+	* tests/check/libs/.gitignore:
+	* tests/check/libs/videoencoder.c:
+	  tests: videoencoder: basic videoencoder base class test
+	  Adds a single test for video encoding
+
+2013-11-26 01:13:45 +0100  Sebastian Rasmussen <sebrn@axis.com>
+
+	* gst-libs/gst/rtp/gstrtpbasepayload.c:
+	  rtpbasepayload: Do cosmetic changes to rtptime calculations
+	  * Change running time type to guint64
+	  * Use GST_CLOCK_TIME_NONE() to check for invalid timestamps
+	  * Name variables so ns-based and hz-based timestamps are evident
+	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=719383
+
+2014-01-28 00:40:38 +0100  Sebastian Rasmussen <sebrn@axis.com>
+
+	* gst-libs/gst/rtp/gstrtpbasepayload.c:
+	  rtpbasepayload: Expose running-time of payloaded stream
+	  https://bugzilla.gnome.org/show_bug.cgi?id=719415
+
+2014-01-22 17:47:02 +0100  Sebastian Rasmussen <sebrn@axis.com>
+
+	* gst-libs/gst/rtp/gstrtpbasepayload.c:
+	  rtpbasepayload: Improve documentation for perfect-rtptime
+	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=719383
+
+2014-01-16 16:58:43 +0100  Sebastian Rasmussen <sebrn@axis.com>
+
+	* gst-libs/gst/rtp/gstrtpbasepayload.c:
+	  rtpbasepayload: Fix typos in documentation for properties
+	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=719383
+
+2014-01-28 00:19:07 +1100  Alessandro Decina <alessandro.d@gmail.com>
+
+	* gst/playback/gstdecodebin2.c:
+	* gst/playback/gsturidecodebin.c:
+	  decodebin: make it possible to register multiple handlers for autoplug-select
+	  Change the way autoplug-select is accumulated so that it's possible to have
+	  multiple handlers. The handlers keep getting called as long as they keep
+	  returning GST_AUTOPLUG_SELECT_TRY.
+	  One practical example of when this is needed is when hooking into playbin's
+	  uridecodebin, which is perhaps not very elegant but the only way to influence
+	  which streams playbin autoplugs/exposes.
+	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=723096
+
+2014-01-16 21:49:59 +0100  Sebastian Rasmussen <sebrn@axis.com>
+
+	* gst-libs/gst/rtp/gstrtpbasepayload.c:
+	* tests/check/libs/rtp-basepayloading.c:
+	  rtpbasepayload: Add statistics property
+	  This property allows for an atomically retrieved set of properties that
+	  can e.g. be used to generate RTP-Info headers.
+	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=719415
+
+2013-07-26 15:44:28 +0200  Sjoerd Simons <sjoerd.simons@collabora.co.uk>
+
+	* gst/playback/gsturidecodebin.c:
+	  uridecodebin: Drop hardcoded list of media suitable for download buffering
+	  Discussion on IRC indicated that the main reason for this list was to
+	  prevent demuxers that can trigger a lot of seeking from using
+	  progressive buffering using queue2 (which due to being seekable triggers
+	  that behaviour).
+	  However given that upstream can indicate seeks are possible but should
+	  be avoided via a scheduling query, this extra whitelisting shouldn't be
+	  necessary for well-behaved demuxers.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=704933
+
 2014-01-24 12:19:43 +0100  Wim Taymans <wtaymans@redhat.com>
 
 	* gst/videoconvert/gstvideoconvert.c:
@@ -271,6 +1611,79 @@
 	  the code.
 	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=720661
 
+2014-01-20 16:11:04 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/audioresample/resample.c:
+	  audioresample: It's HAVE_EMMINTRIN_H, not HAVE_XMMINTRIN_H for SSE2
+
+2014-01-20 15:44:09 +0100  Antoine Jacoutot <ajacoutot@gnome.org>
+
+	* gst/audioresample/resample.c:
+	  audioresample: Fix build on x86 if emmintrin.h is available but can't be used
+	  On i386, EMMINTRIN is defined but not usable without SSE so check for
+	  __SSE__ and __SSE2__ as well.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=670690
+
+2014-01-20 10:30:36 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* configure.ac:
+	  configure: Initialize Qt variables
+
+2014-01-20 09:46:15 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* configure.ac:
+	* tests/examples/overlay/Makefile.am:
+	* tests/examples/overlay/qt-videooverlay.cpp:
+	  examples: Port Qt examples to Qt5
+
+2014-01-18 19:22:12 +0100  Nicola Murino <nicola.murino@gmail.com>
+
+	* gst-libs/gst/riff/riff-media.c:
+	  riff: Fix G726 caps creation
+	  https://bugzilla.gnome.org/show_bug.cgi?id=720995
+
+2014-01-18 00:18:51 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst-libs/gst/pbutils/gstdiscoverer.c:
+	  discoverer: minor docs fix
+	  Can use a custom main context as well if needed.
+
+2014-01-18 13:54:22 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* docs/libs/gst-plugins-base-libs-sections.txt:
+	* gst-libs/gst/video/gstvideodecoder.c:
+	* gst-libs/gst/video/gstvideodecoder.h:
+	* win32/common/libgstvideo.def:
+	  videodecoder: Add API to get the currently pending frame size for parsing
+	  https://bugzilla.gnome.org/show_bug.cgi?id=719890
+
+2014-01-18 21:20:51 +0900  Wonchul Lee <chul0812@gmail.com>
+
+	* gst/playback/gstplaybin2.c:
+	  playbin: Remove unnecessary assignment
+	  Remove duplicated assignment
+	  https://bugzilla.gnome.org/show_bug.cgi?id=722491
+
+2014-01-18 13:31:06 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/playback/gstplaybin2.c:
+	  playbin: Insert decoders without GstAVElement information between the other decoders
+	  Otherwise they would be preferred over all decoders independent
+	  of their ranks.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=722316
+
+2014-01-18 13:12:16 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/playback/gstplaybin2.c:
+	  playbin: Only put parsers and sinks first, not all non-decoders
+	  https://bugzilla.gnome.org/show_bug.cgi?id=722316
+
+2014-01-17 11:08:32 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
+
+	* tests/check/libs/videodecoder.c:
+	  tests: videodecoder: plug a few leaks
+	  Remove leaks of caps and events references
+
 2014-01-17 10:17:29 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
 
 	* gst-libs/gst/video/gstvideodecoder.c:
@@ -278,6 +1691,23 @@
 	  They end up stored in the 'pending_events' list and should be
 	  freed after calling stop
 
+2014-01-17 15:10:42 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* tools/gst-play.c:
+	  gst-play: Handle CLOCK_LOST message
+	  It is necessary for playbin gapless playback when switching
+	  between audio-only and video-only files for example.
+
+2014-01-16 16:32:34 +0100  Wim Taymans <wtaymans@redhat.com>
+
+	* gst/encoding/gststreamsplitter.c:
+	  streamsplitter: handle ACCEPT_CAPS query correctly
+	  We can accept a caps when one of the downstream peers can accept the
+	  caps. This is not the same as checking a subset of the getcaps
+	  result because parsers might accept broader caps than what their getcaps
+	  function returns (See https://bugzilla.gnome.org/show_bug.cgi?id=677401).
+	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=722330
+
 2014-01-14 13:02:28 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
 
 	* tests/check/libs/audiodecoder.c:
@@ -315,40 +1745,6 @@
 	  the very beginning before changing its state.
 	  https://bugzilla.gnome.org/show_bug.cgi?id=715138
 
-2014-01-13 20:47:02 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
-
-	* gst-libs/gst/audio/gstaudiodecoder.c:
-	  audiodecoder: avoid parsing caps event if it is not used
-	  Saves some cpu
-
-2014-01-13 20:44:23 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
-
-	* gst-libs/gst/audio/gstaudiodecoder.c:
-	  audiodecoder: make sure caps is set before forwarding gap event
-	  Before trying to generate a default fixated caps when handling a gap
-	  event, make sure that the same strategy that is used when handling
-	  a buffer has been attempted. Otherwise audiodecoder will ignore
-	  upstream caps settings such as rate and channels and will likely
-	  end with a caps with channels=1 and rate=1.
-	  https://bugzilla.gnome.org/show_bug.cgi?id=722144
-
-2014-01-13 19:40:49 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
-
-	* tests/check/libs/audiodecoder.c:
-	  tests: audiodecoder: check that negotiation works buffers and gaps
-	  Adds 2 tests to verify that output caps are the expected value, reusing
-	  input structure values for both buffers and gaps
-	  https://bugzilla.gnome.org/show_bug.cgi?id=722144
-
-2014-01-13 16:33:11 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
-
-	* tests/check/Makefile.am:
-	* tests/check/libs/.gitignore:
-	* tests/check/libs/audiodecoder.c:
-	  tests: audiodecoder: add basic playback test for audio decoder
-	  Simple test that just check that audio decoding works as expected
-	  https://bugzilla.gnome.org/show_bug.cgi?id=722144
-
 2014-01-14 12:05:46 +0000  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
 
 	* ext/ogg/gstoggdemux.c:
@@ -392,10 +1788,193 @@
 	  almost the same chunk size (a bit lower), and this lets us get
 	  better performance on streams with large pages.
 
-2014-01-10 11:17:04 +0000  Tim-Philipp Müller <tim@centricular.com>
+2014-01-13 20:47:02 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
 
-	* ext/pango/gstbasetextoverlay.c:
-	  textoverlay: don't leak GAP events
+	* gst-libs/gst/audio/gstaudiodecoder.c:
+	  audiodecoder: avoid parsing caps event if it is not used
+	  Saves some cpu
+
+2014-01-13 20:44:23 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
+
+	* gst-libs/gst/audio/gstaudiodecoder.c:
+	  audiodecoder: make sure caps is set before forwarding gap event
+	  Before trying to generate a default fixated caps when handling a gap
+	  event, make sure that the same strategy that is used when handling
+	  a buffer has been attempted. Otherwise audiodecoder will ignore
+	  upstream caps settings such as rate and channels and will likely
+	  end with a caps with channels=1 and rate=1.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=722144
+
+2014-01-13 19:40:49 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
+
+	* tests/check/libs/audiodecoder.c:
+	  tests: audiodecoder: check that negotiation works buffers and gaps
+	  Adds 2 tests to verify that output caps are the expected value, reusing
+	  input structure values for both buffers and gaps
+	  https://bugzilla.gnome.org/show_bug.cgi?id=722144
+
+2014-01-13 16:33:11 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
+
+	* tests/check/Makefile.am:
+	* tests/check/libs/.gitignore:
+	* tests/check/libs/audiodecoder.c:
+	  tests: audiodecoder: add basic playback test for audio decoder
+	  Simple test that just check that audio decoding works as expected
+	  https://bugzilla.gnome.org/show_bug.cgi?id=722144
+
+2014-01-14 13:17:26 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/video/videooverlay.c:
+	  videoverlay: Don't mention gconf elements and add a sentence about playbin/playsink
+	  playbin/playsink now implement the video overlay interface
+
+2014-01-13 16:28:23 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* win32/common/libgstvideo.def:
+	  win32: add new API to .def file
+
+2014-01-13 16:29:00 +0100  Wim Taymans <wtaymans@redhat.com>
+
+	* gst-libs/gst/video/gstvideodecoder.c:
+	  videodecoder: only copy chroma_site when known
+	  Only overwrite the chroma-site if we have a valid value in the reference
+	  format.
+
+2014-01-13 16:20:55 +0100  Wim Taymans <wtaymans@redhat.com>
+
+	* gst/videoconvert/gstvideoconvertorc.orc:
+	* gst/videoconvert/videoconvert.c:
+	  videoconvert: don't interpolate chroma in I420 -> RGB
+	  Don't try to interpolate the chroma samples, the used algorithm only
+	  works for horizontal cositing. Let's switch to a faster and safer
+	  version until we handle chroma siting correctly in the fastpaths.
+
+2014-01-13 12:16:01 +0100  Wim Taymans <wtaymans@redhat.com>
+
+	* gst-libs/gst/video/gstvideoutils.c:
+	  videoutils: add some debug
+
+2014-01-08 19:43:01 -0500  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* docs/libs/gst-plugins-base-libs-sections.txt:
+	  doc: Add new sections introduce for tile format
+	  https://bugzilla.gnome.org/show_bug.cgi?id=707361
+
+2014-01-08 19:42:35 -0500  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* gst-libs/gst/video/Makefile.am:
+	  video: Generate types for tile enumeration
+	  https://bugzilla.gnome.org/show_bug.cgi?id=707361
+
+2014-01-08 19:41:56 -0500  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* docs/design/part-mediatype-video-raw.txt:
+	* gst-libs/gst/video/video-format.c:
+	* gst-libs/gst/video/video-format.h:
+	* gst-libs/gst/video/video-frame.c:
+	* gst-libs/gst/video/video-info.c:
+	* gst-libs/gst/video/video-tile.h:
+	  video: Don't use extra plane and componenent for tile format
+	  Instead of using extra plane, we encode the number of tiles in x and y in the stride of
+	  each planes (i.e. y_tiles << 16 | x_tiles) and introduce tile_mode, tile_width and
+	  tile_height into GstVideoFormatInfo structure.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=707361
+
+2014-01-03 22:36:13 +0100  Wim Taymans <wtaymans@redhat.com>
+
+	* docs/design/part-mediatype-video-raw.txt:
+	* gst-libs/gst/video/video-format.c:
+	* gst-libs/gst/video/video-format.h:
+	* gst-libs/gst/video/video-info.c:
+	* tests/check/elements/videoscale.c:
+	  video: rename NV12T -> NV12_64Z32
+	  Is a bit more descriptive and allows us to add more tiled types
+	  later.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=707361
+
+2014-01-03 22:29:09 +0100  Nicolas Dufresne <nicolas.dufresne at collabora.co.uk>
+
+	* gst-libs/gst/video/video-frame.c:
+	  video-frame: scale vertical tiles based on subsampling
+	  https://bugzilla.gnome.org/show_bug.cgi?id=707361
+
+2014-01-03 22:18:08 +0100  Nicolas Dufresne <nicolas.dufresne at collabora.co.uk>
+
+	* gst-libs/gst/video/video-frame.c:
+	  video-frame: fix tiled pixel stride
+	  Pixel stride is per component, not per plane. We get the tile mode from
+	  the pixelstride of the TILE component.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=707361
+
+2013-12-26 17:40:05 +0100  Wim Taymans <wtaymans@redhat.com>
+
+	* gst-libs/gst/video/video-format.h:
+	  format: improve docs
+	  https://bugzilla.gnome.org/show_bug.cgi?id=707361
+
+2013-12-25 16:22:32 +0100  Wim Taymans <wtaymans@redhat.com>
+
+	* tests/check/elements/videoscale.c:
+	  tests: fix videoscale test for NV12T
+	  https://bugzilla.gnome.org/show_bug.cgi?id=707361
+
+2013-12-25 16:06:43 +0100  Wim Taymans <wtaymans@redhat.com>
+
+	* gst-libs/gst/video/video-format.c:
+	* gst-libs/gst/video/video-frame.c:
+	  video-format: fix off-by-one for tiled coordinates
+	  https://bugzilla.gnome.org/show_bug.cgi?id=707361
+
+2013-12-25 15:22:24 +0100  Wim Taymans <wtaymans@redhat.com>
+
+	* gst-libs/gst/video/video-tile.h:
+	  video-tile: improve docs
+	  https://bugzilla.gnome.org/show_bug.cgi?id=707361
+
+2013-12-25 14:57:30 +0100  Wim Taymans <wtaymans@redhat.com>
+
+	* gst-libs/gst/video/video-format.c:
+	  video-format: use shifts when possible
+	  https://bugzilla.gnome.org/show_bug.cgi?id=707361
+
+2013-12-25 14:23:04 +0100  Wim Taymans <wtaymans@redhat.com>
+
+	* gst-libs/gst/video/video-format.h:
+	* gst-libs/gst/video/video-frame.c:
+	  video-frame: fix copy of tiled formats
+	  Add code to copy tiled planes.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=707361
+
+2013-12-25 14:11:57 +0100  Wim Taymans <wtaymans@redhat.com>
+
+	* gst-libs/gst/video/Makefile.am:
+	* gst-libs/gst/video/video-format.c:
+	* gst-libs/gst/video/video-tile.c:
+	* gst-libs/gst/video/video-tile.h:
+	  video-tile: add tile mode and helper functions
+	  Move the tile helper functions to their own file. Make it possible to
+	  make other tiling modes later.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=707361
+
+2013-12-20 21:27:46 +0100  Wim Taymans <wtaymans@redhat.com>
+
+	* docs/design/part-mediatype-video-raw.txt:
+	* gst-libs/gst/video/video-format.c:
+	* gst-libs/gst/video/video-format.h:
+	* gst-libs/gst/video/video-info.c:
+	  video: add NV12T support
+	  https://bugzilla.gnome.org/show_bug.cgi?id=707361
+
+2013-12-19 16:11:50 +0100  Wim Taymans <wtaymans@redhat.com>
+
+	* gst-libs/gst/video/video-format.h:
+	  Add tiled color format support
+	  https://bugzilla.gnome.org/show_bug.cgi?id=707361
+
+2014-01-13 15:32:23 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/pbutils/encoding-profile.c:
+	  encoding-profile: Fix typo in the docs
 
 2014-01-11 01:14:19 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
 
@@ -438,6 +2017,72 @@
 	  This patch fixes this by copying the segment earlier if on reverse playback
 	  https://bugzilla.gnome.org/show_bug.cgi?id=721666
 
+2014-01-10 14:24:12 +0000  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* gst/videotestsrc/gstvideotestsrc.c:
+	  videotestsrc: fix unit test breaking on duration query
+	  The new switch caused breaks to not break of the main switch
+	  anymore, causing fall through.
+
+2014-01-10 15:06:23 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/videoconvert/gstvideoconvertorc-dist.c:
+	* gst/videoconvert/gstvideoconvertorc-dist.h:
+	  videoconvert: Update disted orc files once again
+
+2014-01-10 11:17:38 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* tools/gst-play.c:
+	  tools: gst-play: add dot file dumping for pipeline graph debugging
+
+2014-01-10 11:17:04 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* ext/pango/gstbasetextoverlay.c:
+	  textoverlay: don't leak GAP events
+
+2014-01-10 09:53:21 +0000  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* gst/videotestsrc/gstvideotestsrc.c:
+	  videotestsrc: do not set TIME duration when asked for another format
+	  This fixes asserts in pipelines such as:
+	  gst-launch-1.0 videotestsrc num-buffers=1000 ! x264enc ! h264parse ! \
+	  matroskamux name=mux ! filesink location=test.mkv
+
+2014-01-10 09:21:08 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/videoconvert/gstvideoconvertorc-dist.c:
+	* gst/videoconvert/gstvideoconvertorc-dist.h:
+	  videoconvert: Update disted orc files
+
+2014-01-09 18:12:00 +0100  Wim Taymans <wtaymans@redhat.com>
+
+	* gst/videoconvert/gstvideoconvertorc.orc:
+	* gst/videoconvert/videoconvert.c:
+	  videoconvert: rework YUV->RGB fastpaths
+	  Rework the orc code to be around 10% faster and support arbitrary matrices.
+	  Pass the matrix parameters to the YUV->RGB functions to make them work
+	  for all matrices. This enables more and faster fastpath conversions.
+	  See https://bugzilla.gnome.org/show_bug.cgi?id=721701
+
+2014-01-09 18:08:41 +0100  Wim Taymans <wtaymans@redhat.com>
+
+	* gst/videoconvert/gstvideoconvertorc.orc:
+	  videoconvert: fix I420 to BGRA fast-path some more
+	  Calculate alpha value differently so that we can avoid running out
+	  of registers.
+
+2014-01-08 16:20:12 +0100  Wim Taymans <wtaymans@redhat.com>
+
+	* gst/videoconvert/gstvideoconvertorc.orc:
+	  videoconvert: remove unused code
+
+2014-01-03 15:24:29 +0100  Nicola Murino <nicola.murino@gmail.com>
+
+	* gst-libs/gst/riff/riff-ids.h:
+	* gst-libs/gst/riff/riff-media.c:
+	  riff: Add G726 ADPCM support
+	  https://bugzilla.gnome.org/show_bug.cgi?id=720995
+
 2014-01-07 22:04:20 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
 
 	* tests/check/libs/videodecoder.c:
@@ -455,19 +2100,79 @@
 	  buffers in the same order it receives and that it respects the
 	  set timestamps and durations
 
+2014-01-07 15:01:14 +0100  Wim Taymans <wtaymans@redhat.com>
+
+	* win32/common/libgstrtsp.def:
+	  defs: update for new symbols
+
+2014-01-07 14:46:05 +0100  Wim Taymans <wtaymans@redhat.com>
+
+	* gst-libs/gst/rtsp/gstrtsptransport.c:
+	  rtsptransport: calculate default lower transport
+	  Add an internal method to calculate the default lower transport whan it
+	  is missing.
+
+2014-01-07 14:31:09 +0100  Wim Taymans <wtaymans@redhat.com>
+
+	* gst-libs/gst/rtsp/gstrtsptransport.c:
+	* gst-libs/gst/rtsp/gstrtsptransport.h:
+	  rtsptransport: add method to get media-type from transport
+	  Add a method to make a media-type from the transport. Deprecate the old
+	  method that only used the mode.
+	  Based on patch from Aleix Conchillo Flaqué <aleix@oblong.com>
+	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=720219
+
 2014-01-07 11:51:01 +0100  Wim Taymans <wtaymans@redhat.com>
 
 	* gst-libs/gst/rtsp/gstrtsptransport.c:
 	* gst-libs/gst/rtsp/gstrtsptransport.h:
-	* win32/common/libgstrtsp.def:
 	  rtsptransport: add GType for Profile
 	  See https://bugzilla.gnome.org/show_bug.cgi?id=720696
 
-2013-12-04 01:08:13 +0100  Sebastian Rasmussen <sebras@hotmail.com>
+2014-01-05 23:35:52 +0100  Stefan Sauer <ensonic@users.sf.net>
 
-	* docs/design/Makefile.am:
-	  docs: add missing files for distribution
-	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=720015
+	* gst-libs/gst/pbutils/descriptions.c:
+	* gst/typefind/gsttypefindfunctions.c:
+	  typefind: add support of BWF RF64  a 64bit wav variant
+	  Detect and describe the RF64 Broadcast Wave Format.
+	  Fixes #519220
+
+2014-01-05 21:39:52 +0100  Stefan Sauer <ensonic@users.sf.net>
+
+	* gst-libs/gst/riff/riff-read.c:
+	* gst-libs/gst/riff/riff-read.h:
+	* win32/common/libgstriff.def:
+	  riff: remove new parse_ncdt api again
+	  This chunk is avi specific, no need to expose this as public api.
+
+2014-01-04 22:30:17 +0100  Stefan Sauer <ensonic@users.sf.net>
+
+	* win32/common/libgstriff.def:
+	  win32: export new riff api
+
+2014-01-04 21:54:10 +0100  Stefan Sauer <ensonic@users.sf.net>
+
+	* gst-libs/gst/riff/riff-read.c:
+	  riff: fix indentation messup from previous commit
+
+2014-01-04 21:31:07 +0100  Stefan Sauer <ensonic@users.sf.net>
+
+	* gst-libs/gst/riff/riff-ids.h:
+	* gst-libs/gst/riff/riff-read.c:
+	* gst-libs/gst/riff/riff-read.h:
+	  riff: add support for nikon tags
+	  Nikon cameras store metadata in a custom format. Add parsing of the chunk and
+	  extract some initial data.
+	  API: gst_riff_parse_ncdt()
+	  Fixes #636143
+
+2014-01-03 02:18:20 +1100  Jan Schmidt <jan@centricular.com>
+
+	* gst-libs/gst/audio/gstaudiobasesrc.c:
+	  audiobasesrc: Avoid unnecessary configuration
+	  Port a change from audiobasesink from def07410, to ignore setcaps
+	  when the caps don't actually change, and avoid a reconfiguration
+	  and reset of the ringbuffer in that case.
 
 2013-11-15 14:17:03 +0000  William Grant <wgrant@ubuntu.com>
 
@@ -487,23 +2192,14 @@
 	  Add id3 tag for wavparse
 	  https://bugzilla.gnome.org/show_bug.cgi?id=721241
 
-2013-12-30 15:28:24 +0000  Julien Isorce <julien.isorce@collabora.co.uk>
+2013-12-31 09:37:36 +0100  Sebastian Dröge <sebastian@centricular.com>
 
-	* gst-libs/gst/video/gstvideodecoder.c:
-	* gst-libs/gst/video/gstvideoencoder.c:
-	  videodec/enc: allow to call negiotate without ouput state
-	  Some decoders call set_output_state from GstVideoDecoder::negotiate()
-	  So move the g_return_val_if_fail to default_negotiate(), i.e. where
-	  it is actually necessary.
-	  Fix https://bugzilla.gnome.org/show_bug.cgi?id=721078
-
-2014-01-03 02:18:20 +1100  Jan Schmidt <jan@centricular.com>
-
-	* gst-libs/gst/audio/gstaudiobasesrc.c:
-	  audiobasesrc: Avoid unnecessary configuration
-	  Port a change from audiobasesink from def07410, to ignore setcaps
-	  when the caps don't actually change, and avoid a reconfiguration
-	  and reset of the ringbuffer in that case.
+	* tests/icles/test-effect-switch.c:
+	  Revert "test-effect-switch: Change one of the pad blocks to and idle probe"
+	  This reverts commit 40fe5dcc84ff2cc7dbe0112d7830a33fd764d4e1.
+	  Using an idle probe here is not ideal because we'll send an EOS event
+	  from the application thread... which might block for quite some time.
+	  Go back to a block probe.
 
 2013-12-30 19:48:29 +0100  Sebastian Dröge <sebastian@centricular.com>
 
@@ -513,29 +2209,108 @@
 	  1/1 pixel-aspect-ratio or progressive video.
 	  https://bugzilla.gnome.org/show_bug.cgi?id=721103
 
-2013-12-05 14:31:25 +0000  Julien Isorce <julien.isorce@collabora.co.uk>
+2013-12-30 19:40:29 +0100  Sebastian Dröge <sebastian@centricular.com>
 
-	* gst-libs/gst/video/gstvideodecoder.c:
-	* gst-libs/gst/video/gstvideoencoder.c:
-	  videodec/enc: clear reconfigure flag if negotiate succeeds
-	  So that it avoids to send an allocation query twice.
-	  One from an early call to gst_video_encoder_negotiate from a
-	  subclass, then one from gst_video_encoder_allocate_output_frame.
-	  Which means that previously gst_video_encoder_negotiate was not
-	  clearing the GST_PAD_FLAG_NEED_RECONFIGURE even on success.
-	  Fixes bug https://bugzilla.gnome.org/show_bug.cgi?id=719684
+	* tests/icles/test-effect-switch.c:
+	  test-effect-switch: Don't put two format fields into the first capsfilter
 
-2013-12-05 14:39:57 +0000  Julien Isorce <julien.isorce@collabora.co.uk>
+2013-12-30 19:12:53 +0100  Sebastian Dröge <sebastian@centricular.com>
 
-	* gst-libs/gst/audio/gstaudiodecoder.c:
+	* tests/icles/test-effect-switch.c:
+	  test-effect-switch: Change one of the pad blocks to and idle probe
+	  Just because we can.
+
+2013-12-30 17:30:15 +0100  Edward Hervey <bilboed@bilboed.com>
+
+	* gst-libs/gst/pbutils/encoding-profile.c:
+	  encoding-profile: Add missing break statement
+	  And do a minor cleanup
+	  COVERITY CID 1139753
+
+2013-12-30 14:30:23 +0100  Stefan Sauer <ensonic@users.sf.net>
+
+	* gst-libs/gst/riff/riff-ids.h:
+	  riff: add two chunk-ids for samples instruments
+	  Wav files can have 'smpl' and 'inst' chunks.
+
+2013-12-30 13:46:34 +0100  Edward Hervey <bilboed@bilboed.com>
+
+	* gst-libs/gst/riff/riff-media.c:
+	  riff-media: Fix array read
+	  nbchannels ranges from 1 to 8, therefore use '- 1' to get the proper
+	  array value.
+
+2013-12-30 13:33:00 +0100  Edward Hervey <bilboed@bilboed.com>
+
+	* gst/videorate/gstvideorate.c:
+	  videorate: Remove useless assignement
+	  Was already set before
+
+2013-12-26 17:47:46 +0200  George Kiagiadakis <george.kiagiadakis@collabora.com>
+
+	* gst-libs/gst/rtp/gstrtpbasepayload.c:
+	  gstrtpbasepayload: use the session's suggested ssrc after a collision, if the session provides one
+	  Conflicts:
+	  gst-libs/gst/rtp/gstrtpbasepayload.c
+
+2013-12-10 15:19:14 +0000  Matthieu Bouron <matthieu.bouron@collabora.com>
+
+	* gst/playback/gstplaybin2.c:
+	* gst/playback/gstrawcaps.h:
+	  playback: add ANY caps features to default audio/video raw caps
+	  Allows elements using audio/video caps features to be used by playbin.
+
+2013-12-30 10:53:24 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/audio/audio-info.c:
+	* gst-libs/gst/video/video-info.c:
+	  audio/video-info: Properly initialize the info structures in set_format()
+	  And don't assume in other code that set_format() preserves any fields at
+	  all. These assumptions were already made here for fields that were changed
+	  by set_format().
+
+2013-12-30 10:14:09 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/audio/audio-info.c:
+	* gst-libs/gst/video/video-info.c:
+	  audio/video-info: Initialize the complete struct to 0 in the beginning
+	  Instead of only initializing some parts in some code paths. Also
+	  makes it easier to use the reserved bits of the structs later.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=720810
+
+2013-12-20 19:48:06 -0300  Reynaldo H. Verdejo Pinochet <r.verdejo@sisa.samsung.com>
+
+	* gst-libs/gst/audio/gstaudiobasesrc.c:
+	  audiobasesrc: Bunch of cosmetic/grammar fixes
+
+2013-12-20 18:58:43 -0300  Reynaldo H. Verdejo Pinochet <r.verdejo@sisa.samsung.com>
+
+	* gst-libs/gst/audio/gstaudiobasesrc.c:
+	  audiobasesrc: Retarget FIXME to 2.0
+	  Properly fixing this one would break API.
+
+2013-12-20 18:54:39 -0300  Reynaldo H. Verdejo Pinochet <r.verdejo@sisa.samsung.com>
+
+	* gst-libs/gst/audio/audio.c:
+	* gst-libs/gst/audio/gstaudiobasesrc.c:
+	* gst-libs/gst/audio/gstaudiocdsrc.c:
+	* gst-libs/gst/audio/gstaudiodecoder.h:
 	* gst-libs/gst/audio/gstaudioencoder.c:
-	  audiodec/enc: clear reconfigure flag if negotiate succeeds
-	  So that it avoids to send an allocation query twice.
-	  One from an early call to gst_audio_encoder_negotiate from a
-	  subclass, then one from gst_audio_encoder_allocate_output_buffer.
-	  Which means that previously gst_audio_encoder_negotiate was not
-	  clearing the GST_PAD_FLAG_NEED_RECONFIGURE even on success.
-	  Fixes bug https://bugzilla.gnome.org/show_bug.cgi?id=719684
+	* gst-libs/gst/audio/gstaudioringbuffer.c:
+	* gst-libs/gst/audio/gstaudiosink.c:
+	* gst-libs/gst/audio/gstaudiosrc.c:
+	  audiobase*: Drop trailing withespaces
+
+2013-12-20 18:53:13 -0300  Reynaldo H. Verdejo Pinochet <r.verdejo@sisa.samsung.com>
+
+	* gst-libs/gst/audio/gstaudiobasesrc.c:
+	  audiobasesrc: Break some too long lines
+
+2013-12-20 18:41:59 -0300  Reynaldo H. Verdejo Pinochet <r.verdejo@sisa.samsung.com>
+
+	* gst-libs/gst/audio/gstaudiobasesrc.c:
+	  audiobasesrc: Add FIXME for times in NSECONDS
+	  Timebase is in nanoseconds pretty much everywhere else
 
 2013-12-26 23:21:45 +1100  Jan Schmidt <jan@centricular.com>
 
@@ -551,99 +2326,24 @@
 	  error message.
 	  Fixes bug https://bugzilla.gnome.org/show_bug.cgi?id=603921
 
-=== release 1.2.2 ===
+2013-12-26 17:41:00 +0100  Wim Taymans <wtaymans@redhat.com>
 
-2013-12-26 17:37:46 +0100  Sebastian Dröge <sebastian@centricular.com>
+	* gst-libs/gst/rtsp/gstrtsptransport.c:
+	* gst-libs/gst/rtsp/gstrtsptransport.h:
+	  rtsptransport: add more profiles
+	  Add support for Feedback profiles
 
-	* ChangeLog:
-	* NEWS:
-	* RELEASE:
-	* configure.ac:
-	* docs/plugins/inspect/plugin-adder.xml:
-	* docs/plugins/inspect/plugin-alsa.xml:
-	* docs/plugins/inspect/plugin-app.xml:
-	* docs/plugins/inspect/plugin-audioconvert.xml:
-	* docs/plugins/inspect/plugin-audiorate.xml:
-	* docs/plugins/inspect/plugin-audioresample.xml:
-	* docs/plugins/inspect/plugin-audiotestsrc.xml:
-	* docs/plugins/inspect/plugin-cdparanoia.xml:
-	* docs/plugins/inspect/plugin-encoding.xml:
-	* docs/plugins/inspect/plugin-gio.xml:
-	* docs/plugins/inspect/plugin-ivorbisdec.xml:
-	* docs/plugins/inspect/plugin-libvisual.xml:
-	* docs/plugins/inspect/plugin-ogg.xml:
-	* docs/plugins/inspect/plugin-pango.xml:
-	* docs/plugins/inspect/plugin-playback.xml:
-	* docs/plugins/inspect/plugin-subparse.xml:
-	* docs/plugins/inspect/plugin-tcp.xml:
-	* docs/plugins/inspect/plugin-theora.xml:
-	* docs/plugins/inspect/plugin-typefindfunctions.xml:
-	* docs/plugins/inspect/plugin-videoconvert.xml:
-	* docs/plugins/inspect/plugin-videorate.xml:
-	* docs/plugins/inspect/plugin-videoscale.xml:
-	* docs/plugins/inspect/plugin-videotestsrc.xml:
-	* docs/plugins/inspect/plugin-volume.xml:
-	* docs/plugins/inspect/plugin-vorbis.xml:
-	* docs/plugins/inspect/plugin-ximagesink.xml:
-	* docs/plugins/inspect/plugin-xvimagesink.xml:
-	* gst-plugins-base.doap:
-	* gst/videoconvert/gstvideoconvertorc-dist.c:
-	* gst/videoconvert/gstvideoconvertorc-dist.h:
-	* win32/common/_stdint.h:
-	* win32/common/config.h:
-	  Release 1.2.2
+2013-12-25 10:45:11 +0100  Wim Taymans <wtaymans@redhat.com>
 
-2013-12-26 17:37:40 +0100  Sebastian Dröge <sebastian@centricular.com>
+	* gst-libs/gst/video/video-frame.c:
+	  video-frame: fix plane copy for index plane
+	  Move the code to handle the index plane in the _copy_plane.
 
-	* po/af.po:
-	* po/az.po:
-	* po/bg.po:
-	* po/ca.po:
-	* po/cs.po:
-	* po/da.po:
-	* po/de.po:
-	* po/el.po:
-	* po/en_GB.po:
-	* po/eo.po:
-	* po/es.po:
-	* po/eu.po:
-	* po/fi.po:
-	* po/fr.po:
-	* po/gl.po:
-	* po/hr.po:
-	* po/hu.po:
-	* po/id.po:
-	* po/it.po:
-	* po/ja.po:
-	* po/lt.po:
-	* po/lv.po:
-	* po/nb.po:
-	* po/nl.po:
-	* po/or.po:
-	* po/pl.po:
-	* po/pt_BR.po:
-	* po/ro.po:
-	* po/ru.po:
-	* po/sk.po:
-	* po/sl.po:
-	* po/sq.po:
-	* po/sr.po:
-	* po/sv.po:
-	* po/tr.po:
-	* po/uk.po:
-	* po/vi.po:
-	* po/zh_CN.po:
-	  Update .po files
+2013-12-24 01:20:25 +0000  Lionel Landwerlin <llandwerlin@gmail.com>
 
-2013-12-26 16:45:54 +0100  Sebastian Dröge <sebastian@centricular.com>
-
-	* po/da.po:
-	* po/de.po:
-	* po/pl.po:
-	* po/ru.po:
-	* po/uk.po:
-	* po/vi.po:
-	  po: Update translations
+	* gst-libs/gst/video/colorbalance.c:
+	  colorbalance: add missing annotation for list_channels()
+	  https://bugzilla.gnome.org/show_bug.cgi?id=720999
 
 2013-12-23 14:54:02 +0100  Sebastian Dröge <sebastian@centricular.com>
 
@@ -659,6 +2359,162 @@
 	  This can only be fixed in orc by breaking ABI and allowing more
 	  variables.
 
+2013-12-22 22:33:26 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* autogen.sh:
+	* common:
+	  Automatic update of common submodule
+	  From dbedaa0 to d48bed3
+
+2013-12-22 21:56:03 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* po/Makevars:
+	  po: set gettext domain in Makevars so we don't have to patch the generated Makefile.in.in
+	  https://bugzilla.gnome.org/show_bug.cgi?id=705455
+
+2013-12-22 22:07:43 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* tests/check/libs/.gitignore:
+	  tests: make git ignore new test binary
+
+2013-12-20 18:06:25 -0300  Reynaldo H. Verdejo Pinochet <r.verdejo@sisa.samsung.com>
+
+	* gst-libs/gst/audio/gstaudiobasesink.c:
+	  gstaudiobasesink: Always reset last_align
+	  Should be done for all the reset_sync() cases. Not
+	  only for the READY to PAUSED one.
+
+2013-12-20 18:02:42 -0300  Reynaldo H. Verdejo Pinochet <r.verdejo@sisa.samsung.com>
+
+	* gst-libs/gst/audio/gstaudiobasesink.c:
+	  gstaudiobasesink: Reset last_align to 0, not -1
+	  This is the expected behavior in READY -> PAUSED
+
+2013-12-20 17:58:43 -0300  Reynaldo H. Verdejo Pinochet <r.verdejo@sisa.samsung.com>
+
+	* gst-libs/gst/audio/gstaudiobasesink.c:
+	  gstaudiobasesink: Always reset avg_skew on _reset
+	  Only case in which it wasn't (READY to PAUSED) should
+	  have had this value reseted too.
+
+2013-12-20 17:10:44 -0300  Reynaldo H. Verdejo Pinochet <r.verdejo@sisa.samsung.com>
+
+	* gst-libs/gst/audio/gstaudiobasesink.c:
+	  gstaudiobasesink: Retarget FIXME to 2.0
+	  Properly fixing this one would break API
+
+2013-12-20 15:13:54 -0300  Reynaldo H. Verdejo Pinochet <r.verdejo@sisa.samsung.com>
+
+	* gst-libs/gst/audio/gstaudiobasesink.c:
+	  gstaudiobasesink: Factor out reset sync routine
+
+2013-12-20 01:06:33 -0300  Reynaldo H. Verdejo Pinochet <r.verdejo@sisa.samsung.com>
+
+	* gst-libs/gst/audio/gstaudiobasesink.c:
+	  gstaudiobasesink: Drop dead _sink_async_play() code
+
+2013-12-20 01:03:14 -0300  Reynaldo H. Verdejo Pinochet <r.verdejo@sisa.samsung.com>
+
+	* gst-libs/gst/audio/gstaudiobasesink.c:
+	  gstaudiobasesink: Break some too long lines
+
+2013-12-20 00:09:22 -0300  Reynaldo H. Verdejo Pinochet <r.verdejo@sisa.samsung.com>
+
+	* gst-libs/gst/audio/gstaudiobasesink.c:
+	  gstaudiobasesink: Cosmetics, grammar/spelling
+	  - Drop repeated 'yet' from debug msg
+	  - Drop repeated 'to' from param desc
+	  - Some spelling
+
+2013-12-20 08:41:45 -0500  Edward Hervey <edward@collabora.com>
+
+	* gst-libs/gst/audio/audio-info.c:
+	* gst-libs/gst/video/video-info.c:
+	  audio/video: Initialize all {audio|video}info fields
+	  Fixes "Unitialized Scalar Variable" issues reported by Coverity.
+	  Has the added advantage of detecting whether somebody *does* use those
+	  fields (ending up with a invalid address).
+	  https://bugzilla.gnome.org/show_bug.cgi?id=720810
+
+2013-12-19 17:41:31 -0300  Reynaldo H. Verdejo Pinochet <r.verdejo@sisa.samsung.com>
+
+	* gst-libs/gst/audio/gstaudiobasesink.c:
+	  gstaudiobasesink: Refactor alignment computation for clarity
+
+2013-12-18 15:52:09 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* tests/check/elements/subparse.c:
+	  subparse: Add unit test for LRC subtitles
+
+2013-12-18 15:24:02 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/subparse/gstsubparse.c:
+	  subparse: Add support for parsing LRC subtitles
+	  https://bugzilla.gnome.org/show_bug.cgi?id=678590
+
+2013-12-18 15:07:47 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/subparse/gstsubparse.c:
+	* gst/subparse/gstsubparse.h:
+	  subparse: Add typefinder for LRC subtitles
+
+2013-12-10 13:54:28 -0800  Aleix Conchillo Flaqué <aleix@oblong.com>
+
+	  sdp: parse encryption key field
+	  * gst-libs/gst/sdp/gstsdpmessage.c: parse encryption key field (k).
+	  https://bugzilla.gnome.org/show_bug.cgi?id=720215
+
+2013-12-17 18:04:33 +0100  Stefan Sauer <ensonic@users.sf.net>
+
+	* gst-libs/gst/pbutils/descriptions.c:
+	* gst/typefind/gsttypefindfunctions.c:
+	* tests/check/libs/pbutils.c:
+	  pbutils: add typefinder and descriptions for audio/x-xi
+	  xi files can be read by libsndfile.
+
+2013-12-17 18:03:40 +0100  Stefan Sauer <ensonic@users.sf.net>
+
+	* gst-libs/gst/pbutils/descriptions.c:
+	  descriptions: longer version of two audio codec descriptions
+
+2013-12-17 17:25:07 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/video/video-format.h:
+	  video-format: Document usage of GST_VIDEO_FORMAT_ENCODED
+	  This must only ever be used in caps in combination with a non-system
+	  memory GstCapsFeatures, and where it does not make sense to specify
+	  any of the other video formats. Examples of this would be in gst-vaapi.
+
+2013-12-17 17:23:19 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/video/video-format.h:
+	* gst-libs/gst/video/video-info.c:
+	  Revert "video: specify/restrict usage of GST_VIDEO_FORMAT_ENCODED"
+	  This reverts commit 5fcdabd907ca45595b64131bbae0ea963e259a7c.
+	  Instead of making it impossible to use the ENCODED format we should
+	  just document that it must not be used for capsfeature-less caps.
+	  Also this commit broke API/ABI.
+
+2013-12-17 17:09:02 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/video/gstvideoencoder.c:
+	  videoencoder: Release the allocator on hard resets
+
+2013-12-16 15:53:41 +0000  Julien Isorce <julien.isorce@collabora.co.uk>
+
+	* gst-libs/gst/video/gstvideodecoder.c:
+	  videodecoder: release buffer pool and allocator on full reset
+	  It allows to release the buffer pool sooner (i.e. when going
+	  to GST_STATE_READY). Previously it was released in finalize.
+	  Fixes bug https://bugzilla.gnome.org/show_bug.cgi?id=720389
+
+2013-12-15 21:01:42 -0800  Todd Agulnick <todd@agulnick.com>
+
+	* gst-libs/gst/audio/audio-format.c:
+	* sys/xvimage/xvimagesink.c:
+	  Some compiler warning fixes to satisfy XCode compiler
+	  https://bugzilla.gnome.org/show_bug.cgi?id=720513
+
 2013-12-16 11:35:12 +0100  Sebastian Dröge <sebastian@centricular.com>
 
 	* gst-libs/gst/tag/gstvorbistag.c:
@@ -671,17 +2527,172 @@
 	* gst-libs/gst/video/gstvideodecoder.c:
 	  videodecoder: gst_video_decoder_release_frame() is available since 1.2.2
 
+2013-12-13 10:06:25 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* tools/gst-play.c:
+	  tools: play: allow parse-launch strings for audio and video sink
+
+2013-12-12 13:42:59 +0100  Julien Isorce <julien.isorce@collabora.co.uk>
+
+	* gst-libs/gst/rtp/gstrtpbasepayload.c:
+	  rtpbasepayload: change SSRC on GstRTPCollision event
+	  Change our SSRC and update the caps when we receive a GstRTPCollision
+	  event from downstream.
+	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=711560
+
+2013-12-12 13:06:30 +0100  Julien Isorce <julien.isorce@collabora.co.uk>
+
+	* gst-libs/gst/rtp/gstrtpbasepayload.c:
+	  rtpbasepayload: implement src_event function
+	  Add a srcpad event handler and call the src_event vmethod.
+
+2013-12-11 16:49:35 +0100  Edward Hervey <bilboed@bilboed.com>
+
+	* gst-libs/gst/video/video-format.h:
+	* gst-libs/gst/video/video-info.c:
+	  video: specify/restrict usage of GST_VIDEO_FORMAT_ENCODED
+	  GST_VIDEO_FORMAT_ENCODED was added to support *extracting* video-related
+	  information (like width, height, framerate,...) from caps.
+	  It is __NOT__ intended to be used as a format field on video/x-raw caps.
+
+2013-12-10 00:13:55 +0100  Sebastian Rasmussen <sebras@hotmail.com>
+
+	* tests/check/Makefile.am:
+	* tests/check/libs/rtp-basepayloading.c:
+	  tests: Add test for rtpbasepayload/-depayload
+	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=720162
+
+2013-12-10 00:56:07 +0100  Sebastian Rasmussen <sebras@hotmail.com>
+
+	* gst-libs/gst/rtp/gstrtpbuffer.c:
+	* tests/check/libs/rtp.c:
+	  rtpbuffer: Allow subbuffering of empty buffers
+	  See https://bugzilla.gnome.org/show_bug.cgi?id=720162
+
+2013-12-09 16:34:22 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/video/convertframe.c:
+	  convertframe: Fix indention
+
+2013-12-09 16:33:40 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/video/gstvideoencoder.c:
+	* gst-libs/gst/video/gstvideoencoder.h:
+	  videoencoder: Add sink_query() src_query() virtual functions
+	  Based on the videodecoder change by Nicolas Dufresne and applied
+	  here for consistency.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=720103
+
+2013-11-27 16:39:52 -0500  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* gst-libs/gst/video/gstvideodecoder.c:
+	* gst-libs/gst/video/gstvideodecoder.h:
+	  videodecoder: Add sink_query() src_query() virtual
+	  https://bugzilla.gnome.org/show_bug.cgi?id=720103
+
+2013-12-09 13:55:28 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* tools/gst-play-kb.c:
+	  tools: play: fix compiler warning on windows
+
+2013-12-06 19:27:04 -0500  Olivier Crête <olivier.crete@collabora.com>
+
+	* gst-libs/gst/video/gstvideoutils.h:
+	  videocodecframe: Correct function name in doc
+
+2013-12-06 16:23:46 -0500  Olivier Crête <olivier.crete@collabora.com>
+
+	* docs/libs/gst-plugins-base-libs-sections.txt:
+	* gst-libs/gst/video/gstvideoencoder.h:
+	  videoencoder: Remove gst_video_encoder_set/get_discont
+	  They've never existed outside the header file.
+
+2013-12-04 01:08:13 +0100  Sebastian Rasmussen <sebras@hotmail.com>
+
+	* docs/design/Makefile.am:
+	  docs: add missing files for distribution
+	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=720015
+
+2013-12-05 16:17:22 +0100  Wim Taymans <wtaymans@redhat.com>
+
+	* gst-libs/gst/audio/gstaudiobasesink.c:
+	  audiobasesink: handle the RESYNC flag
+	  Also resync when a buffer with the RESYNC flag is seen.
+
+2013-12-05 14:39:57 +0000  Julien Isorce <julien.isorce@collabora.co.uk>
+
+	* gst-libs/gst/audio/gstaudiodecoder.c:
+	* gst-libs/gst/audio/gstaudioencoder.c:
+	  audiodec/enc: clear reconfigure flag if negotiate succeeds
+	  So that it avoids to send an allocation query twice.
+	  One from an early call to gst_audio_encoder_negotiate from a
+	  subclass, then one from gst_audio_encoder_allocate_output_buffer.
+	  Which means that previously gst_audio_encoder_negotiate was not
+	  clearing the GST_PAD_FLAG_NEED_RECONFIGURE even on success.
+	  Fixes bug https://bugzilla.gnome.org/show_bug.cgi?id=719684
+
+2013-12-05 14:31:25 +0000  Julien Isorce <julien.isorce@collabora.co.uk>
+
+	* gst-libs/gst/video/gstvideodecoder.c:
+	* gst-libs/gst/video/gstvideoencoder.c:
+	  videodec/enc: clear reconfigure flag if negotiate succeeds
+	  So that it avoids to send an allocation query twice.
+	  One from an early call to gst_video_encoder_negotiate from a
+	  subclass, then one from gst_video_encoder_allocate_output_frame.
+	  Which means that previously gst_video_encoder_negotiate was not
+	  clearing the GST_PAD_FLAG_NEED_RECONFIGURE even on success.
+	  Fixes bug https://bugzilla.gnome.org/show_bug.cgi?id=719684
+
+2013-12-05 11:39:07 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/theora/gsttheoradec.c:
+	  theoradec: Use new gst_video_decoder_set_needs_format() API
+
+2013-12-05 11:37:09 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/audio/gstaudiodecoder.c:
+	  audiodecoder: Use FALSE instead of 0
+
+2013-12-05 11:34:36 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* docs/libs/gst-plugins-base-libs-sections.txt:
+	* gst-libs/gst/video/gstvideodecoder.c:
+	* gst-libs/gst/video/gstvideodecoder.h:
+	* win32/common/libgstvideo.def:
+	  videodecoder: Add API to allow subclasses to specify that they needs caps before any buffers
+
+2013-12-05 11:25:47 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/video/gstvideoencoder.c:
+	  videoencoder: Return not-negotiated if we don't have caps when the first buffer arrives
+	  Otherwise things like filesrc ! jpegenc ! fakesink just crash with
+	  a segmentation fault because subclasses expect caps to be there.
+
+2013-12-04 19:24:08 +0100  Mark Nauwelaerts <mnauw@users.sourceforge.net>
+
+	* gst-libs/gst/audio/gstaudiodecoder.c:
+	  audiodecoder: no fallback to segment start for reverse playback
+	  See https://bugzilla.gnome.org/show_bug.cgi?id=709965
+
+2013-12-05 00:27:14 +0900  Justin Joy <justin.joy.9to5@gmail.com>
+
+	* gst-libs/gst/video/convertframe.c:
+	  convertframe: Fix trivial memory leak in debug statement
+	  gst_element_get_name() requires the caller to g_free() the return value
+	  https://bugzilla.gnome.org/show_bug.cgi?id=719850
+
+2013-12-02 20:35:04 +0100  Mark Nauwelaerts <mnauw@users.sourceforge.net>
+
+	* gst-libs/gst/audio/gstaudiodecoder.c:
+	  audiodecoder: use segment start as fallback ts if no other available
+	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=709965
+
 2013-12-01 12:37:52 +0100  Mark Nauwelaerts <mnauw@users.sourceforge.net>
 
 	* docs/libs/gst-plugins-base-libs-sections.txt:
 	* win32/common/libgstvideo.def:
 	  videodecoder: add new API to docs and defs
 
-2013-11-26 20:51:58 +0100  Mark Nauwelaerts <mnauw@users.sourceforge.net>
-
-	* gst-libs/gst/video/gstvideodecoder.c:
-	  videodecoder: fix spelling error in debug message
-
 2013-11-26 20:50:33 +0100  Mark Nauwelaerts <mnauw@users.sourceforge.net>
 
 	* gst-libs/gst/video/gstvideodecoder.c:
@@ -693,36 +2704,21 @@
 	  been called for the frame in question.
 	  See https://bugzilla.gnome.org/show_bug.cgi?id=693772
 
-2013-12-05 00:27:14 +0900  Justin Joy <justin.joy.9to5@gmail.com>
+2013-11-26 20:51:58 +0100  Mark Nauwelaerts <mnauw@users.sourceforge.net>
 
-	* gst-libs/gst/video/convertframe.c:
-	  convertframe: Fix trivial memory leak in debug statement
-	  gst_element_get_name() requires the caller to g_free() the return value
-	  https://bugzilla.gnome.org/show_bug.cgi?id=719850
-	  convertframe: Fix indention
-
-2013-12-04 19:24:08 +0100  Mark Nauwelaerts <mnauw@users.sourceforge.net>
-
-	* gst-libs/gst/audio/gstaudiodecoder.c:
-	  audiodecoder: no fallback to segment start for reverse playback
-	  See https://bugzilla.gnome.org/show_bug.cgi?id=709965
-
-2013-12-02 20:35:04 +0100  Mark Nauwelaerts <mnauw@users.sourceforge.net>
-
-	* gst-libs/gst/audio/gstaudiodecoder.c:
-	  audiodecoder: use segment start as fallback ts if no other available
-	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=709965
-
-2013-11-29 17:26:13 +0100  Wim Taymans <wtaymans@redhat.com>
-
-	* gst/playback/gstdecodebin2.c:
-	  decodebin2: copy sticky events
+	* gst-libs/gst/video/gstvideodecoder.c:
+	  videodecoder: fix spelling error in debug message
 
 2013-11-29 17:30:09 +0100  Wim Taymans <wtaymans@redhat.com>
 
 	* gst/playback/gsturidecodebin.c:
 	  uridecodebin: copy sticky events
 
+2013-11-29 17:26:13 +0100  Wim Taymans <wtaymans@redhat.com>
+
+	* gst/playback/gstdecodebin2.c:
+	  decodebin2: copy sticky events
+
 2013-11-29 13:32:55 +0100  Sebastian Dröge <sebastian@centricular.com>
 
 	* ext/theora/gsttheoraparse.c:
@@ -730,6 +2726,11 @@
 	  Send CAPS event before any SEGMENT events or any other events
 	  that must come in order after the CAPS event.
 
+2013-11-29 09:04:20 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* tools/gst-play.c:
+	  tools: gst-play: quit on Q or Esc key
+
 2013-11-28 16:22:01 +0000  Tim-Philipp Müller <tim@centricular.com>
 
 	* gst/tcp/gsttcpserversink.c:
@@ -744,11 +2745,34 @@
 	  Activate the decodebin2 pad before setting the target. This makes sure
 	  that the events are copied.
 
-2013-11-21 21:33:59 +0100  Mark Nauwelaerts <mnauw@users.sourceforge.net>
+2013-11-21 22:54:42 +1100  Matthew Waters <ystreet00@gmail.com>
 
-	* gst-libs/gst/video/gstvideodecoder.c:
-	  videodecoder: avoid descending output timestamps
-	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=712796
+	* docs/libs/gst-plugins-base-libs-sections.txt:
+	* gst-libs/gst/video/gstvideometa.h:
+	  videometa: add GstVideoGLTextureUploadMeta buffer pool option
+	  allows configuration of whether GstVideoGLTextureUploadMeta is
+	  added to buffers resulting from a buffer pool.  This is sperate
+	  to the caps feature in that an element may want to add the upload
+	  meta itself rather than allowing the buffer pool to.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=712798
+
+2013-11-26 12:29:30 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/audio/gstaudiodecoder.c:
+	  audiodecoder: error out if no frames are decoded before eos
+	  Raise an error in case no frames are decoded before EOS and we
+	  have input, meaning that data was received but it was somehow invalid.
+	  Based on the videodecoder change, merged here for consistency.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=711094
+
+2013-11-26 12:20:33 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/audio/gstaudiodecoder.c:
+	  audiodecoder: Allow using -1 for infinite tolerated errors
+	  Allows using -1 to make audiodecoder never post an error message
+	  after decoding errors.
+	  Based on the videodecoder change, merged here for consistency.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=711094
 
 2013-11-26 12:03:24 +0100  Sebastian Dröge <sebastian@centricular.com>
 
@@ -756,6 +2780,73 @@
 	  playsink: Fix visualizations if no visualization plugin was set
 	  https://bugzilla.gnome.org/show_bug.cgi?id=712280
 
+2013-10-29 14:40:23 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
+
+	* gst-libs/gst/video/gstvideodecoder.c:
+	  videodecoder: error out if no frames are decoded before eos
+	  Raise an error in case no frames are decoded before EOS and we
+	  have input, meaning that data was received but it was somehow invalid.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=711094
+
+2013-10-29 14:11:51 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
+
+	* gst-libs/gst/video/gstvideodecoder.c:
+	  videodecoder: allow using -1 for infinite tolerated errors
+	  Allows using -1 to make videodecoder never post an error message
+	  after decoding errors.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=711094
+
+2013-11-24 14:38:25 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* tools/gst-play-kb.h:
+	* tools/gst-play.c:
+	  tools: play: implement seeking via console in interactive mode
+	  Arrow left and right to seek back of forward.
+
+2013-11-24 14:33:24 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* tools/gst-play.c:
+	  tools: play: fix endless loop on unhandled keys
+	  When debugging output is not enabled.
+
+2013-11-24 13:49:04 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* tools/gst-play.c:
+	  tools: play: add keyboard controls for next/previous item in list
+	  Make the '>' and '<' keys skip to the next or previous item in
+	  the playlist.
+
+2013-11-24 01:08:48 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* tools/Makefile.am:
+	* tools/gst-play-kb.c:
+	* tools/gst-play-kb.h:
+	* tools/gst-play.c:
+	  tools: play: add --interactive switch and basic keyboard handling
+	  Only pause/play with spacebar for now.
+
+2013-11-23 11:25:28 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/typefind/gsttypefindfunctions.c:
+	  typefind: Add typefinder for OpenEXR
+
+2013-11-21 21:33:59 +0100  Mark Nauwelaerts <mnauw@users.sourceforge.net>
+
+	* gst-libs/gst/video/gstvideodecoder.c:
+	  videodecoder: avoid descending output timestamps
+	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=712796
+
+2013-11-22 21:00:21 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* tools/gst-play.c:
+	  tools: play: add --shuffle command line option
+
+2013-11-21 16:34:25 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* tests/check/elements/subparse.c:
+	  tests: add unit test for samiparser issue
+	  https://bugzilla.gnome.org/show_bug.cgi?id=712805
+
 2013-11-21 22:04:46 +0900  Jihyun Cho <jihyun.jo@gmail.com>
 
 	* gst/subparse/samiparse.c:
@@ -786,6 +2877,41 @@
 	  destroyed by returning FALSE from the timeout callback. Also return
 	  FALSE from the bus watches when we don't want to be called any more.
 
+2013-11-16 13:06:37 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* ext/cdparanoia/gstcdparanoiasrc.c:
+	* ext/pango/gstbasetextoverlay.c:
+	* ext/theora/gsttheoraparse.c:
+	* gst/app/gstapp.c:
+	* gst/audiorate/gstaudiorate.c:
+	* gst/gio/gstgiosink.c:
+	* gst/gio/gstgiosrc.c:
+	* gst/playback/gstdecodebin2.c:
+	* gst/playback/gstplaybin2.c:
+	* gst/playback/gstplaysink.c:
+	* gst/tcp/gstmultifdsink.c:
+	* gst/tcp/gstmultihandlesink.c:
+	* gst/tcp/gstmultioutputsink.c:
+	* gst/tcp/gstmultisocketsink.c:
+	* gst/videorate/gstvideorate.c:
+	* sys/ximage/ximagesink.c:
+	* sys/xvimage/xvimagesink.c:
+	  docs: remove old 0.10 Since markers
+	  They're just confusing.
+
+2013-11-16 12:29:04 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst-libs/gst/rtsp/gstrtspconnection.c:
+	* gst-libs/gst/rtsp/gstrtspdefs.c:
+	* gst-libs/gst/rtsp/gstrtsprange.c:
+	* gst-libs/gst/rtsp/gstrtsprange.h:
+	  docs: cosmetic since marker fixes
+
+2013-11-16 15:24:48 +0100  Mark Nauwelaerts <mnauw@users.sourceforge.net>
+
+	* gst-libs/gst/audio/gstaudioencoder.c:
+	  audioencoder: also set output buffer DTS
+
 2013-11-14 01:53:31 -0300  Reynaldo H. Verdejo Pinochet <r.verdejo@sisa.samsung.com>
 
 	* gst/typefind/gsttypefindfunctions.c:
@@ -811,135 +2937,17 @@
 	  to_push list, otherwise thread might check the final
 	  to_push->next node only after we've freed it already.
 
-=== release 1.2.1 ===
+2013-11-11 14:10:53 +0200  Sreerenj Balachandran <sreerenj.balachandran@intel.com>
 
-2013-11-09 12:15:57 +0100  Sebastian Dröge <sebastian@centricular.com>
-
-	* ChangeLog:
-	* NEWS:
-	* RELEASE:
-	* configure.ac:
-	* docs/plugins/inspect/plugin-adder.xml:
-	* docs/plugins/inspect/plugin-alsa.xml:
-	* docs/plugins/inspect/plugin-app.xml:
-	* docs/plugins/inspect/plugin-audioconvert.xml:
-	* docs/plugins/inspect/plugin-audiorate.xml:
-	* docs/plugins/inspect/plugin-audioresample.xml:
-	* docs/plugins/inspect/plugin-audiotestsrc.xml:
-	* docs/plugins/inspect/plugin-cdparanoia.xml:
-	* docs/plugins/inspect/plugin-encoding.xml:
-	* docs/plugins/inspect/plugin-gio.xml:
-	* docs/plugins/inspect/plugin-ivorbisdec.xml:
-	* docs/plugins/inspect/plugin-libvisual.xml:
-	* docs/plugins/inspect/plugin-ogg.xml:
-	* docs/plugins/inspect/plugin-pango.xml:
-	* docs/plugins/inspect/plugin-playback.xml:
-	* docs/plugins/inspect/plugin-subparse.xml:
-	* docs/plugins/inspect/plugin-tcp.xml:
-	* docs/plugins/inspect/plugin-theora.xml:
-	* docs/plugins/inspect/plugin-typefindfunctions.xml:
-	* docs/plugins/inspect/plugin-videoconvert.xml:
-	* docs/plugins/inspect/plugin-videorate.xml:
-	* docs/plugins/inspect/plugin-videoscale.xml:
-	* docs/plugins/inspect/plugin-videotestsrc.xml:
-	* docs/plugins/inspect/plugin-volume.xml:
-	* docs/plugins/inspect/plugin-vorbis.xml:
-	* docs/plugins/inspect/plugin-ximagesink.xml:
-	* docs/plugins/inspect/plugin-xvimagesink.xml:
-	* gst-plugins-base.doap:
-	* win32/common/_stdint.h:
-	* win32/common/config.h:
-	  Release 1.2.1
-
-2013-11-09 12:15:37 +0100  Sebastian Dröge <sebastian@centricular.com>
-
-	* po/af.po:
-	* po/az.po:
-	* po/bg.po:
-	* po/ca.po:
-	* po/cs.po:
-	* po/da.po:
-	* po/de.po:
-	* po/el.po:
-	* po/en_GB.po:
-	* po/eo.po:
-	* po/es.po:
-	* po/eu.po:
-	* po/fi.po:
-	* po/fr.po:
-	* po/gl.po:
-	* po/hr.po:
-	* po/hu.po:
-	* po/id.po:
-	* po/it.po:
-	* po/ja.po:
-	* po/lt.po:
-	* po/lv.po:
-	* po/nb.po:
-	* po/nl.po:
-	* po/or.po:
-	* po/pl.po:
-	* po/pt_BR.po:
-	* po/ro.po:
-	* po/ru.po:
-	* po/sk.po:
-	* po/sl.po:
-	* po/sq.po:
-	* po/sr.po:
-	* po/sv.po:
-	* po/tr.po:
-	* po/uk.po:
-	* po/vi.po:
-	* po/zh_CN.po:
-	  Update .po files
-
-2013-11-09 12:01:11 +0100  Sebastian Dröge <sebastian@centricular.com>
-
-	* po/af.po:
-	* po/az.po:
-	* po/bg.po:
-	* po/ca.po:
-	* po/cs.po:
-	* po/da.po:
-	* po/de.po:
-	* po/el.po:
-	* po/en_GB.po:
-	* po/eo.po:
-	* po/es.po:
-	* po/eu.po:
-	* po/fi.po:
-	* po/fr.po:
-	* po/gl.po:
-	* po/hr.po:
-	* po/hu.po:
-	* po/id.po:
-	* po/it.po:
-	* po/ja.po:
-	* po/lt.po:
-	* po/lv.po:
-	* po/nb.po:
-	* po/nl.po:
-	* po/or.po:
-	* po/pl.po:
-	* po/pt_BR.po:
-	* po/ro.po:
-	* po/ru.po:
-	* po/sk.po:
-	* po/sl.po:
-	* po/sq.po:
-	* po/sr.po:
-	* po/sv.po:
-	* po/tr.po:
-	* po/uk.po:
-	* po/vi.po:
-	* po/zh_CN.po:
-	  po: Update translations
-
-2013-10-16 16:46:05 -0300  Thibault Saunier <thibault.saunier@collabora.com>
-
-	* gst/playback/gstrawcaps.h:
-	  playback: Add subpicture/x-dvb as raw caps
-	  https://bugzilla.gnome.org/show_bug.cgi?id=710325
+	* gst-libs/gst/video/gstvideodecoder.c:
+	  videodecoder: try to negotiate the buffer pool even though there is no o/p format
+	  We could have allocation query before caps event and even without caps inside
+	  the query. In such cases , the downstream can return a bufferpool object with
+	  out actually configuring it. This feature is helpful to negotiate the bufferpool
+	  with out knowing the output video format. For eg: some hardware accelerated
+	  decoders can interpret the o/p video format only after it finishes the decoding
+	  of one buffer at least.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=687183
 
 2013-11-07 15:03:34 +0000  Tom Greenwood <tcdgreenwood@hotmail.com>
 
@@ -947,6 +2955,63 @@
 	  appsrc: Fix deadlock that may occur when multiple threads access appsrc at once
 	  https://bugzilla.gnome.org/show_bug.cgi?id=711550
 
+2013-11-04 09:55:17 +0100  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* gst-libs/gst/tag/gsttagdemux.c:
+	  tagdemux: accumulate buffers in adapter
+	  Accumulate buffers in an adapter instead of appending them because append causes
+	  a lot of memcpys.
+	  Keep track of the last tagsize and accumulate enough data before attempting to
+	  parse more data.
+	  This patch implements a minimal amount of changes in order to not change the
+	  behaviour. We should really rewrite the tag handling and trimming using
+	  the adapter API instead of merging and trimming into a buffer.
+
+2013-11-06 12:16:31 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* tests/check/elements/adder.c:
+	  adder: Free consistency checker instance in test_live_seeking test
+
+2013-11-06 12:01:14 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* tests/check/elements/adder.c:
+	  adder: Release some request pads properly in the unit test
+
+2013-11-05 11:18:01 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* common:
+	  Automatic update of common submodule
+	  From 865aa20 to dbedaa0
+
+2013-11-04 11:34:38 +0100  Alessandro Decina <alessandro.d@gmail.com>
+
+	* tools/gst-discoverer.c:
+	  discoverer: fix build after last commit
+	  Add a forward declaration for my_g_string_append_printf that specifies
+	  G_GNUC_PRINTF. Turn off indent on it as it drives gst-indent crazy.
+
+2013-11-04 11:17:30 +0100  Alessandro Decina <alessandro.d@gmail.com>
+
+	* tools/gst-discoverer.c:
+	  discoverer: fix -Wformat-nonliteral warning
+
+2013-11-03 15:57:54 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* tests/check/libs/audio.c:
+	  audio: Add unit test for filling memory with silence samples
+
+2013-11-03 12:23:12 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/audio/gstaudiopack-dist.c:
+	* gst-libs/gst/audio/gstaudiopack-dist.h:
+	  audio: Update ORC dist files
+
+2013-11-03 12:22:33 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/audio/audio-format.c:
+	* gst-libs/gst/audio/gstaudiopack.orc:
+	  audio-format: Use ORC for filling memory with silence samples
+
 2013-11-01 17:02:22 +0100  Sebastian Dröge <sebastian@centricular.com>
 
 	* docs/libs/gst-plugins-base-libs-sections.txt:
@@ -969,6 +3034,18 @@
 	  A getter is also available, gst_rtsp_connection_get_tls_validation_flags().
 	  https://bugzilla.gnome.org/show_bug.cgi?id=711231
 
+2013-11-01 14:22:13 +0000  Matthieu Bouron <matthieu.bouron@collabora.com>
+
+	* gst-libs/gst/sdp/gstsdpmessage.c:
+	  sdp: fix duplicate 'const' declaration warnings
+	  https://bugzilla.gnome.org/show_bug.cgi?id=711258
+
+2013-10-16 16:46:05 -0300  Thibault Saunier <thibault.saunier@collabora.com>
+
+	* gst/playback/gstrawcaps.h:
+	  playback: Add subpicture/x-dvb as raw caps
+	  https://bugzilla.gnome.org/show_bug.cgi?id=710325
+
 2013-10-28 12:36:04 +0100  Antonio Ospite <ospite@studenti.unina.it>
 
 	* gst/videoscale/gstvideoscale.c:
@@ -977,15 +3054,11 @@
 	  and fill them to black.
 	  https://bugzilla.gnome.org/show_bug.cgi?id=711003
 
-2013-10-07 22:51:04 +0200  Stefan Sauer <ensonic@users.sf.net>
+2013-10-23 16:43:32 +0100  Matthieu Bouron <matthieu.bouron@gmail.com>
 
-	* gst-libs/gst/pbutils/gstdiscoverer.c:
-	  discoverer: early return when we have no streams
-
-2013-10-07 22:51:46 +0200  Stefan Sauer <ensonic@users.sf.net>
-
-	* gst-libs/gst/pbutils/gstdiscoverer.c:
-	  discoverer: don't shadow local variables
+	* gst/videoconvert/videoconvert.c:
+	  videoconvert: remove unneeded guint comparaison
+	  https://bugzilla.gnome.org/show_bug.cgi?id=710760
 
 2013-10-14 18:45:16 +0200  Stefan Sauer <ensonic@users.sf.net>
 
@@ -993,14 +3066,20 @@
 	  discoverer: also filter 'framed' field when looking for same streams
 	  Fixes extra streams for some mp4 files containing aac audio.
 
-2013-10-07 22:52:27 +0200  Stefan Sauer <ensonic@users.sf.net>
+2013-10-08 21:57:11 +0200  Stefan Sauer <ensonic@users.sf.net>
 
-	* gst-libs/gst/pbutils/gstdiscoverer.c:
-	  discoverer: filter 'parsed' field when checking for same caps
-	  We're checking the caps to see if we got more caps details after a parser got
-	  plugged. This will also have a flipped 'parsed' field. If the field was already
-	  present before the parse the match will fail. Add a function that will do the
-	  check while excluding this field.
+	* ext/ogg/gstoggdemux.c:
+	  oggdemux: fix copy'n'paste in comment
+
+2013-10-10 15:56:32 -0300  Thibault Saunier <thibault.saunier@collabora.com>
+
+	* ext/theora/gsttheoraenc.c:
+	  theoraenc: Do nothing when flushing the encoder when no caps were set
+	  In case we receive a flush event before having our caps set, we will
+	  end up trying to create a theora encoder even though we are not ready.
+	  Avoid that situation making sure we are initialized before accepting to
+	  be flushed.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=709858
 
 2013-10-11 21:51:00 +0200  Stephan Sundermann <stephansundermann@gmail.com>
 
@@ -1008,6 +3087,43 @@
 	  navigation: Add missing out parameter annotations to GstNavigation
 	  https://bugzilla.gnome.org/show_bug.cgi?id=709938
 
+2013-10-10 14:09:19 +0100  Julien Isorce <julien.isorce@collabora.co.uk>
+
+	* tests/examples/overlay/qtgv-videooverlay.cpp:
+	  examples/overlay: handle the case when xvimagesink is not found
+	  So that ximagesink can have a chance to be found.
+	  In qtgv-videooverlay.
+
+2013-10-10 14:01:44 +0100  Julien Isorce <julien.isorce@collabora.co.uk>
+
+	* tests/examples/overlay/gtk-videooverlay.c:
+	* tests/examples/overlay/qt-videooverlay.cpp:
+	  examples/overlay: unref sink only when found
+	  In gtk-videooverlay and qt-videooverlay examples.
+
+2013-10-07 14:52:00 -0300  Thibault Saunier <thibault.saunier@collabora.com>
+
+	* gst-libs/gst/pbutils/encoding-profile.c:
+	* gst/encoding/gstencodebin.c:
+	  encodebin: Handle changes in encoding_profile::restriction during playback
+	  There are cases where we want to change the restrictions caps during
+	  playback, handle that in encodebin.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=709588
+
+2013-10-08 17:07:02 +0200  Takashi Iwai <tiwai@suse.de>
+
+	* ext/alsa/gstalsa.c:
+	* ext/alsa/gstalsa.h:
+	* ext/alsa/gstalsasink.c:
+	* ext/alsa/gstalsasrc.c:
+	  alsa: Add channel map API support
+	  The initial support for the new ALSA chmap API.
+	  Just translate the current chmap to GstAudioChannelPosition during the
+	  setup.  No function to specify the channel map manually yet, so still
+	  impossible to assign any non-standard positions or to configure in a
+	  different order even if the hardware allows.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=709755
+
 2013-10-08 16:02:46 +0200  Takashi Iwai <tiwai@suse.de>
 
 	* gst-libs/gst/audio/gstaudioringbuffer.c:
@@ -1020,34 +3136,21 @@
 	  Move the flag clearance after the check.
 	  https://bugzilla.gnome.org/show_bug.cgi?id=709754
 
-2013-10-08 09:13:50 +0200  Stefan Sauer <ensonic@users.sf.net>
-
-	* gst-libs/gst/video/gstvideodecoder.c:
-	  videodecoder: don't overflow in bytes<->time conversion
-	  fps_n and _d values can be large and this can overflow a uint. Also fix
-	  copy'n'paste mistake in comments.
-
-2013-10-04 13:57:51 +0200  Matej Knopp <matej.knopp@gmail.com>
-
-	* gst/audioconvert/gstaudioconvert.c:
-	  audioconvert: Map buffer as READWRITE if the buffer and memory is writable
-	  and only use the input buffer as temporary buffer in that case.
-	  https://bugzilla.gnome.org/show_bug.cgi?id=709408
-
-2013-10-02 15:02:44 +0200  Sebastian Dröge <slomo@circular-chaos.org>
-
-	* gst/playback/gstplaysink.c:
-	  playsink: If the visualisation is changing and reconfiguration is pending, do it all during reconfiguration
-	  Otherwise we will have two pad blocks that want to use the same mutex
-	  and block each other via the streamlock.
-	  https://bugzilla.gnome.org/show_bug.cgi?id=709210
-
 2013-10-08 16:13:58 -0300  Thiago Santos <ts.santos@partner.samsung.com>
 
 	* tests/check/elements/videotestsrc.c:
 	  videotestsrc: improve test for backwards playback
 	  Improve test by checking that timestamps are decreasing
 
+2013-10-08 16:10:54 -0300  Thiago Santos <ts.santos@partner.samsung.com>
+
+	* gst/videotestsrc/gstvideotestsrc.c:
+	* tests/check/elements/videotestsrc.c:
+	  videotestsrc: implement duration query
+	  Add duration query to videotestsrc, it can answer this query when
+	  the num-buffers property is set.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=709646
+
 2013-06-07 16:32:23 -0400  Thibault Saunier <thibault.saunier@collabora.com>
 
 	* tests/check/elements/videotestsrc.c:
@@ -1063,6 +3166,107 @@
 	  have timestamps and offsets reducing instead of increasing
 	  https://bugzilla.gnome.org/show_bug.cgi?id=701813
 
+2013-10-08 09:13:50 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* gst-libs/gst/video/gstvideodecoder.c:
+	  videodecoder: don't overflow in bytes<->time conversion
+	  fps_n and _d values can be large and this can overflow a uint. Also fix
+	  copy'n'paste mistake in comments.
+
+2013-10-07 22:52:27 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* gst-libs/gst/pbutils/gstdiscoverer.c:
+	  discoverer: filter 'parsed' field when checking for same caps
+	  We're checking the caps to see if we got more caps details after a parser got
+	  plugged. This will also have a flipped 'parsed' field. If the field was already
+	  present before the parse the match will fail. Add a function that will do the
+	  check while excluding this field.
+
+2013-10-07 22:51:46 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* gst-libs/gst/pbutils/gstdiscoverer.c:
+	  discoverer: don't shadow local variables
+
+2013-10-07 22:51:04 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* gst-libs/gst/pbutils/gstdiscoverer.c:
+	  discoverer: early return when we have no streams
+
+2013-10-07 22:49:52 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* gst-libs/gst/pbutils/gstdiscoverer.c:
+	  discoverer: also log stream-id
+
+2013-10-07 18:53:18 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* gst-libs/gst/pbutils/gstdiscoverer.c:
+	  discoverer: fix quark-mismatch for toc and stream-id
+	  Seems like a copy'n'paste from 15ee41df.
+
+2013-10-05 21:01:53 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* gst-libs/gst/pbutils/gstdiscoverer.c:
+	  discoverer: report depth for video
+	  This was returning 0 in all cases. Use the data from GstVideoFormatInfo instead.
+
+2013-10-04 13:57:51 +0200  Matej Knopp <matej.knopp@gmail.com>
+
+	* gst/audioconvert/gstaudioconvert.c:
+	  audioconvert: Map buffer as READWRITE if the buffer and memory is writable
+	  and only use the input buffer as temporary buffer in that case.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=709408
+
+2013-09-30 21:46:10 +0200  Hans Månsson <hansm@axis.com>
+
+	* gst-libs/gst/rtsp/gstrtspconnection.c:
+	  rtspconnection: Connect to proxy if specified
+	  Reference: https://bugzilla.gnome.org/show_bug.cgi?id=708880
+
+2013-10-03 19:52:58 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* tools/gst-discoverer.c:
+	  discoverer: extract helper to print common stream info
+	  Save some lnes of code by using a helper for common stream info.
+
+2013-10-02 11:27:41 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* gst-libs/gst/pbutils/gstdiscoverer.c:
+	  discoverer: extract some common code
+	  Extract code to make a GstDiscovererInfo. Extracts code that sets StreamInfo.
+
+2013-10-02 15:02:44 +0200  Sebastian Dröge <slomo@circular-chaos.org>
+
+	* gst/playback/gstplaysink.c:
+	  playsink: If the visualisation is changing and reconfiguration is pending, do it all during reconfiguration
+	  Otherwise we will have two pad blocks that want to use the same mutex
+	  and block each other via the streamlock.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=709210
+
+2013-10-02 13:06:03 +0200  Edward Hervey <edward@collabora.com>
+
+	* win32/common/libgstpbutils.def:
+	  win32: Update defs file
+
+2013-10-02 12:26:59 +0300  Sreerenj Balachandran <sreerenj.balachandran@intel.com>
+
+	* docs/libs/gst-plugins-base-libs-sections.txt:
+	* gst-libs/gst/pbutils/codec-utils.c:
+	* gst-libs/gst/pbutils/codec-utils.h:
+	* win32/common/libgstpbutils.def:
+	  pbutils: Add codec-utility funtions to support H265
+	  https://bugzilla.gnome.org/show_bug.cgi?id=708921
+
+2013-10-01 23:17:06 +0200  Sebastian Dröge <slomo@circular-chaos.org>
+
+	* gst-libs/gst/pbutils/descriptions.c:
+	  descriptions: Add description for H.265
+
+2013-09-24 15:51:46 +0300  Sreerenj Balachandran <sreerenj.balachandran@intel.com>
+
+	* gst/typefind/gsttypefindfunctions.c:
+	  typefind: Add typefind function for H265
+	  https://bugzilla.gnome.org/show_bug.cgi?id=708680
+
 2013-09-24 16:47:52 -0700  Thiago Santos <ts.santos@partner.samsung.com>
 
 	* gst/playback/gstplaybin2.c:
@@ -1074,11 +3278,27 @@
 	  Prevent this by always forcing them to NULL when deactivating a group
 	  https://bugzilla.gnome.org/show_bug.cgi?id=708789
 
-2013-09-30 21:46:10 +0200  Hans Månsson <hansm@axis.com>
+2013-09-28 13:19:02 +0200  Johannes Dewender <gnome@JonnyJD.net>
 
-	* gst-libs/gst/rtsp/gstrtspconnection.c:
-	  rtspconnection: Connect to proxy if specified
-	  Reference: https://bugzilla.gnome.org/show_bug.cgi?id=708880
+	* gst-libs/gst/audio/gstaudiocdsrc.c:
+	  audiocdsrc: Don't consider trailing data tracks for MusicBrainz disc id calculation
+	  MusicBrainz removes trailing data tracks from releases on the server
+	  and also for the calculation of the MusicBrainz Disc ID.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=708991
+
+2013-09-23 11:35:43 +0200  David Svensson Fors <davidsf@axis.com>
+
+	* gst-libs/gst/audio/gstaudioringbuffer.c:
+	  audioringbuffer: check if acquired in set_timestamp
+	  Also use GST_OBJECT_LOCK when accessing object data in set_timestamp.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=702230
+
+2013-09-15 21:48:43 +0200  MathieuDuponchelle <mathieu.duponchelle@epitech.eu>
+
+	* gst/adder/gstadder.c:
+	  adder: Don't take channel mask in consideration in mono or stereo
+	  This could cause negotiation to fail.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=708633
 
 2013-09-27 22:41:28 +0200  Matej Knopp <matej.knopp@gmail.com>
 
@@ -1104,6 +3324,20 @@
 	  pbutils: add MPEG 2 AAC description
 	  https://bugzilla.gnome.org/show_bug.cgi?id=708773
 
+2013-09-25 15:17:32 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* gst-libs/gst/audio/gstaudiobasesink.c:
+	  audiobasesink: do big correction for large drift
+	  If we are using skew slaving and we drift more than twice the allowed amount, do
+	  a big correction to get back on track more quickly.
+
+2013-09-24 18:28:57 +0100  Tim-Philipp Müller <tim@centricular.net>
+
+	* README:
+	* common:
+	  Automatic update of common submodule
+	  From 6b03ba7 to 865aa20
+
 2013-09-24 16:26:37 +0200  Ognyan Tonchev <ognyan@axis.com>
 
 	* gst-libs/gst/rtsp/gstrtspconnection.c:
@@ -1112,12 +3346,15 @@
 	  and should be unset after freeing the stream.
 	  https://bugzilla.gnome.org/show_bug.cgi?id=708689
 
-2013-09-24 17:24:05 +0100  Tim-Philipp Müller <tim@centricular.net>
+2013-09-24 15:05:21 +0200  Sebastian Dröge <slomo@circular-chaos.org>
 
-	* README:
-	* common:
-	  Automatic update of common submodule
-	  From 6b03ba7 to 7412249
+	* configure.ac:
+	  configure: Actually use 1.3.0.1 as version to make configure happy
+
+2013-09-24 15:00:20 +0200  Sebastian Dröge <slomo@circular-chaos.org>
+
+	* configure.ac:
+	  Back to development
 
 === release 1.2.0 ===
 
diff --git a/Makefile.in b/Makefile.in
index 25ee26a..6a4d8c0 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -104,7 +104,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -436,9 +435,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/NEWS b/NEWS
index 00a7b6e..35e0fc0 100644
--- a/NEWS
+++ b/NEWS
@@ -1,2 +1,110 @@
-This is GStreamer Base Plugins 1.2.4
+This is GStreamer Base Plugins 1.3.1
+
+Changes since 1.2:
+
+New API:
+ • GstMessageType has GST_MESSAGE_EXTENDED added. All types before
+   that can be used together as a flags type as before, but from
+   that message onwards the types are just counted incrementally.
+   This was necessary to be able to add more message types.
+   In 2.0 GstMessageType will just become an enum and not a flags
+   type anymore.
+ • GstDeviceMonitor for device probing, e.g. to list all available
+   audio or video capture devices. This is the replacement for
+   GstPropertyProbe from 0.10.
+ • Events accumulate the running-time offset now when travelling
+   through pads, as set by the gst_pad_set_offset() function. This
+   allows to compensate for this in the QOS event for example.
+ • GstBuffer has a new flag "tag-memory" that is set automatically
+   when memory is added or removed to a buffer. This allows buffer
+   pools to detect if they can recycle a buffer or need to reset
+   it first.
+ • GstToc has new API to mark GstTocEntries as loops.
+ • A not-authorized resource error has been defined to notify
+   applications that accessing the resource has failed because
+   of missing authorization and to distinguish this case from others.
+   This change is actually already in 1.2.4.
+ • GstPad has a new flag "accept-intersect", that will let the default
+   ACCEPT_CAPS query handler do an intersection instead of subset check.
+   This is interesting for parser elements that can handle incomplete
+   caps.
+ • GstCollectPads has support for flushing and a default handler for
+   SEEK events now.
+ • GstSegment has new API to offset the running time by a specific
+   value and this is used in GstPad to allow positive and negative
+   offsets in gst_pad_set_offset() in all situations.
+ • Support for h265/HEVC and VP8 has been added to the codec utils and codec
+   parsers library, and was integrated into various elements.
+ • API for adjusting the TLS validation of RTSP connection has been added.
+ • The RTSP and SDP library has MIKEY (RFC 3830) support now, and
+   there is API to distinguish between the different RTSP profiles.
+ • API to access RTP time information and statistics.
+ • Support for auxiliary streams was added to rtpbin.
+ • Support for tiled, raw video formats has been added.
+ • GstVideoDecoder and GstAudioDecoder have API to help aggregating tag
+   events and merge custom tags into them consistently.
+ • playbin/playsink has support for application provided audio and video
+   filters.
+ • The GL library was merged from gst-plugins-gl to gst-plugins-bad,
+   providing a generic infrastructure for handling GL inside GStreamer
+   pipelines and a plugin with some elements using these, especially
+   a video sink. Supported platforms currently are Android, Cocoa (OS X),
+   DispManX (Raspberry Pi), EAGL (iOS), WGL (Windows) and generic X11,
+   Wayland and EGL platforms.
+   This replaces eglglessink and also is supposed to replace osxvideosink.
+
+
+Major changes:
+ • New plugins and elements:
+   ∘ v4l2videodec element for accessing hardware codecs on
+     platforms that make them accessible via V4L2, e.g.
+     Samsung Exynos. This comes together with major refactoring
+     of the existing V4L2 elements and the corresponding
+     infrastructure.
+     The v4l2videodec element replaces the mfcdec element.
+   ∘ rtpstreampay and rtpstreamdepay elements for transmitting
+     RTP packets over a stream API (e.g. TCP) according to
+     RFC 4571.
+   ∘ rtprtx elements for standard compliant implementation of
+     retransmissions, integrated into the rtpmanager plugin.
+   ∘ audiomixer element that mixes multiple audio streams together
+     into a single one while keeping synchronization. This is
+     planned to become the replacement of the adder element.
+   ∘ OpenNI2 plugin for 3D cameras like the Kinect camera.
+   ∘ OpenEXR plugin for decoding high-dynamic-range EXR images.
+   ∘ curlsshsink and curlsftpsink to write files via SSH/SFTP.
+   ∘ videosignal, ivfparse and sndfile plugins ported from 0.10.
+   ∘ avfvideosrc, vtdec and other elements were ported from 0.10 and
+     are available on OS X and iOS now.
+
+ • Other changes:
+   ∘ gst-libav now uses libav 10, and gained support for H265/HEVC.
+   ∘ Support for hardware codecs and special memory types has been
+     improved with bugfixes and feature additions in various plugins
+     and base classes.
+   ∘ Various bugfixes and improvements to buffering in queue2 and
+     multiqueue elements.
+   ∘ dvbsrc supports more delivery mechanisms and other features
+     now, including DVB S2 and T2 support.
+   ∘ The MPEGTS library has support for many more descriptors.
+   ∘ Major improvements to tsdemux, especially time related.
+   ∘ souphttpsrc now has support for keep-alive connections,
+     compression, configurable number of retries and configuration
+     for SSL certificate validation.
+   ∘ hlsdemux has undergone major refactoring and works more
+     reliable now and supports more HLS features like trick modes.
+     Also fragments are pushed downstream while they're downloaded
+     now instead of waiting for each fragment to finish.
+   ∘ videoflip can automatically flip based on the orientation tag.
+   ∘ openjpeg supports the OpenJPEG2 API.
+   ∘ gst-rtsp-server supports SRTP and MIKEY now.
+   ∘ Lots of fixes for coverity warnings all over the place.
+   ∘ 400+ fixed bug reports, and many other bug fixes and other
+     improvements everywhere that had no bug report.
+
+Things to look out for:
+ • The eglglessink element was removed and replaced by the glimagesink
+   element.
+ • The mfcdec element was removed and replaced by v4l2videodec.
+ • osxvideosink is only available in OS X 10.6 or newer.
 
diff --git a/README b/README
index a8f26f0..da0cab4 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-GStreamer 1.2.x stable series
+GStreamer 1.3.x development series
 
 WHAT IT IS
 ----------
diff --git a/RELEASE b/RELEASE
index e2f745b..4dd1f06 100644
--- a/RELEASE
+++ b/RELEASE
@@ -1,16 +1,28 @@
-
-Release notes for GStreamer Base Plugins 1.2.4
+Release notes for GStreamer Base Plugins 1.3.1
 
 
-The GStreamer team is proud to announce a new bug-fix release
-in the 1.x stable series of the
-core of the GStreamer streaming media framework.
+The GStreamer team is pleased to announce the first release of the unstable
+1.3 release series. The 1.3 release series is adding new features on top of
+the 1.0 and 1.2 series and is part of the API and ABI-stable 1.x release
+series of the GStreamer multimedia framework. The unstable 1.3 release series
+will lead to the stable 1.4 release series in the next weeks, and newly added
+API can still change until that point.
 
 
-The 1.x series is a stable series targeted at end users.
-It is not API or ABI compatible with the stable 0.10.x series.
-It is, however, parallel installable with the 0.10.x series and
-will not affect an existing 0.10.x installation.
+
+Binaries for Android, iOS, Mac OS X and Windows will be provided separately
+during the unstable 1.3 release series.
+
+
+
+The versioning scheme that is used in general is that 1.x.y is API and
+ABI backwards compatible with previous 1.x.y releases. If x is an even
+number it is a stable release series and all releases in this series
+will only contain important bugfixes, e.g. the 1.0 series with 1.0.7. If
+x is odd it is a development release series that will lead to the next
+stable release series 1.x+1 and contains new features and bigger
+changes. During the development release series, new API can still
+change.
 
 
 
@@ -54,22 +66,80 @@
 gst-libav
 contains a set of codecs plugins based on libav (formerly gst-ffmpeg)
 
-
-
-  
-
 Bugs fixed in this release
      
-      * 693263 : typefinding: MPEG-2 video ES detected as H.263
-      * 683504 : playsink: deadlock when disabling subtitles and suboptimal disabling of subtitles
-      * 700770 : typefinding: mp3 file mis-detected as h263 video
-      * 723597 : tagdemux: Seek event in GST_FORMAT_TIME are converted to BYTES to early
-      * 724633 : oggdemux: ignores last page in push mode
-      * 724720 : rtspconnection: not possible to disconnect/reconnect read connection in tunneled mode
-      * 725313 : rtspconnection: closed() callback is never called in tunneled mode
-      * 725644 : typefinding: mp3 file is misdetected as H.263
-      * 726642 : rtspconnection: minor memory leak in error handling
-      * 727025 : adder: rework the logic to check if eos has to be sent.
+      * 684030 : typefinding: mp4 with video and dts ES detected as DTS audio
+      * 725078 : audiobasesink: clip start samples to match clipped timestamp from skew algorithm
+      * 708633 : adder: Should not take channel mask in consideration when in mono or stereo
+      * 540941 : v4l2: RGB32 should be mapped to xRGB instead of RGBx
+      * 646577 : rtppayload: Make RTP time information accessible
+      * 670690 : audioresample: missing configure checks for SSE / SSE2
+      * 678402 : Device discovery/listing replacement for GstPropertyProbe
+      * 678590 : subparse: Add support for LRC subtitles
+      * 679031 : playbin/playsink: Add support for audio and video filters
+      * 687183 : videodecoder: Allow to negotiate a buffer pool before output format is known
+      * 702230 : audioringbuffer: Don't access timestamps array if not acquired
+      * 707361 : video: Add support for 64x32 tiled NV12 color format
+      * 707636 : dashdemux: offline playback not buffering correctly
+      * 708680 : typefind: Add typefind function for H265
+      * 708921 : pbutils: Add codec-utility functions to support h265
+      * 708991 : audiocdsrc: invalid musicbrainz discids because of trailing data tracks
+      * 709588 : encodebin: Handle changes in encoding_profile::restriction during playback
+      * 709646 : videotestsrc: Could implement duration query when num-buffers is set
+      * 709755 : alsa: add channel map API support
+      * 709814 : [examples/overlay] avoid to unref sink if not found. Also fix logic to find a sink in one of the example.
+      * 709858 : theoraenc: Do nothing when flushing the encoder when no caps were set
+      * 710760 : videoconvert: remove unneeded guint comparison
+      * 711094 : videodecoder: improve max-error handling
+      * 711258 : sdp: fix duplicate 'const' declaration warnings
+      * 712798 : videometa: add GstVideoGLTextureUploadMeta buffer pool option
+      * 719383 : rtpbasepayload: Perfect timestamps confusingly explained
+      * 719415 : rtpbasepayload: Expose running time of last processed buffer
+      * 719850 : convertframe: remove trivial memory leak
+      * 719890 : videodecoder: Add API to get the currently pending, parsed frame size
+      * 720103 : videodecoder: Introduce sink_query/src_query
+      * 720124 : tests/examples/overlay/qt-videooverlay.cpp has incorrect include from Qt
+      * 720162 : tests: Add test for rtpbasepayload/-depayload
+      * 720205 : playback: add video/x-raw(ANY) to default raw caps
+      * 720215 : sdp: parse encryption key field
+      * 720219 : rtsptransport: allow getting mime type by profile
+      * 720389 : videodecoder: should release buffer pool sooner
+      * 720810 : audio/video: Initialize all {audio|video}info fields
+      * 720999 : Missing annotation for GstColorBalance interface
+      * 721103 : test-effect-switch errors out with not-negotiated after a while
+      * 721701 : videoconvert: I420 to BGRA conversion is slower than in 0.10
+      * 721953 : pango: basetextoverlay: handle video/x-raw(ANY) if downstream supports the GstVideoOverlayCompositionMeta API
+      * 722330 : streamsplitter: negotiation problems with parsers
+      * 722491 : playbin: remove duplicate assignment
+      * 722682 : oggmux: problems with vp8 stream
+      * 723096 : decodebin: Make it possible to register multiple handlers to decodebin's autoplug-select signal
+      * 723271 : videotestsrc: fix a warning if downstream does not propose a buffer pool
+      * 723328 : gstrtpbase(|de)payload: add more unit tests and fix bugs
+      * 723492 : gst-plugins-base: Do not build check tests for disabled plugins
+      * 723507 : jsseek: Add missing HAVE_X check
+      * 724393 : rtspconnection: allow specifying an anchor certificate database
+      * 724509 : audioconvert: outputs silence when converting certain mono caps to certain other mono caps
+      * 724828 : playbin: improve autoplug_query_caps return
+      * 724893 : playsinkconvertbin: improve gst_play_sink_convert_bin_getcaps return
+      * 725034 : all plugin sets but -base don't install gtk-doc docs without '--enable-gtk-doc'
+      * 725206 : rtspconnection: Missing include file
+      * 725479 : gst-plugins-base: Ignore gcov intermediate files
+      * 725521 : docs: Fix argument and annotation typos, add missing annotations and remove duplicate section
+      * 725658 : Removing some GnomeVFS left bits
+      * 725837 : pango: textoverlay: lot of warnings in debug log with framerate=0/1
+      * 725878 : rtspconnection: headers in GET response not configurable for tunnels
+      * 725898 : Lose data when producing data faster than sendt during tunneling rtps/rtp(TCP)
+      * 726433 : rtspconnection: setsockopt() argument 4 is not properly casted for W32
+      * 726641 : rtspconnection: connection_poll() not working correctly
+      * 727498 : videodecoder: deactivates downstream bufferpool
+      * 728772 : rtspconnection: stuck in teardown
+      * 728845 : gst-play: add option to supply input media-files from a playlist file
+      * 728907 : rtspconnection: add more tests
+      * 729114 : audiodecoder: default caps nego will manually fixate non-mutable caps
+      * 729117 : rtpbuffer: fix memory leak when gst_rtp_buffer_map fails
+      * 729195 : videotestsrc: undefined behaviour in left-shift
+      * 729321 : playbin/subtitleoverlay: Deadlock when changing subtitle track while PAUSED
+      * 704933 : uridecodebin: allow progressive buffering with more media types
 
 ==== Download ====
 
@@ -106,13 +176,63 @@
         
 Contributors to this release
     
+      * Adrien Schwartzentruber
+      * Aleix Conchillo Flaque
+      * Aleix Conchillo Flaqué
+      * Alessandro Decina
+      * Andres Gomez
+      * Antoine Jacoutot
+      * Antonio Ospite
+      * Arun Raghavan
+      * Bastien Nocera
+      * Christian Fredrik Kalager Schaller
+      * David Svensson Fors
+      * Edward Hervey
       * Eric Trousset
+      * George Kiagiadakis
+      * Göran Jönsson
+      * Haakon Sporsheim
+      * Hans Månsson
+      * Holger Kaelberer
       * Jan Schmidt
+      * Jihyun Cho
+      * Johannes Dewender
+      * John Bassett
+      * Josep Torra
+      * Julien Isorce
+      * Justin Joy
+      * Lionel Landwerlin
+      * Luis de Bethencourt
+      * Mark Nauwelaerts
+      * Matej Knopp
       * Mathieu Duponchelle
+      * MathieuDuponchelle
+      * Matthew Waters
+      * Matthieu Bouron
+      * Nicola Murino
+      * Nicolas Dufresne
       * Ognyan Tonchev
+      * Olivier Crête
+      * Rafał Mużyło
+      * Ravi Kiran K N
+      * Reynaldo H. Verdejo Pinochet
       * Sebastian Dröge
+      * Sebastian Rasmussen
+      * Sjoerd Simons
+      * Sreerenj Balachandran
+      * Stefan Sauer
+      * Stephan Sundermann
+      * Stian Selnes
+      * Stéphane Cerveau
+      * Takashi Iwai
       * Thiago Santos
+      * Thibault Saunier
       * Tim-Philipp Müller
+      * Todd Agulnick
+      * Tom Greenwood
       * Vincent Penquerc'h
+      * William Grant
       * Wim Taymans

\ No newline at end of file
+      * Wonchul Lee
+      * Руслан Ижбулатов

diff --git a/REQUIREMENTS b/REQUIREMENTS
index e620fc6..9078d46 100644
--- a/REQUIREMENTS
+++ b/REQUIREMENTS
@@ -68,12 +68,6 @@
 URL:		http://xiph.org/paranoia/
 DebianPackage:	libcdparanoia0-dev
 
-Package:	GnomeVFS
-Version:	>= 2.0 (2.4?)
-Plugins:	gnomevfs (gnomevfssrc)
-URL:		http://www.gnome.org/
-DebianPackage:	libgnomevfs2-dev
-
 Package:	libvisual
 Version:	>= 0.2.0
 Recommended:	0.4.0
diff --git a/aclocal.m4 b/aclocal.m4
index 0fe2ea9..71af660 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1455,7 +1455,6 @@
 m4_include([common/m4/as-auto-alt.m4])
 m4_include([common/m4/as-compiler-flag.m4])
 m4_include([common/m4/as-libtool.m4])
-m4_include([common/m4/as-scrub-include.m4])
 m4_include([common/m4/as-version.m4])
 m4_include([common/m4/ax_create_stdint_h.m4])
 m4_include([common/m4/gst-arch.m4])
diff --git a/autogen.sh b/autogen.sh
index 0841a49..a02e711 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -87,14 +87,8 @@
 toplevel_check $srcfile
 
 # autopoint
-#    first remove patch if necessary, then run autopoint, then reapply
 if test -d po ; then
-  if test -f po/Makefile.in.in;
-  then
-    patch -p0 -R --forward < common/gettext.patch
-  fi
-  tool_run "$autopoint" "--force" "patch -p0 < common/gettext.patch"
-  patch -p0 < common/gettext.patch
+  tool_run "$autopoint" "--force"
 fi
 
 # aclocal
diff --git a/common/Makefile.in b/common/Makefile.in
index 792ca53..09111bb 100644
--- a/common/Makefile.in
+++ b/common/Makefile.in
@@ -86,7 +86,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -399,9 +398,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/common/gst-autogen.sh b/common/gst-autogen.sh
index e54dbcf..78cab66 100644
--- a/common/gst-autogen.sh
+++ b/common/gst-autogen.sh
@@ -29,6 +29,7 @@
 {
   COMMAND=$1
   VARPREFIX=`echo $2 | tr .,- _`
+  local ${VARPREFIX}_VERSION
 
   # strip everything that's not a digit, then use cut to get the first field
   pkg_version=`$COMMAND --version|head -n 1|sed 's/^.*)[^0-9]*//'|cut -d' ' -f1`
diff --git a/common/gst.supp b/common/gst.supp
index 8a3617f..2c60392 100644
--- a/common/gst.supp
+++ b/common/gst.supp
@@ -1298,6 +1298,15 @@
    fun:snd_config_update
 }
 {
+   <alsa leak snd_config_searcha_hooks>
+   Memcheck:Leak
+   fun:*alloc
+   fun:_dl_close_worker
+   ...
+   fun:snd_config_searcha_hooks
+}
+
+{
    <nss lookup within ALSA>
    Memcheck:Leak
    fun:malloc
@@ -2528,41 +2537,13 @@
 }
 
 
-## Leak of property_list in gstffmpegcfg.c
-## This list is created in gst_ffmpegcsp_init(), called from
-## gst_ffmpegenc_register.
-{
-   <insert a suppression name here>
-   Memcheck:Leak
-   fun:malloc
-   fun:g_malloc
-   fun:g_slice_alloc
-   fun:g_datalist_id_set_data_full
-   fun:gst_ffmpeg_cfg_init
-   fun:gst_ffmpegenc_register
-   fun:plugin_init
-}
-{
-   <insert a suppression name here>
-   Memcheck:Leak
-   fun:malloc
-   fun:g_malloc
-   fun:g_slice_alloc
-   fun:g_datalist_id_set_data_full
-   fun:g_param_spec_set_qdata_full
-   fun:gst_ffmpeg_cfg_init
-   fun:gst_ffmpegenc_register
-   fun:plugin_init
-}
-
-
+## Leak of everything allocated by gst-libav plugin init
 {
    <insert_a_suppression_name_here>
    Memcheck:Leak
    fun:*alloc
-   fun:*
+   ...
    fun:gst_ffmpeg_cfg_init
-   fun:gst_ffmpegenc_register
 }
 
 ## Leak of GIO module through gnomevfs
diff --git a/common/gstdoc-scangobj b/common/gstdoc-scangobj
index 09039a5..4ad9786 100755
--- a/common/gstdoc-scangobj
+++ b/common/gstdoc-scangobj
@@ -150,7 +150,18 @@
 #include <stdio.h>
 #include <errno.h>
 
-$includes
+#include <gst/gst.h>
+EOT
+
+if ($includes) {
+    print OUTPUT $includes;
+} else {
+    for (@types) {
+        print OUTPUT "extern GType $_ (void);\n";
+    }
+}
+
+print OUTPUT <<EOT;
 
 #ifdef GTK_IS_WIDGET_CLASS
 #include <gtk/gtkversion.h>
@@ -453,11 +464,8 @@
 static void output_object_args (FILE *fp, GType object_type);
 
 int
-main (int argc, char *argv[])
+main (G_GNUC_UNUSED int argc, G_GNUC_UNUSED char *argv[])
 {
-  /* Silence the compiler: */
-  if (argv != argv) argc = argc;
-
   $TYPE_INIT_FUNC;
 
   get_object_types ();
diff --git a/common/m4/Makefile.am b/common/m4/Makefile.am
index 856d6e3..3d387ee 100644
--- a/common/m4/Makefile.am
+++ b/common/m4/Makefile.am
@@ -9,7 +9,6 @@
 	as-libtool.m4 \
 	as-libtool-tags.m4 \
 	as-python.m4 \
-	as-scrub-include.m4 \
 	as-version.m4 \
 	ax_create_stdint_h.m4 \
 	glib-gettext.m4 \
diff --git a/common/m4/Makefile.in b/common/m4/Makefile.in
index 05e2935..e5d8e47 100644
--- a/common/m4/Makefile.in
+++ b/common/m4/Makefile.in
@@ -85,7 +85,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -338,9 +337,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -442,7 +442,6 @@
 	as-libtool.m4 \
 	as-libtool-tags.m4 \
 	as-python.m4 \
-	as-scrub-include.m4 \
 	as-version.m4 \
 	ax_create_stdint_h.m4 \
 	glib-gettext.m4 \
diff --git a/common/m4/as-scrub-include.m4 b/common/m4/as-scrub-include.m4
deleted file mode 100644
index 3ed49b0..0000000
--- a/common/m4/as-scrub-include.m4
+++ /dev/null
@@ -1,36 +0,0 @@
-dnl as-scrub-include.m4 0.0.4
-
-dnl autostars m4 macro for scrubbing CFLAGS of system include dirs
-dnl because gcc 3.x complains about including system including dirs
-
-dnl Thomas Vander Stichele <thomas at apestaart dot org>
-
-dnl $Id: as-scrub-include.m4,v 1.7 2004/06/12 08:30:20 thomasvs Exp $
-
-dnl This macro uses output of cpp -v and expects it to contain text that
-dnl looks a little bit like this:
-dnl #include <...> search starts here:
-dnl  /usr/local/include
-dnl  /usr/lib/gcc-lib/i386-redhat-linux/3.2/include
-dnl  /usr/include
-dnl End of search list.
-
-dnl AS_SCRUB_INCLUDE(VAR)
-dnl example
-dnl AS_SCRUB_INCLUDE(CFLAGS)
-dnl will remove all system include dirs from the given CFLAGS
-
-AC_DEFUN([AS_SCRUB_INCLUDE],
-[
-  GIVEN_CFLAGS=$[$1]
-  INCLUDE_DIRS=`echo | cpp -v 2>&1`
-
-  dnl remove everything from this output between the "starts here" and "End of"
-  dnl line
-  INCLUDE_DIRS=`echo $INCLUDE_DIRS | sed -e 's/.*<...> search starts here://' | sed -e 's/End of search list.*//'`
-  for dir in $INCLUDE_DIRS; do
-    dnl use "" as the sed script so $dir gets expanded
-    GIVEN_CFLAGS=`echo $GIVEN_CFLAGS | sed -e "s#-I$dir ##"`
-  done
-  [$1]=$GIVEN_CFLAGS
-])
diff --git a/common/m4/gst-error.m4 b/common/m4/gst-error.m4
index e12a04c..bce80d2 100644
--- a/common/m4/gst-error.m4
+++ b/common/m4/gst-error.m4
@@ -169,7 +169,7 @@
                  'no%E_MACRO_REDEFINED' \
                  'no%E_LOOP_NOT_ENTERED_AT_TOP'
         do
-          AS_CXX_COMPILER_FLAG([-errwarn=%all,$f], ERROR_CXXFLAGS="$ERROR_CXXFLAGS,$f")
+          AS_CXX_COMPILER_FLAG([-errwarn=%all,$f], [ERROR_CXXFLAGS="$ERROR_CXXFLAGS,$f"])
         done
       fi
     fi
@@ -254,7 +254,7 @@
                  'no%E_MACRO_REDEFINED' \
                  'no%E_LOOP_NOT_ENTERED_AT_TOP'
         do
-          AS_OBJC_COMPILER_FLAG([-errwarn=%all,$f], ERROR_OBJCFLAGS="$ERROR_OBJCFLAGS,$f")
+          AS_OBJC_COMPILER_FLAG([-errwarn=%all,$f], [ERROR_OBJCFLAGS="$ERROR_OBJCFLAGS,$f"])
         done
       fi
     fi
diff --git a/common/m4/gst-gettext.m4 b/common/m4/gst-gettext.m4
index a63651b..df817eb 100644
--- a/common/m4/gst-gettext.m4
+++ b/common/m4/gst-gettext.m4
@@ -14,6 +14,13 @@
   AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE], "$GETTEXT_PACKAGE",
                      [gettext package name])
 
+  dnl make sure po/Makevars is kept in sync with GETTEXT_PACKAGE
+  if test -e "${srcdir}/po/Makevars"; then
+    if ! grep -e "$1" "${srcdir}/po/Makevars"; then
+      AC_MSG_ERROR([DOMAIN in po/Makevars does not match GETTEXT_PACKAGE $1])
+    fi
+  fi
+
   dnl define LOCALEDIR in config.h
   AS_AC_EXPAND(LOCALEDIR, $datadir/locale)
   AC_DEFINE_UNQUOTED([LOCALEDIR], "$LOCALEDIR",
diff --git a/common/m4/gst-glib2.m4 b/common/m4/gst-glib2.m4
index 3af5547..63f0f46 100644
--- a/common/m4/gst-glib2.m4
+++ b/common/m4/gst-glib2.m4
@@ -106,9 +106,6 @@
   fi
   AC_SUBST(GLIB_MKENUMS)
 
-  dnl for the poor souls who for example have glib in /usr/local
-  AS_SCRUB_INCLUDE(GLIB_CFLAGS)
-
   AC_SUBST(GLIB_EXTRA_CFLAGS)
 
   dnl Now check for GIO
diff --git a/common/m4/gst-parser.m4 b/common/m4/gst-parser.m4
index 710da89..b002047 100644
--- a/common/m4/gst-parser.m4
+++ b/common/m4/gst-parser.m4
@@ -8,10 +8,10 @@
   fi
 
   dnl check bison version
-  dnl we need version >= 1.875 for the reentrancy support
+  dnl we need version >= 2.4 for the '<>' support
   dnl in the parser.
   dnl First lines observed: 'bison (GNU Bison) 2.3' or 'GNU Bison version 1.28'
-  bison_min_version=1.875
+  bison_min_version=2.4
   bison_version=`$BISON_PATH --version | head -n 1 |  sed 's/^[[^0-9]]*//' | sed 's/[[^0-9]]*$//' | cut -d' ' -f1`
   AC_MSG_CHECKING([bison version $bison_version >= $bison_min_version])
 
diff --git a/compile b/compile
index 531136b..b1f4749 100755
--- a/compile
+++ b/compile
@@ -1,9 +1,10 @@
 #! /bin/sh
 # Wrapper for compilers which do not understand '-c -o'.
 
-scriptversion=2012-10-14.11; # UTC
+scriptversion=2012-01-04.17; # UTC
 
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009, 2010, 2012 Free
+# Software Foundation, Inc.
 # Written by Tom Tromey <tromey@cygnus.com>.
 #
 # This program is free software; you can redistribute it and/or modify
@@ -78,53 +79,6 @@
   esac
 }
 
-# func_cl_dashL linkdir
-# Make cl look for libraries in LINKDIR
-func_cl_dashL ()
-{
-  func_file_conv "$1"
-  if test -z "$lib_path"; then
-    lib_path=$file
-  else
-    lib_path="$lib_path;$file"
-  fi
-  linker_opts="$linker_opts -LIBPATH:$file"
-}
-
-# func_cl_dashl library
-# Do a library search-path lookup for cl
-func_cl_dashl ()
-{
-  lib=$1
-  found=no
-  save_IFS=$IFS
-  IFS=';'
-  for dir in $lib_path $LIB
-  do
-    IFS=$save_IFS
-    if $shared && test -f "$dir/$lib.dll.lib"; then
-      found=yes
-      lib=$dir/$lib.dll.lib
-      break
-    fi
-    if test -f "$dir/$lib.lib"; then
-      found=yes
-      lib=$dir/$lib.lib
-      break
-    fi
-    if test -f "$dir/lib$lib.a"; then
-      found=yes
-      lib=$dir/lib$lib.a
-      break
-    fi
-  done
-  IFS=$save_IFS
-
-  if test "$found" != yes; then
-    lib=$lib.lib
-  fi
-}
-
 # func_cl_wrapper cl arg...
 # Adjust compile command to suit cl
 func_cl_wrapper ()
@@ -155,34 +109,43 @@
 	      ;;
 	  esac
 	  ;;
-	-I)
-	  eat=1
-	  func_file_conv "$2" mingw
-	  set x "$@" -I"$file"
-	  shift
-	  ;;
 	-I*)
 	  func_file_conv "${1#-I}" mingw
 	  set x "$@" -I"$file"
 	  shift
 	  ;;
-	-l)
-	  eat=1
-	  func_cl_dashl "$2"
-	  set x "$@" "$lib"
-	  shift
-	  ;;
 	-l*)
-	  func_cl_dashl "${1#-l}"
-	  set x "$@" "$lib"
+	  lib=${1#-l}
+	  found=no
+	  save_IFS=$IFS
+	  IFS=';'
+	  for dir in $lib_path $LIB
+	  do
+	    IFS=$save_IFS
+	    if $shared && test -f "$dir/$lib.dll.lib"; then
+	      found=yes
+	      set x "$@" "$dir/$lib.dll.lib"
+	      break
+	    fi
+	    if test -f "$dir/$lib.lib"; then
+	      found=yes
+	      set x "$@" "$dir/$lib.lib"
+	      break
+	    fi
+	  done
+	  IFS=$save_IFS
+
+	  test "$found" != yes && set x "$@" "$lib.lib"
 	  shift
 	  ;;
-	-L)
-	  eat=1
-	  func_cl_dashL "$2"
-	  ;;
 	-L*)
-	  func_cl_dashL "${1#-L}"
+	  func_file_conv "${1#-L}"
+	  if test -z "$lib_path"; then
+	    lib_path=$file
+	  else
+	    lib_path="$lib_path;$file"
+	  fi
+	  linker_opts="$linker_opts -LIBPATH:$file"
 	  ;;
 	-static)
 	  shared=false
diff --git a/config.guess b/config.guess
index b79252d..d622a44 100755
--- a/config.guess
+++ b/config.guess
@@ -1,12 +1,14 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
-#   Copyright 1992-2013 Free Software Foundation, Inc.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+#   2011, 2012 Free Software Foundation, Inc.
 
-timestamp='2013-06-10'
+timestamp='2012-02-10'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
+# the Free Software Foundation; either version 2 of the License, or
 # (at your option) any later version.
 #
 # This program is distributed in the hope that it will be useful, but
@@ -20,17 +22,19 @@
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
 # configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that
-# program.  This Exception is an additional permission under section 7
-# of the GNU General Public License, version 3 ("GPLv3").
+# the same distribution terms that you use for the rest of that program.
+
+
+# Originally written by Per Bothner.  Please send patches (context
+# diff format) to <config-patches@gnu.org> and include a ChangeLog
+# entry.
 #
-# Originally written by Per Bothner.
+# This script attempts to guess a canonical system name similar to
+# config.sub.  If it succeeds, it prints the system name on stdout, and
+# exits with 0.  Otherwise, it exits with 1.
 #
 # You can get the latest version of this script from:
 # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
-#
-# Please send patches with a ChangeLog entry to config-patches@gnu.org.
-
 
 me=`echo "$0" | sed -e 's,.*/,,'`
 
@@ -50,7 +54,9 @@
 GNU config.guess ($timestamp)
 
 Originally written by Per Bothner.
-Copyright 1992-2013 Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
+Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -132,27 +138,6 @@
 UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
 UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
 
-case "${UNAME_SYSTEM}" in
-Linux|GNU|GNU/*)
-	# If the system lacks a compiler, then just pick glibc.
-	# We could probably try harder.
-	LIBC=gnu
-
-	eval $set_cc_for_build
-	cat <<-EOF > $dummy.c
-	#include <features.h>
-	#if defined(__UCLIBC__)
-	LIBC=uclibc
-	#elif defined(__dietlibc__)
-	LIBC=dietlibc
-	#else
-	LIBC=gnu
-	#endif
-	EOF
-	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
-	;;
-esac
-
 # Note: order is significant - the case branches are not exclusive.
 
 case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
@@ -215,10 +200,6 @@
 	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
 	echo "${machine}-${os}${release}"
 	exit ;;
-    *:Bitrig:*:*)
-	UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
-	echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
-	exit ;;
     *:OpenBSD:*:*)
 	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
 	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
@@ -321,7 +302,7 @@
     arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
 	echo arm-acorn-riscix${UNAME_RELEASE}
 	exit ;;
-    arm*:riscos:*:*|arm*:RISCOS:*:*)
+    arm:riscos:*:*|arm:RISCOS:*:*)
 	echo arm-unknown-riscos
 	exit ;;
     SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
@@ -820,9 +801,6 @@
     i*:CYGWIN*:*)
 	echo ${UNAME_MACHINE}-pc-cygwin
 	exit ;;
-    *:MINGW64*:*)
-	echo ${UNAME_MACHINE}-pc-mingw64
-	exit ;;
     *:MINGW*:*)
 	echo ${UNAME_MACHINE}-pc-mingw32
 	exit ;;
@@ -874,21 +852,21 @@
 	exit ;;
     *:GNU:*:*)
 	# the GNU system
-	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
 	exit ;;
     *:GNU/*:*:*)
 	# other systems with GNU libc and userland
-	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
+	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
 	exit ;;
     i*86:Minix:*:*)
 	echo ${UNAME_MACHINE}-pc-minix
 	exit ;;
     aarch64:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit ;;
     aarch64_be:Linux:*:*)
 	UNAME_MACHINE=aarch64_be
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit ;;
     alpha:Linux:*:*)
 	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
@@ -901,54 +879,59 @@
 	  EV68*) UNAME_MACHINE=alphaev68 ;;
 	esac
 	objdump --private-headers /bin/sh | grep -q ld.so.1
-	if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    arc:Linux:*:* | arceb:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
 	exit ;;
     arm*:Linux:*:*)
 	eval $set_cc_for_build
 	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
 	    | grep -q __ARM_EABI__
 	then
-	    echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	    echo ${UNAME_MACHINE}-unknown-linux-gnu
 	else
 	    if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
 		| grep -q __ARM_PCS_VFP
 	    then
-		echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
+		echo ${UNAME_MACHINE}-unknown-linux-gnueabi
 	    else
-		echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
+		echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
 	    fi
 	fi
 	exit ;;
     avr32*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit ;;
     cris:Linux:*:*)
-	echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+	echo ${UNAME_MACHINE}-axis-linux-gnu
 	exit ;;
     crisv32:Linux:*:*)
-	echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+	echo ${UNAME_MACHINE}-axis-linux-gnu
 	exit ;;
     frv:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit ;;
     hexagon:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit ;;
     i*86:Linux:*:*)
-	echo ${UNAME_MACHINE}-pc-linux-${LIBC}
+	LIBC=gnu
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#ifdef __dietlibc__
+	LIBC=dietlibc
+	#endif
+EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+	echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
 	exit ;;
     ia64:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit ;;
     m32r*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit ;;
     m68*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit ;;
     mips:Linux:*:* | mips64:Linux:*:*)
 	eval $set_cc_for_build
@@ -967,63 +950,54 @@
 	#endif
 EOF
 	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
-	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
+	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
 	;;
-    or1k:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
     or32:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit ;;
     padre:Linux:*:*)
-	echo sparc-unknown-linux-${LIBC}
+	echo sparc-unknown-linux-gnu
 	exit ;;
     parisc64:Linux:*:* | hppa64:Linux:*:*)
-	echo hppa64-unknown-linux-${LIBC}
+	echo hppa64-unknown-linux-gnu
 	exit ;;
     parisc:Linux:*:* | hppa:Linux:*:*)
 	# Look for CPU level
 	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
-	  PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
-	  PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
-	  *)    echo hppa-unknown-linux-${LIBC} ;;
+	  PA7*) echo hppa1.1-unknown-linux-gnu ;;
+	  PA8*) echo hppa2.0-unknown-linux-gnu ;;
+	  *)    echo hppa-unknown-linux-gnu ;;
 	esac
 	exit ;;
     ppc64:Linux:*:*)
-	echo powerpc64-unknown-linux-${LIBC}
+	echo powerpc64-unknown-linux-gnu
 	exit ;;
     ppc:Linux:*:*)
-	echo powerpc-unknown-linux-${LIBC}
-	exit ;;
-    ppc64le:Linux:*:*)
-	echo powerpc64le-unknown-linux-${LIBC}
-	exit ;;
-    ppcle:Linux:*:*)
-	echo powerpcle-unknown-linux-${LIBC}
+	echo powerpc-unknown-linux-gnu
 	exit ;;
     s390:Linux:*:* | s390x:Linux:*:*)
-	echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
+	echo ${UNAME_MACHINE}-ibm-linux
 	exit ;;
     sh64*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit ;;
     sh*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit ;;
     sparc:Linux:*:* | sparc64:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit ;;
     tile*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit ;;
     vax:Linux:*:*)
-	echo ${UNAME_MACHINE}-dec-linux-${LIBC}
+	echo ${UNAME_MACHINE}-dec-linux-gnu
 	exit ;;
     x86_64:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit ;;
     xtensa*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit ;;
     i*86:DYNIX/ptx:4*:*)
 	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
@@ -1227,9 +1201,6 @@
     BePC:Haiku:*:*)	# Haiku running on Intel PC compatible.
 	echo i586-pc-haiku
 	exit ;;
-    x86_64:Haiku:*:*)
-	echo x86_64-unknown-haiku
-	exit ;;
     SX-4:SUPER-UX:*:*)
 	echo sx4-nec-superux${UNAME_RELEASE}
 	exit ;;
@@ -1256,21 +1227,19 @@
 	exit ;;
     *:Darwin:*:*)
 	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
-	eval $set_cc_for_build
-	if test "$UNAME_PROCESSOR" = unknown ; then
-	    UNAME_PROCESSOR=powerpc
-	fi
-	if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
-	    if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-		(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-		grep IS_64BIT_ARCH >/dev/null
-	    then
-		case $UNAME_PROCESSOR in
-		    i386) UNAME_PROCESSOR=x86_64 ;;
-		    powerpc) UNAME_PROCESSOR=powerpc64 ;;
-		esac
-	    fi
-	fi
+	case $UNAME_PROCESSOR in
+	    i386)
+		eval $set_cc_for_build
+		if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+		  if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+		      (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+		      grep IS_64BIT_ARCH >/dev/null
+		  then
+		      UNAME_PROCESSOR="x86_64"
+		  fi
+		fi ;;
+	    unknown) UNAME_PROCESSOR=powerpc ;;
+	esac
 	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
 	exit ;;
     *:procnto*:*:* | *:QNX:[0123456789]*:*)
@@ -1287,7 +1256,7 @@
     NEO-?:NONSTOP_KERNEL:*:*)
 	echo neo-tandem-nsk${UNAME_RELEASE}
 	exit ;;
-    NSE-*:NONSTOP_KERNEL:*:*)
+    NSE-?:NONSTOP_KERNEL:*:*)
 	echo nse-tandem-nsk${UNAME_RELEASE}
 	exit ;;
     NSR-?:NONSTOP_KERNEL:*:*)
@@ -1361,6 +1330,9 @@
 	exit ;;
 esac
 
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
 eval $set_cc_for_build
 cat >$dummy.c <<EOF
 #ifdef _SEQUENT_
diff --git a/config.sub b/config.sub
index 9633db7..c894da4 100755
--- a/config.sub
+++ b/config.sub
@@ -1,18 +1,24 @@
 #! /bin/sh
 # Configuration validation subroutine script.
-#   Copyright 1992-2013 Free Software Foundation, Inc.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+#   2011, 2012 Free Software Foundation, Inc.
 
-timestamp='2013-08-10'
+timestamp='2012-02-10'
 
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
+# This file is (in principle) common to ALL GNU software.
+# The presence of a machine in this file suggests that SOME GNU software
+# can handle that machine.  It does not imply ALL GNU software can.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 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.
+# 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/>.
@@ -20,12 +26,11 @@
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
 # configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that
-# program.  This Exception is an additional permission under section 7
-# of the GNU General Public License, version 3 ("GPLv3").
+# the same distribution terms that you use for the rest of that program.
 
 
-# Please send patches with a ChangeLog entry to config-patches@gnu.org.
+# Please send patches to <config-patches@gnu.org>.  Submit a context
+# diff and a properly formatted GNU ChangeLog entry.
 #
 # Configuration subroutine to validate and canonicalize a configuration type.
 # Supply the specified configuration type as an argument.
@@ -68,7 +73,9 @@
 version="\
 GNU config.sub ($timestamp)
 
-Copyright 1992-2013 Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
+Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -116,7 +123,7 @@
 maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
 case $maybe_os in
   nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
-  linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+  linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
   knetbsd*-gnu* | netbsd*-gnu* | \
   kopensolaris*-gnu* | \
   storm-chaos* | os2-emx* | rtmk-nova*)
@@ -149,7 +156,7 @@
 	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
 	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
 	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-	-apple | -axis | -knuth | -cray | -microblaze*)
+	-apple | -axis | -knuth | -cray | -microblaze)
 		os=
 		basic_machine=$1
 		;;
@@ -218,12 +225,6 @@
 	-isc*)
 		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
 		;;
-	-lynx*178)
-		os=-lynxos178
-		;;
-	-lynx*5)
-		os=-lynxos5
-		;;
 	-lynx*)
 		os=-lynxos
 		;;
@@ -252,12 +253,10 @@
 	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
 	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
 	| am33_2.0 \
-	| arc | arceb \
-	| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
-	| avr | avr32 \
-	| be32 | be64 \
+	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
+        | be32 | be64 \
 	| bfin \
-	| c4x | c8051 | clipper \
+	| c4x | clipper \
 	| d10v | d30v | dlx | dsp16xx \
 	| epiphany \
 	| fido | fr30 | frv \
@@ -268,7 +267,7 @@
 	| le32 | le64 \
 	| lm32 \
 	| m32c | m32r | m32rle | m68000 | m68k | m88k \
-	| maxq | mb | microblaze | microblazeel | mcore | mep | metag \
+	| maxq | mb | microblaze | mcore | mep | metag \
 	| mips | mipsbe | mipseb | mipsel | mipsle \
 	| mips16 \
 	| mips64 | mips64el \
@@ -286,17 +285,16 @@
 	| mipsisa64r2 | mipsisa64r2el \
 	| mipsisa64sb1 | mipsisa64sb1el \
 	| mipsisa64sr71k | mipsisa64sr71kel \
-	| mipsr5900 | mipsr5900el \
 	| mipstx39 | mipstx39el \
 	| mn10200 | mn10300 \
 	| moxie \
 	| mt \
 	| msp430 \
 	| nds32 | nds32le | nds32be \
-	| nios | nios2 | nios2eb | nios2el \
+	| nios | nios2 \
 	| ns16k | ns32k \
 	| open8 \
-	| or1k | or32 \
+	| or32 \
 	| pdp10 | pdp11 | pj | pjl \
 	| powerpc | powerpc64 | powerpc64le | powerpcle \
 	| pyramid \
@@ -366,13 +364,13 @@
 	| aarch64-* | aarch64_be-* \
 	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
 	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
-	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
+	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
 	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
 	| avr-* | avr32-* \
 	| be32-* | be64-* \
 	| bfin-* | bs2000-* \
 	| c[123]* | c30-* | [cjt]90-* | c4x-* \
-	| c8051-* | clipper-* | craynv-* | cydra-* \
+	| clipper-* | craynv-* | cydra-* \
 	| d10v-* | d30v-* | dlx-* \
 	| elxsi-* \
 	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
@@ -385,8 +383,7 @@
 	| lm32-* \
 	| m32c-* | m32r-* | m32rle-* \
 	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-	| m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
-	| microblaze-* | microblazeel-* \
+	| m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
 	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
 	| mips16-* \
 	| mips64-* | mips64el-* \
@@ -404,13 +401,12 @@
 	| mipsisa64r2-* | mipsisa64r2el-* \
 	| mipsisa64sb1-* | mipsisa64sb1el-* \
 	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
-	| mipsr5900-* | mipsr5900el-* \
 	| mipstx39-* | mipstx39el-* \
 	| mmix-* \
 	| mt-* \
 	| msp430-* \
 	| nds32-* | nds32le-* | nds32be-* \
-	| nios-* | nios2-* | nios2eb-* | nios2el-* \
+	| nios-* | nios2-* \
 	| none-* | np1-* | ns16k-* | ns32k-* \
 	| open8-* \
 	| orion-* \
@@ -786,15 +782,11 @@
 		basic_machine=ns32k-utek
 		os=-sysv
 		;;
-	microblaze*)
+	microblaze)
 		basic_machine=microblaze-xilinx
 		;;
-	mingw64)
-		basic_machine=x86_64-pc
-		os=-mingw64
-		;;
 	mingw32)
-		basic_machine=i686-pc
+		basic_machine=i386-pc
 		os=-mingw32
 		;;
 	mingw32ce)
@@ -830,7 +822,7 @@
 		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
 		;;
 	msys)
-		basic_machine=i686-pc
+		basic_machine=i386-pc
 		os=-msys
 		;;
 	mvs)
@@ -1021,11 +1013,7 @@
 		basic_machine=i586-unknown
 		os=-pw32
 		;;
-	rdos | rdos64)
-		basic_machine=x86_64-pc
-		os=-rdos
-		;;
-	rdos32)
+	rdos)
 		basic_machine=i386-pc
 		os=-rdos
 		;;
@@ -1352,21 +1340,21 @@
 	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
 	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
 	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
-	      | -sym* | -kopensolaris* | -plan9* \
+	      | -sym* | -kopensolaris* \
 	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
 	      | -aos* | -aros* \
 	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
 	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
 	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
-	      | -bitrig* | -openbsd* | -solidbsd* \
+	      | -openbsd* | -solidbsd* \
 	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
 	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
 	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
 	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
 	      | -chorusos* | -chorusrdb* | -cegcc* \
 	      | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-	      | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
-	      | -linux-newlib* | -linux-musl* | -linux-uclibc* \
+	      | -mingw32* | -linux-gnu* | -linux-android* \
+	      | -linux-newlib* | -linux-uclibc* \
 	      | -uxpv* | -beos* | -mpeix* | -udk* \
 	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
 	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
@@ -1498,6 +1486,9 @@
 	-aros*)
 		os=-aros
 		;;
+	-kaos*)
+		os=-kaos
+		;;
 	-zvmoe)
 		os=-zvmoe
 		;;
@@ -1546,12 +1537,6 @@
 	c4x-* | tic4x-*)
 		os=-coff
 		;;
-	c8051-*)
-		os=-elf
-		;;
-	hexagon-*)
-		os=-elf
-		;;
 	tic54x-*)
 		os=-coff
 		;;
@@ -1592,9 +1577,6 @@
 	mips*-*)
 		os=-elf
 		;;
-	or1k-*)
-		os=-elf
-		;;
 	or32-*)
 		os=-coff
 		;;
diff --git a/configure b/configure
index 3ae78f0..7fc62db 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 Base Plug-ins 1.2.4.
+# Generated by GNU Autoconf 2.69 for GStreamer Base Plug-ins 1.3.1.
 #
 # Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer>.
 #
@@ -591,8 +591,8 @@
 # Identity of this package.
 PACKAGE_NAME='GStreamer Base Plug-ins'
 PACKAGE_TARNAME='gst-plugins-base'
-PACKAGE_VERSION='1.2.4'
-PACKAGE_STRING='GStreamer Base Plug-ins 1.2.4'
+PACKAGE_VERSION='1.3.1'
+PACKAGE_STRING='GStreamer Base Plug-ins 1.3.1'
 PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer'
 PACKAGE_URL=''
 
@@ -762,11 +762,12 @@
 GST_LICENSE
 HAVE_LINUX_JOYSTICK_HEADERS_FALSE
 HAVE_LINUX_JOYSTICK_HEADERS_TRUE
-HAVE_QT_GV_FALSE
-HAVE_QT_GV_TRUE
+HAVE_QT_MOC_FALSE
+HAVE_QT_MOC_TRUE
 HAVE_QT_FALSE
 HAVE_QT_TRUE
-QT4_MOC
+QTCHOOSER
+QT_MOC
 QT_LIBS
 QT_CFLAGS
 HAVE_GTK_QUARTZ_FALSE
@@ -1758,7 +1759,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 Base Plug-ins 1.2.4 to adapt to many kinds of systems.
+\`configure' configures GStreamer Base Plug-ins 1.3.1 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1834,7 +1835,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of GStreamer Base Plug-ins 1.2.4:";;
+     short | recursive ) echo "Configuration of GStreamer Base Plug-ins 1.3.1:";;
    esac
   cat <<\_ACEOF
 
@@ -2115,7 +2116,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-GStreamer Base Plug-ins configure 1.2.4
+GStreamer Base Plug-ins configure 1.3.1
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2888,7 +2889,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 Base Plug-ins $as_me 1.2.4, which was
+It was created by GStreamer Base Plug-ins $as_me 1.3.1, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3867,7 +3868,7 @@
 
 # Define the identity of the package.
  PACKAGE='gst-plugins-base'
- VERSION='1.2.4'
+ VERSION='1.3.1'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -4078,9 +4079,9 @@
 
 
 
-  PACKAGE_VERSION_MAJOR=$(echo 1.2.4 | cut -d'.' -f1)
-  PACKAGE_VERSION_MINOR=$(echo 1.2.4 | cut -d'.' -f2)
-  PACKAGE_VERSION_MICRO=$(echo 1.2.4 | cut -d'.' -f3)
+  PACKAGE_VERSION_MAJOR=$(echo 1.3.1 | cut -d'.' -f1)
+  PACKAGE_VERSION_MINOR=$(echo 1.3.1 | cut -d'.' -f2)
+  PACKAGE_VERSION_MICRO=$(echo 1.3.1 | cut -d'.' -f3)
 
 
 
@@ -4091,7 +4092,7 @@
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking nano version" >&5
 $as_echo_n "checking nano version... " >&6; }
 
-  NANO=$(echo 1.2.4 | cut -d'.' -f4)
+  NANO=$(echo 1.3.1 | cut -d'.' -f4)
 
   if test x"$NANO" = x || test "x$NANO" = "x0" ; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: 0 (release)" >&5
@@ -8740,10 +8741,10 @@
 done
 
 
-  GST_CURRENT=204
+  GST_CURRENT=301
   GST_REVISION=0
-  GST_AGE=204
-  GST_LIBVERSION=204:0:204
+  GST_AGE=301
+  GST_LIBVERSION=301:0:301
 
 
 
@@ -13068,7 +13069,7 @@
 
 
 
-GST_REQ=1.2.0
+GST_REQ=1.3.1
 
 
 
@@ -15056,6 +15057,12 @@
 _ACEOF
 
 
+    if test -e "${srcdir}/po/Makevars"; then
+    if ! grep -e "gst-plugins-base-$GST_API_VERSION" "${srcdir}/po/Makevars"; then
+      as_fn_error $? "DOMAIN in po/Makevars does not match GETTEXT_PACKAGE gst-plugins-base-$GST_API_VERSION" "$LINENO" 5
+    fi
+  fi
+
 
   EXP_VAR=LOCALEDIR
   FROM_VAR=$datadir/locale
@@ -23386,17 +23393,6 @@
 
 
 
-  GIVEN_CFLAGS=$GLIB_CFLAGS
-  INCLUDE_DIRS=`echo | cpp -v 2>&1`
-
-      INCLUDE_DIRS=`echo $INCLUDE_DIRS | sed -e 's/.*<...> search starts here://' | sed -e 's/End of search list.*//'`
-  for dir in $INCLUDE_DIRS; do
-        GIVEN_CFLAGS=`echo $GIVEN_CFLAGS | sed -e "s#-I$dir ##"`
-  done
-  GLIB_CFLAGS=$GIVEN_CFLAGS
-
-
-
 
 
 pkg_failed=no
@@ -24352,6 +24348,8 @@
 fi
 
 
+HAVE_QT=no
+HAVE_QT_MOC=no
 
 pkg_failed=no
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for QT" >&5
@@ -24362,12 +24360,12 @@
         pkg_cv_QT_CFLAGS="$QT_CFLAGS"
     else
         if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"QtGui >= 4.6\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "QtGui >= 4.6") 2>&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"Qt5Gui Qt5Widgets\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "Qt5Gui Qt5Widgets") 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-  pkg_cv_QT_CFLAGS=`$PKG_CONFIG --cflags "QtGui >= 4.6" 2>/dev/null`
+  pkg_cv_QT_CFLAGS=`$PKG_CONFIG --cflags "Qt5Gui Qt5Widgets" 2>/dev/null`
 else
   pkg_failed=yes
 fi
@@ -24380,12 +24378,12 @@
         pkg_cv_QT_LIBS="$QT_LIBS"
     else
         if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"QtGui >= 4.6\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "QtGui >= 4.6") 2>&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"Qt5Gui Qt5Widgets\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "Qt5Gui Qt5Widgets") 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-  pkg_cv_QT_LIBS=`$PKG_CONFIG --libs "QtGui >= 4.6" 2>/dev/null`
+  pkg_cv_QT_LIBS=`$PKG_CONFIG --libs "Qt5Gui Qt5Widgets" 2>/dev/null`
 else
   pkg_failed=yes
 fi
@@ -24404,9 +24402,9 @@
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-	        QT_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "QtGui >= 4.6"`
+	        QT_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "Qt5Gui Qt5Widgets"`
         else
-	        QT_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "QtGui >= 4.6"`
+	        QT_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "Qt5Gui Qt5Widgets"`
         fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$QT_PKG_ERRORS" >&5
@@ -24414,153 +24412,11 @@
 	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 
-  HAVE_QT_GV=no
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for QT" >&5
-$as_echo_n "checking for QT... " >&6; }
-
-if test -n "$PKG_CONFIG"; then
-    if test -n "$QT_CFLAGS"; then
-        pkg_cv_QT_CFLAGS="$QT_CFLAGS"
-    else
-        if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"QtGui >= 4.0\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "QtGui >= 4.0") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_QT_CFLAGS=`$PKG_CONFIG --cflags "QtGui >= 4.0" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
-    fi
-else
-	pkg_failed=untried
-fi
-if test -n "$PKG_CONFIG"; then
-    if test -n "$QT_LIBS"; then
-        pkg_cv_QT_LIBS="$QT_LIBS"
-    else
-        if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"QtGui >= 4.0\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "QtGui >= 4.0") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_QT_LIBS=`$PKG_CONFIG --libs "QtGui >= 4.0" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
-    fi
-else
-	pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi
-        if test $_pkg_short_errors_supported = yes; then
-	        QT_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "QtGui >= 4.0"`
-        else
-	        QT_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "QtGui >= 4.0"`
-        fi
-	# Put the nasty error message in config.log where it belongs
-	echo "$QT_PKG_ERRORS" >&5
-
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-                HAVE_QT=no
-elif test $pkg_failed = untried; then
-	HAVE_QT=no
-else
-	QT_CFLAGS=$pkg_cv_QT_CFLAGS
-	QT_LIBS=$pkg_cv_QT_LIBS
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-	HAVE_QT=yes
-fi
+  HAVE_QT=no
 
 elif test $pkg_failed = untried; then
 
-  HAVE_QT_GV=no
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for QT" >&5
-$as_echo_n "checking for QT... " >&6; }
-
-if test -n "$PKG_CONFIG"; then
-    if test -n "$QT_CFLAGS"; then
-        pkg_cv_QT_CFLAGS="$QT_CFLAGS"
-    else
-        if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"QtGui >= 4.0\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "QtGui >= 4.0") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_QT_CFLAGS=`$PKG_CONFIG --cflags "QtGui >= 4.0" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
-    fi
-else
-	pkg_failed=untried
-fi
-if test -n "$PKG_CONFIG"; then
-    if test -n "$QT_LIBS"; then
-        pkg_cv_QT_LIBS="$QT_LIBS"
-    else
-        if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"QtGui >= 4.0\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "QtGui >= 4.0") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_QT_LIBS=`$PKG_CONFIG --libs "QtGui >= 4.0" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
-    fi
-else
-	pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi
-        if test $_pkg_short_errors_supported = yes; then
-	        QT_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "QtGui >= 4.0"`
-        else
-	        QT_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "QtGui >= 4.0"`
-        fi
-	# Put the nasty error message in config.log where it belongs
-	echo "$QT_PKG_ERRORS" >&5
-
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-                HAVE_QT=no
-elif test $pkg_failed = untried; then
-	HAVE_QT=no
-else
-	QT_CFLAGS=$pkg_cv_QT_CFLAGS
-	QT_LIBS=$pkg_cv_QT_LIBS
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-	HAVE_QT=yes
-fi
+  HAVE_QT=no
 
 else
 	QT_CFLAGS=$pkg_cv_QT_CFLAGS
@@ -24568,18 +24424,318 @@
         { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 
-  HAVE_QT_GV=yes
   HAVE_QT=yes
 
 fi
 if test "x$HAVE_QT" = "xyes"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking Qt moc" >&5
-$as_echo_n "checking Qt moc... " >&6; }
-  QT4_MOC=`$PKG_CONFIG --variable=moc_location QtGui`
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $QT4_MOC" >&5
-$as_echo "$QT4_MOC" >&6; }
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}moc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}moc; 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_QT_MOC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$QT_MOC"; then
+  ac_cv_prog_QT_MOC="$QT_MOC" # 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_QT_MOC="${ac_tool_prefix}moc"
+    $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
+QT_MOC=$ac_cv_prog_QT_MOC
+if test -n "$QT_MOC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $QT_MOC" >&5
+$as_echo "$QT_MOC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_QT_MOC"; then
+  ac_ct_QT_MOC=$QT_MOC
+  # Extract the first word of "moc", so it can be a program name with args.
+set dummy moc; 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_ac_ct_QT_MOC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_QT_MOC"; then
+  ac_cv_prog_ac_ct_QT_MOC="$ac_ct_QT_MOC" # 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_ac_ct_QT_MOC="moc"
+    $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
+ac_ct_QT_MOC=$ac_cv_prog_ac_ct_QT_MOC
+if test -n "$ac_ct_QT_MOC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_QT_MOC" >&5
+$as_echo "$ac_ct_QT_MOC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_QT_MOC" = x; then
+    QT_MOC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    QT_MOC=$ac_ct_QT_MOC
+  fi
+else
+  QT_MOC="$ac_cv_prog_QT_MOC"
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Qt5 moc" >&5
+$as_echo_n "checking for Qt5 moc... " >&6; }
+  mocversion=`$QT_MOC -v 2>&1`
+  mocversiongrep=`echo $mocversion | grep "Qt 5\|moc 5"`
+  if test x"$mocversiongrep" != x"$mocversion"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    # moc was not the qt5 one, try with moc-qt5
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}moc-qt5", so it can be a program name with args.
+set dummy ${ac_tool_prefix}moc-qt5; 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_QT_MOC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$QT_MOC"; then
+  ac_cv_prog_QT_MOC="$QT_MOC" # 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_QT_MOC="${ac_tool_prefix}moc-qt5"
+    $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
+QT_MOC=$ac_cv_prog_QT_MOC
+if test -n "$QT_MOC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $QT_MOC" >&5
+$as_echo "$QT_MOC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_QT_MOC"; then
+  ac_ct_QT_MOC=$QT_MOC
+  # Extract the first word of "moc-qt5", so it can be a program name with args.
+set dummy moc-qt5; 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_ac_ct_QT_MOC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_QT_MOC"; then
+  ac_cv_prog_ac_ct_QT_MOC="$ac_ct_QT_MOC" # 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_ac_ct_QT_MOC="moc-qt5"
+    $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
+ac_ct_QT_MOC=$ac_cv_prog_ac_ct_QT_MOC
+if test -n "$ac_ct_QT_MOC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_QT_MOC" >&5
+$as_echo "$ac_ct_QT_MOC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_QT_MOC" = x; then
+    QT_MOC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    QT_MOC=$ac_ct_QT_MOC
+  fi
+else
+  QT_MOC="$ac_cv_prog_QT_MOC"
+fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Qt5 moc-qt5" >&5
+$as_echo_n "checking for Qt5 moc-qt5... " >&6; }
+    mocversion=`$QT_MOC -v 2>&1`
+    mocversiongrep=`echo $mocversion | grep "Qt 5\|moc 5"`
+    if test x"$mocversiongrep" != x"$mocversion"; then
+      if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}qtchooser", so it can be a program name with args.
+set dummy ${ac_tool_prefix}qtchooser; 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_QTCHOOSER+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$QTCHOOSER"; then
+  ac_cv_prog_QTCHOOSER="$QTCHOOSER" # 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_QTCHOOSER="${ac_tool_prefix}qtchooser"
+    $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
+QTCHOOSER=$ac_cv_prog_QTCHOOSER
+if test -n "$QTCHOOSER"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $QTCHOOSER" >&5
+$as_echo "$QTCHOOSER" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_QTCHOOSER"; then
+  ac_ct_QTCHOOSER=$QTCHOOSER
+  # Extract the first word of "qtchooser", so it can be a program name with args.
+set dummy qtchooser; 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_ac_ct_QTCHOOSER+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_QTCHOOSER"; then
+  ac_cv_prog_ac_ct_QTCHOOSER="$ac_ct_QTCHOOSER" # 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_ac_ct_QTCHOOSER="qtchooser"
+    $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
+ac_ct_QTCHOOSER=$ac_cv_prog_ac_ct_QTCHOOSER
+if test -n "$ac_ct_QTCHOOSER"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_QTCHOOSER" >&5
+$as_echo "$ac_ct_QTCHOOSER" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_QTCHOOSER" = x; then
+    QTCHOOSER=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    QTCHOOSER=$ac_ct_QTCHOOSER
+  fi
+else
+  QTCHOOSER="$ac_cv_prog_QTCHOOSER"
+fi
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for qtchooser" >&5
+$as_echo_n "checking for qtchooser... " >&6; }
+      qt5tooldir=`QT_SELECT=qt5 qtchooser -print-env | grep QTTOOLDIR | cut -d '=' -f 2 | cut -d \" -f 2`
+      mocversion=`$qt5tooldir/moc -v 2>&1`
+      mocversiongrep=`echo $mocversion | grep "Qt 5\|moc 5"`
+      if test x"$mocversiongrep" != x"$mocversion"; then
+        # no valid moc found
+        QT_MOC="no"
+      else
+        QT_MOC=$qt5tooldir/moc
+      fi
+    else
+      QT_MOC=$QT_MOC
+    fi
+  fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $QT_MOC" >&5
+$as_echo "$QT_MOC" >&6; }
+fi
  if test "x$HAVE_QT" = "xyes"; then
   HAVE_QT_TRUE=
   HAVE_QT_FALSE='#'
@@ -24588,12 +24744,12 @@
   HAVE_QT_FALSE=
 fi
 
- if test "x$HAVE_QT_GV" = "xyes"; then
-  HAVE_QT_GV_TRUE=
-  HAVE_QT_GV_FALSE='#'
+ if test "x$HAVE_QT_MOC" != "xno"; then
+  HAVE_QT_MOC_TRUE=
+  HAVE_QT_MOC_FALSE='#'
 else
-  HAVE_QT_GV_TRUE='#'
-  HAVE_QT_GV_FALSE=
+  HAVE_QT_MOC_TRUE='#'
+  HAVE_QT_MOC_FALSE=
 fi
 
 
@@ -25668,10 +25824,10 @@
   CPPFLAGS="$save_CPPFLAGS"
 
   if test "X$flag_ok" = Xyes ; then
-    ERROR_CXXFLAGS="$ERROR_CXXFLAGS
+    ERROR_CXXFLAGS="$ERROR_CXXFLAGS,$f"
     true
   else
-    $f"
+
     true
   fi
 
@@ -31671,8 +31827,8 @@
   as_fn_error $? "conditional \"HAVE_QT\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
-if test -z "${HAVE_QT_GV_TRUE}" && test -z "${HAVE_QT_GV_FALSE}"; then
-  as_fn_error $? "conditional \"HAVE_QT_GV\" was never defined.
+if test -z "${HAVE_QT_MOC_TRUE}" && test -z "${HAVE_QT_MOC_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_QT_MOC\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_LINUX_JOYSTICK_HEADERS_TRUE}" && test -z "${HAVE_LINUX_JOYSTICK_HEADERS_FALSE}"; then
@@ -32240,7 +32396,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by GStreamer Base Plug-ins $as_me 1.2.4, which was
+This file was extended by GStreamer Base Plug-ins $as_me 1.3.1, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -32306,7 +32462,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 Base Plug-ins config.status 1.2.4
+GStreamer Base Plug-ins config.status 1.3.1
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff --git a/configure.ac b/configure.ac
index cb29045..8ea5adb 100644
--- a/configure.ac
+++ b/configure.ac
@@ -5,7 +5,7 @@
 dnl initialize autoconf
 dnl releases only do -Wall, git and prerelease does -Werror too
 dnl use a three digit version number for releases, and four for git/prerelease
-AC_INIT([GStreamer Base Plug-ins],[1.2.4],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gst-plugins-base])
+AC_INIT([GStreamer Base Plug-ins],[1.3.1],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gst-plugins-base])
 
 AG_GST_INIT
 
@@ -56,10 +56,10 @@
 dnl      1.10.9 (who knows) => 1009
 dnl
 dnl sets GST_LT_LDFLAGS
-AS_LIBTOOL(GST, 204, 0, 204)
+AS_LIBTOOL(GST, 301, 0, 301)
 
 dnl *** required versions of GStreamer stuff ***
-GST_REQ=1.2.0
+GST_REQ=1.3.1
 
 dnl *** autotools stuff ****
 
@@ -274,22 +274,47 @@
 AM_CONDITIONAL(HAVE_GTK_X11, test "x$HAVE_GTK_X11" = "xyes")
 AM_CONDITIONAL(HAVE_GTK_QUARTZ, test "x$HAVE_GTK_QUARTZ" = "xyes")
 
+HAVE_QT=no
+HAVE_QT_MOC=no
 dnl QT is optional and only used in examples
-PKG_CHECK_MODULES(QT, QtGui >= 4.6, [
-  HAVE_QT_GV=yes
+PKG_CHECK_MODULES(QT, Qt5Gui Qt5Widgets, [
   HAVE_QT=yes
 ], [
-  HAVE_QT_GV=no
-  PKG_CHECK_MODULES(QT, QtGui >= 4.0, HAVE_QT=yes, HAVE_QT=no)
+  HAVE_QT=no
 ])
 if test "x$HAVE_QT" = "xyes"; then
-  AC_MSG_CHECKING([Qt moc])
-  QT4_MOC=`$PKG_CONFIG --variable=moc_location QtGui`
-  AC_MSG_RESULT($QT4_MOC)
-  AC_SUBST(QT4_MOC)
+  AC_CHECK_TOOL(QT_MOC, moc)
+  AC_MSG_CHECKING([for Qt5 moc])
+  mocversion=`$QT_MOC -v 2>&1`
+  mocversiongrep=`echo $mocversion | grep "Qt 5\|moc 5"`
+  if test x"$mocversiongrep" != x"$mocversion"; then
+    AC_MSG_RESULT([no])
+    # moc was not the qt5 one, try with moc-qt5
+    AC_CHECK_TOOL(QT_MOC, moc-qt5)
+    AC_MSG_CHECKING([for Qt5 moc-qt5])
+    mocversion=`$QT_MOC -v 2>&1`
+    mocversiongrep=`echo $mocversion | grep "Qt 5\|moc 5"`
+    if test x"$mocversiongrep" != x"$mocversion"; then
+      AC_CHECK_TOOL(QTCHOOSER, qtchooser)
+      AC_MSG_CHECKING([for qtchooser])
+      qt5tooldir=`QT_SELECT=qt5 qtchooser -print-env | grep QTTOOLDIR | cut -d '=' -f 2 | cut -d \" -f 2`
+      mocversion=`$qt5tooldir/moc -v 2>&1`
+      mocversiongrep=`echo $mocversion | grep "Qt 5\|moc 5"`
+      if test x"$mocversiongrep" != x"$mocversion"; then
+        # no valid moc found
+        QT_MOC="no"
+      else
+        QT_MOC=$qt5tooldir/moc
+      fi
+    else
+      QT_MOC=$QT_MOC
+    fi
+  fi
+  AC_SUBST(QT_MOC)
+  AC_MSG_RESULT([$QT_MOC])
 fi
 AM_CONDITIONAL(HAVE_QT, test "x$HAVE_QT" = "xyes")
-AM_CONDITIONAL(HAVE_QT_GV, test "x$HAVE_QT_GV" = "xyes")
+AM_CONDITIONAL(HAVE_QT_MOC, test "x$HAVE_QT_MOC" != "xno")
 
 dnl chck for linux headers needed by the joystick seek example
 AC_COMPILE_IFELSE(
diff --git a/depcomp b/depcomp
index 4ebd5b3..bd0ac08 100755
--- a/depcomp
+++ b/depcomp
@@ -1,9 +1,10 @@
 #! /bin/sh
 # depcomp - compile a program generating dependencies as side-effects
 
-scriptversion=2013-05-30.07; # UTC
+scriptversion=2011-12-04.11; # UTC
 
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010,
+# 2011 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
@@ -27,9 +28,9 @@
 
 case $1 in
   '')
-    echo "$0: No command.  Try '$0 --help' for more information." 1>&2
-    exit 1;
-    ;;
+     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
   -h | --h*)
     cat <<\EOF
 Usage: depcomp [--help] [--version] PROGRAM [ARGS]
@@ -39,8 +40,8 @@
 
 Environment variables:
   depmode     Dependency tracking mode.
-  source      Source file read by 'PROGRAMS ARGS'.
-  object      Object file output by 'PROGRAMS ARGS'.
+  source      Source file read by `PROGRAMS ARGS'.
+  object      Object file output by `PROGRAMS ARGS'.
   DEPDIR      directory where to store dependencies.
   depfile     Dependency file to output.
   tmpdepfile  Temporary file to use when outputting dependencies.
@@ -56,66 +57,6 @@
     ;;
 esac
 
-# Get the directory component of the given path, and save it in the
-# global variables '$dir'.  Note that this directory component will
-# be either empty or ending with a '/' character.  This is deliberate.
-set_dir_from ()
-{
-  case $1 in
-    */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
-      *) dir=;;
-  esac
-}
-
-# Get the suffix-stripped basename of the given path, and save it the
-# global variable '$base'.
-set_base_from ()
-{
-  base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
-}
-
-# If no dependency file was actually created by the compiler invocation,
-# we still have to create a dummy depfile, to avoid errors with the
-# Makefile "include basename.Plo" scheme.
-make_dummy_depfile ()
-{
-  echo "#dummy" > "$depfile"
-}
-
-# Factor out some common post-processing of the generated depfile.
-# Requires the auxiliary global variable '$tmpdepfile' to be set.
-aix_post_process_depfile ()
-{
-  # If the compiler actually managed to produce a dependency file,
-  # post-process it.
-  if test -f "$tmpdepfile"; then
-    # Each line is of the form 'foo.o: dependency.h'.
-    # Do two passes, one to just change these to
-    #   $object: dependency.h
-    # and one to simply output
-    #   dependency.h:
-    # which is needed to avoid the deleted-header problem.
-    { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
-      sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
-    } > "$depfile"
-    rm -f "$tmpdepfile"
-  else
-    make_dummy_depfile
-  fi
-}
-
-# A tabulation character.
-tab='	'
-# A newline character.
-nl='
-'
-# Character ranges might be problematic outside the C locale.
-# These definitions help.
-upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
-lower=abcdefghijklmnopqrstuvwxyz
-digits=0123456789
-alpha=${upper}${lower}
-
 if test -z "$depmode" || test -z "$source" || test -z "$object"; then
   echo "depcomp: Variables source, object and depmode must be set" 1>&2
   exit 1
@@ -128,9 +69,6 @@
 
 rm -f "$tmpdepfile"
 
-# Avoid interferences from the environment.
-gccflag= dashmflag=
-
 # Some modes work just like other modes, but use different flags.  We
 # parameterize here, but still list the modes in the big case below,
 # to make depend.m4 easier to write.  Note that we *cannot* use a case
@@ -142,32 +80,26 @@
 fi
 
 if test "$depmode" = dashXmstdout; then
-  # This is just like dashmstdout with a different argument.
-  dashmflag=-xM
-  depmode=dashmstdout
+   # This is just like dashmstdout with a different argument.
+   dashmflag=-xM
+   depmode=dashmstdout
 fi
 
 cygpath_u="cygpath -u -f -"
 if test "$depmode" = msvcmsys; then
-  # This is just like msvisualcpp but w/o cygpath translation.
-  # Just convert the backslash-escaped backslashes to single forward
-  # slashes to satisfy depend.m4
-  cygpath_u='sed s,\\\\,/,g'
-  depmode=msvisualcpp
+   # This is just like msvisualcpp but w/o cygpath translation.
+   # Just convert the backslash-escaped backslashes to single forward
+   # slashes to satisfy depend.m4
+   cygpath_u='sed s,\\\\,/,g'
+   depmode=msvisualcpp
 fi
 
 if test "$depmode" = msvc7msys; then
-  # This is just like msvc7 but w/o cygpath translation.
-  # Just convert the backslash-escaped backslashes to single forward
-  # slashes to satisfy depend.m4
-  cygpath_u='sed s,\\\\,/,g'
-  depmode=msvc7
-fi
-
-if test "$depmode" = xlc; then
-  # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
-  gccflag=-qmakedep=gcc,-MF
-  depmode=gcc
+   # This is just like msvc7 but w/o cygpath translation.
+   # Just convert the backslash-escaped backslashes to single forward
+   # slashes to satisfy depend.m4
+   cygpath_u='sed s,\\\\,/,g'
+   depmode=msvc7
 fi
 
 case "$depmode" in
@@ -190,7 +122,8 @@
   done
   "$@"
   stat=$?
-  if test $stat -ne 0; then
+  if test $stat -eq 0; then :
+  else
     rm -f "$tmpdepfile"
     exit $stat
   fi
@@ -198,17 +131,13 @@
   ;;
 
 gcc)
-## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
-## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
-## (see the conditional assignment to $gccflag above).
 ## There are various ways to get dependency output from gcc.  Here's
 ## why we pick this rather obscure method:
 ## - Don't want to use -MD because we'd like the dependencies to end
 ##   up in a subdir.  Having to rename by hand is ugly.
 ##   (We might end up doing this anyway to support other compilers.)
 ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
-##   -MM, not -M (despite what the docs say).  Also, it might not be
-##   supported by the other compilers which use the 'gcc' depmode.
+##   -MM, not -M (despite what the docs say).
 ## - Using -M directly means running the compiler twice (even worse
 ##   than renaming).
   if test -z "$gccflag"; then
@@ -216,31 +145,33 @@
   fi
   "$@" -Wp,"$gccflag$tmpdepfile"
   stat=$?
-  if test $stat -ne 0; then
+  if test $stat -eq 0; then :
+  else
     rm -f "$tmpdepfile"
     exit $stat
   fi
   rm -f "$depfile"
   echo "$object : \\" > "$depfile"
-  # The second -e expression handles DOS-style file names with drive
-  # letters.
+  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
+## The second -e expression handles DOS-style file names with drive letters.
   sed -e 's/^[^:]*: / /' \
       -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
-## This next piece of magic avoids the "deleted header file" problem.
+## This next piece of magic avoids the `deleted header file' problem.
 ## The problem is that when a header file which appears in a .P file
 ## is deleted, the dependency causes make to die (because there is
 ## typically no way to rebuild the header).  We avoid this by adding
 ## dummy dependencies for each header file.  Too bad gcc doesn't do
 ## this for us directly.
-## Some versions of gcc put a space before the ':'.  On the theory
+  tr ' ' '
+' < "$tmpdepfile" |
+## Some versions of gcc put a space before the `:'.  On the theory
 ## that the space means something, we add a space to the output as
 ## well.  hp depmode also adds that space, but also prefixes the VPATH
 ## to the object.  Take care to not repeat it in the output.
 ## Some versions of the HPUX 10.20 sed can't process this invocation
 ## correctly.  Breaking it into two sed invocations is a workaround.
-  tr ' ' "$nl" < "$tmpdepfile" \
-    | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
-    | sed -e 's/$/ :/' >> "$depfile"
+    sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
+      | sed -e 's/$/ :/' >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
 
@@ -258,7 +189,8 @@
     "$@" -MDupdate "$tmpdepfile"
   fi
   stat=$?
-  if test $stat -ne 0; then
+  if test $stat -eq 0; then :
+  else
     rm -f "$tmpdepfile"
     exit $stat
   fi
@@ -266,41 +198,43 @@
 
   if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
     echo "$object : \\" > "$depfile"
+
     # Clip off the initial element (the dependent).  Don't try to be
     # clever and replace this with sed code, as IRIX sed won't handle
     # lines with more than a fixed number of characters (4096 in
     # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
-    # the IRIX cc adds comments like '#:fec' to the end of the
+    # the IRIX cc adds comments like `#:fec' to the end of the
     # dependency line.
-    tr ' ' "$nl" < "$tmpdepfile" \
-      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
-      | tr "$nl" ' ' >> "$depfile"
+    tr ' ' '
+' < "$tmpdepfile" \
+    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
+    tr '
+' ' ' >> "$depfile"
     echo >> "$depfile"
+
     # The second pass generates a dummy entry for each header file.
-    tr ' ' "$nl" < "$tmpdepfile" \
-      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
-      >> "$depfile"
+    tr ' ' '
+' < "$tmpdepfile" \
+   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+   >> "$depfile"
   else
-    make_dummy_depfile
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
   fi
   rm -f "$tmpdepfile"
   ;;
 
-xlc)
-  # This case exists only to let depend.m4 do its work.  It works by
-  # looking at the text of this script.  This case will never be run,
-  # since it is checked for above.
-  exit 1
-  ;;
-
 aix)
   # The C for AIX Compiler uses -M and outputs the dependencies
   # in a .u file.  In older versions, this file always lives in the
-  # current directory.  Also, the AIX compiler puts '$object:' at the
+  # current directory.  Also, the AIX compiler puts `$object:' at the
   # start of each line; $object doesn't have directory information.
   # Version 6 uses the directory in both cases.
-  set_dir_from "$object"
-  set_base_from "$object"
+  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+  test "x$dir" = "x$object" && dir=
+  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
   if test "$libtool" = yes; then
     tmpdepfile1=$dir$base.u
     tmpdepfile2=$base.u
@@ -313,7 +247,9 @@
     "$@" -M
   fi
   stat=$?
-  if test $stat -ne 0; then
+
+  if test $stat -eq 0; then :
+  else
     rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
     exit $stat
   fi
@@ -322,100 +258,44 @@
   do
     test -f "$tmpdepfile" && break
   done
-  aix_post_process_depfile
-  ;;
-
-tcc)
-  # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
-  # FIXME: That version still under development at the moment of writing.
-  #        Make that this statement remains true also for stable, released
-  #        versions.
-  # It will wrap lines (doesn't matter whether long or short) with a
-  # trailing '\', as in:
-  #
-  #   foo.o : \
-  #    foo.c \
-  #    foo.h \
-  #
-  # It will put a trailing '\' even on the last line, and will use leading
-  # spaces rather than leading tabs (at least since its commit 0394caf7
-  # "Emit spaces for -MD").
-  "$@" -MD -MF "$tmpdepfile"
-  stat=$?
-  if test $stat -ne 0; then
-    rm -f "$tmpdepfile"
-    exit $stat
+  if test -f "$tmpdepfile"; then
+    # Each line is of the form `foo.o: dependent.h'.
+    # Do two passes, one to just change these to
+    # `$object: dependent.h' and one to simply `dependent.h:'.
+    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+    # That's a tab and a space in the [].
+    sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
   fi
-  rm -f "$depfile"
-  # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
-  # We have to change lines of the first kind to '$object: \'.
-  sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
-  # And for each line of the second kind, we have to emit a 'dep.h:'
-  # dummy dependency, to avoid the deleted-header problem.
-  sed -n -e 's|^  *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
 
-## The order of this option in the case statement is important, since the
-## shell code in configure will try each of these formats in the order
-## listed in this file.  A plain '-MD' option would be understood by many
-## compilers, so we must ensure this comes after the gcc and icc options.
-pgcc)
-  # Portland's C compiler understands '-MD'.
-  # Will always output deps to 'file.d' where file is the root name of the
-  # source file under compilation, even if file resides in a subdirectory.
-  # The object file name does not affect the name of the '.d' file.
-  # pgcc 10.2 will output
+icc)
+  # Intel's C compiler understands `-MD -MF file'.  However on
+  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
+  # ICC 7.0 will fill foo.d with something like
+  #    foo.o: sub/foo.c
+  #    foo.o: sub/foo.h
+  # which is wrong.  We want:
+  #    sub/foo.o: sub/foo.c
+  #    sub/foo.o: sub/foo.h
+  #    sub/foo.c:
+  #    sub/foo.h:
+  # ICC 7.1 will output
   #    foo.o: sub/foo.c sub/foo.h
-  # and will wrap long lines using '\' :
+  # and will wrap long lines using \ :
   #    foo.o: sub/foo.c ... \
   #     sub/foo.h ... \
   #     ...
-  set_dir_from "$object"
-  # Use the source, not the object, to determine the base name, since
-  # that's sadly what pgcc will do too.
-  set_base_from "$source"
-  tmpdepfile=$base.d
 
-  # For projects that build the same source file twice into different object
-  # files, the pgcc approach of using the *source* file root name can cause
-  # problems in parallel builds.  Use a locking strategy to avoid stomping on
-  # the same $tmpdepfile.
-  lockdir=$base.d-lock
-  trap "
-    echo '$0: caught signal, cleaning up...' >&2
-    rmdir '$lockdir'
-    exit 1
-  " 1 2 13 15
-  numtries=100
-  i=$numtries
-  while test $i -gt 0; do
-    # mkdir is a portable test-and-set.
-    if mkdir "$lockdir" 2>/dev/null; then
-      # This process acquired the lock.
-      "$@" -MD
-      stat=$?
-      # Release the lock.
-      rmdir "$lockdir"
-      break
-    else
-      # If the lock is being held by a different process, wait
-      # until the winning process is done or we timeout.
-      while test -d "$lockdir" && test $i -gt 0; do
-        sleep 1
-        i=`expr $i - 1`
-      done
-    fi
-    i=`expr $i - 1`
-  done
-  trap - 1 2 13 15
-  if test $i -le 0; then
-    echo "$0: failed to acquire lock after $numtries attempts" >&2
-    echo "$0: check lockdir '$lockdir'" >&2
-    exit 1
-  fi
-
-  if test $stat -ne 0; then
+  "$@" -MD -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
     rm -f "$tmpdepfile"
     exit $stat
   fi
@@ -427,8 +307,8 @@
   sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
   # Some versions of the HPUX 10.20 sed can't process this invocation
   # correctly.  Breaking it into two sed invocations is a workaround.
-  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
-    | sed -e 's/$/ :/' >> "$depfile"
+  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
+    sed -e 's/$/ :/' >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
 
@@ -439,8 +319,9 @@
   # 'foo.d', which lands next to the object file, wherever that
   # happens to be.
   # Much of this is similar to the tru64 case; see comments there.
-  set_dir_from  "$object"
-  set_base_from "$object"
+  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+  test "x$dir" = "x$object" && dir=
+  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
   if test "$libtool" = yes; then
     tmpdepfile1=$dir$base.d
     tmpdepfile2=$dir.libs/$base.d
@@ -451,7 +332,8 @@
     "$@" +Maked
   fi
   stat=$?
-  if test $stat -ne 0; then
+  if test $stat -eq 0; then :
+  else
      rm -f "$tmpdepfile1" "$tmpdepfile2"
      exit $stat
   fi
@@ -461,61 +343,77 @@
     test -f "$tmpdepfile" && break
   done
   if test -f "$tmpdepfile"; then
-    sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
-    # Add 'dependent.h:' lines.
+    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
+    # Add `dependent.h:' lines.
     sed -ne '2,${
-               s/^ *//
-               s/ \\*$//
-               s/$/:/
-               p
-             }' "$tmpdepfile" >> "$depfile"
+	       s/^ *//
+	       s/ \\*$//
+	       s/$/:/
+	       p
+	     }' "$tmpdepfile" >> "$depfile"
   else
-    make_dummy_depfile
+    echo "#dummy" > "$depfile"
   fi
   rm -f "$tmpdepfile" "$tmpdepfile2"
   ;;
 
 tru64)
-  # The Tru64 compiler uses -MD to generate dependencies as a side
-  # effect.  'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
-  # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
-  # dependencies in 'foo.d' instead, so we check for that too.
-  # Subdirectories are respected.
-  set_dir_from  "$object"
-  set_base_from "$object"
+   # The Tru64 compiler uses -MD to generate dependencies as a side
+   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
+   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+   # dependencies in `foo.d' instead, so we check for that too.
+   # Subdirectories are respected.
+   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+   test "x$dir" = "x$object" && dir=
+   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
 
-  if test "$libtool" = yes; then
-    # Libtool generates 2 separate objects for the 2 libraries.  These
-    # two compilations output dependencies in $dir.libs/$base.o.d and
-    # in $dir$base.o.d.  We have to check for both files, because
-    # one of the two compilations can be disabled.  We should prefer
-    # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
-    # automatically cleaned when .libs/ is deleted, while ignoring
-    # the former would cause a distcleancheck panic.
-    tmpdepfile1=$dir$base.o.d          # libtool 1.5
-    tmpdepfile2=$dir.libs/$base.o.d    # Likewise.
-    tmpdepfile3=$dir.libs/$base.d      # Compaq CCC V6.2-504
-    "$@" -Wc,-MD
-  else
-    tmpdepfile1=$dir$base.d
-    tmpdepfile2=$dir$base.d
-    tmpdepfile3=$dir$base.d
-    "$@" -MD
-  fi
+   if test "$libtool" = yes; then
+      # With Tru64 cc, shared objects can also be used to make a
+      # static library.  This mechanism is used in libtool 1.4 series to
+      # handle both shared and static libraries in a single compilation.
+      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
+      #
+      # With libtool 1.5 this exception was removed, and libtool now
+      # generates 2 separate objects for the 2 libraries.  These two
+      # compilations output dependencies in $dir.libs/$base.o.d and
+      # in $dir$base.o.d.  We have to check for both files, because
+      # one of the two compilations can be disabled.  We should prefer
+      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+      # automatically cleaned when .libs/ is deleted, while ignoring
+      # the former would cause a distcleancheck panic.
+      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
+      tmpdepfile2=$dir$base.o.d          # libtool 1.5
+      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
+      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
+      "$@" -Wc,-MD
+   else
+      tmpdepfile1=$dir$base.o.d
+      tmpdepfile2=$dir$base.d
+      tmpdepfile3=$dir$base.d
+      tmpdepfile4=$dir$base.d
+      "$@" -MD
+   fi
 
-  stat=$?
-  if test $stat -ne 0; then
-    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
-    exit $stat
-  fi
+   stat=$?
+   if test $stat -eq 0; then :
+   else
+      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+      exit $stat
+   fi
 
-  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
-  do
-    test -f "$tmpdepfile" && break
-  done
-  # Same post-processing that is required for AIX mode.
-  aix_post_process_depfile
-  ;;
+   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+   do
+     test -f "$tmpdepfile" && break
+   done
+   if test -f "$tmpdepfile"; then
+      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+      # That's a tab and a space in the [].
+      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+   else
+      echo "#dummy" > "$depfile"
+   fi
+   rm -f "$tmpdepfile"
+   ;;
 
 msvc7)
   if test "$libtool" = yes; then
@@ -526,7 +424,8 @@
   "$@" $showIncludes > "$tmpdepfile"
   stat=$?
   grep -v '^Note: including file: ' "$tmpdepfile"
-  if test $stat -ne 0; then
+  if test "$stat" = 0; then :
+  else
     rm -f "$tmpdepfile"
     exit $stat
   fi
@@ -544,15 +443,14 @@
   p
 }' | $cygpath_u | sort -u | sed -n '
 s/ /\\ /g
-s/\(.*\)/'"$tab"'\1 \\/p
+s/\(.*\)/	\1 \\/p
 s/.\(.*\) \\/\1:/
 H
 $ {
-  s/.*/'"$tab"'/
+  s/.*/	/
   G
   p
 }' >> "$depfile"
-  echo >> "$depfile" # make sure the fragment doesn't end with a backslash
   rm -f "$tmpdepfile"
   ;;
 
@@ -580,7 +478,7 @@
     shift
   fi
 
-  # Remove '-o $object'.
+  # Remove `-o $object'.
   IFS=" "
   for arg
   do
@@ -600,18 +498,18 @@
   done
 
   test -z "$dashmflag" && dashmflag=-M
-  # Require at least two characters before searching for ':'
+  # Require at least two characters before searching for `:'
   # in the target name.  This is to cope with DOS-style filenames:
-  # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
+  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
   "$@" $dashmflag |
-    sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
+    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
   rm -f "$depfile"
   cat < "$tmpdepfile" > "$depfile"
-  # Some versions of the HPUX 10.20 sed can't process this sed invocation
-  # correctly.  Breaking it into two sed invocations is a workaround.
-  tr ' ' "$nl" < "$tmpdepfile" \
-    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
-    | sed -e 's/$/ :/' >> "$depfile"
+  tr ' ' '
+' < "$tmpdepfile" | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
 
@@ -664,12 +562,11 @@
   # makedepend may prepend the VPATH from the source file name to the object.
   # No need to regex-escape $object, excess matching of '.' is harmless.
   sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
-  # Some versions of the HPUX 10.20 sed can't process the last invocation
-  # correctly.  Breaking it into two sed invocations is a workaround.
-  sed '1,2d' "$tmpdepfile" \
-    | tr ' ' "$nl" \
-    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
-    | sed -e 's/$/ :/' >> "$depfile"
+  sed '1,2d' "$tmpdepfile" | tr ' ' '
+' | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
   rm -f "$tmpdepfile" "$tmpdepfile".bak
   ;;
 
@@ -686,7 +583,7 @@
     shift
   fi
 
-  # Remove '-o $object'.
+  # Remove `-o $object'.
   IFS=" "
   for arg
   do
@@ -705,10 +602,10 @@
     esac
   done
 
-  "$@" -E \
-    | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
-             -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
-    | sed '$ s: \\$::' > "$tmpdepfile"
+  "$@" -E |
+    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
+    sed '$ s: \\$::' > "$tmpdepfile"
   rm -f "$depfile"
   echo "$object : \\" > "$depfile"
   cat < "$tmpdepfile" >> "$depfile"
@@ -740,23 +637,23 @@
       shift
       ;;
     "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
-        set fnord "$@"
-        shift
-        shift
-        ;;
+	set fnord "$@"
+	shift
+	shift
+	;;
     *)
-        set fnord "$@" "$arg"
-        shift
-        shift
-        ;;
+	set fnord "$@" "$arg"
+	shift
+	shift
+	;;
     esac
   done
   "$@" -E 2>/dev/null |
   sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
   rm -f "$depfile"
   echo "$object : \\" > "$depfile"
-  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
-  echo "$tab" >> "$depfile"
+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
+  echo "	" >> "$depfile"
   sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
diff --git a/docs/Makefile.in b/docs/Makefile.in
index 0cec81d..9184d6d 100644
--- a/docs/Makefile.in
+++ b/docs/Makefile.in
@@ -86,7 +86,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -398,9 +397,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/docs/design/Makefile.in b/docs/design/Makefile.in
index f13dd73..3336961 100644
--- a/docs/design/Makefile.in
+++ b/docs/design/Makefile.in
@@ -85,7 +85,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -398,9 +397,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/docs/design/part-mediatype-video-raw.txt b/docs/design/part-mediatype-video-raw.txt
index 5e74dec..ad8f256 100644
--- a/docs/design/part-mediatype-video-raw.txt
+++ b/docs/design/part-mediatype-video-raw.txt
@@ -1188,3 +1188,46 @@
           default size: size (component0) + 
                         size (component1) +
                         size (component2)
+
+ "Y444_10BE" planar 4:4:4 YUV, 10 bits per channel
+ "Y444_10LE" planar 4:4:4 YUV, 10 bits per channel
+
+ "GBR" planar 4:4:4 RGB, 8 bits per channel
+ "GBR_10BE" planar 4:4:4 RGB, 10 bits per channel
+ "GBR_10LE" planar 4:4:4 RGB, 10 bits per channel
+
+ "NV16" planar 4:2:2 YUV with interleaved UV plane
+ "NV24" planar 4:4:4 YUV with interleaved UV plane
+
+
+ "NV12_64Z32" planar 4:2:0 YUV with interleaved UV plane in 64x32 tiles zigzag
+
+        Component 0: Y
+          depth:           8
+          pstride:         1
+          default offset:  0
+          default rstride: RU128 (width)
+          default size:    rstride (component0) * RU32 (height)
+
+        Component 1: U
+          depth            8
+          pstride:         2
+          default offset:  size (component0)
+          default rstride: (y_tiles << 16) | x_tiles
+          default x_tiles: RU128 (width) >> tile_width
+          default y_tiles: RU32 (height) >> tile_height
+
+        Component 2: V
+          depth:           8
+          pstride:         2
+          default offset:  offset (component1) + 1
+          default rstride: (y_tiles << 16) | x_tiles
+          default x_tiles: RU128 (width) >> tile_width
+          default y_tiles: RU64 (height) >> (tile_height + 1)
+
+        Image
+          default size: RU128 (width) * (RU32 (height) + RU64 (height) / 2)
+          tile mode:    ZFLIPZ_2X2
+          tile width:   6
+          tile height:  5
+
diff --git a/docs/libs/Makefile.in b/docs/libs/Makefile.in
index cdad6dc..2dd26bb 100644
--- a/docs/libs/Makefile.in
+++ b/docs/libs/Makefile.in
@@ -106,7 +106,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -359,9 +358,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/docs/libs/gst-plugins-base-libs-docs.sgml b/docs/libs/gst-plugins-base-libs-docs.sgml
index 78e4ad2..bc3b067 100644
--- a/docs/libs/gst-plugins-base-libs-docs.sgml
+++ b/docs/libs/gst-plugins-base-libs-docs.sgml
@@ -59,7 +59,6 @@
       <xi:include href="xml/gstaudiodecoder.xml" />
       <xi:include href="xml/gstaudioencoder.xml" />
       <xi:include href="xml/gstaudiofilter.xml" />
-      <xi:include href="xml/gstaudiomixerutils.xml" />
       <xi:include href="xml/gstaudiosink.xml" />
       <xi:include href="xml/gstaudiosrc.xml" />
       <xi:include href="xml/gstaudiobasesink.xml" />
@@ -141,6 +140,16 @@
       <xi:include href="xml/gstsdpmessage.xml" />
     </chapter>
 
+    <chapter id="gstreamer-mikey">
+      <title>MIKEY Library</title>
+      <para>
+        This library should be linked to by getting cflags and libs from
+        <filename>gstreamer-plugins-base-&GST_API_VERSION;.pc</filename> and adding
+        <filename>-lgstsdp-&GST_API_VERSION;</filename> to the library flags.
+      </para>
+      <xi:include href="xml/gstmikey.xml" />
+    </chapter>
+
     <chapter id="gstreamer-tag">
       <title>Tag Support Library</title>
       <para>
@@ -196,6 +205,7 @@
       <xi:include href="xml/gstvideooverlay.xml" />
       <xi:include href="xml/gstvideodecoder.xml" />
       <xi:include href="xml/gstvideoencoder.xml" />
+      <xi:include href="xml/gstvideopool.xml" />
       <xi:include href="xml/gstvideoutils.xml" />
     </chapter>
   </part>
diff --git a/docs/libs/gst-plugins-base-libs-sections.txt b/docs/libs/gst-plugins-base-libs-sections.txt
index 1179cad..6d86634 100644
--- a/docs/libs/gst-plugins-base-libs-sections.txt
+++ b/docs/libs/gst-plugins-base-libs-sections.txt
@@ -373,13 +373,6 @@
 </SECTION>
 
 <SECTION>
-<FILE>gstaudiomixerutils</FILE>
-<INCLUDE>gst/audio/mixerutils.h</INCLUDE>
-GstAudioMixerFilterFunc
-gst_audio_default_registry_mixer_filter
-</SECTION>
-
-<SECTION>
 <FILE>gstaudiosink</FILE>
 <INCLUDE>gst/audio/gstaudiosink.h</INCLUDE>
 GstAudioSink
@@ -1497,6 +1490,7 @@
 gst_rtsp_watch_write_data
 gst_rtsp_watch_get_send_backlog
 gst_rtsp_watch_set_send_backlog
+gst_rtsp_watch_wait_backlog
 </SECTION>
 
 <SECTION>
@@ -1736,6 +1730,90 @@
 gst_sdp_media_add_attribute
 </SECTION>
 
+<SECTION>
+<FILE>gstmikey</FILE>
+<INCLUDE>gst/sdp/gstmikey.h</INCLUDE>
+<SUBSECTION Messages>
+GST_MIKEY_VERSION
+GstMIKEYType
+GstMIKEYMessage
+
+gst_mikey_message_new
+gst_mikey_message_new_from_bytes
+gst_mikey_message_new_from_data
+gst_mikey_message_free
+gst_mikey_message_to_bytes
+
+<SUBSECTION MessageInfo>
+GstMIKEYPRFFunc
+GstMIKEYMapType
+gst_mikey_message_set_info
+gst_mikey_message_get_n_cs
+
+<SUBSECTION MessageCSSRTP>
+GstMIKEYMapSRTP
+gst_mikey_message_get_cs_srtp
+gst_mikey_message_insert_cs_srtp
+gst_mikey_message_remove_cs_srtp
+gst_mikey_message_replace_cs_srtp
+gst_mikey_message_add_cs_srtp
+
+<SUBSECTION Payloads>
+gst_mikey_message_get_n_payloads
+gst_mikey_message_get_payload
+gst_mikey_message_find_payload
+gst_mikey_message_insert_payload
+gst_mikey_message_remove_payload
+gst_mikey_message_replace_payload
+gst_mikey_message_add_payload
+
+GstMIKEYPayloadType
+GstMIKEYPayloadClearFunc
+GstMIKEYPayloadCopyFunc
+GstMIKEYPayload
+gst_mikey_payload_new
+gst_mikey_payload_copy
+gst_mikey_payload_free
+
+<SUBSECTION PayloadKEMAC>
+GstMIKEYEncAlg
+GstMIKEYMacAlg
+GstMIKEYPayloadKEMAC
+gst_mikey_payload_kemac_set
+gst_mikey_message_add_kemac
+
+<SUBSECTION PayloadPKE>
+GstMIKEYCacheType
+GstMIKEYPayloadPKE
+gst_mikey_payload_pke_set
+gst_mikey_message_add_pke
+
+<SUBSECTION PayloadT>
+GstMIKEYTSType
+GstMIKEYPayloadT
+gst_mikey_payload_t_set
+gst_mikey_message_add_t
+gst_mikey_message_add_t_now_ntp_utc
+
+<SUBSECTION PayloadRAND>
+GstMIKEYPayloadRAND
+gst_mikey_payload_rand_set
+gst_mikey_message_add_rand
+gst_mikey_message_add_rand_len
+
+<SUBSECTION PayloadSP>
+GstMIKEYSecProto
+GstMIKEYSecSRTP
+GstMIKEYPayloadSP
+GstMIKEYPayloadSPParam
+gst_mikey_payload_sp_set
+gst_mikey_payload_sp_get_n_params
+gst_mikey_payload_sp_get_param
+gst_mikey_payload_sp_add_param
+gst_mikey_payload_sp_remove_param
+<SUBSECTION Standard>
+</SECTION>
+
 # tag
 
 <SECTION>
@@ -2011,6 +2089,12 @@
 gst_codec_utils_h264_caps_set_level_and_profile
 gst_codec_utils_h264_get_level_idc
 <SUBSECTION>
+gst_codec_utils_h265_get_profile
+gst_codec_utils_h265_get_tier
+gst_codec_utils_h265_get_level
+gst_codec_utils_h265_get_level_idc
+gst_codec_utils_h265_caps_set_level_tier_and_profile
+<SUBSECTION>
 gst_codec_utils_mpeg4video_get_profile
 gst_codec_utils_mpeg4video_get_level
 gst_codec_utils_mpeg4video_caps_set_level_and_profile
@@ -2179,6 +2263,9 @@
 GST_VIDEO_FORMAT_INFO_DATA
 GST_VIDEO_FORMAT_INFO_STRIDE
 GST_VIDEO_FORMAT_INFO_OFFSET
+GST_VIDEO_FORMAT_INFO_TILE_MODE
+GST_VIDEO_FORMAT_INFO_TILE_WS
+GST_VIDEO_FORMAT_INFO_TILE_HS
 gst_video_format_from_masks
 gst_video_format_from_fourcc
 gst_video_format_to_fourcc
@@ -2306,6 +2393,18 @@
 GST_VIDEO_FRAME_COMP_POFFSET
 GstVideoBufferFlags
 
+#video-tile.h
+<SUBSECTION>
+GstVideoTileType
+GstVideoTileMode
+gst_video_tile_get_index
+GST_VIDEO_TILE_MAKE_MODE
+GST_VIDEO_TILE_MODE_TYPE
+GST_VIDEO_TILE_MODE_IS_INDEXED
+GST_VIDEO_TILE_MAKE_STRIDE
+GST_VIDEO_TILE_X_TILES
+GST_VIDEO_TILE_Y_TILES
+
 #video-enumtypes.h
 <SUBSECTION Standard>
 gst_color_balance_type_get_type
@@ -2323,6 +2422,7 @@
 
 <SECTION>
 <FILE>gstvideopool</FILE>
+<TITLE>GstVideoPool</TITLE>
 <INCLUDE>gst/video/gstvideopool.h</INCLUDE>
 GstVideoBufferPool
 GstVideoBufferPoolClass
@@ -2360,6 +2460,7 @@
 gst_buffer_add_video_region_of_interest_meta_id
 gst_buffer_get_video_region_of_interest_meta
 gst_buffer_get_video_region_of_interest_meta_id
+GST_BUFFER_POOL_OPTION_VIDEO_GL_TEXTURE_UPLOAD_META
 GstVideoGLTextureUpload
 GstVideoGLTextureUploadMeta
 gst_buffer_add_video_gl_texture_upload_meta
@@ -2519,6 +2620,7 @@
 gst_video_decoder_get_max_errors
 gst_video_decoder_get_oldest_frame
 gst_video_decoder_get_packetized
+gst_video_decoder_get_pending_frame_size
 gst_video_decoder_get_qos_proportion
 gst_video_decoder_have_frame
 gst_video_decoder_get_latency
@@ -2529,6 +2631,8 @@
 gst_video_decoder_set_output_state
 gst_video_decoder_set_max_errors
 gst_video_decoder_set_packetized
+gst_video_decoder_get_needs_format
+gst_video_decoder_set_needs_format
 gst_video_decoder_merge_tags
 <SUBSECTION Standard>
 GST_IS_VIDEO_DECODER
@@ -2568,8 +2672,6 @@
 gst_video_encoder_set_headers
 gst_video_encoder_get_latency
 gst_video_encoder_set_latency
-gst_video_encoder_get_discont
-gst_video_encoder_set_discont
 gst_video_encoder_set_output_state
 gst_video_encoder_get_output_state
 gst_video_encoder_proxy_getcaps
diff --git a/docs/libs/html/api-index-deprecated.html b/docs/libs/html/api-index-deprecated.html
index e7a4d60..4939632 100644
--- a/docs/libs/html/api-index-deprecated.html
+++ b/docs/libs/html/api-index-deprecated.html
@@ -13,7 +13,7 @@
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts"></td>
+<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxR">R</a></span></td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><img src="up-insensitive.png" width="16" height="16" border="0"></td>
 <td><a accesskey="p" href="api-index-full.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
@@ -22,7 +22,11 @@
 <div class="index">
 <div class="titlepage"><div><div><h1 class="title">
 <a name="api-index-deprecated"></a>Index of deprecated API</h1></div></div></div>
-<a name="idx"></a>
+<a name="idx"></a><a name="idxR"></a><h3 class="title">R</h3>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstrtsptransport.html#gst-rtsp-transport-get-mime" title="gst_rtsp_transport_get_mime ()">gst_rtsp_transport_get_mime</a>, function in <a class="link" href="gst-plugins-base-libs-gstrtsptransport.html" title="gstrtsptransport">gstrtsptransport</a>
+</dt>
+<dd></dd>
 </div>
 <div class="footer">
 <hr>
diff --git a/docs/libs/html/api-index-full.html b/docs/libs/html/api-index-full.html
index 3f3b5a7..e2e51ff 100644
--- a/docs/libs/html/api-index-full.html
+++ b/docs/libs/html/api-index-full.html
@@ -1255,19 +1255,23 @@
 </dt>
 <dd></dd>
 <dt>
-gst_buffer_pool_config_get_video_alignment, function in gstvideopool
+<a class="link" href="gst-plugins-base-libs-GstVideoPool.html#gst-buffer-pool-config-get-video-alignment" title="gst_buffer_pool_config_get_video_alignment ()">gst_buffer_pool_config_get_video_alignment</a>, function in <a class="link" href="gst-plugins-base-libs-GstVideoPool.html" title="GstVideoPool">GstVideoPool</a>
 </dt>
 <dd></dd>
 <dt>
-gst_buffer_pool_config_set_video_alignment, function in gstvideopool
+<a class="link" href="gst-plugins-base-libs-GstVideoPool.html#gst-buffer-pool-config-set-video-alignment" title="gst_buffer_pool_config_set_video_alignment ()">gst_buffer_pool_config_set_video_alignment</a>, function in <a class="link" href="gst-plugins-base-libs-GstVideoPool.html" title="GstVideoPool">GstVideoPool</a>
 </dt>
 <dd></dd>
 <dt>
-GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT, macro in gstvideopool
+<a class="link" href="gst-plugins-base-libs-GstVideoPool.html#GST-BUFFER-POOL-OPTION-VIDEO-ALIGNMENT:CAPS" title="GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT">GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT</a>, macro in <a class="link" href="gst-plugins-base-libs-GstVideoPool.html" title="GstVideoPool">GstVideoPool</a>
 </dt>
 <dd></dd>
 <dt>
-GST_BUFFER_POOL_OPTION_VIDEO_META, macro in gstvideopool
+<a class="link" href="gst-plugins-base-libs-gstvideometa.html#GST-BUFFER-POOL-OPTION-VIDEO-GL-TEXTURE-UPLOAD-META:CAPS" title="GST_BUFFER_POOL_OPTION_VIDEO_GL_TEXTURE_UPLOAD_META">GST_BUFFER_POOL_OPTION_VIDEO_GL_TEXTURE_UPLOAD_META</a>, macro in <a class="link" href="gst-plugins-base-libs-gstvideometa.html" title="gstvideometa">gstvideometa</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-GstVideoPool.html#GST-BUFFER-POOL-OPTION-VIDEO-META:CAPS" title="GST_BUFFER_POOL_OPTION_VIDEO_META">GST_BUFFER_POOL_OPTION_VIDEO_META</a>, macro in <a class="link" href="gst-plugins-base-libs-GstVideoPool.html" title="GstVideoPool">GstVideoPool</a>
 </dt>
 <dd></dd>
 <dt>
@@ -1320,6 +1324,26 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-h265-caps-set-level-tier-and-profile" title="gst_codec_utils_h265_caps_set_level_tier_and_profile ()">gst_codec_utils_h265_caps_set_level_tier_and_profile</a>, function in <a class="link" href="gst-plugins-base-libs-gstpbutilscodecutils.html" title="gstpbutilscodecutils">gstpbutilscodecutils</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-h265-get-level" title="gst_codec_utils_h265_get_level ()">gst_codec_utils_h265_get_level</a>, function in <a class="link" href="gst-plugins-base-libs-gstpbutilscodecutils.html" title="gstpbutilscodecutils">gstpbutilscodecutils</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-h265-get-level-idc" title="gst_codec_utils_h265_get_level_idc ()">gst_codec_utils_h265_get_level_idc</a>, function in <a class="link" href="gst-plugins-base-libs-gstpbutilscodecutils.html" title="gstpbutilscodecutils">gstpbutilscodecutils</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-h265-get-profile" title="gst_codec_utils_h265_get_profile ()">gst_codec_utils_h265_get_profile</a>, function in <a class="link" href="gst-plugins-base-libs-gstpbutilscodecutils.html" title="gstpbutilscodecutils">gstpbutilscodecutils</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-h265-get-tier" title="gst_codec_utils_h265_get_tier ()">gst_codec_utils_h265_get_tier</a>, function in <a class="link" href="gst-plugins-base-libs-gstpbutilscodecutils.html" title="gstpbutilscodecutils">gstpbutilscodecutils</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-mpeg4video-caps-set-level-and-profile" title="gst_codec_utils_mpeg4video_caps_set_level_and_profile ()">gst_codec_utils_mpeg4video_caps_set_level_and_profile</a>, function in <a class="link" href="gst-plugins-base-libs-gstpbutilscodecutils.html" title="gstpbutilscodecutils">gstpbutilscodecutils</a>
 </dt>
 <dd></dd>
@@ -1658,6 +1682,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gst-plugins-base-libs-encoding-profile.html#GstEncodingProfile--restriction-caps" title="The “restriction-caps” property">GstEncodingProfile:restriction-caps</a>, object property in <a class="link" href="gst-plugins-base-libs-encoding-profile.html" title="encoding-profile">encoding-profile</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gst-plugins-base-libs-encoding-profile.html#GstEncodingTarget-struct" title="GstEncodingTarget">GstEncodingTarget</a>, struct in <a class="link" href="gst-plugins-base-libs-encoding-profile.html" title="encoding-profile">encoding-profile</a>
 </dt>
 <dd></dd>
@@ -2077,6 +2105,238 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYCacheType" title="enum GstMIKEYCacheType">GstMIKEYCacheType</a>, enum in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYEncAlg" title="enum GstMIKEYEncAlg">GstMIKEYEncAlg</a>, enum in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMacAlg" title="enum GstMIKEYMacAlg">GstMIKEYMacAlg</a>, enum in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMapSRTP" title="GstMIKEYMapSRTP">GstMIKEYMapSRTP</a>, struct in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMapType" title="enum GstMIKEYMapType">GstMIKEYMapType</a>, enum in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage">GstMIKEYMessage</a>, struct in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload">GstMIKEYPayload</a>, struct in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadClearFunc" title="GstMIKEYPayloadClearFunc ()">GstMIKEYPayloadClearFunc</a>, user_function in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadCopyFunc" title="GstMIKEYPayloadCopyFunc ()">GstMIKEYPayloadCopyFunc</a>, user_function in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadKEMAC" title="GstMIKEYPayloadKEMAC">GstMIKEYPayloadKEMAC</a>, struct in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadPKE" title="GstMIKEYPayloadPKE">GstMIKEYPayloadPKE</a>, struct in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadRAND" title="GstMIKEYPayloadRAND">GstMIKEYPayloadRAND</a>, struct in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadSP" title="GstMIKEYPayloadSP">GstMIKEYPayloadSP</a>, struct in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadSPParam" title="GstMIKEYPayloadSPParam">GstMIKEYPayloadSPParam</a>, struct in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadT" title="GstMIKEYPayloadT">GstMIKEYPayloadT</a>, struct in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadType" title="enum GstMIKEYPayloadType">GstMIKEYPayloadType</a>, enum in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPRFFunc" title="enum GstMIKEYPRFFunc">GstMIKEYPRFFunc</a>, enum in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYSecProto" title="enum GstMIKEYSecProto">GstMIKEYSecProto</a>, enum in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYSecSRTP" title="enum GstMIKEYSecSRTP">GstMIKEYSecSRTP</a>, enum in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYTSType" title="enum GstMIKEYTSType">GstMIKEYTSType</a>, enum in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYType" title="enum GstMIKEYType">GstMIKEYType</a>, enum in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-add-cs-srtp" title="gst_mikey_message_add_cs_srtp ()">gst_mikey_message_add_cs_srtp</a>, function in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-add-payload" title="gst_mikey_message_add_payload ()">gst_mikey_message_add_payload</a>, function in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-add-pke" title="gst_mikey_message_add_pke ()">gst_mikey_message_add_pke</a>, function in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-add-rand" title="gst_mikey_message_add_rand ()">gst_mikey_message_add_rand</a>, function in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-add-rand-len" title="gst_mikey_message_add_rand_len ()">gst_mikey_message_add_rand_len</a>, function in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-add-t" title="gst_mikey_message_add_t ()">gst_mikey_message_add_t</a>, function in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-add-t-now-ntp-utc" title="gst_mikey_message_add_t_now_ntp_utc ()">gst_mikey_message_add_t_now_ntp_utc</a>, function in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-find-payload" title="gst_mikey_message_find_payload ()">gst_mikey_message_find_payload</a>, function in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-free" title="gst_mikey_message_free ()">gst_mikey_message_free</a>, function in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-get-cs-srtp" title="gst_mikey_message_get_cs_srtp ()">gst_mikey_message_get_cs_srtp</a>, function in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-get-n-cs" title="gst_mikey_message_get_n_cs ()">gst_mikey_message_get_n_cs</a>, function in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-get-n-payloads" title="gst_mikey_message_get_n_payloads ()">gst_mikey_message_get_n_payloads</a>, function in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-get-payload" title="gst_mikey_message_get_payload ()">gst_mikey_message_get_payload</a>, function in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-insert-cs-srtp" title="gst_mikey_message_insert_cs_srtp ()">gst_mikey_message_insert_cs_srtp</a>, function in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-insert-payload" title="gst_mikey_message_insert_payload ()">gst_mikey_message_insert_payload</a>, function in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-new" title="gst_mikey_message_new ()">gst_mikey_message_new</a>, function in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-new-from-bytes" title="gst_mikey_message_new_from_bytes ()">gst_mikey_message_new_from_bytes</a>, function in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-new-from-data" title="gst_mikey_message_new_from_data ()">gst_mikey_message_new_from_data</a>, function in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-remove-cs-srtp" title="gst_mikey_message_remove_cs_srtp ()">gst_mikey_message_remove_cs_srtp</a>, function in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-remove-payload" title="gst_mikey_message_remove_payload ()">gst_mikey_message_remove_payload</a>, function in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-replace-cs-srtp" title="gst_mikey_message_replace_cs_srtp ()">gst_mikey_message_replace_cs_srtp</a>, function in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-replace-payload" title="gst_mikey_message_replace_payload ()">gst_mikey_message_replace_payload</a>, function in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-set-info" title="gst_mikey_message_set_info ()">gst_mikey_message_set_info</a>, function in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-to-bytes" title="gst_mikey_message_to_bytes ()">gst_mikey_message_to_bytes</a>, function in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-copy" title="gst_mikey_payload_copy ()">gst_mikey_payload_copy</a>, function in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-free" title="gst_mikey_payload_free ()">gst_mikey_payload_free</a>, function in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-kemac-set" title="gst_mikey_payload_kemac_set ()">gst_mikey_payload_kemac_set</a>, function in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-new" title="gst_mikey_payload_new ()">gst_mikey_payload_new</a>, function in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-pke-set" title="gst_mikey_payload_pke_set ()">gst_mikey_payload_pke_set</a>, function in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-rand-set" title="gst_mikey_payload_rand_set ()">gst_mikey_payload_rand_set</a>, function in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-sp-add-param" title="gst_mikey_payload_sp_add_param ()">gst_mikey_payload_sp_add_param</a>, function in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-sp-get-n-params" title="gst_mikey_payload_sp_get_n_params ()">gst_mikey_payload_sp_get_n_params</a>, function in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-sp-get-param" title="gst_mikey_payload_sp_get_param ()">gst_mikey_payload_sp_get_param</a>, function in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-sp-remove-param" title="gst_mikey_payload_sp_remove_param ()">gst_mikey_payload_sp_remove_param</a>, function in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-sp-set" title="gst_mikey_payload_sp_set ()">gst_mikey_payload_sp_set</a>, function in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-t-set" title="gst_mikey_payload_t_set ()">gst_mikey_payload_t_set</a>, function in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#GST-MIKEY-VERSION:CAPS" title="GST_MIKEY_VERSION">GST_MIKEY_VERSION</a>, macro in <a class="link" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">gstmikey</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gst-plugins-base-libs-gstpbutilsmissingplugins.html#gst-missing-decoder-installer-detail-new" title="gst_missing_decoder_installer_detail_new ()">gst_missing_decoder_installer_detail_new</a>, function in <a class="link" href="gst-plugins-base-libs-gstpbutilsmissingplugins.html" title="gstpbutilsmissingplugins">gstpbutilsmissingplugins</a>
 </dt>
 <dd></dd>
@@ -2672,6 +2932,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gst-plugins-base-libs-gstrtpbasedepayload.html#GstRTPBaseDepayload--stats" title="The “stats” property">GstRTPBaseDepayload:stats</a>, object property in <a class="link" href="gst-plugins-base-libs-gstrtpbasedepayload.html" title="gstrtpbasedepayload">gstrtpbasedepayload</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gst-plugins-base-libs-gstrtpbasedepayload.html#GstRTPBaseDepayloadClass" title="struct GstRTPBaseDepayloadClass">GstRTPBaseDepayloadClass</a>, struct in <a class="link" href="gst-plugins-base-libs-gstrtpbasedepayload.html" title="gstrtpbasedepayload">gstrtpbasedepayload</a>
 </dt>
 <dd></dd>
@@ -2716,6 +2980,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gst-plugins-base-libs-gstrtpbasepayload.html#GstRTPBasePayload--stats" title="The “stats” property">GstRTPBasePayload:stats</a>, object property in <a class="link" href="gst-plugins-base-libs-gstrtpbasepayload.html" title="gstrtpbasepayload">gstrtpbasepayload</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gst-plugins-base-libs-gstrtpbasepayload.html#GstRTPBasePayload--timestamp" title="The “timestamp” property">GstRTPBasePayload:timestamp</a>, object property in <a class="link" href="gst-plugins-base-libs-gstrtpbasepayload.html" title="gstrtpbasepayload">gstrtpbasepayload</a>
 </dt>
 <dd></dd>
@@ -3532,6 +3800,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gst-plugins-base-libs-gstrtspconnection.html#gst-rtsp-watch-wait-backlog" title="gst_rtsp_watch_wait_backlog ()">gst_rtsp_watch_wait_backlog</a>, function in <a class="link" href="gst-plugins-base-libs-gstrtspconnection.html" title="gstrtspconnection">gstrtspconnection</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gst-plugins-base-libs-gstrtspconnection.html#gst-rtsp-watch-write-data" title="gst_rtsp_watch_write_data ()">gst_rtsp_watch_write_data</a>, function in <a class="link" href="gst-plugins-base-libs-gstrtspconnection.html" title="gstrtspconnection">gstrtspconnection</a>
 </dt>
 <dd></dd>
@@ -4455,11 +4727,11 @@
 </dt>
 <dd></dd>
 <dt>
-GstVideoBufferPool, struct in gstvideopool
+<a class="link" href="gst-plugins-base-libs-GstVideoPool.html#GstVideoBufferPool" title="struct GstVideoBufferPool">GstVideoBufferPool</a>, struct in <a class="link" href="gst-plugins-base-libs-GstVideoPool.html" title="GstVideoPool">GstVideoPool</a>
 </dt>
 <dd></dd>
 <dt>
-GstVideoBufferPoolClass, struct in gstvideopool
+<a class="link" href="gst-plugins-base-libs-GstVideoPool.html#GstVideoBufferPoolClass" title="struct GstVideoBufferPoolClass">GstVideoBufferPoolClass</a>, struct in <a class="link" href="gst-plugins-base-libs-GstVideoPool.html" title="GstVideoPool">GstVideoPool</a>
 </dt>
 <dd></dd>
 <dt>
@@ -4639,6 +4911,14 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gst-plugins-base-libs-gstvideo.html#GstVideoTileMode" title="enum GstVideoTileMode">GstVideoTileMode</a>, enum in <a class="link" href="gst-plugins-base-libs-gstvideo.html" title="gstvideo">gstvideo</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstvideo.html#GstVideoTileType" title="enum GstVideoTileType">GstVideoTileType</a>, enum in <a class="link" href="gst-plugins-base-libs-gstvideo.html" title="gstvideo">gstvideo</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gst-plugins-base-libs-gstvideo.html#GstVideoTransferFunction" title="enum GstVideoTransferFunction">GstVideoTransferFunction</a>, enum in <a class="link" href="gst-plugins-base-libs-gstvideo.html" title="gstvideo">gstvideo</a>
 </dt>
 <dd></dd>
@@ -4647,7 +4927,7 @@
 </dt>
 <dd></dd>
 <dt>
-gst_video_buffer_pool_new, function in gstvideopool
+<a class="link" href="gst-plugins-base-libs-GstVideoPool.html#gst-video-buffer-pool-new" title="gst_video_buffer_pool_new ()">gst_video_buffer_pool_new</a>, function in <a class="link" href="gst-plugins-base-libs-GstVideoPool.html" title="GstVideoPool">GstVideoPool</a>
 </dt>
 <dd></dd>
 <dt>
@@ -4835,6 +5115,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gst-plugins-base-libs-GstVideoDecoder.html#gst-video-decoder-get-needs-format" title="gst_video_decoder_get_needs_format ()">gst_video_decoder_get_needs_format</a>, function in <a class="link" href="gst-plugins-base-libs-GstVideoDecoder.html" title="GstVideoDecoder">GstVideoDecoder</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gst-plugins-base-libs-GstVideoDecoder.html#gst-video-decoder-get-oldest-frame" title="gst_video_decoder_get_oldest_frame ()">gst_video_decoder_get_oldest_frame</a>, function in <a class="link" href="gst-plugins-base-libs-GstVideoDecoder.html" title="GstVideoDecoder">GstVideoDecoder</a>
 </dt>
 <dd></dd>
@@ -4847,6 +5131,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gst-plugins-base-libs-GstVideoDecoder.html#gst-video-decoder-get-pending-frame-size" title="gst_video_decoder_get_pending_frame_size ()">gst_video_decoder_get_pending_frame_size</a>, function in <a class="link" href="gst-plugins-base-libs-GstVideoDecoder.html" title="GstVideoDecoder">GstVideoDecoder</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gst-plugins-base-libs-GstVideoDecoder.html#gst-video-decoder-get-qos-proportion" title="gst_video_decoder_get_qos_proportion ()">gst_video_decoder_get_qos_proportion</a>, function in <a class="link" href="gst-plugins-base-libs-GstVideoDecoder.html" title="GstVideoDecoder">GstVideoDecoder</a>
 </dt>
 <dd></dd>
@@ -4891,6 +5179,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gst-plugins-base-libs-GstVideoDecoder.html#gst-video-decoder-set-needs-format" title="gst_video_decoder_set_needs_format ()">gst_video_decoder_set_needs_format</a>, function in <a class="link" href="gst-plugins-base-libs-GstVideoDecoder.html" title="GstVideoDecoder">GstVideoDecoder</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gst-plugins-base-libs-GstVideoDecoder.html#gst-video-decoder-set-output-state" title="gst_video_decoder_set_output_state ()">gst_video_decoder_set_output_state</a>, function in <a class="link" href="gst-plugins-base-libs-GstVideoDecoder.html" title="GstVideoDecoder">GstVideoDecoder</a>
 </dt>
 <dd></dd>
@@ -4951,10 +5243,6 @@
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#gst-video-encoder-get-discont" title="gst_video_encoder_get_discont ()">gst_video_encoder_get_discont</a>, function in <a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html" title="GstVideoEncoder">GstVideoEncoder</a>
-</dt>
-<dd></dd>
-<dt>
 <a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#gst-video-encoder-get-frame" title="gst_video_encoder_get_frame ()">gst_video_encoder_get_frame</a>, function in <a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html" title="GstVideoEncoder">GstVideoEncoder</a>
 </dt>
 <dd></dd>
@@ -4995,10 +5283,6 @@
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#gst-video-encoder-set-discont" title="gst_video_encoder_set_discont ()">gst_video_encoder_set_discont</a>, function in <a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html" title="GstVideoEncoder">GstVideoEncoder</a>
-</dt>
-<dd></dd>
-<dt>
 <a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#gst-video-encoder-set-headers" title="gst_video_encoder_set_headers ()">gst_video_encoder_set_headers</a>, function in <a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html" title="GstVideoEncoder">GstVideoEncoder</a>
 </dt>
 <dd></dd>
@@ -5179,6 +5463,18 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gst-plugins-base-libs-gstvideo.html#GST-VIDEO-FORMAT-INFO-TILE-HS:CAPS" title="GST_VIDEO_FORMAT_INFO_TILE_HS()">GST_VIDEO_FORMAT_INFO_TILE_HS</a>, macro in <a class="link" href="gst-plugins-base-libs-gstvideo.html" title="gstvideo">gstvideo</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstvideo.html#GST-VIDEO-FORMAT-INFO-TILE-MODE:CAPS" title="GST_VIDEO_FORMAT_INFO_TILE_MODE()">GST_VIDEO_FORMAT_INFO_TILE_MODE</a>, macro in <a class="link" href="gst-plugins-base-libs-gstvideo.html" title="gstvideo">gstvideo</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstvideo.html#GST-VIDEO-FORMAT-INFO-TILE-WS:CAPS" title="GST_VIDEO_FORMAT_INFO_TILE_WS()">GST_VIDEO_FORMAT_INFO_TILE_WS</a>, macro in <a class="link" href="gst-plugins-base-libs-gstvideo.html" title="gstvideo">gstvideo</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gst-plugins-base-libs-gstvideo.html#GST-VIDEO-FORMAT-INFO-W-SUB:CAPS" title="GST_VIDEO_FORMAT_INFO_W_SUB()">GST_VIDEO_FORMAT_INFO_W_SUB</a>, macro in <a class="link" href="gst-plugins-base-libs-gstvideo.html" title="gstvideo">gstvideo</a>
 </dt>
 <dd></dd>
@@ -5687,6 +5983,34 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gst-plugins-base-libs-gstvideo.html#gst-video-tile-get-index" title="gst_video_tile_get_index ()">gst_video_tile_get_index</a>, function in <a class="link" href="gst-plugins-base-libs-gstvideo.html" title="gstvideo">gstvideo</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstvideo.html#GST-VIDEO-TILE-MAKE-MODE:CAPS" title="GST_VIDEO_TILE_MAKE_MODE()">GST_VIDEO_TILE_MAKE_MODE</a>, macro in <a class="link" href="gst-plugins-base-libs-gstvideo.html" title="gstvideo">gstvideo</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstvideo.html#GST-VIDEO-TILE-MAKE-STRIDE:CAPS" title="GST_VIDEO_TILE_MAKE_STRIDE()">GST_VIDEO_TILE_MAKE_STRIDE</a>, macro in <a class="link" href="gst-plugins-base-libs-gstvideo.html" title="gstvideo">gstvideo</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstvideo.html#GST-VIDEO-TILE-MODE-IS-INDEXED:CAPS" title="GST_VIDEO_TILE_MODE_IS_INDEXED()">GST_VIDEO_TILE_MODE_IS_INDEXED</a>, macro in <a class="link" href="gst-plugins-base-libs-gstvideo.html" title="gstvideo">gstvideo</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstvideo.html#GST-VIDEO-TILE-MODE-TYPE:CAPS" title="GST_VIDEO_TILE_MODE_TYPE()">GST_VIDEO_TILE_MODE_TYPE</a>, macro in <a class="link" href="gst-plugins-base-libs-gstvideo.html" title="gstvideo">gstvideo</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstvideo.html#GST-VIDEO-TILE-X-TILES:CAPS" title="GST_VIDEO_TILE_X_TILES()">GST_VIDEO_TILE_X_TILES</a>, macro in <a class="link" href="gst-plugins-base-libs-gstvideo.html" title="gstvideo">gstvideo</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-base-libs-gstvideo.html#GST-VIDEO-TILE-Y-TILES:CAPS" title="GST_VIDEO_TILE_Y_TILES()">GST_VIDEO_TILE_Y_TILES</a>, macro in <a class="link" href="gst-plugins-base-libs-gstvideo.html" title="gstvideo">gstvideo</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gst-plugins-base-libs-gsttagvorbis.html#gst-vorbis-tag-add" title="gst_vorbis_tag_add ()">gst_vorbis_tag_add</a>, function in <a class="link" href="gst-plugins-base-libs-gsttagvorbis.html" title="gsttagvorbis">gsttagvorbis</a>
 </dt>
 <dd></dd>
diff --git a/docs/libs/html/gst-plugins-base-libs-1.0.devhelp2 b/docs/libs/html/gst-plugins-base-libs-1.0.devhelp2
index 5e9becf..1fdd36b 100644
--- a/docs/libs/html/gst-plugins-base-libs-1.0.devhelp2
+++ b/docs/libs/html/gst-plugins-base-libs-1.0.devhelp2
@@ -19,7 +19,6 @@
         <sub name="gstaudiodecoder" link="gst-plugins-base-libs-gstaudiodecoder.html"/>
         <sub name="gstaudioencoder" link="gst-plugins-base-libs-gstaudioencoder.html"/>
         <sub name="gstaudiofilter" link="gst-plugins-base-libs-gstaudiofilter.html"/>
-        <sub name="gstaudiomixerutils" link="gst-plugins-base-libs-gstaudiomixerutils.html"/>
         <sub name="gstaudiosink" link="gst-plugins-base-libs-gstaudiosink.html"/>
         <sub name="gstaudiosrc" link="gst-plugins-base-libs-gstaudiosrc.html"/>
         <sub name="gstaudiobasesink" link="gst-plugins-base-libs-gstaudiobasesink.html"/>
@@ -60,6 +59,9 @@
       <sub name="SDP Library" link="gstreamer-sdp.html">
         <sub name="gstsdpmessage" link="gst-plugins-base-libs-gstsdpmessage.html"/>
       </sub>
+      <sub name="MIKEY Library" link="gstreamer-mikey.html">
+        <sub name="gstmikey" link="gst-plugins-base-libs-gstmikey.html"/>
+      </sub>
       <sub name="Tag Support Library" link="gstreamer-tag.html">
         <sub name="gsttag" link="gst-plugins-base-libs-gsttag.html"/>
         <sub name="gsttagvorbis" link="gst-plugins-base-libs-gsttagvorbis.html"/>
@@ -94,6 +96,7 @@
         <sub name="gstvideooverlay" link="gst-plugins-base-libs-gstvideooverlay.html"/>
         <sub name="GstVideoDecoder" link="gst-plugins-base-libs-GstVideoDecoder.html"/>
         <sub name="GstVideoEncoder" link="gst-plugins-base-libs-GstVideoEncoder.html"/>
+        <sub name="GstVideoPool" link="gst-plugins-base-libs-GstVideoPool.html"/>
         <sub name="gstvideoutils" link="gst-plugins-base-libs-gstvideoutils.html"/>
       </sub>
     </sub>
@@ -360,7 +363,7 @@
     <keyword type="function" name="gst_audio_reorder_channels ()" link="gst-plugins-base-libs-gstaudiochannels.html#gst-audio-reorder-channels"/>
     <keyword type="function" name="gst_audio_get_channel_reorder_map ()" link="gst-plugins-base-libs-gstaudiochannels.html#gst-audio-get-channel-reorder-map"/>
     <keyword type="enum" name="enum GstAudioChannelPosition" link="gst-plugins-base-libs-gstaudiochannels.html#GstAudioChannelPosition"/>
-    <keyword type="" name="" link="gst-plugins-base-libs-gstaudioringbuffer.html#id-1.2.6.16.8.2"/>
+    <keyword type="" name="" link="gst-plugins-base-libs-gstaudioringbuffer.html#id-1.2.6.15.8.2"/>
     <keyword type="function" name="GstAudioRingBufferCallback ()" link="gst-plugins-base-libs-gstaudioringbuffer.html#GstAudioRingBufferCallback"/>
     <keyword type="macro" name="GST_AUDIO_RING_BUFFER_BROADCAST()" link="gst-plugins-base-libs-gstaudioringbuffer.html#GST-AUDIO-RING-BUFFER-BROADCAST:CAPS"/>
     <keyword type="macro" name="GST_AUDIO_RING_BUFFER_GET_COND()" link="gst-plugins-base-libs-gstaudioringbuffer.html#GST-AUDIO-RING-BUFFER-GET-COND:CAPS"/>
@@ -401,7 +404,7 @@
     <keyword type="enum" name="enum GstAudioRingBufferFormatType" link="gst-plugins-base-libs-gstaudioringbuffer.html#GstAudioRingBufferFormatType"/>
     <keyword type="function" name="gst_audio_iec61937_frame_size ()" link="gst-plugins-base-libs-gstaudioiec61937.html#gst-audio-iec61937-frame-size"/>
     <keyword type="function" name="gst_audio_iec61937_payload ()" link="gst-plugins-base-libs-gstaudioiec61937.html#gst-audio-iec61937-payload"/>
-    <keyword type="" name="" link="gst-plugins-base-libs-gststreamvolume.html#id-1.2.6.18.10.2"/>
+    <keyword type="" name="" link="gst-plugins-base-libs-gststreamvolume.html#id-1.2.6.17.10.2"/>
     <keyword type="function" name="gst_stream_volume_get_volume ()" link="gst-plugins-base-libs-gststreamvolume.html#gst-stream-volume-get-volume"/>
     <keyword type="function" name="gst_stream_volume_set_volume ()" link="gst-plugins-base-libs-gststreamvolume.html#gst-stream-volume-set-volume"/>
     <keyword type="function" name="gst_stream_volume_get_mute ()" link="gst-plugins-base-libs-gststreamvolume.html#gst-stream-volume-get-mute"/>
@@ -474,6 +477,7 @@
     <keyword type="function" name="gst_rtp_base_depayload_push_list ()" link="gst-plugins-base-libs-gstrtpbasedepayload.html#gst-rtp-base-depayload-push-list"/>
     <keyword type="struct" name="struct GstRTPBaseDepayload" link="gst-plugins-base-libs-gstrtpbasedepayload.html#GstRTPBaseDepayload-struct"/>
     <keyword type="struct" name="struct GstRTPBaseDepayloadClass" link="gst-plugins-base-libs-gstrtpbasedepayload.html#GstRTPBaseDepayloadClass"/>
+    <keyword type="property" name="The “stats” property" link="gst-plugins-base-libs-gstrtpbasedepayload.html#GstRTPBaseDepayload--stats"/>
     <keyword type="macro" name="GST_RTP_BASE_PAYLOAD_MTU()" link="gst-plugins-base-libs-gstrtpbasepayload.html#GST-RTP-BASE-PAYLOAD-MTU:CAPS"/>
     <keyword type="macro" name="GST_RTP_BASE_PAYLOAD_PT()" link="gst-plugins-base-libs-gstrtpbasepayload.html#GST-RTP-BASE-PAYLOAD-PT:CAPS"/>
     <keyword type="macro" name="GST_RTP_BASE_PAYLOAD_SINKPAD()" link="gst-plugins-base-libs-gstrtpbasepayload.html#GST-RTP-BASE-PAYLOAD-SINKPAD:CAPS"/>
@@ -494,6 +498,7 @@
     <keyword type="property" name="The “seqnum” property" link="gst-plugins-base-libs-gstrtpbasepayload.html#GstRTPBasePayload--seqnum"/>
     <keyword type="property" name="The “seqnum-offset” property" link="gst-plugins-base-libs-gstrtpbasepayload.html#GstRTPBasePayload--seqnum-offset"/>
     <keyword type="property" name="The “ssrc” property" link="gst-plugins-base-libs-gstrtpbasepayload.html#GstRTPBasePayload--ssrc"/>
+    <keyword type="property" name="The “stats” property" link="gst-plugins-base-libs-gstrtpbasepayload.html#GstRTPBasePayload--stats"/>
     <keyword type="property" name="The “timestamp” property" link="gst-plugins-base-libs-gstrtpbasepayload.html#GstRTPBasePayload--timestamp"/>
     <keyword type="property" name="The “timestamp-offset” property" link="gst-plugins-base-libs-gstrtpbasepayload.html#GstRTPBasePayload--timestamp-offset"/>
     <keyword type="" name="" link="gst-plugins-base-libs-gstrtpbuffer.html#id-1.2.9.6.7.2"/>
@@ -662,8 +667,9 @@
     <keyword type="function" name="gst_rtsp_watch_reset ()" link="gst-plugins-base-libs-gstrtspconnection.html#gst-rtsp-watch-reset"/>
     <keyword type="function" name="gst_rtsp_watch_send_message ()" link="gst-plugins-base-libs-gstrtspconnection.html#gst-rtsp-watch-send-message"/>
     <keyword type="function" name="gst_rtsp_watch_write_data ()" link="gst-plugins-base-libs-gstrtspconnection.html#gst-rtsp-watch-write-data"/>
-    <keyword type="function" name="gst_rtsp_watch_get_send_backlog ()" link="gst-plugins-base-libs-gstrtspconnection.html#gst-rtsp-watch-get-send-backlog" since="1.1.1"/>
-    <keyword type="function" name="gst_rtsp_watch_set_send_backlog ()" link="gst-plugins-base-libs-gstrtspconnection.html#gst-rtsp-watch-set-send-backlog" since="1.1.1"/>
+    <keyword type="function" name="gst_rtsp_watch_get_send_backlog ()" link="gst-plugins-base-libs-gstrtspconnection.html#gst-rtsp-watch-get-send-backlog" since="1.2"/>
+    <keyword type="function" name="gst_rtsp_watch_set_send_backlog ()" link="gst-plugins-base-libs-gstrtspconnection.html#gst-rtsp-watch-set-send-backlog" since="1.2"/>
+    <keyword type="function" name="gst_rtsp_watch_wait_backlog ()" link="gst-plugins-base-libs-gstrtspconnection.html#gst-rtsp-watch-wait-backlog" since="1.4"/>
     <keyword type="struct" name="GstRTSPConnection" link="gst-plugins-base-libs-gstrtspconnection.html#GstRTSPConnection"/>
     <keyword type="struct" name="GstRTSPWatch" link="gst-plugins-base-libs-gstrtspconnection.html#GstRTSPWatch"/>
     <keyword type="struct" name="GstRTSPWatchFuncs" link="gst-plugins-base-libs-gstrtspconnection.html#GstRTSPWatchFuncs"/>
@@ -675,7 +681,7 @@
     <keyword type="function" name="gst_rtsp_header_allow_multiple ()" link="gst-plugins-base-libs-gstrtspdefs.html#gst-rtsp-header-allow-multiple"/>
     <keyword type="function" name="gst_rtsp_status_as_text ()" link="gst-plugins-base-libs-gstrtspdefs.html#gst-rtsp-status-as-text"/>
     <keyword type="function" name="gst_rtsp_options_as_text ()" link="gst-plugins-base-libs-gstrtspdefs.html#gst-rtsp-options-as-text"/>
-    <keyword type="function" name="gst_rtsp_options_from_text ()" link="gst-plugins-base-libs-gstrtspdefs.html#gst-rtsp-options-from-text" since="1.1.1"/>
+    <keyword type="function" name="gst_rtsp_options_from_text ()" link="gst-plugins-base-libs-gstrtspdefs.html#gst-rtsp-options-from-text" since="1.2"/>
     <keyword type="function" name="gst_rtsp_find_header_field ()" link="gst-plugins-base-libs-gstrtspdefs.html#gst-rtsp-find-header-field"/>
     <keyword type="function" name="gst_rtsp_find_method ()" link="gst-plugins-base-libs-gstrtspdefs.html#gst-rtsp-find-method"/>
     <keyword type="macro" name="GST_RTSP_AUTH_MAX" link="gst-plugins-base-libs-gstrtspdefs.html#GST-RTSP-AUTH-MAX:CAPS"/>
@@ -718,20 +724,20 @@
     <keyword type="enum" name="enum GstRTSPMsgType" link="gst-plugins-base-libs-gstrtspmessage.html#GstRTSPMsgType"/>
     <keyword type="struct" name="struct GstRTSPMessage" link="gst-plugins-base-libs-gstrtspmessage.html#GstRTSPMessage"/>
     <keyword type="function" name="gst_rtsp_range_parse ()" link="gst-plugins-base-libs-gstrtsprange.html#gst-rtsp-range-parse"/>
-    <keyword type="function" name="gst_rtsp_range_get_times ()" link="gst-plugins-base-libs-gstrtsprange.html#gst-rtsp-range-get-times" since="1.1.1"/>
+    <keyword type="function" name="gst_rtsp_range_get_times ()" link="gst-plugins-base-libs-gstrtsprange.html#gst-rtsp-range-get-times" since="1.2"/>
     <keyword type="function" name="gst_rtsp_range_to_string ()" link="gst-plugins-base-libs-gstrtsprange.html#gst-rtsp-range-to-string"/>
     <keyword type="function" name="gst_rtsp_range_convert_units ()" link="gst-plugins-base-libs-gstrtsprange.html#gst-rtsp-range-convert-units"/>
     <keyword type="function" name="gst_rtsp_range_free ()" link="gst-plugins-base-libs-gstrtsprange.html#gst-rtsp-range-free"/>
     <keyword type="enum" name="enum GstRTSPRangeUnit" link="gst-plugins-base-libs-gstrtsprange.html#GstRTSPRangeUnit"/>
     <keyword type="struct" name="struct GstRTSPTimeRange" link="gst-plugins-base-libs-gstrtsprange.html#GstRTSPTimeRange"/>
     <keyword type="struct" name="struct GstRTSPTime" link="gst-plugins-base-libs-gstrtsprange.html#GstRTSPTime"/>
-    <keyword type="struct" name="struct GstRTSPTime2" link="gst-plugins-base-libs-gstrtsprange.html#GstRTSPTime2" since="1.1.1"/>
+    <keyword type="struct" name="struct GstRTSPTime2" link="gst-plugins-base-libs-gstrtsprange.html#GstRTSPTime2" since="1.2"/>
     <keyword type="enum" name="enum GstRTSPTimeType" link="gst-plugins-base-libs-gstrtsprange.html#GstRTSPTimeType"/>
     <keyword type="function" name="gst_rtsp_transport_new ()" link="gst-plugins-base-libs-gstrtsptransport.html#gst-rtsp-transport-new"/>
     <keyword type="function" name="gst_rtsp_transport_init ()" link="gst-plugins-base-libs-gstrtsptransport.html#gst-rtsp-transport-init"/>
     <keyword type="function" name="gst_rtsp_transport_parse ()" link="gst-plugins-base-libs-gstrtsptransport.html#gst-rtsp-transport-parse"/>
     <keyword type="function" name="gst_rtsp_transport_as_text ()" link="gst-plugins-base-libs-gstrtsptransport.html#gst-rtsp-transport-as-text"/>
-    <keyword type="function" name="gst_rtsp_transport_get_mime ()" link="gst-plugins-base-libs-gstrtsptransport.html#gst-rtsp-transport-get-mime"/>
+    <keyword type="function" name="gst_rtsp_transport_get_mime ()" link="gst-plugins-base-libs-gstrtsptransport.html#gst-rtsp-transport-get-mime" deprecated="This functions only deals with the GstRTSPTransMode and only"/>
     <keyword type="function" name="gst_rtsp_transport_get_manager ()" link="gst-plugins-base-libs-gstrtsptransport.html#gst-rtsp-transport-get-manager"/>
     <keyword type="function" name="gst_rtsp_transport_free ()" link="gst-plugins-base-libs-gstrtsptransport.html#gst-rtsp-transport-free"/>
     <keyword type="enum" name="enum GstRTSPTransMode" link="gst-plugins-base-libs-gstrtsptransport.html#GstRTSPTransMode"/>
@@ -882,7 +888,66 @@
     <keyword type="struct" name="GstSDPAttribute" link="gst-plugins-base-libs-gstsdpmessage.html#GstSDPAttribute"/>
     <keyword type="struct" name="GstSDPMedia" link="gst-plugins-base-libs-gstsdpmessage.html#GstSDPMedia"/>
     <keyword type="struct" name="GstSDPMessage" link="gst-plugins-base-libs-gstsdpmessage.html#GstSDPMessage"/>
-    <keyword type="" name="" link="gst-plugins-base-libs-gsttag.html#id-1.2.12.3.7.2"/>
+    <keyword type="" name="" link="gst-plugins-base-libs-gstmikey.html#id-1.2.12.3.7.2"/>
+    <keyword type="function" name="gst_mikey_message_new ()" link="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-new"/>
+    <keyword type="function" name="gst_mikey_message_new_from_bytes ()" link="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-new-from-bytes"/>
+    <keyword type="function" name="gst_mikey_message_new_from_data ()" link="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-new-from-data"/>
+    <keyword type="function" name="gst_mikey_message_free ()" link="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-free"/>
+    <keyword type="function" name="gst_mikey_message_to_bytes ()" link="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-to-bytes"/>
+    <keyword type="function" name="gst_mikey_message_set_info ()" link="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-set-info"/>
+    <keyword type="function" name="gst_mikey_message_get_n_cs ()" link="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-get-n-cs"/>
+    <keyword type="function" name="gst_mikey_message_get_cs_srtp ()" link="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-get-cs-srtp"/>
+    <keyword type="function" name="gst_mikey_message_insert_cs_srtp ()" link="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-insert-cs-srtp"/>
+    <keyword type="function" name="gst_mikey_message_remove_cs_srtp ()" link="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-remove-cs-srtp"/>
+    <keyword type="function" name="gst_mikey_message_replace_cs_srtp ()" link="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-replace-cs-srtp"/>
+    <keyword type="function" name="gst_mikey_message_add_cs_srtp ()" link="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-add-cs-srtp"/>
+    <keyword type="function" name="gst_mikey_message_get_n_payloads ()" link="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-get-n-payloads"/>
+    <keyword type="function" name="gst_mikey_message_get_payload ()" link="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-get-payload"/>
+    <keyword type="function" name="gst_mikey_message_find_payload ()" link="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-find-payload"/>
+    <keyword type="function" name="gst_mikey_message_insert_payload ()" link="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-insert-payload"/>
+    <keyword type="function" name="gst_mikey_message_remove_payload ()" link="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-remove-payload"/>
+    <keyword type="function" name="gst_mikey_message_replace_payload ()" link="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-replace-payload"/>
+    <keyword type="function" name="gst_mikey_message_add_payload ()" link="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-add-payload"/>
+    <keyword type="function" name="GstMIKEYPayloadClearFunc ()" link="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadClearFunc"/>
+    <keyword type="function" name="GstMIKEYPayloadCopyFunc ()" link="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadCopyFunc"/>
+    <keyword type="function" name="gst_mikey_payload_new ()" link="gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-new"/>
+    <keyword type="function" name="gst_mikey_payload_copy ()" link="gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-copy"/>
+    <keyword type="function" name="gst_mikey_payload_free ()" link="gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-free"/>
+    <keyword type="function" name="gst_mikey_payload_kemac_set ()" link="gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-kemac-set"/>
+    <keyword type="function" name="gst_mikey_payload_pke_set ()" link="gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-pke-set"/>
+    <keyword type="function" name="gst_mikey_message_add_pke ()" link="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-add-pke"/>
+    <keyword type="function" name="gst_mikey_payload_t_set ()" link="gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-t-set"/>
+    <keyword type="function" name="gst_mikey_message_add_t ()" link="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-add-t"/>
+    <keyword type="function" name="gst_mikey_message_add_t_now_ntp_utc ()" link="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-add-t-now-ntp-utc"/>
+    <keyword type="function" name="gst_mikey_payload_rand_set ()" link="gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-rand-set"/>
+    <keyword type="function" name="gst_mikey_message_add_rand ()" link="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-add-rand"/>
+    <keyword type="function" name="gst_mikey_message_add_rand_len ()" link="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-add-rand-len"/>
+    <keyword type="function" name="gst_mikey_payload_sp_set ()" link="gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-sp-set"/>
+    <keyword type="function" name="gst_mikey_payload_sp_get_n_params ()" link="gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-sp-get-n-params"/>
+    <keyword type="function" name="gst_mikey_payload_sp_get_param ()" link="gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-sp-get-param"/>
+    <keyword type="function" name="gst_mikey_payload_sp_add_param ()" link="gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-sp-add-param"/>
+    <keyword type="function" name="gst_mikey_payload_sp_remove_param ()" link="gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-sp-remove-param"/>
+    <keyword type="macro" name="GST_MIKEY_VERSION" link="gst-plugins-base-libs-gstmikey.html#GST-MIKEY-VERSION:CAPS"/>
+    <keyword type="enum" name="enum GstMIKEYType" link="gst-plugins-base-libs-gstmikey.html#GstMIKEYType"/>
+    <keyword type="struct" name="struct GstMIKEYMessage" link="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage"/>
+    <keyword type="enum" name="enum GstMIKEYPRFFunc" link="gst-plugins-base-libs-gstmikey.html#GstMIKEYPRFFunc"/>
+    <keyword type="enum" name="enum GstMIKEYMapType" link="gst-plugins-base-libs-gstmikey.html#GstMIKEYMapType"/>
+    <keyword type="struct" name="GstMIKEYMapSRTP" link="gst-plugins-base-libs-gstmikey.html#GstMIKEYMapSRTP"/>
+    <keyword type="enum" name="enum GstMIKEYPayloadType" link="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadType"/>
+    <keyword type="struct" name="struct GstMIKEYPayload" link="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload"/>
+    <keyword type="enum" name="enum GstMIKEYEncAlg" link="gst-plugins-base-libs-gstmikey.html#GstMIKEYEncAlg"/>
+    <keyword type="enum" name="enum GstMIKEYMacAlg" link="gst-plugins-base-libs-gstmikey.html#GstMIKEYMacAlg"/>
+    <keyword type="struct" name="GstMIKEYPayloadKEMAC" link="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadKEMAC"/>
+    <keyword type="enum" name="enum GstMIKEYCacheType" link="gst-plugins-base-libs-gstmikey.html#GstMIKEYCacheType"/>
+    <keyword type="struct" name="GstMIKEYPayloadPKE" link="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadPKE"/>
+    <keyword type="enum" name="enum GstMIKEYTSType" link="gst-plugins-base-libs-gstmikey.html#GstMIKEYTSType"/>
+    <keyword type="struct" name="GstMIKEYPayloadT" link="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadT"/>
+    <keyword type="struct" name="GstMIKEYPayloadRAND" link="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadRAND"/>
+    <keyword type="enum" name="enum GstMIKEYSecProto" link="gst-plugins-base-libs-gstmikey.html#GstMIKEYSecProto"/>
+    <keyword type="enum" name="enum GstMIKEYSecSRTP" link="gst-plugins-base-libs-gstmikey.html#GstMIKEYSecSRTP"/>
+    <keyword type="struct" name="GstMIKEYPayloadSP" link="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadSP"/>
+    <keyword type="struct" name="GstMIKEYPayloadSPParam" link="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadSPParam"/>
+    <keyword type="" name="" link="gst-plugins-base-libs-gsttag.html#id-1.2.13.3.7.2"/>
     <keyword type="function" name="gst_tag_register_musicbrainz_tags ()" link="gst-plugins-base-libs-gsttag.html#gst-tag-register-musicbrainz-tags"/>
     <keyword type="function" name="gst_tag_freeform_string_to_utf8 ()" link="gst-plugins-base-libs-gsttag.html#gst-tag-freeform-string-to-utf8"/>
     <keyword type="function" name="gst_tag_parse_extended_comment ()" link="gst-plugins-base-libs-gsttag.html#gst-tag-parse-extended-comment"/>
@@ -920,7 +985,7 @@
     <keyword type="macro" name="GST_TAG_IMAGE_VERTICAL_PPI" link="gst-plugins-base-libs-gsttag.html#GST-TAG-IMAGE-VERTICAL-PPI:CAPS"/>
     <keyword type="macro" name="GST_TAG_ID3V2_HEADER_SIZE" link="gst-plugins-base-libs-gsttag.html#GST-TAG-ID3V2-HEADER-SIZE:CAPS"/>
     <keyword type="enum" name="enum GstTagImageType" link="gst-plugins-base-libs-gsttag.html#GstTagImageType"/>
-    <keyword type="" name="" link="gst-plugins-base-libs-gsttagvorbis.html#id-1.2.12.4.6.2"/>
+    <keyword type="" name="" link="gst-plugins-base-libs-gsttagvorbis.html#id-1.2.13.4.6.2"/>
     <keyword type="function" name="gst_tag_from_vorbis_tag ()" link="gst-plugins-base-libs-gsttagvorbis.html#gst-tag-from-vorbis-tag"/>
     <keyword type="function" name="gst_tag_to_vorbis_tag ()" link="gst-plugins-base-libs-gsttagvorbis.html#gst-tag-to-vorbis-tag"/>
     <keyword type="function" name="gst_vorbis_tag_add ()" link="gst-plugins-base-libs-gsttagvorbis.html#gst-vorbis-tag-add"/>
@@ -928,7 +993,7 @@
     <keyword type="function" name="gst_tag_list_from_vorbiscomment ()" link="gst-plugins-base-libs-gsttagvorbis.html#gst-tag-list-from-vorbiscomment"/>
     <keyword type="function" name="gst_tag_list_from_vorbiscomment_buffer ()" link="gst-plugins-base-libs-gsttagvorbis.html#gst-tag-list-from-vorbiscomment-buffer"/>
     <keyword type="function" name="gst_tag_list_to_vorbiscomment_buffer ()" link="gst-plugins-base-libs-gsttagvorbis.html#gst-tag-list-to-vorbiscomment-buffer"/>
-    <keyword type="" name="" link="gst-plugins-base-libs-gsttagid3.html#id-1.2.12.5.6.2"/>
+    <keyword type="" name="" link="gst-plugins-base-libs-gsttagid3.html#id-1.2.13.5.6.2"/>
     <keyword type="function" name="gst_tag_id3_genre_count ()" link="gst-plugins-base-libs-gsttagid3.html#gst-tag-id3-genre-count"/>
     <keyword type="function" name="gst_tag_id3_genre_get ()" link="gst-plugins-base-libs-gsttagid3.html#gst-tag-id3-genre-get"/>
     <keyword type="function" name="gst_tag_list_new_from_id3v1 ()" link="gst-plugins-base-libs-gsttagid3.html#gst-tag-list-new-from-id3v1"/>
@@ -945,21 +1010,21 @@
     <keyword type="function" name="gst_tag_list_from_xmp_buffer ()" link="gst-plugins-base-libs-gsttagxmp.html#gst-tag-list-from-xmp-buffer"/>
     <keyword type="function" name="gst_tag_list_to_xmp_buffer ()" link="gst-plugins-base-libs-gsttagxmp.html#gst-tag-list-to-xmp-buffer"/>
     <keyword type="function" name="gst_tag_xmp_list_schemas ()" link="gst-plugins-base-libs-gsttagxmp.html#gst-tag-xmp-list-schemas"/>
-    <keyword type="" name="" link="gst-plugins-base-libs-gsttagxmpwriter.html#id-1.2.12.8.5.2"/>
+    <keyword type="" name="" link="gst-plugins-base-libs-gsttagxmpwriter.html#id-1.2.13.8.5.2"/>
     <keyword type="function" name="gst_tag_xmp_writer_add_all_schemas ()" link="gst-plugins-base-libs-gsttagxmpwriter.html#gst-tag-xmp-writer-add-all-schemas"/>
     <keyword type="function" name="gst_tag_xmp_writer_add_schema ()" link="gst-plugins-base-libs-gsttagxmpwriter.html#gst-tag-xmp-writer-add-schema"/>
     <keyword type="function" name="gst_tag_xmp_writer_has_schema ()" link="gst-plugins-base-libs-gsttagxmpwriter.html#gst-tag-xmp-writer-has-schema"/>
     <keyword type="function" name="gst_tag_xmp_writer_remove_schema ()" link="gst-plugins-base-libs-gsttagxmpwriter.html#gst-tag-xmp-writer-remove-schema"/>
     <keyword type="function" name="gst_tag_xmp_writer_remove_all_schemas ()" link="gst-plugins-base-libs-gsttagxmpwriter.html#gst-tag-xmp-writer-remove-all-schemas"/>
     <keyword type="function" name="gst_tag_xmp_writer_tag_list_to_xmp_buffer ()" link="gst-plugins-base-libs-gsttagxmpwriter.html#gst-tag-xmp-writer-tag-list-to-xmp-buffer"/>
-    <keyword type="" name="Deriving from GstTagDemux" link="gst-plugins-base-libs-gsttagdemux.html#id-1.2.12.9.6.2"/>
+    <keyword type="" name="Deriving from GstTagDemux" link="gst-plugins-base-libs-gsttagdemux.html#id-1.2.13.9.6.2"/>
     <keyword type="struct" name="struct GstTagDemux" link="gst-plugins-base-libs-gsttagdemux.html#GstTagDemux"/>
     <keyword type="struct" name="struct GstTagDemuxClass" link="gst-plugins-base-libs-gsttagdemux.html#GstTagDemuxClass"/>
     <keyword type="enum" name="enum GstTagDemuxResult" link="gst-plugins-base-libs-gsttagdemux.html#GstTagDemuxResult"/>
-    <keyword type="" name="Deriving from GstTagMux" link="gst-plugins-base-libs-gsttagmux.html#id-1.2.12.10.6.2"/>
+    <keyword type="" name="Deriving from GstTagMux" link="gst-plugins-base-libs-gsttagmux.html#id-1.2.13.10.6.2"/>
     <keyword type="struct" name="struct GstTagMux" link="gst-plugins-base-libs-gsttagmux.html#GstTagMux"/>
     <keyword type="struct" name="struct GstTagMuxClass" link="gst-plugins-base-libs-gsttagmux.html#GstTagMuxClass"/>
-    <keyword type="" name="" link="gst-plugins-base-libs-gsttaglanguagecodes.html#id-1.2.12.11.6.2"/>
+    <keyword type="" name="" link="gst-plugins-base-libs-gsttaglanguagecodes.html#id-1.2.13.11.6.2"/>
     <keyword type="function" name="gst_tag_get_language_codes ()" link="gst-plugins-base-libs-gsttaglanguagecodes.html#gst-tag-get-language-codes"/>
     <keyword type="function" name="gst_tag_get_language_name ()" link="gst-plugins-base-libs-gsttaglanguagecodes.html#gst-tag-get-language-name"/>
     <keyword type="macro" name="gst_tag_get_language_code()" link="gst-plugins-base-libs-gsttaglanguagecodes.html#gst-tag-get-language-code"/>
@@ -975,7 +1040,7 @@
     <keyword type="function" name="gst_tag_get_license_version ()" link="gst-plugins-base-libs-gsttaglicenses.html#gst-tag-get-license-version"/>
     <keyword type="function" name="gst_tag_get_licenses ()" link="gst-plugins-base-libs-gsttaglicenses.html#gst-tag-get-licenses"/>
     <keyword type="enum" name="enum GstTagLicenseFlags" link="gst-plugins-base-libs-gsttaglicenses.html#GstTagLicenseFlags"/>
-    <keyword type="" name="Linking to this library" link="gst-plugins-base-libs-gstpbutils.html#id-1.2.13.3.6.2"/>
+    <keyword type="" name="Linking to this library" link="gst-plugins-base-libs-gstpbutils.html#id-1.2.14.3.6.2"/>
     <keyword type="function" name="gst_pb_utils_init ()" link="gst-plugins-base-libs-gstpbutils.html#gst-pb-utils-init"/>
     <keyword type="macro" name="GST_PLUGINS_BASE_VERSION_MAJOR" link="gst-plugins-base-libs-gstpluginsbaseversion.html#GST-PLUGINS-BASE-VERSION-MAJOR:CAPS"/>
     <keyword type="macro" name="GST_PLUGINS_BASE_VERSION_MINOR" link="gst-plugins-base-libs-gstpluginsbaseversion.html#GST-PLUGINS-BASE-VERSION-MINOR:CAPS"/>
@@ -984,7 +1049,7 @@
     <keyword type="macro" name="GST_CHECK_PLUGINS_BASE_VERSION()" link="gst-plugins-base-libs-gstpluginsbaseversion.html#GST-CHECK-PLUGINS-BASE-VERSION:CAPS"/>
     <keyword type="function" name="gst_plugins_base_version ()" link="gst-plugins-base-libs-gstpluginsbaseversion.html#gst-plugins-base-version"/>
     <keyword type="function" name="gst_plugins_base_version_string ()" link="gst-plugins-base-libs-gstpluginsbaseversion.html#gst-plugins-base-version-string"/>
-    <keyword type="" name="" link="gst-plugins-base-libs-gstpbutilscodecutils.html#id-1.2.13.5.6.2"/>
+    <keyword type="" name="" link="gst-plugins-base-libs-gstpbutilscodecutils.html#id-1.2.14.5.6.2"/>
     <keyword type="function" name="gst_codec_utils_aac_get_sample_rate_from_index ()" link="gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-aac-get-sample-rate-from-index"/>
     <keyword type="function" name="gst_codec_utils_aac_get_index_from_sample_rate ()" link="gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-aac-get-index-from-sample-rate"/>
     <keyword type="function" name="gst_codec_utils_aac_get_profile ()" link="gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-aac-get-profile"/>
@@ -994,10 +1059,15 @@
     <keyword type="function" name="gst_codec_utils_h264_get_level ()" link="gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-h264-get-level"/>
     <keyword type="function" name="gst_codec_utils_h264_caps_set_level_and_profile ()" link="gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-h264-caps-set-level-and-profile"/>
     <keyword type="function" name="gst_codec_utils_h264_get_level_idc ()" link="gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-h264-get-level-idc"/>
+    <keyword type="function" name="gst_codec_utils_h265_get_profile ()" link="gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-h265-get-profile"/>
+    <keyword type="function" name="gst_codec_utils_h265_get_tier ()" link="gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-h265-get-tier"/>
+    <keyword type="function" name="gst_codec_utils_h265_get_level ()" link="gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-h265-get-level"/>
+    <keyword type="function" name="gst_codec_utils_h265_get_level_idc ()" link="gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-h265-get-level-idc"/>
+    <keyword type="function" name="gst_codec_utils_h265_caps_set_level_tier_and_profile ()" link="gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-h265-caps-set-level-tier-and-profile"/>
     <keyword type="function" name="gst_codec_utils_mpeg4video_get_profile ()" link="gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-mpeg4video-get-profile"/>
     <keyword type="function" name="gst_codec_utils_mpeg4video_get_level ()" link="gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-mpeg4video-get-level"/>
     <keyword type="function" name="gst_codec_utils_mpeg4video_caps_set_level_and_profile ()" link="gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-mpeg4video-caps-set-level-and-profile"/>
-    <keyword type="" name="" link="gst-plugins-base-libs-gstpbutilsdescriptions.html#id-1.2.13.6.6.2"/>
+    <keyword type="" name="" link="gst-plugins-base-libs-gstpbutilsdescriptions.html#id-1.2.14.6.6.2"/>
     <keyword type="function" name="gst_pb_utils_get_source_description ()" link="gst-plugins-base-libs-gstpbutilsdescriptions.html#gst-pb-utils-get-source-description"/>
     <keyword type="function" name="gst_pb_utils_get_sink_description ()" link="gst-plugins-base-libs-gstpbutilsdescriptions.html#gst-pb-utils-get-sink-description"/>
     <keyword type="function" name="gst_pb_utils_get_decoder_description ()" link="gst-plugins-base-libs-gstpbutilsdescriptions.html#gst-pb-utils-get-decoder-description"/>
@@ -1005,7 +1075,7 @@
     <keyword type="function" name="gst_pb_utils_get_element_description ()" link="gst-plugins-base-libs-gstpbutilsdescriptions.html#gst-pb-utils-get-element-description"/>
     <keyword type="function" name="gst_pb_utils_add_codec_description_to_tag_list ()" link="gst-plugins-base-libs-gstpbutilsdescriptions.html#gst-pb-utils-add-codec-description-to-tag-list"/>
     <keyword type="function" name="gst_pb_utils_get_codec_description ()" link="gst-plugins-base-libs-gstpbutilsdescriptions.html#gst-pb-utils-get-codec-description"/>
-    <keyword type="" name="" link="gst-plugins-base-libs-gstpbutilsmissingplugins.html#id-1.2.13.7.6.2"/>
+    <keyword type="" name="" link="gst-plugins-base-libs-gstpbutilsmissingplugins.html#id-1.2.14.7.6.2"/>
     <keyword type="function" name="gst_missing_plugin_message_get_installer_detail ()" link="gst-plugins-base-libs-gstpbutilsmissingplugins.html#gst-missing-plugin-message-get-installer-detail"/>
     <keyword type="function" name="gst_missing_plugin_message_get_description ()" link="gst-plugins-base-libs-gstpbutilsmissingplugins.html#gst-missing-plugin-message-get-description"/>
     <keyword type="function" name="gst_is_missing_plugin_message ()" link="gst-plugins-base-libs-gstpbutilsmissingplugins.html#gst-is-missing-plugin-message"/>
@@ -1019,7 +1089,7 @@
     <keyword type="function" name="gst_missing_element_installer_detail_new ()" link="gst-plugins-base-libs-gstpbutilsmissingplugins.html#gst-missing-element-installer-detail-new"/>
     <keyword type="function" name="gst_missing_decoder_installer_detail_new ()" link="gst-plugins-base-libs-gstpbutilsmissingplugins.html#gst-missing-decoder-installer-detail-new"/>
     <keyword type="function" name="gst_missing_encoder_installer_detail_new ()" link="gst-plugins-base-libs-gstpbutilsmissingplugins.html#gst-missing-encoder-installer-detail-new"/>
-    <keyword type="" name="Overview" link="gst-plugins-base-libs-gstpbutilsinstallplugins.html#id-1.2.13.8.7.2"/>
+    <keyword type="" name="Overview" link="gst-plugins-base-libs-gstpbutilsinstallplugins.html#id-1.2.14.8.7.2"/>
     <keyword type="function" name="GstInstallPluginsResultFunc ()" link="gst-plugins-base-libs-gstpbutilsinstallplugins.html#GstInstallPluginsResultFunc"/>
     <keyword type="function" name="gst_install_plugins_async ()" link="gst-plugins-base-libs-gstpbutilsinstallplugins.html#gst-install-plugins-async"/>
     <keyword type="function" name="gst_install_plugins_sync ()" link="gst-plugins-base-libs-gstpbutilsinstallplugins.html#gst-install-plugins-sync"/>
@@ -1095,9 +1165,9 @@
     <keyword type="signal" name="The “finished” signal" link="gst-plugins-base-libs-gstdiscoverer.html#GstDiscoverer-finished"/>
     <keyword type="signal" name="The “source-setup” signal" link="gst-plugins-base-libs-gstdiscoverer.html#GstDiscoverer-source-setup"/>
     <keyword type="signal" name="The “starting” signal" link="gst-plugins-base-libs-gstdiscoverer.html#GstDiscoverer-starting"/>
-    <keyword type="" name="" link="gst-plugins-base-libs-encoding-profile.html#id-1.2.13.10.12.2"/>
-    <keyword type="" name="Example: Creating a profile" link="gst-plugins-base-libs-encoding-profile.html#id-1.2.13.10.12.3"/>
-    <keyword type="" name="Example: Listing categories, targets and profiles" link="gst-plugins-base-libs-encoding-profile.html#id-1.2.13.10.12.4"/>
+    <keyword type="" name="" link="gst-plugins-base-libs-encoding-profile.html#id-1.2.14.10.13.2"/>
+    <keyword type="" name="Example: Creating a profile" link="gst-plugins-base-libs-encoding-profile.html#id-1.2.14.10.13.3"/>
+    <keyword type="" name="Example: Listing categories, targets and profiles" link="gst-plugins-base-libs-encoding-profile.html#id-1.2.14.10.13.4"/>
     <keyword type="macro" name="gst_encoding_profile_unref()" link="gst-plugins-base-libs-encoding-profile.html#gst-encoding-profile-unref"/>
     <keyword type="macro" name="gst_encoding_profile_ref()" link="gst-plugins-base-libs-encoding-profile.html#gst-encoding-profile-ref"/>
     <keyword type="function" name="gst_encoding_profile_find ()" link="gst-plugins-base-libs-encoding-profile.html#gst-encoding-profile-find"/>
@@ -1154,7 +1224,8 @@
     <keyword type="macro" name="GST_ENCODING_CATEGORY_STORAGE_EDITING" link="gst-plugins-base-libs-encoding-profile.html#GST-ENCODING-CATEGORY-STORAGE-EDITING:CAPS"/>
     <keyword type="macro" name="GST_ENCODING_CATEGORY_CAPTURE" link="gst-plugins-base-libs-encoding-profile.html#GST-ENCODING-CATEGORY-CAPTURE:CAPS"/>
     <keyword type="struct" name="GstEncodingTarget" link="gst-plugins-base-libs-encoding-profile.html#GstEncodingTarget-struct"/>
-    <keyword type="" name="" link="gst-plugins-base-libs-gstvideo.html#id-1.2.14.3.7.2"/>
+    <keyword type="property" name="The “restriction-caps” property" link="gst-plugins-base-libs-encoding-profile.html#GstEncodingProfile--restriction-caps"/>
+    <keyword type="" name="" link="gst-plugins-base-libs-gstvideo.html#id-1.2.15.3.7.2"/>
     <keyword type="function" name="gst_video_calculate_display_ratio ()" link="gst-plugins-base-libs-gstvideo.html#gst-video-calculate-display-ratio"/>
     <keyword type="function" name="GstVideoConvertSampleCallback ()" link="gst-plugins-base-libs-gstvideo.html#GstVideoConvertSampleCallback"/>
     <keyword type="function" name="gst_video_convert_sample ()" link="gst-plugins-base-libs-gstvideo.html#gst-video-convert-sample"/>
@@ -1197,6 +1268,9 @@
     <keyword type="macro" name="GST_VIDEO_FORMAT_INFO_DATA()" link="gst-plugins-base-libs-gstvideo.html#GST-VIDEO-FORMAT-INFO-DATA:CAPS"/>
     <keyword type="macro" name="GST_VIDEO_FORMAT_INFO_STRIDE()" link="gst-plugins-base-libs-gstvideo.html#GST-VIDEO-FORMAT-INFO-STRIDE:CAPS"/>
     <keyword type="macro" name="GST_VIDEO_FORMAT_INFO_OFFSET()" link="gst-plugins-base-libs-gstvideo.html#GST-VIDEO-FORMAT-INFO-OFFSET:CAPS"/>
+    <keyword type="macro" name="GST_VIDEO_FORMAT_INFO_TILE_MODE()" link="gst-plugins-base-libs-gstvideo.html#GST-VIDEO-FORMAT-INFO-TILE-MODE:CAPS"/>
+    <keyword type="macro" name="GST_VIDEO_FORMAT_INFO_TILE_WS()" link="gst-plugins-base-libs-gstvideo.html#GST-VIDEO-FORMAT-INFO-TILE-WS:CAPS"/>
+    <keyword type="macro" name="GST_VIDEO_FORMAT_INFO_TILE_HS()" link="gst-plugins-base-libs-gstvideo.html#GST-VIDEO-FORMAT-INFO-TILE-HS:CAPS"/>
     <keyword type="function" name="gst_video_format_from_masks ()" link="gst-plugins-base-libs-gstvideo.html#gst-video-format-from-masks"/>
     <keyword type="function" name="gst_video_format_from_fourcc ()" link="gst-plugins-base-libs-gstvideo.html#gst-video-format-from-fourcc"/>
     <keyword type="function" name="gst_video_format_to_fourcc ()" link="gst-plugins-base-libs-gstvideo.html#gst-video-format-to-fourcc"/>
@@ -1277,6 +1351,13 @@
     <keyword type="macro" name="GST_VIDEO_FRAME_COMP_PLANE()" link="gst-plugins-base-libs-gstvideo.html#GST-VIDEO-FRAME-COMP-PLANE:CAPS"/>
     <keyword type="macro" name="GST_VIDEO_FRAME_COMP_PSTRIDE()" link="gst-plugins-base-libs-gstvideo.html#GST-VIDEO-FRAME-COMP-PSTRIDE:CAPS"/>
     <keyword type="macro" name="GST_VIDEO_FRAME_COMP_POFFSET()" link="gst-plugins-base-libs-gstvideo.html#GST-VIDEO-FRAME-COMP-POFFSET:CAPS"/>
+    <keyword type="function" name="gst_video_tile_get_index ()" link="gst-plugins-base-libs-gstvideo.html#gst-video-tile-get-index"/>
+    <keyword type="macro" name="GST_VIDEO_TILE_MAKE_MODE()" link="gst-plugins-base-libs-gstvideo.html#GST-VIDEO-TILE-MAKE-MODE:CAPS"/>
+    <keyword type="macro" name="GST_VIDEO_TILE_MODE_TYPE()" link="gst-plugins-base-libs-gstvideo.html#GST-VIDEO-TILE-MODE-TYPE:CAPS"/>
+    <keyword type="macro" name="GST_VIDEO_TILE_MODE_IS_INDEXED()" link="gst-plugins-base-libs-gstvideo.html#GST-VIDEO-TILE-MODE-IS-INDEXED:CAPS"/>
+    <keyword type="macro" name="GST_VIDEO_TILE_MAKE_STRIDE()" link="gst-plugins-base-libs-gstvideo.html#GST-VIDEO-TILE-MAKE-STRIDE:CAPS"/>
+    <keyword type="macro" name="GST_VIDEO_TILE_X_TILES()" link="gst-plugins-base-libs-gstvideo.html#GST-VIDEO-TILE-X-TILES:CAPS"/>
+    <keyword type="macro" name="GST_VIDEO_TILE_Y_TILES()" link="gst-plugins-base-libs-gstvideo.html#GST-VIDEO-TILE-Y-TILES:CAPS"/>
     <keyword type="struct" name="struct GstVideoAlignment" link="gst-plugins-base-libs-gstvideo.html#GstVideoAlignment"/>
     <keyword type="macro" name="GST_META_TAG_VIDEO_STR" link="gst-plugins-base-libs-gstvideo.html#GST-META-TAG-VIDEO-STR:CAPS" since="1.2"/>
     <keyword type="macro" name="GST_META_TAG_VIDEO_ORIENTATION_STR" link="gst-plugins-base-libs-gstvideo.html#GST-META-TAG-VIDEO-ORIENTATION-STR:CAPS" since="1.2"/>
@@ -1303,6 +1384,8 @@
     <keyword type="struct" name="struct GstVideoFrame" link="gst-plugins-base-libs-gstvideo.html#GstVideoFrame"/>
     <keyword type="enum" name="enum GstVideoFrameFlags" link="gst-plugins-base-libs-gstvideo.html#GstVideoFrameFlags"/>
     <keyword type="enum" name="enum GstVideoBufferFlags" link="gst-plugins-base-libs-gstvideo.html#GstVideoBufferFlags"/>
+    <keyword type="enum" name="enum GstVideoTileType" link="gst-plugins-base-libs-gstvideo.html#GstVideoTileType"/>
+    <keyword type="enum" name="enum GstVideoTileMode" link="gst-plugins-base-libs-gstvideo.html#GstVideoTileMode"/>
     <keyword type="function" name="gst_video_meta_map ()" link="gst-plugins-base-libs-gstvideometa.html#gst-video-meta-map"/>
     <keyword type="function" name="gst_video_meta_unmap ()" link="gst-plugins-base-libs-gstvideometa.html#gst-video-meta-unmap"/>
     <keyword type="function" name="gst_video_meta_get_info ()" link="gst-plugins-base-libs-gstvideometa.html#gst-video-meta-get-info"/>
@@ -1324,8 +1407,9 @@
     <keyword type="struct" name="GstVideoMetaTransform" link="gst-plugins-base-libs-gstvideometa.html#GstVideoMetaTransform"/>
     <keyword type="struct" name="struct GstVideoCropMeta" link="gst-plugins-base-libs-gstvideometa.html#GstVideoCropMeta"/>
     <keyword type="struct" name="GstVideoRegionOfInterestMeta" link="gst-plugins-base-libs-gstvideometa.html#GstVideoRegionOfInterestMeta"/>
+    <keyword type="macro" name="GST_BUFFER_POOL_OPTION_VIDEO_GL_TEXTURE_UPLOAD_META" link="gst-plugins-base-libs-gstvideometa.html#GST-BUFFER-POOL-OPTION-VIDEO-GL-TEXTURE-UPLOAD-META:CAPS" since="1.2.2"/>
     <keyword type="struct" name="struct GstVideoGLTextureUploadMeta" link="gst-plugins-base-libs-gstvideometa.html#GstVideoGLTextureUploadMeta"/>
-    <keyword type="" name="" link="gst-plugins-base-libs-gstvideooverlaycomposition.html#id-1.2.14.5.7.2"/>
+    <keyword type="" name="" link="gst-plugins-base-libs-gstvideooverlaycomposition.html#id-1.2.15.5.7.2"/>
     <keyword type="function" name="gst_video_overlay_composition_new ()" link="gst-plugins-base-libs-gstvideooverlaycomposition.html#gst-video-overlay-composition-new"/>
     <keyword type="function" name="gst_video_overlay_composition_ref ()" link="gst-plugins-base-libs-gstvideooverlaycomposition.html#gst-video-overlay-composition-ref"/>
     <keyword type="function" name="gst_video_overlay_composition_unref ()" link="gst-plugins-base-libs-gstvideooverlaycomposition.html#gst-video-overlay-composition-unref"/>
@@ -1361,10 +1445,10 @@
     <keyword type="struct" name="struct GstVideoOverlayCompositionMeta" link="gst-plugins-base-libs-gstvideooverlaycomposition.html#GstVideoOverlayCompositionMeta"/>
     <keyword type="enum" name="enum GstVideoOverlayFormatFlags" link="gst-plugins-base-libs-gstvideooverlaycomposition.html#GstVideoOverlayFormatFlags"/>
     <keyword type="struct" name="GstVideoOverlayRectangle" link="gst-plugins-base-libs-gstvideooverlaycomposition.html#GstVideoOverlayRectangle"/>
-    <keyword type="" name="" link="gst-plugins-base-libs-gstvideofilter.html#id-1.2.14.6.7.2"/>
+    <keyword type="" name="" link="gst-plugins-base-libs-gstvideofilter.html#id-1.2.15.6.7.2"/>
     <keyword type="struct" name="struct GstVideoFilter" link="gst-plugins-base-libs-gstvideofilter.html#GstVideoFilter-struct"/>
     <keyword type="struct" name="struct GstVideoFilterClass" link="gst-plugins-base-libs-gstvideofilter.html#GstVideoFilterClass"/>
-    <keyword type="" name="" link="gst-plugins-base-libs-gstvideosink.html#id-1.2.14.7.9.2"/>
+    <keyword type="" name="" link="gst-plugins-base-libs-gstvideosink.html#id-1.2.15.7.9.2"/>
     <keyword type="macro" name="GST_VIDEO_SINK_HEIGHT()" link="gst-plugins-base-libs-gstvideosink.html#GST-VIDEO-SINK-HEIGHT:CAPS"/>
     <keyword type="macro" name="GST_VIDEO_SINK_PAD()" link="gst-plugins-base-libs-gstvideosink.html#GST-VIDEO-SINK-PAD:CAPS"/>
     <keyword type="macro" name="GST_VIDEO_SINK_WIDTH()" link="gst-plugins-base-libs-gstvideosink.html#GST-VIDEO-SINK-WIDTH:CAPS"/>
@@ -1373,7 +1457,7 @@
     <keyword type="struct" name="struct GstVideoSinkClass" link="gst-plugins-base-libs-gstvideosink.html#GstVideoSinkClass"/>
     <keyword type="struct" name="struct GstVideoRectangle" link="gst-plugins-base-libs-gstvideosink.html#GstVideoRectangle"/>
     <keyword type="property" name="The “show-preroll-frame” property" link="gst-plugins-base-libs-gstvideosink.html#GstVideoSink--show-preroll-frame"/>
-    <keyword type="" name="" link="gst-plugins-base-libs-gstcolorbalance.html#id-1.2.14.8.9.2"/>
+    <keyword type="" name="" link="gst-plugins-base-libs-gstcolorbalance.html#id-1.2.15.8.9.2"/>
     <keyword type="function" name="gst_color_balance_list_channels ()" link="gst-plugins-base-libs-gstcolorbalance.html#gst-color-balance-list-channels"/>
     <keyword type="function" name="gst_color_balance_get_value ()" link="gst-plugins-base-libs-gstcolorbalance.html#gst-color-balance-get-value"/>
     <keyword type="function" name="gst_color_balance_set_value ()" link="gst-plugins-base-libs-gstcolorbalance.html#gst-color-balance-set-value"/>
@@ -1383,7 +1467,7 @@
     <keyword type="struct" name="struct GstColorBalanceInterface" link="gst-plugins-base-libs-gstcolorbalance.html#GstColorBalanceInterface"/>
     <keyword type="enum" name="enum GstColorBalanceType" link="gst-plugins-base-libs-gstcolorbalance.html#GstColorBalanceType"/>
     <keyword type="signal" name="The “value-changed” signal" link="gst-plugins-base-libs-gstcolorbalance.html#GstColorBalance-value-changed"/>
-    <keyword type="" name="" link="gst-plugins-base-libs-gstcolorbalancechannel.html#id-1.2.14.9.8.2"/>
+    <keyword type="" name="" link="gst-plugins-base-libs-gstcolorbalancechannel.html#id-1.2.15.9.8.2"/>
     <keyword type="struct" name="struct GstColorBalanceChannel" link="gst-plugins-base-libs-gstcolorbalancechannel.html#GstColorBalanceChannel-struct"/>
     <keyword type="struct" name="struct GstColorBalanceChannelClass" link="gst-plugins-base-libs-gstcolorbalancechannel.html#GstColorBalanceChannelClass"/>
     <keyword type="signal" name="The “value-changed” signal" link="gst-plugins-base-libs-gstcolorbalancechannel.html#GstColorBalanceChannel-value-changed"/>
@@ -1397,10 +1481,10 @@
     <keyword type="function" name="gst_video_orientation_set_vflip ()" link="gst-plugins-base-libs-gstvideoorientation.html#gst-video-orientation-set-vflip"/>
     <keyword type="struct" name="GstVideoOrientation" link="gst-plugins-base-libs-gstvideoorientation.html#GstVideoOrientation-struct"/>
     <keyword type="struct" name="struct GstVideoOrientationInterface" link="gst-plugins-base-libs-gstvideoorientation.html#GstVideoOrientationInterface"/>
-    <keyword type="" name="" link="gst-plugins-base-libs-gstvideooverlay.html#id-1.2.14.11.8.2"/>
-    <keyword type="" name="Two basic usage scenarios" link="gst-plugins-base-libs-gstvideooverlay.html#id-1.2.14.11.8.3"/>
-    <keyword type="" name="GstVideoOverlay and Gtk+" link="gst-plugins-base-libs-gstvideooverlay.html#id-1.2.14.11.8.4"/>
-    <keyword type="" name="GstVideoOverlay and Qt" link="gst-plugins-base-libs-gstvideooverlay.html#id-1.2.14.11.8.5"/>
+    <keyword type="" name="" link="gst-plugins-base-libs-gstvideooverlay.html#id-1.2.15.11.8.2"/>
+    <keyword type="" name="Two basic usage scenarios" link="gst-plugins-base-libs-gstvideooverlay.html#id-1.2.15.11.8.3"/>
+    <keyword type="" name="GstVideoOverlay and Gtk+" link="gst-plugins-base-libs-gstvideooverlay.html#id-1.2.15.11.8.4"/>
+    <keyword type="" name="GstVideoOverlay and Qt" link="gst-plugins-base-libs-gstvideooverlay.html#id-1.2.15.11.8.5"/>
     <keyword type="function" name="gst_video_overlay_got_window_handle ()" link="gst-plugins-base-libs-gstvideooverlay.html#gst-video-overlay-got-window-handle"/>
     <keyword type="function" name="gst_video_overlay_set_window_handle ()" link="gst-plugins-base-libs-gstvideooverlay.html#gst-video-overlay-set-window-handle"/>
     <keyword type="function" name="gst_video_overlay_prepare_window_handle ()" link="gst-plugins-base-libs-gstvideooverlay.html#gst-video-overlay-prepare-window-handle"/>
@@ -1432,6 +1516,7 @@
     <keyword type="function" name="gst_video_decoder_get_max_errors ()" link="gst-plugins-base-libs-GstVideoDecoder.html#gst-video-decoder-get-max-errors"/>
     <keyword type="function" name="gst_video_decoder_get_oldest_frame ()" link="gst-plugins-base-libs-GstVideoDecoder.html#gst-video-decoder-get-oldest-frame"/>
     <keyword type="function" name="gst_video_decoder_get_packetized ()" link="gst-plugins-base-libs-GstVideoDecoder.html#gst-video-decoder-get-packetized"/>
+    <keyword type="function" name="gst_video_decoder_get_pending_frame_size ()" link="gst-plugins-base-libs-GstVideoDecoder.html#gst-video-decoder-get-pending-frame-size" since="1.4"/>
     <keyword type="function" name="gst_video_decoder_get_qos_proportion ()" link="gst-plugins-base-libs-GstVideoDecoder.html#gst-video-decoder-get-qos-proportion" since="1.0.3"/>
     <keyword type="function" name="gst_video_decoder_have_frame ()" link="gst-plugins-base-libs-GstVideoDecoder.html#gst-video-decoder-have-frame"/>
     <keyword type="function" name="gst_video_decoder_get_latency ()" link="gst-plugins-base-libs-GstVideoDecoder.html#gst-video-decoder-get-latency"/>
@@ -1442,6 +1527,8 @@
     <keyword type="function" name="gst_video_decoder_set_output_state ()" link="gst-plugins-base-libs-GstVideoDecoder.html#gst-video-decoder-set-output-state"/>
     <keyword type="function" name="gst_video_decoder_set_max_errors ()" link="gst-plugins-base-libs-GstVideoDecoder.html#gst-video-decoder-set-max-errors"/>
     <keyword type="function" name="gst_video_decoder_set_packetized ()" link="gst-plugins-base-libs-GstVideoDecoder.html#gst-video-decoder-set-packetized"/>
+    <keyword type="function" name="gst_video_decoder_get_needs_format ()" link="gst-plugins-base-libs-GstVideoDecoder.html#gst-video-decoder-get-needs-format" since="1.4"/>
+    <keyword type="function" name="gst_video_decoder_set_needs_format ()" link="gst-plugins-base-libs-GstVideoDecoder.html#gst-video-decoder-set-needs-format" since="1.4"/>
     <keyword type="function" name="gst_video_decoder_merge_tags ()" link="gst-plugins-base-libs-GstVideoDecoder.html#gst-video-decoder-merge-tags"/>
     <keyword type="macro" name="GST_VIDEO_DECODER_FLOW_NEED_DATA" link="gst-plugins-base-libs-GstVideoDecoder.html#GST-VIDEO-DECODER-FLOW-NEED-DATA:CAPS"/>
     <keyword type="macro" name="GST_VIDEO_DECODER_MAX_ERRORS" link="gst-plugins-base-libs-GstVideoDecoder.html#GST-VIDEO-DECODER-MAX-ERRORS:CAPS"/>
@@ -1467,8 +1554,6 @@
     <keyword type="function" name="gst_video_encoder_set_headers ()" link="gst-plugins-base-libs-GstVideoEncoder.html#gst-video-encoder-set-headers"/>
     <keyword type="function" name="gst_video_encoder_get_latency ()" link="gst-plugins-base-libs-GstVideoEncoder.html#gst-video-encoder-get-latency"/>
     <keyword type="function" name="gst_video_encoder_set_latency ()" link="gst-plugins-base-libs-GstVideoEncoder.html#gst-video-encoder-set-latency"/>
-    <keyword type="function" name="gst_video_encoder_get_discont ()" link="gst-plugins-base-libs-GstVideoEncoder.html#gst-video-encoder-get-discont"/>
-    <keyword type="function" name="gst_video_encoder_set_discont ()" link="gst-plugins-base-libs-GstVideoEncoder.html#gst-video-encoder-set-discont"/>
     <keyword type="function" name="gst_video_encoder_set_output_state ()" link="gst-plugins-base-libs-GstVideoEncoder.html#gst-video-encoder-set-output-state"/>
     <keyword type="function" name="gst_video_encoder_get_output_state ()" link="gst-plugins-base-libs-GstVideoEncoder.html#gst-video-encoder-get-output-state"/>
     <keyword type="function" name="gst_video_encoder_proxy_getcaps ()" link="gst-plugins-base-libs-GstVideoEncoder.html#gst-video-encoder-proxy-getcaps"/>
@@ -1479,6 +1564,13 @@
     <keyword type="macro" name="GST_VIDEO_ENCODER_SRC_NAME" link="gst-plugins-base-libs-GstVideoEncoder.html#GST-VIDEO-ENCODER-SRC-NAME:CAPS"/>
     <keyword type="struct" name="struct GstVideoEncoder" link="gst-plugins-base-libs-GstVideoEncoder.html#GstVideoEncoder"/>
     <keyword type="struct" name="struct GstVideoEncoderClass" link="gst-plugins-base-libs-GstVideoEncoder.html#GstVideoEncoderClass"/>
+    <keyword type="function" name="gst_video_buffer_pool_new ()" link="gst-plugins-base-libs-GstVideoPool.html#gst-video-buffer-pool-new"/>
+    <keyword type="function" name="gst_buffer_pool_config_get_video_alignment ()" link="gst-plugins-base-libs-GstVideoPool.html#gst-buffer-pool-config-get-video-alignment"/>
+    <keyword type="function" name="gst_buffer_pool_config_set_video_alignment ()" link="gst-plugins-base-libs-GstVideoPool.html#gst-buffer-pool-config-set-video-alignment"/>
+    <keyword type="struct" name="struct GstVideoBufferPool" link="gst-plugins-base-libs-GstVideoPool.html#GstVideoBufferPool"/>
+    <keyword type="struct" name="struct GstVideoBufferPoolClass" link="gst-plugins-base-libs-GstVideoPool.html#GstVideoBufferPoolClass"/>
+    <keyword type="macro" name="GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT" link="gst-plugins-base-libs-GstVideoPool.html#GST-BUFFER-POOL-OPTION-VIDEO-ALIGNMENT:CAPS"/>
+    <keyword type="macro" name="GST_BUFFER_POOL_OPTION_VIDEO_META" link="gst-plugins-base-libs-GstVideoPool.html#GST-BUFFER-POOL-OPTION-VIDEO-META:CAPS"/>
     <keyword type="macro" name="GST_VIDEO_CODEC_FRAME_FLAGS()" link="gst-plugins-base-libs-gstvideoutils.html#GST-VIDEO-CODEC-FRAME-FLAGS:CAPS"/>
     <keyword type="macro" name="GST_VIDEO_CODEC_FRAME_FLAG_IS_SET()" link="gst-plugins-base-libs-gstvideoutils.html#GST-VIDEO-CODEC-FRAME-FLAG-IS-SET:CAPS"/>
     <keyword type="macro" name="GST_VIDEO_CODEC_FRAME_FLAG_SET()" link="gst-plugins-base-libs-gstvideoutils.html#GST-VIDEO-CODEC-FRAME-FLAG-SET:CAPS"/>
diff --git a/docs/libs/html/gst-plugins-base-libs-GstVideoDecoder.html b/docs/libs/html/gst-plugins-base-libs-GstVideoDecoder.html
index 521b33c..821cc94 100644
--- a/docs/libs/html/gst-plugins-base-libs-GstVideoDecoder.html
+++ b/docs/libs/html/gst-plugins-base-libs-GstVideoDecoder.html
@@ -204,6 +204,14 @@
 </tr>
 <tr>
 <td class="function_type">
+<span class="returnvalue">gsize</span>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-GstVideoDecoder.html#gst-video-decoder-get-pending-frame-size" title="gst_video_decoder_get_pending_frame_size ()">gst_video_decoder_get_pending_frame_size</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="returnvalue">gdouble</span></a>
 </td>
 <td class="function_name">
@@ -284,6 +292,22 @@
 </tr>
 <tr>
 <td class="function_type">
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-GstVideoDecoder.html#gst-video-decoder-get-needs-format" title="gst_video_decoder_get_needs_format ()">gst_video_decoder_get_needs_format</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-GstVideoDecoder.html#gst-video-decoder-set-needs-format" title="gst_video_decoder_set_needs_format ()">gst_video_decoder_set_needs_format</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
 <span class="returnvalue">void</span>
 </td>
 <td class="function_name">
@@ -472,7 +496,7 @@
  is set to the proper value to
 return to upstream/caller (indicating either GST_FLOW_ERROR or GST_FLOW_OK).</p>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.2.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.12.7.2.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -528,7 +552,7 @@
 </pre>
 <p>Gives the pointer to the sink <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a> object of the element.</p>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.3.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.12.7.3.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -550,7 +574,7 @@
 </pre>
 <p>Gives the pointer to the source <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a> object of the element.</p>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.4.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.12.7.4.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -572,7 +596,7 @@
 </pre>
 <p>Obtain a lock to protect the decoder function from concurrent access.</p>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.5.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.12.7.5.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -594,7 +618,7 @@
 </pre>
 <p>Release the lock that protects the decoder function from concurrent access.</p>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.6.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.12.7.6.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -616,7 +640,7 @@
 </pre>
 <p>Gives the segment of the element.</p>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.7.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.12.7.7.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -638,7 +662,7 @@
 </pre>
 <p>Gives the segment of the element.</p>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.8.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.12.7.8.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -662,7 +686,7 @@
 <p>Removes next <em class="parameter"><code>n_bytes</code></em>
  of input data and adds it to currently parsed frame.</p>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.9.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.12.7.9.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -696,7 +720,7 @@
 <p>You should use <a class="link" href="gst-plugins-base-libs-GstVideoDecoder.html#gst-video-decoder-allocate-output-frame" title="gst_video_decoder_allocate_output_frame ()"><code class="function">gst_video_decoder_allocate_output_frame()</code></a> instead of this
 function, if possible at all.</p>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.10.6"></a><h4>Parameters</h4>
+<a name="id-1.2.15.12.7.10.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -711,7 +735,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.10.7"></a><h4>Returns</h4>
+<a name="id-1.2.15.12.7.10.7"></a><h4>Returns</h4>
 <p> allocated buffer, or NULL if no buffer could be
 allocated (e.g. when downstream is flushing or shutting down). </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
@@ -731,7 +755,7 @@
 <p>The buffer allocated here is owned by the frame and you should only
 keep references to the frame, not the buffer.</p>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.11.6"></a><h4>Parameters</h4>
+<a name="id-1.2.15.12.7.11.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -753,7 +777,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.11.7"></a><h4>Returns</h4>
+<a name="id-1.2.15.12.7.11.7"></a><h4>Returns</h4>
 <p> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GST-FLOW-OK:CAPS"><code class="literal">GST_FLOW_OK</code></a> if an output buffer could be allocated</p>
 <p></p>
 </div>
@@ -772,7 +796,7 @@
 <p>Unref the <em class="parameter"><code>allocator</code></em>
  after use it.</p>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.12.6"></a><h4>Parameters</h4>
+<a name="id-1.2.15.12.7.12.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -808,7 +832,7 @@
 <pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstBufferPool.html#GstBufferPool"><span class="returnvalue">GstBufferPool</span></a> *
 gst_video_decoder_get_buffer_pool (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-GstVideoDecoder.html#GstVideoDecoder" title="struct GstVideoDecoder"><span class="type">GstVideoDecoder</span></a> *decoder</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.13.4"></a><h4>Parameters</h4>
+<a name="id-1.2.15.12.7.13.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -823,7 +847,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.13.5"></a><h4>Returns</h4>
+<a name="id-1.2.15.12.7.13.5"></a><h4>Returns</h4>
 <p> the instance of the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstBufferPool.html#GstBufferPool"><span class="type">GstBufferPool</span></a> used
 by the decoder; free it after use it. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
@@ -840,7 +864,7 @@
 case and posts a QoS message with the frame's details on the bus.
 In any case, the frame is considered finished and released.</p>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.14.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.12.7.14.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -862,7 +886,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.14.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.12.7.14.6"></a><h4>Returns</h4>
 <p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="type">GstFlowReturn</span></a>, usually GST_FLOW_OK.</p>
 <p></p>
 </div>
@@ -883,7 +907,7 @@
 considered read-only. This function will also change the metadata
 of the buffer.</p>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.15.6"></a><h4>Parameters</h4>
+<a name="id-1.2.15.12.7.15.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -905,7 +929,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.15.7"></a><h4>Returns</h4>
+<a name="id-1.2.15.12.7.15.7"></a><h4>Returns</h4>
 <p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="type">GstFlowReturn</span></a> resulting from sending data downstream</p>
 <p></p>
 </div>
@@ -921,7 +945,7 @@
 without any processing other than removing it from list of pending frames,
 after which it is considered finished and released.</p>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.16.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.12.7.16.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -953,7 +977,7 @@
 Unmark GST_PAD_FLAG_NEED_RECONFIGURE in any case. But mark it again if
 negotiate fails.</p>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.17.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.12.7.17.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -968,7 +992,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.17.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.12.7.17.6"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><span class="type">TRUE</span></a> if the negotiation succeeded, else <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><span class="type">FALSE</span></a>.</p>
 <p></p>
 </div>
@@ -981,7 +1005,7 @@
                              <em class="parameter"><code><span class="type">int</span> frame_number</code></em>);</pre>
 <p>Get a pending unfinished <a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecFrame" title="struct GstVideoCodecFrame"><span class="type">GstVideoCodecFrame</span></a></p>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.18.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.12.7.18.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1003,7 +1027,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.18.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.12.7.18.6"></a><h4>Returns</h4>
 <p> pending unfinished <a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecFrame" title="struct GstVideoCodecFrame"><span class="type">GstVideoCodecFrame</span></a> identified by <em class="parameter"><code>frame_number</code></em>
 . </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
@@ -1016,7 +1040,7 @@
 gst_video_decoder_get_frames (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-GstVideoDecoder.html#GstVideoDecoder" title="struct GstVideoDecoder"><span class="type">GstVideoDecoder</span></a> *decoder</code></em>);</pre>
 <p>Get all pending unfinished <a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecFrame" title="struct GstVideoCodecFrame"><span class="type">GstVideoCodecFrame</span></a></p>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.19.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.12.7.19.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1031,7 +1055,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.19.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.12.7.19.6"></a><h4>Returns</h4>
 <p> pending unfinished <a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecFrame" title="struct GstVideoCodecFrame"><span class="type">GstVideoCodecFrame</span></a>. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstVideoCodecFrame]</span></p>
 </div>
@@ -1048,7 +1072,7 @@
 In particular, a negative result means decoding in time is no longer possible
 and should therefore occur as soon/skippy as possible.</p>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.20.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.12.7.20.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1070,7 +1094,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.20.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.12.7.20.6"></a><h4>Returns</h4>
 <p> max decoding time.</p>
 <p></p>
 </div>
@@ -1081,7 +1105,7 @@
 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="returnvalue">gint</span></a>
 gst_video_decoder_get_max_errors (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-GstVideoDecoder.html#GstVideoDecoder" title="struct GstVideoDecoder"><span class="type">GstVideoDecoder</span></a> *dec</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.21.4"></a><h4>Parameters</h4>
+<a name="id-1.2.15.12.7.21.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1096,7 +1120,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.21.5"></a><h4>Returns</h4>
+<a name="id-1.2.15.12.7.21.5"></a><h4>Returns</h4>
 <p> currently configured decoder tolerated error count.</p>
 <p></p>
 </div>
@@ -1108,7 +1132,7 @@
 gst_video_decoder_get_oldest_frame (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-GstVideoDecoder.html#GstVideoDecoder" title="struct GstVideoDecoder"><span class="type">GstVideoDecoder</span></a> *decoder</code></em>);</pre>
 <p>Get the oldest pending unfinished <a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecFrame" title="struct GstVideoCodecFrame"><span class="type">GstVideoCodecFrame</span></a></p>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.22.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.12.7.22.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1123,7 +1147,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.22.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.12.7.22.6"></a><h4>Returns</h4>
 <p> oldest pending unfinished <a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecFrame" title="struct GstVideoCodecFrame"><span class="type">GstVideoCodecFrame</span></a>. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
 </div>
@@ -1136,7 +1160,7 @@
 <p>Queries whether input data is considered packetized or not by the
 base class.</p>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.23.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.12.7.23.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1151,18 +1175,48 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.23.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.12.7.23.6"></a><h4>Returns</h4>
 <p> TRUE if input data is considered packetized.</p>
 <p></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
+<a name="gst-video-decoder-get-pending-frame-size"></a><h3>gst_video_decoder_get_pending_frame_size ()</h3>
+<pre class="programlisting"><span class="returnvalue">gsize</span>
+gst_video_decoder_get_pending_frame_size
+                               (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-GstVideoDecoder.html#GstVideoDecoder" title="struct GstVideoDecoder"><span class="type">GstVideoDecoder</span></a> *decoder</code></em>);</pre>
+<p>Returns the number of bytes previously added to the current frame
+by calling <a class="link" href="gst-plugins-base-libs-GstVideoDecoder.html#gst-video-decoder-add-to-frame" title="gst_video_decoder_add_to_frame ()"><code class="function">gst_video_decoder_add_to_frame()</code></a>.</p>
+<div class="refsect3">
+<a name="id-1.2.15.12.7.24.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>decoder</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-GstVideoDecoder.html#GstVideoDecoder" title="struct GstVideoDecoder"><span class="type">GstVideoDecoder</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.15.12.7.24.6"></a><h4>Returns</h4>
+<p> The number of bytes pending for the current frame</p>
+<p></p>
+</div>
+<p class="since">Since 1.4</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="gst-video-decoder-get-qos-proportion"></a><h3>gst_video_decoder_get_qos_proportion ()</h3>
 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="returnvalue">gdouble</span></a>
 gst_video_decoder_get_qos_proportion (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-GstVideoDecoder.html#GstVideoDecoder" title="struct GstVideoDecoder"><span class="type">GstVideoDecoder</span></a> *decoder</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.24.4"></a><h4>Parameters</h4>
+<a name="id-1.2.15.12.7.25.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1178,7 +1232,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.24.5"></a><h4>Returns</h4>
+<a name="id-1.2.15.12.7.25.5"></a><h4>Returns</h4>
 <p> The current QoS proportion.</p>
 <p></p>
 </div>
@@ -1193,7 +1247,7 @@
 metadata and passes it along for further processing, i.e. <em class="parameter"><code>handle_frame</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.25.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.12.7.26.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1208,7 +1262,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.25.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.12.7.26.6"></a><h4>Returns</h4>
 <p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="type">GstFlowReturn</span></a></p>
 <p></p>
 </div>
@@ -1225,7 +1279,7 @@
  and <em class="parameter"><code>max_latency</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.26.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.12.7.27.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1265,7 +1319,7 @@
 latency is. Will also post a LATENCY message on the bus so the pipeline
 can reconfigure its global latency.</p>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.27.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.12.7.28.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1298,7 +1352,7 @@
 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="returnvalue">gint</span></a>
 gst_video_decoder_get_estimate_rate (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-GstVideoDecoder.html#GstVideoDecoder" title="struct GstVideoDecoder"><span class="type">GstVideoDecoder</span></a> *dec</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.28.4"></a><h4>Parameters</h4>
+<a name="id-1.2.15.12.7.29.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1313,7 +1367,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.28.5"></a><h4>Returns</h4>
+<a name="id-1.2.15.12.7.29.5"></a><h4>Returns</h4>
 <p> currently configured byte to time conversion setting</p>
 <p></p>
 </div>
@@ -1325,7 +1379,7 @@
 gst_video_decoder_get_output_state (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-GstVideoDecoder.html#GstVideoDecoder" title="struct GstVideoDecoder"><span class="type">GstVideoDecoder</span></a> *decoder</code></em>);</pre>
 <p>Get the <a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecState" title="struct GstVideoCodecState"><span class="type">GstVideoCodecState</span></a> currently describing the output stream.</p>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.29.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.12.7.30.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1340,7 +1394,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.29.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.12.7.30.6"></a><h4>Returns</h4>
 <p> <a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecState" title="struct GstVideoCodecState"><span class="type">GstVideoCodecState</span></a> describing format of video data. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
 </div>
@@ -1353,7 +1407,7 @@
                                      <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> enabled</code></em>);</pre>
 <p>Allows baseclass to perform byte to time estimated conversion.</p>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.30.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.12.7.31.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1401,7 +1455,7 @@
 <p>The new output state will only take effect (set on pads and buffers) starting
 from the next call to <a class="link" href="gst-plugins-base-libs-GstVideoDecoder.html#gst-video-decoder-finish-frame" title="gst_video_decoder_finish_frame ()"><code class="function">gst_video_decoder_finish_frame()</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.31.8"></a><h4>Parameters</h4>
+<a name="id-1.2.15.12.7.32.8"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1438,7 +1492,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.31.9"></a><h4>Returns</h4>
+<a name="id-1.2.15.12.7.32.9"></a><h4>Returns</h4>
 <p> the newly configured output state. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
 </div>
@@ -1450,10 +1504,12 @@
 gst_video_decoder_set_max_errors (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-GstVideoDecoder.html#GstVideoDecoder" title="struct GstVideoDecoder"><span class="type">GstVideoDecoder</span></a> *dec</code></em>,
                                   <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> num</code></em>);</pre>
 <p>Sets numbers of tolerated decoder errors, where a tolerated one is then only
-warned about, but more than tolerated will lead to fatal error.  Default
-is set to GST_VIDEO_DECODER_MAX_ERRORS.</p>
+warned about, but more than tolerated will lead to fatal error.  You can set
+-1 for never returning fatal errors. Default is set to
+GST_VIDEO_DECODER_MAX_ERRORS.</p>
+<p>The '-1' option was added in 1.4</p>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.32.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.12.7.33.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1485,7 +1541,7 @@
 input is packetized, then the <em class="parameter"><code>parse</code></em>
  method will not be called.</p>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.33.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.12.7.34.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1509,9 +1565,73 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="gst-video-decoder-get-needs-format"></a><h3>gst_video_decoder_get_needs_format ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_video_decoder_get_needs_format (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-GstVideoDecoder.html#GstVideoDecoder" title="struct GstVideoDecoder"><span class="type">GstVideoDecoder</span></a> *dec</code></em>);</pre>
+<p>Queries decoder required format handling.</p>
+<div class="refsect3">
+<a name="id-1.2.15.12.7.35.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>dec</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-GstVideoDecoder.html#GstVideoDecoder" title="struct GstVideoDecoder"><span class="type">GstVideoDecoder</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.15.12.7.35.6"></a><h4>Returns</h4>
+<p> TRUE if required format handling is enabled.</p>
+<p></p>
+</div>
+<p class="since">Since 1.4</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-video-decoder-set-needs-format"></a><h3>gst_video_decoder_set_needs_format ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_video_decoder_set_needs_format (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-GstVideoDecoder.html#GstVideoDecoder" title="struct GstVideoDecoder"><span class="type">GstVideoDecoder</span></a> *dec</code></em>,
+                                    <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> enabled</code></em>);</pre>
+<p>Configures decoder format needs.  If enabled, subclass needs to be
+negotiated with format caps before it can process any data.  It will then
+never be handed any data before it has been configured.
+Otherwise, it might be handed data without having been configured and
+is then expected being able to do so either by default
+or based on the input data.</p>
+<div class="refsect3">
+<a name="id-1.2.15.12.7.36.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>dec</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-GstVideoDecoder.html#GstVideoDecoder" title="struct GstVideoDecoder"><span class="type">GstVideoDecoder</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>enabled</p></td>
+<td class="parameter_description"><p>new state</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since 1.4</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="gst-video-decoder-merge-tags"></a><h3>gst_video_decoder_merge_tags ()</h3>
 <pre class="programlisting"><span class="returnvalue">void</span>
-gst_video_decoder_merge_tags (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-GstVideoDecoder.html#GstVideoDecoder" title="struct GstVideoDecoder"><span class="type">GstVideoDecoder</span></a> *dec</code></em>,
+gst_video_decoder_merge_tags (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-GstVideoDecoder.html#GstVideoDecoder" title="struct GstVideoDecoder"><span class="type">GstVideoDecoder</span></a> *decoder</code></em>,
                               <em class="parameter"><code>const <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstTagList.html#GstTagList"><span class="type">GstTagList</span></a> *tags</code></em>,
                               <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstTagList.html#GstTagMergeMode"><span class="type">GstTagMergeMode</span></a> mode</code></em>);</pre>
 <p>Adds tags to so-called pending tags, which will be processed
@@ -1520,7 +1640,7 @@
 not required to use this and can still do tag handling on its own.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.2.14.12.7.34.7"></a><h4>Parameters</h4>
+<a name="id-1.2.15.12.7.37.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1626,6 +1746,12 @@
   gboolean      (*propose_allocation) (GstVideoDecoder *decoder, GstQuery * query);
 
   gboolean      (*flush)              (GstVideoDecoder *decoder);
+
+  gboolean      (*sink_query)     (GstVideoDecoder *decoder,
+				   GstQuery *query);
+
+  gboolean      (*src_query)      (GstVideoDecoder *decoder,
+				   GstQuery *query);
 };
 </pre>
 <p>Subclasses can override any of the available virtual methods or not, as
@@ -1636,7 +1762,7 @@
 <em class="parameter"><code>parse</code></em>
  needs to be overridden as well.</p>
 <div class="refsect3">
-<a name="id-1.2.14.12.8.7.5"></a><h4>Members</h4>
+<a name="id-1.2.15.12.8.7.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -1756,6 +1882,24 @@
 pushing it downstream. Since: 1.2</p></td>
 <td class="struct_member_annotations"> </td>
 </tr>
+<tr>
+<td class="struct_member_name"><p><em class="structfield"><code><a name="GstVideoDecoderClass.sink-query"></a>sink_query</code></em> ()</p></td>
+<td class="struct_member_description"><p>Optional.
+Query handler on the sink pad. This function should
+return TRUE if the query could be performed. Subclasses
+should chain up to the parent implementation to invoke the
+default handler. Since 1.4</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><em class="structfield"><code><a name="GstVideoDecoderClass.src-query"></a>src_query</code></em> ()</p></td>
+<td class="struct_member_description"><p>Optional.
+Query handler on the source pad. This function should
+return TRUE if the query could be performed. Subclasses
+should chain up to the parent implementation to invoke the
+default handler. Since 1.4</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
 </tbody>
 </table></div>
 </div>
diff --git a/docs/libs/html/gst-plugins-base-libs-GstVideoEncoder.html b/docs/libs/html/gst-plugins-base-libs-GstVideoEncoder.html
index f2565d6..a098b24 100644
--- a/docs/libs/html/gst-plugins-base-libs-GstVideoEncoder.html
+++ b/docs/libs/html/gst-plugins-base-libs-GstVideoEncoder.html
@@ -7,7 +7,7 @@
 <link rel="home" href="index.html" title="GStreamer Base Plugins 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-video.html" title="Video Library">
 <link rel="prev" href="gst-plugins-base-libs-GstVideoDecoder.html" title="GstVideoDecoder">
-<link rel="next" href="gst-plugins-base-libs-gstvideoutils.html" title="gstvideoutils">
+<link rel="next" href="gst-plugins-base-libs-GstVideoPool.html" title="GstVideoPool">
 <meta name="generator" content="GTK-Doc V1.20 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
@@ -21,7 +21,7 @@
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="gstreamer-video.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
 <td><a accesskey="p" href="gst-plugins-base-libs-GstVideoDecoder.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="gst-plugins-base-libs-gstvideoutils.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="gst-plugins-base-libs-GstVideoPool.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
 <a name="gst-plugins-base-libs-GstVideoEncoder"></a><div class="titlepage"></div>
@@ -172,22 +172,6 @@
 </tr>
 <tr>
 <td class="function_type">
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#gst-video-encoder-get-discont" title="gst_video_encoder_get_discont ()">gst_video_encoder_get_discont</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#gst-video-encoder-set-discont" title="gst_video_encoder_set_discont ()">gst_video_encoder_set_discont</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
 <a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecState" title="struct GstVideoCodecState"><span class="returnvalue">GstVideoCodecState</span></a> *
 </td>
 <td class="function_name">
@@ -351,7 +335,7 @@
 </pre>
 <p>Gives the pointer to the sink <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a> object of the element.</p>
 <div class="refsect3">
-<a name="id-1.2.14.13.7.3.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.13.7.3.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -373,7 +357,7 @@
 </pre>
 <p>Gives the pointer to the source <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a> object of the element.</p>
 <div class="refsect3">
-<a name="id-1.2.14.13.7.4.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.13.7.4.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -395,7 +379,7 @@
 </pre>
 <p>Gives the segment of the element.</p>
 <div class="refsect3">
-<a name="id-1.2.14.13.7.5.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.13.7.5.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -417,7 +401,7 @@
 </pre>
 <p>Gives the segment of the element.</p>
 <div class="refsect3">
-<a name="id-1.2.14.13.7.6.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.13.7.6.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -439,7 +423,7 @@
 </pre>
 <p>Obtain a lock to protect the encoder function from concurrent access.</p>
 <div class="refsect3">
-<a name="id-1.2.14.13.7.7.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.13.7.7.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -461,7 +445,7 @@
 </pre>
 <p>Release the lock that protects the encoder function from concurrent access.</p>
 <div class="refsect3">
-<a name="id-1.2.14.13.7.8.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.13.7.8.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -487,7 +471,7 @@
 for <em class="parameter"><code>encoder</code></em>
 's current <a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecState" title="struct GstVideoCodecState"><span class="type">GstVideoCodecState</span></a>.</p>
 <div class="refsect3">
-<a name="id-1.2.14.13.7.9.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.13.7.9.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -509,7 +493,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.13.7.9.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.13.7.9.6"></a><h4>Returns</h4>
 <p> allocated buffer. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
 </div>
@@ -529,7 +513,7 @@
 <p>The buffer allocated here is owned by the frame and you should only
 keep references to the frame, not the buffer.</p>
 <div class="refsect3">
-<a name="id-1.2.14.13.7.10.6"></a><h4>Parameters</h4>
+<a name="id-1.2.15.13.7.10.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -556,7 +540,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.13.7.10.7"></a><h4>Returns</h4>
+<a name="id-1.2.15.13.7.10.7"></a><h4>Returns</h4>
 <p> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GST-FLOW-OK:CAPS"><code class="literal">GST_FLOW_OK</code></a> if an output buffer could be allocated</p>
 <p></p>
 </div>
@@ -575,7 +559,7 @@
 <p>Unref the <em class="parameter"><code>allocator</code></em>
  after use it.</p>
 <div class="refsect3">
-<a name="id-1.2.14.13.7.11.6"></a><h4>Parameters</h4>
+<a name="id-1.2.15.13.7.11.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -622,7 +606,7 @@
 considered read-only. This function will also change the metadata
 of the buffer.</p>
 <div class="refsect3">
-<a name="id-1.2.14.13.7.12.6"></a><h4>Parameters</h4>
+<a name="id-1.2.15.13.7.12.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -644,7 +628,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.13.7.12.7"></a><h4>Returns</h4>
+<a name="id-1.2.15.13.7.12.7"></a><h4>Returns</h4>
 <p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="type">GstFlowReturn</span></a> resulting from sending data downstream</p>
 <p></p>
 </div>
@@ -658,7 +642,7 @@
 Unmark GST_PAD_FLAG_NEED_RECONFIGURE in any case. But mark it again if
 negotiate fails.</p>
 <div class="refsect3">
-<a name="id-1.2.14.13.7.13.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.13.7.13.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -673,7 +657,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.13.7.13.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.13.7.13.6"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><span class="type">TRUE</span></a> if the negotiation succeeded, else <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><span class="type">FALSE</span></a>.</p>
 <p></p>
 </div>
@@ -686,7 +670,7 @@
                              <em class="parameter"><code><span class="type">int</span> frame_number</code></em>);</pre>
 <p>Get a pending unfinished <a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecFrame" title="struct GstVideoCodecFrame"><span class="type">GstVideoCodecFrame</span></a></p>
 <div class="refsect3">
-<a name="id-1.2.14.13.7.14.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.13.7.14.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -708,7 +692,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.13.7.14.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.13.7.14.6"></a><h4>Returns</h4>
 <p> pending unfinished <a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecFrame" title="struct GstVideoCodecFrame"><span class="type">GstVideoCodecFrame</span></a> identified by <em class="parameter"><code>frame_number</code></em>
 . </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
@@ -721,7 +705,7 @@
 gst_video_encoder_get_frames (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GstVideoEncoder" title="struct GstVideoEncoder"><span class="type">GstVideoEncoder</span></a> *encoder</code></em>);</pre>
 <p>Get all pending unfinished <a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecFrame" title="struct GstVideoCodecFrame"><span class="type">GstVideoCodecFrame</span></a></p>
 <div class="refsect3">
-<a name="id-1.2.14.13.7.15.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.13.7.15.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -736,7 +720,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.13.7.15.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.13.7.15.6"></a><h4>Returns</h4>
 <p> pending unfinished <a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecFrame" title="struct GstVideoCodecFrame"><span class="type">GstVideoCodecFrame</span></a>. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstVideoCodecFrame]</span></p>
 </div>
@@ -748,7 +732,7 @@
 gst_video_encoder_get_oldest_frame (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GstVideoEncoder" title="struct GstVideoEncoder"><span class="type">GstVideoEncoder</span></a> *encoder</code></em>);</pre>
 <p>Get the oldest unfinished pending <a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecFrame" title="struct GstVideoCodecFrame"><span class="type">GstVideoCodecFrame</span></a></p>
 <div class="refsect3">
-<a name="id-1.2.14.13.7.16.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.13.7.16.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -763,7 +747,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.13.7.16.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.13.7.16.6"></a><h4>Returns</h4>
 <p> oldest unfinished pending <a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecFrame" title="struct GstVideoCodecFrame"><span class="type">GstVideoCodecFrame</span></a>. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
 </div>
@@ -776,7 +760,7 @@
                                <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="type">GList</span></a> *headers</code></em>);</pre>
 <p>Set the codec headers to be sent downstream whenever requested.</p>
 <div class="refsect3">
-<a name="id-1.2.14.13.7.17.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.13.7.17.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -810,7 +794,7 @@
  and <em class="parameter"><code>max_latency</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.14.13.7.18.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.13.7.18.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -848,7 +832,7 @@
                                <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a> max_latency</code></em>);</pre>
 <p>Informs baseclass of encoding latency.</p>
 <div class="refsect3">
-<a name="id-1.2.14.13.7.19.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.13.7.19.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -877,18 +861,6 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-video-encoder-get-discont"></a><h3>gst_video_encoder_get_discont ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_video_encoder_get_discont (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GstVideoEncoder" title="struct GstVideoEncoder"><span class="type">GstVideoEncoder</span></a> *encoder</code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-video-encoder-set-discont"></a><h3>gst_video_encoder_set_discont ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-gst_video_encoder_set_discont (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GstVideoEncoder" title="struct GstVideoEncoder"><span class="type">GstVideoEncoder</span></a> *encoder</code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
 <a name="gst-video-encoder-set-output-state"></a><h3>gst_video_encoder_set_output_state ()</h3>
 <pre class="programlisting"><a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecState" title="struct GstVideoCodecState"><span class="returnvalue">GstVideoCodecState</span></a> *
 gst_video_encoder_set_output_state (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GstVideoEncoder" title="struct GstVideoEncoder"><span class="type">GstVideoEncoder</span></a> *encoder</code></em>,
@@ -912,7 +884,7 @@
 <p>The new output state will only take effect (set on pads and buffers) starting
 from the next call to <a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#gst-video-encoder-finish-frame" title="gst_video_encoder_finish_frame ()"><code class="function">gst_video_encoder_finish_frame()</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.2.14.13.7.22.9"></a><h4>Parameters</h4>
+<a name="id-1.2.15.13.7.20.9"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -940,7 +912,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.13.7.22.10"></a><h4>Returns</h4>
+<a name="id-1.2.15.13.7.20.10"></a><h4>Returns</h4>
 <p> the newly configured output state. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
 </div>
@@ -952,7 +924,7 @@
 gst_video_encoder_get_output_state (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GstVideoEncoder" title="struct GstVideoEncoder"><span class="type">GstVideoEncoder</span></a> *encoder</code></em>);</pre>
 <p>Get the current <a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecState" title="struct GstVideoCodecState"><span class="type">GstVideoCodecState</span></a></p>
 <div class="refsect3">
-<a name="id-1.2.14.13.7.23.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.13.7.21.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -967,7 +939,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.13.7.23.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.13.7.21.6"></a><h4>Returns</h4>
 <p> <a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecState" title="struct GstVideoCodecState"><span class="type">GstVideoCodecState</span></a> describing format of video data. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
 </div>
@@ -985,7 +957,7 @@
 restricted to resolution/format/... combinations supported by downstream
 elements (e.g. muxers).</p>
 <div class="refsect3">
-<a name="id-1.2.14.13.7.24.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.13.7.22.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1012,7 +984,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.13.7.24.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.13.7.22.6"></a><h4>Returns</h4>
 <p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a> owned by caller</p>
 <p></p>
 </div>
@@ -1030,7 +1002,7 @@
 not required to use this and can still do tag handling on its own.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.2.14.13.7.25.7"></a><h4>Parameters</h4>
+<a name="id-1.2.15.13.7.23.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1138,6 +1110,12 @@
   gboolean      (*propose_allocation) (GstVideoEncoder * encoder,
                                        GstQuery * query);
   gboolean      (*flush)              (GstVideoEncoder *encoder);
+
+  gboolean      (*sink_query)     (GstVideoEncoder *encoder,
+				   GstQuery *query);
+
+  gboolean      (*src_query)      (GstVideoEncoder *encoder,
+				   GstQuery *query);
 };
 </pre>
 <p>Subclasses can override any of the available virtual methods or not, as
@@ -1147,7 +1125,7 @@
 and <em class="parameter"><code>get_caps</code></em>
  are likely needed as well.</p>
 <div class="refsect3">
-<a name="id-1.2.14.13.8.7.5"></a><h4>Members</h4>
+<a name="id-1.2.15.13.8.7.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -1280,6 +1258,24 @@
 pushing it downstream. Since: 1.2</p></td>
 <td class="struct_member_annotations"> </td>
 </tr>
+<tr>
+<td class="struct_member_name"><p><em class="structfield"><code><a name="GstVideoEncoderClass.sink-query"></a>sink_query</code></em> ()</p></td>
+<td class="struct_member_description"><p>Optional.
+Query handler on the sink pad. This function should
+return TRUE if the query could be performed. Subclasses
+should chain up to the parent implementation to invoke the
+default handler. Since 1.4</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><em class="structfield"><code><a name="GstVideoEncoderClass.src-query"></a>src_query</code></em> ()</p></td>
+<td class="struct_member_description"><p>Optional.
+Query handler on the source pad. This function should
+return TRUE if the query could be performed. Subclasses
+should chain up to the parent implementation to invoke the
+default handler. Since 1.4</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
 </tbody>
 </table></div>
 </div>
diff --git a/docs/libs/html/gst-plugins-base-libs-GstVideoPool.html b/docs/libs/html/gst-plugins-base-libs-GstVideoPool.html
new file mode 100644
index 0000000..bcba9e7
--- /dev/null
+++ b/docs/libs/html/gst-plugins-base-libs-GstVideoPool.html
@@ -0,0 +1,250 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>GStreamer Base Plugins 1.0 Library Reference Manual: GstVideoPool</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="index.html" title="GStreamer Base Plugins 1.0 Library Reference Manual">
+<link rel="up" href="gstreamer-video.html" title="Video Library">
+<link rel="prev" href="gst-plugins-base-libs-GstVideoEncoder.html" title="GstVideoEncoder">
+<link rel="next" href="gst-plugins-base-libs-gstvideoutils.html" title="gstvideoutils">
+<meta name="generator" content="GTK-Doc V1.20 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span> 
+                  <a href="#gst-plugins-base-libs-GstVideoPool.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span> 
+                  <a href="#gst-plugins-base-libs-GstVideoPool.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="gstreamer-video.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-base-libs-GstVideoEncoder.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-base-libs-gstvideoutils.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-base-libs-GstVideoPool"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-base-libs-GstVideoPool.top_of_page"></a>GstVideoPool</span></h2>
+<p>GstVideoPool — GstBufferPool for raw video buffers</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-base-libs-GstVideoPool.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="functions_return">
+<col class="functions_name">
+</colgroup>
+<tbody>
+<tr>
+<td class="function_type">
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstBufferPool.html#GstBufferPool"><span class="returnvalue">GstBufferPool</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-GstVideoPool.html#gst-video-buffer-pool-new" title="gst_video_buffer_pool_new ()">gst_video_buffer_pool_new</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-GstVideoPool.html#gst-buffer-pool-config-get-video-alignment" title="gst_buffer_pool_config_get_video_alignment ()">gst_buffer_pool_config_get_video_alignment</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-GstVideoPool.html#gst-buffer-pool-config-set-video-alignment" title="gst_buffer_pool_config_set_video_alignment ()">gst_buffer_pool_config_set_video_alignment</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-base-libs-GstVideoPool.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-base-libs-GstVideoPool.html#GstVideoBufferPool" title="struct GstVideoBufferPool">GstVideoBufferPool</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-base-libs-GstVideoPool.html#GstVideoBufferPoolClass" title="struct GstVideoBufferPoolClass">GstVideoBufferPoolClass</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="gst-plugins-base-libs-GstVideoPool.html#GST-BUFFER-POOL-OPTION-VIDEO-ALIGNMENT:CAPS" title="GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT">GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="gst-plugins-base-libs-GstVideoPool.html#GST-BUFFER-POOL-OPTION-VIDEO-META:CAPS" title="GST_BUFFER_POOL_OPTION_VIDEO_META">GST_BUFFER_POOL_OPTION_VIDEO_META</a></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-base-libs-GstVideoPool.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen">
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-base-libs-GstVideoPool.includes"></a><h2>Includes</h2>
+<pre class="synopsis">#include &lt;gst/video/gstvideopool.h&gt;
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-base-libs-GstVideoPool.description"></a><h2>Description</h2>
+<p>Special GstBufferPool subclass for raw video buffers.</p>
+<p>Allows configuration of video-specific requirements such as
+stride alignments or pixel padding, and can also be configured
+to automatically add <a class="link" href="gst-plugins-base-libs-gstvideometa.html#GstVideoMeta" title="struct GstVideoMeta"><span class="type">GstVideoMeta</span></a> to the buffers.</p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-base-libs-GstVideoPool.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="gst-video-buffer-pool-new"></a><h3>gst_video_buffer_pool_new ()</h3>
+<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstBufferPool.html#GstBufferPool"><span class="returnvalue">GstBufferPool</span></a> *
+gst_video_buffer_pool_new (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>Create a new bufferpool that can allocate video frames. This bufferpool
+supports all the video bufferpool options.</p>
+<div class="refsect3">
+<a name="id-1.2.15.14.8.2.5"></a><h4>Returns</h4>
+<p> a new <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstBufferPool.html#GstBufferPool"><span class="type">GstBufferPool</span></a> to allocate video frames</p>
+<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-buffer-pool-config-get-video-alignment"></a><h3>gst_buffer_pool_config_get_video_alignment ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_buffer_pool_config_get_video_alignment
+                               (<em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstStructure.html#GstStructure"><span class="type">GstStructure</span></a> *config</code></em>,
+                                <em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstvideo.html#GstVideoAlignment" title="struct GstVideoAlignment"><span class="type">GstVideoAlignment</span></a> *align</code></em>);</pre>
+<p>Get the video alignment from the bufferpool configuration <em class="parameter"><code>config</code></em>
+ in
+in <em class="parameter"><code>align</code></em>
+</p>
+<div class="refsect3">
+<a name="id-1.2.15.14.8.3.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>config</p></td>
+<td class="parameter_description"><p>a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstStructure.html#GstStructure"><span class="type">GstStructure</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>align</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstvideo.html#GstVideoAlignment" title="struct GstVideoAlignment"><span class="type">GstVideoAlignment</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.15.14.8.3.6"></a><h4>Returns</h4>
+<p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><span class="type">TRUE</span></a> if <em class="parameter"><code>config</code></em>
+could be parsed correctly.</p>
+<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-buffer-pool-config-set-video-alignment"></a><h3>gst_buffer_pool_config_set_video_alignment ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_buffer_pool_config_set_video_alignment
+                               (<em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstStructure.html#GstStructure"><span class="type">GstStructure</span></a> *config</code></em>,
+                                <em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstvideo.html#GstVideoAlignment" title="struct GstVideoAlignment"><span class="type">GstVideoAlignment</span></a> *align</code></em>);</pre>
+<p>Set the video alignment in <em class="parameter"><code>align</code></em>
+ to the bufferpool configuration
+<em class="parameter"><code>config</code></em>
+</p>
+<div class="refsect3">
+<a name="id-1.2.15.14.8.4.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>config</p></td>
+<td class="parameter_description"><p>a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstStructure.html#GstStructure"><span class="type">GstStructure</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>align</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstvideo.html#GstVideoAlignment" title="struct GstVideoAlignment"><span class="type">GstVideoAlignment</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-base-libs-GstVideoPool.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstVideoBufferPool"></a><h3>struct GstVideoBufferPool</h3>
+<pre class="programlisting">struct GstVideoBufferPool {
+  GstBufferPool bufferpool;
+
+  GstVideoBufferPoolPrivate *priv;
+};
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstVideoBufferPoolClass"></a><h3>struct GstVideoBufferPoolClass</h3>
+<pre class="programlisting">struct GstVideoBufferPoolClass {
+  GstBufferPoolClass parent_class;
+};
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GST-BUFFER-POOL-OPTION-VIDEO-ALIGNMENT:CAPS"></a><h3>GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT</h3>
+<pre class="programlisting">#define GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT "GstBufferPoolOptionVideoAlignment"
+</pre>
+<p>A bufferpool option to enable extra padding. When a bufferpool supports this
+option, <a class="link" href="gst-plugins-base-libs-GstVideoPool.html#gst-buffer-pool-config-set-video-alignment" title="gst_buffer_pool_config_set_video_alignment ()"><code class="function">gst_buffer_pool_config_set_video_alignment()</code></a> can be called.</p>
+<p>When this option is enabled on the bufferpool,
+<a class="link" href="gst-plugins-base-libs-GstVideoPool.html#GST-BUFFER-POOL-OPTION-VIDEO-META:CAPS" title="GST_BUFFER_POOL_OPTION_VIDEO_META"><span class="type">GST_BUFFER_POOL_OPTION_VIDEO_META</span></a> should also be enabled.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GST-BUFFER-POOL-OPTION-VIDEO-META:CAPS"></a><h3>GST_BUFFER_POOL_OPTION_VIDEO_META</h3>
+<pre class="programlisting">#define GST_BUFFER_POOL_OPTION_VIDEO_META "GstBufferPoolOptionVideoMeta"
+</pre>
+<p>An option that can be activated on bufferpool to request video metadata
+on buffers from the pool.</p>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-base-libs-GstVideoPool.see-also"></a><h2>See Also</h2>
+<p><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstBufferPool.html#GstBufferPool"><span class="type">GstBufferPool</span></a></p>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.20</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/libs/html/gst-plugins-base-libs-appsink.html b/docs/libs/html/gst-plugins-base-libs-appsink.html
index 4b9da03..e99cfd7 100644
--- a/docs/libs/html/gst-plugins-base-libs-appsink.html
+++ b/docs/libs/html/gst-plugins-base-libs-appsink.html
@@ -192,7 +192,6 @@
 "eos" property or with the <a class="link" href="gst-plugins-base-libs-appsink.html#gst-app-sink-is-eos" title="gst_app_sink_is_eos ()"><code class="function">gst_app_sink_is_eos()</code></a> method.</p>
 <p>The eos signal can also be used to be informed when the EOS state is reached
 to avoid polling.</p>
-<p>Last reviewed on 2008-12-17 (0.10.22)</p>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-base-libs-appsink.functions_details"></a><h2>Functions</h2>
diff --git a/docs/libs/html/gst-plugins-base-libs-appsrc.html b/docs/libs/html/gst-plugins-base-libs-appsrc.html
index 5384533..fe804fd 100644
--- a/docs/libs/html/gst-plugins-base-libs-appsrc.html
+++ b/docs/libs/html/gst-plugins-base-libs-appsrc.html
@@ -253,7 +253,6 @@
 <a class="link" href="gst-plugins-base-libs-appsrc.html#gst-app-src-end-of-stream" title="gst_app_src_end_of_stream ()"><code class="function">gst_app_src_end_of_stream()</code></a> or emit the end-of-stream action signal. After
 this call, no more buffers can be pushed into appsrc until a flushing seek
 happened or the state of the appsrc has gone through READY.</p>
-<p>Last reviewed on 2008-12-17 (0.10.10)</p>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-base-libs-appsrc.functions_details"></a><h2>Functions</h2>
@@ -753,9 +752,9 @@
 <div class="refsect3">
 <a name="id-1.2.5.4.8.16.7"></a><h4>Returns</h4>
 <p> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GST-FLOW-OK:CAPS"><span class="type">GST_FLOW_OK</span></a> when the buffer was successfuly queued.
-<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GST-FLOW-FLUSHING:CAPS"><span class="type">GST_FLOW_FLUSHING</span></a> when <em class="parameter"><code>appsrc</code></em>
+<span class="type">GST_FLOW_FLUSHING</span> when <em class="parameter"><code>appsrc</code></em>
 is not PAUSED or PLAYING.
-<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GST-FLOW-EOS:CAPS"><span class="type">GST_FLOW_EOS</span></a> when EOS occured.</p>
+<span class="type">GST_FLOW_EOS</span> when EOS occured.</p>
 <p></p>
 </div>
 </div>
@@ -784,7 +783,7 @@
 <div class="refsect3">
 <a name="id-1.2.5.4.8.17.6"></a><h4>Returns</h4>
 <p> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GST-FLOW-OK:CAPS"><span class="type">GST_FLOW_OK</span></a> when the EOS was successfuly queued.
-<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GST-FLOW-FLUSHING:CAPS"><span class="type">GST_FLOW_FLUSHING</span></a> when <em class="parameter"><code>appsrc</code></em>
+<span class="type">GST_FLOW_FLUSHING</span> when <em class="parameter"><code>appsrc</code></em>
 is not PAUSED or PLAYING.</p>
 <p></p>
 </div>
diff --git a/docs/libs/html/gst-plugins-base-libs-encoding-profile.html b/docs/libs/html/gst-plugins-base-libs-encoding-profile.html
index f276be6..f52aa61 100644
--- a/docs/libs/html/gst-plugins-base-libs-encoding-profile.html
+++ b/docs/libs/html/gst-plugins-base-libs-encoding-profile.html
@@ -16,7 +16,8 @@
 <td width="100%" align="left" class="shortcuts">
 <a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span> 
                   <a href="#gst-plugins-base-libs-encoding-profile.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span> 
-                  <a href="#gst-plugins-base-libs-encoding-profile.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
+                  <a href="#gst-plugins-base-libs-encoding-profile.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties"> <span class="dim">|</span> 
+                  <a href="#gst-plugins-base-libs-encoding-profile.properties" class="shortcut">Properties</a></span>
 </td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="gstreamer-base-utils.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
@@ -400,6 +401,22 @@
 </tbody>
 </table></div>
 </div>
+<div class="refsect1">
+<a name="gst-plugins-base-libs-encoding-profile.properties"></a><h2>Properties</h2>
+<div class="informaltable"><table border="0">
+<colgroup>
+<col width="150px" class="properties_type">
+<col width="300px" class="properties_name">
+<col width="200px" class="properties_flags">
+</colgroup>
+<tbody><tr>
+<td class="property_type">
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-base-libs-encoding-profile.html#GstEncodingProfile--restriction-caps" title="The “restriction-caps” property">restriction-caps</a></td>
+<td class="property_flags">Read / Write</td>
+</tr></tbody>
+</table></div>
+</div>
 <a name="GstEncodingProfile"></a><a name="GstEncodingContainerProfile"></a><a name="GstEncodingAudioProfile"></a><a name="GstEncodingVideoProfile"></a><a name="GstEncodingTarget"></a><div class="refsect1">
 <a name="gst-plugins-base-libs-encoding-profile.other"></a><h2>Types and Values</h2>
 <div class="informaltable"><table width="100%" border="0">
@@ -469,7 +486,7 @@
 <div class="refsect1">
 <a name="gst-plugins-base-libs-encoding-profile.description"></a><h2>Description</h2>
 <div class="refsect2">
-<a name="id-1.2.13.10.12.2"></a><p>
+<a name="id-1.2.14.10.13.2"></a><p>
 Functions to create and handle encoding profiles.
 </p>
 <p>
@@ -497,7 +514,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.13.10.12.3"></a><h3>Example: Creating a profile</h3>
+<a name="id-1.2.14.10.13.3"></a><h3>Example: Creating a profile</h3>
 <p>
 </p>
 <div class="informalexample">
@@ -566,7 +583,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.13.10.12.4"></a><h3>Example: Listing categories, targets and profiles</h3>
+<a name="id-1.2.14.10.13.4"></a><h3>Example: Listing categories, targets and profiles</h3>
 <p>
 </p>
 <div class="informalexample">
@@ -646,7 +663,7 @@
 , possibly freeing the <em class="parameter"><code>profile</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.2.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.2.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -669,7 +686,7 @@
 <p>Increases the reference count of the <em class="parameter"><code>profile</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.3.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.3.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -693,7 +710,7 @@
                            <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *category</code></em>);</pre>
 <p>Find the <a class="link" href="gst-plugins-base-libs-encoding-profile.html#GstEncodingProfile"><span class="type">GstEncodingProfile</span></a> with the specified name and category.</p>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.4.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.4.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -720,7 +737,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.4.6"></a><h4>Returns</h4>
+<a name="id-1.2.14.10.14.4.6"></a><h4>Returns</h4>
 <p> The matching <a class="link" href="gst-plugins-base-libs-encoding-profile.html#GstEncodingProfile"><span class="type">GstEncodingProfile</span></a> or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
 </div>
@@ -734,7 +751,7 @@
 <a class="link" href="gst-plugins-base-libs-encoding-profile.html#GstEncodingProfile"><span class="type">GstEncodingProfile</span></a>. Streams other than audio or video (eg,
 subtitles), are currently ignored.</p>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.5.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.5.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -749,7 +766,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.5.6"></a><h4>Returns</h4>
+<a name="id-1.2.14.10.14.5.6"></a><h4>Returns</h4>
 <p> The new <a class="link" href="gst-plugins-base-libs-encoding-profile.html#GstEncodingProfile"><span class="type">GstEncodingProfile</span></a> or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
 </div>
@@ -760,7 +777,7 @@
 <pre class="programlisting">const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
 gst_encoding_profile_get_name (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-encoding-profile.html#GstEncodingProfile"><span class="type">GstEncodingProfile</span></a> *profile</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.6.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.6.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -775,7 +792,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.6.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.10.14.6.5"></a><h4>Returns</h4>
 <p> the name of the profile, can be <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</p>
 <p></p>
 </div>
@@ -786,7 +803,7 @@
 <pre class="programlisting">const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
 gst_encoding_profile_get_description (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-encoding-profile.html#GstEncodingProfile"><span class="type">GstEncodingProfile</span></a> *profile</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.7.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.7.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -801,7 +818,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.7.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.10.14.7.5"></a><h4>Returns</h4>
 <p> the description of the profile, can be <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</p>
 <p></p>
 </div>
@@ -812,7 +829,7 @@
 <pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="returnvalue">GstCaps</span></a> *
 gst_encoding_profile_get_format (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-encoding-profile.html#GstEncodingProfile"><span class="type">GstEncodingProfile</span></a> *profile</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.8.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.8.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -827,7 +844,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.8.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.10.14.8.5"></a><h4>Returns</h4>
 <p> the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a> corresponding to the media format used
 in the profile. Unref after usage. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
@@ -839,7 +856,7 @@
 <pre class="programlisting">const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
 gst_encoding_profile_get_preset (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-encoding-profile.html#GstEncodingProfile"><span class="type">GstEncodingProfile</span></a> *profile</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.9.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.9.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -854,7 +871,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.9.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.10.14.9.5"></a><h4>Returns</h4>
 <p> the name of the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPreset.html"><span class="type">GstPreset</span></a> to be used in the profile.
 This is the name that has been set when saving the preset.</p>
 <p></p>
@@ -866,7 +883,7 @@
 <pre class="programlisting">const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
 gst_encoding_profile_get_preset_name (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-encoding-profile.html#GstEncodingProfile"><span class="type">GstEncodingProfile</span></a> *profile</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.10.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.10.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -881,7 +898,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.10.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.10.14.10.5"></a><h4>Returns</h4>
 <p> the name of the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPreset.html"><span class="type">GstPreset</span></a> factory to be used in the profile.</p>
 <p></p>
 </div>
@@ -892,7 +909,7 @@
 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
 gst_encoding_profile_get_presence (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-encoding-profile.html#GstEncodingProfile"><span class="type">GstEncodingProfile</span></a> *profile</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.11.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.11.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -907,7 +924,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.11.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.10.14.11.5"></a><h4>Returns</h4>
 <p> The number of times the profile is used in its parent
 container profile. If 0, it is not a mandatory stream.</p>
 <p></p>
@@ -919,7 +936,7 @@
 <pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="returnvalue">GstCaps</span></a> *
 gst_encoding_profile_get_restriction (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-encoding-profile.html#GstEncodingProfile"><span class="type">GstEncodingProfile</span></a> *profile</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.12.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.12.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -934,7 +951,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.12.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.10.14.12.5"></a><h4>Returns</h4>
 <p> The restriction <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a> to apply before the encoder
 that will be used in the profile. The fields present in restriction caps are
 properties of the raw stream (that is before encoding), such as height and
@@ -951,7 +968,7 @@
 gst_encoding_profile_get_file_extension
                                (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-encoding-profile.html#GstEncodingProfile"><span class="type">GstEncodingProfile</span></a> *profile</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.13.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.13.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -966,7 +983,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.13.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.10.14.13.5"></a><h4>Returns</h4>
 <p> a suitable file extension for <em class="parameter"><code>profile</code></em>
 , or NULL.</p>
 <p></p>
@@ -984,7 +1001,7 @@
  will be made
 internally.</p>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.14.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.14.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1018,7 +1035,7 @@
 <em class="parameter"><code>description</code></em>
  will be made internally.</p>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.15.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.15.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1048,7 +1065,7 @@
                                  <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> *format</code></em>);</pre>
 <p>Sets the media format used in the profile.</p>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.16.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.16.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1080,7 +1097,7 @@
 to use for the profile.
 This is the name that has been set when saving the preset.</p>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.17.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.17.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1110,7 +1127,7 @@
                                       <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *preset_name</code></em>);</pre>
 <p>Sets the name of the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPreset.html"><span class="type">GstPreset</span></a>'s factory to be used in the profile.</p>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.18.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.18.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1140,10 +1157,10 @@
 gst_encoding_profile_set_restriction (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-encoding-profile.html#GstEncodingProfile"><span class="type">GstEncodingProfile</span></a> *profile</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> *restriction</code></em>);</pre>
 <p>Set the restriction <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a> to apply before the encoder
-that will be used in the profile. See <a class="link" href="gst-plugins-base-libs-encoding-profile.html#gst-encoding-profile-set-restriction" title="gst_encoding_profile_set_restriction ()"><code class="function">gst_encoding_profile_set_restriction()</code></a>
+that will be used in the profile. See <a class="link" href="gst-plugins-base-libs-encoding-profile.html#gst-encoding-profile-get-restriction" title="gst_encoding_profile_get_restriction ()"><code class="function">gst_encoding_profile_get_restriction()</code></a>
 for more about restrictions. Does not apply to <a class="link" href="gst-plugins-base-libs-encoding-profile.html#GstEncodingContainerProfile"><span class="type">GstEncodingContainerProfile</span></a>.</p>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.19.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.19.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1174,7 +1191,7 @@
 <p>Set the number of time the profile is used in its parent
 container profile. If 0, it is not a mandatory stream</p>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.20.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.20.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1204,7 +1221,7 @@
                                <em class="parameter"><code><a class="link" href="gst-plugins-base-libs-encoding-profile.html#GstEncodingProfile"><span class="type">GstEncodingProfile</span></a> *b</code></em>);</pre>
 <p>Checks whether the two <a class="link" href="gst-plugins-base-libs-encoding-profile.html#GstEncodingProfile"><span class="type">GstEncodingProfile</span></a> are equal</p>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.21.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.21.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1226,7 +1243,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.21.6"></a><h4>Returns</h4>
+<a name="id-1.2.14.10.14.21.6"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>a</code></em>
 and <em class="parameter"><code>b</code></em>
 are equal, else <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
@@ -1241,7 +1258,7 @@
 <p>Computes the full output caps that this <em class="parameter"><code>profile</code></em>
  will be able to consume.</p>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.22.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.22.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1256,7 +1273,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.22.6"></a><h4>Returns</h4>
+<a name="id-1.2.14.10.14.22.6"></a><h4>Returns</h4>
 <p> The full caps the given <em class="parameter"><code>profile</code></em>
 can consume. Call
 <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#gst-caps-unref"><code class="function">gst_caps_unref()</code></a> when you are done with the caps. </p>
@@ -1269,7 +1286,7 @@
 <pre class="programlisting">const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
 gst_encoding_profile_get_type_nick (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-encoding-profile.html#GstEncodingProfile"><span class="type">GstEncodingProfile</span></a> *profile</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.23.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.23.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1284,7 +1301,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.23.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.10.14.23.5"></a><h4>Returns</h4>
 <p> the human-readable name of the type of <em class="parameter"><code>profile</code></em>
 .</p>
 <p></p>
@@ -1300,7 +1317,7 @@
                                     <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *preset</code></em>);</pre>
 <p>Creates a new <a class="link" href="gst-plugins-base-libs-encoding-profile.html#GstEncodingContainerProfile"><span class="type">GstEncodingContainerProfile</span></a>.</p>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.24.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.24.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1333,7 +1350,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.24.6"></a><h4>Returns</h4>
+<a name="id-1.2.14.10.14.24.6"></a><h4>Returns</h4>
 <p> The newly created <a class="link" href="gst-plugins-base-libs-encoding-profile.html#GstEncodingContainerProfile"><span class="type">GstEncodingContainerProfile</span></a>.</p>
 <p></p>
 </div>
@@ -1351,7 +1368,7 @@
  will be made, if you wish to use it elsewhere after this
 method you should increment its reference count.</p>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.25.6"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.25.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1373,7 +1390,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.25.7"></a><h4>Returns</h4>
+<a name="id-1.2.14.10.14.25.7"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the <em class="parameter"><code>stream</code></em>
 was properly added, else <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
 <p></p>
@@ -1391,7 +1408,7 @@
 <em class="parameter"><code>profile</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.26.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.26.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1413,7 +1430,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.26.6"></a><h4>Returns</h4>
+<a name="id-1.2.14.10.14.26.6"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>container</code></em>
 contains a <a class="link" href="gst-plugins-base-libs-encoding-profile.html#GstEncodingProfile"><span class="type">GstEncodingProfile</span></a> identical
 to <em class="parameter"><code>profile</code></em>
@@ -1428,7 +1445,7 @@
 gst_encoding_container_profile_get_profiles
                                (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-encoding-profile.html#GstEncodingContainerProfile"><span class="type">GstEncodingContainerProfile</span></a> *profile</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.27.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.27.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1443,7 +1460,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.27.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.10.14.27.5"></a><h4>Returns</h4>
 <p>the list of contained <a class="link" href="gst-plugins-base-libs-encoding-profile.html#GstEncodingProfile"><span class="type">GstEncodingProfile</span></a>. </p>
 <p><span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstPbutils.EncodingProfile][<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
 </div>
@@ -1460,7 +1477,7 @@
 <p>All provided allocatable arguments will be internally copied, so can be
 safely freed/unreferenced after calling this method.</p>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.28.6"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.28.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1494,7 +1511,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.28.7"></a><h4>Returns</h4>
+<a name="id-1.2.14.10.14.28.7"></a><h4>Returns</h4>
 <p> the newly created <a class="link" href="gst-plugins-base-libs-encoding-profile.html#GstEncodingAudioProfile"><span class="type">GstEncodingAudioProfile</span></a>.</p>
 <p></p>
 </div>
@@ -1515,7 +1532,7 @@
 <p>If you wish to use/force a constant framerate please refer to the
 <a class="link" href="gst-plugins-base-libs-encoding-profile.html#gst-encoding-video-profile-set-variableframerate" title="gst_encoding_video_profile_set_variableframerate ()"><code class="function">gst_encoding_video_profile_set_variableframerate()</code></a> documentation.</p>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.29.8"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.29.8"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1549,7 +1566,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.29.9"></a><h4>Returns</h4>
+<a name="id-1.2.14.10.14.29.9"></a><h4>Returns</h4>
 <p> the newly created <a class="link" href="gst-plugins-base-libs-encoding-profile.html#GstEncodingVideoProfile"><span class="type">GstEncodingVideoProfile</span></a>.</p>
 <p></p>
 </div>
@@ -1561,7 +1578,7 @@
 gst_encoding_video_profile_get_pass (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-encoding-profile.html#GstEncodingVideoProfile"><span class="type">GstEncodingVideoProfile</span></a> *prof</code></em>);</pre>
 <p>Get the pass number if this is part of a multi-pass profile.</p>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.30.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.30.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1576,7 +1593,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.30.6"></a><h4>Returns</h4>
+<a name="id-1.2.14.10.14.30.6"></a><h4>Returns</h4>
 <p> The pass number. Starts at 1 for multi-pass. 0 if this is
 not a multi-pass profile</p>
 <p></p>
@@ -1589,7 +1606,7 @@
 gst_encoding_video_profile_get_variableframerate
                                (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-encoding-profile.html#GstEncodingVideoProfile"><span class="type">GstEncodingVideoProfile</span></a> *prof</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.31.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.31.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1604,7 +1621,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.31.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.10.14.31.5"></a><h4>Returns</h4>
 <p> Whether non-constant video framerate is allowed for encoding.</p>
 <p></p>
 </div>
@@ -1619,7 +1636,7 @@
 this value set to 1. If this video profile isn't part of a multi-pass profile,
 you may set it to 0 (the default value).</p>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.32.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.32.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1653,7 +1670,7 @@
 be normalized by dropping/duplicating frames in order to produce a
 constance framerate.</p>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.33.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.33.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1682,7 +1699,7 @@
 <p>Decreases the reference count of the <em class="parameter"><code>target</code></em>
 , possibly freeing it.</p>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.34.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.34.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1704,7 +1721,7 @@
 <p>Increases the reference count of the <em class="parameter"><code>target</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.35.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.35.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1737,7 +1754,7 @@
 <span class="emphasis"><em>can</em></span> be a application or user specific category if
 needed.</p>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.36.7"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.36.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1772,7 +1789,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.36.8"></a><h4>Returns</h4>
+<a name="id-1.2.14.10.14.36.8"></a><h4>Returns</h4>
 <p> The newly created <a class="link" href="gst-plugins-base-libs-encoding-profile.html#GstEncodingTarget"><span class="type">GstEncodingTarget</span></a> or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if
 there was an error. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
@@ -1784,7 +1801,7 @@
 <pre class="programlisting">const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
 gst_encoding_target_get_name (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-encoding-profile.html#GstEncodingTarget"><span class="type">GstEncodingTarget</span></a> *target</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.37.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.37.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1799,7 +1816,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.37.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.10.14.37.5"></a><h4>Returns</h4>
 <p> The name of the <em class="parameter"><code>target</code></em>
 . </p>
 <p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
@@ -1811,7 +1828,7 @@
 <pre class="programlisting">const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
 gst_encoding_target_get_category (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-encoding-profile.html#GstEncodingTarget"><span class="type">GstEncodingTarget</span></a> *target</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.38.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.38.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1826,7 +1843,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.38.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.10.14.38.5"></a><h4>Returns</h4>
 <p> The category of the <em class="parameter"><code>target</code></em>
 . For example:
 <a class="link" href="gst-plugins-base-libs-encoding-profile.html#GST-ENCODING-CATEGORY-DEVICE:CAPS" title="GST_ENCODING_CATEGORY_DEVICE"><span class="type">GST_ENCODING_CATEGORY_DEVICE</span></a>. </p>
@@ -1839,7 +1856,7 @@
 <pre class="programlisting">const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
 gst_encoding_target_get_description (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-encoding-profile.html#GstEncodingTarget"><span class="type">GstEncodingTarget</span></a> *target</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.39.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.39.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1854,7 +1871,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.39.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.10.14.39.5"></a><h4>Returns</h4>
 <p> The description of the <em class="parameter"><code>target</code></em>
 . </p>
 <p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
@@ -1866,7 +1883,7 @@
 <pre class="programlisting">const <a href="http://library.gnome.org/devel/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="returnvalue">GList</span></a> *
 gst_encoding_target_get_profiles (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-encoding-profile.html#GstEncodingTarget"><span class="type">GstEncodingTarget</span></a> *target</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.40.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.40.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1881,7 +1898,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.40.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.10.14.40.5"></a><h4>Returns</h4>
 <p> A list of
 <a class="link" href="gst-plugins-base-libs-encoding-profile.html#GstEncodingProfile"><span class="type">GstEncodingProfile</span></a>(s) this <em class="parameter"><code>target</code></em>
 handles. </p>
@@ -1895,7 +1912,7 @@
 gst_encoding_target_get_profile (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-encoding-profile.html#GstEncodingTarget"><span class="type">GstEncodingTarget</span></a> *target</code></em>,
                                  <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *name</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.41.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.41.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1917,7 +1934,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.41.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.10.14.41.5"></a><h4>Returns</h4>
 <p> The matching <a class="link" href="gst-plugins-base-libs-encoding-profile.html#GstEncodingProfile"><span class="type">GstEncodingProfile</span></a>, or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
 </div>
@@ -1938,7 +1955,7 @@
 the profile after calling this method, you should increase its reference
 count.</p>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.42.6"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.42.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1960,7 +1977,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.42.7"></a><h4>Returns</h4>
+<a name="id-1.2.14.10.14.42.7"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the profile was added, else <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
 <p></p>
 </div>
@@ -1974,7 +1991,7 @@
 <p>Saves the <em class="parameter"><code>target</code></em>
  to a default user-local directory.</p>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.43.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.43.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1996,7 +2013,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.43.6"></a><h4>Returns</h4>
+<a name="id-1.2.14.10.14.43.6"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the target was correctly saved, else <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
 <p></p>
 </div>
@@ -2011,7 +2028,7 @@
 <p>Saves the <em class="parameter"><code>target</code></em>
  to the provided file location.</p>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.44.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.44.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2039,7 +2056,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.44.6"></a><h4>Returns</h4>
+<a name="id-1.2.14.10.14.44.6"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the target was correctly saved, else <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
 <p></p>
 </div>
@@ -2056,7 +2073,7 @@
 <p>If the category name is specified only targets from that category will be
 searched for.</p>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.45.6"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.45.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2084,7 +2101,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.45.7"></a><h4>Returns</h4>
+<a name="id-1.2.14.10.14.45.7"></a><h4>Returns</h4>
 <p> The <a class="link" href="gst-plugins-base-libs-encoding-profile.html#GstEncodingTarget"><span class="type">GstEncodingTarget</span></a> if available, else <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
 </div>
@@ -2097,7 +2114,7 @@
                                     <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
 <p>Opens the provided file and returns the contained <a class="link" href="gst-plugins-base-libs-encoding-profile.html#GstEncodingTarget"><span class="type">GstEncodingTarget</span></a>.</p>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.46.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.46.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2119,7 +2136,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.46.6"></a><h4>Returns</h4>
+<a name="id-1.2.14.10.14.46.6"></a><h4>Returns</h4>
 <p> The <a class="link" href="gst-plugins-base-libs-encoding-profile.html#GstEncodingTarget"><span class="type">GstEncodingTarget</span></a> contained in the file, else
 <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
@@ -2134,7 +2151,7 @@
 if <em class="parameter"><code>categoryname</code></em>
  is <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.47.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.10.14.47.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2150,7 +2167,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.47.6"></a><h4>Returns</h4>
+<a name="id-1.2.14.10.14.47.6"></a><h4>Returns</h4>
 <p> The list of <a class="link" href="gst-plugins-base-libs-encoding-profile.html#GstEncodingTarget"><span class="type">GstEncodingTarget</span></a>. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstEncodingTarget]</span></p>
 </div>
@@ -2163,7 +2180,7 @@
                                (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
 <p>Lists all <a class="link" href="gst-plugins-base-libs-encoding-profile.html#GstEncodingTarget"><span class="type">GstEncodingTarget</span></a> categories present on disk.</p>
 <div class="refsect3">
-<a name="id-1.2.13.10.13.48.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.10.14.48.5"></a><h4>Returns</h4>
 <p> A list
 of <a class="link" href="gst-plugins-base-libs-encoding-profile.html#GstEncodingTarget"><span class="type">GstEncodingTarget</span></a> categories. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> gchar*]</span></p>
@@ -2244,6 +2261,15 @@
 <a class="link" href="gst-plugins-base-libs-encoding-profile.html#GST-ENCODING-CATEGORY-DEVICE:CAPS" title="GST_ENCODING_CATEGORY_DEVICE"><span class="type">GST_ENCODING_CATEGORY_DEVICE</span></a>.</p>
 </div>
 </div>
+<div class="refsect1">
+<a name="gst-plugins-base-libs-encoding-profile.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstEncodingProfile--restriction-caps"></a><h3>The <code class="literal">“restriction-caps”</code> property</h3>
+<pre class="programlisting">  “restriction-caps”         <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a> *</pre>
+<p>The restriction caps to use.</p>
+<p>Flags: Read / Write</p>
+</div>
+</div>
 </div>
 <div class="footer">
 <hr>
diff --git a/docs/libs/html/gst-plugins-base-libs-gstaudio.html b/docs/libs/html/gst-plugins-base-libs-gstaudio.html
index e660fdf..8dd00a4 100644
--- a/docs/libs/html/gst-plugins-base-libs-gstaudio.html
+++ b/docs/libs/html/gst-plugins-base-libs-gstaudio.html
@@ -828,8 +828,10 @@
  and <em class="parameter"><code>rate</code></em>
  and <em class="parameter"><code>channels</code></em>
 .</p>
+<p>Note: This initializes <em class="parameter"><code>info</code></em>
+ first, no values are preserved.</p>
 <div class="refsect3">
-<a name="id-1.2.6.3.8.12.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.3.8.12.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
diff --git a/docs/libs/html/gst-plugins-base-libs-gstaudiobasesink.html b/docs/libs/html/gst-plugins-base-libs-gstaudiobasesink.html
index 8898424..717d0f5 100644
--- a/docs/libs/html/gst-plugins-base-libs-gstaudiobasesink.html
+++ b/docs/libs/html/gst-plugins-base-libs-gstaudiobasesink.html
@@ -240,7 +240,6 @@
 <p>This is the base class for audio sinks. Subclasses need to implement the
 ::create_ringbuffer vmethod. This base class will then take care of
 writing samples to the ringbuffer, synchronisation, clipping and flushing.</p>
-<p>Last reviewed on 2006-09-27 (0.10.12)</p>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gstaudiobasesink.functions_details"></a><h2>Functions</h2>
@@ -251,7 +250,7 @@
 <p>Get the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html"><span class="type">GstClock</span></a> of <em class="parameter"><code>obj</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.6.13.10.2.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.12.10.2.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -274,7 +273,7 @@
 <p>Get the sink <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a> of <em class="parameter"><code>obj</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.6.13.10.3.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.12.10.3.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -295,12 +294,12 @@
 <pre class="programlisting"><a class="link" href="gst-plugins-base-libs-gstaudioringbuffer.html#GstAudioRingBuffer"><span class="returnvalue">GstAudioRingBuffer</span></a> *
 gst_audio_base_sink_create_ringbuffer (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstaudiobasesink.html#GstAudioBaseSink"><span class="type">GstAudioBaseSink</span></a> *sink</code></em>);</pre>
 <p>Create and return the <a class="link" href="gst-plugins-base-libs-gstaudioringbuffer.html#GstAudioRingBuffer"><span class="type">GstAudioRingBuffer</span></a> for <em class="parameter"><code>sink</code></em>
-. This function will call the
-::create_ringbuffer vmethod and will set <em class="parameter"><code>sink</code></em>
- as the parent of the returned
-buffer (see <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html#gst-object-set-parent"><code class="function">gst_object_set_parent()</code></a>).</p>
+. This function will
+call the ::create_ringbuffer vmethod and will set <em class="parameter"><code>sink</code></em>
+ as the parent of
+the returned buffer (see <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html#gst-object-set-parent"><code class="function">gst_object_set_parent()</code></a>).</p>
 <div class="refsect3">
-<a name="id-1.2.6.13.10.4.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.12.10.4.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -315,7 +314,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.13.10.4.6"></a><h4>Returns</h4>
+<a name="id-1.2.6.12.10.4.6"></a><h4>Returns</h4>
 <p> The new ringbuffer of <em class="parameter"><code>sink</code></em>
 . </p>
 <p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
@@ -333,9 +332,10 @@
 <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#gst-element-provide-clock"><code class="function">gst_element_provide_clock()</code></a> will return a clock that reflects the datarate
 of <em class="parameter"><code>sink</code></em>
 . If <em class="parameter"><code>provide</code></em>
- is <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>, <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#gst-element-provide-clock"><code class="function">gst_element_provide_clock()</code></a> will return NULL.</p>
+ is <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>, <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#gst-element-provide-clock"><code class="function">gst_element_provide_clock()</code></a> will return
+NULL.</p>
 <div class="refsect3">
-<a name="id-1.2.6.13.10.5.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.12.10.5.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -366,7 +366,7 @@
  will provide a clock or not. See also
 gst_audio_base_sink_set_provide_clock.</p>
 <div class="refsect3">
-<a name="id-1.2.6.13.10.6.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.12.10.6.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -381,7 +381,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.13.10.6.6"></a><h4>Returns</h4>
+<a name="id-1.2.6.12.10.6.6"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>sink</code></em>
 will provide a clock.</p>
 <p></p>
@@ -396,7 +396,7 @@
 <p>Controls how clock slaving will be performed in <em class="parameter"><code>sink</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.6.13.10.7.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.12.10.7.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -426,7 +426,7 @@
 <p>Get the current slave method used by <em class="parameter"><code>sink</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.6.13.10.8.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.12.10.8.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -441,7 +441,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.13.10.8.6"></a><h4>Returns</h4>
+<a name="id-1.2.6.12.10.8.6"></a><h4>Returns</h4>
 <p> The current slave method used by <em class="parameter"><code>sink</code></em>
 .</p>
 <p></p>
@@ -456,7 +456,7 @@
                                 <em class="parameter"><code><span class="type">gint64</span> drift_tolerance</code></em>);</pre>
 <p>Controls the sink's drift tolerance.</p>
 <div class="refsect3">
-<a name="id-1.2.6.13.10.9.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.12.10.9.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -487,7 +487,7 @@
 <p>Get the current drift tolerance, in microseconds, used by <em class="parameter"><code>sink</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.6.13.10.10.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.12.10.10.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -502,7 +502,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.13.10.10.6"></a><h4>Returns</h4>
+<a name="id-1.2.6.12.10.10.6"></a><h4>Returns</h4>
 <p> The current drift tolerance used by <em class="parameter"><code>sink</code></em>
 .</p>
 <p></p>
@@ -517,7 +517,7 @@
                                 <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a> alignment_threshold</code></em>);</pre>
 <p>Controls the sink's alignment threshold.</p>
 <div class="refsect3">
-<a name="id-1.2.6.13.10.11.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.12.10.11.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -548,7 +548,7 @@
 <p>Get the current alignment threshold, in nanoseconds, used by <em class="parameter"><code>sink</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.6.13.10.12.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.12.10.12.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -563,7 +563,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.13.10.12.6"></a><h4>Returns</h4>
+<a name="id-1.2.6.12.10.12.6"></a><h4>Returns</h4>
 <p> The current alignment threshold used by <em class="parameter"><code>sink</code></em>
 .</p>
 <p></p>
@@ -577,7 +577,7 @@
                                       <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a> discont_wait</code></em>);</pre>
 <p>Controls how long the sink will wait before creating a discontinuity.</p>
 <div class="refsect3">
-<a name="id-1.2.6.13.10.13.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.12.10.13.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -607,7 +607,7 @@
 <p>Get the current discont wait, in nanoseconds, used by <em class="parameter"><code>sink</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.6.13.10.14.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.12.10.14.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -622,7 +622,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.13.10.14.6"></a><h4>Returns</h4>
+<a name="id-1.2.6.12.10.14.6"></a><h4>Returns</h4>
 <p> The current discont wait used by <em class="parameter"><code>sink</code></em>
 .</p>
 <p></p>
@@ -653,7 +653,7 @@
 <p><a class="link" href="gst-plugins-base-libs-gstaudiobasesink.html#GstAudioBaseSink"><span class="type">GstAudioBaseSink</span></a> class. Override the vmethod to implement
 functionality.</p>
 <div class="refsect3">
-<a name="id-1.2.6.13.11.3.5"></a><h4>Members</h4>
+<a name="id-1.2.6.12.11.3.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -689,7 +689,7 @@
 <p>Different possible clock slaving algorithms used when the internal audio
 clock is not selected as the pipeline master clock.</p>
 <div class="refsect3">
-<a name="id-1.2.6.13.11.4.4"></a><h4>Members</h4>
+<a name="id-1.2.6.12.11.4.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -792,7 +792,7 @@
 <div class="refsect2">
 <a name="GstAudioBaseSink--slave-method"></a><h3>The <code class="literal">“slave-method”</code> property</h3>
 <pre class="programlisting">  “slave-method”             <a class="link" href="gst-plugins-base-libs-gstaudiobasesink.html#GstAudioBaseSinkSlaveMethod" title="enum GstAudioBaseSinkSlaveMethod"><span class="type">GstAudioBaseSinkSlaveMethod</span></a></pre>
-<p>Algorithm to use to match the rate of the masterclock.</p>
+<p>Algorithm used to match the rate of the masterclock.</p>
 <p>Flags: Read / Write</p>
 <p>Default value: GST_AUDIO_BASE_SINK_SLAVE_SKEW</p>
 </div>
diff --git a/docs/libs/html/gst-plugins-base-libs-gstaudiobasesrc.html b/docs/libs/html/gst-plugins-base-libs-gstaudiobasesrc.html
index 8975d9d..9e94f81 100644
--- a/docs/libs/html/gst-plugins-base-libs-gstaudiobasesrc.html
+++ b/docs/libs/html/gst-plugins-base-libs-gstaudiobasesrc.html
@@ -183,7 +183,6 @@
 <p>This is the base class for audio sources. Subclasses need to implement the
 ::create_ringbuffer vmethod. This base class will then take care of
 reading samples from the ringbuffer, synchronisation and flushing.</p>
-<p>Last reviewed on 2006-09-27 (0.10.12)</p>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gstaudiobasesrc.functions_details"></a><h2>Functions</h2>
@@ -194,7 +193,7 @@
 <p>Get the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html"><span class="type">GstClock</span></a> of <em class="parameter"><code>obj</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.6.14.10.2.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.13.10.2.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -217,7 +216,7 @@
 <p>Get the source <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a> of <em class="parameter"><code>obj</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.6.14.10.3.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.13.10.3.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -238,12 +237,12 @@
 <pre class="programlisting"><a class="link" href="gst-plugins-base-libs-gstaudioringbuffer.html#GstAudioRingBuffer"><span class="returnvalue">GstAudioRingBuffer</span></a> *
 gst_audio_base_src_create_ringbuffer (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstaudiobasesrc.html#GstAudioBaseSrc"><span class="type">GstAudioBaseSrc</span></a> *src</code></em>);</pre>
 <p>Create and return the <a class="link" href="gst-plugins-base-libs-gstaudioringbuffer.html#GstAudioRingBuffer"><span class="type">GstAudioRingBuffer</span></a> for <em class="parameter"><code>src</code></em>
-. This function will call the
-::create_ringbuffer vmethod and will set <em class="parameter"><code>src</code></em>
- as the parent of the returned
-buffer (see <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html#gst-object-set-parent"><code class="function">gst_object_set_parent()</code></a>).</p>
+. This function will call
+the ::create_ringbuffer vmethod and will set <em class="parameter"><code>src</code></em>
+ as the parent of the
+returned buffer (see <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html#gst-object-set-parent"><code class="function">gst_object_set_parent()</code></a>).</p>
 <div class="refsect3">
-<a name="id-1.2.6.14.10.4.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.13.10.4.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -258,7 +257,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.14.10.4.6"></a><h4>Returns</h4>
+<a name="id-1.2.6.13.10.4.6"></a><h4>Returns</h4>
 <p> The new ringbuffer of <em class="parameter"><code>src</code></em>
 . </p>
 <p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
@@ -272,13 +271,13 @@
                                       <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> provide</code></em>);</pre>
 <p>Controls whether <em class="parameter"><code>src</code></em>
  will provide a clock or not. If <em class="parameter"><code>provide</code></em>
- is <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, 
+ is <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>,
 <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#gst-element-provide-clock"><code class="function">gst_element_provide_clock()</code></a> will return a clock that reflects the datarate
 of <em class="parameter"><code>src</code></em>
 . If <em class="parameter"><code>provide</code></em>
  is <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>, <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#gst-element-provide-clock"><code class="function">gst_element_provide_clock()</code></a> will return NULL.</p>
 <div class="refsect3">
-<a name="id-1.2.6.14.10.5.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.13.10.5.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -309,7 +308,7 @@
  will provide a clock or not. See also
 gst_audio_base_src_set_provide_clock.</p>
 <div class="refsect3">
-<a name="id-1.2.6.14.10.6.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.13.10.6.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -324,7 +323,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.14.10.6.6"></a><h4>Returns</h4>
+<a name="id-1.2.6.13.10.6.6"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>src</code></em>
 will provide a clock.</p>
 <p></p>
@@ -338,7 +337,7 @@
 <p>Get the current slave method used by <em class="parameter"><code>src</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.6.14.10.7.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.13.10.7.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -353,7 +352,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.14.10.7.6"></a><h4>Returns</h4>
+<a name="id-1.2.6.13.10.7.6"></a><h4>Returns</h4>
 <p> The current slave method used by <em class="parameter"><code>src</code></em>
 .</p>
 <p></p>
@@ -368,7 +367,7 @@
 <p>Controls how clock slaving will be performed in <em class="parameter"><code>src</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.6.14.10.8.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.13.10.8.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -411,7 +410,7 @@
 <p><a class="link" href="gst-plugins-base-libs-gstaudiobasesrc.html#GstAudioBaseSrc"><span class="type">GstAudioBaseSrc</span></a> class. Override the vmethod to implement
 functionality.</p>
 <div class="refsect3">
-<a name="id-1.2.6.14.11.3.5"></a><h4>Members</h4>
+<a name="id-1.2.6.13.11.3.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -439,7 +438,7 @@
 <p>Different possible clock slaving algorithms when the internal audio clock was
 not selected as the pipeline clock.</p>
 <div class="refsect3">
-<a name="id-1.2.6.14.11.4.4"></a><h4>Members</h4>
+<a name="id-1.2.6.13.11.4.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -505,7 +504,7 @@
 <div class="refsect2">
 <a name="GstAudioBaseSrc--buffer-time"></a><h3>The <code class="literal">“buffer-time”</code> property</h3>
 <pre class="programlisting">  “buffer-time”              <span class="type">gint64</span></pre>
-<p>Size of audio buffer in microseconds, this is the maximum amount of data that is buffered in the device and the maximum latency that the source reports.</p>
+<p>Size of audio buffer in microseconds. This is the maximum amount of data that is buffered in the device and the maximum latency that the source reports.</p>
 <p>Flags: Read / Write</p>
 <p>Allowed values: &gt;= 1</p>
 <p>Default value: 200000</p>
@@ -514,7 +513,7 @@
 <div class="refsect2">
 <a name="GstAudioBaseSrc--latency-time"></a><h3>The <code class="literal">“latency-time”</code> property</h3>
 <pre class="programlisting">  “latency-time”             <span class="type">gint64</span></pre>
-<p>The minimum amount of data to read in each iteration in microseconds, this is the minimum latency that the source reports.</p>
+<p>The minimum amount of data to read in each iteration in microseconds. This is the minimum latency that the source reports.</p>
 <p>Flags: Read / Write</p>
 <p>Allowed values: &gt;= 1</p>
 <p>Default value: 10000</p>
@@ -531,7 +530,7 @@
 <div class="refsect2">
 <a name="GstAudioBaseSrc--slave-method"></a><h3>The <code class="literal">“slave-method”</code> property</h3>
 <pre class="programlisting">  “slave-method”             <a class="link" href="gst-plugins-base-libs-gstaudiobasesrc.html#GstAudioBaseSrcSlaveMethod" title="enum GstAudioBaseSrcSlaveMethod"><span class="type">GstAudioBaseSrcSlaveMethod</span></a></pre>
-<p>Algorithm to use to match the rate of the masterclock.</p>
+<p>Algorithm used to match the rate of the masterclock.</p>
 <p>Flags: Read / Write</p>
 <p>Default value: GST_AUDIO_BASE_SRC_SLAVE_SKEW</p>
 </div>
diff --git a/docs/libs/html/gst-plugins-base-libs-gstaudiochannels.html b/docs/libs/html/gst-plugins-base-libs-gstaudiochannels.html
index ad0baa7..a3b1c8e 100644
--- a/docs/libs/html/gst-plugins-base-libs-gstaudiochannels.html
+++ b/docs/libs/html/gst-plugins-base-libs-gstaudiochannels.html
@@ -28,7 +28,7 @@
 <div class="refnamediv"><table width="100%"><tr>
 <td valign="top">
 <h2><span class="refentrytitle"><a name="gst-plugins-base-libs-gstaudiochannels.top_of_page"></a>gstaudiochannels</span></h2>
-<p>gstaudiochannels</p>
+<p>gstaudiochannels — Support library for audio channel handling</p>
 </td>
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
@@ -130,6 +130,7 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gstaudiochannels.description"></a><h2>Description</h2>
+<p>This library contains some helper functions for multichannel audio.</p>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gstaudiochannels.functions_details"></a><h2>Functions</h2>
@@ -153,7 +154,7 @@
  is <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> it additionally checks if the channels are
 in the order required by GStreamer.</p>
 <div class="refsect3">
-<a name="id-1.2.6.15.8.3.6"></a><h4>Parameters</h4>
+<a name="id-1.2.6.14.8.3.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -185,7 +186,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.15.8.3.7"></a><h4>Returns</h4>
+<a name="id-1.2.6.14.8.3.7"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the channel positions are valid and could be converted.</p>
 <p></p>
 </div>
@@ -207,7 +208,7 @@
  is set to 0, it is considered as 'not present' for purpose
 of conversion.</p>
 <div class="refsect3">
-<a name="id-1.2.6.15.8.4.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.14.8.4.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -235,7 +236,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.15.8.4.6"></a><h4>Returns</h4>
+<a name="id-1.2.6.14.8.4.6"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if channel and channel mask are valid and could be converted</p>
 <p></p>
 </div>
@@ -251,7 +252,7 @@
  from any order to
 the GStreamer channel order.</p>
 <div class="refsect3">
-<a name="id-1.2.6.15.8.5.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.14.8.5.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -274,7 +275,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.15.8.5.6"></a><h4>Returns</h4>
+<a name="id-1.2.6.14.8.5.6"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the channel positions are valid and reordering
 was successful.</p>
 <p></p>
@@ -295,7 +296,7 @@
  is <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> it additionally
 checks if the channels are in the order required by GStreamer.</p>
 <div class="refsect3">
-<a name="id-1.2.6.15.8.6.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.14.8.6.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -323,7 +324,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.15.8.6.6"></a><h4>Returns</h4>
+<a name="id-1.2.6.14.8.6.6"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the channel positions are valid.</p>
 <p></p>
 </div>
@@ -348,7 +349,7 @@
 <em class="parameter"><code>buffer</code></em>
  must be writable.</p>
 <div class="refsect3">
-<a name="id-1.2.6.15.8.7.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.14.8.7.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -385,7 +386,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.15.8.7.6"></a><h4>Returns</h4>
+<a name="id-1.2.6.14.8.7.6"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the reordering was possible.</p>
 <p></p>
 </div>
@@ -409,7 +410,7 @@
  must contain the same number of
 positions and the same positions, only in a different order.</p>
 <div class="refsect3">
-<a name="id-1.2.6.15.8.8.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.14.8.8.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -452,7 +453,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.15.8.8.6"></a><h4>Returns</h4>
+<a name="id-1.2.6.14.8.8.6"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the reordering was possible.</p>
 <p></p>
 </div>
@@ -478,7 +479,7 @@
  can be used for reordering by assigning
 channel i of the input to channel reorder_map[i] of the output.</p>
 <div class="refsect3">
-<a name="id-1.2.6.15.8.9.6"></a><h4>Parameters</h4>
+<a name="id-1.2.6.14.8.9.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -510,7 +511,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.15.8.9.7"></a><h4>Returns</h4>
+<a name="id-1.2.6.14.8.9.7"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the channel positions are valid and reordering
 is possible.</p>
 <p></p>
@@ -544,7 +545,7 @@
 This implicitely means that this is a stereo stream with a front left and front right
 channel.</p>
 <div class="refsect3">
-<a name="id-1.2.6.15.9.2.8"></a><h4>Members</h4>
+<a name="id-1.2.6.14.9.2.8"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
diff --git a/docs/libs/html/gst-plugins-base-libs-gstaudioclock.html b/docs/libs/html/gst-plugins-base-libs-gstaudioclock.html
index 6957d2c..7155583 100644
--- a/docs/libs/html/gst-plugins-base-libs-gstaudioclock.html
+++ b/docs/libs/html/gst-plugins-base-libs-gstaudioclock.html
@@ -124,7 +124,6 @@
 <p><a class="link" href="gst-plugins-base-libs-gstaudioclock.html#GstAudioClock"><span class="type">GstAudioClock</span></a> makes it easy for elements to implement a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html"><span class="type">GstClock</span></a>, they
 simply need to provide a function that returns the current clock time.</p>
 <p>This object is internally used to implement the clock in <a class="link" href="gst-plugins-base-libs-gstaudiobasesink.html#GstAudioBaseSink"><span class="type">GstAudioBaseSink</span></a>.</p>
-<p>Last reviewed on 2006-09-27 (0.10.12)</p>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gstaudioclock.functions_details"></a><h2>Functions</h2>
diff --git a/docs/libs/html/gst-plugins-base-libs-gstaudiodecoder.html b/docs/libs/html/gst-plugins-base-libs-gstaudiodecoder.html
index 3a1e46a..102f763 100644
--- a/docs/libs/html/gst-plugins-base-libs-gstaudiodecoder.html
+++ b/docs/libs/html/gst-plugins-base-libs-gstaudiodecoder.html
@@ -1213,8 +1213,9 @@
 gst_audio_decoder_set_max_errors (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstaudiodecoder.html#GstAudioDecoder"><span class="type">GstAudioDecoder</span></a> *dec</code></em>,
                                   <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> num</code></em>);</pre>
 <p>Sets numbers of tolerated decoder errors, where a tolerated one is then only
-warned about, but more than tolerated will lead to fatal error.  Default
-is set to GST_AUDIO_DECODER_MAX_ERRORS.</p>
+warned about, but more than tolerated will lead to fatal error. You can set
+-1 for never returning fatal errors. Default is set to
+GST_AUDIO_DECODER_MAX_ERRORS.</p>
 <div class="refsect3">
 <a name="id-1.2.6.7.10.25.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
@@ -1481,7 +1482,7 @@
                                        GstEvent *event);
 
   gboolean      (*open)               (GstAudioDecoder *dec);
-  
+
   gboolean      (*close)              (GstAudioDecoder *dec);
 
   gboolean      (*negotiate)          (GstAudioDecoder *dec);
diff --git a/docs/libs/html/gst-plugins-base-libs-gstaudioencoder.html b/docs/libs/html/gst-plugins-base-libs-gstaudioencoder.html
index c18a4ae..a721bbb 100644
--- a/docs/libs/html/gst-plugins-base-libs-gstaudioencoder.html
+++ b/docs/libs/html/gst-plugins-base-libs-gstaudioencoder.html
@@ -444,7 +444,7 @@
 </div></li>
 </ol></div>
 <p>Subclass is responsible for providing pad template caps for
-source and sink pads. The pads need to be named "sink" and "src". It also 
+source and sink pads. The pads need to be named "sink" and "src". It also
 needs to set the fixed caps on srcpad, when the format is ensured.  This
 is typically when base class calls subclass' <em class="parameter"><code>set_format</code></em>
  function, though
diff --git a/docs/libs/html/gst-plugins-base-libs-gstaudiofilter.html b/docs/libs/html/gst-plugins-base-libs-gstaudiofilter.html
index acefbbb..113e629 100644
--- a/docs/libs/html/gst-plugins-base-libs-gstaudiofilter.html
+++ b/docs/libs/html/gst-plugins-base-libs-gstaudiofilter.html
@@ -7,7 +7,7 @@
 <link rel="home" href="index.html" title="GStreamer Base Plugins 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-audio.html" title="Audio Library">
 <link rel="prev" href="gst-plugins-base-libs-gstaudioencoder.html" title="gstaudioencoder">
-<link rel="next" href="gst-plugins-base-libs-gstaudiomixerutils.html" title="gstaudiomixerutils">
+<link rel="next" href="gst-plugins-base-libs-gstaudiosink.html" title="gstaudiosink">
 <meta name="generator" content="GTK-Doc V1.20 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
@@ -21,7 +21,7 @@
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="gstreamer-audio.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
 <td><a accesskey="p" href="gst-plugins-base-libs-gstaudioencoder.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="gst-plugins-base-libs-gstaudiomixerutils.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="gst-plugins-base-libs-gstaudiosink.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
 <a name="gst-plugins-base-libs-gstaudiofilter"></a><div class="titlepage"></div>
@@ -96,7 +96,6 @@
 <code class="function">GstBaseTransformClass.transform_ip()</code> and/or
 <code class="function">GstBaseTransformClass.transform()</code>
 virtual functions in their class_init function.</p>
-<p>Last reviewed on 2007-02-03 (0.10.11.1)</p>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gstaudiofilter.functions_details"></a><h2>Functions</h2>
diff --git a/docs/libs/html/gst-plugins-base-libs-gstaudioiec61937.html b/docs/libs/html/gst-plugins-base-libs-gstaudioiec61937.html
index 6bd3bbd..a5e4f12 100644
--- a/docs/libs/html/gst-plugins-base-libs-gstaudioiec61937.html
+++ b/docs/libs/html/gst-plugins-base-libs-gstaudioiec61937.html
@@ -84,7 +84,7 @@
 payloading type from <em class="parameter"><code>spec</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.6.17.7.2.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.16.7.2.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -99,7 +99,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.17.7.2.6"></a><h4>Returns</h4>
+<a name="id-1.2.6.16.7.2.6"></a><h4>Returns</h4>
 <p> the size or 0 if the given <em class="parameter"><code>type</code></em>
 is not supported or cannot be
 payloaded.</p>
@@ -124,7 +124,7 @@
  must contain exactly one frame of data and
 the frame is not checked for errors.</p>
 <div class="refsect3">
-<a name="id-1.2.6.17.7.3.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.16.7.3.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -171,7 +171,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.17.7.3.6"></a><h4>Returns</h4>
+<a name="id-1.2.6.16.7.3.6"></a><h4>Returns</h4>
 <p> transfer-full: <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the payloading was successful, <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>
 otherwise.</p>
 <p></p>
diff --git a/docs/libs/html/gst-plugins-base-libs-gstaudiometa.html b/docs/libs/html/gst-plugins-base-libs-gstaudiometa.html
index 5a64439..33f4eae 100644
--- a/docs/libs/html/gst-plugins-base-libs-gstaudiometa.html
+++ b/docs/libs/html/gst-plugins-base-libs-gstaudiometa.html
@@ -28,7 +28,7 @@
 <div class="refnamediv"><table width="100%"><tr>
 <td valign="top">
 <h2><span class="refentrytitle"><a name="gst-plugins-base-libs-gstaudiometa.top_of_page"></a>gstaudiometa</span></h2>
-<p>gstaudiometa</p>
+<p>gstaudiometa — Buffer metadata for audio downmix matrix handling</p>
 </td>
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
@@ -90,6 +90,9 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gstaudiometa.description"></a><h2>Description</h2>
+<p><a class="link" href="gst-plugins-base-libs-gstaudiometa.html#GstAudioDownmixMeta" title="struct GstAudioDownmixMeta"><span class="type">GstAudioDownmixMeta</span></a> defines an audio downmix matrix to be send along with
+audio buffers. These functions in this module help to create and attach the
+meta as well as extracting it.</p>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gstaudiometa.functions_details"></a><h2>Functions</h2>
@@ -102,7 +105,7 @@
                                    <em class="parameter"><code>const <a class="link" href="gst-plugins-base-libs-gstaudiochannels.html#GstAudioChannelPosition" title="enum GstAudioChannelPosition"><span class="type">GstAudioChannelPosition</span></a> *to_position</code></em>,
                                    <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> to_channels</code></em>,
                                    <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> **matrix</code></em>);</pre>
-<p>Attaches GstAudioDownmixMeta metadata to <em class="parameter"><code>buffer</code></em>
+<p>Attaches <a class="link" href="gst-plugins-base-libs-gstaudiometa.html#GstAudioDownmixMeta" title="struct GstAudioDownmixMeta"><span class="type">GstAudioDownmixMeta</span></a> metadata to <em class="parameter"><code>buffer</code></em>
  with the given parameters.</p>
 <p><em class="parameter"><code>matrix</code></em>
  is an two-dimensional array of <em class="parameter"><code>to_channels</code></em>
diff --git a/docs/libs/html/gst-plugins-base-libs-gstaudiomixerutils.html b/docs/libs/html/gst-plugins-base-libs-gstaudiomixerutils.html
deleted file mode 100644
index 69e5655..0000000
--- a/docs/libs/html/gst-plugins-base-libs-gstaudiomixerutils.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>GStreamer Base Plugins 1.0 Library Reference Manual: gstaudiomixerutils</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="GStreamer Base Plugins 1.0 Library Reference Manual">
-<link rel="up" href="gstreamer-audio.html" title="Audio Library">
-<link rel="prev" href="gst-plugins-base-libs-gstaudiofilter.html" title="gstaudiofilter">
-<link rel="next" href="gst-plugins-base-libs-gstaudiosink.html" title="gstaudiosink">
-<meta name="generator" content="GTK-Doc V1.20 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts">
-<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span> 
-                  <a href="#gst-plugins-base-libs-gstaudiomixerutils.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span> 
-                  <a href="#gst-plugins-base-libs-gstaudiomixerutils.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
-</td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="gstreamer-audio.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="gst-plugins-base-libs-gstaudiofilter.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="gst-plugins-base-libs-gstaudiosink.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="refentry">
-<a name="gst-plugins-base-libs-gstaudiomixerutils"></a><div class="titlepage"></div>
-<div class="refnamediv"><table width="100%"><tr>
-<td valign="top">
-<h2><span class="refentrytitle"><a name="gst-plugins-base-libs-gstaudiomixerutils.top_of_page"></a>gstaudiomixerutils</span></h2>
-<p>gstaudiomixerutils</p>
-</td>
-<td class="gallery_image" valign="top" align="right"></td>
-</tr></table></div>
-<div class="refsect1">
-<a name="gst-plugins-base-libs-gstaudiomixerutils.object-hierarchy"></a><h2>Object Hierarchy</h2>
-<pre class="screen">
-</pre>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-base-libs-gstaudiomixerutils.includes"></a><h2>Includes</h2>
-<pre class="synopsis">#include &lt;gst/audio/mixerutils.h&gt;
-</pre>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-base-libs-gstaudiomixerutils.description"></a><h2>Description</h2>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-base-libs-gstaudiomixerutils.functions_details"></a><h2>Functions</h2>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-base-libs-gstaudiomixerutils.other_details"></a><h2>Types and Values</h2>
-</div>
-</div>
-<div class="footer">
-<hr>
-          Generated by GTK-Doc V1.20</div>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/libs/html/gst-plugins-base-libs-gstaudioringbuffer.html b/docs/libs/html/gst-plugins-base-libs-gstaudioringbuffer.html
index 79a6fd2..e1d3487 100644
--- a/docs/libs/html/gst-plugins-base-libs-gstaudioringbuffer.html
+++ b/docs/libs/html/gst-plugins-base-libs-gstaudioringbuffer.html
@@ -346,7 +346,7 @@
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gstaudioringbuffer.description"></a><h2>Description</h2>
 <div class="refsect2">
-<a name="id-1.2.6.16.8.2"></a><p>
+<a name="id-1.2.6.15.8.2"></a><p>
 This object is the base class for audio ringbuffers used by the base
 audio source and sink classes.
 </p>
@@ -358,7 +358,6 @@
 implementations.
 </p>
 </div>
-<p>Last reviewed on 2006-02-02 (0.10.4)</p>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gstaudioringbuffer.functions_details"></a><h2>Functions</h2>
@@ -374,7 +373,7 @@
  with <em class="parameter"><code>len</code></em>
  bytes of samples.</p>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.2.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.15.9.2.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -441,7 +440,7 @@
 will be called every time a segment has been written to a device.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.7.6"></a><h4>Parameters</h4>
+<a name="id-1.2.6.15.9.7.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -478,7 +477,7 @@
 in the data pointer of the ring buffer with a valid <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstBuffer.html#GstBuffer"><span class="type">GstBuffer</span></a>
 to which samples can be written.</p>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.8.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.15.9.8.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -500,7 +499,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.8.6"></a><h4>Returns</h4>
+<a name="id-1.2.6.15.9.8.6"></a><h4>Returns</h4>
 <p> TRUE if the device could be acquired, FALSE on error.</p>
 <p>MT safe.</p>
 <p></p>
@@ -513,7 +512,7 @@
 gst_audio_ring_buffer_release (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstaudioringbuffer.html#GstAudioRingBuffer"><span class="type">GstAudioRingBuffer</span></a> *buf</code></em>);</pre>
 <p>Free the resources of the ringbuffer.</p>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.9.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.15.9.9.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -528,7 +527,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.9.6"></a><h4>Returns</h4>
+<a name="id-1.2.6.15.9.9.6"></a><h4>Returns</h4>
 <p> TRUE if the device could be released, FALSE on error.</p>
 <p>MT safe.</p>
 <p></p>
@@ -541,7 +540,7 @@
 gst_audio_ring_buffer_is_acquired (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstaudioringbuffer.html#GstAudioRingBuffer"><span class="type">GstAudioRingBuffer</span></a> *buf</code></em>);</pre>
 <p>Check if the ringbuffer is acquired and ready to use.</p>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.10.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.15.9.10.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -556,7 +555,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.10.6"></a><h4>Returns</h4>
+<a name="id-1.2.6.15.9.10.6"></a><h4>Returns</h4>
 <p> TRUE if the ringbuffer is acquired, FALSE on error.</p>
 <p>MT safe.</p>
 <p></p>
@@ -572,7 +571,7 @@
  to start or stop pulling data.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.11.6"></a><h4>Parameters</h4>
+<a name="id-1.2.6.15.9.11.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -594,7 +593,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.11.7"></a><h4>Returns</h4>
+<a name="id-1.2.6.15.9.11.7"></a><h4>Returns</h4>
 <p> TRUE if the device could be activated in the requested mode,
 FALSE on error.</p>
 <p></p>
@@ -609,7 +608,7 @@
  is activated.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.12.6"></a><h4>Parameters</h4>
+<a name="id-1.2.6.15.9.12.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -624,7 +623,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.12.7"></a><h4>Returns</h4>
+<a name="id-1.2.6.15.9.12.7"></a><h4>Returns</h4>
 <p> TRUE if the device is active.</p>
 <p></p>
 </div>
@@ -636,7 +635,7 @@
 gst_audio_ring_buffer_start (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstaudioringbuffer.html#GstAudioRingBuffer"><span class="type">GstAudioRingBuffer</span></a> *buf</code></em>);</pre>
 <p>Start processing samples from the ringbuffer.</p>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.13.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.15.9.13.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -651,7 +650,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.13.6"></a><h4>Returns</h4>
+<a name="id-1.2.6.15.9.13.6"></a><h4>Returns</h4>
 <p> TRUE if the device could be started, FALSE on error.</p>
 <p>MT safe.</p>
 <p></p>
@@ -664,7 +663,7 @@
 gst_audio_ring_buffer_pause (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstaudioringbuffer.html#GstAudioRingBuffer"><span class="type">GstAudioRingBuffer</span></a> *buf</code></em>);</pre>
 <p>Pause processing samples from the ringbuffer.</p>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.14.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.15.9.14.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -679,7 +678,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.14.6"></a><h4>Returns</h4>
+<a name="id-1.2.6.15.9.14.6"></a><h4>Returns</h4>
 <p> TRUE if the device could be paused, FALSE on error.</p>
 <p>MT safe.</p>
 <p></p>
@@ -692,7 +691,7 @@
 gst_audio_ring_buffer_stop (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstaudioringbuffer.html#GstAudioRingBuffer"><span class="type">GstAudioRingBuffer</span></a> *buf</code></em>);</pre>
 <p>Stop processing samples from the ringbuffer.</p>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.15.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.15.9.15.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -707,7 +706,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.15.6"></a><h4>Returns</h4>
+<a name="id-1.2.6.15.9.15.6"></a><h4>Returns</h4>
 <p> TRUE if the device could be stopped, FALSE on error.</p>
 <p>MT safe.</p>
 <p></p>
@@ -727,7 +726,7 @@
 <p>For capture ringbuffers this is the amount of samples in the device that are
 not yet transfered to the ringbuffer.</p>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.16.7"></a><h4>Parameters</h4>
+<a name="id-1.2.6.15.9.16.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -742,7 +741,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.16.8"></a><h4>Returns</h4>
+<a name="id-1.2.6.15.9.16.8"></a><h4>Returns</h4>
 <p> The number of samples queued in the audio device.</p>
 <p>MT safe.</p>
 <p></p>
@@ -757,7 +756,7 @@
 since it was last started. This does not include the number of samples not
 yet processed (see <a class="link" href="gst-plugins-base-libs-gstaudioringbuffer.html#gst-audio-ring-buffer-delay" title="gst_audio_ring_buffer_delay ()"><code class="function">gst_audio_ring_buffer_delay()</code></a>).</p>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.17.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.15.9.17.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -772,7 +771,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.17.6"></a><h4>Returns</h4>
+<a name="id-1.2.6.15.9.17.6"></a><h4>Returns</h4>
 <p> The number of samples processed by the ringbuffer.</p>
 <p>MT safe.</p>
 <p></p>
@@ -792,7 +791,7 @@
 <p>This function will also clear the buffer with silence.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.18.7"></a><h4>Parameters</h4>
+<a name="id-1.2.6.15.9.18.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -854,7 +853,7 @@
  value back to this function.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.19.10"></a><h4>Parameters</h4>
+<a name="id-1.2.6.15.9.19.10"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -896,7 +895,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.19.11"></a><h4>Returns</h4>
+<a name="id-1.2.6.15.9.19.11"></a><h4>Returns</h4>
 <p> The number of samples written to the ringbuffer or -1 on error. The
 number of samples written can be less than <em class="parameter"><code>out_samples</code></em>
 when <em class="parameter"><code>buf</code></em>
@@ -921,7 +920,7 @@
 will be put in <em class="parameter"><code>dest_val</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.20.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.15.9.20.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -958,7 +957,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.20.6"></a><h4>Returns</h4>
+<a name="id-1.2.6.15.9.20.6"></a><h4>Returns</h4>
 <p> TRUE if the conversion succeeded.</p>
 <p></p>
 </div>
@@ -975,7 +974,7 @@
 
 can be found. This function is mostly used by subclasses.</p>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.21.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.15.9.21.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1007,7 +1006,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.21.6"></a><h4>Returns</h4>
+<a name="id-1.2.6.15.9.21.6"></a><h4>Returns</h4>
 <p> FALSE if the buffer is not started.</p>
 <p>MT safe.</p>
 <p></p>
@@ -1023,7 +1022,7 @@
                             <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> len</code></em>,
                             <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a> *timestamp</code></em>);</pre>
 <p>Read <em class="parameter"><code>len</code></em>
- samples from the ringbuffer into the memory pointed 
+ samples from the ringbuffer into the memory pointed
 to by <em class="parameter"><code>data</code></em>
 .
 The first sample should be read from position <em class="parameter"><code>sample</code></em>
@@ -1035,7 +1034,7 @@
 <p><em class="parameter"><code>timestamp</code></em>
  will return the timestamp associated with the data returned.</p>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.22.7"></a><h4>Parameters</h4>
+<a name="id-1.2.6.15.9.22.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1072,7 +1071,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.22.8"></a><h4>Returns</h4>
+<a name="id-1.2.6.15.9.22.8"></a><h4>Returns</h4>
 <p> The number of samples read from the ringbuffer or -1 on
 error.</p>
 <p>MT safe.</p>
@@ -1089,7 +1088,7 @@
 This function is used by subclasses.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.23.6"></a><h4>Parameters</h4>
+<a name="id-1.2.6.15.9.23.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1119,7 +1118,7 @@
 <p>Fill the ringbuffer with silence.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.24.6"></a><h4>Parameters</h4>
+<a name="id-1.2.6.15.9.24.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1140,12 +1139,12 @@
 <pre class="programlisting"><span class="returnvalue">void</span>
 gst_audio_ring_buffer_advance (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstaudioringbuffer.html#GstAudioRingBuffer"><span class="type">GstAudioRingBuffer</span></a> *buf</code></em>,
                                <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> advance</code></em>);</pre>
-<p>Subclasses should call this function to notify the fact that 
+<p>Subclasses should call this function to notify the fact that
 <em class="parameter"><code>advance</code></em>
  segments are now processed by the device.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.25.6"></a><h4>Parameters</h4>
+<a name="id-1.2.6.15.9.25.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1175,7 +1174,7 @@
 <p>Close the audio device associated with the ring buffer. The ring buffer
 should already have been released via <a class="link" href="gst-plugins-base-libs-gstaudioringbuffer.html#gst-audio-ring-buffer-release" title="gst_audio_ring_buffer_release ()"><code class="function">gst_audio_ring_buffer_release()</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.26.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.15.9.26.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1190,7 +1189,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.26.6"></a><h4>Returns</h4>
+<a name="id-1.2.6.15.9.26.6"></a><h4>Returns</h4>
 <p> TRUE if the device could be closed, FALSE on error.</p>
 <p>MT safe.</p>
 <p></p>
@@ -1205,7 +1204,7 @@
 setup on the device. You must open the device before acquiring the ring
 buffer.</p>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.27.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.15.9.27.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1220,7 +1219,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.27.6"></a><h4>Returns</h4>
+<a name="id-1.2.6.15.9.27.6"></a><h4>Returns</h4>
 <p> TRUE if the device could be opened, FALSE on error.</p>
 <p>MT safe.</p>
 <p></p>
@@ -1233,7 +1232,7 @@
 gst_audio_ring_buffer_device_is_open (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstaudioringbuffer.html#GstAudioRingBuffer"><span class="type">GstAudioRingBuffer</span></a> *buf</code></em>);</pre>
 <p>Checks the status of the device associated with the ring buffer.</p>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.28.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.15.9.28.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1248,7 +1247,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.28.6"></a><h4>Returns</h4>
+<a name="id-1.2.6.15.9.28.6"></a><h4>Returns</h4>
 <p> TRUE if the device was open, FALSE if it was closed.</p>
 <p>MT safe.</p>
 <p></p>
@@ -1261,10 +1260,10 @@
 gst_audio_ring_buffer_may_start (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstaudioringbuffer.html#GstAudioRingBuffer"><span class="type">GstAudioRingBuffer</span></a> *buf</code></em>,
                                  <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> allowed</code></em>);</pre>
 <p>Tell the ringbuffer that it is allowed to start playback when
-the ringbuffer is filled with samples. </p>
+the ringbuffer is filled with samples.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.29.6"></a><h4>Parameters</h4>
+<a name="id-1.2.6.15.9.29.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1296,7 +1295,7 @@
  into <em class="parameter"><code>spec</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.30.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.15.9.30.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1318,7 +1317,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.30.6"></a><h4>Returns</h4>
+<a name="id-1.2.6.15.9.30.6"></a><h4>Returns</h4>
 <p> TRUE if the caps could be parsed.</p>
 <p></p>
 </div>
@@ -1332,7 +1331,7 @@
 <p>Set the ringbuffer to flushing mode or normal mode.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.31.6"></a><h4>Parameters</h4>
+<a name="id-1.2.6.15.9.31.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1363,7 +1362,7 @@
  is flushing.</p>
 <p>MT safe.</p>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.32.6"></a><h4>Parameters</h4>
+<a name="id-1.2.6.15.9.32.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1378,7 +1377,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.32.7"></a><h4>Returns</h4>
+<a name="id-1.2.6.15.9.32.7"></a><h4>Returns</h4>
 <p> TRUE if the device is flushing.</p>
 <p></p>
 </div>
@@ -1393,7 +1392,7 @@
 <p>Tell the ringbuffer about the device's channel positions. This must
 be called in when the ringbuffer is acquired.</p>
 <div class="refsect3">
-<a name="id-1.2.6.16.9.33.5"></a><h4>Parameters</h4>
+<a name="id-1.2.6.15.9.33.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1447,7 +1446,7 @@
 </pre>
 <p>The ringbuffer base class structure.</p>
 <div class="refsect3">
-<a name="id-1.2.6.16.10.2.5"></a><h4>Members</h4>
+<a name="id-1.2.6.15.10.2.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -1554,7 +1553,7 @@
 </pre>
 <p>The vmethods that subclasses can override to implement the ringbuffer.</p>
 <div class="refsect3">
-<a name="id-1.2.6.16.10.3.5"></a><h4>Members</h4>
+<a name="id-1.2.6.15.10.3.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -1664,7 +1663,7 @@
 </pre>
 <p>The structure containing the format specification of the ringbuffer.</p>
 <div class="refsect3">
-<a name="id-1.2.6.16.10.4.5"></a><h4>Members</h4>
+<a name="id-1.2.6.15.10.4.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -1722,7 +1721,7 @@
 <a name="GstAudioRingBufferState"></a><h3>enum GstAudioRingBufferState</h3>
 <p>The state of the ringbuffer.</p>
 <div class="refsect3">
-<a name="id-1.2.6.16.10.5.4"></a><h4>Members</h4>
+<a name="id-1.2.6.15.10.5.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -1769,7 +1768,7 @@
 <a name="GstAudioRingBufferFormatType"></a><h3>enum GstAudioRingBufferFormatType</h3>
 <p>The format of the samples in the ringbuffer.</p>
 <div class="refsect3">
-<a name="id-1.2.6.16.10.6.4"></a><h4>Members</h4>
+<a name="id-1.2.6.15.10.6.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
diff --git a/docs/libs/html/gst-plugins-base-libs-gstaudiosink.html b/docs/libs/html/gst-plugins-base-libs-gstaudiosink.html
index d83e465..8fcb858 100644
--- a/docs/libs/html/gst-plugins-base-libs-gstaudiosink.html
+++ b/docs/libs/html/gst-plugins-base-libs-gstaudiosink.html
@@ -6,7 +6,7 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer Base Plugins 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-audio.html" title="Audio Library">
-<link rel="prev" href="gst-plugins-base-libs-gstaudiomixerutils.html" title="gstaudiomixerutils">
+<link rel="prev" href="gst-plugins-base-libs-gstaudiofilter.html" title="gstaudiofilter">
 <link rel="next" href="gst-plugins-base-libs-gstaudiosrc.html" title="gstaudiosrc">
 <meta name="generator" content="GTK-Doc V1.20 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
@@ -20,7 +20,7 @@
 </td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="gstreamer-audio.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="gst-plugins-base-libs-gstaudiomixerutils.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="gst-plugins-base-libs-gstaudiofilter.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
 <td><a accesskey="n" href="gst-plugins-base-libs-gstaudiosrc.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
@@ -95,7 +95,7 @@
 </tr>
 <tr>
 <td><p><span class="term"><code class="function">delay()</code></span></p></td>
-<td><p>Get the number of samples written but not yet played 
+<td><p>Get the number of samples written but not yet played
     by the device.</p></td>
 </tr>
 <tr>
@@ -111,7 +111,6 @@
 <p>All scheduling of samples and timestamps is done in this base class
 together with <a class="link" href="gst-plugins-base-libs-gstaudiobasesink.html#GstAudioBaseSink"><span class="type">GstAudioBaseSink</span></a> using a default implementation of a
 <a class="link" href="gst-plugins-base-libs-gstaudioringbuffer.html#GstAudioRingBuffer"><span class="type">GstAudioRingBuffer</span></a> that uses threads.</p>
-<p>Last reviewed on 2006-09-27 (0.10.12)</p>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gstaudiosink.functions_details"></a><h2>Functions</h2>
@@ -149,7 +148,7 @@
 </pre>
 <p><a class="link" href="gst-plugins-base-libs-gstaudiosink.html#GstAudioSink"><span class="type">GstAudioSink</span></a> class. Override the vmethods to implement functionality.</p>
 <div class="refsect3">
-<a name="id-1.2.6.11.9.3.5"></a><h4>Members</h4>
+<a name="id-1.2.6.10.9.3.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
diff --git a/docs/libs/html/gst-plugins-base-libs-gstaudiosrc.html b/docs/libs/html/gst-plugins-base-libs-gstaudiosrc.html
index da61abe..97cfc42 100644
--- a/docs/libs/html/gst-plugins-base-libs-gstaudiosrc.html
+++ b/docs/libs/html/gst-plugins-base-libs-gstaudiosrc.html
@@ -112,7 +112,6 @@
 <p>All scheduling of samples and timestamps is done in this base class
 together with <a class="link" href="gst-plugins-base-libs-gstaudiobasesrc.html#GstAudioBaseSrc"><span class="type">GstAudioBaseSrc</span></a> using a default implementation of a
 <a class="link" href="gst-plugins-base-libs-gstaudioringbuffer.html#GstAudioRingBuffer"><span class="type">GstAudioRingBuffer</span></a> that uses threads.</p>
-<p>Last reviewed on 2006-09-27 (0.10.12)</p>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gstaudiosrc.functions_details"></a><h2>Functions</h2>
@@ -152,7 +151,7 @@
 <p><a class="link" href="gst-plugins-base-libs-gstaudiosrc.html#GstAudioSrc"><span class="type">GstAudioSrc</span></a> class. Override the vmethod to implement
 functionality.</p>
 <div class="refsect3">
-<a name="id-1.2.6.12.9.3.5"></a><h4>Members</h4>
+<a name="id-1.2.6.11.9.3.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -187,7 +186,7 @@
 </tr>
 <tr>
 <td class="struct_member_name"><p><em class="structfield"><code><a name="GstAudioSrcClass.read"></a>read</code></em> ()</p></td>
-<td class="struct_member_description"><p>read samples to the audio device</p></td>
+<td class="struct_member_description"><p>read samples from the audio device</p></td>
 <td class="struct_member_annotations"> </td>
 </tr>
 <tr>
diff --git a/docs/libs/html/gst-plugins-base-libs-gstcolorbalance.html b/docs/libs/html/gst-plugins-base-libs-gstcolorbalance.html
index 3dab281..7f41e54 100644
--- a/docs/libs/html/gst-plugins-base-libs-gstcolorbalance.html
+++ b/docs/libs/html/gst-plugins-base-libs-gstcolorbalance.html
@@ -135,7 +135,7 @@
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gstcolorbalance.description"></a><h2>Description</h2>
 <div class="refsect2">
-<a name="id-1.2.14.8.9.2"></a><p>
+<a name="id-1.2.15.8.9.2"></a><p>
 This interface is implemented by elements which can perform some color
 balance operation on video frames they process. For example, modifying
 the brightness, contrast, hue or saturation.
@@ -153,7 +153,7 @@
 gst_color_balance_list_channels (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstcolorbalance.html#GstColorBalance"><span class="type">GstColorBalance</span></a> *balance</code></em>);</pre>
 <p>Retrieve a list of the available channels.</p>
 <div class="refsect3">
-<a name="id-1.2.14.8.10.2.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.8.10.2.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -168,11 +168,12 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.8.10.2.6"></a><h4>Returns</h4>
-<p> A GList containing pointers to <a class="link" href="gst-plugins-base-libs-gstcolorbalancechannel.html#GstColorBalanceChannel"><span class="type">GstColorBalanceChannel</span></a> objects.
-The list is owned by the <a class="link" href="gst-plugins-base-libs-gstcolorbalance.html#GstColorBalance"><span class="type">GstColorBalance</span></a> instance and must not
-be freed.</p>
-<p></p>
+<a name="id-1.2.15.8.10.2.6"></a><h4>Returns</h4>
+<p> A
+GList containing pointers to <a class="link" href="gst-plugins-base-libs-gstcolorbalancechannel.html#GstColorBalanceChannel"><span class="type">GstColorBalanceChannel</span></a>
+objects. The list is owned by the <a class="link" href="gst-plugins-base-libs-gstcolorbalance.html#GstColorBalance"><span class="type">GstColorBalance</span></a>
+instance and must not be freed. </p>
+<p><span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstColorBalanceChannel][<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
 </div>
 </div>
 <hr>
@@ -187,7 +188,7 @@
         <span class="type">GstColorBalanceChannel.max_value</span> members of the
         <a class="link" href="gst-plugins-base-libs-gstcolorbalancechannel.html#GstColorBalanceChannel"><span class="type">GstColorBalanceChannel</span></a> object.</p>
 <div class="refsect3">
-<a name="id-1.2.14.8.10.3.6"></a><h4>Parameters</h4>
+<a name="id-1.2.15.8.10.3.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -209,7 +210,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.8.10.3.7"></a><h4>Returns</h4>
+<a name="id-1.2.15.8.10.3.7"></a><h4>Returns</h4>
 <p> The current value of the channel.</p>
 <p></p>
 </div>
@@ -227,7 +228,7 @@
         <span class="type">GstColorBalanceChannel.max_value</span> members of the
         <a class="link" href="gst-plugins-base-libs-gstcolorbalancechannel.html#GstColorBalanceChannel"><span class="type">GstColorBalanceChannel</span></a> object.</p>
 <div class="refsect3">
-<a name="id-1.2.14.8.10.4.6"></a><h4>Parameters</h4>
+<a name="id-1.2.15.8.10.4.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -266,7 +267,7 @@
 instance, and the <a class="link" href="gst-plugins-base-libs-gstcolorbalancechannel.html#GstColorBalanceChannel-value-changed" title="The “value-changed” signal"><span class="type">“value-changed”</span></a> signal on the
 channel object.</p>
 <div class="refsect3">
-<a name="id-1.2.14.8.10.5.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.8.10.5.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -300,7 +301,7 @@
 gst_color_balance_get_balance_type (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstcolorbalance.html#GstColorBalance"><span class="type">GstColorBalance</span></a> *balance</code></em>);</pre>
 <p>Get the <a class="link" href="gst-plugins-base-libs-gstcolorbalance.html#GstColorBalanceType" title="enum GstColorBalanceType"><span class="type">GstColorBalanceType</span></a> of this implementation.</p>
 <div class="refsect3">
-<a name="id-1.2.14.8.10.6.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.8.10.6.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -315,7 +316,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.8.10.6.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.8.10.6.6"></a><h4>Returns</h4>
 <p> A the <a class="link" href="gst-plugins-base-libs-gstcolorbalance.html#GstColorBalanceType" title="enum GstColorBalanceType"><span class="type">GstColorBalanceType</span></a>.</p>
 <p></p>
 </div>
@@ -351,7 +352,7 @@
 </pre>
 <p>Color-balance interface.</p>
 <div class="refsect3">
-<a name="id-1.2.14.8.11.3.5"></a><h4>Members</h4>
+<a name="id-1.2.15.8.11.3.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -401,7 +402,7 @@
 hardware implementations (such as those provided by xvimagesink) are
 preferred.</p>
 <div class="refsect3">
-<a name="id-1.2.14.8.11.4.4"></a><h4>Members</h4>
+<a name="id-1.2.15.8.11.4.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -441,7 +442,7 @@
                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>                user_data)</pre>
 <p>Fired when the value of the indicated channel has changed.</p>
 <div class="refsect3">
-<a name="id-1.2.14.8.12.2.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.8.12.2.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
diff --git a/docs/libs/html/gst-plugins-base-libs-gstcolorbalancechannel.html b/docs/libs/html/gst-plugins-base-libs-gstcolorbalancechannel.html
index bdac46e..8be5c80 100644
--- a/docs/libs/html/gst-plugins-base-libs-gstcolorbalancechannel.html
+++ b/docs/libs/html/gst-plugins-base-libs-gstcolorbalancechannel.html
@@ -82,7 +82,7 @@
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gstcolorbalancechannel.description"></a><h2>Description</h2>
 <div class="refsect2">
-<a name="id-1.2.14.9.8.2"></a><p>The <a class="link" href="gst-plugins-base-libs-gstcolorbalancechannel.html#GstColorBalanceChannel"><span class="type">GstColorBalanceChannel</span></a> object represents a parameter
+<a name="id-1.2.15.9.8.2"></a><p>The <a class="link" href="gst-plugins-base-libs-gstcolorbalancechannel.html#GstColorBalanceChannel"><span class="type">GstColorBalanceChannel</span></a> object represents a parameter
 for modifying the color balance implemented by an element providing the
 <a class="link" href="gst-plugins-base-libs-gstcolorbalance.html#GstColorBalance"><span class="type">GstColorBalance</span></a> interface. For example, Hue or Saturation.
 </p>
@@ -102,7 +102,7 @@
 };
 </pre>
 <div class="refsect3">
-<a name="id-1.2.14.9.10.2.4"></a><h4>Members</h4>
+<a name="id-1.2.15.9.10.2.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -142,7 +142,7 @@
 </pre>
 <p>Color-balance channel class.</p>
 <div class="refsect3">
-<a name="id-1.2.14.9.10.3.5"></a><h4>Members</h4>
+<a name="id-1.2.15.9.10.3.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -175,7 +175,7 @@
                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>                user_data)</pre>
 <p>Fired when the value of the indicated channel has changed.</p>
 <div class="refsect3">
-<a name="id-1.2.14.9.11.2.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.9.11.2.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
diff --git a/docs/libs/html/gst-plugins-base-libs-gstdiscoverer.html b/docs/libs/html/gst-plugins-base-libs-gstdiscoverer.html
index 7fee530..e1670ed 100644
--- a/docs/libs/html/gst-plugins-base-libs-gstdiscoverer.html
+++ b/docs/libs/html/gst-plugins-base-libs-gstdiscoverer.html
@@ -543,10 +543,12 @@
 <p>It provides two APIs, allowing usage in blocking or non-blocking mode.</p>
 <p>The blocking mode just requires calling <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#gst-discoverer-discover-uri" title="gst_discoverer_discover_uri ()"><code class="function">gst_discoverer_discover_uri()</code></a>
 with the URI one wishes to discover.</p>
-<p>The non-blocking mode requires a running <a href="http://library.gnome.org/devel/glib/unstable/glib-The-Main-Event-Loop.html#GMainLoop"><span class="type">GMainLoop</span></a> in the default
+<p>The non-blocking mode requires a running <a href="http://library.gnome.org/devel/glib/unstable/glib-The-Main-Event-Loop.html#GMainLoop"><span class="type">GMainLoop</span></a> iterating a
 <a href="http://library.gnome.org/devel/glib/unstable/glib-The-Main-Event-Loop.html#GMainContext"><span class="type">GMainContext</span></a>, where one connects to the various signals, appends the
 URIs to be processed (through <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#gst-discoverer-discover-uri-async" title="gst_discoverer_discover_uri_async ()"><code class="function">gst_discoverer_discover_uri_async()</code></a>) and then
-asks for the discovery to begin (through <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#gst-discoverer-start" title="gst_discoverer_start ()"><code class="function">gst_discoverer_start()</code></a>).</p>
+asks for the discovery to begin (through <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#gst-discoverer-start" title="gst_discoverer_start ()"><code class="function">gst_discoverer_start()</code></a>).
+By default this will use the GLib default main context unless you have
+set a custom context using <a href="http://library.gnome.org/devel/glib/unstable/glib-The-Main-Event-Loop.html#g-main-context-push-thread-default"><code class="function">g_main_context_push_thread_default()</code></a>.</p>
 <p>All the information is returned in a <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererInfo"><span class="type">GstDiscovererInfo</span></a> structure.</p>
 </div>
 <div class="refsect1">
@@ -558,7 +560,7 @@
                     <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **err</code></em>);</pre>
 <p>Creates a new <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscoverer"><span class="type">GstDiscoverer</span></a> with the provided timeout.</p>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.2.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.2.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -581,7 +583,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.2.6"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.2.6"></a><h4>Returns</h4>
 <p> The new <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscoverer"><span class="type">GstDiscoverer</span></a>.
 If an error occurred when creating the discoverer, <em class="parameter"><code>err</code></em>
 will be set
@@ -600,7 +602,7 @@
 A <a href="http://library.gnome.org/devel/glib/unstable/glib-The-Main-Event-Loop.html#GMainLoop"><span class="type">GMainLoop</span></a> must be available for <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscoverer"><span class="type">GstDiscoverer</span></a> to properly work in
 asynchronous mode.</p>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.3.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.3.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -623,7 +625,7 @@
 <p>Stop the discovery of any pending URIs and clears the list of
 pending URIS (if any).</p>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.4.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.4.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -651,7 +653,7 @@
  will be made internally, so the caller can safely <a href="http://library.gnome.org/devel/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a>
 afterwards.</p>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.5.6"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.5.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -678,7 +680,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.5.7"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.5.7"></a><h4>Returns</h4>
 <p> the result of the scanning. Can be <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if an
 error occurred. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
@@ -699,7 +701,7 @@
  will be made internally, so the caller can safely <a href="http://library.gnome.org/devel/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a>
 afterwards.</p>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.6.6"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.6.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -721,7 +723,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.6.7"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.6.7"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the <em class="parameter"><code>uri</code></em>
 was successfully appended to the list of pending
 uris, else <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a></p>
@@ -734,7 +736,7 @@
 <pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTime"><span class="returnvalue">GstClockTime</span></a>
 gst_discoverer_info_get_duration (<em class="parameter"><code>const <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererInfo"><span class="type">GstDiscovererInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.7.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.7.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -749,7 +751,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.7.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.7.5"></a><h4>Returns</h4>
 <p> the duration of the URI in <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a> (nanoseconds).</p>
 <p></p>
 </div>
@@ -760,7 +762,7 @@
 <pre class="programlisting">const <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstStructure.html#GstStructure"><span class="returnvalue">GstStructure</span></a> *
 gst_discoverer_info_get_misc (<em class="parameter"><code>const <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererInfo"><span class="type">GstDiscovererInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.8.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.8.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -775,7 +777,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.8.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.8.5"></a><h4>Returns</h4>
 <p> Miscellaneous information stored as a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstStructure.html#GstStructure"><span class="type">GstStructure</span></a>
 (for example: information about missing plugins). If you wish to use the
 <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstStructure.html#GstStructure"><span class="type">GstStructure</span></a> after the life-time of <em class="parameter"><code>info</code></em>
@@ -789,7 +791,7 @@
 <pre class="programlisting"><a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererResult" title="enum GstDiscovererResult"><span class="returnvalue">GstDiscovererResult</span></a>
 gst_discoverer_info_get_result (<em class="parameter"><code>const <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererInfo"><span class="type">GstDiscovererInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.9.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.9.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -804,7 +806,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.9.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.9.5"></a><h4>Returns</h4>
 <p> the result of the discovery as a <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererResult" title="enum GstDiscovererResult"><span class="type">GstDiscovererResult</span></a>.</p>
 <p></p>
 </div>
@@ -815,7 +817,7 @@
 <pre class="programlisting"><a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererStreamInfo" title="GstDiscovererStreamInfo"><span class="returnvalue">GstDiscovererStreamInfo</span></a> *
 gst_discoverer_info_get_stream_info (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererInfo"><span class="type">GstDiscovererInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.10.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.10.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -830,7 +832,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.10.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.10.5"></a><h4>Returns</h4>
 <p> the structure (or topology) of the URI as a
 <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererStreamInfo" title="GstDiscovererStreamInfo"><span class="type">GstDiscovererStreamInfo</span></a>.
 This structure can be traversed to see the original hierarchy. Unref with
@@ -844,7 +846,7 @@
 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="returnvalue">GList</span></a> *
 gst_discoverer_info_get_stream_list (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererInfo"><span class="type">GstDiscovererInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.11.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.11.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -859,7 +861,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.11.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.11.5"></a><h4>Returns</h4>
 <p> the list of
 all streams contained in the <span class="type">info</span>. Free after usage
 with <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#gst-discoverer-stream-info-list-free" title="gst_discoverer_stream_info_list_free ()"><code class="function">gst_discoverer_stream_info_list_free()</code></a>. </p>
@@ -872,7 +874,7 @@
 <pre class="programlisting">const <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstTagList.html#GstTagList"><span class="returnvalue">GstTagList</span></a> *
 gst_discoverer_info_get_tags (<em class="parameter"><code>const <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererInfo"><span class="type">GstDiscovererInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.12.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.12.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -887,7 +889,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.12.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.12.5"></a><h4>Returns</h4>
 <p> all tags contained in the URI. If you wish to use
 the tags after the life-time of <em class="parameter"><code>info</code></em>
 , you will need to copy them. </p>
@@ -900,7 +902,7 @@
 <pre class="programlisting">const <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstToc.html#GstToc"><span class="returnvalue">GstToc</span></a> *
 gst_discoverer_info_get_toc (<em class="parameter"><code>const <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererInfo"><span class="type">GstDiscovererInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.13.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.13.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -915,7 +917,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.13.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.13.5"></a><h4>Returns</h4>
 <p> TOC contained in the URI. If you wish to use
 the TOC after the life-time of <em class="parameter"><code>info</code></em>
 , you will need to copy it. </p>
@@ -928,7 +930,7 @@
 <pre class="programlisting">const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
 gst_discoverer_info_get_uri (<em class="parameter"><code>const <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererInfo"><span class="type">GstDiscovererInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.14.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.14.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -943,7 +945,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.14.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.14.5"></a><h4>Returns</h4>
 <p> the URI to which this information corresponds to.
 Copy it if you wish to use it after the life-time of <em class="parameter"><code>info</code></em>
 . </p>
@@ -956,7 +958,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_discoverer_info_get_seekable (<em class="parameter"><code>const <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererInfo"><span class="type">GstDiscovererInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.15.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.15.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -971,7 +973,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.15.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.15.5"></a><h4>Returns</h4>
 <p> the whether the URI is seekable.</p>
 <p></p>
 </div>
@@ -984,7 +986,7 @@
 <p>Increments the reference count of <em class="parameter"><code>info</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.16.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.16.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -999,7 +1001,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.16.6"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.16.6"></a><h4>Returns</h4>
 <p> the same <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererInfo"><span class="type">GstDiscovererInfo</span></a> object</p>
 <p></p>
 </div>
@@ -1012,7 +1014,7 @@
 <p>Decrements the reference count of <em class="parameter"><code>info</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.17.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.17.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1033,7 +1035,7 @@
 <pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="returnvalue">GstCaps</span></a> *
 gst_discoverer_stream_info_get_caps (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererStreamInfo" title="GstDiscovererStreamInfo"><span class="type">GstDiscovererStreamInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.18.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.18.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1048,7 +1050,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.18.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.18.5"></a><h4>Returns</h4>
 <p> the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a> of the stream. Unref with
 <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#gst-caps-unref"><span class="type">gst_caps_unref</span></a> after usage. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
@@ -1060,7 +1062,7 @@
 <pre class="programlisting">const <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstStructure.html#GstStructure"><span class="returnvalue">GstStructure</span></a> *
 gst_discoverer_stream_info_get_misc (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererStreamInfo" title="GstDiscovererStreamInfo"><span class="type">GstDiscovererStreamInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.19.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.19.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1075,7 +1077,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.19.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.19.5"></a><h4>Returns</h4>
 <p> additional information regarding the stream (for
 example codec version, profile, etc..). If you wish to use the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstStructure.html#GstStructure"><span class="type">GstStructure</span></a>
 after the life-time of <em class="parameter"><code>info</code></em>
@@ -1089,7 +1091,7 @@
 <pre class="programlisting"><a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererStreamInfo" title="GstDiscovererStreamInfo"><span class="returnvalue">GstDiscovererStreamInfo</span></a> *
 gst_discoverer_stream_info_get_next (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererStreamInfo" title="GstDiscovererStreamInfo"><span class="type">GstDiscovererStreamInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.20.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.20.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1104,7 +1106,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.20.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.20.5"></a><h4>Returns</h4>
 <p> the next <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererStreamInfo" title="GstDiscovererStreamInfo"><span class="type">GstDiscovererStreamInfo</span></a> in a chain. <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>
 for final streams.
 Unref with <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#gst-discoverer-stream-info-unref" title="gst_discoverer_stream_info_unref()"><span class="type">gst_discoverer_stream_info_unref</span></a> after usage. </p>
@@ -1118,7 +1120,7 @@
 gst_discoverer_stream_info_get_previous
                                (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererStreamInfo" title="GstDiscovererStreamInfo"><span class="type">GstDiscovererStreamInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.21.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.21.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1133,7 +1135,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.21.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.21.5"></a><h4>Returns</h4>
 <p> the previous <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererStreamInfo" title="GstDiscovererStreamInfo"><span class="type">GstDiscovererStreamInfo</span></a> in a chain.
 <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> for starting points. Unref with <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#gst-discoverer-stream-info-unref" title="gst_discoverer_stream_info_unref()"><span class="type">gst_discoverer_stream_info_unref</span></a>
 after usage. </p>
@@ -1146,7 +1148,7 @@
 <pre class="programlisting">const <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstTagList.html#GstTagList"><span class="returnvalue">GstTagList</span></a> *
 gst_discoverer_stream_info_get_tags (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererStreamInfo" title="GstDiscovererStreamInfo"><span class="type">GstDiscovererStreamInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.22.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.22.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1161,7 +1163,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.22.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.22.5"></a><h4>Returns</h4>
 <p> the tags contained in this stream. If you wish to
 use the tags after the life-time of <em class="parameter"><code>info</code></em>
 you will need to copy them. </p>
@@ -1174,7 +1176,7 @@
 <pre class="programlisting">const <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstToc.html#GstToc"><span class="returnvalue">GstToc</span></a> *
 gst_discoverer_stream_info_get_toc (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererStreamInfo" title="GstDiscovererStreamInfo"><span class="type">GstDiscovererStreamInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.23.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.23.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1189,7 +1191,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.23.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.23.5"></a><h4>Returns</h4>
 <p> the TOC contained in this stream. If you wish to
 use the TOC after the life-time of <em class="parameter"><code>info</code></em>
 you will need to copy it. </p>
@@ -1203,7 +1205,7 @@
 gst_discoverer_stream_info_get_stream_id
                                (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererStreamInfo" title="GstDiscovererStreamInfo"><span class="type">GstDiscovererStreamInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.24.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.24.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1218,7 +1220,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.24.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.24.5"></a><h4>Returns</h4>
 <p> the stream ID of this stream. If you wish to
 use the stream ID after the life-time of <em class="parameter"><code>info</code></em>
 you will need to copy it. </p>
@@ -1233,7 +1235,7 @@
 <p>Increments the reference count of <em class="parameter"><code>info</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.25.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.25.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1248,7 +1250,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.25.6"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.25.6"></a><h4>Returns</h4>
 <p> the same <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererStreamInfo" title="GstDiscovererStreamInfo"><span class="type">GstDiscovererStreamInfo</span></a> object</p>
 <p></p>
 </div>
@@ -1261,7 +1263,7 @@
 <p>Decrements the reference count of <em class="parameter"><code>info</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.26.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.26.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1284,7 +1286,7 @@
 <p>Decrements the reference count of all contained <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererStreamInfo" title="GstDiscovererStreamInfo"><span class="type">GstDiscovererStreamInfo</span></a>
 and fress the <a href="http://library.gnome.org/devel/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="type">GList</span></a>.</p>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.27.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.27.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1306,7 +1308,7 @@
 gst_discoverer_stream_info_get_stream_type_nick
                                (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererStreamInfo" title="GstDiscovererStreamInfo"><span class="type">GstDiscovererStreamInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.28.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.28.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1321,7 +1323,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.28.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.28.5"></a><h4>Returns</h4>
 <p> a human readable name for the stream type of the given <em class="parameter"><code>info</code></em>
 (ex : "audio",
 "container",...).</p>
@@ -1336,7 +1338,7 @@
 <p>Finds all the <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererAudioInfo" title="GstDiscovererAudioInfo"><span class="type">GstDiscovererAudioInfo</span></a> contained in <em class="parameter"><code>info</code></em>
 </p>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.29.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.29.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1351,7 +1353,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.29.6"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.29.6"></a><h4>Returns</h4>
 <p> A <a href="http://library.gnome.org/devel/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="type">GList</span></a> of
 matching <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererStreamInfo" title="GstDiscovererStreamInfo"><span class="type">GstDiscovererStreamInfo</span></a>. The caller should free it with
 <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#gst-discoverer-stream-info-list-free" title="gst_discoverer_stream_info_list_free ()"><code class="function">gst_discoverer_stream_info_list_free()</code></a>. </p>
@@ -1367,7 +1369,7 @@
 <p>Finds all the <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererContainerInfo" title="GstDiscovererContainerInfo"><span class="type">GstDiscovererContainerInfo</span></a> contained in <em class="parameter"><code>info</code></em>
 </p>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.30.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.30.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1382,7 +1384,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.30.6"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.30.6"></a><h4>Returns</h4>
 <p> A <a href="http://library.gnome.org/devel/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="type">GList</span></a> of
 matching <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererStreamInfo" title="GstDiscovererStreamInfo"><span class="type">GstDiscovererStreamInfo</span></a>. The caller should free it with
 <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#gst-discoverer-stream-info-list-free" title="gst_discoverer_stream_info_list_free ()"><code class="function">gst_discoverer_stream_info_list_free()</code></a>. </p>
@@ -1400,7 +1402,7 @@
 given <em class="parameter"><code>streamtype</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.31.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.31.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1422,7 +1424,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.31.6"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.31.6"></a><h4>Returns</h4>
 <p> A <a href="http://library.gnome.org/devel/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="type">GList</span></a> of
 matching <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererStreamInfo" title="GstDiscovererStreamInfo"><span class="type">GstDiscovererStreamInfo</span></a>. The caller should free it with
 <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#gst-discoverer-stream-info-list-free" title="gst_discoverer_stream_info_list_free ()"><code class="function">gst_discoverer_stream_info_list_free()</code></a>. </p>
@@ -1438,7 +1440,7 @@
 <p>Finds all the <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererSubtitleInfo" title="GstDiscovererSubtitleInfo"><span class="type">GstDiscovererSubtitleInfo</span></a> contained in <em class="parameter"><code>info</code></em>
 </p>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.32.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.32.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1453,7 +1455,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.32.6"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.32.6"></a><h4>Returns</h4>
 <p> A <a href="http://library.gnome.org/devel/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="type">GList</span></a> of
 matching <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererStreamInfo" title="GstDiscovererStreamInfo"><span class="type">GstDiscovererStreamInfo</span></a>. The caller should free it with
 <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#gst-discoverer-stream-info-list-free" title="gst_discoverer_stream_info_list_free ()"><code class="function">gst_discoverer_stream_info_list_free()</code></a>. </p>
@@ -1468,7 +1470,7 @@
 <p>Finds all the <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererVideoInfo" title="GstDiscovererVideoInfo"><span class="type">GstDiscovererVideoInfo</span></a> contained in <em class="parameter"><code>info</code></em>
 </p>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.33.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.33.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1483,7 +1485,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.33.6"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.33.6"></a><h4>Returns</h4>
 <p> A <a href="http://library.gnome.org/devel/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="type">GList</span></a> of
 matching <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererStreamInfo" title="GstDiscovererStreamInfo"><span class="type">GstDiscovererStreamInfo</span></a>. The caller should free it with
 <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#gst-discoverer-stream-info-list-free" title="gst_discoverer_stream_info_list_free ()"><code class="function">gst_discoverer_stream_info_list_free()</code></a>. </p>
@@ -1496,7 +1498,7 @@
 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
 gst_discoverer_audio_info_get_bitrate (<em class="parameter"><code>const <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererAudioInfo" title="GstDiscovererAudioInfo"><span class="type">GstDiscovererAudioInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.34.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.34.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1511,7 +1513,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.34.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.34.5"></a><h4>Returns</h4>
 <p> the average or nominal bitrate of the stream in bits/second.</p>
 <p></p>
 </div>
@@ -1523,7 +1525,7 @@
 gst_discoverer_audio_info_get_channels
                                (<em class="parameter"><code>const <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererAudioInfo" title="GstDiscovererAudioInfo"><span class="type">GstDiscovererAudioInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.35.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.35.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1538,7 +1540,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.35.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.35.5"></a><h4>Returns</h4>
 <p> the number of channels in the stream.</p>
 <p></p>
 </div>
@@ -1549,7 +1551,7 @@
 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
 gst_discoverer_audio_info_get_depth (<em class="parameter"><code>const <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererAudioInfo" title="GstDiscovererAudioInfo"><span class="type">GstDiscovererAudioInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.36.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.36.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1564,7 +1566,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.36.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.36.5"></a><h4>Returns</h4>
 <p> the number of bits used per sample in each channel.</p>
 <p></p>
 </div>
@@ -1576,7 +1578,7 @@
 gst_discoverer_audio_info_get_language
                                (<em class="parameter"><code>const <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererAudioInfo" title="GstDiscovererAudioInfo"><span class="type">GstDiscovererAudioInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.37.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.37.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1591,7 +1593,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.37.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.37.5"></a><h4>Returns</h4>
 <p> the language of the stream, or NULL if unknown.</p>
 <p></p>
 </div>
@@ -1603,7 +1605,7 @@
 gst_discoverer_audio_info_get_max_bitrate
                                (<em class="parameter"><code>const <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererAudioInfo" title="GstDiscovererAudioInfo"><span class="type">GstDiscovererAudioInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.38.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.38.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1618,7 +1620,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.38.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.38.5"></a><h4>Returns</h4>
 <p> the maximum bitrate of the stream in bits/second.</p>
 <p></p>
 </div>
@@ -1630,7 +1632,7 @@
 gst_discoverer_audio_info_get_sample_rate
                                (<em class="parameter"><code>const <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererAudioInfo" title="GstDiscovererAudioInfo"><span class="type">GstDiscovererAudioInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.39.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.39.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1645,7 +1647,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.39.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.39.5"></a><h4>Returns</h4>
 <p> the sample rate of the stream in Hertz.</p>
 <p></p>
 </div>
@@ -1657,7 +1659,7 @@
 gst_discoverer_container_info_get_streams
                                (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererContainerInfo" title="GstDiscovererContainerInfo"><span class="type">GstDiscovererContainerInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.40.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.40.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1672,7 +1674,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.40.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.40.5"></a><h4>Returns</h4>
 <p> the list of
 <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererStreamInfo" title="GstDiscovererStreamInfo"><span class="type">GstDiscovererStreamInfo</span></a> this container stream offers.
 Free with <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#gst-discoverer-stream-info-list-free" title="gst_discoverer_stream_info_list_free ()"><code class="function">gst_discoverer_stream_info_list_free()</code></a> after usage. </p>
@@ -1686,7 +1688,7 @@
 gst_discoverer_subtitle_info_get_language
                                (<em class="parameter"><code>const <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererSubtitleInfo" title="GstDiscovererSubtitleInfo"><span class="type">GstDiscovererSubtitleInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.41.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.41.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1701,7 +1703,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.41.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.41.5"></a><h4>Returns</h4>
 <p> the language of the stream, or NULL if unknown.</p>
 <p></p>
 </div>
@@ -1712,7 +1714,7 @@
 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
 gst_discoverer_video_info_get_bitrate (<em class="parameter"><code>const <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererVideoInfo" title="GstDiscovererVideoInfo"><span class="type">GstDiscovererVideoInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.42.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.42.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1727,7 +1729,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.42.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.42.5"></a><h4>Returns</h4>
 <p> the average or nominal bitrate of the video stream in bits/second.</p>
 <p></p>
 </div>
@@ -1738,7 +1740,7 @@
 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
 gst_discoverer_video_info_get_depth (<em class="parameter"><code>const <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererVideoInfo" title="GstDiscovererVideoInfo"><span class="type">GstDiscovererVideoInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.43.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.43.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1753,7 +1755,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.43.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.43.5"></a><h4>Returns</h4>
 <p> the depth in bits of the video stream.</p>
 <p></p>
 </div>
@@ -1765,7 +1767,7 @@
 gst_discoverer_video_info_get_framerate_denom
                                (<em class="parameter"><code>const <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererVideoInfo" title="GstDiscovererVideoInfo"><span class="type">GstDiscovererVideoInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.44.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.44.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1780,7 +1782,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.44.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.44.5"></a><h4>Returns</h4>
 <p> the framerate of the video stream (denominator).</p>
 <p></p>
 </div>
@@ -1792,7 +1794,7 @@
 gst_discoverer_video_info_get_framerate_num
                                (<em class="parameter"><code>const <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererVideoInfo" title="GstDiscovererVideoInfo"><span class="type">GstDiscovererVideoInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.45.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.45.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1807,7 +1809,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.45.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.45.5"></a><h4>Returns</h4>
 <p> the framerate of the video stream (numerator).</p>
 <p></p>
 </div>
@@ -1818,7 +1820,7 @@
 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
 gst_discoverer_video_info_get_height (<em class="parameter"><code>const <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererVideoInfo" title="GstDiscovererVideoInfo"><span class="type">GstDiscovererVideoInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.46.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.46.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1833,7 +1835,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.46.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.46.5"></a><h4>Returns</h4>
 <p> the height of the video stream in pixels.</p>
 <p></p>
 </div>
@@ -1845,7 +1847,7 @@
 gst_discoverer_video_info_is_interlaced
                                (<em class="parameter"><code>const <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererVideoInfo" title="GstDiscovererVideoInfo"><span class="type">GstDiscovererVideoInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.47.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.47.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1860,7 +1862,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.47.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.47.5"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the stream is interlaced, else <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
 <p></p>
 </div>
@@ -1871,7 +1873,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_discoverer_video_info_is_image (<em class="parameter"><code>const <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererVideoInfo" title="GstDiscovererVideoInfo"><span class="type">GstDiscovererVideoInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.48.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.48.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1886,7 +1888,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.48.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.48.5"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><span class="type">TRUE</span></a> if the video stream corresponds to an image (i.e. only contains
 one frame).</p>
 <p></p>
@@ -1899,7 +1901,7 @@
 gst_discoverer_video_info_get_max_bitrate
                                (<em class="parameter"><code>const <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererVideoInfo" title="GstDiscovererVideoInfo"><span class="type">GstDiscovererVideoInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.49.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.49.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1914,7 +1916,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.49.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.49.5"></a><h4>Returns</h4>
 <p> the maximum bitrate of the video stream in bits/second.</p>
 <p></p>
 </div>
@@ -1926,7 +1928,7 @@
 gst_discoverer_video_info_get_par_denom
                                (<em class="parameter"><code>const <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererVideoInfo" title="GstDiscovererVideoInfo"><span class="type">GstDiscovererVideoInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.50.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.50.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1941,7 +1943,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.50.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.50.5"></a><h4>Returns</h4>
 <p> the Pixel Aspect Ratio (PAR) of the video stream (denominator).</p>
 <p></p>
 </div>
@@ -1952,7 +1954,7 @@
 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
 gst_discoverer_video_info_get_par_num (<em class="parameter"><code>const <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererVideoInfo" title="GstDiscovererVideoInfo"><span class="type">GstDiscovererVideoInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.51.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.51.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1967,7 +1969,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.51.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.51.5"></a><h4>Returns</h4>
 <p> the Pixel Aspect Ratio (PAR) of the video stream (numerator).</p>
 <p></p>
 </div>
@@ -1978,7 +1980,7 @@
 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
 gst_discoverer_video_info_get_width (<em class="parameter"><code>const <a class="link" href="gst-plugins-base-libs-gstdiscoverer.html#GstDiscovererVideoInfo" title="GstDiscovererVideoInfo"><span class="type">GstDiscovererVideoInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.52.4"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.12.52.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1993,7 +1995,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.9.12.52.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.9.12.52.5"></a><h4>Returns</h4>
 <p> the width of the video stream in pixels.</p>
 <p></p>
 </div>
@@ -2017,7 +2019,7 @@
 <a name="GstDiscovererResult"></a><h3>enum GstDiscovererResult</h3>
 <p>Result values for the discovery process.</p>
 <div class="refsect3">
-<a name="id-1.2.13.9.13.4.4"></a><h4>Members</h4>
+<a name="id-1.2.14.9.13.4.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -2144,7 +2146,7 @@
  might still contain some partial information,
 depending on the circumstances of the error.</p>
 <div class="refsect3">
-<a name="id-1.2.13.9.15.2.6"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.15.2.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2188,7 +2190,7 @@
                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>       user_data)</pre>
 <p>Will be emitted in async mode when all pending URIs have been processed.</p>
 <div class="refsect3">
-<a name="id-1.2.13.9.15.3.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.15.3.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2225,7 +2227,7 @@
 <p>This signal is usually emitted from the context of a GStreamer streaming
 thread.</p>
 <div class="refsect3">
-<a name="id-1.2.13.9.15.4.6"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.15.4.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2261,7 +2263,7 @@
                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>       user_data)</pre>
 <p>Will be emitted when the discover starts analyzing the pending URIs</p>
 <div class="refsect3">
-<a name="id-1.2.13.9.15.5.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.9.15.5.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
diff --git a/docs/libs/html/gst-plugins-base-libs-gstmikey.html b/docs/libs/html/gst-plugins-base-libs-gstmikey.html
new file mode 100644
index 0000000..774851f
--- /dev/null
+++ b/docs/libs/html/gst-plugins-base-libs-gstmikey.html
@@ -0,0 +1,2862 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>GStreamer Base Plugins 1.0 Library Reference Manual: gstmikey</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="index.html" title="GStreamer Base Plugins 1.0 Library Reference Manual">
+<link rel="up" href="gstreamer-mikey.html" title="MIKEY Library">
+<link rel="prev" href="gstreamer-mikey.html" title="MIKEY Library">
+<link rel="next" href="gstreamer-tag.html" title="Tag Support Library">
+<meta name="generator" content="GTK-Doc V1.20 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span> 
+                  <a href="#gst-plugins-base-libs-gstmikey.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span> 
+                  <a href="#gst-plugins-base-libs-gstmikey.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="gstreamer-mikey.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gstreamer-mikey.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gstreamer-tag.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-base-libs-gstmikey"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-base-libs-gstmikey.top_of_page"></a>gstmikey</span></h2>
+<p>gstmikey — Helper methods for dealing with MIKEY messages</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-base-libs-gstmikey.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="functions_return">
+<col class="functions_name">
+</colgroup>
+<tbody>
+<tr>
+<td class="function_type">
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="returnvalue">GstMIKEYMessage</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-new" title="gst_mikey_message_new ()">gst_mikey_message_new</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="returnvalue">GstMIKEYMessage</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-new-from-bytes" title="gst_mikey_message_new_from_bytes ()">gst_mikey_message_new_from_bytes</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="returnvalue">GstMIKEYMessage</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-new-from-data" title="gst_mikey_message_new_from_data ()">gst_mikey_message_new_from_data</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-free" title="gst_mikey_message_free ()">gst_mikey_message_free</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Byte-Arrays.html#GBytes"><span class="returnvalue">GBytes</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-to-bytes" title="gst_mikey_message_to_bytes ()">gst_mikey_message_to_bytes</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-set-info" title="gst_mikey_message_set_info ()">gst_mikey_message_set_info</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-get-n-cs" title="gst_mikey_message_get_n_cs ()">gst_mikey_message_get_n_cs</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">const <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMapSRTP" title="GstMIKEYMapSRTP"><span class="returnvalue">GstMIKEYMapSRTP</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-get-cs-srtp" title="gst_mikey_message_get_cs_srtp ()">gst_mikey_message_get_cs_srtp</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-insert-cs-srtp" title="gst_mikey_message_insert_cs_srtp ()">gst_mikey_message_insert_cs_srtp</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-remove-cs-srtp" title="gst_mikey_message_remove_cs_srtp ()">gst_mikey_message_remove_cs_srtp</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-replace-cs-srtp" title="gst_mikey_message_replace_cs_srtp ()">gst_mikey_message_replace_cs_srtp</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-add-cs-srtp" title="gst_mikey_message_add_cs_srtp ()">gst_mikey_message_add_cs_srtp</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-get-n-payloads" title="gst_mikey_message_get_n_payloads ()">gst_mikey_message_get_n_payloads</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">const <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="returnvalue">GstMIKEYPayload</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-get-payload" title="gst_mikey_message_get_payload ()">gst_mikey_message_get_payload</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">const <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="returnvalue">GstMIKEYPayload</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-find-payload" title="gst_mikey_message_find_payload ()">gst_mikey_message_find_payload</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-insert-payload" title="gst_mikey_message_insert_payload ()">gst_mikey_message_insert_payload</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-remove-payload" title="gst_mikey_message_remove_payload ()">gst_mikey_message_remove_payload</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-replace-payload" title="gst_mikey_message_replace_payload ()">gst_mikey_message_replace_payload</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-add-payload" title="gst_mikey_message_add_payload ()">gst_mikey_message_add_payload</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadClearFunc" title="GstMIKEYPayloadClearFunc ()">*GstMIKEYPayloadClearFunc</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="returnvalue">GstMIKEYPayload</span></a> *
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadCopyFunc" title="GstMIKEYPayloadCopyFunc ()">*GstMIKEYPayloadCopyFunc</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="returnvalue">GstMIKEYPayload</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-new" title="gst_mikey_payload_new ()">gst_mikey_payload_new</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="returnvalue">GstMIKEYPayload</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-copy" title="gst_mikey_payload_copy ()">gst_mikey_payload_copy</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-free" title="gst_mikey_payload_free ()">gst_mikey_payload_free</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-kemac-set" title="gst_mikey_payload_kemac_set ()">gst_mikey_payload_kemac_set</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-pke-set" title="gst_mikey_payload_pke_set ()">gst_mikey_payload_pke_set</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-add-pke" title="gst_mikey_message_add_pke ()">gst_mikey_message_add_pke</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-t-set" title="gst_mikey_payload_t_set ()">gst_mikey_payload_t_set</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-add-t" title="gst_mikey_message_add_t ()">gst_mikey_message_add_t</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-add-t-now-ntp-utc" title="gst_mikey_message_add_t_now_ntp_utc ()">gst_mikey_message_add_t_now_ntp_utc</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-rand-set" title="gst_mikey_payload_rand_set ()">gst_mikey_payload_rand_set</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-add-rand" title="gst_mikey_message_add_rand ()">gst_mikey_message_add_rand</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-message-add-rand-len" title="gst_mikey_message_add_rand_len ()">gst_mikey_message_add_rand_len</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-sp-set" title="gst_mikey_payload_sp_set ()">gst_mikey_payload_sp_set</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-sp-get-n-params" title="gst_mikey_payload_sp_get_n_params ()">gst_mikey_payload_sp_get_n_params</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">const <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadSPParam" title="GstMIKEYPayloadSPParam"><span class="returnvalue">GstMIKEYPayloadSPParam</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-sp-get-param" title="gst_mikey_payload_sp_get_param ()">gst_mikey_payload_sp_get_param</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-sp-add-param" title="gst_mikey_payload_sp_add_param ()">gst_mikey_payload_sp_add_param</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-sp-remove-param" title="gst_mikey_payload_sp_remove_param ()">gst_mikey_payload_sp_remove_param</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-base-libs-gstmikey.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="gst-plugins-base-libs-gstmikey.html#GST-MIKEY-VERSION:CAPS" title="GST_MIKEY_VERSION">GST_MIKEY_VERSION</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYType" title="enum GstMIKEYType">GstMIKEYType</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage">GstMIKEYMessage</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPRFFunc" title="enum GstMIKEYPRFFunc">GstMIKEYPRFFunc</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMapType" title="enum GstMIKEYMapType">GstMIKEYMapType</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword"> </td>
+<td class="function_name"><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMapSRTP" title="GstMIKEYMapSRTP">GstMIKEYMapSRTP</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadType" title="enum GstMIKEYPayloadType">GstMIKEYPayloadType</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload">GstMIKEYPayload</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYEncAlg" title="enum GstMIKEYEncAlg">GstMIKEYEncAlg</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMacAlg" title="enum GstMIKEYMacAlg">GstMIKEYMacAlg</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword"> </td>
+<td class="function_name"><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadKEMAC" title="GstMIKEYPayloadKEMAC">GstMIKEYPayloadKEMAC</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYCacheType" title="enum GstMIKEYCacheType">GstMIKEYCacheType</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword"> </td>
+<td class="function_name"><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadPKE" title="GstMIKEYPayloadPKE">GstMIKEYPayloadPKE</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYTSType" title="enum GstMIKEYTSType">GstMIKEYTSType</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword"> </td>
+<td class="function_name"><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadT" title="GstMIKEYPayloadT">GstMIKEYPayloadT</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword"> </td>
+<td class="function_name"><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadRAND" title="GstMIKEYPayloadRAND">GstMIKEYPayloadRAND</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYSecProto" title="enum GstMIKEYSecProto">GstMIKEYSecProto</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYSecSRTP" title="enum GstMIKEYSecSRTP">GstMIKEYSecSRTP</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword"> </td>
+<td class="function_name"><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadSP" title="GstMIKEYPayloadSP">GstMIKEYPayloadSP</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword"> </td>
+<td class="function_name"><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadSPParam" title="GstMIKEYPayloadSPParam">GstMIKEYPayloadSPParam</a></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-base-libs-gstmikey.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen">
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-base-libs-gstmikey.includes"></a><h2>Includes</h2>
+<pre class="synopsis">#include &lt;gst/sdp/gstmikey.h&gt;
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-base-libs-gstmikey.description"></a><h2>Description</h2>
+<div class="refsect2">
+<a name="id-1.2.12.3.7.2"></a><p>
+The GstMIKEY helper functions makes it easy to parse and create MIKEY
+messages.
+</p>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-base-libs-gstmikey.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="gst-mikey-message-new"></a><h3>gst_mikey_message_new ()</h3>
+<pre class="programlisting"><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="returnvalue">GstMIKEYMessage</span></a> *
+gst_mikey_message_new (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>Make a new MIKEY message.</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.2.5"></a><h4>Returns</h4>
+<p> a new <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a> on success</p>
+<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mikey-message-new-from-bytes"></a><h3>gst_mikey_message_new_from_bytes ()</h3>
+<pre class="programlisting"><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="returnvalue">GstMIKEYMessage</span></a> *
+gst_mikey_message_new_from_bytes (<em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Byte-Arrays.html#GBytes"><span class="type">GBytes</span></a> *bytes</code></em>,
+                                  <em class="parameter"><code><span class="type">GstMIKEYDecryptInfo</span> *info</code></em>,
+                                  <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
+<p>Make a new <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a> from <em class="parameter"><code>bytes</code></em>
+.</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.3.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>bytes</p></td>
+<td class="parameter_description"><p>a <a href="http://library.gnome.org/devel/glib/unstable/glib-Byte-Arrays.html#GBytes"><span class="type">GBytes</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>info</p></td>
+<td class="parameter_description"><p>a <span class="type">GstMIKEYDecryptInfo</span></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>error</p></td>
+<td class="parameter_description"><p>a <a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.3.6"></a><h4>Returns</h4>
+<p> a new <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a></p>
+<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mikey-message-new-from-data"></a><h3>gst_mikey_message_new_from_data ()</h3>
+<pre class="programlisting"><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="returnvalue">GstMIKEYMessage</span></a> *
+gst_mikey_message_new_from_data (<em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gconstpointer"><span class="type">gconstpointer</span></a> data</code></em>,
+                                 <em class="parameter"><code><span class="type">gsize</span> size</code></em>,
+                                 <em class="parameter"><code><span class="type">GstMIKEYDecryptInfo</span> *info</code></em>,
+                                 <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
+<p>Parse <em class="parameter"><code>size</code></em>
+ bytes from <em class="parameter"><code>data</code></em>
+ into a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a>. <em class="parameter"><code>info</code></em>
+ contains the
+parameters to decrypt and verify the data.</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.4.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>bytes to read</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>size</p></td>
+<td class="parameter_description"><p>length of <em class="parameter"><code>data</code></em>
+</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>info</p></td>
+<td class="parameter_description"><p><span class="type">GstMIKEYDecryptInfo</span></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>error</p></td>
+<td class="parameter_description"><p>a <a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.4.6"></a><h4>Returns</h4>
+<p> a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a> on success or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> when parsing failed and
+<em class="parameter"><code>error</code></em>
+will be set.</p>
+<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mikey-message-free"></a><h3>gst_mikey_message_free ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_mikey_message_free (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a> *msg</code></em>);</pre>
+<p>Free all resources allocated in <em class="parameter"><code>msg</code></em>
+.</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.5.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>msg</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mikey-message-to-bytes"></a><h3>gst_mikey_message_to_bytes ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Byte-Arrays.html#GBytes"><span class="returnvalue">GBytes</span></a> *
+gst_mikey_message_to_bytes (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a> *msg</code></em>,
+                            <em class="parameter"><code><span class="type">GstMIKEYEncryptInfo</span> *info</code></em>,
+                            <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
+<p>Convert <em class="parameter"><code>msg</code></em>
+ to a <a href="http://library.gnome.org/devel/glib/unstable/glib-Byte-Arrays.html#GBytes"><span class="type">GBytes</span></a>.</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.6.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>msg</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>info</p></td>
+<td class="parameter_description"><p>a <span class="type">GstMIKEYEncryptInfo</span></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>error</p></td>
+<td class="parameter_description"><p>a <a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.6.6"></a><h4>Returns</h4>
+<p> a new <a href="http://library.gnome.org/devel/glib/unstable/glib-Byte-Arrays.html#GBytes"><span class="type">GBytes</span></a> for <em class="parameter"><code>msg</code></em>
+.</p>
+<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mikey-message-set-info"></a><h3>gst_mikey_message_set_info ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mikey_message_set_info (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a> *msg</code></em>,
+                            <em class="parameter"><code><span class="type">guint8</span> version</code></em>,
+                            <em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYType" title="enum GstMIKEYType"><span class="type">GstMIKEYType</span></a> type</code></em>,
+                            <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> V</code></em>,
+                            <em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPRFFunc" title="enum GstMIKEYPRFFunc"><span class="type">GstMIKEYPRFFunc</span></a> prf_func</code></em>,
+                            <em class="parameter"><code><span class="type">guint32</span> CSB_id</code></em>,
+                            <em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMapType" title="enum GstMIKEYMapType"><span class="type">GstMIKEYMapType</span></a> map_type</code></em>);</pre>
+<p>Set the information in <em class="parameter"><code>msg</code></em>
+.</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.7.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>msg</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>version</p></td>
+<td class="parameter_description"><p>a version</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYType" title="enum GstMIKEYType"><span class="type">GstMIKEYType</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>V</p></td>
+<td class="parameter_description"><p>verify flag</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>prf_func</p></td>
+<td class="parameter_description"><p>the <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPRFFunc" title="enum GstMIKEYPRFFunc"><span class="type">GstMIKEYPRFFunc</span></a> function to use</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>CSB_id</p></td>
+<td class="parameter_description"><p>the Crypto Session Bundle id</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>map_type</p></td>
+<td class="parameter_description"><p>the <span class="type">GstMIKEYCSIDMapType</span></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.7.6"></a><h4>Returns</h4>
+<p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> on success</p>
+<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mikey-message-get-n-cs"></a><h3>gst_mikey_message_get_n_cs ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
+gst_mikey_message_get_n_cs (<em class="parameter"><code>const <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a> *msg</code></em>);</pre>
+<p>Get the number of crypto sessions in <em class="parameter"><code>msg</code></em>
+.</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.8.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>msg</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.8.6"></a><h4>Returns</h4>
+<p> the number of crypto sessions</p>
+<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mikey-message-get-cs-srtp"></a><h3>gst_mikey_message_get_cs_srtp ()</h3>
+<pre class="programlisting">const <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMapSRTP" title="GstMIKEYMapSRTP"><span class="returnvalue">GstMIKEYMapSRTP</span></a> *
+gst_mikey_message_get_cs_srtp (<em class="parameter"><code>const <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a> *msg</code></em>,
+                               <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> idx</code></em>);</pre>
+<p>Get the policy information of <em class="parameter"><code>msg</code></em>
+ at <em class="parameter"><code>idx</code></em>
+.</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.9.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>msg</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>idx</p></td>
+<td class="parameter_description"><p>an index</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.9.6"></a><h4>Returns</h4>
+<p> a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMapSRTP" title="GstMIKEYMapSRTP"><span class="type">GstMIKEYMapSRTP</span></a></p>
+<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mikey-message-insert-cs-srtp"></a><h3>gst_mikey_message_insert_cs_srtp ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mikey_message_insert_cs_srtp (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a> *msg</code></em>,
+                                  <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> idx</code></em>,
+                                  <em class="parameter"><code>const <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMapSRTP" title="GstMIKEYMapSRTP"><span class="type">GstMIKEYMapSRTP</span></a> *map</code></em>);</pre>
+<p>Insert a Crypto Session map for SRTP in <em class="parameter"><code>msg</code></em>
+ at <em class="parameter"><code>idx</code></em>
+</p>
+<p>When <em class="parameter"><code>idx</code></em>
+ is -1, the policy will be appended.</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.10.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>msg</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>idx</p></td>
+<td class="parameter_description"><p>the index to insert at</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>map</p></td>
+<td class="parameter_description"><p>the map info</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.10.7"></a><h4>Returns</h4>
+<p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> on success</p>
+<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mikey-message-remove-cs-srtp"></a><h3>gst_mikey_message_remove_cs_srtp ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mikey_message_remove_cs_srtp (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a> *msg</code></em>,
+                                  <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> idx</code></em>);</pre>
+<p>Remove the SRTP policy at <em class="parameter"><code>idx</code></em>
+.</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.11.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>msg</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>idx</p></td>
+<td class="parameter_description"><p>the index to remove</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.11.6"></a><h4>Returns</h4>
+<p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> on success</p>
+<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mikey-message-replace-cs-srtp"></a><h3>gst_mikey_message_replace_cs_srtp ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mikey_message_replace_cs_srtp (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a> *msg</code></em>,
+                                   <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> idx</code></em>,
+                                   <em class="parameter"><code>const <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMapSRTP" title="GstMIKEYMapSRTP"><span class="type">GstMIKEYMapSRTP</span></a> *map</code></em>);</pre>
+<p>Replace a Crypto Session map for SRTP in <em class="parameter"><code>msg</code></em>
+ at <em class="parameter"><code>idx</code></em>
+ with <em class="parameter"><code>map</code></em>
+.</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.12.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>msg</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>idx</p></td>
+<td class="parameter_description"><p>the index to insert at</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>map</p></td>
+<td class="parameter_description"><p>the map info</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.12.6"></a><h4>Returns</h4>
+<p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> on success</p>
+<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mikey-message-add-cs-srtp"></a><h3>gst_mikey_message_add_cs_srtp ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mikey_message_add_cs_srtp (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a> *msg</code></em>,
+                               <em class="parameter"><code><span class="type">guint8</span> policy</code></em>,
+                               <em class="parameter"><code><span class="type">guint32</span> ssrc</code></em>,
+                               <em class="parameter"><code><span class="type">guint32</span> roc</code></em>);</pre>
+<p>Add a Crypto policy for SRTP to <em class="parameter"><code>msg</code></em>
+.</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.13.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>msg</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>policy</p></td>
+<td class="parameter_description"><p>The security policy applied for the stream with <em class="parameter"><code>ssrc</code></em>
+</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>ssrc</p></td>
+<td class="parameter_description"><p>the SSRC that must be used for the stream</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>roc</p></td>
+<td class="parameter_description"><p>current rollover counter</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.13.6"></a><h4>Returns</h4>
+<p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> on success</p>
+<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mikey-message-get-n-payloads"></a><h3>gst_mikey_message_get_n_payloads ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
+gst_mikey_message_get_n_payloads (<em class="parameter"><code>const <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a> *msg</code></em>);</pre>
+<p>Get the number of payloads in <em class="parameter"><code>msg</code></em>
+.</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.14.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>msg</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.14.6"></a><h4>Returns</h4>
+<p> the number of payloads in <em class="parameter"><code>msg</code></em>
+</p>
+<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mikey-message-get-payload"></a><h3>gst_mikey_message_get_payload ()</h3>
+<pre class="programlisting">const <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="returnvalue">GstMIKEYPayload</span></a> *
+gst_mikey_message_get_payload (<em class="parameter"><code>const <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a> *msg</code></em>,
+                               <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> idx</code></em>);</pre>
+<p>Get the <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a> at <em class="parameter"><code>idx</code></em>
+ in <em class="parameter"><code>msg</code></em>
+</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.15.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>msg</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>idx</p></td>
+<td class="parameter_description"><p>an index</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.15.6"></a><h4>Returns</h4>
+<p> the <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a> at <em class="parameter"><code>idx</code></em>
+</p>
+<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mikey-message-find-payload"></a><h3>gst_mikey_message_find_payload ()</h3>
+<pre class="programlisting">const <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="returnvalue">GstMIKEYPayload</span></a> *
+gst_mikey_message_find_payload (<em class="parameter"><code>const <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a> *msg</code></em>,
+                                <em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadType" title="enum GstMIKEYPayloadType"><span class="type">GstMIKEYPayloadType</span></a> type</code></em>,
+                                <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> nth</code></em>);</pre>
+<p>Find the <em class="parameter"><code>nth</code></em>
+ occurence of the payload with <em class="parameter"><code>type</code></em>
+ in <em class="parameter"><code>msg</code></em>
+.</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.16.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>msg</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadType" title="enum GstMIKEYPayloadType"><span class="type">GstMIKEYPayloadType</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>nth</p></td>
+<td class="parameter_description"><p>payload to find</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.16.6"></a><h4>Returns</h4>
+<p> the <em class="parameter"><code>nth</code></em>
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a> of <em class="parameter"><code>type</code></em>
+.</p>
+<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mikey-message-insert-payload"></a><h3>gst_mikey_message_insert_payload ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mikey_message_insert_payload (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a> *msg</code></em>,
+                                  <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> idx</code></em>,
+                                  <em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a> *payload</code></em>);</pre>
+<p>Insert the <em class="parameter"><code>payload</code></em>
+ at index <em class="parameter"><code>idx</code></em>
+ in <em class="parameter"><code>msg</code></em>
+. If <em class="parameter"><code>idx</code></em>
+ is -1, the payload
+will be appended to <em class="parameter"><code>msg</code></em>
+.</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.17.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>msg</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>idx</p></td>
+<td class="parameter_description"><p>an index</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>payload</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.17.6"></a><h4>Returns</h4>
+<p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> on success</p>
+<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mikey-message-remove-payload"></a><h3>gst_mikey_message_remove_payload ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mikey_message_remove_payload (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a> *msg</code></em>,
+                                  <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> idx</code></em>);</pre>
+<p>Remove the payload in <em class="parameter"><code>msg</code></em>
+ at <em class="parameter"><code>idx</code></em>
+</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.18.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>msg</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>idx</p></td>
+<td class="parameter_description"><p>an index</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.18.6"></a><h4>Returns</h4>
+<p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> on success</p>
+<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mikey-message-replace-payload"></a><h3>gst_mikey_message_replace_payload ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mikey_message_replace_payload (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a> *msg</code></em>,
+                                   <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> idx</code></em>,
+                                   <em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a> *payload</code></em>);</pre>
+<p>Replace the payload at <em class="parameter"><code>idx</code></em>
+ in <em class="parameter"><code>msg</code></em>
+ with <em class="parameter"><code>payload</code></em>
+.</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.19.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>msg</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>idx</p></td>
+<td class="parameter_description"><p>an index</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>payload</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.19.6"></a><h4>Returns</h4>
+<p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> on success</p>
+<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mikey-message-add-payload"></a><h3>gst_mikey_message_add_payload ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mikey_message_add_payload (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a> *msg</code></em>,
+                               <em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a> *payload</code></em>);</pre>
+<p>Add a new payload to <em class="parameter"><code>msg</code></em>
+.</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.20.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>msg</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>payload</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.20.6"></a><h4>Returns</h4>
+<p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> on success</p>
+<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMIKEYPayloadClearFunc"></a><h3>GstMIKEYPayloadClearFunc ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+<span class="c_punctuation">(</span>*GstMIKEYPayloadClearFunc<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a> *payload</code></em>);</pre>
+<p>Function used to clear a payload</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.21.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>payload</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMIKEYPayloadCopyFunc"></a><h3>GstMIKEYPayloadCopyFunc ()</h3>
+<pre class="programlisting"><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="returnvalue">GstMIKEYPayload</span></a> *
+<span class="c_punctuation">(</span>*GstMIKEYPayloadCopyFunc<span class="c_punctuation">)</span> (<em class="parameter"><code>const <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a> *payload</code></em>);</pre>
+<p>Function used to copy a payload</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.22.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>payload</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mikey-payload-new"></a><h3>gst_mikey_payload_new ()</h3>
+<pre class="programlisting"><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="returnvalue">GstMIKEYPayload</span></a> *
+gst_mikey_payload_new (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadType" title="enum GstMIKEYPayloadType"><span class="type">GstMIKEYPayloadType</span></a> type</code></em>);</pre>
+<p>Make a new <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a> with <em class="parameter"><code>type</code></em>
+.</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.23.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadType" title="enum GstMIKEYPayloadType"><span class="type">GstMIKEYPayloadType</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.23.6"></a><h4>Returns</h4>
+<p> a new <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a> or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> on failure.</p>
+<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mikey-payload-copy"></a><h3>gst_mikey_payload_copy ()</h3>
+<pre class="programlisting"><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="returnvalue">GstMIKEYPayload</span></a> *
+gst_mikey_payload_copy (<em class="parameter"><code>const <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a> *payload</code></em>);</pre>
+<p>Copy <em class="parameter"><code>payload</code></em>
+.</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.24.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>payload</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.24.6"></a><h4>Returns</h4>
+<p> a new <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a> that is a copy of <em class="parameter"><code>payload</code></em>
+</p>
+<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mikey-payload-free"></a><h3>gst_mikey_payload_free ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mikey_payload_free (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a> *payload</code></em>);</pre>
+<p>Free <em class="parameter"><code>payload</code></em>
+</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.25.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>payload</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.25.6"></a><h4>Returns</h4>
+<p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> on success</p>
+<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mikey-payload-kemac-set"></a><h3>gst_mikey_payload_kemac_set ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mikey_payload_kemac_set (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a> *payload</code></em>,
+                             <em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYEncAlg" title="enum GstMIKEYEncAlg"><span class="type">GstMIKEYEncAlg</span></a> enc_alg</code></em>,
+                             <em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMacAlg" title="enum GstMIKEYMacAlg"><span class="type">GstMIKEYMacAlg</span></a> mac_alg</code></em>);</pre>
+<p>Set the KEMAC parameters. <em class="parameter"><code>payload</code></em>
+ should point to a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GST-MIKEY-PT-KEMAC:CAPS"><span class="type">GST_MIKEY_PT_KEMAC</span></a>
+payload.</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.26.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>payload</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>enc_alg</p></td>
+<td class="parameter_description"><p>the <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYEncAlg" title="enum GstMIKEYEncAlg"><span class="type">GstMIKEYEncAlg</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>mac_alg</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMacAlg" title="enum GstMIKEYMacAlg"><span class="type">GstMIKEYMacAlg</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.26.6"></a><h4>Returns</h4>
+<p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> on success</p>
+<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mikey-payload-pke-set"></a><h3>gst_mikey_payload_pke_set ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mikey_payload_pke_set (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a> *payload</code></em>,
+                           <em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYCacheType" title="enum GstMIKEYCacheType"><span class="type">GstMIKEYCacheType</span></a> C</code></em>,
+                           <em class="parameter"><code><span class="type">guint16</span> data_len</code></em>,
+                           <em class="parameter"><code>const <span class="type">guint8</span> *data</code></em>);</pre>
+<p>Set the PKE values in <em class="parameter"><code>payload</code></em>
+. <em class="parameter"><code>payload</code></em>
+ must be of type
+<a class="link" href="gst-plugins-base-libs-gstmikey.html#GST-MIKEY-PT-PKE:CAPS"><span class="type">GST_MIKEY_PT_PKE</span></a>.</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.27.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>payload</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>C</p></td>
+<td class="parameter_description"><p>envelope key cache indicator</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>data_len</p></td>
+<td class="parameter_description"><p>the length of <em class="parameter"><code>data</code></em>
+</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the encrypted envelope key</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.27.6"></a><h4>Returns</h4>
+<p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> on success</p>
+<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mikey-message-add-pke"></a><h3>gst_mikey_message_add_pke ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mikey_message_add_pke (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a> *msg</code></em>,
+                           <em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYCacheType" title="enum GstMIKEYCacheType"><span class="type">GstMIKEYCacheType</span></a> C</code></em>,
+                           <em class="parameter"><code><span class="type">guint16</span> data_len</code></em>,
+                           <em class="parameter"><code>const <span class="type">guint8</span> *data</code></em>);</pre>
+<p>Add a new PKE payload to <em class="parameter"><code>msg</code></em>
+ with the given parameters.</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.28.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>msg</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>C</p></td>
+<td class="parameter_description"><p>envelope key cache indicator</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>data_len</p></td>
+<td class="parameter_description"><p>the length of <em class="parameter"><code>data</code></em>
+</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the encrypted envelope key</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.28.6"></a><h4>Returns</h4>
+<p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> on success</p>
+<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mikey-payload-t-set"></a><h3>gst_mikey_payload_t_set ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mikey_payload_t_set (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a> *payload</code></em>,
+                         <em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYTSType" title="enum GstMIKEYTSType"><span class="type">GstMIKEYTSType</span></a> type</code></em>,
+                         <em class="parameter"><code>const <span class="type">guint8</span> *ts_value</code></em>);</pre>
+<p>Set the timestamp in a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GST-MIKEY-PT-T:CAPS"><span class="type">GST_MIKEY_PT_T</span></a> <em class="parameter"><code>payload</code></em>
+.</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.29.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>payload</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYTSType" title="enum GstMIKEYTSType"><span class="type">GstMIKEYTSType</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>ts_value</p></td>
+<td class="parameter_description"><p>the timestamp value</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.29.6"></a><h4>Returns</h4>
+<p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> on success</p>
+<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mikey-message-add-t"></a><h3>gst_mikey_message_add_t ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mikey_message_add_t (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a> *msg</code></em>,
+                         <em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYTSType" title="enum GstMIKEYTSType"><span class="type">GstMIKEYTSType</span></a> type</code></em>,
+                         <em class="parameter"><code>const <span class="type">guint8</span> *ts_value</code></em>);</pre>
+<p>Add a new T payload to <em class="parameter"><code>msg</code></em>
+ with the given parameters.</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.30.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>msg</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>specifies the timestamp type used</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>ts_value</p></td>
+<td class="parameter_description"><p>The timestamp value of the specified <em class="parameter"><code>type</code></em>
+</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.30.6"></a><h4>Returns</h4>
+<p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> on success</p>
+<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mikey-message-add-t-now-ntp-utc"></a><h3>gst_mikey_message_add_t_now_ntp_utc ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mikey_message_add_t_now_ntp_utc (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a> *msg</code></em>);</pre>
+<p>Add a new T payload to <em class="parameter"><code>msg</code></em>
+ that contains the current time
+in NTP-UTC format.</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.31.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>msg</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.31.6"></a><h4>Returns</h4>
+<p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> on success</p>
+<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mikey-payload-rand-set"></a><h3>gst_mikey_payload_rand_set ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mikey_payload_rand_set (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a> *payload</code></em>,
+                            <em class="parameter"><code><span class="type">guint8</span> len</code></em>,
+                            <em class="parameter"><code>const <span class="type">guint8</span> *rand</code></em>);</pre>
+<p>Set the random values in a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GST-MIKEY-PT-RAND:CAPS"><span class="type">GST_MIKEY_PT_RAND</span></a> <em class="parameter"><code>payload</code></em>
+.</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.32.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>payload</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>len</p></td>
+<td class="parameter_description"><p>the length of <em class="parameter"><code>rand</code></em>
+</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>rand</p></td>
+<td class="parameter_description"><p>random values</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.32.6"></a><h4>Returns</h4>
+<p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> on success</p>
+<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mikey-message-add-rand"></a><h3>gst_mikey_message_add_rand ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mikey_message_add_rand (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a> *msg</code></em>,
+                            <em class="parameter"><code><span class="type">guint8</span> len</code></em>,
+                            <em class="parameter"><code>const <span class="type">guint8</span> *rand</code></em>);</pre>
+<p>Add a new RAND payload to <em class="parameter"><code>msg</code></em>
+ with the given parameters.</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.33.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>msg</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>len</p></td>
+<td class="parameter_description"><p>the length of <em class="parameter"><code>rand</code></em>
+</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>rand</p></td>
+<td class="parameter_description"><p>random data</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.33.6"></a><h4>Returns</h4>
+<p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> on success</p>
+<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mikey-message-add-rand-len"></a><h3>gst_mikey_message_add_rand_len ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mikey_message_add_rand_len (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a> *msg</code></em>,
+                                <em class="parameter"><code><span class="type">guint8</span> len</code></em>);</pre>
+<p>Add a new RAND payload to <em class="parameter"><code>msg</code></em>
+ with <em class="parameter"><code>len</code></em>
+ random bytes.</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.34.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>msg</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage" title="struct GstMIKEYMessage"><span class="type">GstMIKEYMessage</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>len</p></td>
+<td class="parameter_description"><p>length</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.34.6"></a><h4>Returns</h4>
+<p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> on success</p>
+<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mikey-payload-sp-set"></a><h3>gst_mikey_payload_sp_set ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mikey_payload_sp_set (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a> *payload</code></em>,
+                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> policy</code></em>,
+                          <em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYSecProto" title="enum GstMIKEYSecProto"><span class="type">GstMIKEYSecProto</span></a> proto</code></em>);</pre>
+<p>Set the Security Policy parameters for <em class="parameter"><code>payload</code></em>
+.</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.35.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>payload</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>policy</p></td>
+<td class="parameter_description"><p>the policy number</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>proto</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYSecProto" title="enum GstMIKEYSecProto"><span class="type">GstMIKEYSecProto</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.35.6"></a><h4>Returns</h4>
+<p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> on success</p>
+<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mikey-payload-sp-get-n-params"></a><h3>gst_mikey_payload_sp_get_n_params ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
+gst_mikey_payload_sp_get_n_params (<em class="parameter"><code>const <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a> *payload</code></em>);</pre>
+<p>Get the number of security policy parameters in a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GST-MIKEY-PT-SP:CAPS"><span class="type">GST_MIKEY_PT_SP</span></a>
+<em class="parameter"><code>payload</code></em>
+.</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.36.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>payload</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.36.6"></a><h4>Returns</h4>
+<p> the number of parameters in <em class="parameter"><code>payload</code></em>
+</p>
+<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mikey-payload-sp-get-param"></a><h3>gst_mikey_payload_sp_get_param ()</h3>
+<pre class="programlisting">const <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadSPParam" title="GstMIKEYPayloadSPParam"><span class="returnvalue">GstMIKEYPayloadSPParam</span></a> *
+gst_mikey_payload_sp_get_param (<em class="parameter"><code>const <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a> *payload</code></em>,
+                                <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> idx</code></em>);</pre>
+<p>Get the Security Policy parameter in a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GST-MIKEY-PT-SP:CAPS"><span class="type">GST_MIKEY_PT_SP</span></a> <em class="parameter"><code>payload</code></em>
+
+at <em class="parameter"><code>idx</code></em>
+.</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.37.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>payload</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>idx</p></td>
+<td class="parameter_description"><p>an index</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.37.6"></a><h4>Returns</h4>
+<p> the <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadSPParam" title="GstMIKEYPayloadSPParam"><span class="type">GstMIKEYPayloadSPParam</span></a> at <em class="parameter"><code>idx</code></em>
+in <em class="parameter"><code>payload</code></em>
+</p>
+<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mikey-payload-sp-add-param"></a><h3>gst_mikey_payload_sp_add_param ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mikey_payload_sp_add_param (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a> *payload</code></em>,
+                                <em class="parameter"><code><span class="type">guint8</span> type</code></em>,
+                                <em class="parameter"><code><span class="type">guint8</span> len</code></em>,
+                                <em class="parameter"><code>const <span class="type">guint8</span> *val</code></em>);</pre>
+<p>Add a new parameter to the <a class="link" href="gst-plugins-base-libs-gstmikey.html#GST-MIKEY-PT-SP:CAPS"><span class="type">GST_MIKEY_PT_SP</span></a> <em class="parameter"><code>payload</code></em>
+ with <em class="parameter"><code>type</code></em>
+, <em class="parameter"><code>len</code></em>
+
+and <em class="parameter"><code>val</code></em>
+.</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.38.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>payload</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>a type</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>len</p></td>
+<td class="parameter_description"><p>a length</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>val</p></td>
+<td class="parameter_description"><p><em class="parameter"><code>len</code></em>
+bytes of data</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.38.6"></a><h4>Returns</h4>
+<p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> on success</p>
+<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mikey-payload-sp-remove-param"></a><h3>gst_mikey_payload_sp_remove_param ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mikey_payload_sp_remove_param (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a> *payload</code></em>,
+                                   <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> idx</code></em>);</pre>
+<p>Remove the Security Policy parameters from a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GST-MIKEY-PT-SP:CAPS"><span class="type">GST_MIKEY_PT_SP</span></a>
+<em class="parameter"><code>payload</code></em>
+ at <em class="parameter"><code>idx</code></em>
+.</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.39.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>payload</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>idx</p></td>
+<td class="parameter_description"><p>an index</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.12.3.8.39.6"></a><h4>Returns</h4>
+<p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> on success</p>
+<p></p>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-base-libs-gstmikey.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GST-MIKEY-VERSION:CAPS"></a><h3>GST_MIKEY_VERSION</h3>
+<pre class="programlisting">#define GST_MIKEY_VERSION 1
+</pre>
+<p>The supported MIKEY version 1.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMIKEYType"></a><h3>enum GstMIKEYType</h3>
+<p>Different MIKEY data types.</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.9.3.4"></a><h4>Members</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-TYPE-INVALID:CAPS"></a>GST_MIKEY_TYPE_INVALID</p></td>
+<td class="enum_member_description">
+<p>Invalid type</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-TYPE-PSK-INIT:CAPS"></a>GST_MIKEY_TYPE_PSK_INIT</p></td>
+<td class="enum_member_description">
+<p>Initiator's pre-shared key message</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-TYPE-PSK-VERIFY:CAPS"></a>GST_MIKEY_TYPE_PSK_VERIFY</p></td>
+<td class="enum_member_description">
+<p>Verification message of a Pre-shared key message</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-TYPE-PK-INIT:CAPS"></a>GST_MIKEY_TYPE_PK_INIT</p></td>
+<td class="enum_member_description">
+<p>Initiator's public-key transport message</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-TYPE-PK-VERIFY:CAPS"></a>GST_MIKEY_TYPE_PK_VERIFY</p></td>
+<td class="enum_member_description">
+<p>Verification message of a public-key message</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-TYPE-DH-INIT:CAPS"></a>GST_MIKEY_TYPE_DH_INIT</p></td>
+<td class="enum_member_description">
+<p>Initiator's DH exchange message</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-TYPE-DH-RESP:CAPS"></a>GST_MIKEY_TYPE_DH_RESP</p></td>
+<td class="enum_member_description">
+<p>Responder's DH exchange message</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-TYPE-ERROR:CAPS"></a>GST_MIKEY_TYPE_ERROR</p></td>
+<td class="enum_member_description">
+<p>Error message</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMIKEYMessage"></a><h3>struct GstMIKEYMessage</h3>
+<pre class="programlisting">struct GstMIKEYMessage {
+  guint8 version;
+  GstMIKEYType type;
+  gboolean V;
+  GstMIKEYPRFFunc prf_func;
+  guint32 CSB_id;
+  GstMIKEYMapType map_type;
+  GArray *map_info;
+  GArray *payloads;
+};
+</pre>
+<p>Structure holding the information of the MIKEY message</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.9.4.5"></a><h4>Members</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="300px" class="struct_members_name">
+<col class="struct_members_description">
+<col width="200px" class="struct_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="struct_member_name"><p><span class="type">guint8</span> <em class="structfield"><code><a name="GstMIKEYMessage.version"></a>version</code></em>;</p></td>
+<td class="struct_member_description"><p>the version</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYType" title="enum GstMIKEYType"><span class="type">GstMIKEYType</span></a> <em class="structfield"><code><a name="GstMIKEYMessage.type"></a>type</code></em>;</p></td>
+<td class="struct_member_description"><p>the <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYType" title="enum GstMIKEYType"><span class="type">GstMIKEYType</span></a> message type</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> <em class="structfield"><code><a name="GstMIKEYMessage.V"></a>V</code></em>;</p></td>
+<td class="struct_member_description"><p>verify flag</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPRFFunc" title="enum GstMIKEYPRFFunc"><span class="type">GstMIKEYPRFFunc</span></a> <em class="structfield"><code><a name="GstMIKEYMessage.prf-func"></a>prf_func</code></em>;</p></td>
+<td class="struct_member_description"><p>a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPRFFunc" title="enum GstMIKEYPRFFunc"><span class="type">GstMIKEYPRFFunc</span></a></p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="GstMIKEYMessage.CSB-id"></a>CSB_id</code></em>;</p></td>
+<td class="struct_member_description"><p>Identifies the Crypto Session Bundle</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMapType" title="enum GstMIKEYMapType"><span class="type">GstMIKEYMapType</span></a> <em class="structfield"><code><a name="GstMIKEYMessage.map-type"></a>map_type</code></em>;</p></td>
+<td class="struct_member_description"><p>a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMapType" title="enum GstMIKEYMapType"><span class="type">GstMIKEYMapType</span></a></p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><a href="http://library.gnome.org/devel/glib/unstable/glib-Arrays.html#GArray"><span class="type">GArray</span></a> *<em class="structfield"><code><a name="GstMIKEYMessage.map-info"></a>map_info</code></em>;</p></td>
+<td class="struct_member_description"><p>map info array of type depending on <em class="parameter"><code>map_type</code></em>
+</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><a href="http://library.gnome.org/devel/glib/unstable/glib-Arrays.html#GArray"><span class="type">GArray</span></a> *<em class="structfield"><code><a name="GstMIKEYMessage.payloads"></a>payloads</code></em>;</p></td>
+<td class="struct_member_description"><p>the payload array of <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a></p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMIKEYPRFFunc"></a><h3>enum GstMIKEYPRFFunc</h3>
+<p>The PRF function that has been/will be used for key derivation</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.9.5.4"></a><h4>Members</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody><tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-PRF-MIKEY-1:CAPS"></a>GST_MIKEY_PRF_MIKEY_1</p></td>
+<td class="enum_member_description">
+<p>MIKEY-1 PRF function</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMIKEYMapType"></a><h3>enum GstMIKEYMapType</h3>
+<p>Specifies the method of uniquely mapping Crypto Sessions to the security
+protocol sessions.</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.9.6.4"></a><h4>Members</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody><tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-MAP-TYPE-SRTP:CAPS"></a>GST_MIKEY_MAP_TYPE_SRTP</p></td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMIKEYMapSRTP"></a><h3>GstMIKEYMapSRTP</h3>
+<pre class="programlisting">typedef struct {
+  guint8  policy;
+  guint32 ssrc;
+  guint32 roc;
+} GstMIKEYMapSRTP;
+</pre>
+<p>The Security policy Map item for SRTP</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.9.7.5"></a><h4>Members</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="300px" class="struct_members_name">
+<col class="struct_members_description">
+<col width="200px" class="struct_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="struct_member_name"><p><span class="type">guint8</span> <em class="structfield"><code><a name="GstMIKEYMapSRTP.policy"></a>policy</code></em>;</p></td>
+<td class="struct_member_description"><p>The security policy applied for the stream with <em class="parameter"><code>ssrc</code></em>
+</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="GstMIKEYMapSRTP.ssrc"></a>ssrc</code></em>;</p></td>
+<td class="struct_member_description"><p>the SSRC that must be used for the stream</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="GstMIKEYMapSRTP.roc"></a>roc</code></em>;</p></td>
+<td class="struct_member_description"><p>current rollover counter</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMIKEYPayloadType"></a><h3>enum GstMIKEYPayloadType</h3>
+<p>Different MIKEY Payload types.</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.9.8.4"></a><h4>Members</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-PT-LAST:CAPS"></a>GST_MIKEY_PT_LAST</p></td>
+<td class="enum_member_description">
+<p>Last payload</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-PT-KEMAC:CAPS"></a>GST_MIKEY_PT_KEMAC</p></td>
+<td class="enum_member_description">
+<p>Key data transport payload</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-PT-PKE:CAPS"></a>GST_MIKEY_PT_PKE</p></td>
+<td class="enum_member_description">
+<p>Envelope data payload</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-PT-DH:CAPS"></a>GST_MIKEY_PT_DH</p></td>
+<td class="enum_member_description">
+<p>DH data payload</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-PT-SIGN:CAPS"></a>GST_MIKEY_PT_SIGN</p></td>
+<td class="enum_member_description">
+<p>Signature payload</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-PT-T:CAPS"></a>GST_MIKEY_PT_T</p></td>
+<td class="enum_member_description">
+<p>Timestamp payload</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-PT-ID:CAPS"></a>GST_MIKEY_PT_ID</p></td>
+<td class="enum_member_description">
+<p>ID payload</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-PT-CERT:CAPS"></a>GST_MIKEY_PT_CERT</p></td>
+<td class="enum_member_description">
+<p>Certificate Payload</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-PT-CHASH:CAPS"></a>GST_MIKEY_PT_CHASH</p></td>
+<td class="enum_member_description">
+<p>Cert hash payload</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-PT-V:CAPS"></a>GST_MIKEY_PT_V</p></td>
+<td class="enum_member_description">
+<p>Verfication message payload</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-PT-SP:CAPS"></a>GST_MIKEY_PT_SP</p></td>
+<td class="enum_member_description">
+<p>Security Policy payload</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-PT-RAND:CAPS"></a>GST_MIKEY_PT_RAND</p></td>
+<td class="enum_member_description">
+<p>RAND payload</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-PT-ERR:CAPS"></a>GST_MIKEY_PT_ERR</p></td>
+<td class="enum_member_description">
+<p>Error payload</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-PT-KEY-DATA:CAPS"></a>GST_MIKEY_PT_KEY_DATA</p></td>
+<td class="enum_member_description">
+<p>Key data sub-payload</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-PT-GEN-EXT:CAPS"></a>GST_MIKEY_PT_GEN_EXT</p></td>
+<td class="enum_member_description">
+<p>General Extension Payload</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMIKEYPayload"></a><h3>struct GstMIKEYPayload</h3>
+<pre class="programlisting">struct GstMIKEYPayload {
+  GstMIKEYPayloadType type;
+  guint len;
+  GstMIKEYPayloadClearFunc clear_func;
+  GstMIKEYPayloadCopyFunc copy_func;
+};
+</pre>
+<p>Hold the common fields for all payloads</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.9.9.5"></a><h4>Members</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="300px" class="struct_members_name">
+<col class="struct_members_description">
+<col width="200px" class="struct_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="struct_member_name"><p><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadType" title="enum GstMIKEYPayloadType"><span class="type">GstMIKEYPayloadType</span></a> <em class="structfield"><code><a name="GstMIKEYPayload.type"></a>type</code></em>;</p></td>
+<td class="struct_member_description"><p>the payload type</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> <em class="structfield"><code><a name="GstMIKEYPayload.len"></a>len</code></em>;</p></td>
+<td class="struct_member_description"><p>length of the payload</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadClearFunc" title="GstMIKEYPayloadClearFunc ()"><span class="type">GstMIKEYPayloadClearFunc</span></a> <em class="structfield"><code><a name="GstMIKEYPayload.clear-func"></a>clear_func</code></em>;</p></td>
+<td class="struct_member_description"><p>function to clear the payload</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadCopyFunc" title="GstMIKEYPayloadCopyFunc ()"><span class="type">GstMIKEYPayloadCopyFunc</span></a> <em class="structfield"><code><a name="GstMIKEYPayload.copy-func"></a>copy_func</code></em>;</p></td>
+<td class="struct_member_description"><p>function to copy the payload</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMIKEYEncAlg"></a><h3>enum GstMIKEYEncAlg</h3>
+<p>The encryption algorithm used to encrypt the Encr data field</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.9.10.4"></a><h4>Members</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-ENC-NULL:CAPS"></a>GST_MIKEY_ENC_NULL</p></td>
+<td class="enum_member_description">
+<p>no encryption</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-ENC-AES-CM-128:CAPS"></a>GST_MIKEY_ENC_AES_CM_128</p></td>
+<td class="enum_member_description">
+<p>AES-CM using a 128-bit key</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-ENC-AES-KW-128:CAPS"></a>GST_MIKEY_ENC_AES_KW_128</p></td>
+<td class="enum_member_description">
+<p>AES Key Wrap using a 128-bit key</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMIKEYMacAlg"></a><h3>enum GstMIKEYMacAlg</h3>
+<p>Specifies the authentication algorithm used</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.9.11.4"></a><h4>Members</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-MAC-NULL:CAPS"></a>GST_MIKEY_MAC_NULL</p></td>
+<td class="enum_member_description">
+<p>no authentication</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-MAC-HMAC-SHA-1-160:CAPS"></a>GST_MIKEY_MAC_HMAC_SHA_1_160</p></td>
+<td class="enum_member_description">
+<p>HMAC-SHA-1-160</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMIKEYPayloadKEMAC"></a><h3>GstMIKEYPayloadKEMAC</h3>
+<pre class="programlisting">typedef struct {
+  GstMIKEYPayload pt;
+
+  GstMIKEYEncAlg  enc_alg;
+  GstMIKEYMacAlg  mac_alg;
+  GArray *subpayloads;
+} GstMIKEYPayloadKEMAC;
+</pre>
+<p>A structure holding the KEMAC payload</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.9.12.5"></a><h4>Members</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="300px" class="struct_members_name">
+<col class="struct_members_description">
+<col width="200px" class="struct_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="struct_member_name"><p><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a> <em class="structfield"><code><a name="GstMIKEYPayloadKEMAC.pt"></a>pt</code></em>;</p></td>
+<td class="struct_member_description"><p>the common <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a></p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYEncAlg" title="enum GstMIKEYEncAlg"><span class="type">GstMIKEYEncAlg</span></a> <em class="structfield"><code><a name="GstMIKEYPayloadKEMAC.enc-alg"></a>enc_alg</code></em>;</p></td>
+<td class="struct_member_description"><p>the <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYEncAlg" title="enum GstMIKEYEncAlg"><span class="type">GstMIKEYEncAlg</span></a></p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMacAlg" title="enum GstMIKEYMacAlg"><span class="type">GstMIKEYMacAlg</span></a> <em class="structfield"><code><a name="GstMIKEYPayloadKEMAC.mac-alg"></a>mac_alg</code></em>;</p></td>
+<td class="struct_member_description"><p>the <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYMacAlg" title="enum GstMIKEYMacAlg"><span class="type">GstMIKEYMacAlg</span></a></p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><a href="http://library.gnome.org/devel/glib/unstable/glib-Arrays.html#GArray"><span class="type">GArray</span></a> *<em class="structfield"><code><a name="GstMIKEYPayloadKEMAC.subpayloads"></a>subpayloads</code></em>;</p></td>
+<td> </td>
+<td> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMIKEYCacheType"></a><h3>enum GstMIKEYCacheType</h3>
+<p>The different cache types</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.9.13.4"></a><h4>Members</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-CACHE-NONE:CAPS"></a>GST_MIKEY_CACHE_NONE</p></td>
+<td class="enum_member_description">
+<p>The envelope key MUST NOT be cached</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-CACHE-ALWAYS:CAPS"></a>GST_MIKEY_CACHE_ALWAYS</p></td>
+<td class="enum_member_description">
+<p>The envelope key MUST be cached</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-CACHE-FOR-CSB:CAPS"></a>GST_MIKEY_CACHE_FOR_CSB</p></td>
+<td class="enum_member_description">
+<p>The envelope key MUST be cached, but only
+                          to be used for the specific CSB.</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMIKEYPayloadPKE"></a><h3>GstMIKEYPayloadPKE</h3>
+<pre class="programlisting">typedef struct {
+  GstMIKEYPayload pt;
+
+  GstMIKEYCacheType C;
+  guint16           data_len;
+  guint8           *data;
+} GstMIKEYPayloadPKE;
+</pre>
+<p>The Envelope data payload contains the encrypted envelope key that is
+used in the public-key transport to protect the data in the Key data
+transport payload.  The encryption algorithm used is implicit from
+the certificate/public key used.</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.9.14.5"></a><h4>Members</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="300px" class="struct_members_name">
+<col class="struct_members_description">
+<col width="200px" class="struct_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="struct_member_name"><p><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a> <em class="structfield"><code><a name="GstMIKEYPayloadPKE.pt"></a>pt</code></em>;</p></td>
+<td class="struct_member_description"><p>the common <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a></p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYCacheType" title="enum GstMIKEYCacheType"><span class="type">GstMIKEYCacheType</span></a> <em class="structfield"><code><a name="GstMIKEYPayloadPKE.C"></a>C</code></em>;</p></td>
+<td class="struct_member_description"><p>envelope key cache indicator</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="GstMIKEYPayloadPKE.data-len"></a>data_len</code></em>;</p></td>
+<td class="struct_member_description"><p>length of <em class="parameter"><code>data</code></em>
+</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><span class="type">guint8</span> *<em class="structfield"><code><a name="GstMIKEYPayloadPKE.data"></a>data</code></em>;</p></td>
+<td class="struct_member_description"><p>the encrypted envelope key</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMIKEYTSType"></a><h3>enum GstMIKEYTSType</h3>
+<p>Specifies the timestamp type.</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.9.15.4"></a><h4>Members</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-TS-TYPE-NTP-UTC:CAPS"></a>GST_MIKEY_TS_TYPE_NTP_UTC</p></td>
+<td class="enum_member_description">
+<p>an NTP time in UTC timezone</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-TS-TYPE-NTP:CAPS"></a>GST_MIKEY_TS_TYPE_NTP</p></td>
+<td class="enum_member_description">
+<p>an NTP time</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-TS-TYPE-COUNTER:CAPS"></a>GST_MIKEY_TS_TYPE_COUNTER</p></td>
+<td class="enum_member_description">
+<p>a counter</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMIKEYPayloadT"></a><h3>GstMIKEYPayloadT</h3>
+<pre class="programlisting">typedef struct {
+  GstMIKEYPayload pt;
+
+  GstMIKEYTSType  type;
+  guint8         *ts_value;
+} GstMIKEYPayloadT;
+</pre>
+<p>The timestamp payload carries the timestamp information</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.9.16.5"></a><h4>Members</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="300px" class="struct_members_name">
+<col class="struct_members_description">
+<col width="200px" class="struct_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="struct_member_name"><p><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a> <em class="structfield"><code><a name="GstMIKEYPayloadT.pt"></a>pt</code></em>;</p></td>
+<td class="struct_member_description"><p>the payload header</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYTSType" title="enum GstMIKEYTSType"><span class="type">GstMIKEYTSType</span></a> <em class="structfield"><code><a name="GstMIKEYPayloadT.type"></a>type</code></em>;</p></td>
+<td class="struct_member_description"><p>a <a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYTSType" title="enum GstMIKEYTSType"><span class="type">GstMIKEYTSType</span></a></p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><span class="type">guint8</span> *<em class="structfield"><code><a name="GstMIKEYPayloadT.ts-value"></a>ts_value</code></em>;</p></td>
+<td class="struct_member_description"><p>the timestamp value</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMIKEYPayloadRAND"></a><h3>GstMIKEYPayloadRAND</h3>
+<pre class="programlisting">typedef struct {
+  GstMIKEYPayload pt;
+
+  guint8  len;
+  guint8 *rand;
+} GstMIKEYPayloadRAND;
+</pre>
+<p>The RAND payload consists of a (pseudo-)random bit-string</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.9.17.5"></a><h4>Members</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="300px" class="struct_members_name">
+<col class="struct_members_description">
+<col width="200px" class="struct_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="struct_member_name"><p><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a> <em class="structfield"><code><a name="GstMIKEYPayloadRAND.pt"></a>pt</code></em>;</p></td>
+<td class="struct_member_description"><p>the payload header</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><span class="type">guint8</span> <em class="structfield"><code><a name="GstMIKEYPayloadRAND.len"></a>len</code></em>;</p></td>
+<td class="struct_member_description"><p>the length of <em class="parameter"><code>rand</code></em>
+</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><span class="type">guint8</span> *<em class="structfield"><code><a name="GstMIKEYPayloadRAND.rand"></a>rand</code></em>;</p></td>
+<td class="struct_member_description"><p>random values</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMIKEYSecProto"></a><h3>enum GstMIKEYSecProto</h3>
+<p>Specifies the security protocol</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.9.18.4"></a><h4>Members</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody><tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-SEC-PROTO-SRTP:CAPS"></a>GST_MIKEY_SEC_PROTO_SRTP</p></td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMIKEYSecSRTP"></a><h3>enum GstMIKEYSecSRTP</h3>
+<p>This policy specifies the parameters for SRTP and SRTCP</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.9.19.4"></a><h4>Members</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-SP-SRTP-ENC-ALG:CAPS"></a>GST_MIKEY_SP_SRTP_ENC_ALG</p></td>
+<td class="enum_member_description">
+<p>Encryption algorithm</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-SP-SRTP-ENC-KEY-LEN:CAPS"></a>GST_MIKEY_SP_SRTP_ENC_KEY_LEN</p></td>
+<td class="enum_member_description">
+<p>Session Encr. key length</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-SP-SRTP-AUTH-ALG:CAPS"></a>GST_MIKEY_SP_SRTP_AUTH_ALG</p></td>
+<td class="enum_member_description">
+<p>Authentication algorithm</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-SP-SRTP-AUTH-KEY-LEN:CAPS"></a>GST_MIKEY_SP_SRTP_AUTH_KEY_LEN</p></td>
+<td class="enum_member_description">
+<p>Session Auth. key length</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-SP-SRTP-SALT-KEY-LEN:CAPS"></a>GST_MIKEY_SP_SRTP_SALT_KEY_LEN</p></td>
+<td class="enum_member_description">
+<p>Session Salt key length</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-SP-SRTP-PRF:CAPS"></a>GST_MIKEY_SP_SRTP_PRF</p></td>
+<td class="enum_member_description">
+<p>SRTP Pseudo Random Function</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-SP-SRTP-KEY-DERIV-RATE:CAPS"></a>GST_MIKEY_SP_SRTP_KEY_DERIV_RATE</p></td>
+<td class="enum_member_description">
+<p>Key derivation rate</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-SP-SRTP-SRTP-ENC:CAPS"></a>GST_MIKEY_SP_SRTP_SRTP_ENC</p></td>
+<td class="enum_member_description">
+<p>SRTP encryption off/on, 0 if off, 1 if on</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-SP-SRTP-SRTCP-ENC:CAPS"></a>GST_MIKEY_SP_SRTP_SRTCP_ENC</p></td>
+<td class="enum_member_description">
+<p>SRTCP encryption off/on, 0 if off, 1 if on</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-SP-SRTP-FEC-ORDER:CAPS"></a>GST_MIKEY_SP_SRTP_FEC_ORDER</p></td>
+<td class="enum_member_description">
+<p>sender's FEC order</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-SP-SRTP-SRTP-AUTH:CAPS"></a>GST_MIKEY_SP_SRTP_SRTP_AUTH</p></td>
+<td class="enum_member_description">
+<p>SRTP authentication off/on, 0 if off, 1 if on</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-SP-SRTP-AUTH-TAG-LEN:CAPS"></a>GST_MIKEY_SP_SRTP_AUTH_TAG_LEN</p></td>
+<td class="enum_member_description">
+<p>Authentication tag length</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIKEY-SP-SRTP-SRTP-PREFIX-LEN:CAPS"></a>GST_MIKEY_SP_SRTP_SRTP_PREFIX_LEN</p></td>
+<td class="enum_member_description">
+<p>SRTP prefix length</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMIKEYPayloadSP"></a><h3>GstMIKEYPayloadSP</h3>
+<pre class="programlisting">typedef struct {
+  GstMIKEYPayload pt;
+
+  guint policy;
+  GstMIKEYSecProto proto;
+  GArray *params;
+} GstMIKEYPayloadSP;
+</pre>
+<p>The Security Policy payload defines a set of policies that apply to a
+specific security protocol</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.9.20.5"></a><h4>Members</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="300px" class="struct_members_name">
+<col class="struct_members_description">
+<col width="200px" class="struct_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="struct_member_name"><p><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload" title="struct GstMIKEYPayload"><span class="type">GstMIKEYPayload</span></a> <em class="structfield"><code><a name="GstMIKEYPayloadSP.pt"></a>pt</code></em>;</p></td>
+<td class="struct_member_description"><p>the payload header</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> <em class="structfield"><code><a name="GstMIKEYPayloadSP.policy"></a>policy</code></em>;</p></td>
+<td class="struct_member_description"><p>the policy number</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><a class="link" href="gst-plugins-base-libs-gstmikey.html#GstMIKEYSecProto" title="enum GstMIKEYSecProto"><span class="type">GstMIKEYSecProto</span></a> <em class="structfield"><code><a name="GstMIKEYPayloadSP.proto"></a>proto</code></em>;</p></td>
+<td class="struct_member_description"><p>the security protocol</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><a href="http://library.gnome.org/devel/glib/unstable/glib-Arrays.html#GArray"><span class="type">GArray</span></a> *<em class="structfield"><code><a name="GstMIKEYPayloadSP.params"></a>params</code></em>;</p></td>
+<td class="struct_member_description"><p>array of <span class="type">GstMIKEYPayloadPSParam</span></p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMIKEYPayloadSPParam"></a><h3>GstMIKEYPayloadSPParam</h3>
+<pre class="programlisting">typedef struct {
+  guint8  type;
+  guint8  len;
+  guint8 *val;
+} GstMIKEYPayloadSPParam;
+</pre>
+<p>A Type/Length/Value field for security paramaters</p>
+<div class="refsect3">
+<a name="id-1.2.12.3.9.21.5"></a><h4>Members</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="300px" class="struct_members_name">
+<col class="struct_members_description">
+<col width="200px" class="struct_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="struct_member_name"><p><span class="type">guint8</span> <em class="structfield"><code><a name="GstMIKEYPayloadSPParam.type"></a>type</code></em>;</p></td>
+<td class="struct_member_description"><p>specifies the type of the parameter</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><span class="type">guint8</span> <em class="structfield"><code><a name="GstMIKEYPayloadSPParam.len"></a>len</code></em>;</p></td>
+<td class="struct_member_description"><p>specifies the length of <em class="parameter"><code>val</code></em>
+</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><span class="type">guint8</span> *<em class="structfield"><code><a name="GstMIKEYPayloadSPParam.val"></a>val</code></em>;</p></td>
+<td class="struct_member_description"><p>specifies the value of the parameter</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.20</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/libs/html/gst-plugins-base-libs-gstpbutils.html b/docs/libs/html/gst-plugins-base-libs-gstpbutils.html
index 62e58e2..35dec26 100644
--- a/docs/libs/html/gst-plugins-base-libs-gstpbutils.html
+++ b/docs/libs/html/gst-plugins-base-libs-gstpbutils.html
@@ -62,7 +62,7 @@
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gstpbutils.description"></a><h2>Description</h2>
 <div class="refsect2">
-<a name="id-1.2.13.3.6.2"></a><h3>Linking to this library</h3>
+<a name="id-1.2.14.3.6.2"></a><h3>Linking to this library</h3>
 <p>
 libgstpbutils is a general utility library for plugins and applications.
 It currently provides the
diff --git a/docs/libs/html/gst-plugins-base-libs-gstpbutilscodecutils.html b/docs/libs/html/gst-plugins-base-libs-gstpbutilscodecutils.html
index 5e16010..13e41fd 100644
--- a/docs/libs/html/gst-plugins-base-libs-gstpbutilscodecutils.html
+++ b/docs/libs/html/gst-plugins-base-libs-gstpbutilscodecutils.html
@@ -112,6 +112,43 @@
 <td class="function_type">const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
 </td>
 <td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-h265-get-profile" title="gst_codec_utils_h265_get_profile ()">gst_codec_utils_h265_get_profile</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-h265-get-tier" title="gst_codec_utils_h265_get_tier ()">gst_codec_utils_h265_get_tier</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-h265-get-level" title="gst_codec_utils_h265_get_level ()">gst_codec_utils_h265_get_level</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">guint8</span>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-h265-get-level-idc" title="gst_codec_utils_h265_get_level_idc ()">gst_codec_utils_h265_get_level_idc</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-h265-caps-set-level-tier-and-profile" title="gst_codec_utils_h265_caps_set_level_tier_and_profile ()">gst_codec_utils_h265_caps_set_level_tier_and_profile</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
+</td>
+<td class="function_name">
 <a class="link" href="gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-mpeg4video-get-profile" title="gst_codec_utils_mpeg4video_get_profile ()">gst_codec_utils_mpeg4video_get_profile</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
@@ -146,7 +183,7 @@
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gstpbutilscodecutils.description"></a><h2>Description</h2>
 <div class="refsect2">
-<a name="id-1.2.13.5.6.2"></a><p>
+<a name="id-1.2.14.5.6.2"></a><p>
 Provides codec-specific ulility functions such as functions to provide the
 codec profile and level in human-readable string form from header data.
 </p>
@@ -162,7 +199,7 @@
 <p>Translates the sample rate index found in AAC headers to the actual sample
 rate.</p>
 <div class="refsect3">
-<a name="id-1.2.13.5.7.2.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.5.7.2.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -178,7 +215,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.5.7.2.6"></a><h4>Returns</h4>
+<a name="id-1.2.14.5.7.2.6"></a><h4>Returns</h4>
 <p> The sample rate if <em class="parameter"><code>sr_idx</code></em>
 is valid, 0 otherwise.</p>
 <p></p>
@@ -192,7 +229,7 @@
                                (<em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> rate</code></em>);</pre>
 <p>Translates the sample rate to the index corresponding to it in AAC spec.</p>
 <div class="refsect3">
-<a name="id-1.2.13.5.7.3.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.5.7.3.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -207,7 +244,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.5.7.3.6"></a><h4>Returns</h4>
+<a name="id-1.2.14.5.7.3.6"></a><h4>Returns</h4>
 <p> The AAC index for this sample rate, -1 if the rate is not a
 valid AAC sample rate.</p>
 <p></p>
@@ -227,7 +264,7 @@
 HE-AAC support has not yet been implemented.
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.5.7.4.6"></a><h4>Parameters</h4>
+<a name="id-1.2.14.5.7.4.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -252,7 +289,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.5.7.4.7"></a><h4>Returns</h4>
+<a name="id-1.2.14.5.7.4.7"></a><h4>Returns</h4>
 <p> The profile as a const string and <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if the profile could not be
 determined.</p>
 <p></p>
@@ -287,7 +324,7 @@
 HE-AAC support has not yet been implemented.
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.5.7.5.8"></a><h4>Parameters</h4>
+<a name="id-1.2.14.5.7.5.8"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -311,7 +348,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.5.7.5.9"></a><h4>Returns</h4>
+<a name="id-1.2.14.5.7.5.9"></a><h4>Returns</h4>
 <p> The level as a const string and <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if the level could not be
 determined.</p>
 <p></p>
@@ -335,7 +372,7 @@
 If mpegversion is 4, the "base-profile" field is also set in <em class="parameter"><code>caps</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.13.5.7.6.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.5.7.6.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -365,7 +402,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.5.7.6.6"></a><h4>Returns</h4>
+<a name="id-1.2.14.5.7.6.6"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the level and profile could be set, <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
 <p></p>
 </div>
@@ -392,7 +429,7 @@
 <li class="listitem"><p>Bit 16:24 - Level indication</p></li>
 </ul></div>
 <div class="refsect3">
-<a name="id-1.2.13.5.7.7.6"></a><h4>Parameters</h4>
+<a name="id-1.2.14.5.7.7.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -415,7 +452,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.5.7.7.7"></a><h4>Returns</h4>
+<a name="id-1.2.14.5.7.7.7"></a><h4>Returns</h4>
 <p> The profile as a const string, or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if there is an error.</p>
 <p></p>
 </div>
@@ -430,7 +467,7 @@
 sequence parameter set into a string. The SPS is expected to have the
 same format as for <a class="link" href="gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-h264-get-profile" title="gst_codec_utils_h264_get_profile ()"><code class="function">gst_codec_utils_h264_get_profile()</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.2.13.5.7.8.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.5.7.8.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -453,7 +490,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.5.7.8.6"></a><h4>Returns</h4>
+<a name="id-1.2.14.5.7.8.6"></a><h4>Returns</h4>
 <p> The level as a const string, or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if there is an error.</p>
 <p></p>
 </div>
@@ -472,7 +509,7 @@
 <a class="link" href="gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-h264-get-level" title="gst_codec_utils_h264_get_level ()"><code class="function">gst_codec_utils_h264_get_level()</code></a> and <a class="link" href="gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-h264-get-profile" title="gst_codec_utils_h264_get_profile ()"><code class="function">gst_codec_utils_h264_get_profile()</code></a>
 for more details on the parameters.</p>
 <div class="refsect3">
-<a name="id-1.2.13.5.7.9.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.5.7.9.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -500,7 +537,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.5.7.9.6"></a><h4>Returns</h4>
+<a name="id-1.2.14.5.7.9.6"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the level and profile could be set, <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
 <p></p>
 </div>
@@ -512,7 +549,7 @@
 gst_codec_utils_h264_get_level_idc (<em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *level</code></em>);</pre>
 <p>Transform a level string from the caps into the level_idc</p>
 <div class="refsect3">
-<a name="id-1.2.13.5.7.10.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.5.7.10.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -527,13 +564,224 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.5.7.10.6"></a><h4>Returns</h4>
+<a name="id-1.2.14.5.7.10.6"></a><h4>Returns</h4>
 <p> the level_idc or 0 if the level is unknown</p>
 <p></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
+<a name="gst-codec-utils-h265-get-profile"></a><h3>gst_codec_utils_h265_get_profile ()</h3>
+<pre class="programlisting">const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
+gst_codec_utils_h265_get_profile (<em class="parameter"><code>const <span class="type">guint8</span> *profile_tier_level</code></em>,
+                                  <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> len</code></em>);</pre>
+<p>Converts the profile indication (general_profile_idc) in the stream's
+profile_level_tier structure into a string. The profile_tier_level is
+expected to have the following format, as defined in the H.265
+specification. The profile_tier_level is viewed as a bitstream here,
+with bit 0 being the most significant bit of the first byte.</p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem"><p>Bit 0:1   - general_profile_space</p></li>
+<li class="listitem"><p>Bit 2     - general_tier_flag</p></li>
+<li class="listitem"><p>Bit 3:7   - general_profile_idc</p></li>
+<li class="listitem"><p>Bit 8:39  - gernal_profile_compatibility_flags</p></li>
+<li class="listitem"><p>Bit 40    - general_progressive_source_flag</p></li>
+<li class="listitem"><p>Bit 41    - general_interlaced_source_flag</p></li>
+<li class="listitem"><p>Bit 42    - general_non_packed_constraint_flag</p></li>
+<li class="listitem"><p>Bit 43    - general_frame_only_constraint_flag</p></li>
+<li class="listitem"><p>Bit 44:87 - general_reserved_zero_44bits</p></li>
+<li class="listitem"><p>Bit 88:95 - general_level_idc</p></li>
+</ul></div>
+<div class="refsect3">
+<a name="id-1.2.14.5.7.11.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>profile_tier_level</p></td>
+<td class="parameter_description"><p>Pointer to the profile_tier_level
+structure for the stream.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>len</p></td>
+<td class="parameter_description"><p>Length of the data available in <em class="parameter"><code>profile_tier_level</code></em>
+</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.14.5.7.11.7"></a><h4>Returns</h4>
+<p> The profile as a const string, or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if there is an error.</p>
+<p>Since 1.4</p>
+<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-codec-utils-h265-get-tier"></a><h3>gst_codec_utils_h265_get_tier ()</h3>
+<pre class="programlisting">const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
+gst_codec_utils_h265_get_tier (<em class="parameter"><code>const <span class="type">guint8</span> *profile_tier_level</code></em>,
+                               <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> len</code></em>);</pre>
+<p>Converts the tier indication (general_tier_flag) in the stream's
+profile_tier_level structure into a string. The profile_tier_level
+is expected to have the same format as for <a class="link" href="gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-h264-get-profile" title="gst_codec_utils_h264_get_profile ()"><code class="function">gst_codec_utils_h264_get_profile()</code></a>.</p>
+<div class="refsect3">
+<a name="id-1.2.14.5.7.12.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>profile_tier_level</p></td>
+<td class="parameter_description"><p>Pointer to the profile_tier_level structure
+for the stream.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>len</p></td>
+<td class="parameter_description"><p>Length of the data available in <em class="parameter"><code>profile_tier_level</code></em>
+.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.14.5.7.12.6"></a><h4>Returns</h4>
+<p> The tier as a const string, or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if there is an error.</p>
+<p>Since 1.4</p>
+<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-codec-utils-h265-get-level"></a><h3>gst_codec_utils_h265_get_level ()</h3>
+<pre class="programlisting">const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
+gst_codec_utils_h265_get_level (<em class="parameter"><code>const <span class="type">guint8</span> *profile_tier_level</code></em>,
+                                <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> len</code></em>);</pre>
+<p>Converts the level indication (general_level_idc) in the stream's
+profile_tier_level structure into a string. The profiel_tier_level is
+expected to have the same format as for <a class="link" href="gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-h264-get-profile" title="gst_codec_utils_h264_get_profile ()"><code class="function">gst_codec_utils_h264_get_profile()</code></a>.</p>
+<div class="refsect3">
+<a name="id-1.2.14.5.7.13.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>profile_tier_level</p></td>
+<td class="parameter_description"><p>Pointer to the profile_tier_level structure
+for the stream</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>len</p></td>
+<td class="parameter_description"><p>Length of the data available in <em class="parameter"><code>profile_tier_level</code></em>
+.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.14.5.7.13.6"></a><h4>Returns</h4>
+<p> The level as a const string, or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if there is an error.</p>
+<p>Since 1.4</p>
+<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-codec-utils-h265-get-level-idc"></a><h3>gst_codec_utils_h265_get_level_idc ()</h3>
+<pre class="programlisting"><span class="returnvalue">guint8</span>
+gst_codec_utils_h265_get_level_idc (<em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *level</code></em>);</pre>
+<p>Transform a level string from the caps into the level_idc</p>
+<div class="refsect3">
+<a name="id-1.2.14.5.7.14.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>level</p></td>
+<td class="parameter_description"><p>A level string from caps</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.14.5.7.14.6"></a><h4>Returns</h4>
+<p> the level_idc or 0 if the level is unknown</p>
+<p>Since 1.4</p>
+<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-codec-utils-h265-caps-set-level-tier-and-profile"></a><h3>gst_codec_utils_h265_caps_set_level_tier_and_profile ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_codec_utils_h265_caps_set_level_tier_and_profile
+                               (<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>,
+                                <em class="parameter"><code>const <span class="type">guint8</span> *profile_tier_level</code></em>,
+                                <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> len</code></em>);</pre>
+<p>Sets the level, tier and profile in <em class="parameter"><code>caps</code></em>
+ if it can be determined from
+<em class="parameter"><code>profile_tier_level</code></em>
+. See <a class="link" href="gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-h265-get-level" title="gst_codec_utils_h265_get_level ()"><code class="function">gst_codec_utils_h265_get_level()</code></a>,
+<a class="link" href="gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-h265-get-tier" title="gst_codec_utils_h265_get_tier ()"><code class="function">gst_codec_utils_h265_get_tier()</code></a> and <a class="link" href="gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-h265-get-profile" title="gst_codec_utils_h265_get_profile ()"><code class="function">gst_codec_utils_h265_get_profile()</code></a>
+for more details on the parameters.</p>
+<div class="refsect3">
+<a name="id-1.2.14.5.7.15.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>caps</p></td>
+<td class="parameter_description"><p>the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a> to which the level, tier and profile are to be added</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>profile_tier_level</p></td>
+<td class="parameter_description"><p>Pointer to the profile_tier_level struct</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>len</p></td>
+<td class="parameter_description"><p>Length of the data available in <em class="parameter"><code>profile_tier_level</code></em>
+.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.14.5.7.15.6"></a><h4>Returns</h4>
+<p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the level, tier, profile could be set, <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
+<p>Since 1.4</p>
+<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
 <a name="gst-codec-utils-mpeg4video-get-profile"></a><h3>gst_codec_utils_mpeg4video_get_profile ()</h3>
 <pre class="programlisting">const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
 gst_codec_utils_mpeg4video_get_profile
@@ -545,7 +793,7 @@
 object sequence start code. Only the first byte
 (profile_and_level_indication) is used.</p>
 <div class="refsect3">
-<a name="id-1.2.13.5.7.11.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.5.7.16.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -568,7 +816,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.5.7.11.6"></a><h4>Returns</h4>
+<a name="id-1.2.14.5.7.16.6"></a><h4>Returns</h4>
 <p> The profile as a const string, or NULL if there is an error.</p>
 <p></p>
 </div>
@@ -585,7 +833,7 @@
 object sequence start code. Only the first byte
 (profile_and_level_indication) is used.</p>
 <div class="refsect3">
-<a name="id-1.2.13.5.7.12.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.5.7.17.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -608,7 +856,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.5.7.12.6"></a><h4>Returns</h4>
+<a name="id-1.2.14.5.7.17.6"></a><h4>Returns</h4>
 <p> The level as a const string, or NULL if there is an error.</p>
 <p></p>
 </div>
@@ -628,7 +876,7 @@
 <a class="link" href="gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-mpeg4video-get-profile" title="gst_codec_utils_mpeg4video_get_profile ()"><code class="function">gst_codec_utils_mpeg4video_get_profile()</code></a> for more details on the
 parameters.</p>
 <div class="refsect3">
-<a name="id-1.2.13.5.7.13.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.5.7.18.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -656,7 +904,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.5.7.13.6"></a><h4>Returns</h4>
+<a name="id-1.2.14.5.7.18.6"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the level and profile could be set, <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
 <p></p>
 </div>
diff --git a/docs/libs/html/gst-plugins-base-libs-gstpbutilsdescriptions.html b/docs/libs/html/gst-plugins-base-libs-gstpbutilsdescriptions.html
index 349f8e4..33f4bde 100644
--- a/docs/libs/html/gst-plugins-base-libs-gstpbutilsdescriptions.html
+++ b/docs/libs/html/gst-plugins-base-libs-gstpbutilsdescriptions.html
@@ -113,7 +113,7 @@
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gstpbutilsdescriptions.description"></a><h2>Description</h2>
 <div class="refsect2">
-<a name="id-1.2.13.6.6.2"></a><p>
+<a name="id-1.2.14.6.6.2"></a><p>
 The above functions provide human-readable strings for media formats
 and decoder/demuxer/depayloader/encoder/muxer/payloader elements for use
 in error dialogs or other messages shown to users.
@@ -140,7 +140,7 @@
 use <a class="link" href="gst-plugins-base-libs-gstpbutilsmissingplugins.html#gst-missing-plugin-message-get-description" title="gst_missing_plugin_message_get_description ()"><code class="function">gst_missing_plugin_message_get_description()</code></a> to get a description of
 a missing feature from a missing-plugin message.</p>
 <div class="refsect3">
-<a name="id-1.2.13.6.7.2.6"></a><h4>Parameters</h4>
+<a name="id-1.2.14.6.7.2.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -155,7 +155,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.6.7.2.7"></a><h4>Returns</h4>
+<a name="id-1.2.14.6.7.2.7"></a><h4>Returns</h4>
 <p> a newly-allocated description string, or NULL on error. Free
 string with <a href="http://library.gnome.org/devel/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> when not needed any longer.</p>
 <p></p>
@@ -175,7 +175,7 @@
 use <a class="link" href="gst-plugins-base-libs-gstpbutilsmissingplugins.html#gst-missing-plugin-message-get-description" title="gst_missing_plugin_message_get_description ()"><code class="function">gst_missing_plugin_message_get_description()</code></a> to get a description of
 a missing feature from a missing-plugin message.</p>
 <div class="refsect3">
-<a name="id-1.2.13.6.7.3.6"></a><h4>Parameters</h4>
+<a name="id-1.2.14.6.7.3.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -190,7 +190,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.6.7.3.7"></a><h4>Returns</h4>
+<a name="id-1.2.14.6.7.3.7"></a><h4>Returns</h4>
 <p> a newly-allocated description string, or NULL on error. Free
 string with <a href="http://library.gnome.org/devel/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> when not needed any longer.</p>
 <p></p>
@@ -211,7 +211,7 @@
 use <a class="link" href="gst-plugins-base-libs-gstpbutilsmissingplugins.html#gst-missing-plugin-message-get-description" title="gst_missing_plugin_message_get_description ()"><code class="function">gst_missing_plugin_message_get_description()</code></a> to get a description of
 a missing feature from a missing-plugin message.</p>
 <div class="refsect3">
-<a name="id-1.2.13.6.7.4.6"></a><h4>Parameters</h4>
+<a name="id-1.2.14.6.7.4.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -226,7 +226,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.6.7.4.7"></a><h4>Returns</h4>
+<a name="id-1.2.14.6.7.4.7"></a><h4>Returns</h4>
 <p> a newly-allocated description string, or NULL on error. Free
 string with <a href="http://library.gnome.org/devel/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> when not needed any longer.</p>
 <p></p>
@@ -247,7 +247,7 @@
 use <a class="link" href="gst-plugins-base-libs-gstpbutilsmissingplugins.html#gst-missing-plugin-message-get-description" title="gst_missing_plugin_message_get_description ()"><code class="function">gst_missing_plugin_message_get_description()</code></a> to get a description of
 a missing feature from a missing-plugin message.</p>
 <div class="refsect3">
-<a name="id-1.2.13.6.7.5.6"></a><h4>Parameters</h4>
+<a name="id-1.2.14.6.7.5.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -262,7 +262,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.6.7.5.7"></a><h4>Returns</h4>
+<a name="id-1.2.14.6.7.5.7"></a><h4>Returns</h4>
 <p> a newly-allocated description string, or NULL on error. Free
 string with <a href="http://library.gnome.org/devel/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> when not needed any longer.</p>
 <p></p>
@@ -281,7 +281,7 @@
 use <a class="link" href="gst-plugins-base-libs-gstpbutilsmissingplugins.html#gst-missing-plugin-message-get-description" title="gst_missing_plugin_message_get_description ()"><code class="function">gst_missing_plugin_message_get_description()</code></a> to get a description of
 a missing feature from a missing-plugin message.</p>
 <div class="refsect3">
-<a name="id-1.2.13.6.7.6.6"></a><h4>Parameters</h4>
+<a name="id-1.2.14.6.7.6.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -296,7 +296,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.6.7.6.7"></a><h4>Returns</h4>
+<a name="id-1.2.14.6.7.6.7"></a><h4>Returns</h4>
 <p> a newly-allocated description string, or NULL on error. Free
 string with <a href="http://library.gnome.org/devel/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> when not needed any longer.</p>
 <p></p>
@@ -314,7 +314,7 @@
  to <em class="parameter"><code>taglist</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.13.6.7.7.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.6.7.7.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -343,7 +343,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.6.7.7.6"></a><h4>Returns</h4>
+<a name="id-1.2.14.6.7.7.6"></a><h4>Returns</h4>
 <p> TRUE if a codec tag was added, FALSE otherwise.</p>
 <p></p>
 </div>
@@ -361,7 +361,7 @@
 <p>Also see the convenience function
 <a class="link" href="gst-plugins-base-libs-gstpbutilsdescriptions.html#gst-pb-utils-add-codec-description-to-tag-list" title="gst_pb_utils_add_codec_description_to_tag_list ()"><code class="function">gst_pb_utils_add_codec_description_to_tag_list()</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.2.13.6.7.8.6"></a><h4>Parameters</h4>
+<a name="id-1.2.14.6.7.8.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -376,7 +376,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.6.7.8.7"></a><h4>Returns</h4>
+<a name="id-1.2.14.6.7.8.7"></a><h4>Returns</h4>
 <p> a newly-allocated description string, or NULL on error. Free
 string with <a href="http://library.gnome.org/devel/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> when not needed any longer.</p>
 <p></p>
diff --git a/docs/libs/html/gst-plugins-base-libs-gstpbutilsinstallplugins.html b/docs/libs/html/gst-plugins-base-libs-gstpbutilsinstallplugins.html
index 9c045d8..4ee83fc 100644
--- a/docs/libs/html/gst-plugins-base-libs-gstpbutilsinstallplugins.html
+++ b/docs/libs/html/gst-plugins-base-libs-gstpbutilsinstallplugins.html
@@ -146,7 +146,7 @@
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gstpbutilsinstallplugins.description"></a><h2>Description</h2>
 <div class="refsect2">
-<a name="id-1.2.13.8.7.2"></a><h3>Overview</h3>
+<a name="id-1.2.14.8.7.2"></a><h3>Overview</h3>
 <p>
 Using this API, applications can request the installation of missing
 GStreamer plugins. These may be missing decoders/demuxers or encoders/muxers
@@ -513,7 +513,7 @@
 external plugin installer program has returned. You only need to provide
 a callback function if you are using the asynchronous interface.</p>
 <div class="refsect3">
-<a name="id-1.2.13.8.8.2.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.8.8.2.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -560,7 +560,7 @@
 one go (as might be required if there is a demuxer for a certain format
 installed but no suitable video decoder and no suitable audio decoder).</p>
 <div class="refsect3">
-<a name="id-1.2.13.8.8.3.8"></a><h4>Parameters</h4>
+<a name="id-1.2.14.8.8.3.8"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -594,7 +594,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.8.8.3.9"></a><h4>Returns</h4>
+<a name="id-1.2.14.8.8.3.9"></a><h4>Returns</h4>
 <p> result code whether an external installer could be started</p>
 <p></p>
 </div>
@@ -613,7 +613,7 @@
 using the other non-GLib main loop. You should almost always use
 <a class="link" href="gst-plugins-base-libs-gstpbutilsinstallplugins.html#gst-install-plugins-async" title="gst_install_plugins_async ()"><code class="function">gst_install_plugins_async()</code></a> instead of this function.</p>
 <div class="refsect3">
-<a name="id-1.2.13.8.8.4.6"></a><h4>Parameters</h4>
+<a name="id-1.2.14.8.8.4.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -636,7 +636,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.8.8.4.7"></a><h4>Returns</h4>
+<a name="id-1.2.14.8.8.4.7"></a><h4>Returns</h4>
 <p> the result of the installation.</p>
 <p></p>
 </div>
@@ -651,7 +651,7 @@
 should not be used for user messages. It is here only to assist
 in debugging.</p>
 <div class="refsect3">
-<a name="id-1.2.13.8.8.5.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.8.8.5.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -666,7 +666,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.8.8.5.6"></a><h4>Returns</h4>
+<a name="id-1.2.14.8.8.5.6"></a><h4>Returns</h4>
 <p> a descriptive string for the status code in <em class="parameter"><code>ret</code></em>
 </p>
 <p></p>
@@ -681,7 +681,7 @@
 <p>Checks whether plugin installation (initiated by this application only)
 is currently in progress.</p>
 <div class="refsect3">
-<a name="id-1.2.13.8.8.6.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.8.8.6.5"></a><h4>Returns</h4>
 <p> TRUE if plugin installation is in progress, otherwise FALSE</p>
 <p></p>
 </div>
@@ -696,7 +696,7 @@
 that is to be provided by the distribution or operating system vendor
 exists.</p>
 <div class="refsect3">
-<a name="id-1.2.13.8.8.7.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.8.8.7.5"></a><h4>Returns</h4>
 <p> TRUE if plugin installation is likely to be supported.</p>
 <p></p>
 </div>
@@ -708,7 +708,7 @@
 gst_install_plugins_context_new (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
 <p>Creates a new <a class="link" href="gst-plugins-base-libs-gstpbutilsinstallplugins.html#GstInstallPluginsContext" title="GstInstallPluginsContext"><span class="type">GstInstallPluginsContext</span></a>.</p>
 <div class="refsect3">
-<a name="id-1.2.13.8.8.8.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.8.8.8.5"></a><h4>Returns</h4>
 <p> a new <a class="link" href="gst-plugins-base-libs-gstpbutilsinstallplugins.html#GstInstallPluginsContext" title="GstInstallPluginsContext"><span class="type">GstInstallPluginsContext</span></a>. Free with
 <a class="link" href="gst-plugins-base-libs-gstpbutilsinstallplugins.html#gst-install-plugins-context-free" title="gst_install_plugins_context_free ()"><code class="function">gst_install_plugins_context_free()</code></a> when no longer needed</p>
 <p></p>
@@ -721,7 +721,7 @@
 gst_install_plugins_context_free (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstpbutilsinstallplugins.html#GstInstallPluginsContext" title="GstInstallPluginsContext"><span class="type">GstInstallPluginsContext</span></a> *ctx</code></em>);</pre>
 <p>Frees a <a class="link" href="gst-plugins-base-libs-gstpbutilsinstallplugins.html#GstInstallPluginsContext" title="GstInstallPluginsContext"><span class="type">GstInstallPluginsContext</span></a>.</p>
 <div class="refsect3">
-<a name="id-1.2.13.8.8.9.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.8.8.9.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -763,7 +763,7 @@
 ...
 </pre>
 <div class="refsect3">
-<a name="id-1.2.13.8.8.10.8"></a><h4>Parameters</h4>
+<a name="id-1.2.14.8.8.10.8"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -796,7 +796,7 @@
 <p>These codes indicate success or failure of starting an external installer
 program and to what extent the requested plugins could be installed.</p>
 <div class="refsect3">
-<a name="id-1.2.13.8.9.2.5"></a><h4>Members</h4>
+<a name="id-1.2.14.8.9.2.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
diff --git a/docs/libs/html/gst-plugins-base-libs-gstpbutilsmissingplugins.html b/docs/libs/html/gst-plugins-base-libs-gstpbutilsmissingplugins.html
index 39ba63b..fa92ad4 100644
--- a/docs/libs/html/gst-plugins-base-libs-gstpbutilsmissingplugins.html
+++ b/docs/libs/html/gst-plugins-base-libs-gstpbutilsmissingplugins.html
@@ -160,7 +160,7 @@
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gstpbutilsmissingplugins.description"></a><h2>Description</h2>
 <div class="refsect2">
-<a name="id-1.2.13.7.6.2"></a><p>
+<a name="id-1.2.14.7.6.2"></a><p>
 Functions to create, recognise and parse missing-plugins messages for
 applications and elements.
 </p>
@@ -202,7 +202,7 @@
 <p>This function is mainly for applications that call external plugin
 installation mechanisms using one of the two above-mentioned functions.</p>
 <div class="refsect3">
-<a name="id-1.2.13.7.7.2.6"></a><h4>Parameters</h4>
+<a name="id-1.2.14.7.7.2.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -217,7 +217,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.7.7.2.7"></a><h4>Returns</h4>
+<a name="id-1.2.14.7.7.2.7"></a><h4>Returns</h4>
 <p> a newly-allocated detail string, or NULL on error. Free string
 with <a href="http://library.gnome.org/devel/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> when not needed any longer.</p>
 <p></p>
@@ -237,7 +237,7 @@
 describing a missing plugin, given a previously collected missing-plugin
 message</p>
 <div class="refsect3">
-<a name="id-1.2.13.7.7.3.6"></a><h4>Parameters</h4>
+<a name="id-1.2.14.7.7.3.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -252,7 +252,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.7.7.3.7"></a><h4>Returns</h4>
+<a name="id-1.2.14.7.7.3.7"></a><h4>Returns</h4>
 <p> a newly-allocated description string, or NULL on error. Free
 string with <a href="http://library.gnome.org/devel/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> when not needed any longer.</p>
 <p></p>
@@ -266,7 +266,7 @@
 <p>Checks whether <em class="parameter"><code>msg</code></em>
  is a missing plugins message.</p>
 <div class="refsect3">
-<a name="id-1.2.13.7.7.4.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.7.7.4.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -281,7 +281,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.7.7.4.6"></a><h4>Returns</h4>
+<a name="id-1.2.14.7.7.4.6"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>msg</code></em>
 is a missing-plugins message, otherwise <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
 <p></p>
@@ -298,7 +298,7 @@
 that a decoder element for a particular set of (fixed) caps is missing.
 This function is mainly for use in plugins.</p>
 <div class="refsect3">
-<a name="id-1.2.13.7.7.5.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.7.7.5.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -320,7 +320,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.7.7.5.6"></a><h4>Returns</h4>
+<a name="id-1.2.14.7.7.5.6"></a><h4>Returns</h4>
 <p> a new <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstMessage.html#GstMessage"><span class="type">GstMessage</span></a>, or NULL on error. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
 </div>
@@ -336,7 +336,7 @@
 that an encoder element for a particular set of (fixed) caps is missing.
 This function is mainly for use in plugins.</p>
 <div class="refsect3">
-<a name="id-1.2.13.7.7.6.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.7.7.6.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -358,7 +358,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.7.7.6.6"></a><h4>Returns</h4>
+<a name="id-1.2.14.7.7.6.6"></a><h4>Returns</h4>
 <p> a new <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstMessage.html#GstMessage"><span class="type">GstMessage</span></a>, or NULL on error. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
 </div>
@@ -374,7 +374,7 @@
 that a source element for a particular URI protocol is missing. This
 function is mainly for use in plugins.</p>
 <div class="refsect3">
-<a name="id-1.2.13.7.7.7.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.7.7.7.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -397,7 +397,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.7.7.7.6"></a><h4>Returns</h4>
+<a name="id-1.2.14.7.7.7.6"></a><h4>Returns</h4>
 <p> a new <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstMessage.html#GstMessage"><span class="type">GstMessage</span></a>, or NULL on error. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
 </div>
@@ -413,7 +413,7 @@
 that a sink element for a particular URI protocol is missing. This
 function is mainly for use in plugins.</p>
 <div class="refsect3">
-<a name="id-1.2.13.7.7.8.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.7.7.8.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -436,7 +436,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.7.7.8.6"></a><h4>Returns</h4>
+<a name="id-1.2.14.7.7.8.6"></a><h4>Returns</h4>
 <p> a new <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstMessage.html#GstMessage"><span class="type">GstMessage</span></a>, or NULL on error. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
 </div>
@@ -452,7 +452,7 @@
 that a certain required element is missing. This function is mainly for
 use in plugins.</p>
 <div class="refsect3">
-<a name="id-1.2.13.7.7.9.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.7.7.9.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -475,7 +475,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.7.7.9.6"></a><h4>Returns</h4>
+<a name="id-1.2.14.7.7.9.6"></a><h4>Returns</h4>
 <p> a new <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstMessage.html#GstMessage"><span class="type">GstMessage</span></a>, or NULL on error. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
 </div>
@@ -494,7 +494,7 @@
 the case where the application knows exactly what kind of plugin it is
 missing.</p>
 <div class="refsect3">
-<a name="id-1.2.13.7.7.10.6"></a><h4>Parameters</h4>
+<a name="id-1.2.14.7.7.10.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -510,7 +510,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.7.7.10.7"></a><h4>Returns</h4>
+<a name="id-1.2.14.7.7.10.7"></a><h4>Returns</h4>
 <p> a newly-allocated detail string, or NULL on error. Free string
 with <a href="http://library.gnome.org/devel/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> when not needed any longer.</p>
 <p></p>
@@ -530,7 +530,7 @@
 the case where the application knows exactly what kind of plugin it is
 missing.</p>
 <div class="refsect3">
-<a name="id-1.2.13.7.7.11.6"></a><h4>Parameters</h4>
+<a name="id-1.2.14.7.7.11.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -546,7 +546,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.7.7.11.7"></a><h4>Returns</h4>
+<a name="id-1.2.14.7.7.11.7"></a><h4>Returns</h4>
 <p> a newly-allocated detail string, or NULL on error. Free string
 with <a href="http://library.gnome.org/devel/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> when not needed any longer.</p>
 <p></p>
@@ -566,7 +566,7 @@
 the case where the application knows exactly what kind of plugin it is
 missing.</p>
 <div class="refsect3">
-<a name="id-1.2.13.7.7.12.6"></a><h4>Parameters</h4>
+<a name="id-1.2.14.7.7.12.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -582,7 +582,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.7.7.12.7"></a><h4>Returns</h4>
+<a name="id-1.2.14.7.7.12.7"></a><h4>Returns</h4>
 <p> a newly-allocated detail string, or NULL on error. Free string
 with <a href="http://library.gnome.org/devel/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> when not needed any longer.</p>
 <p></p>
@@ -602,7 +602,7 @@
 the case where the application knows exactly what kind of plugin it is
 missing.</p>
 <div class="refsect3">
-<a name="id-1.2.13.7.7.13.6"></a><h4>Parameters</h4>
+<a name="id-1.2.14.7.7.13.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -617,7 +617,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.7.7.13.7"></a><h4>Returns</h4>
+<a name="id-1.2.14.7.7.13.7"></a><h4>Returns</h4>
 <p> a newly-allocated detail string, or NULL on error. Free string
 with <a href="http://library.gnome.org/devel/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> when not needed any longer.</p>
 <p></p>
@@ -637,7 +637,7 @@
 the case where the application knows exactly what kind of plugin it is
 missing.</p>
 <div class="refsect3">
-<a name="id-1.2.13.7.7.14.6"></a><h4>Parameters</h4>
+<a name="id-1.2.14.7.7.14.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -652,7 +652,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.7.7.14.7"></a><h4>Returns</h4>
+<a name="id-1.2.14.7.7.14.7"></a><h4>Returns</h4>
 <p> a newly-allocated detail string, or NULL on error. Free string
 with <a href="http://library.gnome.org/devel/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> when not needed any longer.</p>
 <p></p>
diff --git a/docs/libs/html/gst-plugins-base-libs-gstpluginsbaseversion.html b/docs/libs/html/gst-plugins-base-libs-gstpluginsbaseversion.html
index 943dff3..38258dc 100644
--- a/docs/libs/html/gst-plugins-base-libs-gstpluginsbaseversion.html
+++ b/docs/libs/html/gst-plugins-base-libs-gstpluginsbaseversion.html
@@ -110,14 +110,14 @@
 <hr>
 <div class="refsect2">
 <a name="GST-PLUGINS-BASE-VERSION-MINOR:CAPS"></a><h3>GST_PLUGINS_BASE_VERSION_MINOR</h3>
-<pre class="programlisting">#define GST_PLUGINS_BASE_VERSION_MINOR (2)
+<pre class="programlisting">#define GST_PLUGINS_BASE_VERSION_MINOR (3)
 </pre>
 <p>The minor version of GStreamer's gst-plugins-base libraries at compile time.</p>
 </div>
 <hr>
 <div class="refsect2">
 <a name="GST-PLUGINS-BASE-VERSION-MICRO:CAPS"></a><h3>GST_PLUGINS_BASE_VERSION_MICRO</h3>
-<pre class="programlisting">#define GST_PLUGINS_BASE_VERSION_MICRO (4)
+<pre class="programlisting">#define GST_PLUGINS_BASE_VERSION_MICRO (1)
 </pre>
 <p>The micro version of GStreamer's gst-plugins-base libraries at compile time.</p>
 </div>
@@ -144,7 +144,7 @@
                           <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> *nano</code></em>);</pre>
 <p>Gets the version number of the GStreamer Plugins Base libraries.</p>
 <div class="refsect3">
-<a name="id-1.2.13.4.7.7.5"></a><h4>Parameters</h4>
+<a name="id-1.2.14.4.7.7.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -185,7 +185,7 @@
 of GStreamer's gst-plugins-base libraries to the outside world: user agent
 strings, logging, about dialogs ...</p>
 <div class="refsect3">
-<a name="id-1.2.13.4.7.8.5"></a><h4>Returns</h4>
+<a name="id-1.2.14.4.7.8.5"></a><h4>Returns</h4>
 <p> a newly allocated string describing this version of gst-plugins-base</p>
 <p></p>
 </div>
diff --git a/docs/libs/html/gst-plugins-base-libs-gstrtcpbuffer.html b/docs/libs/html/gst-plugins-base-libs-gstrtcpbuffer.html
index 1bded31..0ebaf17 100644
--- a/docs/libs/html/gst-plugins-base-libs-gstrtcpbuffer.html
+++ b/docs/libs/html/gst-plugins-base-libs-gstrtcpbuffer.html
@@ -563,7 +563,6 @@
 <a class="link" href="gst-plugins-base-libs-gstrtcpbuffer.html#gst-rtcp-packet-move-to-next" title="gst_rtcp_packet_move_to_next ()"><code class="function">gst_rtcp_packet_move_to_next()</code></a>.
 </p>
 </div>
-<p>Last reviewed on 2007-03-26 (0.10.13)</p>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gstrtcpbuffer.functions_details"></a><h2>Functions</h2>
diff --git a/docs/libs/html/gst-plugins-base-libs-gstrtpbasedepayload.html b/docs/libs/html/gst-plugins-base-libs-gstrtpbasedepayload.html
index bcf981a..44f1a6d 100644
--- a/docs/libs/html/gst-plugins-base-libs-gstrtpbasedepayload.html
+++ b/docs/libs/html/gst-plugins-base-libs-gstrtpbasedepayload.html
@@ -16,7 +16,8 @@
 <td width="100%" align="left" class="shortcuts">
 <a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span> 
                   <a href="#gst-plugins-base-libs-gstrtpbasedepayload.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span> 
-                  <a href="#gst-plugins-base-libs-gstrtpbasedepayload.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
+                  <a href="#gst-plugins-base-libs-gstrtpbasedepayload.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties"> <span class="dim">|</span> 
+                  <a href="#gst-plugins-base-libs-gstrtpbasedepayload.properties" class="shortcut">Properties</a></span>
 </td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="gstreamer-rtp.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
@@ -71,6 +72,22 @@
 </tbody>
 </table></div>
 </div>
+<div class="refsect1">
+<a name="gst-plugins-base-libs-gstrtpbasedepayload.properties"></a><h2>Properties</h2>
+<div class="informaltable"><table border="0">
+<colgroup>
+<col width="150px" class="properties_type">
+<col width="300px" class="properties_name">
+<col width="200px" class="properties_flags">
+</colgroup>
+<tbody><tr>
+<td class="property_type">
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstStructure.html#GstStructure"><span class="type">GstStructure</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-base-libs-gstrtpbasedepayload.html#GstRTPBaseDepayload--stats" title="The “stats” property">stats</a></td>
+<td class="property_flags">Read</td>
+</tr></tbody>
+</table></div>
+</div>
 <a name="GstRTPBaseDepayload"></a><div class="refsect1">
 <a name="gst-plugins-base-libs-gstrtpbasedepayload.other"></a><h2>Types and Values</h2>
 <div class="informaltable"><table width="100%" border="0">
@@ -135,7 +152,7 @@
 <p>This function will by default apply the last incomming timestamp on
 the outgoing buffer when it didn't have a timestamp already.</p>
 <div class="refsect3">
-<a name="id-1.2.9.4.9.4.6"></a><h4>Parameters</h4>
+<a name="id-1.2.9.4.10.4.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -157,7 +174,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.9.4.9.4.7"></a><h4>Returns</h4>
+<a name="id-1.2.9.4.10.4.7"></a><h4>Returns</h4>
 <p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="type">GstFlowReturn</span></a>.</p>
 <p></p>
 </div>
@@ -174,7 +191,7 @@
 <em class="parameter"><code>out_list</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.9.4.9.5.5"></a><h4>Parameters</h4>
+<a name="id-1.2.9.4.10.5.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -196,7 +213,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.9.4.9.5.6"></a><h4>Returns</h4>
+<a name="id-1.2.9.4.10.5.6"></a><h4>Returns</h4>
 <p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="type">GstFlowReturn</span></a>.</p>
 <p></p>
 </div>
@@ -236,7 +253,7 @@
 </pre>
 <p>Base class for audio RTP payloader.</p>
 <div class="refsect3">
-<a name="id-1.2.9.4.10.3.5"></a><h4>Members</h4>
+<a name="id-1.2.9.4.11.3.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -274,6 +291,73 @@
 </div>
 </div>
 </div>
+<div class="refsect1">
+<a name="gst-plugins-base-libs-gstrtpbasedepayload.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstRTPBaseDepayload--stats"></a><h3>The <code class="literal">“stats”</code> property</h3>
+<pre class="programlisting">  “stats”                    <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstStructure.html#GstStructure"><span class="type">GstStructure</span></a> *</pre>
+<p>Various depayloader statistics retrieved atomically (and are therefore
+synchroized with each other). This property return a GstStructure named
+application/x-rtp-depayload-stats containing the following fields relating to
+the last processed buffer and current state of the stream being depayloaded:</p>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">clock-rate</span></p></td>
+<td><p><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#G-TYPE-UINT:CAPS"><span class="type">G_TYPE_UINT</span></a>, clock-rate of the
+    stream</p></td>
+</tr>
+<tr>
+<td><p><span class="term">npt-start</span></p></td>
+<td><p><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#G-TYPE-UINT64:CAPS"><span class="type">G_TYPE_UINT64</span></a>, time of playback start
+    </p></td>
+</tr>
+<tr>
+<td><p><span class="term">npt-stop</span></p></td>
+<td><p><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#G-TYPE-UINT64:CAPS"><span class="type">G_TYPE_UINT64</span></a>, time of playback stop
+    </p></td>
+</tr>
+<tr>
+<td><p><span class="term">play-speed</span></p></td>
+<td><p><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#G-TYPE-DOUBLE:CAPS"><span class="type">G_TYPE_DOUBLE</span></a>, the playback speed
+    </p></td>
+</tr>
+<tr>
+<td><p><span class="term">play-scale</span></p></td>
+<td><p><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#G-TYPE-DOUBLE:CAPS"><span class="type">G_TYPE_DOUBLE</span></a>, the playback scale
+    </p></td>
+</tr>
+<tr>
+<td><p><span class="term">running-time-dts</span></p></td>
+<td><p><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#G-TYPE-UINT64:CAPS"><span class="type">G_TYPE_UINT64</span></a>, the last running-time of the
+     last DTS
+    </p></td>
+</tr>
+<tr>
+<td><p><span class="term">running-time-pts</span></p></td>
+<td><p><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#G-TYPE-UINT64:CAPS"><span class="type">G_TYPE_UINT64</span></a>, the last running-time of the
+     last PTS
+    </p></td>
+</tr>
+<tr>
+<td><p><span class="term">seqnum</span></p></td>
+<td><p><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#G-TYPE-UINT:CAPS"><span class="type">G_TYPE_UINT</span></a>, the last seen seqnum
+    </p></td>
+</tr>
+<tr>
+<td><p><span class="term">timestamp</span></p></td>
+<td><p><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#G-TYPE-UINT:CAPS"><span class="type">G_TYPE_UINT</span></a>, the last seen RTP timestamp
+    </p></td>
+</tr>
+</tbody>
+</table></div>
+<p>Flags: Read</p>
+</div>
+</div>
 </div>
 <div class="footer">
 <hr>
diff --git a/docs/libs/html/gst-plugins-base-libs-gstrtpbasepayload.html b/docs/libs/html/gst-plugins-base-libs-gstrtpbasepayload.html
index e55b967..2916d22 100644
--- a/docs/libs/html/gst-plugins-base-libs-gstrtpbasepayload.html
+++ b/docs/libs/html/gst-plugins-base-libs-gstrtpbasepayload.html
@@ -163,6 +163,12 @@
 <td class="property_flags">Read / Write</td>
 </tr>
 <tr>
+<td class="property_type">
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstStructure.html#GstStructure"><span class="type">GstStructure</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-base-libs-gstrtpbasepayload.html#GstRTPBasePayload--stats" title="The “stats” property">stats</a></td>
+<td class="property_flags">Read</td>
+</tr>
+<tr>
 <td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></td>
 <td class="property_name"><a class="link" href="gst-plugins-base-libs-gstrtpbasepayload.html#GstRTPBasePayload--timestamp" title="The “timestamp” property">timestamp</a></td>
 <td class="property_flags">Read</td>
@@ -616,7 +622,7 @@
 <div class="refsect2">
 <a name="GstRTPBasePayload--min-ptime"></a><h3>The <code class="literal">“min-ptime”</code> property</h3>
 <pre class="programlisting">  “min-ptime”                <span class="type">gint64</span></pre>
-<p>Minimum duration of the packet data in ns (can't go above MTU).</p>
+<p>Minimum duration of the packet data in ns (can't go above MTU)</p>
 <p>Flags: Read / Write</p>
 <p>Allowed values: &gt;= 0</p>
 <p>Default value: 0</p>
@@ -634,7 +640,21 @@
 <div class="refsect2">
 <a name="GstRTPBasePayload--perfect-rtptime"></a><h3>The <code class="literal">“perfect-rtptime”</code> property</h3>
 <pre class="programlisting">  “perfect-rtptime”          <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
-<p>Generate perfect RTP timestamps when possible.</p>
+<p>Try to use the offset fields to generate perfect RTP timestamps. When this
+option is disabled, RTP timestamps are generated from GST_BUFFER_PTS of
+each payloaded buffer. The PTSes of buffers may not necessarily increment
+with the amount of data in each input buffer, consider e.g. the case where
+the buffer arrives from a network which means that the PTS is unrelated to
+the amount of data. Because the RTP timestamps are generated from
+GST_BUFFER_PTS this can result in RTP timestamps that also don't increment
+with the amount of data in the payloaded packet. To circumvent this it is
+possible to set the perfect rtptime option enabled. When this option is
+enabled the payloader will increment the RTP timestamps based on
+GST_BUFFER_OFFSET which relates to the amount of data in each packet
+rather than the GST_BUFFER_PTS of each buffer and therefore the RTP
+timestamps will more closely correlate with the amount of data in each
+buffer. Currently GstRTPBasePayload is limited to handling perfect RTP
+timestamps for audio streams.</p>
 <p>Flags: Read / Write</p>
 <p>Default value: TRUE</p>
 </div>
@@ -644,14 +664,14 @@
 <pre class="programlisting">  “pt”                       <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></pre>
 <p>The payload type of the packets.</p>
 <p>Flags: Read / Write</p>
-<p>Allowed values: &lt;= 128</p>
+<p>Allowed values: &lt;= 127</p>
 <p>Default value: 96</p>
 </div>
 <hr>
 <div class="refsect2">
 <a name="GstRTPBasePayload--ptime-multiple"></a><h3>The <code class="literal">“ptime-multiple”</code> property</h3>
 <pre class="programlisting">  “ptime-multiple”           <span class="type">gint64</span></pre>
-<p>Force buffers to be multiples of this duration in ns (0 disables).</p>
+<p>Force buffers to be multiples of this duration in ns (0 disables)</p>
 <p>Flags: Read / Write</p>
 <p>Allowed values: &gt;= 0</p>
 <p>Default value: 0</p>
@@ -684,6 +704,65 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="GstRTPBasePayload--stats"></a><h3>The <code class="literal">“stats”</code> property</h3>
+<pre class="programlisting">  “stats”                    <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstStructure.html#GstStructure"><span class="type">GstStructure</span></a> *</pre>
+<p>Various payloader statistics retrieved atomically (and are therefore
+synchroized with each other), these can be used e.g. to generate an
+RTP-Info header. This property return a GstStructure named
+application/x-rtp-payload-stats containing the following fields relating to
+the last processed buffer and current state of the stream being payloaded:</p>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">clock-rate</span></p></td>
+<td><p><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#G-TYPE-UINT:CAPS"><span class="type">G_TYPE_UINT</span></a>, clock-rate of the
+    stream</p></td>
+</tr>
+<tr>
+<td><p><span class="term">running-time</span></p></td>
+<td><p><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#G-TYPE-UINT64:CAPS"><span class="type">G_TYPE_UINT64</span></a>, running time
+    </p></td>
+</tr>
+<tr>
+<td><p><span class="term">seqnum</span></p></td>
+<td><p><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#G-TYPE-UINT:CAPS"><span class="type">G_TYPE_UINT</span></a>, sequence number, same as
+    <a class="link" href="gst-plugins-base-libs-gstrtpbasepayload.html#GstRTPBasePayload--seqnum" title="The “seqnum” property"><span class="type">“seqnum”</span></a></p></td>
+</tr>
+<tr>
+<td><p><span class="term">timestamp</span></p></td>
+<td><p><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#G-TYPE-UINT:CAPS"><span class="type">G_TYPE_UINT</span></a>, RTP timestamp, same as
+    <a class="link" href="gst-plugins-base-libs-gstrtpbasepayload.html#GstRTPBasePayload--timestamp" title="The “timestamp” property"><span class="type">“timestamp”</span></a></p></td>
+</tr>
+<tr>
+<td><p><span class="term">ssrc</span></p></td>
+<td><p><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#G-TYPE-UINT:CAPS"><span class="type">G_TYPE_UINT</span></a>, The SSRC in use
+    </p></td>
+</tr>
+<tr>
+<td><p><span class="term">pt</span></p></td>
+<td><p><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#G-TYPE-UINT:CAPS"><span class="type">G_TYPE_UINT</span></a>, The Payload type in use, same as
+    <a class="link" href="gst-plugins-base-libs-gstrtpbasepayload.html#GstRTPBasePayload--pt" title="The “pt” property"><span class="type">“pt”</span></a></p></td>
+</tr>
+<tr>
+<td><p><span class="term">seqnum-offset</span></p></td>
+<td><p><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#G-TYPE-UINT:CAPS"><span class="type">G_TYPE_UINT</span></a>, The current offset added to the
+    seqnum</p></td>
+</tr>
+<tr>
+<td><p><span class="term">timestamp-offset</span></p></td>
+<td><p><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#G-TYPE-UINT:CAPS"><span class="type">G_TYPE_UINT</span></a>, The current offset added to the
+    timestamp</p></td>
+</tr>
+</tbody>
+</table></div>
+<p>Flags: Read</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GstRTPBasePayload--timestamp"></a><h3>The <code class="literal">“timestamp”</code> property</h3>
 <pre class="programlisting">  “timestamp”                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></pre>
 <p>The RTP timestamp of the last processed packet.</p>
diff --git a/docs/libs/html/gst-plugins-base-libs-gstrtpbuffer.html b/docs/libs/html/gst-plugins-base-libs-gstrtpbuffer.html
index c277bdc..4d7c84f 100644
--- a/docs/libs/html/gst-plugins-base-libs-gstrtpbuffer.html
+++ b/docs/libs/html/gst-plugins-base-libs-gstrtpbuffer.html
@@ -453,7 +453,6 @@
 'application/x-rtp' <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>.
 </p>
 </div>
-<p>Last reviewed on 2006-07-17 (0.10.10)</p>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gstrtpbuffer.functions_details"></a><h2>Functions</h2>
@@ -1702,7 +1701,7 @@
 .
 If <em class="parameter"><code>len</code></em>
  is -1 the total payload starting from <em class="parameter"><code>offset</code></em>
- if subbuffered.</p>
+ is subbuffered.</p>
 <div class="refsect3">
 <a name="id-1.2.9.6.8.37.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
diff --git a/docs/libs/html/gst-plugins-base-libs-gstrtppayloads.html b/docs/libs/html/gst-plugins-base-libs-gstrtppayloads.html
index b8fa849..49f23d4 100644
--- a/docs/libs/html/gst-plugins-base-libs-gstrtppayloads.html
+++ b/docs/libs/html/gst-plugins-base-libs-gstrtppayloads.html
@@ -101,7 +101,6 @@
 and get session bandwidth information.
 </p>
 </div>
-<p>Last reviewed on 2007-10-01 (0.10.15)</p>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gstrtppayloads.functions_details"></a><h2>Functions</h2>
diff --git a/docs/libs/html/gst-plugins-base-libs-gstrtspconnection.html b/docs/libs/html/gst-plugins-base-libs-gstrtspconnection.html
index 93cf150..cd26684 100644
--- a/docs/libs/html/gst-plugins-base-libs-gstrtspconnection.html
+++ b/docs/libs/html/gst-plugins-base-libs-gstrtspconnection.html
@@ -358,6 +358,14 @@
 <a class="link" href="gst-plugins-base-libs-gstrtspconnection.html#gst-rtsp-watch-set-send-backlog" title="gst_rtsp_watch_set_send_backlog ()">gst_rtsp_watch_set_send_backlog</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gst-plugins-base-libs-gstrtspdefs.html#GstRTSPResult" title="enum GstRTSPResult"><span class="returnvalue">GstRTSPResult</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstrtspconnection.html#gst-rtsp-watch-wait-backlog" title="gst_rtsp_watch_wait_backlog ()">gst_rtsp_watch_wait_backlog</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
 </tbody>
 </table></div>
 </div>
@@ -398,7 +406,6 @@
 <a name="gst-plugins-base-libs-gstrtspconnection.description"></a><h2>Description</h2>
 <p>This object manages the RTSP connection to the server. It provides function
 to receive and send bytes and messages.</p>
-<p>Last reviewed on 2007-07-24 (0.10.14)</p>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gstrtspconnection.functions_details"></a><h2>Functions</h2>
@@ -426,7 +433,7 @@
 <tbody>
 <tr>
 <td class="parameter_name"><p>url</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstrtspurl.html#GstRTSPUrl" title="struct GstRTSPUrl"><span class="type">GstRTSPUrl</span></a> </p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstrtspurl.html#GstRTSPUrl" title="struct GstRTSPUrl"><span class="type">GstRTSPUrl</span></a></p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
@@ -574,7 +581,7 @@
 <tbody>
 <tr>
 <td class="parameter_name"><p>conn</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstrtspconnection.html#GstRTSPConnection" title="GstRTSPConnection"><span class="type">GstRTSPConnection</span></a> </p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstrtspconnection.html#GstRTSPConnection" title="GstRTSPConnection"><span class="type">GstRTSPConnection</span></a></p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
@@ -800,7 +807,7 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>revents</p></td>
-<td class="parameter_description"><p>location for result flags </p></td>
+<td class="parameter_description"><p>location for result flags</p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
@@ -1494,9 +1501,9 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.10.3.8.30.6"></a><h4>Returns</h4>
-<p> the file descriptor used for writing or NULL on error. The file
-descriptor remains valid until the connection is closed.</p>
-<p></p>
+<p> the file descriptor used for writing or NULL on
+error. The file descriptor remains valid until the connection is closed. </p>
+<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
 </div>
 </div>
 <hr>
@@ -1626,7 +1633,7 @@
 called with <em class="parameter"><code>user_data</code></em>
  when activity happened on the watch.</p>
 <p>The new watch is usually created so that it can be attached to a
-maincontext with <a class="link" href="gst-plugins-base-libs-gstrtspconnection.html#gst-rtsp-watch-attach" title="gst_rtsp_watch_attach ()"><code class="function">gst_rtsp_watch_attach()</code></a>. </p>
+maincontext with <a class="link" href="gst-plugins-base-libs-gstrtspconnection.html#gst-rtsp-watch-attach" title="gst_rtsp_watch_attach ()"><code class="function">gst_rtsp_watch_attach()</code></a>.</p>
 <p><em class="parameter"><code>conn</code></em>
  must exist for the entire lifetime of the watch.</p>
 <div class="refsect3">
@@ -1725,7 +1732,7 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.10.3.8.36.6"></a><h4>Returns</h4>
-<p> the ID (greater than 0) for the watch within the GMainContext. </p>
+<p> the ID (greater than 0) for the watch within the GMainContext.</p>
 <p></p>
 </div>
 </div>
@@ -1868,7 +1875,8 @@
 <div class="refsect3">
 <a name="id-1.2.10.3.8.39.8"></a><h4>Returns</h4>
 <p> <a class="link" href="gst-plugins-base-libs-gstrtspdefs.html#GST-RTSP-OK:CAPS"><span class="type">GST_RTSP_OK</span></a> on success. <a class="link" href="gst-plugins-base-libs-gstrtspdefs.html#GST-RTSP-ENOMEM:CAPS"><span class="type">GST_RTSP_ENOMEM</span></a> when the backlog limits
-are reached.</p>
+are reached. <a class="link" href="gst-plugins-base-libs-gstrtspdefs.html#GST-RTSP-EINTR:CAPS"><span class="type">GST_RTSP_EINTR</span></a> when <em class="parameter"><code>watch</code></em>
+was flushing.</p>
 <p></p>
 </div>
 </div>
@@ -1909,7 +1917,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.1.1</p>
+<p class="since">Since 1.2</p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1952,7 +1960,59 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.1.1</p>
+<p class="since">Since 1.2</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-rtsp-watch-wait-backlog"></a><h3>gst_rtsp_watch_wait_backlog ()</h3>
+<pre class="programlisting"><a class="link" href="gst-plugins-base-libs-gstrtspdefs.html#GstRTSPResult" title="enum GstRTSPResult"><span class="returnvalue">GstRTSPResult</span></a>
+gst_rtsp_watch_wait_backlog (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstrtspconnection.html#GstRTSPWatch" title="GstRTSPWatch"><span class="type">GstRTSPWatch</span></a> *watch</code></em>,
+                             <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Date-and-Time-Functions.html#GTimeVal"><span class="type">GTimeVal</span></a> *timeout</code></em>);</pre>
+<p>Wait until there is place in the backlog queue, <em class="parameter"><code>timeout</code></em>
+ is reached
+or <em class="parameter"><code>watch</code></em>
+ is set to flushing.</p>
+<p>If <em class="parameter"><code>timeout</code></em>
+ is <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><span class="type">NULL</span></a> this function can block forever. If <em class="parameter"><code>timeout</code></em>
+
+contains a valid timeout, this function will return <a class="link" href="gst-plugins-base-libs-gstrtspdefs.html#GST-RTSP-ETIMEOUT:CAPS"><span class="type">GST_RTSP_ETIMEOUT</span></a>
+after the timeout expired.</p>
+<p>The typically use of this function is when gst_rtsp_watch_write_data
+returns GST_RTSP_ENOMEM. The caller then calls this function to wait for
+free space in the backlog queue and try again.</p>
+<div class="refsect3">
+<a name="id-1.2.10.3.8.42.7"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>watch</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstrtspconnection.html#GstRTSPWatch" title="GstRTSPWatch"><span class="type">GstRTSPWatch</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>timeout</p></td>
+<td class="parameter_description"><p>a <a href="http://library.gnome.org/devel/glib/unstable/glib-Date-and-Time-Functions.html#GTimeVal"><span class="type">GTimeVal</span></a> timeout</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.10.3.8.42.8"></a><h4>Returns</h4>
+<p> <a class="link" href="gst-plugins-base-libs-gstrtspdefs.html#GST-RTSP-OK:CAPS"><span class="type">GST_RTSP_OK</span></a> when if there is room in queue.
+<a class="link" href="gst-plugins-base-libs-gstrtspdefs.html#GST-RTSP-ETIMEOUT:CAPS"><span class="type">GST_RTSP_ETIMEOUT</span></a> when <em class="parameter"><code>timeout</code></em>
+was reached.
+<a class="link" href="gst-plugins-base-libs-gstrtspdefs.html#GST-RTSP-EINTR:CAPS"><span class="type">GST_RTSP_EINTR</span></a> when <em class="parameter"><code>watch</code></em>
+is flushing
+<a class="link" href="gst-plugins-base-libs-gstrtspdefs.html#GST-RTSP-EINVAL:CAPS"><span class="type">GST_RTSP_EINVAL</span></a> when called with invalid parameters.</p>
+<p></p>
+</div>
+<p class="since">Since 1.4</p>
 </div>
 </div>
 <div class="refsect1">
@@ -1986,6 +2046,10 @@
                                          GstRTSPMessage *message, guint id,
                                          gpointer user_data);
   GstRTSPResult     (*tunnel_lost)      (GstRTSPWatch *watch, gpointer user_data);
+  GstRTSPResult     (*tunnel_http_response) (GstRTSPWatch *watch,
+                                             GstRTSPMessage *request,
+                                             GstRTSPMessage *response,
+                                             gpointer user_data);
 } GstRTSPWatchFuncs;
 </pre>
 <p>Callback functions from a <a class="link" href="gst-plugins-base-libs-gstrtspconnection.html#GstRTSPWatch" title="GstRTSPWatch"><span class="type">GstRTSPWatch</span></a>.</p>
@@ -2043,6 +2107,13 @@
 <td class="struct_member_description"><p>callback when the post connection of a tunnel is closed.</p></td>
 <td class="struct_member_annotations"> </td>
 </tr>
+<tr>
+<td class="struct_member_name"><p><em class="structfield"><code><a name="GstRTSPWatchFuncs.tunnel-http-response"></a>tunnel_http_response</code></em> ()</p></td>
+<td class="struct_member_description"><p>callback when an HTTP response to the GET request
+is about to be sent for a tunneled connection. The response can be
+modified in the callback. Since 1.4.</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
 </tbody>
 </table></div>
 </div>
diff --git a/docs/libs/html/gst-plugins-base-libs-gstrtspdefs.html b/docs/libs/html/gst-plugins-base-libs-gstrtspdefs.html
index 6fc2b73..b865c06 100644
--- a/docs/libs/html/gst-plugins-base-libs-gstrtspdefs.html
+++ b/docs/libs/html/gst-plugins-base-libs-gstrtspdefs.html
@@ -188,8 +188,7 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gstrtspdefs.description"></a><h2>Description</h2>
-<p>Provides common defines for the RTSP library. </p>
-<p>Last reviewed on 2007-07-24 (0.10.14)</p>
+<p>Provides common defines for the RTSP library.</p>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gstrtspdefs.functions_details"></a><h2>Functions</h2>
@@ -452,7 +451,7 @@
 <p> a <a class="link" href="gst-plugins-base-libs-gstrtspdefs.html#GstRTSPMethod" title="enum GstRTSPMethod"><span class="type">GstRTSPMethod</span></a></p>
 <p></p>
 </div>
-<p class="since">Since 1.1.1</p>
+<p class="since">Since 1.2</p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1409,6 +1408,11 @@
 <td> </td>
 </tr>
 <tr>
+<td class="enum_member_name"><p><a name="GST-RTSP-HDR-KEYMGMT:CAPS"></a>GST_RTSP_HDR_KEYMGMT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
 <td class="enum_member_name"><p><a name="GST-RTSP-HDR-LAST:CAPS"></a>GST_RTSP_HDR_LAST</p></td>
 <td> </td>
 <td> </td>
@@ -1621,6 +1625,11 @@
 <td> </td>
 </tr>
 <tr>
+<td class="enum_member_name"><p><a name="GST-RTSP-STS-KEY-MANAGEMENT-FAILURE:CAPS"></a>GST_RTSP_STS_KEY_MANAGEMENT_FAILURE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
 <td class="enum_member_name"><p><a name="GST-RTSP-STS-INTERNAL-SERVER-ERROR:CAPS"></a>GST_RTSP_STS_INTERNAL_SERVER_ERROR</p></td>
 <td> </td>
 <td> </td>
diff --git a/docs/libs/html/gst-plugins-base-libs-gstrtspextension.html b/docs/libs/html/gst-plugins-base-libs-gstrtspextension.html
index eb2e093..3f08058 100644
--- a/docs/libs/html/gst-plugins-base-libs-gstrtspextension.html
+++ b/docs/libs/html/gst-plugins-base-libs-gstrtspextension.html
@@ -69,7 +69,6 @@
  exentension (rtspwms) and the RealMedia RTSP extension (rtspreal).
 </p>
 </div>
-<p>Last reviewed on 2007-07-25 (0.10.14)</p>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gstrtspextension.functions_details"></a><h2>Functions</h2>
diff --git a/docs/libs/html/gst-plugins-base-libs-gstrtspmessage.html b/docs/libs/html/gst-plugins-base-libs-gstrtspmessage.html
index c77d093..1f47630 100644
--- a/docs/libs/html/gst-plugins-base-libs-gstrtspmessage.html
+++ b/docs/libs/html/gst-plugins-base-libs-gstrtspmessage.html
@@ -267,7 +267,6 @@
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gstrtspmessage.description"></a><h2>Description</h2>
 <p>Provides methods for creating and parsing request, response and data messages.</p>
-<p>Last reviewed on 2007-07-25 (0.10.14)</p>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gstrtspmessage.functions_details"></a><h2>Functions</h2>
diff --git a/docs/libs/html/gst-plugins-base-libs-gstrtsprange.html b/docs/libs/html/gst-plugins-base-libs-gstrtsprange.html
index 08c89e5..c8dc853 100644
--- a/docs/libs/html/gst-plugins-base-libs-gstrtsprange.html
+++ b/docs/libs/html/gst-plugins-base-libs-gstrtsprange.html
@@ -127,7 +127,6 @@
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gstrtsprange.description"></a><h2>Description</h2>
 <p>Provides helper functions to deal with time ranges.</p>
-<p>Last reviewed on 2007-07-25 (0.10.14)</p>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gstrtsprange.functions_details"></a><h2>Functions</h2>
@@ -215,7 +214,7 @@
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> on success.</p>
 <p></p>
 </div>
-<p class="since">Since 1.1.1</p>
+<p class="since">Since 1.2</p>
 </div>
 <hr>
 <div class="refsect2">
@@ -399,12 +398,12 @@
 </tr>
 <tr>
 <td class="struct_member_name"><p><a class="link" href="gst-plugins-base-libs-gstrtsprange.html#GstRTSPTime2" title="struct GstRTSPTime2"><span class="type">GstRTSPTime2</span></a> <em class="structfield"><code><a name="GstRTSPTimeRange.min2"></a>min2</code></em>;</p></td>
-<td class="struct_member_description"><p>extra fields in the minimum interval (Since: 1.1.1)</p></td>
+<td class="struct_member_description"><p>extra fields in the minimum interval (Since: 1.2)</p></td>
 <td class="struct_member_annotations"> </td>
 </tr>
 <tr>
 <td class="struct_member_name"><p><a class="link" href="gst-plugins-base-libs-gstrtsprange.html#GstRTSPTime2" title="struct GstRTSPTime2"><span class="type">GstRTSPTime2</span></a> <em class="structfield"><code><a name="GstRTSPTimeRange.max2"></a>max2</code></em>;</p></td>
-<td class="struct_member_description"><p>extra fields in the maximum interval (Since: 1.1.1)</p></td>
+<td class="struct_member_description"><p>extra fields in the maximum interval (Since: 1.2)</p></td>
 <td class="struct_member_annotations"> </td>
 </tr>
 </tbody>
@@ -489,7 +488,7 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since 1.1.1</p>
+<p class="since">Since 1.2</p>
 </div>
 <hr>
 <div class="refsect2">
diff --git a/docs/libs/html/gst-plugins-base-libs-gstrtsptransport.html b/docs/libs/html/gst-plugins-base-libs-gstrtsptransport.html
index 4302e2b..183a3bb 100644
--- a/docs/libs/html/gst-plugins-base-libs-gstrtsptransport.html
+++ b/docs/libs/html/gst-plugins-base-libs-gstrtsptransport.html
@@ -143,7 +143,6 @@
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gstrtsptransport.description"></a><h2>Description</h2>
 <p>Provides helper functions to deal with RTSP transport strings.</p>
-<p>Last reviewed on 2007-07-25 (0.10.14)</p>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gstrtsptransport.functions_details"></a><h2>Functions</h2>
@@ -275,11 +274,17 @@
 <pre class="programlisting"><a class="link" href="gst-plugins-base-libs-gstrtspdefs.html#GstRTSPResult" title="enum GstRTSPResult"><span class="returnvalue">GstRTSPResult</span></a>
 gst_rtsp_transport_get_mime (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstrtsptransport.html#GstRTSPTransMode" title="enum GstRTSPTransMode"><span class="type">GstRTSPTransMode</span></a> trans</code></em>,
                              <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> **mime</code></em>);</pre>
+<div class="warning">
+<p><code class="literal">gst_rtsp_transport_get_mime</code> is deprecated and should not be used in newly-written code.</p>
+<p>This functions only deals with the GstRTSPTransMode and only</p>
+</div>
 <p>Get the mime type of the transport mode <em class="parameter"><code>trans</code></em>
 . This mime type is typically
-used to generate <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a> on buffers.</p>
+used to generate <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a> events.</p>
+<p>returns the mime type for <a class="link" href="gst-plugins-base-libs-gstrtsptransport.html#GST-RTSP-PROFILE-AVP:CAPS"><span class="type">GST_RTSP_PROFILE_AVP</span></a>. Use
+   <code class="function">gst_rtsp_transport_get_media_type()</code> instead.</p>
 <div class="refsect3">
-<a name="id-1.2.10.8.8.6.5"></a><h4>Parameters</h4>
+<a name="id-1.2.10.8.8.6.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -301,8 +306,8 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.10.8.8.6.6"></a><h4>Returns</h4>
-<p> <a class="link" href="gst-plugins-base-libs-gstrtspdefs.html#GST-RTSP-OK:CAPS"><span class="type">GST_RTSP_OK</span></a>. </p>
+<a name="id-1.2.10.8.8.6.8"></a><h4>Returns</h4>
+<p> <a class="link" href="gst-plugins-base-libs-gstrtspdefs.html#GST-RTSP-OK:CAPS"><span class="type">GST_RTSP_OK</span></a>.</p>
 <p></p>
 </div>
 </div>
@@ -446,14 +451,28 @@
 <tr>
 <td class="enum_member_name"><p><a name="GST-RTSP-PROFILE-AVP:CAPS"></a>GST_RTSP_PROFILE_AVP</p></td>
 <td class="enum_member_description">
-<p>the Audio/Visual profile</p>
+<p>the Audio/Visual profile (RFC 3551)</p>
 </td>
 <td class="enum_member_annotations"> </td>
 </tr>
 <tr>
 <td class="enum_member_name"><p><a name="GST-RTSP-PROFILE-SAVP:CAPS"></a>GST_RTSP_PROFILE_SAVP</p></td>
 <td class="enum_member_description">
-<p>the secure Audio/Visual profile</p>
+<p>the secure Audio/Visual profile (RFC 3711)</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-RTSP-PROFILE-AVPF:CAPS"></a>GST_RTSP_PROFILE_AVPF</p></td>
+<td class="enum_member_description">
+<p>the Audio/Visual profile with feedback (RFC 4585)</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-RTSP-PROFILE-SAVPF:CAPS"></a>GST_RTSP_PROFILE_SAVPF</p></td>
+<td class="enum_member_description">
+<p>the secure Audio/Visual profile with feedback (RFC 5124)</p>
 </td>
 <td class="enum_member_annotations"> </td>
 </tr>
diff --git a/docs/libs/html/gst-plugins-base-libs-gstrtspurl.html b/docs/libs/html/gst-plugins-base-libs-gstrtspurl.html
index d4da2f1..44ae396 100644
--- a/docs/libs/html/gst-plugins-base-libs-gstrtspurl.html
+++ b/docs/libs/html/gst-plugins-base-libs-gstrtspurl.html
@@ -131,7 +131,6 @@
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gstrtspurl.description"></a><h2>Description</h2>
 <p>Provides helper functions to handle RTSP urls.</p>
-<p>Last reviewed on 2007-07-25 (0.10.14)</p>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gstrtspurl.functions_details"></a><h2>Functions</h2>
@@ -356,8 +355,9 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.10.9.8.8.8"></a><h4>Returns</h4>
-<p> a string vector. <a href="http://library.gnome.org/devel/glib/unstable/glib-String-Utility-Functions.html#g-strfreev"><code class="function">g_strfreev()</code></a> after usage.</p>
-<p></p>
+<p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>-terminated array of URL components. Free with
+<a href="http://library.gnome.org/devel/glib/unstable/glib-String-Utility-Functions.html#g-strfreev"><code class="function">g_strfreev()</code></a> when no longer needed. </p>
+<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
 </div>
 </div>
 </div>
diff --git a/docs/libs/html/gst-plugins-base-libs-gstsdpmessage.html b/docs/libs/html/gst-plugins-base-libs-gstsdpmessage.html
index e09aa2e..9ee1280 100644
--- a/docs/libs/html/gst-plugins-base-libs-gstsdpmessage.html
+++ b/docs/libs/html/gst-plugins-base-libs-gstsdpmessage.html
@@ -7,7 +7,7 @@
 <link rel="home" href="index.html" title="GStreamer Base Plugins 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-sdp.html" title="SDP Library">
 <link rel="prev" href="gstreamer-sdp.html" title="SDP Library">
-<link rel="next" href="gstreamer-tag.html" title="Tag Support Library">
+<link rel="next" href="gstreamer-mikey.html" title="MIKEY Library">
 <meta name="generator" content="GTK-Doc V1.20 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
@@ -21,7 +21,7 @@
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="gstreamer-sdp.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
 <td><a accesskey="p" href="gstreamer-sdp.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="gstreamer-tag.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="gstreamer-mikey.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
 <a name="gst-plugins-base-libs-gstsdpmessage"></a><div class="titlepage"></div>
@@ -1046,7 +1046,6 @@
 messages.
 </p>
 </div>
-<p>Last reviewed on 2007-07-24 (0.10.14)</p>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gstsdpmessage.functions_details"></a><h2>Functions</h2>
@@ -1252,7 +1251,7 @@
 <tr>
 <td class="parameter_name"><p>repeat</p></td>
 <td class="parameter_description"><p> the repeat times. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym>]</span></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> zero-terminated=1]</span></td>
 </tr>
 </tbody>
 </table></div>
@@ -1586,8 +1585,8 @@
 <tbody>
 <tr>
 <td class="parameter_name"><p>data</p></td>
-<td class="parameter_description"><p>the start of the buffer</p></td>
-<td class="parameter_annotations"> </td>
+<td class="parameter_description"><p> the start of the buffer. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=size]</span></td>
 </tr>
 <tr>
 <td class="parameter_name"><p>size</p></td>
@@ -1686,8 +1685,7 @@
 <p>Creates a uri from <em class="parameter"><code>msg</code></em>
  with the given <em class="parameter"><code>scheme</code></em>
 . The uri has the format:</p>
-<p> <em class="parameter"><code>scheme</code></em>
-:///[<span class="type">type</span>=value *[&amp;type=value]]</p>
+<p> @scheme:///[<span class="type">type</span>=value *[&amp;type=value]]</p>
 <p> Where each value is url encoded.</p>
 <div class="refsect3">
 <a name="id-1.2.11.3.8.19.7"></a><h4>Parameters</h4>
@@ -3143,7 +3141,7 @@
 <tr>
 <td class="parameter_name"><p>repeat</p></td>
 <td class="parameter_description"><p> the repeat times. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym>]</span></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> zero-terminated=1]</span></td>
 </tr>
 </tbody>
 </table></div>
@@ -3938,7 +3936,7 @@
 <tbody><tr>
 <td class="parameter_name"><p>media</p></td>
 <td class="parameter_description"><p> pointer to new <a class="link" href="gst-plugins-base-libs-gstsdpmessage.html#GstSDPMedia" title="GstSDPMedia"><span class="type">GstSDPMedia</span></a>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></td>
 </tr></tbody>
 </table></div>
 </div>
diff --git a/docs/libs/html/gst-plugins-base-libs-gststreamvolume.html b/docs/libs/html/gst-plugins-base-libs-gststreamvolume.html
index a8dd8f4..d1d2fd3 100644
--- a/docs/libs/html/gst-plugins-base-libs-gststreamvolume.html
+++ b/docs/libs/html/gst-plugins-base-libs-gststreamvolume.html
@@ -146,7 +146,7 @@
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gststreamvolume.description"></a><h2>Description</h2>
 <div class="refsect2">
-<a name="id-1.2.6.18.10.2"></a><p>
+<a name="id-1.2.6.17.10.2"></a><p>
 This interface is implemented by elements that provide a stream volume. Examples for
 such elements are <span class="type">volume</span> and <span class="type">playbin</span>.
 </p>
@@ -176,7 +176,7 @@
 gst_stream_volume_get_volume (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gststreamvolume.html#GstStreamVolume"><span class="type">GstStreamVolume</span></a> *volume</code></em>,
                               <em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gststreamvolume.html#GstStreamVolumeFormat" title="enum GstStreamVolumeFormat"><span class="type">GstStreamVolumeFormat</span></a> format</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.6.18.11.2.4"></a><h4>Parameters</h4>
+<a name="id-1.2.6.17.11.2.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -198,7 +198,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.18.11.2.5"></a><h4>Returns</h4>
+<a name="id-1.2.6.17.11.2.5"></a><h4>Returns</h4>
 <p> The current stream volume as linear factor</p>
 <p></p>
 </div>
@@ -211,7 +211,7 @@
                               <em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gststreamvolume.html#GstStreamVolumeFormat" title="enum GstStreamVolumeFormat"><span class="type">GstStreamVolumeFormat</span></a> format</code></em>,
                               <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> val</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.6.18.11.3.4"></a><h4>Parameters</h4>
+<a name="id-1.2.6.17.11.3.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -245,7 +245,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_stream_volume_get_mute (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gststreamvolume.html#GstStreamVolume"><span class="type">GstStreamVolume</span></a> *volume</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.6.18.11.4.4"></a><h4>Parameters</h4>
+<a name="id-1.2.6.17.11.4.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -260,7 +260,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.18.11.4.5"></a><h4>Returns</h4>
+<a name="id-1.2.6.17.11.4.5"></a><h4>Returns</h4>
 <p> Returns <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the stream is muted</p>
 <p></p>
 </div>
@@ -272,7 +272,7 @@
 gst_stream_volume_set_mute (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gststreamvolume.html#GstStreamVolume"><span class="type">GstStreamVolume</span></a> *volume</code></em>,
                             <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> mute</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.6.18.11.5.4"></a><h4>Parameters</h4>
+<a name="id-1.2.6.17.11.5.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -302,7 +302,7 @@
                                   <em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gststreamvolume.html#GstStreamVolumeFormat" title="enum GstStreamVolumeFormat"><span class="type">GstStreamVolumeFormat</span></a> to</code></em>,
                                   <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> val</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.6.18.11.6.4"></a><h4>Parameters</h4>
+<a name="id-1.2.6.17.11.6.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -330,7 +330,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.6.18.11.6.5"></a><h4>Returns</h4>
+<a name="id-1.2.6.17.11.6.5"></a><h4>Returns</h4>
 <p> the converted volume</p>
 <p></p>
 </div>
@@ -350,7 +350,7 @@
 <p>Formulas to convert from a linear to a cubic or dB volume are
 cbrt(val) and 20 * log10 (val).</p>
 <div class="refsect3">
-<a name="id-1.2.6.18.12.3.5"></a><h4>Members</h4>
+<a name="id-1.2.6.17.12.3.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
diff --git a/docs/libs/html/gst-plugins-base-libs-gsttag.html b/docs/libs/html/gst-plugins-base-libs-gsttag.html
index 21e5365..49bfacf 100644
--- a/docs/libs/html/gst-plugins-base-libs-gsttag.html
+++ b/docs/libs/html/gst-plugins-base-libs-gsttag.html
@@ -227,7 +227,7 @@
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gsttag.description"></a><h2>Description</h2>
 <div class="refsect2">
-<a name="id-1.2.12.3.7.2"></a><p>
+<a name="id-1.2.13.3.7.2"></a><p>
 Contains additional standardized GStreamer tag definitions for plugins
 and applications, and functions to register them with the GStreamer
 tag system.
@@ -261,7 +261,7 @@
 are specified, the current locale will be tried. If that also doesn't work,
 WINDOWS-1252/ISO-8859-1 is assumed (which will almost always succeed).</p>
 <div class="refsect3">
-<a name="id-1.2.12.3.8.3.5"></a><h4>Parameters</h4>
+<a name="id-1.2.13.3.8.3.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -289,7 +289,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.12.3.8.3.6"></a><h4>Returns</h4>
+<a name="id-1.2.13.3.8.3.6"></a><h4>Returns</h4>
 <p> a newly-allocated string in UTF-8 encoding, or NULL</p>
 <p></p>
 </div>
@@ -315,7 +315,7 @@
 may also be set to NULL by this function if there is no key or no language
 code in the extended comment string.</p>
 <div class="refsect3">
-<a name="id-1.2.12.3.8.4.6"></a><h4>Parameters</h4>
+<a name="id-1.2.13.3.8.4.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -352,7 +352,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.12.3.8.4.7"></a><h4>Returns</h4>
+<a name="id-1.2.13.3.8.4.7"></a><h4>Returns</h4>
 <p> TRUE if the string could be parsed, otherwise FALSE</p>
 <p></p>
 </div>
@@ -666,7 +666,7 @@
 <p>Type of image contained in an image tag (specified as "image-type" field in
 the info structure in the image's <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstSample.html#GstSample"><span class="type">GstSample</span></a>)</p>
 <div class="refsect3">
-<a name="id-1.2.12.3.9.35.4"></a><h4>Members</h4>
+<a name="id-1.2.13.3.9.35.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
diff --git a/docs/libs/html/gst-plugins-base-libs-gsttagdemux.html b/docs/libs/html/gst-plugins-base-libs-gsttagdemux.html
index 1d32b84..d946559 100644
--- a/docs/libs/html/gst-plugins-base-libs-gsttagdemux.html
+++ b/docs/libs/html/gst-plugins-base-libs-gsttagdemux.html
@@ -69,7 +69,7 @@
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gsttagdemux.description"></a><h2>Description</h2>
 <div class="refsect2">
-<a name="id-1.2.12.9.6.2"></a><h3>Deriving from GstTagDemux</h3>
+<a name="id-1.2.13.9.6.2"></a><h3>Deriving from GstTagDemux</h3>
 <p>
 Provides a base class for demuxing tags at the beginning or end of a
 stream and handles things like typefinding, querying, seeking, and
@@ -126,7 +126,7 @@
 </pre>
 <p>Opaque <a class="link" href="gst-plugins-base-libs-gsttagdemux.html#GstTagDemux" title="struct GstTagDemux"><span class="type">GstTagDemux</span></a> structure.</p>
 <div class="refsect3">
-<a name="id-1.2.12.9.8.2.5"></a><h4>Members</h4>
+<a name="id-1.2.13.9.8.2.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -179,7 +179,7 @@
 <p>The <a class="link" href="gst-plugins-base-libs-gsttagdemux.html#GstTagDemuxClass" title="struct GstTagDemuxClass"><span class="type">GstTagDemuxClass</span></a> structure.  See documentation at beginning of section
 for details about what subclasses need to override and do.</p>
 <div class="refsect3">
-<a name="id-1.2.12.9.8.3.5"></a><h4>Members</h4>
+<a name="id-1.2.13.9.8.3.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -240,7 +240,7 @@
 <a name="GstTagDemuxResult"></a><h3>enum GstTagDemuxResult</h3>
 <p>Result values from the parse_tag virtual function.</p>
 <div class="refsect3">
-<a name="id-1.2.12.9.8.4.4"></a><h4>Members</h4>
+<a name="id-1.2.13.9.8.4.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
diff --git a/docs/libs/html/gst-plugins-base-libs-gsttagexif.html b/docs/libs/html/gst-plugins-base-libs-gsttagexif.html
index dde9aea..07938c8 100644
--- a/docs/libs/html/gst-plugins-base-libs-gsttagexif.html
+++ b/docs/libs/html/gst-plugins-base-libs-gsttagexif.html
@@ -103,7 +103,7 @@
 <p>Formats the tags in taglist on exif format. The resulting buffer contains
 the tags IFD and is followed by the data pointed by the tag entries.</p>
 <div class="refsect3">
-<a name="id-1.2.12.6.7.2.5"></a><h4>Parameters</h4>
+<a name="id-1.2.13.6.7.2.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -130,7 +130,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.12.6.7.2.6"></a><h4>Returns</h4>
+<a name="id-1.2.13.6.7.2.6"></a><h4>Returns</h4>
 <p> A GstBuffer containing the tag entries followed by the tag data</p>
 <p></p>
 </div>
@@ -144,7 +144,7 @@
 <p>Formats the tags in taglist into exif structure, a tiff header
 is put in the beginning of the buffer.</p>
 <div class="refsect3">
-<a name="id-1.2.12.6.7.3.5"></a><h4>Parameters</h4>
+<a name="id-1.2.13.6.7.3.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -159,7 +159,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.12.6.7.3.6"></a><h4>Returns</h4>
+<a name="id-1.2.13.6.7.3.6"></a><h4>Returns</h4>
 <p> A GstBuffer containing the data</p>
 <p></p>
 </div>
@@ -176,7 +176,7 @@
 the tag entries and be able to get the offset relative to the buffer
 start</p>
 <div class="refsect3">
-<a name="id-1.2.12.6.7.4.5"></a><h4>Parameters</h4>
+<a name="id-1.2.13.6.7.4.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -203,7 +203,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.12.6.7.4.6"></a><h4>Returns</h4>
+<a name="id-1.2.13.6.7.4.6"></a><h4>Returns</h4>
 <p> The parsed taglist</p>
 <p></p>
 </div>
@@ -216,7 +216,7 @@
                                (<em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstBuffer.html#GstBuffer"><span class="type">GstBuffer</span></a> *buffer</code></em>);</pre>
 <p>Parses the exif tags starting with a tiff header structure.</p>
 <div class="refsect3">
-<a name="id-1.2.12.6.7.5.5"></a><h4>Parameters</h4>
+<a name="id-1.2.13.6.7.5.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -231,7 +231,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.12.6.7.5.6"></a><h4>Returns</h4>
+<a name="id-1.2.13.6.7.5.6"></a><h4>Returns</h4>
 <p> The taglist</p>
 <p></p>
 </div>
diff --git a/docs/libs/html/gst-plugins-base-libs-gsttagid3.html b/docs/libs/html/gst-plugins-base-libs-gsttagid3.html
index 05ad2ab..fbebee5 100644
--- a/docs/libs/html/gst-plugins-base-libs-gsttagid3.html
+++ b/docs/libs/html/gst-plugins-base-libs-gsttagid3.html
@@ -125,7 +125,7 @@
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gsttagid3.description"></a><h2>Description</h2>
 <div class="refsect2">
-<a name="id-1.2.12.5.6.2"></a><p>
+<a name="id-1.2.13.5.6.2"></a><p>
 Contains various utility functions for plugins to parse or create
 ID3 tags and map ID3v2 identifiers to and from GStreamer identifiers.
 </p>
@@ -140,7 +140,7 @@
 <p>Gets the number of ID3v1 genres that can be identified. Winamp genres are 
 included.</p>
 <div class="refsect3">
-<a name="id-1.2.12.5.7.2.5"></a><h4>Returns</h4>
+<a name="id-1.2.13.5.7.2.5"></a><h4>Returns</h4>
 <p> the number of ID3v1 genres that can be identified</p>
 <p></p>
 </div>
@@ -152,7 +152,7 @@
 gst_tag_id3_genre_get (<em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> id</code></em>);</pre>
 <p>Gets the ID3v1 genre name for a given ID.</p>
 <div class="refsect3">
-<a name="id-1.2.12.5.7.3.5"></a><h4>Parameters</h4>
+<a name="id-1.2.13.5.7.3.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -167,7 +167,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.12.5.7.3.6"></a><h4>Returns</h4>
+<a name="id-1.2.13.5.7.3.6"></a><h4>Returns</h4>
 <p> the genre or NULL if no genre is associated with that ID.</p>
 <p></p>
 </div>
@@ -180,7 +180,7 @@
 <p>Parses the data containing an ID3v1 tag and returns a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstTagList.html#GstTagList"><span class="type">GstTagList</span></a> from the
 parsed data.</p>
 <div class="refsect3">
-<a name="id-1.2.12.5.7.4.5"></a><h4>Parameters</h4>
+<a name="id-1.2.13.5.7.4.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -195,7 +195,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.12.5.7.4.6"></a><h4>Returns</h4>
+<a name="id-1.2.13.5.7.4.6"></a><h4>Returns</h4>
 <p> A new tag list or NULL if the data was not an ID3v1 tag.</p>
 <p></p>
 </div>
@@ -207,7 +207,7 @@
 gst_tag_from_id3_tag (<em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *id3_tag</code></em>);</pre>
 <p>Looks up the GStreamer tag for a ID3v2 tag.</p>
 <div class="refsect3">
-<a name="id-1.2.12.5.7.5.5"></a><h4>Parameters</h4>
+<a name="id-1.2.13.5.7.5.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -222,7 +222,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.12.5.7.5.6"></a><h4>Returns</h4>
+<a name="id-1.2.13.5.7.5.6"></a><h4>Returns</h4>
 <p> The corresponding GStreamer tag or NULL if none exists.</p>
 <p></p>
 </div>
@@ -236,7 +236,7 @@
 <p>Looks up the GStreamer tag for an ID3v2 user tag (e.g. description in
 TXXX frame or owner in UFID frame).</p>
 <div class="refsect3">
-<a name="id-1.2.12.5.7.6.5"></a><h4>Parameters</h4>
+<a name="id-1.2.13.5.7.6.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -258,7 +258,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.12.5.7.6.6"></a><h4>Returns</h4>
+<a name="id-1.2.13.5.7.6.6"></a><h4>Returns</h4>
 <p> The corresponding GStreamer tag or NULL if none exists.</p>
 <p></p>
 </div>
@@ -270,7 +270,7 @@
 gst_tag_to_id3_tag (<em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *gst_tag</code></em>);</pre>
 <p>Looks up the ID3v2 tag for a GStreamer tag.</p>
 <div class="refsect3">
-<a name="id-1.2.12.5.7.7.5"></a><h4>Parameters</h4>
+<a name="id-1.2.13.5.7.7.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -285,7 +285,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.12.5.7.7.6"></a><h4>Returns</h4>
+<a name="id-1.2.13.5.7.7.6"></a><h4>Returns</h4>
 <p> The corresponding ID3v2 tag or NULL if none exists.</p>
 <p></p>
 </div>
@@ -302,7 +302,7 @@
 to the given tag list. Also see <code class="function">gst_tag_image_data_to_image_sample()</code> for
 more information on image tags in GStreamer.</p>
 <div class="refsect3">
-<a name="id-1.2.12.5.7.8.5"></a><h4>Parameters</h4>
+<a name="id-1.2.13.5.7.8.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -336,7 +336,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.12.5.7.8.6"></a><h4>Returns</h4>
+<a name="id-1.2.13.5.7.8.6"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the image was processed, otherwise <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a></p>
 <p></p>
 </div>
@@ -349,7 +349,7 @@
 <p>Determines size of an ID3v2 tag on buffer containing at least ID3v2 header,
 i.e. at least <a class="link" href="gst-plugins-base-libs-gsttag.html#GST-TAG-ID3V2-HEADER-SIZE:CAPS" title="GST_TAG_ID3V2_HEADER_SIZE"><span class="type">GST_TAG_ID3V2_HEADER_SIZE</span></a> (10) bytes;</p>
 <div class="refsect3">
-<a name="id-1.2.12.5.7.9.5"></a><h4>Parameters</h4>
+<a name="id-1.2.13.5.7.9.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -364,7 +364,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.12.5.7.9.6"></a><h4>Returns</h4>
+<a name="id-1.2.13.5.7.9.6"></a><h4>Returns</h4>
 <p> Size of tag, or 0 if header is invalid or too small.</p>
 <p></p>
 </div>
@@ -377,7 +377,7 @@
 <p>Creates a new tag list that contains the information parsed out of a
 ID3 tag.</p>
 <div class="refsect3">
-<a name="id-1.2.12.5.7.10.5"></a><h4>Parameters</h4>
+<a name="id-1.2.13.5.7.10.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -392,7 +392,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.12.5.7.10.6"></a><h4>Returns</h4>
+<a name="id-1.2.13.5.7.10.6"></a><h4>Returns</h4>
 <p> A new <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstTagList.html#GstTagList"><span class="type">GstTagList</span></a> with all tags that could be extracted from the
 given vorbiscomment buffer or NULL on error.</p>
 <p></p>
diff --git a/docs/libs/html/gst-plugins-base-libs-gsttaglanguagecodes.html b/docs/libs/html/gst-plugins-base-libs-gsttaglanguagecodes.html
index a0b4f06..d379d89 100644
--- a/docs/libs/html/gst-plugins-base-libs-gsttaglanguagecodes.html
+++ b/docs/libs/html/gst-plugins-base-libs-gsttaglanguagecodes.html
@@ -106,7 +106,7 @@
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gsttaglanguagecodes.description"></a><h2>Description</h2>
 <div class="refsect2">
-<a name="id-1.2.12.11.6.2"></a><p>
+<a name="id-1.2.13.11.6.2"></a><p>
 Provides helper functions to convert between the various ISO-639 language
 codes, and to map language codes to language names.
 </p>
@@ -123,7 +123,7 @@
 tagging purposes (e.g. to tag an audio track appropriately in a video or
 audio editor).</p>
 <div class="refsect3">
-<a name="id-1.2.12.11.7.2.5"></a><h4>Returns</h4>
+<a name="id-1.2.13.11.7.2.5"></a><h4>Returns</h4>
 <p> NULL-terminated string array with two-letter
 language codes. Free with <a href="http://library.gnome.org/devel/glib/unstable/glib-String-Utility-Functions.html#g-strfreev"><code class="function">g_strfreev()</code></a> when no longer needed. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
@@ -140,7 +140,7 @@
 iso-codes package, otherwise the English name will be returned).</p>
 <p>Language codes are case-sensitive and expected to be lower case.</p>
 <div class="refsect3">
-<a name="id-1.2.12.11.7.3.6"></a><h4>Parameters</h4>
+<a name="id-1.2.13.11.7.3.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -155,7 +155,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.12.11.7.3.7"></a><h4>Returns</h4>
+<a name="id-1.2.13.11.7.3.7"></a><h4>Returns</h4>
 <p> language name in UTF-8 format, or NULL if <em class="parameter"><code>language_code</code></em>
 could
 not be mapped to a language name. The returned string must not be
@@ -170,7 +170,7 @@
 <pre class="programlisting">#define             gst_tag_get_language_code(lang_code)</pre>
 <p>Convenience macro wrapping <a class="link" href="gst-plugins-base-libs-gsttaglanguagecodes.html#gst-tag-get-language-code-iso-639-1" title="gst_tag_get_language_code_iso_639_1 ()"><code class="function">gst_tag_get_language_code_iso_639_1()</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.2.12.11.7.4.5"></a><h4>Parameters</h4>
+<a name="id-1.2.13.11.7.4.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -195,7 +195,7 @@
 convenience).</p>
 <p>Language codes are case-sensitive and expected to be lower case.</p>
 <div class="refsect3">
-<a name="id-1.2.12.11.7.5.6"></a><h4>Parameters</h4>
+<a name="id-1.2.13.11.7.5.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -210,7 +210,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.12.11.7.5.7"></a><h4>Returns</h4>
+<a name="id-1.2.13.11.7.5.7"></a><h4>Returns</h4>
 <p> two-letter ISO-639-1 language code string that maps to <em class="parameter"><code>lang_code</code></em>
 ,
 or NULL if no mapping is known. The returned string must not be
@@ -231,7 +231,7 @@
 "terminological" codes are prefered.</p>
 <p>Language codes are case-sensitive and expected to be lower case.</p>
 <div class="refsect3">
-<a name="id-1.2.12.11.7.6.7"></a><h4>Parameters</h4>
+<a name="id-1.2.13.11.7.6.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -246,7 +246,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.12.11.7.6.8"></a><h4>Returns</h4>
+<a name="id-1.2.13.11.7.6.8"></a><h4>Returns</h4>
 <p> three-letter ISO-639-2 language code string that maps to <em class="parameter"><code>lang_code</code></em>
 ,
 or NULL if no mapping is known. The returned string must not be
@@ -267,7 +267,7 @@
 "terminological" codes are prefered over the "bibliographic" ones.</p>
 <p>Language codes are case-sensitive and expected to be lower case.</p>
 <div class="refsect3">
-<a name="id-1.2.12.11.7.7.7"></a><h4>Parameters</h4>
+<a name="id-1.2.13.11.7.7.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -282,7 +282,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.12.11.7.7.8"></a><h4>Returns</h4>
+<a name="id-1.2.13.11.7.7.8"></a><h4>Returns</h4>
 <p> three-letter ISO-639-2 language code string that maps to <em class="parameter"><code>lang_code</code></em>
 ,
 or NULL if no mapping is known. The returned string must not be
@@ -301,7 +301,7 @@
 tag) or a free-form language name descriptor (which should be put into a
 <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstTagList.html#GST-TAG-LANGUAGE-NAME:CAPS"><span class="type">GST_TAG_LANGUAGE_NAME</span></a> tag instead).</p>
 <div class="refsect3">
-<a name="id-1.2.12.11.7.8.6"></a><h4>Parameters</h4>
+<a name="id-1.2.13.11.7.8.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -316,7 +316,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.12.11.7.8.7"></a><h4>Returns</h4>
+<a name="id-1.2.13.11.7.8.7"></a><h4>Returns</h4>
 <p> TRUE if the two- or three-letter language code in <em class="parameter"><code>lang_code</code></em>
 is a valid ISO-639 language code.</p>
 <p></p>
diff --git a/docs/libs/html/gst-plugins-base-libs-gsttaglicenses.html b/docs/libs/html/gst-plugins-base-libs-gsttaglicenses.html
index 8c790dc..f244d16 100644
--- a/docs/libs/html/gst-plugins-base-libs-gsttaglicenses.html
+++ b/docs/libs/html/gst-plugins-base-libs-gsttaglicenses.html
@@ -133,7 +133,7 @@
 <p>Get the flags of a license, which describe most of the features of
 a license in their most general form.</p>
 <div class="refsect3">
-<a name="id-1.2.12.12.8.2.5"></a><h4>Parameters</h4>
+<a name="id-1.2.13.12.8.2.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -149,7 +149,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.12.12.8.2.6"></a><h4>Returns</h4>
+<a name="id-1.2.13.12.8.2.6"></a><h4>Returns</h4>
 <p> the flags of the license, or 0 if the license is unknown</p>
 <p></p>
 </div>
@@ -162,7 +162,7 @@
 <p>Get the nick name of a license, which is a short (untranslated) string
 such as e.g. "CC BY-NC-ND 2.0 UK".</p>
 <div class="refsect3">
-<a name="id-1.2.12.12.8.3.5"></a><h4>Parameters</h4>
+<a name="id-1.2.13.12.8.3.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -178,7 +178,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.12.12.8.3.6"></a><h4>Returns</h4>
+<a name="id-1.2.13.12.8.3.6"></a><h4>Returns</h4>
 <p> the nick name of the license, or NULL if the license is unknown</p>
 <p></p>
 </div>
@@ -191,7 +191,7 @@
 <p>Get the title of a license, which is a short translated description
 of the license's features (generally not very pretty though).</p>
 <div class="refsect3">
-<a name="id-1.2.12.12.8.4.5"></a><h4>Parameters</h4>
+<a name="id-1.2.13.12.8.4.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -207,7 +207,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.12.12.8.4.6"></a><h4>Returns</h4>
+<a name="id-1.2.13.12.8.4.6"></a><h4>Returns</h4>
 <p> the title of the license, or NULL if the license is unknown or
 no title is available.</p>
 <p></p>
@@ -221,7 +221,7 @@
 <p>Get the description of a license, which is a translated description
 of the license's main features.</p>
 <div class="refsect3">
-<a name="id-1.2.12.12.8.5.5"></a><h4>Parameters</h4>
+<a name="id-1.2.13.12.8.5.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -237,7 +237,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.12.12.8.5.6"></a><h4>Returns</h4>
+<a name="id-1.2.13.12.8.5.6"></a><h4>Returns</h4>
 <p> the description of the license, or NULL if the license is unknown
 or a description is not available.</p>
 <p></p>
@@ -255,7 +255,7 @@
 dk, es, fi, fr, hr, hu, il, in, it, jp, kr, mk, mt, mx, my, nl, pe, pl,
 pt, scotland, se, si, tw, uk, us, za.</p>
 <div class="refsect3">
-<a name="id-1.2.12.12.8.6.6"></a><h4>Parameters</h4>
+<a name="id-1.2.13.12.8.6.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -271,7 +271,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.12.12.8.6.7"></a><h4>Returns</h4>
+<a name="id-1.2.13.12.8.6.7"></a><h4>Returns</h4>
 <p> the jurisdiction code of the license, or NULL if the license is
 unknown or is not specific to a particular jurisdiction.</p>
 <p></p>
@@ -284,7 +284,7 @@
 gst_tag_get_license_version (<em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *license_ref</code></em>);</pre>
 <p>Get the version of a license.</p>
 <div class="refsect3">
-<a name="id-1.2.12.12.8.7.5"></a><h4>Parameters</h4>
+<a name="id-1.2.13.12.8.7.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -300,7 +300,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.12.12.8.7.6"></a><h4>Returns</h4>
+<a name="id-1.2.13.12.8.7.6"></a><h4>Returns</h4>
 <p> the version of the license, or NULL if the license is not known or
 has no version</p>
 <p></p>
@@ -316,7 +316,7 @@
 (e.g. to tag an audio track appropriately in a video or audio editor, or
 an image in a camera application).</p>
 <div class="refsect3">
-<a name="id-1.2.12.12.8.8.5"></a><h4>Returns</h4>
+<a name="id-1.2.13.12.8.8.5"></a><h4>Returns</h4>
 <p> NULL-terminated array of license strings. Free
 with <a href="http://library.gnome.org/devel/glib/unstable/glib-String-Utility-Functions.html#g-strfreev"><code class="function">g_strfreev()</code></a> when no longer needed. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
@@ -329,7 +329,7 @@
 <a name="GstTagLicenseFlags"></a><h3>enum GstTagLicenseFlags</h3>
 <p>See http://creativecommons.org/ns for more information.</p>
 <div class="refsect3">
-<a name="id-1.2.12.12.9.2.4"></a><h4>Members</h4>
+<a name="id-1.2.13.12.9.2.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
diff --git a/docs/libs/html/gst-plugins-base-libs-gsttagmux.html b/docs/libs/html/gst-plugins-base-libs-gsttagmux.html
index 6024991..0e9f937 100644
--- a/docs/libs/html/gst-plugins-base-libs-gsttagmux.html
+++ b/docs/libs/html/gst-plugins-base-libs-gsttagmux.html
@@ -65,7 +65,7 @@
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gsttagmux.description"></a><h2>Description</h2>
 <div class="refsect2">
-<a name="id-1.2.12.10.6.2"></a><h3>Deriving from GstTagMux</h3>
+<a name="id-1.2.13.10.6.2"></a><h3>Deriving from GstTagMux</h3>
 <p>
 Provides a base class for adding tags at the beginning or end of a
 stream.
@@ -103,7 +103,7 @@
 </pre>
 <p>Opaque <a class="link" href="gst-plugins-base-libs-gsttagmux.html#GstTagMux" title="struct GstTagMux"><span class="type">GstTagMux</span></a> structure.</p>
 <div class="refsect3">
-<a name="id-1.2.12.10.8.2.5"></a><h4>Members</h4>
+<a name="id-1.2.13.10.8.2.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -132,7 +132,7 @@
 <p>The <a class="link" href="gst-plugins-base-libs-gsttagmux.html#GstTagMuxClass" title="struct GstTagMuxClass"><span class="type">GstTagMuxClass</span></a> structure. Subclasses need to override at least one
 of the two render vfuncs.</p>
 <div class="refsect3">
-<a name="id-1.2.12.10.8.3.5"></a><h4>Members</h4>
+<a name="id-1.2.13.10.8.3.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
diff --git a/docs/libs/html/gst-plugins-base-libs-gsttagvorbis.html b/docs/libs/html/gst-plugins-base-libs-gsttagvorbis.html
index debac1b..8563b49 100644
--- a/docs/libs/html/gst-plugins-base-libs-gsttagvorbis.html
+++ b/docs/libs/html/gst-plugins-base-libs-gsttagvorbis.html
@@ -111,7 +111,7 @@
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gsttagvorbis.description"></a><h2>Description</h2>
 <div class="refsect2">
-<a name="id-1.2.12.4.6.2"></a><p>
+<a name="id-1.2.13.4.6.2"></a><p>
 Contains various utility functions for plugins to parse or create
 vorbiscomments and map them to and from <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstTagList.html#GstTagList"><span class="type">GstTagList</span></a>s.
 </p>
@@ -125,7 +125,7 @@
 gst_tag_from_vorbis_tag (<em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *vorbis_tag</code></em>);</pre>
 <p>Looks up the GStreamer tag for a vorbiscomment tag.</p>
 <div class="refsect3">
-<a name="id-1.2.12.4.7.2.5"></a><h4>Parameters</h4>
+<a name="id-1.2.13.4.7.2.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -140,7 +140,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.12.4.7.2.6"></a><h4>Returns</h4>
+<a name="id-1.2.13.4.7.2.6"></a><h4>Returns</h4>
 <p> The corresponding GStreamer tag or NULL if none exists.</p>
 <p></p>
 </div>
@@ -152,7 +152,7 @@
 gst_tag_to_vorbis_tag (<em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *gst_tag</code></em>);</pre>
 <p>Looks up the vorbiscomment tag for a GStreamer tag.</p>
 <div class="refsect3">
-<a name="id-1.2.12.4.7.3.5"></a><h4>Parameters</h4>
+<a name="id-1.2.13.4.7.3.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -167,7 +167,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.12.4.7.3.6"></a><h4>Returns</h4>
+<a name="id-1.2.13.4.7.3.6"></a><h4>Returns</h4>
 <p> The corresponding vorbiscomment tag or NULL if none exists.</p>
 <p></p>
 </div>
@@ -186,7 +186,7 @@
 <p>Unknown vorbiscomment tags will be added to the tag list in form
 of a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstTagList.html#GST-TAG-EXTENDED-COMMENT:CAPS"><span class="type">GST_TAG_EXTENDED_COMMENT</span></a>.</p>
 <div class="refsect3">
-<a name="id-1.2.12.4.7.4.6"></a><h4>Parameters</h4>
+<a name="id-1.2.13.4.7.4.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -222,7 +222,7 @@
 <p>Creates a new tag list that contains the information parsed out of a
 vorbiscomment packet.</p>
 <div class="refsect3">
-<a name="id-1.2.12.4.7.5.5"></a><h4>Parameters</h4>
+<a name="id-1.2.13.4.7.5.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -244,7 +244,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.12.4.7.5.6"></a><h4>Returns</h4>
+<a name="id-1.2.13.4.7.5.6"></a><h4>Returns</h4>
 <p> A <a href="http://library.gnome.org/devel/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="type">GList</span></a> of newly-allocated
 key=value strings. Free with g_list_foreach (list, (GFunc) g_free, NULL)
 plus g_list_free (list). </p>
@@ -263,7 +263,7 @@
 <p>Creates a new tag list that contains the information parsed out of a
 vorbiscomment packet.</p>
 <div class="refsect3">
-<a name="id-1.2.12.4.7.6.5"></a><h4>Parameters</h4>
+<a name="id-1.2.13.4.7.6.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -302,7 +302,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.12.4.7.6.6"></a><h4>Returns</h4>
+<a name="id-1.2.13.4.7.6.6"></a><h4>Returns</h4>
 <p> A new <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstTagList.html#GstTagList"><span class="type">GstTagList</span></a> with all tags that could be extracted from the
 given vorbiscomment buffer or NULL on error.</p>
 <p></p>
@@ -320,7 +320,7 @@
 <p>Creates a new tag list that contains the information parsed out of a
 vorbiscomment packet.</p>
 <div class="refsect3">
-<a name="id-1.2.12.4.7.7.5"></a><h4>Parameters</h4>
+<a name="id-1.2.13.4.7.7.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -353,7 +353,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.12.4.7.7.6"></a><h4>Returns</h4>
+<a name="id-1.2.13.4.7.7.6"></a><h4>Returns</h4>
 <p> A new <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstTagList.html#GstTagList"><span class="type">GstTagList</span></a> with all tags that could be extracted from the
 given vorbiscomment buffer or NULL on error.</p>
 <p></p>
@@ -369,7 +369,7 @@
                                       <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *vendor_string</code></em>);</pre>
 <p>Creates a new vorbiscomment buffer from a tag list.</p>
 <div class="refsect3">
-<a name="id-1.2.12.4.7.8.5"></a><h4>Parameters</h4>
+<a name="id-1.2.13.4.7.8.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -402,7 +402,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.12.4.7.8.6"></a><h4>Returns</h4>
+<a name="id-1.2.13.4.7.8.6"></a><h4>Returns</h4>
 <p> A new <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstBuffer.html#GstBuffer"><span class="type">GstBuffer</span></a> containing a vorbiscomment buffer with all tags
 that could be converted from the given tag list.</p>
 <p></p>
diff --git a/docs/libs/html/gst-plugins-base-libs-gsttagxmp.html b/docs/libs/html/gst-plugins-base-libs-gsttagxmp.html
index f8d3d90..fa00360 100644
--- a/docs/libs/html/gst-plugins-base-libs-gsttagxmp.html
+++ b/docs/libs/html/gst-plugins-base-libs-gsttagxmp.html
@@ -91,7 +91,7 @@
 gst_tag_list_from_xmp_buffer (<em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstBuffer.html#GstBuffer"><span class="type">GstBuffer</span></a> *buffer</code></em>);</pre>
 <p>Parse a xmp packet into a taglist.</p>
 <div class="refsect3">
-<a name="id-1.2.12.7.7.2.5"></a><h4>Parameters</h4>
+<a name="id-1.2.13.7.7.2.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -106,7 +106,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.12.7.7.2.6"></a><h4>Returns</h4>
+<a name="id-1.2.13.7.7.2.6"></a><h4>Returns</h4>
 <p> new taglist or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>, free the list when done</p>
 <p></p>
 </div>
@@ -122,7 +122,7 @@
 schemas. An empty list (<a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>) means that all schemas should
 be used</p>
 <div class="refsect3">
-<a name="id-1.2.12.7.7.3.5"></a><h4>Parameters</h4>
+<a name="id-1.2.13.7.7.3.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -149,7 +149,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.12.7.7.3.6"></a><h4>Returns</h4>
+<a name="id-1.2.13.7.7.3.6"></a><h4>Returns</h4>
 <p> new buffer or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>, unref the buffer when done</p>
 <p></p>
 </div>
@@ -161,7 +161,7 @@
 gst_tag_xmp_list_schemas (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
 <p>Gets the list of supported schemas in the xmp lib</p>
 <div class="refsect3">
-<a name="id-1.2.12.7.7.4.5"></a><h4>Returns</h4>
+<a name="id-1.2.13.7.7.4.5"></a><h4>Returns</h4>
 <p> a <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> terminated array of strings with the
 schema names. </p>
 <p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
diff --git a/docs/libs/html/gst-plugins-base-libs-gsttagxmpwriter.html b/docs/libs/html/gst-plugins-base-libs-gsttagxmpwriter.html
index b164e34..15da727 100644
--- a/docs/libs/html/gst-plugins-base-libs-gsttagxmpwriter.html
+++ b/docs/libs/html/gst-plugins-base-libs-gsttagxmpwriter.html
@@ -99,7 +99,7 @@
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gsttagxmpwriter.description"></a><h2>Description</h2>
 <div class="refsect2">
-<a name="id-1.2.12.8.5.2"></a><p>
+<a name="id-1.2.13.8.5.2"></a><p>
 This interface is implemented by elements that are able to do XMP serialization. Examples for
 such elements are <span class="type">jifmux</span> and <span class="type">qtmux</span>.
 </p>
@@ -119,7 +119,7 @@
 <p>Adds all available XMP schemas to the configuration. Meaning that
 all will be used.</p>
 <div class="refsect3">
-<a name="id-1.2.12.8.6.2.5"></a><h4>Parameters</h4>
+<a name="id-1.2.13.8.6.2.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -143,7 +143,7 @@
 <p>Adds <em class="parameter"><code>schema</code></em>
  to the list schemas</p>
 <div class="refsect3">
-<a name="id-1.2.12.8.6.3.5"></a><h4>Parameters</h4>
+<a name="id-1.2.13.8.6.3.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -174,7 +174,7 @@
 <p>Checks if <em class="parameter"><code>schema</code></em>
  is going to be used</p>
 <div class="refsect3">
-<a name="id-1.2.12.8.6.4.5"></a><h4>Parameters</h4>
+<a name="id-1.2.13.8.6.4.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -196,7 +196,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.12.8.6.4.6"></a><h4>Returns</h4>
+<a name="id-1.2.13.8.6.4.6"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if it is going to be used</p>
 <p></p>
 </div>
@@ -210,7 +210,7 @@
 <p>Removes a schema from the list of schemas to use. Nothing is done if
 the schema wasn't in the list</p>
 <div class="refsect3">
-<a name="id-1.2.12.8.6.5.5"></a><h4>Parameters</h4>
+<a name="id-1.2.13.8.6.5.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -240,7 +240,7 @@
 <p>Removes all schemas from the list of schemas to use. Meaning that no
 XMP will be generated.</p>
 <div class="refsect3">
-<a name="id-1.2.12.8.6.6.5"></a><h4>Parameters</h4>
+<a name="id-1.2.13.8.6.6.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
diff --git a/docs/libs/html/gst-plugins-base-libs-gstvideo.html b/docs/libs/html/gst-plugins-base-libs-gstvideo.html
index bb72159..9b15e73 100644
--- a/docs/libs/html/gst-plugins-base-libs-gstvideo.html
+++ b/docs/libs/html/gst-plugins-base-libs-gstvideo.html
@@ -324,6 +324,24 @@
 </td>
 </tr>
 <tr>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstvideo.html#GST-VIDEO-FORMAT-INFO-TILE-MODE:CAPS" title="GST_VIDEO_FORMAT_INFO_TILE_MODE()">GST_VIDEO_FORMAT_INFO_TILE_MODE</a><span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstvideo.html#GST-VIDEO-FORMAT-INFO-TILE-WS:CAPS" title="GST_VIDEO_FORMAT_INFO_TILE_WS()">GST_VIDEO_FORMAT_INFO_TILE_WS</a><span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstvideo.html#GST-VIDEO-FORMAT-INFO-TILE-HS:CAPS" title="GST_VIDEO_FORMAT_INFO_TILE_HS()">GST_VIDEO_FORMAT_INFO_TILE_HS</a><span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
 <td class="function_type">
 <a class="link" href="gst-plugins-base-libs-gstvideo.html#GstVideoFormat" title="enum GstVideoFormat"><span class="returnvalue">GstVideoFormat</span></a>
 </td>
@@ -845,6 +863,50 @@
 <a class="link" href="gst-plugins-base-libs-gstvideo.html#GST-VIDEO-FRAME-COMP-POFFSET:CAPS" title="GST_VIDEO_FRAME_COMP_POFFSET()">GST_VIDEO_FRAME_COMP_POFFSET</a><span class="c_punctuation">()</span>
 </td>
 </tr>
+<tr>
+<td class="function_type">
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstvideo.html#gst-video-tile-get-index" title="gst_video_tile_get_index ()">gst_video_tile_get_index</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstvideo.html#GST-VIDEO-TILE-MAKE-MODE:CAPS" title="GST_VIDEO_TILE_MAKE_MODE()">GST_VIDEO_TILE_MAKE_MODE</a><span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstvideo.html#GST-VIDEO-TILE-MODE-TYPE:CAPS" title="GST_VIDEO_TILE_MODE_TYPE()">GST_VIDEO_TILE_MODE_TYPE</a><span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstvideo.html#GST-VIDEO-TILE-MODE-IS-INDEXED:CAPS" title="GST_VIDEO_TILE_MODE_IS_INDEXED()">GST_VIDEO_TILE_MODE_IS_INDEXED</a><span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstvideo.html#GST-VIDEO-TILE-MAKE-STRIDE:CAPS" title="GST_VIDEO_TILE_MAKE_STRIDE()">GST_VIDEO_TILE_MAKE_STRIDE</a><span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstvideo.html#GST-VIDEO-TILE-X-TILES:CAPS" title="GST_VIDEO_TILE_X_TILES()">GST_VIDEO_TILE_X_TILES</a><span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-base-libs-gstvideo.html#GST-VIDEO-TILE-Y-TILES:CAPS" title="GST_VIDEO_TILE_Y_TILES()">GST_VIDEO_TILE_Y_TILES</a><span class="c_punctuation">()</span>
+</td>
+</tr>
 </tbody>
 </table></div>
 </div>
@@ -960,6 +1022,14 @@
 <td class="datatype_keyword">enum</td>
 <td class="function_name"><a class="link" href="gst-plugins-base-libs-gstvideo.html#GstVideoBufferFlags" title="enum GstVideoBufferFlags">GstVideoBufferFlags</a></td>
 </tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-base-libs-gstvideo.html#GstVideoTileType" title="enum GstVideoTileType">GstVideoTileType</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-base-libs-gstvideo.html#GstVideoTileMode" title="enum GstVideoTileMode">GstVideoTileMode</a></td>
+</tr>
 </tbody>
 </table></div>
 </div>
@@ -976,7 +1046,7 @@
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gstvideo.description"></a><h2>Description</h2>
 <div class="refsect2">
-<a name="id-1.2.14.3.7.2"></a><p>
+<a name="id-1.2.15.3.7.2"></a><p>
 This library contains some helper functions and includes the
 videosink and videofilter base classes.
 </p>
@@ -999,7 +1069,7 @@
 pixel aspect ratio of the intended display device, calculates the actual
 display ratio the video will be rendered with.</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.2.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.3.8.2.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1051,7 +1121,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.2.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.3.8.2.6"></a><h4>Returns</h4>
 <p> A boolean indicating success and a calculated Display Ratio in the
 dar_n and dar_d parameters.
 The return value is FALSE in the case of integer overflow or other error.</p>
@@ -1078,7 +1148,7 @@
 <p>The output caps can be any raw video formats or any image formats (jpeg, png, ...).</p>
 <p>The width, height and pixel-aspect-ratio can also be specified in the output caps.</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.4.7"></a><h4>Parameters</h4>
+<a name="id-1.2.15.3.8.4.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1110,7 +1180,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.4.8"></a><h4>Returns</h4>
+<a name="id-1.2.15.3.8.4.8"></a><h4>Returns</h4>
 <p> The converted <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstSample.html#GstSample"><span class="type">GstSample</span></a>, or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if an error happened (in which case <em class="parameter"><code>err</code></em>
 will point to the <a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a>).</p>
 <p></p>
@@ -1141,7 +1211,7 @@
  is not needed
 anymore.</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.5.9"></a><h4>Parameters</h4>
+<a name="id-1.2.15.3.8.5.9"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1193,7 +1263,7 @@
 <p>Set <em class="parameter"><code>align</code></em>
  to its default values with no padding and no alignment.</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.6.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.3.8.6.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1220,7 +1290,7 @@
 <p>To parse an event created by <a class="link" href="gst-plugins-base-libs-gstvideo.html#gst-video-event-new-still-frame" title="gst_video_event_new_still_frame ()"><code class="function">gst_video_event_new_still_frame()</code></a> use
 <a class="link" href="gst-plugins-base-libs-gstvideo.html#gst-video-event-parse-still-frame" title="gst_video_event_parse_still_frame ()"><code class="function">gst_video_event_parse_still_frame()</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.7.6"></a><h4>Parameters</h4>
+<a name="id-1.2.15.3.8.7.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1235,7 +1305,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.7.7"></a><h4>Returns</h4>
+<a name="id-1.2.15.3.8.7.7"></a><h4>Returns</h4>
 <p> The new GstEvent</p>
 <p></p>
 </div>
@@ -1254,7 +1324,7 @@
 event.</p>
 <p>Create a still frame event using <a class="link" href="gst-plugins-base-libs-gstvideo.html#gst-video-event-new-still-frame" title="gst_video_event_new_still_frame ()"><code class="function">gst_video_event_new_still_frame()</code></a></p>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.8.6"></a><h4>Parameters</h4>
+<a name="id-1.2.15.3.8.8.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1276,7 +1346,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.8.7"></a><h4>Returns</h4>
+<a name="id-1.2.15.3.8.8.7"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the event is a valid still-frame event. <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if not</p>
 <p></p>
 </div>
@@ -1299,7 +1369,7 @@
 <p>To parse an event created by <a class="link" href="gst-plugins-base-libs-gstvideo.html#gst-video-event-new-downstream-force-key-unit" title="gst_video_event_new_downstream_force_key_unit ()"><code class="function">gst_video_event_new_downstream_force_key_unit()</code></a> use
 <a class="link" href="gst-plugins-base-libs-gstvideo.html#gst-video-event-parse-downstream-force-key-unit" title="gst_video_event_parse_downstream_force_key_unit ()"><code class="function">gst_video_event_parse_downstream_force_key_unit()</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.9.6"></a><h4>Parameters</h4>
+<a name="id-1.2.15.3.8.9.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1336,7 +1406,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.9.7"></a><h4>Returns</h4>
+<a name="id-1.2.15.3.8.9.7"></a><h4>Returns</h4>
 <p> The new GstEvent</p>
 <p></p>
 </div>
@@ -1355,8 +1425,10 @@
 <p>Get timestamp, stream-time, running-time, all-headers and count in the force
 key unit event. See <a class="link" href="gst-plugins-base-libs-gstvideo.html#gst-video-event-new-downstream-force-key-unit" title="gst_video_event_new_downstream_force_key_unit ()"><code class="function">gst_video_event_new_downstream_force_key_unit()</code></a> for a
 full description of the downstream force key unit event.</p>
+<p><em class="parameter"><code>running_time</code></em>
+ will be adjusted for any pad offsets of pads it was passing through.</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.10.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.3.8.10.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1398,7 +1470,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.10.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.3.8.10.7"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the event is a valid downstream force key unit event.</p>
 <p></p>
 </div>
@@ -1420,7 +1492,7 @@
 <p>To parse an event created by <a class="link" href="gst-plugins-base-libs-gstvideo.html#gst-video-event-new-downstream-force-key-unit" title="gst_video_event_new_downstream_force_key_unit ()"><code class="function">gst_video_event_new_downstream_force_key_unit()</code></a> use
 <a class="link" href="gst-plugins-base-libs-gstvideo.html#gst-video-event-parse-downstream-force-key-unit" title="gst_video_event_parse_downstream_force_key_unit ()"><code class="function">gst_video_event_parse_downstream_force_key_unit()</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.11.7"></a><h4>Parameters</h4>
+<a name="id-1.2.15.3.8.11.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1447,7 +1519,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.11.8"></a><h4>Returns</h4>
+<a name="id-1.2.15.3.8.11.8"></a><h4>Returns</h4>
 <p> The new GstEvent</p>
 <p></p>
 </div>
@@ -1465,8 +1537,10 @@
 <a class="link" href="gst-plugins-base-libs-gstvideo.html#gst-video-event-new-upstream-force-key-unit" title="gst_video_event_new_upstream_force_key_unit ()"><code class="function">gst_video_event_new_upstream_force_key_unit()</code></a> for a full description of the
 upstream force key unit event.</p>
 <p>Create an upstream force key unit event using  <a class="link" href="gst-plugins-base-libs-gstvideo.html#gst-video-event-new-upstream-force-key-unit" title="gst_video_event_new_upstream_force_key_unit ()"><code class="function">gst_video_event_new_upstream_force_key_unit()</code></a></p>
+<p><em class="parameter"><code>running_time</code></em>
+ will be adjusted for any pad offsets of pads it was passing through.</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.12.6"></a><h4>Parameters</h4>
+<a name="id-1.2.15.3.8.12.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1498,7 +1572,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.12.7"></a><h4>Returns</h4>
+<a name="id-1.2.15.3.8.12.8"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the event is a valid upstream force-key-unit event. <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if not</p>
 <p></p>
 </div>
@@ -1511,7 +1585,7 @@
 <p>Checks if an event is a force key unit event. Returns true for both upstream
 and downstream force key unit events.</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.13.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.3.8.13.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1526,7 +1600,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.13.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.3.8.13.6"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the event is a valid force key unit event</p>
 <p></p>
 </div>
@@ -1539,7 +1613,7 @@
 <p>Convert <em class="parameter"><code>s</code></em>
  to a <a class="link" href="gst-plugins-base-libs-gstvideo.html#GstVideoChromaSite" title="enum GstVideoChromaSite"><span class="type">GstVideoChromaSite</span></a></p>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.14.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.3.8.14.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1554,7 +1628,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.14.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.3.8.14.6"></a><h4>Returns</h4>
 <p> a <a class="link" href="gst-plugins-base-libs-gstvideo.html#GstVideoChromaSite" title="enum GstVideoChromaSite"><span class="type">GstVideoChromaSite</span></a> or <a class="link" href="gst-plugins-base-libs-gstvideo.html#GST-VIDEO-CHROMA-SITE-UNKNOWN:CAPS"><code class="literal">GST_VIDEO_CHROMA_SITE_UNKNOWN</code></a> when <em class="parameter"><code>s</code></em>
 does
 not contain a valid chroma description.</p>
@@ -1569,7 +1643,7 @@
 <p>Converts <em class="parameter"><code>site</code></em>
  to its string representation.</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.15.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.3.8.15.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1584,7 +1658,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.15.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.3.8.15.6"></a><h4>Returns</h4>
 <p> a string describing <em class="parameter"><code>site</code></em>
 .</p>
 <p></p>
@@ -1615,7 +1689,7 @@
 array. Reconstruction of the missing components can be performed in a
 separate step after unpacking.</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.16.6"></a><h4>Parameters</h4>
+<a name="id-1.2.15.3.8.16.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1695,8 +1769,12 @@
 should be a multiple of pack_lines.</p>
 <p>Subsampled formats will use the horizontally cosited component in the
 destination. Subsampling should be performed before packing.</p>
+<p>Because tis function does not have a x coordinate, it is not possible to
+pack pixels starting from an unaligned position. For tiled images this
+means that packing should start from a tile coordinate. For subsampled
+formats this means that a complete pixel need to be packed.</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.17.7"></a><h4>Parameters</h4>
+<a name="id-1.2.15.3.8.17.8"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1928,6 +2006,24 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="GST-VIDEO-FORMAT-INFO-TILE-MODE:CAPS"></a><h3>GST_VIDEO_FORMAT_INFO_TILE_MODE()</h3>
+<pre class="programlisting">#define GST_VIDEO_FORMAT_INFO_TILE_MODE(info) ((info)-&gt;tile_mode)
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GST-VIDEO-FORMAT-INFO-TILE-WS:CAPS"></a><h3>GST_VIDEO_FORMAT_INFO_TILE_WS()</h3>
+<pre class="programlisting">#define GST_VIDEO_FORMAT_INFO_TILE_WS(info) ((info)-&gt;tile_ws)
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GST-VIDEO-FORMAT-INFO-TILE-HS:CAPS"></a><h3>GST_VIDEO_FORMAT_INFO_TILE_HS()</h3>
+<pre class="programlisting">#define GST_VIDEO_FORMAT_INFO_TILE_HS(info) ((info)-&gt;tile_hs)
+</pre>
+</div>
+<hr>
+<div class="refsect2">
 <a name="gst-video-format-from-masks"></a><h3>gst_video_format_from_masks ()</h3>
 <pre class="programlisting"><a class="link" href="gst-plugins-base-libs-gstvideo.html#GstVideoFormat" title="enum GstVideoFormat"><span class="returnvalue">GstVideoFormat</span></a>
 gst_video_format_from_masks (<em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> depth</code></em>,
@@ -1939,7 +2035,7 @@
                              <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> alpha_mask</code></em>);</pre>
 <p>Find the <a class="link" href="gst-plugins-base-libs-gstvideo.html#GstVideoFormat" title="enum GstVideoFormat"><span class="type">GstVideoFormat</span></a> for the given parameters.</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.44.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.3.8.47.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1988,7 +2084,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.44.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.3.8.47.6"></a><h4>Returns</h4>
 <p> a <a class="link" href="gst-plugins-base-libs-gstvideo.html#GstVideoFormat" title="enum GstVideoFormat"><span class="type">GstVideoFormat</span></a> or GST_VIDEO_FORMAT_UNKNOWN when the parameters to
 not specify a known format.</p>
 <p></p>
@@ -2003,7 +2099,7 @@
 If the FOURCC cannot be represented by <a class="link" href="gst-plugins-base-libs-gstvideo.html#GstVideoFormat" title="enum GstVideoFormat"><span class="type">GstVideoFormat</span></a>,
 <a class="link" href="gst-plugins-base-libs-gstvideo.html#GST-VIDEO-FORMAT-UNKNOWN:CAPS"><span class="type">GST_VIDEO_FORMAT_UNKNOWN</span></a> is returned.</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.45.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.3.8.48.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2018,7 +2114,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.45.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.3.8.48.6"></a><h4>Returns</h4>
 <p> the <a class="link" href="gst-plugins-base-libs-gstvideo.html#GstVideoFormat" title="enum GstVideoFormat"><span class="type">GstVideoFormat</span></a> describing the FOURCC value</p>
 <p></p>
 </div>
@@ -2033,7 +2129,7 @@
  has
 no corresponding FOURCC value, 0 is returned.</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.46.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.3.8.49.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2048,7 +2144,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.46.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.3.8.49.6"></a><h4>Returns</h4>
 <p> the FOURCC corresponding to <em class="parameter"><code>format</code></em>
 </p>
 <p></p>
@@ -2062,7 +2158,7 @@
 <p>Convert the <em class="parameter"><code>format</code></em>
  string to its <a class="link" href="gst-plugins-base-libs-gstvideo.html#GstVideoFormat" title="enum GstVideoFormat"><span class="type">GstVideoFormat</span></a>.</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.47.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.3.8.50.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2077,7 +2173,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.47.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.3.8.50.6"></a><h4>Returns</h4>
 <p> the <a class="link" href="gst-plugins-base-libs-gstvideo.html#GstVideoFormat" title="enum GstVideoFormat"><span class="type">GstVideoFormat</span></a> for <em class="parameter"><code>format</code></em>
 or GST_VIDEO_FORMAT_UNKNOWN when the
 string is not a known format.</p>
@@ -2098,7 +2194,7 @@
 <p>Get the <a class="link" href="gst-plugins-base-libs-gstvideo.html#GstVideoFormatInfo" title="struct GstVideoFormatInfo"><span class="type">GstVideoFormatInfo</span></a> for <em class="parameter"><code>format</code></em>
 </p>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.49.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.3.8.52.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2113,7 +2209,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.49.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.3.8.52.6"></a><h4>Returns</h4>
 <p> The <a class="link" href="gst-plugins-base-libs-gstvideo.html#GstVideoFormatInfo" title="struct GstVideoFormatInfo"><span class="type">GstVideoFormatInfo</span></a> for <em class="parameter"><code>format</code></em>
 .</p>
 <p></p>
@@ -2125,7 +2221,7 @@
 <pre class="programlisting">#define             GST_VIDEO_CAPS_MAKE(format)</pre>
 <p>Generic caps string for video, for use in pad templates.</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.50.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.3.8.53.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2152,7 +2248,7 @@
 string <em class="parameter"><code>color</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.51.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.3.8.54.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2161,7 +2257,7 @@
 </colgroup>
 <tbody>
 <tr>
-<td class="parameter_name"><p>info</p></td>
+<td class="parameter_name"><p>cinfo</p></td>
 <td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstvideo.html#GstVideoInfo" title="struct GstVideoInfo"><span class="type">GstVideoInfo</span></a></p></td>
 <td class="parameter_annotations"> </td>
 </tr>
@@ -2174,7 +2270,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.51.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.3.8.54.6"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><span class="type">TRUE</span></a> if <em class="parameter"><code>color</code></em>
 conveys the same colorimetry info as the color
 information in <em class="parameter"><code>info</code></em>
@@ -2192,7 +2288,7 @@
  with the parsed
 values.</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.52.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.3.8.55.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2214,7 +2310,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.52.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.3.8.55.6"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><span class="type">TRUE</span></a> if <em class="parameter"><code>color</code></em>
 points to valid colorimetry info.</p>
 <p></p>
@@ -2228,7 +2324,7 @@
 <p>Make a string representation of <em class="parameter"><code>cinfo</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.53.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.3.8.56.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2243,7 +2339,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.53.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.3.8.56.6"></a><h4>Returns</h4>
 <p> a string representation of <em class="parameter"><code>cinfo</code></em>
 .</p>
 <p></p>
@@ -2267,7 +2363,7 @@
  and <em class="parameter"><code>range</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.54.6"></a><h4>Parameters</h4>
+<a name="id-1.2.15.3.8.57.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2286,7 +2382,7 @@
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
-<td class="parameter_name"><p>offsets</p></td>
+<td class="parameter_name"><p>offset</p></td>
 <td class="parameter_description"><p> output offsets. </p></td>
 <td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
 </tr>
@@ -2505,7 +2601,7 @@
 <p>Initialize <em class="parameter"><code>info</code></em>
  with default values.</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.88.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.3.8.91.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2532,8 +2628,10 @@
  and <em class="parameter"><code>width</code></em>
  and <em class="parameter"><code>height</code></em>
 .</p>
+<p>Note: This initializes <em class="parameter"><code>info</code></em>
+ first, no values are preserved.</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.89.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.3.8.92.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2575,7 +2673,7 @@
  and update <em class="parameter"><code>info</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.90.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.3.8.93.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2597,7 +2695,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.90.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.3.8.93.6"></a><h4>Returns</h4>
 <p> TRUE if <em class="parameter"><code>caps</code></em>
 could be parsed</p>
 <p></p>
@@ -2611,7 +2709,7 @@
 <p>Convert the values of <em class="parameter"><code>info</code></em>
  into a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>.</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.91.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.3.8.94.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2626,7 +2724,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.91.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.3.8.94.6"></a><h4>Returns</h4>
 <p> a new <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a> containing the info of <em class="parameter"><code>info</code></em>
 .</p>
 <p></p>
@@ -2646,7 +2744,7 @@
 raw video, GST_FORMAT_DEFAULT corresponds to video frames.  This
 function can be used to handle pad queries of the type GST_QUERY_CONVERT.</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.92.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.3.8.95.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2685,7 +2783,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.92.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.3.8.95.6"></a><h4>Returns</h4>
 <p> TRUE if the conversion was successful.</p>
 <p></p>
 </div>
@@ -2698,7 +2796,7 @@
                          <em class="parameter"><code>const <a class="link" href="gst-plugins-base-libs-gstvideo.html#GstVideoInfo" title="struct GstVideoInfo"><span class="type">GstVideoInfo</span></a> *other</code></em>);</pre>
 <p>Compares two <a class="link" href="gst-plugins-base-libs-gstvideo.html#GstVideoInfo" title="struct GstVideoInfo"><span class="type">GstVideoInfo</span></a> and returns whether they are equal or not</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.93.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.3.8.96.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2720,7 +2818,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.93.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.3.8.96.6"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>info</code></em>
 and <em class="parameter"><code>other</code></em>
 are equal, else <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
@@ -2741,7 +2839,7 @@
 is required and <em class="parameter"><code>align</code></em>
  will be updated with the new padding values.</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.94.6"></a><h4>Parameters</h4>
+<a name="id-1.2.15.3.8.97.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2787,7 +2885,7 @@
 <em class="parameter"><code>frame-&gt;data</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.95.7"></a><h4>Parameters</h4>
+<a name="id-1.2.15.3.8.98.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2824,7 +2922,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.95.8"></a><h4>Returns</h4>
+<a name="id-1.2.15.3.8.98.8"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> on success.</p>
 <p></p>
 </div>
@@ -2846,7 +2944,7 @@
 <em class="parameter"><code>frame-&gt;data</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.96.6"></a><h4>Parameters</h4>
+<a name="id-1.2.15.3.8.99.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2878,7 +2976,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.96.7"></a><h4>Returns</h4>
+<a name="id-1.2.15.3.8.99.7"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> on success.</p>
 <p></p>
 </div>
@@ -2890,7 +2988,7 @@
 gst_video_frame_unmap (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstvideo.html#GstVideoFrame" title="struct GstVideoFrame"><span class="type">GstVideoFrame</span></a> *frame</code></em>);</pre>
 <p>Unmap the memory previously mapped with gst_video_frame_map.</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.97.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.3.8.100.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2915,7 +3013,7 @@
  to <em class="parameter"><code>dest</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.98.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.3.8.101.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2937,7 +3035,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.98.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.3.8.101.6"></a><h4>Returns</h4>
 <p> TRUE if the contents could be copied.</p>
 <p></p>
 </div>
@@ -2954,7 +3052,7 @@
  to <em class="parameter"><code>dest</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.99.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.3.8.102.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -2981,7 +3079,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.3.8.99.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.3.8.102.6"></a><h4>Returns</h4>
 <p> TRUE if the contents could be copied.</p>
 <p></p>
 </div>
@@ -3130,6 +3228,217 @@
 <pre class="programlisting">#define GST_VIDEO_FRAME_COMP_POFFSET(f,c) GST_VIDEO_INFO_COMP_POFFSET(&amp;(f)-&gt;info,(c))
 </pre>
 </div>
+<hr>
+<div class="refsect2">
+<a name="gst-video-tile-get-index"></a><h3>gst_video_tile_get_index ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
+gst_video_tile_get_index (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstvideo.html#GstVideoTileMode" title="enum GstVideoTileMode"><span class="type">GstVideoTileMode</span></a> mode</code></em>,
+                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> x</code></em>,
+                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> y</code></em>,
+                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> x_tiles</code></em>,
+                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> y_tiles</code></em>);</pre>
+<p>Get the tile index of the tile at coordinates <em class="parameter"><code>x</code></em>
+ and <em class="parameter"><code>y</code></em>
+ in the tiled
+image of <em class="parameter"><code>x_tiles</code></em>
+ by <em class="parameter"><code>y_tiles</code></em>
+.</p>
+<p>Use this method when <em class="parameter"><code>mode</code></em>
+ is of type <span class="type">GST_VIDEO_TILE_MODE_INDEXED</span>.</p>
+<div class="refsect3">
+<a name="id-1.2.15.3.8.127.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>mode</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstvideo.html#GstVideoTileMode" title="enum GstVideoTileMode"><span class="type">GstVideoTileMode</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>x</p></td>
+<td class="parameter_description"><p>x coordinate</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>y</p></td>
+<td class="parameter_description"><p>y coordinate</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>x_tiles</p></td>
+<td class="parameter_description"><p>number of horizintal tiles</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>y_tiles</p></td>
+<td class="parameter_description"><p>number of vertical tiles</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.15.3.8.127.7"></a><h4>Returns</h4>
+<p> the index of the tile at <em class="parameter"><code>x</code></em>
+and <em class="parameter"><code>y</code></em>
+in the tiled image of
+<em class="parameter"><code>x_tiles</code></em>
+by <em class="parameter"><code>y_tiles</code></em>
+.</p>
+<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GST-VIDEO-TILE-MAKE-MODE:CAPS"></a><h3>GST_VIDEO_TILE_MAKE_MODE()</h3>
+<pre class="programlisting">#define             GST_VIDEO_TILE_MAKE_MODE(num, type)</pre>
+<p>use this macro to create new tile modes.</p>
+<div class="refsect3">
+<a name="id-1.2.15.3.8.128.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>num</p></td>
+<td class="parameter_description"><p>the mode number to create</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the tile mode type</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GST-VIDEO-TILE-MODE-TYPE:CAPS"></a><h3>GST_VIDEO_TILE_MODE_TYPE()</h3>
+<pre class="programlisting">#define GST_VIDEO_TILE_MODE_TYPE(mode)       ((mode) &amp; GST_VIDEO_TILE_TYPE_MASK)
+</pre>
+<p>Get the tile mode type of <em class="parameter"><code>mode</code></em>
+</p>
+<div class="refsect3">
+<a name="id-1.2.15.3.8.129.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>mode</p></td>
+<td class="parameter_description"><p>the tile mode</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GST-VIDEO-TILE-MODE-IS-INDEXED:CAPS"></a><h3>GST_VIDEO_TILE_MODE_IS_INDEXED()</h3>
+<pre class="programlisting">#define GST_VIDEO_TILE_MODE_IS_INDEXED(mode) (GST_VIDEO_TILE_MODE_TYPE(mode) == GST_VIDEO_TILE_TYPE_INDEXED)
+</pre>
+<p>Check if <em class="parameter"><code>mode</code></em>
+ is an indexed tile type</p>
+<div class="refsect3">
+<a name="id-1.2.15.3.8.130.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>mode</p></td>
+<td class="parameter_description"><p>a tile mode</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GST-VIDEO-TILE-MAKE-STRIDE:CAPS"></a><h3>GST_VIDEO_TILE_MAKE_STRIDE()</h3>
+<pre class="programlisting">#define             GST_VIDEO_TILE_MAKE_STRIDE(x_tiles, y_tiles)</pre>
+<p>Encode the number of tile in X and Y into the stride.</p>
+<div class="refsect3">
+<a name="id-1.2.15.3.8.131.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>x_tiles</p></td>
+<td class="parameter_description"><p>number of tiles in X</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>y_tiles</p></td>
+<td class="parameter_description"><p>number of tiles in Y</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GST-VIDEO-TILE-X-TILES:CAPS"></a><h3>GST_VIDEO_TILE_X_TILES()</h3>
+<pre class="programlisting">#define GST_VIDEO_TILE_X_TILES(stride) ((stride) &amp; GST_VIDEO_TILE_X_TILES_MASK)
+</pre>
+<p>Extract the number of tiles in X from the stride value.</p>
+<div class="refsect3">
+<a name="id-1.2.15.3.8.132.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>stride</p></td>
+<td class="parameter_description"><p>plane stride</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GST-VIDEO-TILE-Y-TILES:CAPS"></a><h3>GST_VIDEO_TILE_Y_TILES()</h3>
+<pre class="programlisting">#define GST_VIDEO_TILE_Y_TILES(stride) ((stride) &gt;&gt; GST_VIDEO_TILE_Y_TILES_SHIFT)
+</pre>
+<p>Extract the number of tiles in Y from the stride value.</p>
+<div class="refsect3">
+<a name="id-1.2.15.3.8.133.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>stride</p></td>
+<td class="parameter_description"><p>plane stride</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+</div>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gstvideo.other_details"></a><h2>Types and Values</h2>
@@ -3145,9 +3454,9 @@
 </pre>
 <p>Extra alignment paramters for the memory of video buffers. This
 structure is usually used to configure the bufferpool if it supports the
-<span class="type">GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT</span>.</p>
+<a class="link" href="gst-plugins-base-libs-GstVideoPool.html#GST-BUFFER-POOL-OPTION-VIDEO-ALIGNMENT:CAPS" title="GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT"><span class="type">GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT</span></a>.</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.9.2.5"></a><h4>Members</h4>
+<a name="id-1.2.15.3.9.2.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -3221,7 +3530,7 @@
 <a name="GstVideoFormat"></a><h3>enum GstVideoFormat</h3>
 <p>Enum value describing the most common video formats.</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.9.7.4"></a><h4>Members</h4>
+<a name="id-1.2.15.3.9.7.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -3239,7 +3548,10 @@
 <tr>
 <td class="enum_member_name"><p><a name="GST-VIDEO-FORMAT-ENCODED:CAPS"></a>GST_VIDEO_FORMAT_ENCODED</p></td>
 <td class="enum_member_description">
-<p>Encoded video format</p>
+<p>Encoded video format. Only ever use that in caps for
+                           special video formats in combination with non-system
+                           memory GstCapsFeatures where it does not make sense
+                           to specify a real video format.</p>
 </td>
 <td class="enum_member_annotations"> </td>
 </tr>
@@ -3600,6 +3912,13 @@
 </td>
 <td class="enum_member_annotations"> </td>
 </tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-VIDEO-FORMAT-NV12-64Z32:CAPS"></a>GST_VIDEO_FORMAT_NV12_64Z32</p></td>
+<td class="enum_member_description">
+<p>NV12 with 64x32 tiling in zigzag pattern</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
 </tbody>
 </table></div>
 </div>
@@ -3640,12 +3959,16 @@
   gint pack_lines;
   GstVideoFormatPack pack_func;
 
+  GstVideoTileMode tile_mode;
+  guint tile_ws;
+  guint tile_hs;
+
   gpointer _gst_reserved[GST_PADDING];
 };
 </pre>
 <p>Information for a video format.</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.9.10.5"></a><h4>Members</h4>
+<a name="id-1.2.15.3.9.10.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -3756,6 +4079,25 @@
 <td class="struct_member_annotations"> </td>
 </tr>
 <tr>
+<td class="struct_member_name"><p><a class="link" href="gst-plugins-base-libs-gstvideo.html#GstVideoTileMode" title="enum GstVideoTileMode"><span class="type">GstVideoTileMode</span></a> <em class="structfield"><code><a name="GstVideoFormatInfo.tile-mode"></a>tile_mode</code></em>;</p></td>
+<td class="struct_member_description"><p>The tiling mode
+<em class="parameter"><code>tile_ws</code></em>
+The width of a tile, in bytes, represented as a shift
+<em class="parameter"><code>tile_hs</code></em>
+The height of a tile, in bytes, represented as a shift</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> <em class="structfield"><code><a name="GstVideoFormatInfo.tile-ws"></a>tile_ws</code></em>;</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> <em class="structfield"><code><a name="GstVideoFormatInfo.tile-hs"></a>tile_hs</code></em>;</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
 <td class="struct_member_name"><p><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> <em class="structfield"><code><a name="GstVideoFormatInfo.-gst-reserved"></a>_gst_reserved</code></em>[GST_PADDING];</p></td>
 <td> </td>
 <td> </td>
@@ -3769,7 +4111,7 @@
 <a name="GstVideoChromaSite"></a><h3>enum GstVideoChromaSite</h3>
 <p>Various Chroma sitings.</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.9.11.4"></a><h4>Members</h4>
+<a name="id-1.2.15.3.9.11.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -3849,7 +4191,7 @@
 <a name="GstVideoFormatFlags"></a><h3>enum GstVideoFormatFlags</h3>
 <p>The different video flags that a format info can have.</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.9.12.4"></a><h4>Members</h4>
+<a name="id-1.2.15.3.9.12.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -3921,6 +4263,14 @@
 </td>
 <td class="enum_member_annotations"> </td>
 </tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-VIDEO-FORMAT-FLAG-TILED:CAPS"></a>GST_VIDEO_FORMAT_FLAG_TILED</p></td>
+<td class="enum_member_description">
+<p>The format is tiled, there is tiling information
+  in the last plane.</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
 </tbody>
 </table></div>
 </div>
@@ -3930,7 +4280,7 @@
 <a name="GstVideoPackFlags"></a><h3>enum GstVideoPackFlags</h3>
 <p>The different flags that can be used when packing and unpacking.</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.9.13.4"></a><h4>Members</h4>
+<a name="id-1.2.15.3.9.13.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -3992,7 +4342,7 @@
 <p>Possible color range values. These constants are defined for 8 bit color
 values and can be scaled for other bit depths.</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.9.17.4"></a><h4>Members</h4>
+<a name="id-1.2.15.3.9.17.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -4032,7 +4382,7 @@
 <p>The color matrix is used to convert between Y'PbPr and
 non-linear RGB (R'G'B')</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.9.18.4"></a><h4>Members</h4>
+<a name="id-1.2.15.3.9.18.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -4092,7 +4442,7 @@
 <p>The video transfer function defines the formula for converting between
 non-linear RGB (R'G'B') and linear RGB</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.9.19.4"></a><h4>Members</h4>
+<a name="id-1.2.15.3.9.19.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -4192,7 +4542,7 @@
 <p>The color primaries define the how to transform linear RGB values to and from
 the CIE XYZ colorspace.</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.9.20.4"></a><h4>Members</h4>
+<a name="id-1.2.15.3.9.20.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -4265,7 +4615,7 @@
 </pre>
 <p>Structure describing the color info.</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.9.21.5"></a><h4>Members</h4>
+<a name="id-1.2.15.3.9.21.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -4330,7 +4680,7 @@
 <a class="link" href="gst-plugins-base-libs-gstvideo.html#gst-video-frame-map" title="gst_video_frame_map ()"><code class="function">gst_video_frame_map()</code></a>.</p>
 <p>Use the provided macros to access the info in this structure.</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.9.22.6"></a><h4>Members</h4>
+<a name="id-1.2.15.3.9.22.6"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -4423,7 +4773,7 @@
 <p>The possible values of the <a class="link" href="gst-plugins-base-libs-gstvideo.html#GstVideoInterlaceMode" title="enum GstVideoInterlaceMode"><span class="type">GstVideoInterlaceMode</span></a> describing the interlace
 mode of the stream.</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.9.23.4"></a><h4>Members</h4>
+<a name="id-1.2.15.3.9.23.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -4476,7 +4826,7 @@
 <a name="GstVideoFlags"></a><h3>enum GstVideoFlags</h3>
 <p>Extra video flags</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.9.24.4"></a><h4>Members</h4>
+<a name="id-1.2.15.3.9.24.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -4528,7 +4878,7 @@
 </pre>
 <p>A video frame obtained from <a class="link" href="gst-plugins-base-libs-gstvideo.html#gst-video-frame-map" title="gst_video_frame_map ()"><code class="function">gst_video_frame_map()</code></a></p>
 <div class="refsect3">
-<a name="id-1.2.14.3.9.25.5"></a><h4>Members</h4>
+<a name="id-1.2.15.3.9.25.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -4581,7 +4931,7 @@
 <a name="GstVideoFrameFlags"></a><h3>enum GstVideoFrameFlags</h3>
 <p>Extra video frame flags</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.9.26.4"></a><h4>Members</h4>
+<a name="id-1.2.15.3.9.26.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -4635,7 +4985,7 @@
 <a name="GstVideoBufferFlags"></a><h3>enum GstVideoBufferFlags</h3>
 <p>Additional video buffer flags.</p>
 <div class="refsect3">
-<a name="id-1.2.14.3.9.27.4"></a><h4>Members</h4>
+<a name="id-1.2.15.3.9.27.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -4688,6 +5038,64 @@
 </table></div>
 </div>
 </div>
+<hr>
+<div class="refsect2">
+<a name="GstVideoTileType"></a><h3>enum GstVideoTileType</h3>
+<p>Enum value describing the most common tiling types.</p>
+<div class="refsect3">
+<a name="id-1.2.15.3.9.28.4"></a><h4>Members</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody><tr>
+<td class="enum_member_name"><p><a name="GST-VIDEO-TILE-TYPE-INDEXED:CAPS"></a>GST_VIDEO_TILE_TYPE_INDEXED</p></td>
+<td class="enum_member_description">
+<p>Tiles are indexed. Use
+  <a class="link" href="gst-plugins-base-libs-gstvideo.html#gst-video-tile-get-index" title="gst_video_tile_get_index ()"><code class="function">gst_video_tile_get_index()</code></a> to retrieve the tile at the requested
+  coordinates.</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstVideoTileMode"></a><h3>enum GstVideoTileMode</h3>
+<p>Enum value describing the available tiling modes.</p>
+<div class="refsect3">
+<a name="id-1.2.15.3.9.29.4"></a><h4>Members</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="GST-VIDEO-TILE-MODE-UNKNOWN:CAPS"></a>GST_VIDEO_TILE_MODE_UNKNOWN</p></td>
+<td class="enum_member_description">
+<p>Unknown or unset tile mode</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-VIDEO-TILE-MODE-ZFLIPZ-2X2:CAPS"></a>GST_VIDEO_TILE_MODE_ZFLIPZ_2X2</p></td>
+<td class="enum_member_description">
+<p>Every four adjacent blocks - two
+   horizontally and two vertically are grouped together and are located
+   in memory in Z or flipped Z order. In case of odd rows, the last row
+   of blocks is arranged in linear order.</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
 </div>
 </div>
 <div class="footer">
diff --git a/docs/libs/html/gst-plugins-base-libs-gstvideofilter.html b/docs/libs/html/gst-plugins-base-libs-gstvideofilter.html
index 0c028ce..86638a2 100644
--- a/docs/libs/html/gst-plugins-base-libs-gstvideofilter.html
+++ b/docs/libs/html/gst-plugins-base-libs-gstvideofilter.html
@@ -69,7 +69,7 @@
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gstvideofilter.description"></a><h2>Description</h2>
 <div class="refsect2">
-<a name="id-1.2.14.6.7.2"></a><p>
+<a name="id-1.2.15.6.7.2"></a><p>
 Provides useful functions and a base class for video filters.
 </p>
 <p>
@@ -105,7 +105,7 @@
 </pre>
 <p>The video filter class structure.</p>
 <div class="refsect3">
-<a name="id-1.2.14.6.9.3.5"></a><h4>Members</h4>
+<a name="id-1.2.15.6.9.3.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
diff --git a/docs/libs/html/gst-plugins-base-libs-gstvideometa.html b/docs/libs/html/gst-plugins-base-libs-gstvideometa.html
index 7c564fa..3f972b0 100644
--- a/docs/libs/html/gst-plugins-base-libs-gstvideometa.html
+++ b/docs/libs/html/gst-plugins-base-libs-gstvideometa.html
@@ -193,6 +193,10 @@
 <td class="function_name"><a class="link" href="gst-plugins-base-libs-gstvideometa.html#GstVideoRegionOfInterestMeta" title="GstVideoRegionOfInterestMeta">GstVideoRegionOfInterestMeta</a></td>
 </tr>
 <tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="gst-plugins-base-libs-gstvideometa.html#GST-BUFFER-POOL-OPTION-VIDEO-GL-TEXTURE-UPLOAD-META:CAPS" title="GST_BUFFER_POOL_OPTION_VIDEO_GL_TEXTURE_UPLOAD_META">GST_BUFFER_POOL_OPTION_VIDEO_GL_TEXTURE_UPLOAD_META</a></td>
+</tr>
+<tr>
 <td class="datatype_keyword">struct</td>
 <td class="function_name"><a class="link" href="gst-plugins-base-libs-gstvideometa.html#GstVideoGLTextureUploadMeta" title="struct GstVideoGLTextureUploadMeta">GstVideoGLTextureUploadMeta</a></td>
 </tr>
@@ -228,7 +232,7 @@
  and return a pointer to the
 first byte of the plane and the stride of the plane.</p>
 <div class="refsect3">
-<a name="id-1.2.14.4.8.2.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.4.8.2.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -273,7 +277,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.4.8.2.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.4.8.2.6"></a><h4>Returns</h4>
 <p> TRUE if the map operation was successful.</p>
 <p></p>
 </div>
@@ -287,7 +291,7 @@
                       <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstMemory.html#GstMapInfo"><span class="type">GstMapInfo</span></a> *info</code></em>);</pre>
 <p>Unmap a previously mapped plane with <a class="link" href="gst-plugins-base-libs-gstvideometa.html#gst-video-meta-map" title="gst_video_meta_map ()"><code class="function">gst_video_meta_map()</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.2.14.4.8.3.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.4.8.3.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -314,7 +318,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.4.8.3.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.4.8.3.6"></a><h4>Returns</h4>
 <p> TRUE if the memory was successfully unmapped.</p>
 <p></p>
 </div>
@@ -343,7 +347,7 @@
 <p>This function calculates the default offsets and strides and then calls
 <a class="link" href="gst-plugins-base-libs-gstvideometa.html#gst-buffer-add-video-meta-full" title="gst_buffer_add_video_meta_full ()"><code class="function">gst_buffer_add_video_meta_full()</code></a> with them.</p>
 <div class="refsect3">
-<a name="id-1.2.14.4.8.5.6"></a><h4>Parameters</h4>
+<a name="id-1.2.15.4.8.5.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -380,7 +384,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.4.8.5.7"></a><h4>Returns</h4>
+<a name="id-1.2.15.4.8.5.7"></a><h4>Returns</h4>
 <p> the <a class="link" href="gst-plugins-base-libs-gstvideometa.html#GstVideoMeta" title="struct GstVideoMeta"><span class="type">GstVideoMeta</span></a> on <em class="parameter"><code>buffer</code></em>
 .</p>
 <p></p>
@@ -401,7 +405,7 @@
 <p>Attaches GstVideoMeta metadata to <em class="parameter"><code>buffer</code></em>
  with the given parameters.</p>
 <div class="refsect3">
-<a name="id-1.2.14.4.8.6.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.4.8.6.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -453,7 +457,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.4.8.6.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.4.8.6.6"></a><h4>Returns</h4>
 <p> the <a class="link" href="gst-plugins-base-libs-gstvideometa.html#GstVideoMeta" title="struct GstVideoMeta"><span class="type">GstVideoMeta</span></a> on <em class="parameter"><code>buffer</code></em>
 .</p>
 <p></p>
@@ -477,7 +481,7 @@
 <p>Buffers can contain multiple <a class="link" href="gst-plugins-base-libs-gstvideometa.html#GstVideoMeta" title="struct GstVideoMeta"><span class="type">GstVideoMeta</span></a> metadata items when dealing with
 multiview buffers.</p>
 <div class="refsect3">
-<a name="id-1.2.14.4.8.8.6"></a><h4>Parameters</h4>
+<a name="id-1.2.15.4.8.8.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -499,7 +503,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.4.8.8.7"></a><h4>Returns</h4>
+<a name="id-1.2.15.4.8.8.7"></a><h4>Returns</h4>
 <p> the <a class="link" href="gst-plugins-base-libs-gstvideometa.html#GstVideoMeta" title="struct GstVideoMeta"><span class="type">GstVideoMeta</span></a> with <em class="parameter"><code>id</code></em>
 or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> when there is no such metadata
 on <em class="parameter"><code>buffer</code></em>
@@ -534,7 +538,7 @@
  with the given
 parameters.</p>
 <div class="refsect3">
-<a name="id-1.2.14.4.8.11.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.4.8.11.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -576,7 +580,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.4.8.11.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.4.8.11.6"></a><h4>Returns</h4>
 <p> the <a class="link" href="gst-plugins-base-libs-gstvideometa.html#GstVideoRegionOfInterestMeta" title="GstVideoRegionOfInterestMeta"><span class="type">GstVideoRegionOfInterestMeta</span></a> on <em class="parameter"><code>buffer</code></em>
 .</p>
 <p></p>
@@ -597,7 +601,7 @@
  with the given
 parameters.</p>
 <div class="refsect3">
-<a name="id-1.2.14.4.8.12.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.4.8.12.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -639,7 +643,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.4.8.12.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.4.8.12.6"></a><h4>Returns</h4>
 <p> the <a class="link" href="gst-plugins-base-libs-gstvideometa.html#GstVideoRegionOfInterestMeta" title="GstVideoRegionOfInterestMeta"><span class="type">GstVideoRegionOfInterestMeta</span></a> on <em class="parameter"><code>buffer</code></em>
 .</p>
 <p></p>
@@ -663,7 +667,7 @@
 <p>Buffers can contain multiple <a class="link" href="gst-plugins-base-libs-gstvideometa.html#GstVideoRegionOfInterestMeta" title="GstVideoRegionOfInterestMeta"><span class="type">GstVideoRegionOfInterestMeta</span></a> metadata items if
 multiple regions of interests are marked on a frame.</p>
 <div class="refsect3">
-<a name="id-1.2.14.4.8.14.6"></a><h4>Parameters</h4>
+<a name="id-1.2.15.4.8.14.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -685,7 +689,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.4.8.14.7"></a><h4>Returns</h4>
+<a name="id-1.2.15.4.8.14.7"></a><h4>Returns</h4>
 <p> the <span class="type">GstVideoeRegionOfInterestMeta</span> with <em class="parameter"><code>id</code></em>
 or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> when there is
 no such metadata on <em class="parameter"><code>buffer</code></em>
@@ -717,7 +721,7 @@
  with the given
 parameters.</p>
 <div class="refsect3">
-<a name="id-1.2.14.4.8.16.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.4.8.16.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -757,7 +761,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.4.8.16.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.4.8.16.6"></a><h4>Returns</h4>
 <p> the <a class="link" href="gst-plugins-base-libs-gstvideometa.html#GstVideoGLTextureUploadMeta" title="struct GstVideoGLTextureUploadMeta"><span class="type">GstVideoGLTextureUploadMeta</span></a> on <em class="parameter"><code>buffer</code></em>
 .</p>
 <p></p>
@@ -778,7 +782,7 @@
                                 <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> texture_id[4]</code></em>);</pre>
 <p>Uploads the buffer which owns the meta to a specific texture ID.</p>
 <div class="refsect3">
-<a name="id-1.2.14.4.8.18.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.4.8.18.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -800,7 +804,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.4.8.18.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.4.8.18.6"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if uploading succeeded, <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
 <p></p>
 </div>
@@ -832,7 +836,7 @@
 </pre>
 <p>Extra buffer metadata describing image properties</p>
 <div class="refsect3">
-<a name="id-1.2.14.4.9.2.5"></a><h4>Members</h4>
+<a name="id-1.2.15.4.9.2.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -919,7 +923,7 @@
 <p>Extra data passed to a video transform <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstMeta.html#GstMetaTransformFunction"><span class="type">GstMetaTransformFunction</span></a> such as:
 "gst-video-scale".</p>
 <div class="refsect3">
-<a name="id-1.2.14.4.9.3.5"></a><h4>Members</h4>
+<a name="id-1.2.15.4.9.3.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -955,7 +959,7 @@
 </pre>
 <p>Extra buffer metadata describing image cropping.</p>
 <div class="refsect3">
-<a name="id-1.2.14.4.9.4.5"></a><h4>Members</h4>
+<a name="id-1.2.15.4.9.4.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -1010,7 +1014,7 @@
 </pre>
 <p>Extra buffer metadata describing an image region of interest</p>
 <div class="refsect3">
-<a name="id-1.2.14.4.9.5.5"></a><h4>Members</h4>
+<a name="id-1.2.15.4.9.5.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -1064,6 +1068,18 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="GST-BUFFER-POOL-OPTION-VIDEO-GL-TEXTURE-UPLOAD-META:CAPS"></a><h3>GST_BUFFER_POOL_OPTION_VIDEO_GL_TEXTURE_UPLOAD_META</h3>
+<pre class="programlisting">#define GST_BUFFER_POOL_OPTION_VIDEO_GL_TEXTURE_UPLOAD_META "GstBufferPoolOptionVideoGLTextureUploadMeta"
+</pre>
+<p>An option that can be activated on a bufferpool to request gl texture upload
+meta on buffers from the pool.</p>
+<p>When this option is enabled on the bufferpool,
+<em class="parameter"><code>GST_BUFFER_POOL_OPTION_VIDEO_META</code></em>
+ should also be enabled.</p>
+<p class="since">Since 1.2.2</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GstVideoGLTextureUploadMeta"></a><h3>struct GstVideoGLTextureUploadMeta</h3>
 <pre class="programlisting">struct GstVideoGLTextureUploadMeta {
   GstMeta       meta;
@@ -1078,7 +1094,7 @@
 have OpenGL set up and call this from a thread where it is valid
 to upload something to an OpenGL texture.</p>
 <div class="refsect3">
-<a name="id-1.2.14.4.9.6.5"></a><h4>Members</h4>
+<a name="id-1.2.15.4.9.7.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
diff --git a/docs/libs/html/gst-plugins-base-libs-gstvideoorientation.html b/docs/libs/html/gst-plugins-base-libs-gstvideoorientation.html
index 173f168..a68ec34 100644
--- a/docs/libs/html/gst-plugins-base-libs-gstvideoorientation.html
+++ b/docs/libs/html/gst-plugins-base-libs-gstvideoorientation.html
@@ -152,7 +152,7 @@
                                    <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> *center</code></em>);</pre>
 <p>Get the horizontal centering offset from the given object.</p>
 <div class="refsect3">
-<a name="id-1.2.14.10.9.2.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.10.9.2.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -174,7 +174,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.10.9.2.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.10.9.2.6"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> in case the element supports centering</p>
 <p></p>
 </div>
@@ -187,7 +187,7 @@
                                  <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> *flip</code></em>);</pre>
 <p>Get the horizontal flipping state (<a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> for flipped) from the given object.</p>
 <div class="refsect3">
-<a name="id-1.2.14.10.9.3.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.10.9.3.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -209,7 +209,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.10.9.3.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.10.9.3.6"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> in case the element supports flipping</p>
 <p></p>
 </div>
@@ -222,7 +222,7 @@
                                    <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> *center</code></em>);</pre>
 <p>Get the vertical centering offset from the given object.</p>
 <div class="refsect3">
-<a name="id-1.2.14.10.9.4.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.10.9.4.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -244,7 +244,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.10.9.4.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.10.9.4.6"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> in case the element supports centering</p>
 <p></p>
 </div>
@@ -257,7 +257,7 @@
                                  <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> *flip</code></em>);</pre>
 <p>Get the vertical flipping state (<a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> for flipped) from the given object.</p>
 <div class="refsect3">
-<a name="id-1.2.14.10.9.5.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.10.9.5.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -279,7 +279,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.10.9.5.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.10.9.5.6"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> in case the element supports flipping</p>
 <p></p>
 </div>
@@ -292,7 +292,7 @@
                                    <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> center</code></em>);</pre>
 <p>Set the horizontal centering offset for the given object.</p>
 <div class="refsect3">
-<a name="id-1.2.14.10.9.6.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.10.9.6.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -314,7 +314,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.10.9.6.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.10.9.6.6"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> in case the element supports centering</p>
 <p></p>
 </div>
@@ -327,7 +327,7 @@
                                  <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> flip</code></em>);</pre>
 <p>Set the horizontal flipping state (<a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> for flipped) for the given object.</p>
 <div class="refsect3">
-<a name="id-1.2.14.10.9.7.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.10.9.7.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -349,7 +349,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.10.9.7.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.10.9.7.6"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> in case the element supports flipping</p>
 <p></p>
 </div>
@@ -362,7 +362,7 @@
                                    <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> center</code></em>);</pre>
 <p>Set the vertical centering offset for the given object.</p>
 <div class="refsect3">
-<a name="id-1.2.14.10.9.8.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.10.9.8.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -384,7 +384,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.10.9.8.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.10.9.8.6"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> in case the element supports centering</p>
 <p></p>
 </div>
@@ -397,7 +397,7 @@
                                  <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> flip</code></em>);</pre>
 <p>Set the vertical flipping state (<a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> for flipped) for the given object.</p>
 <div class="refsect3">
-<a name="id-1.2.14.10.9.9.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.10.9.9.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -419,7 +419,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.10.9.9.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.10.9.9.6"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> in case the element supports flipping</p>
 <p></p>
 </div>
@@ -456,7 +456,7 @@
 </pre>
 <p><a class="link" href="gst-plugins-base-libs-gstvideoorientation.html#GstVideoOrientationInterface" title="struct GstVideoOrientationInterface"><span class="type">GstVideoOrientationInterface</span></a> interface.</p>
 <div class="refsect3">
-<a name="id-1.2.14.10.10.3.5"></a><h4>Members</h4>
+<a name="id-1.2.15.10.10.3.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
diff --git a/docs/libs/html/gst-plugins-base-libs-gstvideooverlay.html b/docs/libs/html/gst-plugins-base-libs-gstvideooverlay.html
index 5486273..76dd7f5 100644
--- a/docs/libs/html/gst-plugins-base-libs-gstvideooverlay.html
+++ b/docs/libs/html/gst-plugins-base-libs-gstvideooverlay.html
@@ -134,7 +134,7 @@
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gstvideooverlay.description"></a><h2>Description</h2>
 <div class="refsect2">
-<a name="id-1.2.14.11.8.2"></a><p>
+<a name="id-1.2.15.11.8.2"></a><p>
 The <a class="link" href="gst-plugins-base-libs-gstvideooverlay.html#GstVideoOverlay"><span class="type">GstVideoOverlay</span></a> interface is used for 2 main purposes :
 </p>
 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
@@ -246,21 +246,25 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.14.11.8.3"></a><h3>Two basic usage scenarios</h3>
+<a name="id-1.2.15.11.8.3"></a><h3>Two basic usage scenarios</h3>
 <p>
 There are two basic usage scenarios: in the simplest case, the application
-knows exactly what particular element is used for video output, which is
-usually the case when the application creates the videosink to use
-(e.g. <span class="type">xvimagesink</span>, <span class="type">ximagesink</span>, etc.) itself; in this case, the application
-can just create the videosink element, create and realize the window to
-render the video on and then call <a class="link" href="gst-plugins-base-libs-gstvideooverlay.html#gst-video-overlay-set-window-handle" title="gst_video_overlay_set_window_handle ()"><code class="function">gst_video_overlay_set_window_handle()</code></a> directly
-with the XID or native window handle, before starting up the pipeline.
+uses <span class="type">playbin</span> or <span class="type">plasink</span> or knows exactly what particular element is used
+for video output, which is usually the case when the application creates
+the videosink to use (e.g. <span class="type">xvimagesink</span>, <span class="type">ximagesink</span>, etc.) itself; in this
+case, the application can just create the videosink element, create and
+realize the window to render the video on and then
+call <a class="link" href="gst-plugins-base-libs-gstvideooverlay.html#gst-video-overlay-set-window-handle" title="gst_video_overlay_set_window_handle ()"><code class="function">gst_video_overlay_set_window_handle()</code></a> directly with the XID or native
+window handle, before starting up the pipeline.
+As <span class="type">playbin</span> and <span class="type">playsink</span> implement the video overlay interface and proxy
+it transparently to the actual video sink even if it is created later, this
+case also applies when using these elements.
 </p>
 <p>
 In the other and more common case, the application does not know in advance
 what GStreamer video sink element will be used for video output. This is
-usually the case when an element such as <span class="type">autovideosink</span> or <span class="type">gconfvideosink</span>
-is used. In this case, the video sink element itself is created
+usually the case when an element such as <span class="type">autovideosink</span> is used.
+In this case, the video sink element itself is created
 asynchronously from a GStreamer streaming thread some time after the
 pipeline has been started up. When that happens, however, the video sink
 will need to know right then whether to render onto an already existing
@@ -289,7 +293,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.14.11.8.4"></a><h3>GstVideoOverlay and Gtk+</h3>
+<a name="id-1.2.15.11.8.4"></a><h3>GstVideoOverlay and Gtk+</h3>
 <p>
 </p>
 <div class="informalexample">
@@ -498,7 +502,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.14.11.8.5"></a><h3>GstVideoOverlay and Qt</h3>
+<a name="id-1.2.15.11.8.5"></a><h3>GstVideoOverlay and Qt</h3>
 <p>
 </p>
 <div class="informalexample">
@@ -630,7 +634,7 @@
 <p>This will post a "have-window-handle" element message on the bus.</p>
 <p>This function should only be used by video overlay plugin developers.</p>
 <div class="refsect3">
-<a name="id-1.2.14.11.9.2.6"></a><h4>Parameters</h4>
+<a name="id-1.2.15.11.9.2.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -664,7 +668,7 @@
  will
 tell the overlay to stop using that window and create an internal one.</p>
 <div class="refsect3">
-<a name="id-1.2.14.11.9.3.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.11.9.3.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -698,7 +702,7 @@
 window.</p>
 <p>This function should only be used by video overlay plugin developers.</p>
 <div class="refsect3">
-<a name="id-1.2.14.11.9.4.6"></a><h4>Parameters</h4>
+<a name="id-1.2.15.11.9.4.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -721,7 +725,7 @@
 <p>Tell an overlay that it has been exposed. This will redraw the current frame
 in the drawable even if the pipeline is PAUSED.</p>
 <div class="refsect3">
-<a name="id-1.2.14.11.9.5.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.11.9.5.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -748,7 +752,7 @@
 for them. This method allows you to disable events handling completely
 from the <a class="link" href="gst-plugins-base-libs-gstvideooverlay.html#GstVideoOverlay"><span class="type">GstVideoOverlay</span></a>.</p>
 <div class="refsect3">
-<a name="id-1.2.14.11.9.6.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.11.9.6.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -792,7 +796,7 @@
 <p>This method is needed for non fullscreen video overlay in UI toolkits that
 do not support subwindows.</p>
 <div class="refsect3">
-<a name="id-1.2.14.11.9.7.6"></a><h4>Parameters</h4>
+<a name="id-1.2.15.11.9.7.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -829,7 +833,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.11.9.7.7"></a><h4>Returns</h4>
+<a name="id-1.2.15.11.9.7.7"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if not supported by the sink.</p>
 <p></p>
 </div>
@@ -843,7 +847,7 @@
 <p>Convenience function to check if the given message is a
 "prepare-window-handle" message from a <a class="link" href="gst-plugins-base-libs-gstvideooverlay.html#GstVideoOverlay"><span class="type">GstVideoOverlay</span></a>.</p>
 <div class="refsect3">
-<a name="id-1.2.14.11.9.8.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.11.9.8.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -858,7 +862,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.11.9.8.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.11.9.8.6"></a><h4>Returns</h4>
 <p> whether <em class="parameter"><code>msg</code></em>
 is a "prepare-window-handle" message</p>
 <p></p>
@@ -892,7 +896,7 @@
 </pre>
 <p><a class="link" href="gst-plugins-base-libs-gstvideooverlay.html#GstVideoOverlay"><span class="type">GstVideoOverlay</span></a> interface</p>
 <div class="refsect3">
-<a name="id-1.2.14.11.10.3.5"></a><h4>Members</h4>
+<a name="id-1.2.15.11.10.3.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
diff --git a/docs/libs/html/gst-plugins-base-libs-gstvideooverlaycomposition.html b/docs/libs/html/gst-plugins-base-libs-gstvideooverlaycomposition.html
index 7bb6b1f..29c5328 100644
--- a/docs/libs/html/gst-plugins-base-libs-gstvideooverlaycomposition.html
+++ b/docs/libs/html/gst-plugins-base-libs-gstvideooverlaycomposition.html
@@ -322,7 +322,7 @@
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gstvideooverlaycomposition.description"></a><h2>Description</h2>
 <div class="refsect2">
-<a name="id-1.2.14.5.7.2"></a><p>
+<a name="id-1.2.15.5.7.2"></a><p>
 Functions to create and handle overlay compositions on video buffers.
 </p>
 <p>
@@ -360,7 +360,7 @@
 <p>Creates a new video overlay composition object to hold one or more
 overlay rectangles.</p>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.2.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.5.8.2.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -376,7 +376,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.2.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.5.8.2.6"></a><h4>Returns</h4>
 <p> a new <a class="link" href="gst-plugins-base-libs-gstvideooverlaycomposition.html#GstVideoOverlayComposition" title="GstVideoOverlayComposition"><span class="type">GstVideoOverlayComposition</span></a>. Unref with
 <a class="link" href="gst-plugins-base-libs-gstvideooverlaycomposition.html#gst-video-overlay-composition-unref" title="gst_video_overlay_composition_unref ()"><code class="function">gst_video_overlay_composition_unref()</code></a> when no longer needed. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
@@ -393,7 +393,7 @@
 , use <a class="link" href="gst-plugins-base-libs-gstvideooverlaycomposition.html#gst-video-overlay-composition-make-writable" title="gst_video_overlay_composition_make_writable ()"><code class="function">gst_video_overlay_composition_make_writable()</code></a> to ensure
 a composition and its rectangles can be modified.</p>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.3.6"></a><h4>Parameters</h4>
+<a name="id-1.2.15.5.8.3.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -408,7 +408,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.3.7"></a><h4>Returns</h4>
+<a name="id-1.2.15.5.8.3.7"></a><h4>Returns</h4>
 <p> <em class="parameter"><code>comp</code></em>
 . </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
@@ -422,7 +422,7 @@
 <p>Decreases the refcount of the composition. If the refcount reaches 0, the
 composition will be freed.</p>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.4.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.5.8.4.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -447,7 +447,7 @@
 <p>Adds an overlay rectangle to an existing overlay composition object. This
 must be done right after creating the overlay composition.</p>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.5.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.5.8.5.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -479,7 +479,7 @@
 <p>Returns the number of <a class="link" href="gst-plugins-base-libs-gstvideooverlaycomposition.html#GstVideoOverlayRectangle" title="GstVideoOverlayRectangle"><span class="type">GstVideoOverlayRectangle</span></a>s contained in <em class="parameter"><code>comp</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.6.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.5.8.6.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -494,7 +494,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.6.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.5.8.6.6"></a><h4>Returns</h4>
 <p> the number of rectangles</p>
 <p></p>
 </div>
@@ -510,7 +510,7 @@
 -th <a class="link" href="gst-plugins-base-libs-gstvideooverlaycomposition.html#GstVideoOverlayRectangle" title="GstVideoOverlayRectangle"><span class="type">GstVideoOverlayRectangle</span></a> contained in <em class="parameter"><code>comp</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.7.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.5.8.7.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -532,7 +532,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.7.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.5.8.7.6"></a><h4>Returns</h4>
 <p> the <em class="parameter"><code>n</code></em>
 -th rectangle, or NULL if <em class="parameter"><code>n</code></em>
 is out of
@@ -553,7 +553,7 @@
 (meaning there will never be a rectangle with the same sequence number as
 a composition).</p>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.8.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.5.8.8.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -568,7 +568,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.8.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.5.8.8.6"></a><h4>Returns</h4>
 <p> the sequence number of <em class="parameter"><code>comp</code></em>
 </p>
 <p></p>
@@ -586,7 +586,7 @@
 actual overlay pixel data buffers contained in the rectangles are not
 copied.</p>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.9.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.5.8.9.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -601,7 +601,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.9.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.5.8.9.6"></a><h4>Returns</h4>
 <p> a new <a class="link" href="gst-plugins-base-libs-gstvideooverlaycomposition.html#GstVideoOverlayComposition" title="GstVideoOverlayComposition"><span class="type">GstVideoOverlayComposition</span></a> equivalent
 to <em class="parameter"><code>comp</code></em>
 . </p>
@@ -625,7 +625,7 @@
 rectangles will also be copied, but the actual overlay pixel data buffers
 contained in the rectangles are not copied.</p>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.10.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.5.8.10.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -640,7 +640,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.10.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.5.8.10.6"></a><h4>Returns</h4>
 <p> a writable <a class="link" href="gst-plugins-base-libs-gstvideooverlaycomposition.html#GstVideoOverlayComposition" title="GstVideoOverlayComposition"><span class="type">GstVideoOverlayComposition</span></a>
 equivalent to <em class="parameter"><code>comp</code></em>
 . </p>
@@ -660,7 +660,7 @@
  must be writable and
 mapped appropriately.</p>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.11.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.5.8.11.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -701,7 +701,7 @@
 of <em class="parameter"><code>comp</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.13.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.5.8.13.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -755,7 +755,7 @@
 and also many rendering libraries such as Cairo, for example.
 The pixel data buffer must have <a class="link" href="gst-plugins-base-libs-gstvideometa.html#GstVideoMeta" title="struct GstVideoMeta"><span class="type">GstVideoMeta</span></a> set.</p>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.16.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.5.8.16.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -799,7 +799,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.16.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.5.8.16.6"></a><h4>Returns</h4>
 <p> a new <a class="link" href="gst-plugins-base-libs-gstvideooverlaycomposition.html#GstVideoOverlayRectangle" title="GstVideoOverlayRectangle"><span class="type">GstVideoOverlayRectangle</span></a>. Unref with
 <a class="link" href="gst-plugins-base-libs-gstvideooverlaycomposition.html#gst-video-overlay-rectangle-unref" title="gst_video_overlay_rectangle_unref ()"><code class="function">gst_video_overlay_rectangle_unref()</code></a> when no longer needed. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
@@ -818,7 +818,7 @@
 it is unlikely that someone will hold the single reference to the rectangle
 and not know that that's the case).</p>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.17.6"></a><h4>Parameters</h4>
+<a name="id-1.2.15.5.8.17.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -833,7 +833,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.17.7"></a><h4>Returns</h4>
+<a name="id-1.2.15.5.8.17.7"></a><h4>Returns</h4>
 <p> <em class="parameter"><code>comp</code></em>
 . </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
@@ -847,7 +847,7 @@
 <p>Decreases the refcount of the rectangle. If the refcount reaches 0, the
 rectangle will be freed.</p>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.18.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.5.8.18.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -870,7 +870,7 @@
                                (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstvideooverlaycomposition.html#GstVideoOverlayRectangle" title="GstVideoOverlayRectangle"><span class="type">GstVideoOverlayRectangle</span></a> *rectangle</code></em>,
                                 <em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstvideooverlaycomposition.html#GstVideoOverlayFormatFlags" title="enum GstVideoOverlayFormatFlags"><span class="type">GstVideoOverlayFormatFlags</span></a> flags</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.19.4"></a><h4>Parameters</h4>
+<a name="id-1.2.15.5.8.19.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -896,7 +896,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.19.5"></a><h4>Returns</h4>
+<a name="id-1.2.15.5.8.19.5"></a><h4>Returns</h4>
 <p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstBuffer.html#GstBuffer"><span class="type">GstBuffer</span></a> holding the pixel data with
 format as originally provided and specified in video meta with
 width and height of the render dimensions as per
@@ -914,7 +914,7 @@
                                (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstvideooverlaycomposition.html#GstVideoOverlayRectangle" title="GstVideoOverlayRectangle"><span class="type">GstVideoOverlayRectangle</span></a> *rectangle</code></em>,
                                 <em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstvideooverlaycomposition.html#GstVideoOverlayFormatFlags" title="enum GstVideoOverlayFormatFlags"><span class="type">GstVideoOverlayFormatFlags</span></a> flags</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.20.4"></a><h4>Parameters</h4>
+<a name="id-1.2.15.5.8.20.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -940,7 +940,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.20.5"></a><h4>Returns</h4>
+<a name="id-1.2.15.5.8.20.5"></a><h4>Returns</h4>
 <p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstBuffer.html#GstBuffer"><span class="type">GstBuffer</span></a> holding the ARGB pixel data with
 width and height of the render dimensions as per
 <a class="link" href="gst-plugins-base-libs-gstvideooverlaycomposition.html#gst-video-overlay-rectangle-get-render-rectangle" title="gst_video_overlay_rectangle_get_render_rectangle ()"><code class="function">gst_video_overlay_rectangle_get_render_rectangle()</code></a>. This function does
@@ -957,7 +957,7 @@
                                (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstvideooverlaycomposition.html#GstVideoOverlayRectangle" title="GstVideoOverlayRectangle"><span class="type">GstVideoOverlayRectangle</span></a> *rectangle</code></em>,
                                 <em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstvideooverlaycomposition.html#GstVideoOverlayFormatFlags" title="enum GstVideoOverlayFormatFlags"><span class="type">GstVideoOverlayFormatFlags</span></a> flags</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.21.4"></a><h4>Parameters</h4>
+<a name="id-1.2.15.5.8.21.4"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -983,7 +983,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.21.5"></a><h4>Returns</h4>
+<a name="id-1.2.15.5.8.21.5"></a><h4>Returns</h4>
 <p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstBuffer.html#GstBuffer"><span class="type">GstBuffer</span></a> holding the AYUV pixel data with
 width and height of the render dimensions as per
 <a class="link" href="gst-plugins-base-libs-gstvideooverlaycomposition.html#gst-video-overlay-rectangle-get-render-rectangle" title="gst_video_overlay_rectangle_get_render_rectangle ()"><code class="function">gst_video_overlay_rectangle_get_render_rectangle()</code></a>. This function does
@@ -1004,7 +1004,7 @@
 need to be scaled to the render dimensions, which can be retrieved using
 <a class="link" href="gst-plugins-base-libs-gstvideooverlaycomposition.html#gst-video-overlay-rectangle-get-render-rectangle" title="gst_video_overlay_rectangle_get_render_rectangle ()"><code class="function">gst_video_overlay_rectangle_get_render_rectangle()</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.22.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.5.8.22.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1030,7 +1030,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.22.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.5.8.22.6"></a><h4>Returns</h4>
 <p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstBuffer.html#GstBuffer"><span class="type">GstBuffer</span></a> holding the pixel data with
 <a class="link" href="gst-plugins-base-libs-gstvideometa.html#GstVideoMeta" title="struct GstVideoMeta"><span class="type">GstVideoMeta</span></a> set. This function does not return a reference, the caller
 should obtain a reference of her own with <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstBuffer.html#gst-buffer-ref"><code class="function">gst_buffer_ref()</code></a> if needed. </p>
@@ -1049,7 +1049,7 @@
 need to be scaled to the render dimensions, which can be retrieved using
 <a class="link" href="gst-plugins-base-libs-gstvideooverlaycomposition.html#gst-video-overlay-rectangle-get-render-rectangle" title="gst_video_overlay_rectangle_get_render_rectangle ()"><code class="function">gst_video_overlay_rectangle_get_render_rectangle()</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.23.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.5.8.23.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1075,7 +1075,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.23.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.5.8.23.6"></a><h4>Returns</h4>
 <p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstBuffer.html#GstBuffer"><span class="type">GstBuffer</span></a> holding the ARGB pixel data with
 <a class="link" href="gst-plugins-base-libs-gstvideometa.html#GstVideoMeta" title="struct GstVideoMeta"><span class="type">GstVideoMeta</span></a> set. This function does not return a reference, the caller
 should obtain a reference of her own with <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstBuffer.html#gst-buffer-ref"><code class="function">gst_buffer_ref()</code></a> if needed. </p>
@@ -1094,7 +1094,7 @@
 need to be scaled to the render dimensions, which can be retrieved using
 <a class="link" href="gst-plugins-base-libs-gstvideooverlaycomposition.html#gst-video-overlay-rectangle-get-render-rectangle" title="gst_video_overlay_rectangle_get_render_rectangle ()"><code class="function">gst_video_overlay_rectangle_get_render_rectangle()</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.24.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.5.8.24.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1120,7 +1120,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.24.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.5.8.24.6"></a><h4>Returns</h4>
 <p> a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstBuffer.html#GstBuffer"><span class="type">GstBuffer</span></a> holding the AYUV pixel data with
 <a class="link" href="gst-plugins-base-libs-gstvideometa.html#GstVideoMeta" title="struct GstVideoMeta"><span class="type">GstVideoMeta</span></a> set. This function does not return a reference, the caller
 should obtain a reference of her own with <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstBuffer.html#gst-buffer-ref"><code class="function">gst_buffer_ref()</code></a> if needed. </p>
@@ -1140,7 +1140,7 @@
 <p>Retrieves the render position and render dimension of the overlay
 rectangle on the video.</p>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.25.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.5.8.25.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1177,7 +1177,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.25.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.5.8.25.6"></a><h4>Returns</h4>
 <p> TRUE if valid render dimensions were retrieved.</p>
 <p></p>
 </div>
@@ -1202,7 +1202,7 @@
 renderer could also use the GstBuffer pointers as a hint for changed
 pixel-data.</p>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.26.6"></a><h4>Parameters</h4>
+<a name="id-1.2.15.5.8.26.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1217,7 +1217,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.26.7"></a><h4>Returns</h4>
+<a name="id-1.2.15.5.8.26.7"></a><h4>Returns</h4>
 <p> the sequence number of <em class="parameter"><code>rectangle</code></em>
 </p>
 <p></p>
@@ -1243,7 +1243,7 @@
 <a class="link" href="gst-plugins-base-libs-gstvideooverlaycomposition.html#gst-video-overlay-composition-make-writable" title="gst_video_overlay_composition_make_writable ()"><code class="function">gst_video_overlay_composition_make_writable()</code></a> or
 <a class="link" href="gst-plugins-base-libs-gstvideooverlaycomposition.html#gst-video-overlay-composition-copy" title="gst_video_overlay_composition_copy ()"><code class="function">gst_video_overlay_composition_copy()</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.27.6"></a><h4>Parameters</h4>
+<a name="id-1.2.15.5.8.27.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1291,7 +1291,7 @@
 actual overlay pixel data buffers contained in the rectangle are not
 copied.</p>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.28.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.5.8.28.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1306,7 +1306,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.28.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.5.8.28.6"></a><h4>Returns</h4>
 <p> a new <a class="link" href="gst-plugins-base-libs-gstvideooverlaycomposition.html#GstVideoOverlayRectangle" title="GstVideoOverlayRectangle"><span class="type">GstVideoOverlayRectangle</span></a> equivalent
 to <em class="parameter"><code>rectangle</code></em>
 . </p>
@@ -1324,7 +1324,7 @@
 uses premultiplied or not, it can request the pixel data in the format
 it is stored in, to avoid unnecessary conversion.</p>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.29.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.5.8.29.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1339,7 +1339,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.29.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.5.8.29.6"></a><h4>Returns</h4>
 <p> the <a class="link" href="gst-plugins-base-libs-gstvideooverlaycomposition.html#GstVideoOverlayFormatFlags" title="enum GstVideoOverlayFormatFlags"><span class="type">GstVideoOverlayFormatFlags</span></a> associated with the rectangle.</p>
 <p></p>
 </div>
@@ -1352,7 +1352,7 @@
                                (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstvideooverlaycomposition.html#GstVideoOverlayRectangle" title="GstVideoOverlayRectangle"><span class="type">GstVideoOverlayRectangle</span></a> *rectangle</code></em>);</pre>
 <p>Retrieves the global-alpha value associated with a <a class="link" href="gst-plugins-base-libs-gstvideooverlaycomposition.html#GstVideoOverlayRectangle" title="GstVideoOverlayRectangle"><span class="type">GstVideoOverlayRectangle</span></a>.</p>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.30.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.5.8.30.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1367,7 +1367,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.30.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.5.8.30.6"></a><h4>Returns</h4>
 <p> the global-alpha value associated with the rectangle.</p>
 <p></p>
 </div>
@@ -1388,7 +1388,7 @@
 <a class="link" href="gst-plugins-base-libs-gstvideooverlaycomposition.html#gst-video-overlay-composition-make-writable" title="gst_video_overlay_composition_make_writable ()"><code class="function">gst_video_overlay_composition_make_writable()</code></a> or
 <a class="link" href="gst-plugins-base-libs-gstvideooverlaycomposition.html#gst-video-overlay-composition-copy" title="gst_video_overlay_composition_copy ()"><code class="function">gst_video_overlay_composition_copy()</code></a>.</p>
 <div class="refsect3">
-<a name="id-1.2.14.5.8.31.6"></a><h4>Parameters</h4>
+<a name="id-1.2.15.5.8.31.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1431,7 +1431,7 @@
 </pre>
 <p>Extra buffer metadata describing image overlay data.</p>
 <div class="refsect3">
-<a name="id-1.2.14.5.9.4.5"></a><h4>Members</h4>
+<a name="id-1.2.15.5.9.4.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -1458,7 +1458,7 @@
 <a name="GstVideoOverlayFormatFlags"></a><h3>enum GstVideoOverlayFormatFlags</h3>
 <p>Overlay format flags.</p>
 <div class="refsect3">
-<a name="id-1.2.14.5.9.5.4"></a><h4>Members</h4>
+<a name="id-1.2.15.5.9.5.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
diff --git a/docs/libs/html/gst-plugins-base-libs-gstvideosink.html b/docs/libs/html/gst-plugins-base-libs-gstvideosink.html
index fe97898..02e24de 100644
--- a/docs/libs/html/gst-plugins-base-libs-gstvideosink.html
+++ b/docs/libs/html/gst-plugins-base-libs-gstvideosink.html
@@ -126,7 +126,7 @@
 <div class="refsect1">
 <a name="gst-plugins-base-libs-gstvideosink.description"></a><h2>Description</h2>
 <div class="refsect2">
-<a name="id-1.2.14.7.9.2"></a><p>
+<a name="id-1.2.15.7.9.2"></a><p>
 Provides useful functions and a base class for video sinks. 
 </p>
 <p>
@@ -151,7 +151,7 @@
 <p>Get the sink <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a> of <em class="parameter"><code>obj</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.14.7.10.3.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.7.10.3.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -190,7 +190,7 @@
  one and <em class="parameter"><code>scaling</code></em>
  is set to FALSE.</p>
 <div class="refsect3">
-<a name="id-1.2.14.7.10.5.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.7.10.5.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -236,7 +236,7 @@
  and <em class="parameter"><code>width</code></em>
  members.</p>
 <div class="refsect3">
-<a name="id-1.2.14.7.11.2.5"></a><h4>Members</h4>
+<a name="id-1.2.15.7.11.2.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -271,7 +271,7 @@
 <em class="parameter"><code>show_frame</code></em>
  virtual function.</p>
 <div class="refsect3">
-<a name="id-1.2.14.7.11.3.5"></a><h4>Members</h4>
+<a name="id-1.2.15.7.11.3.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -308,7 +308,7 @@
 </pre>
 <p>Helper structure representing a rectangular area.</p>
 <div class="refsect3">
-<a name="id-1.2.14.7.11.4.5"></a><h4>Members</h4>
+<a name="id-1.2.15.7.11.4.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
diff --git a/docs/libs/html/gst-plugins-base-libs-gstvideoutils.html b/docs/libs/html/gst-plugins-base-libs-gstvideoutils.html
index 332dfe3..a024174 100644
--- a/docs/libs/html/gst-plugins-base-libs-gstvideoutils.html
+++ b/docs/libs/html/gst-plugins-base-libs-gstvideoutils.html
@@ -6,7 +6,7 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer Base Plugins 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-video.html" title="Video Library">
-<link rel="prev" href="gst-plugins-base-libs-GstVideoEncoder.html" title="GstVideoEncoder">
+<link rel="prev" href="gst-plugins-base-libs-GstVideoPool.html" title="GstVideoPool">
 <link rel="next" href="gstreamer-libs-hierarchy.html" title="Part II. Object Hierarchy">
 <meta name="generator" content="GTK-Doc V1.20 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
@@ -20,7 +20,7 @@
 </td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="gstreamer-video.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="gst-plugins-base-libs-GstVideoEncoder.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="gst-plugins-base-libs-GstVideoPool.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
 <td><a accesskey="n" href="gstreamer-libs-hierarchy.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
@@ -221,7 +221,7 @@
 <p>The entire set of flags for the <em class="parameter"><code>frame</code></em>
 </p>
 <div class="refsect3">
-<a name="id-1.2.14.14.7.2.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.15.7.2.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -244,7 +244,7 @@
 <p>Checks whether the given <em class="parameter"><code>flag</code></em>
  is set</p>
 <div class="refsect3">
-<a name="id-1.2.14.14.7.3.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.15.7.3.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -273,7 +273,7 @@
 </pre>
 <p>This macro sets the given bits</p>
 <div class="refsect3">
-<a name="id-1.2.14.14.7.4.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.15.7.4.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -302,7 +302,7 @@
 </pre>
 <p>This macro usets the given bits.</p>
 <div class="refsect3">
-<a name="id-1.2.14.14.7.5.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.15.7.5.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -331,7 +331,7 @@
 </pre>
 <p>Tests if the buffer should only be decoded but not sent downstream.</p>
 <div class="refsect3">
-<a name="id-1.2.14.14.7.6.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.15.7.6.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -354,7 +354,7 @@
 <p>Tests if the frame must be encoded as a keyframe. Applies only to
 frames provided to encoders. Decoders can safely ignore this field.</p>
 <div class="refsect3">
-<a name="id-1.2.14.14.7.7.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.15.7.7.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -379,7 +379,7 @@
 <p>Applies only to frames provided to encoders. Decoders can safely
 ignore this field.</p>
 <div class="refsect3">
-<a name="id-1.2.14.14.7.8.6"></a><h4>Parameters</h4>
+<a name="id-1.2.15.15.7.8.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -402,7 +402,7 @@
 <p>Tests if the frame is a synchronization point (like a keyframe).</p>
 <p>Decoder implementations can use this to detect keyframes.</p>
 <div class="refsect3">
-<a name="id-1.2.14.14.7.9.6"></a><h4>Parameters</h4>
+<a name="id-1.2.15.15.7.9.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -427,7 +427,7 @@
 are not meant to be displayed.</p>
 <p>Encoder implementation can safely ignore this field.</p>
 <div class="refsect3">
-<a name="id-1.2.14.14.7.10.7"></a><h4>Parameters</h4>
+<a name="id-1.2.15.15.7.10.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -464,7 +464,7 @@
 <p>Decoder implementing parsing features should set this when they
 detect such a synchronization point.</p>
 <div class="refsect3">
-<a name="id-1.2.14.14.7.13.7"></a><h4>Parameters</h4>
+<a name="id-1.2.15.15.7.13.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -504,7 +504,7 @@
 gst_video_codec_frame_ref (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecFrame" title="struct GstVideoCodecFrame"><span class="type">GstVideoCodecFrame</span></a> *frame</code></em>);</pre>
 <p>Increases the refcount of the given frame by one.</p>
 <div class="refsect3">
-<a name="id-1.2.14.14.7.17.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.15.7.17.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -519,7 +519,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.14.7.17.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.15.7.17.6"></a><h4>Returns</h4>
 <p> <em class="parameter"><code>buf</code></em>
 </p>
 <p></p>
@@ -533,7 +533,7 @@
 <p>Decreases the refcount of the frame. If the refcount reaches 0, the frame
 will be freed.</p>
 <div class="refsect3">
-<a name="id-1.2.14.14.7.18.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.15.7.18.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -564,7 +564,7 @@
 before the <em class="parameter"><code>user_data</code></em>
  is replaced.</p>
 <div class="refsect3">
-<a name="id-1.2.14.14.7.19.6"></a><h4>Parameters</h4>
+<a name="id-1.2.15.15.7.19.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -599,7 +599,7 @@
 <p>Gets private data set on the frame by the subclass via
 <a class="link" href="gst-plugins-base-libs-gstvideoutils.html#gst-video-codec-frame-set-user-data" title="gst_video_codec_frame_set_user_data ()"><code class="function">gst_video_codec_frame_set_user_data()</code></a> previously.</p>
 <div class="refsect3">
-<a name="id-1.2.14.14.7.20.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.15.7.20.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -614,7 +614,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.14.7.20.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.15.7.20.6"></a><h4>Returns</h4>
 <p> The previously set user_data. </p>
 <p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
 </div>
@@ -626,7 +626,7 @@
 gst_video_codec_state_ref (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecState" title="struct GstVideoCodecState"><span class="type">GstVideoCodecState</span></a> *state</code></em>);</pre>
 <p>Increases the refcount of the given state by one.</p>
 <div class="refsect3">
-<a name="id-1.2.14.14.7.21.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.15.7.21.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -641,7 +641,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.14.14.7.21.6"></a><h4>Returns</h4>
+<a name="id-1.2.15.15.7.21.6"></a><h4>Returns</h4>
 <p> <em class="parameter"><code>buf</code></em>
 </p>
 <p></p>
@@ -655,7 +655,7 @@
 <p>Decreases the refcount of the state. If the refcount reaches 0, the state
 will be freed.</p>
 <div class="refsect3">
-<a name="id-1.2.14.14.7.22.5"></a><h4>Parameters</h4>
+<a name="id-1.2.15.15.7.22.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -695,7 +695,7 @@
 <p>A <a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecFrame" title="struct GstVideoCodecFrame"><span class="type">GstVideoCodecFrame</span></a> represents a video frame both in raw and
 encoded form.</p>
 <div class="refsect3">
-<a name="id-1.2.14.14.8.2.5"></a><h4>Members</h4>
+<a name="id-1.2.15.15.8.2.5"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -750,12 +750,13 @@
 <tr>
 <td class="struct_member_name"><p><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstBuffer.html#GstBuffer"><span class="type">GstBuffer</span></a> *<em class="structfield"><code><a name="GstVideoCodecFrame.output-buffer"></a>output_buffer</code></em>;</p></td>
 <td class="struct_member_description"><p>the output <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstBuffer.html#GstBuffer"><span class="type">GstBuffer</span></a>. Implementations should set this either
-directly, or by using the <em class="parameter"><code><code class="function">gst_video_decoder_alloc_output_frame()</code></code></em>
+directly, or by using the
+<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-GstVideoDecoder.html#gst-video-decoder-allocate-output-frame" title="gst_video_decoder_allocate_output_frame ()"><code class="function">gst_video_decoder_allocate_output_frame()</code></a></code></em>
 or
-<em class="parameter"><code><code class="function">gst_video_decoder_alloc_output_buffer()</code></code></em>
-methods. The buffer is owned
-by the frame and references to the frame instead of the buffer should
-be kept.</p></td>
+<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-GstVideoDecoder.html#gst-video-decoder-allocate-output-buffer" title="gst_video_decoder_allocate_output_buffer ()"><code class="function">gst_video_decoder_allocate_output_buffer()</code></a></code></em>
+methods. The buffer is
+owned by the frame and references to the frame instead of the
+buffer should be kept.</p></td>
 <td class="struct_member_annotations"> </td>
 </tr>
 <tr>
@@ -772,7 +773,7 @@
 <a name="GstVideoCodecFrameFlags"></a><h3>enum GstVideoCodecFrameFlags</h3>
 <p>Flags for <a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecFrame" title="struct GstVideoCodecFrame"><span class="type">GstVideoCodecFrame</span></a></p>
 <div class="refsect3">
-<a name="id-1.2.14.14.8.3.4"></a><h4>Members</h4>
+<a name="id-1.2.15.15.8.3.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -834,7 +835,7 @@
 <em class="parameter"><code><a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#gst-video-encoder-set-output-state" title="gst_video_encoder_set_output_state ()"><code class="function">gst_video_encoder_set_output_state()</code></a></code></em>
  methods.</p>
 <div class="refsect3">
-<a name="id-1.2.14.14.8.4.7"></a><h4>Members</h4>
+<a name="id-1.2.15.15.8.4.7"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
@@ -854,8 +855,8 @@
 </tr>
 <tr>
 <td class="struct_member_name"><p><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstBuffer.html#GstBuffer"><span class="type">GstBuffer</span></a> *<em class="structfield"><code><a name="GstVideoCodecState.codec-data"></a>codec_data</code></em>;</p></td>
-<td class="struct_member_description"><p>(optional) a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstBuffer.html#GstBuffer"><span class="type">GstBuffer</span></a> corresponding to the
-'codec_data' field of a stream.</p></td>
+<td class="struct_member_description"><p>a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstBuffer.html#GstBuffer"><span class="type">GstBuffer</span></a> corresponding to the
+'codec_data' field of a stream, or NULL.</p></td>
 <td class="struct_member_annotations"> </td>
 </tr>
 </tbody>
diff --git a/docs/libs/html/gstreamer-audio.html b/docs/libs/html/gstreamer-audio.html
index d823a81..dcf9ce6 100644
--- a/docs/libs/html/gstreamer-audio.html
+++ b/docs/libs/html/gstreamer-audio.html
@@ -27,7 +27,7 @@
 <span class="refentrytitle"><a href="gst-plugins-base-libs-gstaudio.html">gstaudio</a></span><span class="refpurpose"> — Support library for audio elements</span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gst-plugins-base-libs-gstaudiometa.html">gstaudiometa</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="gst-plugins-base-libs-gstaudiometa.html">gstaudiometa</a></span><span class="refpurpose"> — Buffer metadata for audio downmix matrix handling</span>
 </dt>
 <dt>
 <span class="refentrytitle"><a href="gst-plugins-base-libs-gstaudiocdsrc.html">gstaudiocdsrc</a></span><span class="refpurpose"> — Base class for Audio CD sources</span>
@@ -45,9 +45,6 @@
 <span class="refentrytitle"><a href="gst-plugins-base-libs-gstaudiofilter.html">gstaudiofilter</a></span><span class="refpurpose"> — Base class for simple audio filters</span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gst-plugins-base-libs-gstaudiomixerutils.html">gstaudiomixerutils</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
 <span class="refentrytitle"><a href="gst-plugins-base-libs-gstaudiosink.html">gstaudiosink</a></span><span class="refpurpose"> — Simple base class for audio sinks</span>
 </dt>
 <dt>
@@ -60,7 +57,7 @@
 <span class="refentrytitle"><a href="gst-plugins-base-libs-gstaudiobasesrc.html">gstaudiobasesrc</a></span><span class="refpurpose"> — Base class for audio sources</span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gst-plugins-base-libs-gstaudiochannels.html">gstaudiochannels</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="gst-plugins-base-libs-gstaudiochannels.html">gstaudiochannels</a></span><span class="refpurpose"> — Support library for audio channel handling</span>
 </dt>
 <dt>
 <span class="refentrytitle"><a href="gst-plugins-base-libs-gstaudioringbuffer.html">gstaudioringbuffer</a></span><span class="refpurpose"> — Base class for audio ringbuffer implementations</span>
diff --git a/docs/libs/html/gstreamer-mikey.html b/docs/libs/html/gstreamer-mikey.html
new file mode 100644
index 0000000..4ff8f03
--- /dev/null
+++ b/docs/libs/html/gstreamer-mikey.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>GStreamer Base Plugins 1.0 Library Reference Manual: MIKEY Library</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="index.html" title="GStreamer Base Plugins 1.0 Library Reference Manual">
+<link rel="up" href="gstreamer-plugins-base.html" title="Part I. GStreamer Base Plugins Libraries">
+<link rel="prev" href="gst-plugins-base-libs-gstsdpmessage.html" title="gstsdpmessage">
+<link rel="next" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">
+<meta name="generator" content="GTK-Doc V1.20 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="gstreamer-plugins-base.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-base-libs-gstsdpmessage.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-base-libs-gstmikey.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="chapter">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="gstreamer-mikey"></a>MIKEY Library</h2></div></div></div>
+<div class="toc"><dl class="toc"><dt>
+<span class="refentrytitle"><a href="gst-plugins-base-libs-gstmikey.html">gstmikey</a></span><span class="refpurpose"> — Helper methods for dealing with MIKEY messages</span>
+</dt></dl></div>
+<p>
+        This library should be linked to by getting cflags and libs from
+        <code class="filename">gstreamer-plugins-base-1.0.pc</code> and adding
+        <code class="filename">-lgstsdp-1.0</code> to the library flags.
+      </p>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.20</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/libs/html/gstreamer-plugins-base.html b/docs/libs/html/gstreamer-plugins-base.html
index 2232d20..fac95ca 100644
--- a/docs/libs/html/gstreamer-plugins-base.html
+++ b/docs/libs/html/gstreamer-plugins-base.html
@@ -51,7 +51,7 @@
 <span class="refentrytitle"><a href="gst-plugins-base-libs-gstaudio.html">gstaudio</a></span><span class="refpurpose"> — Support library for audio elements</span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gst-plugins-base-libs-gstaudiometa.html">gstaudiometa</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="gst-plugins-base-libs-gstaudiometa.html">gstaudiometa</a></span><span class="refpurpose"> — Buffer metadata for audio downmix matrix handling</span>
 </dt>
 <dt>
 <span class="refentrytitle"><a href="gst-plugins-base-libs-gstaudiocdsrc.html">gstaudiocdsrc</a></span><span class="refpurpose"> — Base class for Audio CD sources</span>
@@ -69,9 +69,6 @@
 <span class="refentrytitle"><a href="gst-plugins-base-libs-gstaudiofilter.html">gstaudiofilter</a></span><span class="refpurpose"> — Base class for simple audio filters</span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gst-plugins-base-libs-gstaudiomixerutils.html">gstaudiomixerutils</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
 <span class="refentrytitle"><a href="gst-plugins-base-libs-gstaudiosink.html">gstaudiosink</a></span><span class="refpurpose"> — Simple base class for audio sinks</span>
 </dt>
 <dt>
@@ -84,7 +81,7 @@
 <span class="refentrytitle"><a href="gst-plugins-base-libs-gstaudiobasesrc.html">gstaudiobasesrc</a></span><span class="refpurpose"> — Base class for audio sources</span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gst-plugins-base-libs-gstaudiochannels.html">gstaudiochannels</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="gst-plugins-base-libs-gstaudiochannels.html">gstaudiochannels</a></span><span class="refpurpose"> — Support library for audio channel handling</span>
 </dt>
 <dt>
 <span class="refentrytitle"><a href="gst-plugins-base-libs-gstaudioringbuffer.html">gstaudioringbuffer</a></span><span class="refpurpose"> — Base class for audio ringbuffer implementations</span>
@@ -170,6 +167,10 @@
 <dd><dl><dt>
 <span class="refentrytitle"><a href="gst-plugins-base-libs-gstsdpmessage.html">gstsdpmessage</a></span><span class="refpurpose"> — Helper methods for dealing with SDP messages</span>
 </dt></dl></dd>
+<dt><span class="chapter"><a href="gstreamer-mikey.html">MIKEY Library</a></span></dt>
+<dd><dl><dt>
+<span class="refentrytitle"><a href="gst-plugins-base-libs-gstmikey.html">gstmikey</a></span><span class="refpurpose"> — Helper methods for dealing with MIKEY messages</span>
+</dt></dl></dd>
 <dt><span class="chapter"><a href="gstreamer-tag.html">Tag Support Library</a></span></dt>
 <dd><dl>
 <dt>
@@ -277,6 +278,9 @@
 <span class="refentrytitle"><a href="gst-plugins-base-libs-GstVideoEncoder.html">GstVideoEncoder</a></span><span class="refpurpose"> — Base class for video encoders</span>
 </dt>
 <dt>
+<span class="refentrytitle"><a href="gst-plugins-base-libs-GstVideoPool.html">GstVideoPool</a></span><span class="refpurpose"> — GstBufferPool for raw video buffers</span>
+</dt>
+<dt>
 <span class="refentrytitle"><a href="gst-plugins-base-libs-gstvideoutils.html">gstvideoutils</a></span><span class="refpurpose"></span>
 </dt>
 </dl></dd>
diff --git a/docs/libs/html/gstreamer-tag.html b/docs/libs/html/gstreamer-tag.html
index b5ccdee..02c02e8 100644
--- a/docs/libs/html/gstreamer-tag.html
+++ b/docs/libs/html/gstreamer-tag.html
@@ -6,7 +6,7 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="index.html" title="GStreamer Base Plugins 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-plugins-base.html" title="Part I. GStreamer Base Plugins Libraries">
-<link rel="prev" href="gst-plugins-base-libs-gstsdpmessage.html" title="gstsdpmessage">
+<link rel="prev" href="gst-plugins-base-libs-gstmikey.html" title="gstmikey">
 <link rel="next" href="gst-plugins-base-libs-gsttag.html" title="gsttag">
 <meta name="generator" content="GTK-Doc V1.20 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
@@ -16,7 +16,7 @@
 <td width="100%" align="left" class="shortcuts"></td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="gstreamer-plugins-base.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="gst-plugins-base-libs-gstsdpmessage.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="gst-plugins-base-libs-gstmikey.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
 <td><a accesskey="n" href="gst-plugins-base-libs-gsttag.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="chapter">
diff --git a/docs/libs/html/gstreamer-video.html b/docs/libs/html/gstreamer-video.html
index 4d5957f..ff92b8b 100644
--- a/docs/libs/html/gstreamer-video.html
+++ b/docs/libs/html/gstreamer-video.html
@@ -61,6 +61,9 @@
 <span class="refentrytitle"><a href="gst-plugins-base-libs-GstVideoEncoder.html">GstVideoEncoder</a></span><span class="refpurpose"> — Base class for video encoders</span>
 </dt>
 <dt>
+<span class="refentrytitle"><a href="gst-plugins-base-libs-GstVideoPool.html">GstVideoPool</a></span><span class="refpurpose"> — GstBufferPool for raw video buffers</span>
+</dt>
+<dt>
 <span class="refentrytitle"><a href="gst-plugins-base-libs-gstvideoutils.html">gstvideoutils</a></span><span class="refpurpose"></span>
 </dt>
 </dl></div>
diff --git a/docs/libs/html/index.html b/docs/libs/html/index.html
index 045364b..893572c 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 Base Plugins 1.0 Library Reference Manual</p></th></tr></table></div>
 <div><p class="releaseinfo">
-      for GStreamer Base Library 1.0 (1.2.4)
+      for GStreamer Base Library 1.0 (1.3.1)
       <a class="ulink" href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/" target="_top">http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/</a>.
     </p></div>
 </div>
@@ -50,7 +50,7 @@
 <span class="refentrytitle"><a href="gst-plugins-base-libs-gstaudio.html">gstaudio</a></span><span class="refpurpose"> — Support library for audio elements</span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gst-plugins-base-libs-gstaudiometa.html">gstaudiometa</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="gst-plugins-base-libs-gstaudiometa.html">gstaudiometa</a></span><span class="refpurpose"> — Buffer metadata for audio downmix matrix handling</span>
 </dt>
 <dt>
 <span class="refentrytitle"><a href="gst-plugins-base-libs-gstaudiocdsrc.html">gstaudiocdsrc</a></span><span class="refpurpose"> — Base class for Audio CD sources</span>
@@ -68,9 +68,6 @@
 <span class="refentrytitle"><a href="gst-plugins-base-libs-gstaudiofilter.html">gstaudiofilter</a></span><span class="refpurpose"> — Base class for simple audio filters</span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gst-plugins-base-libs-gstaudiomixerutils.html">gstaudiomixerutils</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
 <span class="refentrytitle"><a href="gst-plugins-base-libs-gstaudiosink.html">gstaudiosink</a></span><span class="refpurpose"> — Simple base class for audio sinks</span>
 </dt>
 <dt>
@@ -83,7 +80,7 @@
 <span class="refentrytitle"><a href="gst-plugins-base-libs-gstaudiobasesrc.html">gstaudiobasesrc</a></span><span class="refpurpose"> — Base class for audio sources</span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gst-plugins-base-libs-gstaudiochannels.html">gstaudiochannels</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="gst-plugins-base-libs-gstaudiochannels.html">gstaudiochannels</a></span><span class="refpurpose"> — Support library for audio channel handling</span>
 </dt>
 <dt>
 <span class="refentrytitle"><a href="gst-plugins-base-libs-gstaudioringbuffer.html">gstaudioringbuffer</a></span><span class="refpurpose"> — Base class for audio ringbuffer implementations</span>
@@ -169,6 +166,10 @@
 <dd><dl><dt>
 <span class="refentrytitle"><a href="gst-plugins-base-libs-gstsdpmessage.html">gstsdpmessage</a></span><span class="refpurpose"> — Helper methods for dealing with SDP messages</span>
 </dt></dl></dd>
+<dt><span class="chapter"><a href="gstreamer-mikey.html">MIKEY Library</a></span></dt>
+<dd><dl><dt>
+<span class="refentrytitle"><a href="gst-plugins-base-libs-gstmikey.html">gstmikey</a></span><span class="refpurpose"> — Helper methods for dealing with MIKEY messages</span>
+</dt></dl></dd>
 <dt><span class="chapter"><a href="gstreamer-tag.html">Tag Support Library</a></span></dt>
 <dd><dl>
 <dt>
@@ -276,6 +277,9 @@
 <span class="refentrytitle"><a href="gst-plugins-base-libs-GstVideoEncoder.html">GstVideoEncoder</a></span><span class="refpurpose"> — Base class for video encoders</span>
 </dt>
 <dt>
+<span class="refentrytitle"><a href="gst-plugins-base-libs-GstVideoPool.html">GstVideoPool</a></span><span class="refpurpose"> — GstBufferPool for raw video buffers</span>
+</dt>
+<dt>
 <span class="refentrytitle"><a href="gst-plugins-base-libs-gstvideoutils.html">gstvideoutils</a></span><span class="refpurpose"></span>
 </dt>
 </dl></dd>
diff --git a/docs/libs/html/index.sgml b/docs/libs/html/index.sgml
index 90c5405..03d78ec 100644
--- a/docs/libs/html/index.sgml
+++ b/docs/libs/html/index.sgml
@@ -299,12 +299,6 @@
 <ANCHOR id="gst-plugins-base-libs-gstaudiofilter.other_details" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstaudiofilter.html#gst-plugins-base-libs-gstaudiofilter.other_details">
 <ANCHOR id="GstAudioFilter-struct" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstaudiofilter.html#GstAudioFilter-struct">
 <ANCHOR id="GstAudioFilterClass" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstaudiofilter.html#GstAudioFilterClass">
-<ANCHOR id="gst-plugins-base-libs-gstaudiomixerutils" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstaudiomixerutils.html">
-<ANCHOR id="gst-plugins-base-libs-gstaudiomixerutils.object-hierarchy" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstaudiomixerutils.html#gst-plugins-base-libs-gstaudiomixerutils.object-hierarchy">
-<ANCHOR id="gst-plugins-base-libs-gstaudiomixerutils.includes" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstaudiomixerutils.html#gst-plugins-base-libs-gstaudiomixerutils.includes">
-<ANCHOR id="gst-plugins-base-libs-gstaudiomixerutils.description" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstaudiomixerutils.html#gst-plugins-base-libs-gstaudiomixerutils.description">
-<ANCHOR id="gst-plugins-base-libs-gstaudiomixerutils.functions_details" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstaudiomixerutils.html#gst-plugins-base-libs-gstaudiomixerutils.functions_details">
-<ANCHOR id="gst-plugins-base-libs-gstaudiomixerutils.other_details" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstaudiomixerutils.html#gst-plugins-base-libs-gstaudiomixerutils.other_details">
 <ANCHOR id="gst-plugins-base-libs-gstaudiosink" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstaudiosink.html">
 <ANCHOR id="GstAudioSink" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstaudiosink.html#GstAudioSink">
 <ANCHOR id="gst-plugins-base-libs-gstaudiosink.other" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstaudiosink.html#gst-plugins-base-libs-gstaudiosink.other">
@@ -602,6 +596,7 @@
 <ANCHOR id="GstRTPBaseAudioPayload--buffer-list" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstrtpbaseaudiopayload.html#GstRTPBaseAudioPayload--buffer-list">
 <ANCHOR id="gst-plugins-base-libs-gstrtpbasedepayload" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstrtpbasedepayload.html">
 <ANCHOR id="gst-plugins-base-libs-gstrtpbasedepayload.functions" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstrtpbasedepayload.html#gst-plugins-base-libs-gstrtpbasedepayload.functions">
+<ANCHOR id="gst-plugins-base-libs-gstrtpbasedepayload.properties" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstrtpbasedepayload.html#gst-plugins-base-libs-gstrtpbasedepayload.properties">
 <ANCHOR id="GstRTPBaseDepayload" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstrtpbasedepayload.html#GstRTPBaseDepayload">
 <ANCHOR id="gst-plugins-base-libs-gstrtpbasedepayload.other" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstrtpbasedepayload.html#gst-plugins-base-libs-gstrtpbasedepayload.other">
 <ANCHOR id="gst-plugins-base-libs-gstrtpbasedepayload.object-hierarchy" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstrtpbasedepayload.html#gst-plugins-base-libs-gstrtpbasedepayload.object-hierarchy">
@@ -615,6 +610,8 @@
 <ANCHOR id="gst-plugins-base-libs-gstrtpbasedepayload.other_details" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstrtpbasedepayload.html#gst-plugins-base-libs-gstrtpbasedepayload.other_details">
 <ANCHOR id="GstRTPBaseDepayload-struct" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstrtpbasedepayload.html#GstRTPBaseDepayload-struct">
 <ANCHOR id="GstRTPBaseDepayloadClass" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstrtpbasedepayload.html#GstRTPBaseDepayloadClass">
+<ANCHOR id="gst-plugins-base-libs-gstrtpbasedepayload.property-details" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstrtpbasedepayload.html#gst-plugins-base-libs-gstrtpbasedepayload.property-details">
+<ANCHOR id="GstRTPBaseDepayload--stats" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstrtpbasedepayload.html#GstRTPBaseDepayload--stats">
 <ANCHOR id="gst-plugins-base-libs-gstrtpbasepayload" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstrtpbasepayload.html">
 <ANCHOR id="gst-plugins-base-libs-gstrtpbasepayload.functions" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstrtpbasepayload.html#gst-plugins-base-libs-gstrtpbasepayload.functions">
 <ANCHOR id="gst-plugins-base-libs-gstrtpbasepayload.properties" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstrtpbasepayload.html#gst-plugins-base-libs-gstrtpbasepayload.properties">
@@ -646,6 +643,7 @@
 <ANCHOR id="GstRTPBasePayload--seqnum" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstrtpbasepayload.html#GstRTPBasePayload--seqnum">
 <ANCHOR id="GstRTPBasePayload--seqnum-offset" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstrtpbasepayload.html#GstRTPBasePayload--seqnum-offset">
 <ANCHOR id="GstRTPBasePayload--ssrc" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstrtpbasepayload.html#GstRTPBasePayload--ssrc">
+<ANCHOR id="GstRTPBasePayload--stats" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstrtpbasepayload.html#GstRTPBasePayload--stats">
 <ANCHOR id="GstRTPBasePayload--timestamp" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstrtpbasepayload.html#GstRTPBasePayload--timestamp">
 <ANCHOR id="GstRTPBasePayload--timestamp-offset" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstrtpbasepayload.html#GstRTPBasePayload--timestamp-offset">
 <ANCHOR id="gst-plugins-base-libs-gstrtpbuffer" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstrtpbuffer.html">
@@ -854,6 +852,7 @@
 <ANCHOR id="gst-rtsp-watch-write-data" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstrtspconnection.html#gst-rtsp-watch-write-data">
 <ANCHOR id="gst-rtsp-watch-get-send-backlog" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstrtspconnection.html#gst-rtsp-watch-get-send-backlog">
 <ANCHOR id="gst-rtsp-watch-set-send-backlog" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstrtspconnection.html#gst-rtsp-watch-set-send-backlog">
+<ANCHOR id="gst-rtsp-watch-wait-backlog" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstrtspconnection.html#gst-rtsp-watch-wait-backlog">
 <ANCHOR id="gst-plugins-base-libs-gstrtspconnection.other_details" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstrtspconnection.html#gst-plugins-base-libs-gstrtspconnection.other_details">
 <ANCHOR id="GstRTSPConnection" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstrtspconnection.html#GstRTSPConnection">
 <ANCHOR id="GstRTSPWatch" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstrtspconnection.html#GstRTSPWatch">
@@ -1129,6 +1128,72 @@
 <ANCHOR id="GstSDPAttribute" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstsdpmessage.html#GstSDPAttribute">
 <ANCHOR id="GstSDPMedia" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstsdpmessage.html#GstSDPMedia">
 <ANCHOR id="GstSDPMessage" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstsdpmessage.html#GstSDPMessage">
+<ANCHOR id="gst-plugins-base-libs-gstmikey" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html">
+<ANCHOR id="gst-plugins-base-libs-gstmikey.functions" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#gst-plugins-base-libs-gstmikey.functions">
+<ANCHOR id="gst-plugins-base-libs-gstmikey.other" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#gst-plugins-base-libs-gstmikey.other">
+<ANCHOR id="gst-plugins-base-libs-gstmikey.object-hierarchy" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#gst-plugins-base-libs-gstmikey.object-hierarchy">
+<ANCHOR id="gst-plugins-base-libs-gstmikey.includes" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#gst-plugins-base-libs-gstmikey.includes">
+<ANCHOR id="gst-plugins-base-libs-gstmikey.description" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#gst-plugins-base-libs-gstmikey.description">
+<ANCHOR id="gst-plugins-base-libs-gstmikey.functions_details" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#gst-plugins-base-libs-gstmikey.functions_details">
+<ANCHOR id="gst-mikey-message-new" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#gst-mikey-message-new">
+<ANCHOR id="gst-mikey-message-new-from-bytes" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#gst-mikey-message-new-from-bytes">
+<ANCHOR id="gst-mikey-message-new-from-data" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#gst-mikey-message-new-from-data">
+<ANCHOR id="gst-mikey-message-free" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#gst-mikey-message-free">
+<ANCHOR id="gst-mikey-message-to-bytes" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#gst-mikey-message-to-bytes">
+<ANCHOR id="gst-mikey-message-set-info" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#gst-mikey-message-set-info">
+<ANCHOR id="gst-mikey-message-get-n-cs" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#gst-mikey-message-get-n-cs">
+<ANCHOR id="gst-mikey-message-get-cs-srtp" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#gst-mikey-message-get-cs-srtp">
+<ANCHOR id="gst-mikey-message-insert-cs-srtp" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#gst-mikey-message-insert-cs-srtp">
+<ANCHOR id="gst-mikey-message-remove-cs-srtp" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#gst-mikey-message-remove-cs-srtp">
+<ANCHOR id="gst-mikey-message-replace-cs-srtp" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#gst-mikey-message-replace-cs-srtp">
+<ANCHOR id="gst-mikey-message-add-cs-srtp" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#gst-mikey-message-add-cs-srtp">
+<ANCHOR id="gst-mikey-message-get-n-payloads" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#gst-mikey-message-get-n-payloads">
+<ANCHOR id="gst-mikey-message-get-payload" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#gst-mikey-message-get-payload">
+<ANCHOR id="gst-mikey-message-find-payload" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#gst-mikey-message-find-payload">
+<ANCHOR id="gst-mikey-message-insert-payload" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#gst-mikey-message-insert-payload">
+<ANCHOR id="gst-mikey-message-remove-payload" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#gst-mikey-message-remove-payload">
+<ANCHOR id="gst-mikey-message-replace-payload" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#gst-mikey-message-replace-payload">
+<ANCHOR id="gst-mikey-message-add-payload" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#gst-mikey-message-add-payload">
+<ANCHOR id="GstMIKEYPayloadClearFunc" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadClearFunc">
+<ANCHOR id="GstMIKEYPayloadCopyFunc" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadCopyFunc">
+<ANCHOR id="gst-mikey-payload-new" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-new">
+<ANCHOR id="gst-mikey-payload-copy" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-copy">
+<ANCHOR id="gst-mikey-payload-free" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-free">
+<ANCHOR id="gst-mikey-payload-kemac-set" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-kemac-set">
+<ANCHOR id="gst-mikey-payload-pke-set" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-pke-set">
+<ANCHOR id="gst-mikey-message-add-pke" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#gst-mikey-message-add-pke">
+<ANCHOR id="gst-mikey-payload-t-set" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-t-set">
+<ANCHOR id="gst-mikey-message-add-t" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#gst-mikey-message-add-t">
+<ANCHOR id="gst-mikey-message-add-t-now-ntp-utc" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#gst-mikey-message-add-t-now-ntp-utc">
+<ANCHOR id="gst-mikey-payload-rand-set" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-rand-set">
+<ANCHOR id="gst-mikey-message-add-rand" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#gst-mikey-message-add-rand">
+<ANCHOR id="gst-mikey-message-add-rand-len" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#gst-mikey-message-add-rand-len">
+<ANCHOR id="gst-mikey-payload-sp-set" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-sp-set">
+<ANCHOR id="gst-mikey-payload-sp-get-n-params" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-sp-get-n-params">
+<ANCHOR id="gst-mikey-payload-sp-get-param" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-sp-get-param">
+<ANCHOR id="gst-mikey-payload-sp-add-param" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-sp-add-param">
+<ANCHOR id="gst-mikey-payload-sp-remove-param" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#gst-mikey-payload-sp-remove-param">
+<ANCHOR id="gst-plugins-base-libs-gstmikey.other_details" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#gst-plugins-base-libs-gstmikey.other_details">
+<ANCHOR id="GST-MIKEY-VERSION:CAPS" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#GST-MIKEY-VERSION:CAPS">
+<ANCHOR id="GstMIKEYType" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#GstMIKEYType">
+<ANCHOR id="GstMIKEYMessage" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#GstMIKEYMessage">
+<ANCHOR id="GstMIKEYPRFFunc" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#GstMIKEYPRFFunc">
+<ANCHOR id="GstMIKEYMapType" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#GstMIKEYMapType">
+<ANCHOR id="GstMIKEYMapSRTP" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#GstMIKEYMapSRTP">
+<ANCHOR id="GstMIKEYPayloadType" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadType">
+<ANCHOR id="GstMIKEYPayload" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#GstMIKEYPayload">
+<ANCHOR id="GstMIKEYEncAlg" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#GstMIKEYEncAlg">
+<ANCHOR id="GstMIKEYMacAlg" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#GstMIKEYMacAlg">
+<ANCHOR id="GstMIKEYPayloadKEMAC" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadKEMAC">
+<ANCHOR id="GstMIKEYCacheType" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#GstMIKEYCacheType">
+<ANCHOR id="GstMIKEYPayloadPKE" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadPKE">
+<ANCHOR id="GstMIKEYTSType" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#GstMIKEYTSType">
+<ANCHOR id="GstMIKEYPayloadT" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadT">
+<ANCHOR id="GstMIKEYPayloadRAND" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadRAND">
+<ANCHOR id="GstMIKEYSecProto" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#GstMIKEYSecProto">
+<ANCHOR id="GstMIKEYSecSRTP" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#GstMIKEYSecSRTP">
+<ANCHOR id="GstMIKEYPayloadSP" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadSP">
+<ANCHOR id="GstMIKEYPayloadSPParam" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstmikey.html#GstMIKEYPayloadSPParam">
 <ANCHOR id="gst-plugins-base-libs-gsttag" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gsttag.html">
 <ANCHOR id="gst-plugins-base-libs-gsttag.functions" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gsttag.html#gst-plugins-base-libs-gsttag.functions">
 <ANCHOR id="gst-plugins-base-libs-gsttag.other" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gsttag.html#gst-plugins-base-libs-gsttag.other">
@@ -1332,6 +1397,11 @@
 <ANCHOR id="gst-codec-utils-h264-get-level" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-h264-get-level">
 <ANCHOR id="gst-codec-utils-h264-caps-set-level-and-profile" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-h264-caps-set-level-and-profile">
 <ANCHOR id="gst-codec-utils-h264-get-level-idc" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-h264-get-level-idc">
+<ANCHOR id="gst-codec-utils-h265-get-profile" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-h265-get-profile">
+<ANCHOR id="gst-codec-utils-h265-get-tier" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-h265-get-tier">
+<ANCHOR id="gst-codec-utils-h265-get-level" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-h265-get-level">
+<ANCHOR id="gst-codec-utils-h265-get-level-idc" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-h265-get-level-idc">
+<ANCHOR id="gst-codec-utils-h265-caps-set-level-tier-and-profile" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-h265-caps-set-level-tier-and-profile">
 <ANCHOR id="gst-codec-utils-mpeg4video-get-profile" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-mpeg4video-get-profile">
 <ANCHOR id="gst-codec-utils-mpeg4video-get-level" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-mpeg4video-get-level">
 <ANCHOR id="gst-codec-utils-mpeg4video-caps-set-level-and-profile" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstpbutilscodecutils.html#gst-codec-utils-mpeg4video-caps-set-level-and-profile">
@@ -1469,6 +1539,7 @@
 <ANCHOR id="GstDiscoverer-starting" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstdiscoverer.html#GstDiscoverer-starting">
 <ANCHOR id="gst-plugins-base-libs-encoding-profile" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-encoding-profile.html">
 <ANCHOR id="gst-plugins-base-libs-encoding-profile.functions" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-encoding-profile.html#gst-plugins-base-libs-encoding-profile.functions">
+<ANCHOR id="gst-plugins-base-libs-encoding-profile.properties" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-encoding-profile.html#gst-plugins-base-libs-encoding-profile.properties">
 <ANCHOR id="GstEncodingProfile" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-encoding-profile.html#GstEncodingProfile">
 <ANCHOR id="GstEncodingContainerProfile" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-encoding-profile.html#GstEncodingContainerProfile">
 <ANCHOR id="GstEncodingAudioProfile" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-encoding-profile.html#GstEncodingAudioProfile">
@@ -1536,6 +1607,8 @@
 <ANCHOR id="GST-ENCODING-CATEGORY-STORAGE-EDITING:CAPS" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-encoding-profile.html#GST-ENCODING-CATEGORY-STORAGE-EDITING:CAPS">
 <ANCHOR id="GST-ENCODING-CATEGORY-CAPTURE:CAPS" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-encoding-profile.html#GST-ENCODING-CATEGORY-CAPTURE:CAPS">
 <ANCHOR id="GstEncodingTarget-struct" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-encoding-profile.html#GstEncodingTarget-struct">
+<ANCHOR id="gst-plugins-base-libs-encoding-profile.property-details" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-encoding-profile.html#gst-plugins-base-libs-encoding-profile.property-details">
+<ANCHOR id="GstEncodingProfile--restriction-caps" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-encoding-profile.html#GstEncodingProfile--restriction-caps">
 <ANCHOR id="gst-plugins-base-libs-gstvideo" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstvideo.html">
 <ANCHOR id="gst-plugins-base-libs-gstvideo.functions" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstvideo.html#gst-plugins-base-libs-gstvideo.functions">
 <ANCHOR id="gst-plugins-base-libs-gstvideo.other" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstvideo.html#gst-plugins-base-libs-gstvideo.other">
@@ -1585,6 +1658,9 @@
 <ANCHOR id="GST-VIDEO-FORMAT-INFO-DATA:CAPS" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstvideo.html#GST-VIDEO-FORMAT-INFO-DATA:CAPS">
 <ANCHOR id="GST-VIDEO-FORMAT-INFO-STRIDE:CAPS" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstvideo.html#GST-VIDEO-FORMAT-INFO-STRIDE:CAPS">
 <ANCHOR id="GST-VIDEO-FORMAT-INFO-OFFSET:CAPS" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstvideo.html#GST-VIDEO-FORMAT-INFO-OFFSET:CAPS">
+<ANCHOR id="GST-VIDEO-FORMAT-INFO-TILE-MODE:CAPS" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstvideo.html#GST-VIDEO-FORMAT-INFO-TILE-MODE:CAPS">
+<ANCHOR id="GST-VIDEO-FORMAT-INFO-TILE-WS:CAPS" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstvideo.html#GST-VIDEO-FORMAT-INFO-TILE-WS:CAPS">
+<ANCHOR id="GST-VIDEO-FORMAT-INFO-TILE-HS:CAPS" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstvideo.html#GST-VIDEO-FORMAT-INFO-TILE-HS:CAPS">
 <ANCHOR id="gst-video-format-from-masks" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstvideo.html#gst-video-format-from-masks">
 <ANCHOR id="gst-video-format-from-fourcc" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstvideo.html#gst-video-format-from-fourcc">
 <ANCHOR id="gst-video-format-to-fourcc" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstvideo.html#gst-video-format-to-fourcc">
@@ -1665,6 +1741,13 @@
 <ANCHOR id="GST-VIDEO-FRAME-COMP-PLANE:CAPS" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstvideo.html#GST-VIDEO-FRAME-COMP-PLANE:CAPS">
 <ANCHOR id="GST-VIDEO-FRAME-COMP-PSTRIDE:CAPS" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstvideo.html#GST-VIDEO-FRAME-COMP-PSTRIDE:CAPS">
 <ANCHOR id="GST-VIDEO-FRAME-COMP-POFFSET:CAPS" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstvideo.html#GST-VIDEO-FRAME-COMP-POFFSET:CAPS">
+<ANCHOR id="gst-video-tile-get-index" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstvideo.html#gst-video-tile-get-index">
+<ANCHOR id="GST-VIDEO-TILE-MAKE-MODE:CAPS" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstvideo.html#GST-VIDEO-TILE-MAKE-MODE:CAPS">
+<ANCHOR id="GST-VIDEO-TILE-MODE-TYPE:CAPS" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstvideo.html#GST-VIDEO-TILE-MODE-TYPE:CAPS">
+<ANCHOR id="GST-VIDEO-TILE-MODE-IS-INDEXED:CAPS" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstvideo.html#GST-VIDEO-TILE-MODE-IS-INDEXED:CAPS">
+<ANCHOR id="GST-VIDEO-TILE-MAKE-STRIDE:CAPS" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstvideo.html#GST-VIDEO-TILE-MAKE-STRIDE:CAPS">
+<ANCHOR id="GST-VIDEO-TILE-X-TILES:CAPS" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstvideo.html#GST-VIDEO-TILE-X-TILES:CAPS">
+<ANCHOR id="GST-VIDEO-TILE-Y-TILES:CAPS" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstvideo.html#GST-VIDEO-TILE-Y-TILES:CAPS">
 <ANCHOR id="gst-plugins-base-libs-gstvideo.other_details" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstvideo.html#gst-plugins-base-libs-gstvideo.other_details">
 <ANCHOR id="GstVideoAlignment" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstvideo.html#GstVideoAlignment">
 <ANCHOR id="GST-META-TAG-VIDEO-STR:CAPS" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstvideo.html#GST-META-TAG-VIDEO-STR:CAPS">
@@ -1692,6 +1775,8 @@
 <ANCHOR id="GstVideoFrame" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstvideo.html#GstVideoFrame">
 <ANCHOR id="GstVideoFrameFlags" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstvideo.html#GstVideoFrameFlags">
 <ANCHOR id="GstVideoBufferFlags" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstvideo.html#GstVideoBufferFlags">
+<ANCHOR id="GstVideoTileType" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstvideo.html#GstVideoTileType">
+<ANCHOR id="GstVideoTileMode" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstvideo.html#GstVideoTileMode">
 <ANCHOR id="gst-plugins-base-libs-gstvideometa" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstvideometa.html">
 <ANCHOR id="gst-plugins-base-libs-gstvideometa.functions" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstvideometa.html#gst-plugins-base-libs-gstvideometa.functions">
 <ANCHOR id="gst-plugins-base-libs-gstvideometa.other" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstvideometa.html#gst-plugins-base-libs-gstvideometa.other">
@@ -1721,6 +1806,7 @@
 <ANCHOR id="GstVideoMetaTransform" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstvideometa.html#GstVideoMetaTransform">
 <ANCHOR id="GstVideoCropMeta" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstvideometa.html#GstVideoCropMeta">
 <ANCHOR id="GstVideoRegionOfInterestMeta" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstvideometa.html#GstVideoRegionOfInterestMeta">
+<ANCHOR id="GST-BUFFER-POOL-OPTION-VIDEO-GL-TEXTURE-UPLOAD-META:CAPS" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstvideometa.html#GST-BUFFER-POOL-OPTION-VIDEO-GL-TEXTURE-UPLOAD-META:CAPS">
 <ANCHOR id="GstVideoGLTextureUploadMeta" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstvideometa.html#GstVideoGLTextureUploadMeta">
 <ANCHOR id="gst-plugins-base-libs-gstvideooverlaycomposition" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstvideooverlaycomposition.html">
 <ANCHOR id="gst-plugins-base-libs-gstvideooverlaycomposition.functions" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstvideooverlaycomposition.html#gst-plugins-base-libs-gstvideooverlaycomposition.functions">
@@ -1892,6 +1978,7 @@
 <ANCHOR id="gst-video-decoder-get-max-errors" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstVideoDecoder.html#gst-video-decoder-get-max-errors">
 <ANCHOR id="gst-video-decoder-get-oldest-frame" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstVideoDecoder.html#gst-video-decoder-get-oldest-frame">
 <ANCHOR id="gst-video-decoder-get-packetized" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstVideoDecoder.html#gst-video-decoder-get-packetized">
+<ANCHOR id="gst-video-decoder-get-pending-frame-size" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstVideoDecoder.html#gst-video-decoder-get-pending-frame-size">
 <ANCHOR id="gst-video-decoder-get-qos-proportion" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstVideoDecoder.html#gst-video-decoder-get-qos-proportion">
 <ANCHOR id="gst-video-decoder-have-frame" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstVideoDecoder.html#gst-video-decoder-have-frame">
 <ANCHOR id="gst-video-decoder-get-latency" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstVideoDecoder.html#gst-video-decoder-get-latency">
@@ -1902,6 +1989,8 @@
 <ANCHOR id="gst-video-decoder-set-output-state" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstVideoDecoder.html#gst-video-decoder-set-output-state">
 <ANCHOR id="gst-video-decoder-set-max-errors" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstVideoDecoder.html#gst-video-decoder-set-max-errors">
 <ANCHOR id="gst-video-decoder-set-packetized" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstVideoDecoder.html#gst-video-decoder-set-packetized">
+<ANCHOR id="gst-video-decoder-get-needs-format" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstVideoDecoder.html#gst-video-decoder-get-needs-format">
+<ANCHOR id="gst-video-decoder-set-needs-format" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstVideoDecoder.html#gst-video-decoder-set-needs-format">
 <ANCHOR id="gst-video-decoder-merge-tags" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstVideoDecoder.html#gst-video-decoder-merge-tags">
 <ANCHOR id="gst-plugins-base-libs-GstVideoDecoder.other_details" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstVideoDecoder.html#gst-plugins-base-libs-GstVideoDecoder.other_details">
 <ANCHOR id="GST-VIDEO-DECODER-FLOW-NEED-DATA:CAPS" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstVideoDecoder.html#GST-VIDEO-DECODER-FLOW-NEED-DATA:CAPS">
@@ -1934,8 +2023,6 @@
 <ANCHOR id="gst-video-encoder-set-headers" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstVideoEncoder.html#gst-video-encoder-set-headers">
 <ANCHOR id="gst-video-encoder-get-latency" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstVideoEncoder.html#gst-video-encoder-get-latency">
 <ANCHOR id="gst-video-encoder-set-latency" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstVideoEncoder.html#gst-video-encoder-set-latency">
-<ANCHOR id="gst-video-encoder-get-discont" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstVideoEncoder.html#gst-video-encoder-get-discont">
-<ANCHOR id="gst-video-encoder-set-discont" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstVideoEncoder.html#gst-video-encoder-set-discont">
 <ANCHOR id="gst-video-encoder-set-output-state" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstVideoEncoder.html#gst-video-encoder-set-output-state">
 <ANCHOR id="gst-video-encoder-get-output-state" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstVideoEncoder.html#gst-video-encoder-get-output-state">
 <ANCHOR id="gst-video-encoder-proxy-getcaps" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstVideoEncoder.html#gst-video-encoder-proxy-getcaps">
@@ -1947,6 +2034,22 @@
 <ANCHOR id="GST-VIDEO-ENCODER-SRC-NAME:CAPS" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstVideoEncoder.html#GST-VIDEO-ENCODER-SRC-NAME:CAPS">
 <ANCHOR id="GstVideoEncoder" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstVideoEncoder.html#GstVideoEncoder">
 <ANCHOR id="GstVideoEncoderClass" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstVideoEncoder.html#GstVideoEncoderClass">
+<ANCHOR id="gst-plugins-base-libs-GstVideoPool" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstVideoPool.html">
+<ANCHOR id="gst-plugins-base-libs-GstVideoPool.functions" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstVideoPool.html#gst-plugins-base-libs-GstVideoPool.functions">
+<ANCHOR id="gst-plugins-base-libs-GstVideoPool.other" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstVideoPool.html#gst-plugins-base-libs-GstVideoPool.other">
+<ANCHOR id="gst-plugins-base-libs-GstVideoPool.object-hierarchy" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstVideoPool.html#gst-plugins-base-libs-GstVideoPool.object-hierarchy">
+<ANCHOR id="gst-plugins-base-libs-GstVideoPool.includes" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstVideoPool.html#gst-plugins-base-libs-GstVideoPool.includes">
+<ANCHOR id="gst-plugins-base-libs-GstVideoPool.description" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstVideoPool.html#gst-plugins-base-libs-GstVideoPool.description">
+<ANCHOR id="gst-plugins-base-libs-GstVideoPool.functions_details" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstVideoPool.html#gst-plugins-base-libs-GstVideoPool.functions_details">
+<ANCHOR id="gst-video-buffer-pool-new" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstVideoPool.html#gst-video-buffer-pool-new">
+<ANCHOR id="gst-buffer-pool-config-get-video-alignment" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstVideoPool.html#gst-buffer-pool-config-get-video-alignment">
+<ANCHOR id="gst-buffer-pool-config-set-video-alignment" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstVideoPool.html#gst-buffer-pool-config-set-video-alignment">
+<ANCHOR id="gst-plugins-base-libs-GstVideoPool.other_details" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstVideoPool.html#gst-plugins-base-libs-GstVideoPool.other_details">
+<ANCHOR id="GstVideoBufferPool" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstVideoPool.html#GstVideoBufferPool">
+<ANCHOR id="GstVideoBufferPoolClass" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstVideoPool.html#GstVideoBufferPoolClass">
+<ANCHOR id="GST-BUFFER-POOL-OPTION-VIDEO-ALIGNMENT:CAPS" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstVideoPool.html#GST-BUFFER-POOL-OPTION-VIDEO-ALIGNMENT:CAPS">
+<ANCHOR id="GST-BUFFER-POOL-OPTION-VIDEO-META:CAPS" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstVideoPool.html#GST-BUFFER-POOL-OPTION-VIDEO-META:CAPS">
+<ANCHOR id="gst-plugins-base-libs-GstVideoPool.see-also" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstVideoPool.html#gst-plugins-base-libs-GstVideoPool.see-also">
 <ANCHOR id="gst-plugins-base-libs-gstvideoutils" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstvideoutils.html">
 <ANCHOR id="gst-plugins-base-libs-gstvideoutils.functions" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstvideoutils.html#gst-plugins-base-libs-gstvideoutils.functions">
 <ANCHOR id="gst-plugins-base-libs-gstvideoutils.other" href="gst-plugins-base-libs-1.0/gst-plugins-base-libs-gstvideoutils.html#gst-plugins-base-libs-gstvideoutils.other">
diff --git a/docs/plugins/Makefile.in b/docs/plugins/Makefile.in
index 32a0053..c582edc 100644
--- a/docs/plugins/Makefile.in
+++ b/docs/plugins/Makefile.in
@@ -104,7 +104,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -357,9 +356,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/docs/plugins/gst-plugins-base-plugins.args b/docs/plugins/gst-plugins-base-plugins.args
index f2f65e8..af2ff6a 100644
--- a/docs/plugins/gst-plugins-base-plugins.args
+++ b/docs/plugins/gst-plugins-base-plugins.args
@@ -1,311 +1,1241 @@
 <ARG>
-<NAME>GstXvImageSink::brightness</NAME>
-<TYPE>gint</TYPE>
-<RANGE>[-1000,1000]</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Brightness</NICK>
-<BLURB>The brightness of the video.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstXvImageSink::contrast</NAME>
-<TYPE>gint</TYPE>
-<RANGE>[-1000,1000]</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Contrast</NICK>
-<BLURB>The contrast of the video.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstXvImageSink::display</NAME>
-<TYPE>gchar*</TYPE>
+<NAME>GstAdder::caps</NAME>
+<TYPE>GstCaps*</TYPE>
 <RANGE></RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>Display</NICK>
-<BLURB>X Display name.</BLURB>
-<DEFAULT>NULL</DEFAULT>
+<NICK>Target caps</NICK>
+<BLURB>Set target format for mixing (NULL means ANY). Setting this property takes a reference to the supplied GstCaps object.</BLURB>
+<DEFAULT></DEFAULT>
 </ARG>
 
 <ARG>
-<NAME>GstXvImageSink::hue</NAME>
-<TYPE>gint</TYPE>
-<RANGE>[-1000,1000]</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Hue</NICK>
-<BLURB>The hue of the video.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstXvImageSink::pixel-aspect-ratio</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Pixel Aspect Ratio</NICK>
-<BLURB>The pixel aspect ratio of the device.</BLURB>
-<DEFAULT>"1/1"</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstXvImageSink::saturation</NAME>
-<TYPE>gint</TYPE>
-<RANGE>[-1000,1000]</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Saturation</NICK>
-<BLURB>The saturation of the video.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstXvImageSink::synchronous</NAME>
+<NAME>GstVideoScale::add-borders</NAME>
 <TYPE>gboolean</TYPE>
 <RANGE></RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>Synchronous</NICK>
-<BLURB>When enabled, runs the X display in synchronous mode. (unrelated to A/V sync, used only for debugging).</BLURB>
+<NICK>Add Borders</NICK>
+<BLURB>Add black borders if necessary to keep the display aspect ratio.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstVideoScale::dither</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Dither</NICK>
+<BLURB>Add dither (only used for Lanczos method).</BLURB>
 <DEFAULT>FALSE</DEFAULT>
 </ARG>
 
 <ARG>
-<NAME>GstXvImageSink::force-aspect-ratio</NAME>
+<NAME>GstVideoScale::envelope</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[1,5]</RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Envelope</NICK>
+<BLURB>Size of filter envelope.</BLURB>
+<DEFAULT>2</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstVideoScale::method</NAME>
+<TYPE>GstVideoScaleMethod</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>method</NICK>
+<BLURB>method.</BLURB>
+<DEFAULT>Bilinear</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstVideoScale::sharpen</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Sharpen</NICK>
+<BLURB>Sharpening.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstVideoScale::sharpness</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0.5,1.5]</RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Sharpness</NICK>
+<BLURB>Sharpness of filter.</BLURB>
+<DEFAULT>1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstURIDecodeBin::buffer-duration</NAME>
+<TYPE>gint64</TYPE>
+<RANGE>>= G_MAXULONG</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Buffer duration (ns)</NICK>
+<BLURB>Buffer duration when buffering streams (-1 default value).</BLURB>
+<DEFAULT>-1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstURIDecodeBin::buffer-size</NAME>
+<TYPE>gint</TYPE>
+<RANGE>>= G_MAXULONG</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Buffer size (bytes)</NICK>
+<BLURB>Buffer size when buffering streams (-1 default value).</BLURB>
+<DEFAULT>-1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstURIDecodeBin::caps</NAME>
+<TYPE>GstCaps*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Caps</NICK>
+<BLURB>The caps on which to stop decoding. (NULL = default).</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstURIDecodeBin::connection-speed</NAME>
+<TYPE>guint64</TYPE>
+<RANGE><= 18446744073709551</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Connection Speed</NICK>
+<BLURB>Network connection speed in kbps (0 = unknown).</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstURIDecodeBin::download</NAME>
 <TYPE>gboolean</TYPE>
 <RANGE></RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>Force aspect ratio</NICK>
+<NICK>Download</NICK>
+<BLURB>Attempt download buffering when buffering network streams.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstURIDecodeBin::expose-all-streams</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Expose All Streams</NICK>
+<BLURB>Expose all streams, including those of unknown type or that don't match the 'caps' property.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstURIDecodeBin::ring-buffer-max-size</NAME>
+<TYPE>guint64</TYPE>
+<RANGE><= G_MAXUINT</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Max. ring buffer size (bytes)</NICK>
+<BLURB>Max. amount of data in the ring buffer (bytes, 0 = ring buffer disabled).</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstURIDecodeBin::source</NAME>
+<TYPE>GstElement*</TYPE>
+<RANGE></RANGE>
+<FLAGS>r</FLAGS>
+<NICK>Source</NICK>
+<BLURB>Source object used.</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstURIDecodeBin::subtitle-encoding</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>subtitle encoding</NICK>
+<BLURB>Encoding to assume if input subtitles are not in UTF-8 encoding. If not set, the GST_SUBTITLE_ENCODING environment variable will be checked for an encoding to use. If that is not set either, ISO-8859-15 will be assumed.</BLURB>
+<DEFAULT>NULL</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstURIDecodeBin::uri</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>URI</NICK>
+<BLURB>URI to decode.</BLURB>
+<DEFAULT>NULL</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstURIDecodeBin::use-buffering</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Use Buffering</NICK>
+<BLURB>Perform buffering on demuxed/parsed media.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstSubtitleOverlay::font-desc</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Subtitle font description</NICK>
+<BLURB>Pango font description of font to be used for subtitle rendering.</BLURB>
+<DEFAULT>NULL</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstSubtitleOverlay::silent</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Silent</NICK>
+<BLURB>Whether to show subtitles.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstSubtitleOverlay::subtitle-encoding</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>subtitle encoding</NICK>
+<BLURB>Encoding to assume if input subtitles are not in UTF-8 encoding. If not set, the GST_SUBTITLE_ENCODING environment variable will be checked for an encoding to use. If that is not set either, ISO-8859-15 will be assumed.</BLURB>
+<DEFAULT>NULL</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstPlaySink::audio-sink</NAME>
+<TYPE>GstElement*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Audio Sink</NICK>
+<BLURB>the audio output element to use (NULL = default sink).</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstPlaySink::av-offset</NAME>
+<TYPE>gint64</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>AV Offset</NICK>
+<BLURB>The synchronisation offset between audio and video in nanoseconds.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstPlaySink::flags</NAME>
+<TYPE>GstPlayFlags</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Flags</NICK>
+<BLURB>Flags to control behaviour.</BLURB>
+<DEFAULT>Render the video stream|Render the audio stream|Render subtitles|Use software volume|Use software color balance</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstPlaySink::force-aspect-ratio</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Force Aspect Ratio</NICK>
 <BLURB>When enabled, scaling will respect original aspect ratio.</BLURB>
 <DEFAULT>TRUE</DEFAULT>
 </ARG>
 
 <ARG>
-<NAME>GstXvImageSink::device</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Adaptor number</NICK>
-<BLURB>The number of the video adaptor.</BLURB>
-<DEFAULT>"0"</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstXvImageSink::device-name</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>Adaptor name</NICK>
-<BLURB>The name of the video adaptor.</BLURB>
-<DEFAULT>NULL</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstXvImageSink::handle-events</NAME>
+<NAME>GstPlaySink::mute</NAME>
 <TYPE>gboolean</TYPE>
 <RANGE></RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>Handle XEvents</NICK>
-<BLURB>When enabled, XEvents will be selected and handled.</BLURB>
-<DEFAULT>TRUE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstXvImageSink::double-buffer</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Double-buffer</NICK>
-<BLURB>Whether to double-buffer the output.</BLURB>
-<DEFAULT>TRUE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstXvImageSink::handle-expose</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Handle expose</NICK>
-<BLURB>When enabled, the current frame will always be drawn in response to X Expose events.</BLURB>
-<DEFAULT>TRUE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstXvImageSink::autopaint-colorkey</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Autofill with colorkey</NICK>
-<BLURB>Whether to autofill overlay with colorkey.</BLURB>
-<DEFAULT>TRUE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstXvImageSink::colorkey</NAME>
-<TYPE>gint</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Colorkey</NICK>
-<BLURB>Color to use for the overlay mask.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstXvImageSink::draw-borders</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Colorkey</NICK>
-<BLURB>Draw black borders to fill unused area in force-aspect-ratio mode.</BLURB>
-<DEFAULT>TRUE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstXvImageSink::window-height</NAME>
-<TYPE>guint64</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>window-height</NICK>
-<BLURB>Height of the window.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstXvImageSink::window-width</NAME>
-<TYPE>guint64</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>window-width</NICK>
-<BLURB>Width of the window.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstXImageSink::display</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Display</NICK>
-<BLURB>X Display name.</BLURB>
-<DEFAULT>NULL</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstXImageSink::pixel-aspect-ratio</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Pixel Aspect Ratio</NICK>
-<BLURB>The pixel aspect ratio of the device.</BLURB>
-<DEFAULT>"1/1"</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstXImageSink::synchronous</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Synchronous</NICK>
-<BLURB>When enabled, runs the X display in synchronous mode. (unrelated to A/V sync, used only for debugging).</BLURB>
+<NICK>Mute</NICK>
+<BLURB>Mute the audio channel without changing the volume.</BLURB>
 <DEFAULT>FALSE</DEFAULT>
 </ARG>
 
 <ARG>
-<NAME>GstXImageSink::force-aspect-ratio</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Force aspect ratio</NICK>
-<BLURB>When enabled, reverse caps negotiation (scaling) will respect original aspect ratio.</BLURB>
-<DEFAULT>TRUE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstXImageSink::handle-events</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Handle XEvents</NICK>
-<BLURB>When enabled, XEvents will be selected and handled.</BLURB>
-<DEFAULT>TRUE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstXImageSink::handle-expose</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Handle expose</NICK>
-<BLURB>When enabled, the current frame will always be drawn in response to X Expose events.</BLURB>
-<DEFAULT>TRUE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstXImageSink::window-height</NAME>
-<TYPE>guint64</TYPE>
+<NAME>GstPlaySink::sample</NAME>
+<TYPE>GstSample*</TYPE>
 <RANGE></RANGE>
 <FLAGS>r</FLAGS>
-<NICK>window-height</NICK>
-<BLURB>Height of the window.</BLURB>
+<NICK>Sample</NICK>
+<BLURB>The last sample (NULL = no video available).</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstPlaySink::send-event-mode</NAME>
+<TYPE>GstPlaySinkSendEventMode</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Send event mode</NICK>
+<BLURB>How to send events received in send_event function.</BLURB>
+<DEFAULT>Default GstBin's send_event handling (default)</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstPlaySink::subtitle-encoding</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>subtitle encoding</NICK>
+<BLURB>Encoding to assume if input subtitles are not in UTF-8 encoding. If not set, the GST_SUBTITLE_ENCODING environment variable will be checked for an encoding to use. If that is not set either, ISO-8859-15 will be assumed.</BLURB>
+<DEFAULT>NULL</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstPlaySink::subtitle-font-desc</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>w</FLAGS>
+<NICK>Subtitle font description</NICK>
+<BLURB>Pango font description of font to be used for subtitle rendering.</BLURB>
+<DEFAULT>NULL</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstPlaySink::text-sink</NAME>
+<TYPE>GstElement*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Text sink</NICK>
+<BLURB>the text output element to use (NULL = default subtitleoverlay).</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstPlaySink::video-sink</NAME>
+<TYPE>GstElement*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Video Sink</NICK>
+<BLURB>the video output element to use (NULL = default sink).</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstPlaySink::vis-plugin</NAME>
+<TYPE>GstElement*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Vis plugin</NICK>
+<BLURB>the visualization element to use (NULL = default).</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstPlaySink::volume</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,10]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Volume</NICK>
+<BLURB>The audio volume, 1.0=100%.</BLURB>
+<DEFAULT>1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstPlaySink::audio-filter</NAME>
+<TYPE>GstElement*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Audio filter</NICK>
+<BLURB>the audio filter(s) to apply, if possible.</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstPlaySink::video-filter</NAME>
+<TYPE>GstElement*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Video filter</NICK>
+<BLURB>the video filter(s) to apply, if possible.</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstPlayBin::audio-sink</NAME>
+<TYPE>GstElement*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Audio Sink</NICK>
+<BLURB>the audio output element to use (NULL = default sink).</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstPlayBin::audio-stream-combiner</NAME>
+<TYPE>GstElement*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Audio stream combiner</NICK>
+<BLURB>Current audio stream combiner (NULL = input-selector).</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstPlayBin::av-offset</NAME>
+<TYPE>gint64</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>AV Offset</NICK>
+<BLURB>The synchronisation offset between audio and video in nanoseconds.</BLURB>
 <DEFAULT>0</DEFAULT>
 </ARG>
 
 <ARG>
-<NAME>GstXImageSink::window-width</NAME>
+<NAME>GstPlayBin::buffer-duration</NAME>
+<TYPE>gint64</TYPE>
+<RANGE>>= G_MAXULONG</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Buffer duration (ns)</NICK>
+<BLURB>Buffer duration when buffering network streams.</BLURB>
+<DEFAULT>-1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstPlayBin::buffer-size</NAME>
+<TYPE>gint</TYPE>
+<RANGE>>= G_MAXULONG</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Buffer size (bytes)</NICK>
+<BLURB>Buffer size when buffering network streams.</BLURB>
+<DEFAULT>-1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstPlayBin::connection-speed</NAME>
 <TYPE>guint64</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>window-width</NICK>
-<BLURB>Width of the window.</BLURB>
+<RANGE><= 18446744073709551</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Connection Speed</NICK>
+<BLURB>Network connection speed in kbps (0 = unknown).</BLURB>
 <DEFAULT>0</DEFAULT>
 </ARG>
 
 <ARG>
-<NAME>GstV4lSrc::autoprobe</NAME>
+<NAME>GstPlayBin::current-audio</NAME>
+<TYPE>gint</TYPE>
+<RANGE>>= G_MAXULONG</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Current audio</NICK>
+<BLURB>Currently playing audio stream (-1 = auto).</BLURB>
+<DEFAULT>-1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstPlayBin::current-suburi</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>r</FLAGS>
+<NICK>Current .sub-URI</NICK>
+<BLURB>The currently playing URI of a subtitle.</BLURB>
+<DEFAULT>NULL</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstPlayBin::current-text</NAME>
+<TYPE>gint</TYPE>
+<RANGE>>= G_MAXULONG</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Current Text</NICK>
+<BLURB>Currently playing text stream (-1 = auto).</BLURB>
+<DEFAULT>-1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstPlayBin::current-uri</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>r</FLAGS>
+<NICK>Current URI</NICK>
+<BLURB>The currently playing URI.</BLURB>
+<DEFAULT>NULL</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstPlayBin::current-video</NAME>
+<TYPE>gint</TYPE>
+<RANGE>>= G_MAXULONG</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Current Video</NICK>
+<BLURB>Currently playing video stream (-1 = auto).</BLURB>
+<DEFAULT>-1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstPlayBin::flags</NAME>
+<TYPE>GstPlayFlags</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Flags</NICK>
+<BLURB>Flags to control behaviour.</BLURB>
+<DEFAULT>Render the video stream|Render the audio stream|Render subtitles|Use software volume|Deinterlace video if necessary|Use software color balance</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstPlayBin::force-aspect-ratio</NAME>
 <TYPE>gboolean</TYPE>
 <RANGE></RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>Autoprobe</NICK>
-<BLURB>Whether the device should be probed for all possible features.</BLURB>
+<NICK>Force Aspect Ratio</NICK>
+<BLURB>When enabled, scaling will respect original aspect ratio.</BLURB>
 <DEFAULT>TRUE</DEFAULT>
 </ARG>
 
 <ARG>
-<NAME>GstV4lSrc::autoprobe-fps</NAME>
+<NAME>GstPlayBin::mute</NAME>
 <TYPE>gboolean</TYPE>
 <RANGE></RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>Autoprobe FPS</NICK>
-<BLURB>Whether the device should be probed for framerates.</BLURB>
+<NICK>Mute</NICK>
+<BLURB>Mute the audio channel without changing the volume.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstPlayBin::n-audio</NAME>
+<TYPE>gint</TYPE>
+<RANGE>>= 0</RANGE>
+<FLAGS>r</FLAGS>
+<NICK>Number Audio</NICK>
+<BLURB>Total number of audio streams.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstPlayBin::n-text</NAME>
+<TYPE>gint</TYPE>
+<RANGE>>= 0</RANGE>
+<FLAGS>r</FLAGS>
+<NICK>Number Text</NICK>
+<BLURB>Total number of text streams.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstPlayBin::n-video</NAME>
+<TYPE>gint</TYPE>
+<RANGE>>= 0</RANGE>
+<FLAGS>r</FLAGS>
+<NICK>Number Video</NICK>
+<BLURB>Total number of video streams.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstPlayBin::ring-buffer-max-size</NAME>
+<TYPE>guint64</TYPE>
+<RANGE><= G_MAXUINT</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Max. ring buffer size (bytes)</NICK>
+<BLURB>Max. amount of data in the ring buffer (bytes, 0 = ring buffer disabled).</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstPlayBin::sample</NAME>
+<TYPE>GstSample*</TYPE>
+<RANGE></RANGE>
+<FLAGS>r</FLAGS>
+<NICK>Sample</NICK>
+<BLURB>The last sample (NULL = no video available).</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstPlayBin::source</NAME>
+<TYPE>GstElement*</TYPE>
+<RANGE></RANGE>
+<FLAGS>r</FLAGS>
+<NICK>Source</NICK>
+<BLURB>Source element.</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstPlayBin::subtitle-encoding</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>subtitle encoding</NICK>
+<BLURB>Encoding to assume if input subtitles are not in UTF-8 encoding. If not set, the GST_SUBTITLE_ENCODING environment variable will be checked for an encoding to use. If that is not set either, ISO-8859-15 will be assumed.</BLURB>
+<DEFAULT>NULL</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstPlayBin::subtitle-font-desc</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>w</FLAGS>
+<NICK>Subtitle font description</NICK>
+<BLURB>Pango font description of font to be used for subtitle rendering.</BLURB>
+<DEFAULT>NULL</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstPlayBin::suburi</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>.sub-URI</NICK>
+<BLURB>Optional URI of a subtitle.</BLURB>
+<DEFAULT>NULL</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstPlayBin::text-sink</NAME>
+<TYPE>GstElement*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Text plugin</NICK>
+<BLURB>the text output element to use (NULL = default subtitleoverlay).</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstPlayBin::text-stream-combiner</NAME>
+<TYPE>GstElement*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Text stream combiner</NICK>
+<BLURB>Current text stream combiner (NULL = input-selector).</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstPlayBin::uri</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>URI</NICK>
+<BLURB>URI of the media to play.</BLURB>
+<DEFAULT>NULL</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstPlayBin::video-sink</NAME>
+<TYPE>GstElement*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Video Sink</NICK>
+<BLURB>the video output element to use (NULL = default sink).</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstPlayBin::video-stream-combiner</NAME>
+<TYPE>GstElement*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Video stream combiner</NICK>
+<BLURB>Current video stream combiner (NULL = input-selector).</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstPlayBin::vis-plugin</NAME>
+<TYPE>GstElement*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Vis plugin</NICK>
+<BLURB>the visualization element to use (NULL = default).</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstPlayBin::volume</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,10]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Volume</NICK>
+<BLURB>The audio volume, 1.0=100%.</BLURB>
+<DEFAULT>1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstPlayBin::audio-filter</NAME>
+<TYPE>GstElement*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Audio filter</NICK>
+<BLURB>the audio filter(s) to apply, if possible.</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstPlayBin::video-filter</NAME>
+<TYPE>GstElement*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Video filter</NICK>
+<BLURB>the video filter(s) to apply, if possible.</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstDecodeBin::caps</NAME>
+<TYPE>GstCaps*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Caps</NICK>
+<BLURB>The caps on which to stop decoding.</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstDecodeBin::connection-speed</NAME>
+<TYPE>guint64</TYPE>
+<RANGE><= 18446744073709551</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Connection Speed</NICK>
+<BLURB>Network connection speed in kbps (0 = unknown).</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstDecodeBin::expose-all-streams</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Expose All Streams</NICK>
+<BLURB>Expose all streams, including those of unknown type or that don't match the 'caps' property.</BLURB>
 <DEFAULT>TRUE</DEFAULT>
 </ARG>
 
 <ARG>
-<NAME>GstV4lSrc::copy-mode</NAME>
+<NAME>GstDecodeBin::high-percent</NAME>
+<TYPE>gint</TYPE>
+<RANGE>[0,100]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>High percent</NICK>
+<BLURB>High threshold for buffering to finish.</BLURB>
+<DEFAULT>99</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstDecodeBin::low-percent</NAME>
+<TYPE>gint</TYPE>
+<RANGE>[0,100]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Low percent</NICK>
+<BLURB>Low threshold for buffering to start.</BLURB>
+<DEFAULT>10</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstDecodeBin::max-size-buffers</NAME>
+<TYPE>guint</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Max. size (buffers)</NICK>
+<BLURB>Max. number of buffers in the queue (0=automatic).</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstDecodeBin::max-size-bytes</NAME>
+<TYPE>guint</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Max. size (bytes)</NICK>
+<BLURB>Max. amount of bytes in the queue (0=automatic).</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstDecodeBin::max-size-time</NAME>
+<TYPE>guint64</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Max. size (ns)</NICK>
+<BLURB>Max. amount of data in the queue (in ns, 0=automatic).</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstDecodeBin::post-stream-topology</NAME>
 <TYPE>gboolean</TYPE>
 <RANGE></RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>Copy mode</NICK>
-<BLURB>Whether to send out copies of buffers, or direct pointers to the mmap region.</BLURB>
+<NICK>Post Stream Topology</NICK>
+<BLURB>Post stream-topology messages.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstDecodeBin::sink-caps</NAME>
+<TYPE>GstCaps*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Sink Caps</NICK>
+<BLURB>The caps of the input data. (NULL = use typefind element).</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstDecodeBin::subtitle-encoding</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>subtitle encoding</NICK>
+<BLURB>Encoding to assume if input subtitles are not in UTF-8 encoding. If not set, the GST_SUBTITLE_ENCODING environment variable will be checked for an encoding to use. If that is not set either, ISO-8859-15 will be assumed.</BLURB>
+<DEFAULT>NULL</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstDecodeBin::use-buffering</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Use Buffering</NICK>
+<BLURB>Emit GST_MESSAGE_BUFFERING based on low-/high-percent thresholds.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstSubParse::subtitle-encoding</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>subtitle charset encoding</NICK>
+<BLURB>Encoding to assume if input subtitles are not in UTF-8 or any other Unicode encoding. If not set, the GST_SUBTITLE_ENCODING environment variable will be checked for an encoding to use. If that is not set either, ISO-8859-15 will be assumed.</BLURB>
+<DEFAULT>NULL</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstSubParse::video-fps</NAME>
+<TYPE>GstFraction</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Video framerate</NICK>
+<BLURB>Framerate of the video stream. This is needed by some subtitle formats to synchronize subtitles and video properly. If not set and the subtitle format requires it subtitles may be out of sync.</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstAudioResample::quality</NAME>
+<TYPE>gint</TYPE>
+<RANGE>[0,10]</RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Quality</NICK>
+<BLURB>Resample quality with 0 being the lowest and 10 being the best.</BLURB>
+<DEFAULT>4</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstAudioResample::sinc-filter-auto-threshold</NAME>
+<TYPE>guint</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Sinc filter auto mode threshold</NICK>
+<BLURB>Memory usage threshold to use if sinc filter mode is AUTO, given in bytes.</BLURB>
+<DEFAULT>1048576</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstAudioResample::sinc-filter-mode</NAME>
+<TYPE>SpeexResamplerSincFilterMode</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Sinc filter table mode</NICK>
+<BLURB>What sinc filter table mode to use.</BLURB>
+<DEFAULT>Use full table if table size below threshold</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstVideoConvert::dither</NAME>
+<TYPE>GstVideoConvertDitherMethod</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Dither</NICK>
+<BLURB>Apply dithering while converting.</BLURB>
+<DEFAULT>No dithering (default)</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstGioStreamSrc::stream</NAME>
+<TYPE>GInputStream*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Stream</NICK>
+<BLURB>Stream to read from.</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstGioStreamSink::stream</NAME>
+<TYPE>GOutputStream*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Stream</NICK>
+<BLURB>Stream to write to.</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstGioSrc::file</NAME>
+<TYPE>GFile*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>File</NICK>
+<BLURB>GFile to read from.</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstGioSrc::location</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Location</NICK>
+<BLURB>URI location to read from.</BLURB>
+<DEFAULT>NULL</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstGioSink::file</NAME>
+<TYPE>GFile*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>File</NICK>
+<BLURB>GFile to write to.</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstGioSink::location</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Location</NICK>
+<BLURB>URI location to write to.</BLURB>
+<DEFAULT>NULL</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstEncodeBin::audio-jitter-tolerance</NAME>
+<TYPE>guint64</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Audio jitter tolerance</NICK>
+<BLURB>Amount of timestamp jitter/imperfection to allow on audio streams before inserting/dropping samples (ns).</BLURB>
+<DEFAULT>20000000</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstEncodeBin::avoid-reencoding</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Avoid re-encoding</NICK>
+<BLURB>Whether to re-encode portions of compatible video streams that lay on segment boundaries.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstEncodeBin::flags</NAME>
+<TYPE>GstEncodeBinFlags</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Flags</NICK>
+<BLURB>Flags to control behaviour.</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstEncodeBin::profile</NAME>
+<TYPE>GstEncodingProfile*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Profile</NICK>
+<BLURB>The GstEncodingProfile to use.</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstEncodeBin::queue-buffers-max</NAME>
+<TYPE>guint</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Max. size (buffers)</NICK>
+<BLURB>Max. number of buffers in the queue (0=disable).</BLURB>
+<DEFAULT>200</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstEncodeBin::queue-bytes-max</NAME>
+<TYPE>guint</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Max. size (kB)</NICK>
+<BLURB>Max. amount of data in the queue (bytes, 0=disable).</BLURB>
+<DEFAULT>10485760</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstEncodeBin::queue-time-max</NAME>
+<TYPE>guint64</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Max. size (ns)</NICK>
+<BLURB>Max. amount of data in the queue (in ns, 0=disable).</BLURB>
+<DEFAULT>1000000000</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstAudioTestSrc::can-activate-pull</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Can activate pull</NICK>
+<BLURB>Can activate in pull mode.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstAudioTestSrc::can-activate-push</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Can activate push</NICK>
+<BLURB>Can activate in push mode.</BLURB>
 <DEFAULT>TRUE</DEFAULT>
 </ARG>
 
 <ARG>
-<NAME>GstV4lSrc::timestamp-offset</NAME>
+<NAME>GstAudioTestSrc::freq</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,20000]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Frequency</NICK>
+<BLURB>Frequency of test signal.</BLURB>
+<DEFAULT>440</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstAudioTestSrc::is-live</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Is Live</NICK>
+<BLURB>Whether to act as a live source.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstAudioTestSrc::samplesperbuffer</NAME>
+<TYPE>gint</TYPE>
+<RANGE>>= 1</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Samples per buffer</NICK>
+<BLURB>Number of samples in each outgoing buffer.</BLURB>
+<DEFAULT>1024</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstAudioTestSrc::timestamp-offset</NAME>
 <TYPE>gint64</TYPE>
 <RANGE></RANGE>
 <FLAGS>rw</FLAGS>
 <NICK>Timestamp offset</NICK>
-<BLURB>A time offset subtracted from timestamps set on buffers (in ns).</BLURB>
+<BLURB>An offset added to timestamps set on buffers (in ns).</BLURB>
 <DEFAULT>0</DEFAULT>
 </ARG>
 
 <ARG>
-<NAME>GstAudioresample::filter-length</NAME>
-<TYPE>gint</TYPE>
-<RANGE>>= 0</RANGE>
-<FLAGS>rwx</FLAGS>
-<NICK>filter length</NICK>
-<BLURB>Length of the resample filter.</BLURB>
-<DEFAULT>16</DEFAULT>
+<NAME>GstAudioTestSrc::volume</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Volume</NICK>
+<BLURB>Volume of test signal.</BLURB>
+<DEFAULT>0.8</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstAudioTestSrc::wave</NAME>
+<TYPE>GstAudioTestSrcWave</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Waveform</NICK>
+<BLURB>Oscillator waveform.</BLURB>
+<DEFAULT>Sine</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstAppSrc::block</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Block</NICK>
+<BLURB>Block push-buffer when max-bytes are queued.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstAppSrc::caps</NAME>
+<TYPE>GstCaps*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Caps</NICK>
+<BLURB>The allowed caps for the src pad.</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstAppSrc::current-level-bytes</NAME>
+<TYPE>guint64</TYPE>
+<RANGE></RANGE>
+<FLAGS>r</FLAGS>
+<NICK>Current Level Bytes</NICK>
+<BLURB>The number of currently queued bytes.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstAppSrc::emit-signals</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Emit signals</NICK>
+<BLURB>Emit need-data, enough-data and seek-data signals.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstAppSrc::format</NAME>
+<TYPE>GstFormat</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Format</NICK>
+<BLURB>The format of the segment events and seek.</BLURB>
+<DEFAULT>GST_FORMAT_BYTES</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstAppSrc::is-live</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Is Live</NICK>
+<BLURB>Whether to act as a live source.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstAppSrc::max-bytes</NAME>
+<TYPE>guint64</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Max bytes</NICK>
+<BLURB>The maximum number of bytes to queue internally (0 = unlimited).</BLURB>
+<DEFAULT>200000</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstAppSrc::max-latency</NAME>
+<TYPE>gint64</TYPE>
+<RANGE>>= G_MAXULONG</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Max Latency</NICK>
+<BLURB>The maximum latency (-1 = unlimited).</BLURB>
+<DEFAULT>-1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstAppSrc::min-latency</NAME>
+<TYPE>gint64</TYPE>
+<RANGE>>= G_MAXULONG</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Min Latency</NICK>
+<BLURB>The minimum latency (-1 = default).</BLURB>
+<DEFAULT>-1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstAppSrc::min-percent</NAME>
+<TYPE>guint</TYPE>
+<RANGE><= 100</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Min Percent</NICK>
+<BLURB>Emit need-data when queued bytes drops below this percent of max-bytes.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstAppSrc::size</NAME>
+<TYPE>gint64</TYPE>
+<RANGE>>= G_MAXULONG</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Size</NICK>
+<BLURB>The size of the data stream in bytes (-1 if unknown).</BLURB>
+<DEFAULT>-1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstAppSrc::stream-type</NAME>
+<TYPE>GstAppStreamType</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Stream Type</NICK>
+<BLURB>the type of the stream.</BLURB>
+<DEFAULT>GST_APP_STREAM_TYPE_STREAM</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstAppSink::caps</NAME>
+<TYPE>GstCaps*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Caps</NICK>
+<BLURB>The allowed caps for the sink pad.</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstAppSink::drop</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Drop</NICK>
+<BLURB>Drop old buffers when the buffer queue is filled.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstAppSink::emit-signals</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Emit signals</NICK>
+<BLURB>Emit new-preroll and new-sample signals.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstAppSink::eos</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>r</FLAGS>
+<NICK>EOS</NICK>
+<BLURB>Check if the sink is EOS or not started.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstAppSink::max-buffers</NAME>
+<TYPE>guint</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Max Buffers</NICK>
+<BLURB>The maximum number of buffers to queue internally (0 = unlimited).</BLURB>
+<DEFAULT>0</DEFAULT>
 </ARG>
 
 <ARG>
@@ -329,22 +1259,32 @@
 </ARG>
 
 <ARG>
-<NAME>GstVideoTestSrc::pattern</NAME>
-<TYPE>GstVideoTestSrcPattern</TYPE>
+<NAME>GstVideoTestSrc::background-color</NAME>
+<TYPE>guint</TYPE>
 <RANGE></RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>Pattern</NICK>
-<BLURB>Type of test pattern to generate.</BLURB>
-<DEFAULT>SMPTE 100% color bars</DEFAULT>
+<NICK>Background Color</NICK>
+<BLURB>Background color to use (big-endian ARGB).</BLURB>
+<DEFAULT>4278190080</DEFAULT>
 </ARG>
 
 <ARG>
-<NAME>GstVideoTestSrc::timestamp-offset</NAME>
-<TYPE>gint64</TYPE>
+<NAME>GstVideoTestSrc::foreground-color</NAME>
+<TYPE>guint</TYPE>
 <RANGE></RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>Timestamp offset</NICK>
-<BLURB>An offset added to timestamps set on buffers (in ns).</BLURB>
+<NICK>Foreground Color</NICK>
+<BLURB>Foreground color to use (big-endian ARGB).</BLURB>
+<DEFAULT>4294967295</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstVideoTestSrc::horizontal-speed</NAME>
+<TYPE>gint</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Horizontal Speed</NICK>
+<BLURB>Scroll image number of pixels per frame (positive is scroll to the left).</BLURB>
 <DEFAULT>0</DEFAULT>
 </ARG>
 
@@ -359,26 +1299,6 @@
 </ARG>
 
 <ARG>
-<NAME>GstVideoTestSrc::peer-alloc</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Peer Alloc</NICK>
-<BLURB>Ask the peer to allocate an output buffer.</BLURB>
-<DEFAULT>TRUE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstVideoTestSrc::colorspec</NAME>
-<TYPE>GstVideoTestSrcColorSpec</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Color Specification</NICK>
-<BLURB>Generate video in the given color specification (Deprecated: use a caps filter with video/x-raw-yuv,color-matrix="sdtv" or "hdtv" instead).</BLURB>
-<DEFAULT>ITU-R Rec. BT.601</DEFAULT>
-</ARG>
-
-<ARG>
 <NAME>GstVideoTestSrc::k0</NAME>
 <TYPE>gint</TYPE>
 <RANGE></RANGE>
@@ -479,6 +1399,26 @@
 </ARG>
 
 <ARG>
+<NAME>GstVideoTestSrc::pattern</NAME>
+<TYPE>GstVideoTestSrcPattern</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Pattern</NICK>
+<BLURB>Type of test pattern to generate.</BLURB>
+<DEFAULT>SMPTE 100% color bars</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstVideoTestSrc::timestamp-offset</NAME>
+<TYPE>gint64</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Timestamp offset</NICK>
+<BLURB>An offset added to timestamps set on buffers (in ns).</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
 <NAME>GstVideoTestSrc::xoffset</NAME>
 <TYPE>gint</TYPE>
 <RANGE></RANGE>
@@ -499,1556 +1439,16 @@
 </ARG>
 
 <ARG>
-<NAME>GstVideoTestSrc::background-color</NAME>
-<TYPE>guint</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Background Color</NICK>
-<BLURB>Background color to use (big-endian ARGB).</BLURB>
-<DEFAULT>4278190080</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstVideoTestSrc::foreground-color</NAME>
-<TYPE>guint</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Foreground Color</NICK>
-<BLURB>Foreground color to use (big-endian ARGB).</BLURB>
-<DEFAULT>4294967295</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstVideoTestSrc::horizontal-speed</NAME>
-<TYPE>gint</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Horizontal Speed</NICK>
-<BLURB>Scroll image number of pixels per frame (positive is scroll to the left).</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstVideoscale::method</NAME>
-<TYPE>GstVideoscaleMethod</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>method</NICK>
-<BLURB>method.</BLURB>
-<DEFAULT>Nearest Neighbour</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstVideorate::drop</NAME>
+<NAME>GstVideoRate::average-period</NAME>
 <TYPE>guint64</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>Drop</NICK>
-<BLURB>Number of dropped frames.</BLURB>
+<RANGE><= G_MAXLONG</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Period over which to average</NICK>
+<BLURB>Period over which to average the framerate (in ns) (0 = disabled).</BLURB>
 <DEFAULT>0</DEFAULT>
 </ARG>
 
 <ARG>
-<NAME>GstVideorate::duplicate</NAME>
-<TYPE>guint64</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>Duplicate</NICK>
-<BLURB>Number of duplicated frames.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstVideorate::in</NAME>
-<TYPE>guint64</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>In</NICK>
-<BLURB>Number of input frames.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstVideorate::new-pref</NAME>
-<TYPE>gdouble</TYPE>
-<RANGE>[0,1]</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>New Pref</NICK>
-<BLURB>Value indicating how much to prefer new frames.</BLURB>
-<DEFAULT>1</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstVideorate::out</NAME>
-<TYPE>guint64</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>Out</NICK>
-<BLURB>Number of output frames.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstVideorate::silent</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>silent</NICK>
-<BLURB>Don't emit notify for dropped and duplicated frames.</BLURB>
-<DEFAULT>TRUE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTCPClientSink::host</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Host</NICK>
-<BLURB>The host/IP to send the packets to.</BLURB>
-<DEFAULT>"localhost"</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTCPClientSink::port</NAME>
-<TYPE>gint</TYPE>
-<RANGE>[0,65535]</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Port</NICK>
-<BLURB>The port to send the packets to.</BLURB>
-<DEFAULT>4953</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTCPClientSink::protocol</NAME>
-<TYPE>GstTCPProtocol</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Protocol</NICK>
-<BLURB>The protocol to wrap data in.</BLURB>
-<DEFAULT>GST_TCP_PROTOCOL_NONE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTCPClientSrc::host</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Host</NICK>
-<BLURB>The host IP address to receive packets from.</BLURB>
-<DEFAULT>"localhost"</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTCPClientSrc::port</NAME>
-<TYPE>gint</TYPE>
-<RANGE>[0,65535]</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Port</NICK>
-<BLURB>The port to receive packets from.</BLURB>
-<DEFAULT>4953</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTCPClientSrc::protocol</NAME>
-<TYPE>GstTCPProtocol</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Protocol</NICK>
-<BLURB>The protocol to wrap data in.</BLURB>
-<DEFAULT>GST_TCP_PROTOCOL_NONE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTCPServerSink::host</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>host</NICK>
-<BLURB>The host/IP to listen on.</BLURB>
-<DEFAULT>"localhost"</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTCPServerSink::port</NAME>
-<TYPE>gint</TYPE>
-<RANGE>[0,65535]</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>port</NICK>
-<BLURB>The port to listen to (0=random available port).</BLURB>
-<DEFAULT>4953</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTCPServerSink::current-port</NAME>
-<TYPE>gint</TYPE>
-<RANGE>[0,65535]</RANGE>
-<FLAGS>r</FLAGS>
-<NICK>current-port</NICK>
-<BLURB>The port number the socket is currently bound to.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTCPServerSrc::host</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Host</NICK>
-<BLURB>The hostname to listen as.</BLURB>
-<DEFAULT>NULL</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTCPServerSrc::port</NAME>
-<TYPE>gint</TYPE>
-<RANGE>[0,65535]</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Port</NICK>
-<BLURB>The port to listen to (0=random available port).</BLURB>
-<DEFAULT>4953</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTCPServerSrc::protocol</NAME>
-<TYPE>GstTCPProtocol</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Protocol</NICK>
-<BLURB>The protocol to wrap data in.</BLURB>
-<DEFAULT>GST_TCP_PROTOCOL_NONE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTCPServerSrc::current-port</NAME>
-<TYPE>gint</TYPE>
-<RANGE>[0,65535]</RANGE>
-<FLAGS>r</FLAGS>
-<NICK>current-port</NICK>
-<BLURB>The port number the socket is currently bound to.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstMultiFdSink::buffers-max</NAME>
-<TYPE>gint</TYPE>
-<RANGE>>= -1</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Buffers max</NICK>
-<BLURB>max number of buffers to queue for a client (-1 = no limit).</BLURB>
-<DEFAULT>-1</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstMultiFdSink::buffers-queued</NAME>
-<TYPE>guint</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>Buffers queued</NICK>
-<BLURB>Number of buffers currently queued.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstMultiFdSink::buffers-soft-max</NAME>
-<TYPE>gint</TYPE>
-<RANGE>>= -1</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Buffers soft max</NICK>
-<BLURB>Recover client when going over this limit (-1 = no limit).</BLURB>
-<DEFAULT>-1</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstMultiFdSink::bytes-served</NAME>
-<TYPE>guint64</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>Bytes served</NICK>
-<BLURB>Total number of bytes send to all clients.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstMultiFdSink::bytes-to-serve</NAME>
-<TYPE>guint64</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>Bytes to serve</NICK>
-<BLURB>Number of bytes received to serve to clients.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstMultiFdSink::mode</NAME>
-<TYPE>GstFDSetMode</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Mode</NICK>
-<BLURB>The mode for selecting activity on the fds (deprecated).</BLURB>
-<DEFAULT>Poll</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstMultiFdSink::protocol</NAME>
-<TYPE>GstTCPProtocol</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Protocol</NICK>
-<BLURB>The protocol to wrap data in. GDP protocol here is deprecated. Please use gdppay element.</BLURB>
-<DEFAULT>GST_TCP_PROTOCOL_NONE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstMultiFdSink::recover-policy</NAME>
-<TYPE>GstRecoverPolicy</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Recover Policy</NICK>
-<BLURB>How to recover when client reaches the soft max.</BLURB>
-<DEFAULT>Do not try to recover</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstMultiFdSink::sync-clients</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Sync clients</NICK>
-<BLURB>(DEPRECATED) Sync clients to a keyframe.</BLURB>
-<DEFAULT>FALSE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstMultiFdSink::sync-method</NAME>
-<TYPE>GstSyncMethod</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Sync Method</NICK>
-<BLURB>How to sync new clients to the stream.</BLURB>
-<DEFAULT>Serve starting from the latest buffer</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstMultiFdSink::timeout</NAME>
-<TYPE>guint64</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Timeout</NICK>
-<BLURB>Maximum inactivity timeout in nanoseconds for a client (0 = no limit).</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstMultiFdSink::buffers-min</NAME>
-<TYPE>gint</TYPE>
-<RANGE>>= -1</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Buffers min</NICK>
-<BLURB>min number of buffers to queue (-1 = as few as possible).</BLURB>
-<DEFAULT>-1</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstMultiFdSink::burst-unit</NAME>
-<TYPE>GstTCPUnitType</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Burst unit</NICK>
-<BLURB>The format of the burst units (when sync-method is burst[[-with]-keyframe]).</BLURB>
-<DEFAULT>Undefined</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstMultiFdSink::burst-value</NAME>
-<TYPE>guint64</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Burst value</NICK>
-<BLURB>The amount of burst expressed in burst-unit.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstMultiFdSink::bytes-min</NAME>
-<TYPE>gint</TYPE>
-<RANGE>>= -1</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Bytes min</NICK>
-<BLURB>min number of bytes to queue (-1 = as little as possible).</BLURB>
-<DEFAULT>-1</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstMultiFdSink::time-min</NAME>
-<TYPE>gint64</TYPE>
-<RANGE>>= -1</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Time min</NICK>
-<BLURB>min number of time to queue (-1 = as little as possible).</BLURB>
-<DEFAULT>-1</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstMultiFdSink::unit-type</NAME>
-<TYPE>GstTCPUnitType</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Units type</NICK>
-<BLURB>The unit to measure the max/soft-max/queued properties.</BLURB>
-<DEFAULT>Buffers</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstMultiFdSink::units-max</NAME>
-<TYPE>gint64</TYPE>
-<RANGE>>= -1</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Units max</NICK>
-<BLURB>max number of units to queue (-1 = no limit).</BLURB>
-<DEFAULT>-1</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstMultiFdSink::units-soft-max</NAME>
-<TYPE>gint64</TYPE>
-<RANGE>>= -1</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Units soft max</NICK>
-<BLURB>Recover client when going over this limit (-1 = no limit).</BLURB>
-<DEFAULT>-1</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstMultiFdSink::qos-dscp</NAME>
-<TYPE>gint</TYPE>
-<RANGE>[-1,63]</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>QoS diff srv code point</NICK>
-<BLURB>Quality of Service, differentiated services code point (-1 default).</BLURB>
-<DEFAULT>-1</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstMultiFdSink::handle-read</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Handle Read</NICK>
-<BLURB>Handle client reads and discard the data.</BLURB>
-<DEFAULT>TRUE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstMultiFdSink::resend-streamheader</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Resend streamheader</NICK>
-<BLURB>Resend the streamheader if it changes in the caps.</BLURB>
-<DEFAULT>TRUE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstMultiFdSink::num-fds</NAME>
-<TYPE>guint</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>Number of fds</NICK>
-<BLURB>The current number of client file descriptors.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstDecodeBin::threaded</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Threaded</NICK>
-<BLURB>Use threads.</BLURB>
-<DEFAULT>FALSE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstDecodeBin::sink-caps</NAME>
-<TYPE>GstCaps*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Sink Caps</NICK>
-<BLURB>The caps of the input data. (NULL = use typefind element).</BLURB>
-<DEFAULT></DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstDecodeBin::caps</NAME>
-<TYPE>GstCaps*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Caps</NICK>
-<BLURB>The caps on which to stop decoding.</BLURB>
-<DEFAULT></DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstDecodeBin::expose-all-streams</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Expose All Streams</NICK>
-<BLURB>Expose all streams, including those of unknown type or that don't match the 'caps' property.</BLURB>
-<DEFAULT>TRUE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstDecodeBin::high-percent</NAME>
-<TYPE>gint</TYPE>
-<RANGE>[0,100]</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>High percent</NICK>
-<BLURB>High threshold for buffering to finish.</BLURB>
-<DEFAULT>99</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstDecodeBin::low-percent</NAME>
-<TYPE>gint</TYPE>
-<RANGE>[0,100]</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Low percent</NICK>
-<BLURB>Low threshold for buffering to start.</BLURB>
-<DEFAULT>10</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstDecodeBin::max-size-buffers</NAME>
-<TYPE>guint</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Max. size (buffers)</NICK>
-<BLURB>Max. number of buffers in the queue (0=automatic).</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstDecodeBin::max-size-bytes</NAME>
-<TYPE>guint</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Max. size (bytes)</NICK>
-<BLURB>Max. amount of bytes in the queue (0=automatic).</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstDecodeBin::max-size-time</NAME>
-<TYPE>guint64</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Max. size (ns)</NICK>
-<BLURB>Max. amount of data in the queue (in ns, 0=automatic).</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstDecodeBin::post-stream-topology</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Post Stream Topology</NICK>
-<BLURB>Post stream-topology messages.</BLURB>
-<DEFAULT>FALSE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstDecodeBin::subtitle-encoding</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>subtitle encoding</NICK>
-<BLURB>Encoding to assume if input subtitles are not in UTF-8 encoding. If not set, the GST_SUBTITLE_ENCODING environment variable will be checked for an encoding to use. If that is not set either, ISO-8859-15 will be assumed.</BLURB>
-<DEFAULT>NULL</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstDecodeBin::use-buffering</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Use Buffering</NICK>
-<BLURB>Emit GST_MESSAGE_BUFFERING based on low-/high-percent thresholds.</BLURB>
-<DEFAULT>FALSE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstDecodeBin::connection-speed</NAME>
-<TYPE>guint64</TYPE>
-<RANGE><= 18446744073709551</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Connection Speed</NICK>
-<BLURB>Network connection speed in kbps (0 = unknown).</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin::audio-sink</NAME>
-<TYPE>GstElement*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Audio Sink</NICK>
-<BLURB>the audio output element to use (NULL = default sink).</BLURB>
-<DEFAULT></DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin::frame</NAME>
-<TYPE>GstBuffer*</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>Frame</NICK>
-<BLURB>The last frame (NULL = no video available).</BLURB>
-<DEFAULT></DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin::subtitle-font-desc</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>w</FLAGS>
-<NICK>Subtitle font description</NICK>
-<BLURB>Pango font description of font to be used for subtitle rendering.</BLURB>
-<DEFAULT>NULL</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin::video-sink</NAME>
-<TYPE>GstElement*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Video Sink</NICK>
-<BLURB>the video output element to use (NULL = default sink).</BLURB>
-<DEFAULT></DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin::vis-plugin</NAME>
-<TYPE>GstElement*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Vis plugin</NICK>
-<BLURB>the visualization element to use (NULL = default).</BLURB>
-<DEFAULT></DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin::volume</NAME>
-<TYPE>gdouble</TYPE>
-<RANGE>[0,10]</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Volume</NICK>
-<BLURB>The audio volume, 1.0=100%.</BLURB>
-<DEFAULT>1</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin::connection-speed</NAME>
-<TYPE>guint64</TYPE>
-<RANGE><= 18446744073709551</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Connection Speed</NICK>
-<BLURB>Network connection speed in kbps (0 = unknown).</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin::av-offset</NAME>
-<TYPE>gint64</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>AV Offset</NICK>
-<BLURB>The synchronisation offset between audio and video in nanoseconds.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin::buffer-duration</NAME>
-<TYPE>gint64</TYPE>
-<RANGE>>= G_MAXULONG</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Buffer duration (ns)</NICK>
-<BLURB>Buffer duration when buffering network streams.</BLURB>
-<DEFAULT>-1</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin::buffer-size</NAME>
-<TYPE>gint</TYPE>
-<RANGE>>= G_MAXULONG</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Buffer size (bytes)</NICK>
-<BLURB>Buffer size when buffering network streams.</BLURB>
-<DEFAULT>-1</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin::current-audio</NAME>
-<TYPE>gint</TYPE>
-<RANGE>>= G_MAXULONG</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Current audio</NICK>
-<BLURB>Currently playing audio stream (-1 = auto).</BLURB>
-<DEFAULT>-1</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin::current-text</NAME>
-<TYPE>gint</TYPE>
-<RANGE>>= G_MAXULONG</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Current Text</NICK>
-<BLURB>Currently playing text stream (-1 = auto).</BLURB>
-<DEFAULT>-1</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin::current-video</NAME>
-<TYPE>gint</TYPE>
-<RANGE>>= G_MAXULONG</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Current Video</NICK>
-<BLURB>Currently playing video stream (-1 = auto).</BLURB>
-<DEFAULT>-1</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin::flags</NAME>
-<TYPE>GstPlayFlags</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Flags</NICK>
-<BLURB>Flags to control behaviour.</BLURB>
-<DEFAULT>Render the video stream|Render the audio stream|Render subtitles|Use software volume|Deinterlace video if necessary|Use software color balance</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin::mute</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Mute</NICK>
-<BLURB>Mute the audio channel without changing the volume.</BLURB>
-<DEFAULT>FALSE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin::n-audio</NAME>
-<TYPE>gint</TYPE>
-<RANGE>>= 0</RANGE>
-<FLAGS>r</FLAGS>
-<NICK>Number Audio</NICK>
-<BLURB>Total number of audio streams.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin::n-text</NAME>
-<TYPE>gint</TYPE>
-<RANGE>>= 0</RANGE>
-<FLAGS>r</FLAGS>
-<NICK>Number Text</NICK>
-<BLURB>Total number of text streams.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin::n-video</NAME>
-<TYPE>gint</TYPE>
-<RANGE>>= 0</RANGE>
-<FLAGS>r</FLAGS>
-<NICK>Number Video</NICK>
-<BLURB>Total number of video streams.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin::ring-buffer-max-size</NAME>
-<TYPE>guint64</TYPE>
-<RANGE><= G_MAXUINT</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Max. ring buffer size (bytes)</NICK>
-<BLURB>Max. amount of data in the ring buffer (bytes, 0 = ring buffer disabled).</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin::sample</NAME>
-<TYPE>GstSample*</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>Sample</NICK>
-<BLURB>The last sample (NULL = no video available).</BLURB>
-<DEFAULT></DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin::source</NAME>
-<TYPE>GstElement*</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>Source</NICK>
-<BLURB>Source element.</BLURB>
-<DEFAULT></DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin::subtitle-encoding</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>subtitle encoding</NICK>
-<BLURB>Encoding to assume if input subtitles are not in UTF-8 encoding. If not set, the GST_SUBTITLE_ENCODING environment variable will be checked for an encoding to use. If that is not set either, ISO-8859-15 will be assumed.</BLURB>
-<DEFAULT>NULL</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin::suburi</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>.sub-URI</NICK>
-<BLURB>Optional URI of a subtitle.</BLURB>
-<DEFAULT>NULL</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin::text-sink</NAME>
-<TYPE>GstElement*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Text plugin</NICK>
-<BLURB>the text output element to use (NULL = default subtitleoverlay).</BLURB>
-<DEFAULT></DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin::uri</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>URI</NICK>
-<BLURB>URI of the media to play.</BLURB>
-<DEFAULT>NULL</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin::current-suburi</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>Current .sub-URI</NICK>
-<BLURB>The currently playing URI of a subtitle.</BLURB>
-<DEFAULT>NULL</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin::current-uri</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>Current URI</NICK>
-<BLURB>The currently playing URI.</BLURB>
-<DEFAULT>NULL</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin::force-aspect-ratio</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Force Aspect Ratio</NICK>
-<BLURB>When enabled, scaling will respect original aspect ratio.</BLURB>
-<DEFAULT>TRUE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin::audio-stream-combiner</NAME>
-<TYPE>GstElement*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Audio stream combiner</NICK>
-<BLURB>Current audio stream combiner (NULL = input-selector).</BLURB>
-<DEFAULT></DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin::text-stream-combiner</NAME>
-<TYPE>GstElement*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Text stream combiner</NICK>
-<BLURB>Current text stream combiner (NULL = input-selector).</BLURB>
-<DEFAULT></DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin::video-stream-combiner</NAME>
-<TYPE>GstElement*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Video stream combiner</NICK>
-<BLURB>Current video stream combiner (NULL = input-selector).</BLURB>
-<DEFAULT></DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstAudiorate::add</NAME>
-<TYPE>guint64</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>Add</NICK>
-<BLURB>Number of added samples.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstAudiorate::drop</NAME>
-<TYPE>guint64</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>Drop</NICK>
-<BLURB>Number of dropped samples.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstAudiorate::in</NAME>
-<TYPE>guint64</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>In</NICK>
-<BLURB>Number of input samples.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstAudiorate::out</NAME>
-<TYPE>guint64</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>Out</NICK>
-<BLURB>Number of output samples.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstAudiorate::silent</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>silent</NICK>
-<BLURB>Don't emit notify for dropped and duplicated frames.</BLURB>
-<DEFAULT>TRUE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstVorbisEnc::bitrate</NAME>
-<TYPE>gint</TYPE>
-<RANGE>[G_MAXULONG,250001]</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Target Bitrate</NICK>
-<BLURB>Attempt to encode at a bitrate averaging this (in bps). This uses the bitrate management engine, and is not recommended for most users. Quality is a better alternative. (-1 == disabled).</BLURB>
-<DEFAULT>-1</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstVorbisEnc::last-message</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>last-message</NICK>
-<BLURB>The last status message.</BLURB>
-<DEFAULT>NULL</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstVorbisEnc::managed</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Managed</NICK>
-<BLURB>Enable bitrate management engine.</BLURB>
-<DEFAULT>FALSE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstVorbisEnc::max-bitrate</NAME>
-<TYPE>gint</TYPE>
-<RANGE>[G_MAXULONG,250001]</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Maximum Bitrate</NICK>
-<BLURB>Specify a maximum bitrate (in bps). Useful for streaming applications. (-1 == disabled).</BLURB>
-<DEFAULT>-1</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstVorbisEnc::min-bitrate</NAME>
-<TYPE>gint</TYPE>
-<RANGE>[G_MAXULONG,250001]</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Minimum Bitrate</NICK>
-<BLURB>Specify a minimum bitrate (in bps). Useful for encoding for a fixed-size channel. (-1 == disabled).</BLURB>
-<DEFAULT>-1</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstVorbisEnc::quality</NAME>
-<TYPE>gfloat</TYPE>
-<RANGE>[-0.1,1]</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Quality</NICK>
-<BLURB>Specify quality instead of specifying a particular bitrate.</BLURB>
-<DEFAULT>0.3</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTheoraDec::crop</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Crop</NICK>
-<BLURB>Crop the image to the visible region.</BLURB>
-<DEFAULT>TRUE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTheoraEnc::bitrate</NAME>
-<TYPE>gint</TYPE>
-<RANGE>[0,16777215]</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Bitrate</NICK>
-<BLURB>Compressed video bitrate (kbps).</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTheoraEnc::border</NAME>
-<TYPE>GstTheoraEncBorderMode</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Border</NICK>
-<BLURB>ignored and kept for API compat only.</BLURB>
-<DEFAULT>Black Border</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTheoraEnc::center</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Center</NICK>
-<BLURB>ignored and kept for API compat only.</BLURB>
-<DEFAULT>TRUE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTheoraEnc::keyframe-auto</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Keyframe Auto</NICK>
-<BLURB>Automatic keyframe detection.</BLURB>
-<DEFAULT>TRUE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTheoraEnc::keyframe-force</NAME>
-<TYPE>gint</TYPE>
-<RANGE>[1,32768]</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Keyframe force</NICK>
-<BLURB>Force keyframe every N frames.</BLURB>
-<DEFAULT>64</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTheoraEnc::keyframe-freq</NAME>
-<TYPE>gint</TYPE>
-<RANGE>[1,32768]</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Keyframe frequency</NICK>
-<BLURB>Keyframe frequency.</BLURB>
-<DEFAULT>64</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTheoraEnc::keyframe-mindistance</NAME>
-<TYPE>gint</TYPE>
-<RANGE>[1,32768]</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Keyframe mindistance</NICK>
-<BLURB>ignored and kept for API compat only.</BLURB>
-<DEFAULT>8</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTheoraEnc::keyframe-threshold</NAME>
-<TYPE>gint</TYPE>
-<RANGE>[0,32768]</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Keyframe threshold</NICK>
-<BLURB>ignored and kept for API compat only.</BLURB>
-<DEFAULT>80</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTheoraEnc::noise-sensitivity</NAME>
-<TYPE>gint</TYPE>
-<RANGE>[0,32768]</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Noise sensitivity</NICK>
-<BLURB>ignored and kept for API compat only.</BLURB>
-<DEFAULT>1</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTheoraEnc::quality</NAME>
-<TYPE>gint</TYPE>
-<RANGE>[0,63]</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Quality</NICK>
-<BLURB>Video quality.</BLURB>
-<DEFAULT>48</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTheoraEnc::quick</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Quick</NICK>
-<BLURB>ignored and kept for API compat only.</BLURB>
-<DEFAULT>TRUE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTheoraEnc::sharpness</NAME>
-<TYPE>gint</TYPE>
-<RANGE>[0,2]</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Sharpness</NICK>
-<BLURB>ignored and kept for API compat only.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTheoraEnc::speed-level</NAME>
-<TYPE>gint</TYPE>
-<RANGE>[0,3]</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Speed level</NICK>
-<BLURB>Controls the amount of motion vector searching done while encoding.</BLURB>
-<DEFAULT>1</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTheoraEnc::cap-overflow</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Cap overflow</NICK>
-<BLURB>Enable capping of bit reservoir overflows.</BLURB>
-<DEFAULT>TRUE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTheoraEnc::cap-underflow</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Cap underflow</NICK>
-<BLURB>Enable capping of bit reservoir underflows.</BLURB>
-<DEFAULT>FALSE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTheoraEnc::drop-frames</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Drop frames</NICK>
-<BLURB>Allow or disallow frame dropping.</BLURB>
-<DEFAULT>TRUE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTheoraEnc::rate-buffer</NAME>
-<TYPE>gint</TYPE>
-<RANGE>[0,1000]</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Rate Control Buffer</NICK>
-<BLURB>Sets the size of the rate control buffer, in units of frames.  The default value of 0 instructs the encoder to automatically select an appropriate value.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTheoraEnc::vp3-compatible</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>VP3 compatible</NICK>
-<BLURB>Disables non-VP3 compatible features.</BLURB>
-<DEFAULT>FALSE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTheoraEnc::multipass-cache-file</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Multipass Cache File</NICK>
-<BLURB>Multipass cache file.</BLURB>
-<DEFAULT>NULL</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTheoraEnc::multipass-mode</NAME>
-<TYPE>GstTheoraEncMultipassMode</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Multipass mode</NICK>
-<BLURB>Single pass or first/second pass.</BLURB>
-<DEFAULT>Single pass</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTheoraEnc::dup-on-gap</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Create DUP frame on GAP flag</NICK>
-<BLURB>Allow codec to handle frames with GAP flag as duplicates of previous frame. This is good to work with variable frame rate stabilized by videorate element. It will add variable latency with maximal size of keyframe distance, this way it is a bad idea to use with live streams.</BLURB>
-<DEFAULT>FALSE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstGnomeVFSSrc::handle</NAME>
-<TYPE>GnomeVFSHandle*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>GnomeVFSHandle</NICK>
-<BLURB>Handle for GnomeVFS.</BLURB>
-<DEFAULT></DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstGnomeVFSSrc::iradio-genre</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>iradio-genre</NICK>
-<BLURB>Genre of the stream.</BLURB>
-<DEFAULT>NULL</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstGnomeVFSSrc::iradio-mode</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>iradio-mode</NICK>
-<BLURB>Enable internet radio mode (extraction of shoutcast/icecast metadata).</BLURB>
-<DEFAULT>FALSE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstGnomeVFSSrc::iradio-name</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>iradio-name</NICK>
-<BLURB>Name of the stream.</BLURB>
-<DEFAULT>NULL</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstGnomeVFSSrc::iradio-title</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>iradio-title</NICK>
-<BLURB>Name of currently playing song.</BLURB>
-<DEFAULT>NULL</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstGnomeVFSSrc::iradio-url</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>iradio-url</NICK>
-<BLURB>Homepage URL for radio stream.</BLURB>
-<DEFAULT>NULL</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstGnomeVFSSrc::location</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>File Location</NICK>
-<BLURB>Location of the file to read.</BLURB>
-<DEFAULT>NULL</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstGnomeVFSSrc::random-access</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>random-mode</NICK>
-<BLURB>Enable random file access.</BLURB>
-<DEFAULT>FALSE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstOggMux::max-delay</NAME>
-<TYPE>guint64</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Max delay</NICK>
-<BLURB>Maximum delay in multiplexing streams.</BLURB>
-<DEFAULT>500000000</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstOggMux::max-page-delay</NAME>
-<TYPE>guint64</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Max page delay</NICK>
-<BLURB>Maximum delay for sending out a page.</BLURB>
-<DEFAULT>500000000</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstOggMux::max-tolerance</NAME>
-<TYPE>guint64</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Max time tolerance</NICK>
-<BLURB>Maximum timestamp difference for maintaining perfect granules.</BLURB>
-<DEFAULT>40000000</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstOggMux::skeleton</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Skeleton</NICK>
-<BLURB>Whether to include a Skeleton track.</BLURB>
-<DEFAULT>FALSE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstAlsaSrc::device</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Device</NICK>
-<BLURB>ALSA device, as defined in an asound configuration file.</BLURB>
-<DEFAULT>"default"</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstAlsaSrc::device-name</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>Device name</NICK>
-<BLURB>Human-readable name of the sound device.</BLURB>
-<DEFAULT>""</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstAlsaSrc::card-name</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>Card name</NICK>
-<BLURB>Human-readable name of the sound card.</BLURB>
-<DEFAULT>""</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstAlsaSink::device</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Device</NICK>
-<BLURB>ALSA device, as defined in an asound configuration file.</BLURB>
-<DEFAULT>"default"</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstAlsaSink::device-name</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>Device name</NICK>
-<BLURB>Human-readable name of the sound device.</BLURB>
-<DEFAULT>""</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstAlsaSink::card-name</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>Card name</NICK>
-<BLURB>Human-readable name of the sound card.</BLURB>
-<DEFAULT>""</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstAudioTestSrc::freq</NAME>
-<TYPE>gdouble</TYPE>
-<RANGE>[0,20000]</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Frequency</NICK>
-<BLURB>Frequency of test signal.</BLURB>
-<DEFAULT>440</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstAudioTestSrc::is-live</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Is Live</NICK>
-<BLURB>Whether to act as a live source.</BLURB>
-<DEFAULT>FALSE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstAudioTestSrc::samplesperbuffer</NAME>
-<TYPE>gint</TYPE>
-<RANGE>>= 1</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Samples per buffer</NICK>
-<BLURB>Number of samples in each outgoing buffer.</BLURB>
-<DEFAULT>1024</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstAudioTestSrc::timestamp-offset</NAME>
-<TYPE>gint64</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Timestamp offset</NICK>
-<BLURB>An offset added to timestamps set on buffers (in ns).</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstAudioTestSrc::volume</NAME>
-<TYPE>gdouble</TYPE>
-<RANGE>[0,1]</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Volume</NICK>
-<BLURB>Volume of test signal.</BLURB>
-<DEFAULT>0.8</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstAudioTestSrc::wave</NAME>
-<TYPE>GstAudioTestSrcWave</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Waveform</NICK>
-<BLURB>Oscillator waveform.</BLURB>
-<DEFAULT>Sine</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstAudioTestSrc::can-activate-pull</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Can activate pull</NICK>
-<BLURB>Can activate in pull mode.</BLURB>
-<DEFAULT>FALSE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstAudioTestSrc::can-activate-push</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Can activate push</NICK>
-<BLURB>Can activate in push mode.</BLURB>
-<DEFAULT>TRUE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstVideoScale::method</NAME>
-<TYPE>GstVideoScaleMethod</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>method</NICK>
-<BLURB>method.</BLURB>
-<DEFAULT>Bilinear</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstVideoScale::add-borders</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Add Borders</NICK>
-<BLURB>Add black borders if necessary to keep the display aspect ratio.</BLURB>
-<DEFAULT>TRUE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstVideoScale::dither</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rwx</FLAGS>
-<NICK>Dither</NICK>
-<BLURB>Add dither (only used for Lanczos method).</BLURB>
-<DEFAULT>FALSE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstVideoScale::envelope</NAME>
-<TYPE>gdouble</TYPE>
-<RANGE>[1,5]</RANGE>
-<FLAGS>rwx</FLAGS>
-<NICK>Envelope</NICK>
-<BLURB>Size of filter envelope.</BLURB>
-<DEFAULT>2</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstVideoScale::sharpen</NAME>
-<TYPE>gdouble</TYPE>
-<RANGE>[0,1]</RANGE>
-<FLAGS>rwx</FLAGS>
-<NICK>Sharpen</NICK>
-<BLURB>Sharpening.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstVideoScale::sharpness</NAME>
-<TYPE>gdouble</TYPE>
-<RANGE>[0.5,1.5]</RANGE>
-<FLAGS>rwx</FLAGS>
-<NICK>Sharpness</NICK>
-<BLURB>Sharpness of filter.</BLURB>
-<DEFAULT>1</DEFAULT>
-</ARG>
-
-<ARG>
 <NAME>GstVideoRate::drop</NAME>
 <TYPE>guint64</TYPE>
 <RANGE></RANGE>
@@ -2059,6 +1459,16 @@
 </ARG>
 
 <ARG>
+<NAME>GstVideoRate::drop-only</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Only Drop</NICK>
+<BLURB>Only drop frames, no duplicates are produced.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
 <NAME>GstVideoRate::duplicate</NAME>
 <TYPE>guint64</TYPE>
 <RANGE></RANGE>
@@ -2079,6 +1489,16 @@
 </ARG>
 
 <ARG>
+<NAME>GstVideoRate::max-rate</NAME>
+<TYPE>gint</TYPE>
+<RANGE>>= 1</RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>maximum framerate</NICK>
+<BLURB>Maximum framerate allowed to pass through (in frames per second, implies drop-only).</BLURB>
+<DEFAULT>2147483647</DEFAULT>
+</ARG>
+
+<ARG>
 <NAME>GstVideoRate::new-pref</NAME>
 <TYPE>gdouble</TYPE>
 <RANGE>[0,1]</RANGE>
@@ -2119,33 +1539,133 @@
 </ARG>
 
 <ARG>
-<NAME>GstVideoRate::average-period</NAME>
-<TYPE>guint64</TYPE>
-<RANGE><= G_MAXLONG</RANGE>
+<NAME>GstAudioConvert::dithering</NAME>
+<TYPE>GstAudioConvertDithering</TYPE>
+<RANGE></RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>Period over which to average</NICK>
-<BLURB>Period over which to average the framerate (in ns) (0 = disabled).</BLURB>
+<NICK>Dithering</NICK>
+<BLURB>Selects between different dithering methods.</BLURB>
+<DEFAULT>Triangular dithering (default)</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstAudioConvert::noise-shaping</NAME>
+<TYPE>GstAudioConvertNoiseShaping</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Noise shaping</NICK>
+<BLURB>Selects between different noise shaping methods.</BLURB>
+<DEFAULT>No noise shaping (default)</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstTCPServerSrc::current-port</NAME>
+<TYPE>gint</TYPE>
+<RANGE>[0,65535]</RANGE>
+<FLAGS>r</FLAGS>
+<NICK>current-port</NICK>
+<BLURB>The port number the socket is currently bound to.</BLURB>
 <DEFAULT>0</DEFAULT>
 </ARG>
 
 <ARG>
-<NAME>GstVideoRate::drop-only</NAME>
-<TYPE>gboolean</TYPE>
+<NAME>GstTCPServerSrc::host</NAME>
+<TYPE>gchar*</TYPE>
 <RANGE></RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>Only Drop</NICK>
-<BLURB>Only drop frames, no duplicates are produced.</BLURB>
-<DEFAULT>FALSE</DEFAULT>
+<NICK>Host</NICK>
+<BLURB>The hostname to listen as.</BLURB>
+<DEFAULT>NULL</DEFAULT>
 </ARG>
 
 <ARG>
-<NAME>GstVideoRate::max-rate</NAME>
+<NAME>GstTCPServerSrc::port</NAME>
 <TYPE>gint</TYPE>
-<RANGE>>= 1</RANGE>
-<FLAGS>rwx</FLAGS>
-<NICK>maximum framerate</NICK>
-<BLURB>Maximum framerate allowed to pass through (in frames per second, implies drop-only).</BLURB>
-<DEFAULT>2147483647</DEFAULT>
+<RANGE>[0,65535]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Port</NICK>
+<BLURB>The port to listen to (0=random available port).</BLURB>
+<DEFAULT>4953</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstTCPServerSink::current-port</NAME>
+<TYPE>gint</TYPE>
+<RANGE>[0,65535]</RANGE>
+<FLAGS>r</FLAGS>
+<NICK>current-port</NICK>
+<BLURB>The port number the socket is currently bound to.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstTCPServerSink::host</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>host</NICK>
+<BLURB>The host/IP to listen on.</BLURB>
+<DEFAULT>"localhost"</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstTCPServerSink::port</NAME>
+<TYPE>gint</TYPE>
+<RANGE>[0,65535]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>port</NICK>
+<BLURB>The port to listen to (0=random available port).</BLURB>
+<DEFAULT>4953</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstTCPClientSrc::host</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Host</NICK>
+<BLURB>The host IP address to receive packets from.</BLURB>
+<DEFAULT>"localhost"</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstTCPClientSrc::port</NAME>
+<TYPE>gint</TYPE>
+<RANGE>[0,65535]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Port</NICK>
+<BLURB>The port to receive packets from.</BLURB>
+<DEFAULT>4953</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstTCPClientSink::host</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Host</NICK>
+<BLURB>The host/IP to send the packets to.</BLURB>
+<DEFAULT>"localhost"</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstTCPClientSink::port</NAME>
+<TYPE>gint</TYPE>
+<RANGE>[0,65535]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Port</NICK>
+<BLURB>The port to send the packets to.</BLURB>
+<DEFAULT>4953</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstMultiFdSink::handle-read</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Handle Read</NICK>
+<BLURB>Handle client reads and discard the data.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
 </ARG>
 
 <ARG>
@@ -2199,6 +1719,16 @@
 </ARG>
 
 <ARG>
+<NAME>GstAudioRate::skip-to-first</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Skip to first buffer</NICK>
+<BLURB>Don't produce buffers before the first one we receive.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
 <NAME>GstAudioRate::tolerance</NAME>
 <TYPE>guint64</TYPE>
 <RANGE></RANGE>
@@ -2209,16 +1739,266 @@
 </ARG>
 
 <ARG>
-<NAME>GstAudioRate::skip-to-first</NAME>
+<NAME>GstXvImageSink::autopaint-colorkey</NAME>
 <TYPE>gboolean</TYPE>
 <RANGE></RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>Skip to first buffer</NICK>
-<BLURB>Don't produce buffers before the first one we receive.</BLURB>
+<NICK>Autofill with colorkey</NICK>
+<BLURB>Whether to autofill overlay with colorkey.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstXvImageSink::brightness</NAME>
+<TYPE>gint</TYPE>
+<RANGE>[-1000,1000]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Brightness</NICK>
+<BLURB>The brightness of the video.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstXvImageSink::colorkey</NAME>
+<TYPE>gint</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Colorkey</NICK>
+<BLURB>Color to use for the overlay mask.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstXvImageSink::contrast</NAME>
+<TYPE>gint</TYPE>
+<RANGE>[-1000,1000]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Contrast</NICK>
+<BLURB>The contrast of the video.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstXvImageSink::device</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Adaptor number</NICK>
+<BLURB>The number of the video adaptor.</BLURB>
+<DEFAULT>"0"</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstXvImageSink::device-name</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>r</FLAGS>
+<NICK>Adaptor name</NICK>
+<BLURB>The name of the video adaptor.</BLURB>
+<DEFAULT>NULL</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstXvImageSink::display</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Display</NICK>
+<BLURB>X Display name.</BLURB>
+<DEFAULT>NULL</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstXvImageSink::double-buffer</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Double-buffer</NICK>
+<BLURB>Whether to double-buffer the output.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstXvImageSink::draw-borders</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Colorkey</NICK>
+<BLURB>Draw black borders to fill unused area in force-aspect-ratio mode.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstXvImageSink::force-aspect-ratio</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Force aspect ratio</NICK>
+<BLURB>When enabled, scaling will respect original aspect ratio.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstXvImageSink::handle-events</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Handle XEvents</NICK>
+<BLURB>When enabled, XEvents will be selected and handled.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstXvImageSink::handle-expose</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Handle expose</NICK>
+<BLURB>When enabled, the current frame will always be drawn in response to X Expose events.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstXvImageSink::hue</NAME>
+<TYPE>gint</TYPE>
+<RANGE>[-1000,1000]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Hue</NICK>
+<BLURB>The hue of the video.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstXvImageSink::pixel-aspect-ratio</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Pixel Aspect Ratio</NICK>
+<BLURB>The pixel aspect ratio of the device.</BLURB>
+<DEFAULT>"1/1"</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstXvImageSink::saturation</NAME>
+<TYPE>gint</TYPE>
+<RANGE>[-1000,1000]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Saturation</NICK>
+<BLURB>The saturation of the video.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstXvImageSink::synchronous</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Synchronous</NICK>
+<BLURB>When enabled, runs the X display in synchronous mode. (unrelated to A/V sync, used only for debugging).</BLURB>
 <DEFAULT>FALSE</DEFAULT>
 </ARG>
 
 <ARG>
+<NAME>GstXvImageSink::window-height</NAME>
+<TYPE>guint64</TYPE>
+<RANGE></RANGE>
+<FLAGS>r</FLAGS>
+<NICK>window-height</NICK>
+<BLURB>Height of the window.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstXvImageSink::window-width</NAME>
+<TYPE>guint64</TYPE>
+<RANGE></RANGE>
+<FLAGS>r</FLAGS>
+<NICK>window-width</NICK>
+<BLURB>Width of the window.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstXImageSink::display</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Display</NICK>
+<BLURB>X Display name.</BLURB>
+<DEFAULT>NULL</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstXImageSink::force-aspect-ratio</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Force aspect ratio</NICK>
+<BLURB>When enabled, reverse caps negotiation (scaling) will respect original aspect ratio.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstXImageSink::handle-events</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Handle XEvents</NICK>
+<BLURB>When enabled, XEvents will be selected and handled.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstXImageSink::handle-expose</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Handle expose</NICK>
+<BLURB>When enabled, the current frame will always be drawn in response to X Expose events.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstXImageSink::pixel-aspect-ratio</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Pixel Aspect Ratio</NICK>
+<BLURB>The pixel aspect ratio of the device.</BLURB>
+<DEFAULT>"1/1"</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstXImageSink::synchronous</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Synchronous</NICK>
+<BLURB>When enabled, runs the X display in synchronous mode. (unrelated to A/V sync, used only for debugging).</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstXImageSink::window-height</NAME>
+<TYPE>guint64</TYPE>
+<RANGE></RANGE>
+<FLAGS>r</FLAGS>
+<NICK>window-height</NICK>
+<BLURB>Height of the window.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstXImageSink::window-width</NAME>
+<TYPE>guint64</TYPE>
+<RANGE></RANGE>
+<FLAGS>r</FLAGS>
+<NICK>window-width</NICK>
+<BLURB>Width of the window.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
 <NAME>GstTextRender::font-desc</NAME>
 <TYPE>gchar*</TYPE>
 <RANGE></RANGE>
@@ -2279,373 +2059,83 @@
 </ARG>
 
 <ARG>
-<NAME>GstTextOverlay::deltax</NAME>
-<TYPE>gint</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>X position modifier</NICK>
-<BLURB>Shift X position to the left or to the right. Unit is pixels.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTextOverlay::deltay</NAME>
-<TYPE>gint</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Y position modifier</NICK>
-<BLURB>Shift Y position up or down. Unit is pixels.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTextOverlay::font-desc</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>w</FLAGS>
-<NICK>font description</NICK>
-<BLURB>Pango font description of font to be used for rendering. See documentation of pango_font_description_from_string for syntax.</BLURB>
-<DEFAULT>""</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTextOverlay::halign</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>w</FLAGS>
-<NICK>horizontal alignment</NICK>
-<BLURB>Horizontal alignment of the text (deprecated; use halignment).</BLURB>
-<DEFAULT>"center"</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTextOverlay::shaded-background</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>shaded background</NICK>
-<BLURB>Whether to shade the background under the text area.</BLURB>
-<DEFAULT>FALSE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTextOverlay::text</NAME>
+<NAME>GstClockOverlay::time-format</NAME>
 <TYPE>gchar*</TYPE>
 <RANGE></RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>text</NICK>
-<BLURB>Text to be display.</BLURB>
-<DEFAULT>""</DEFAULT>
+<NICK>Date/Time Format</NICK>
+<BLURB>Format to use for time and date value, as in strftime.</BLURB>
+<DEFAULT>"%H:%M:%S"</DEFAULT>
 </ARG>
 
 <ARG>
-<NAME>GstTextOverlay::valign</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>w</FLAGS>
-<NICK>vertical alignment</NICK>
-<BLURB>Vertical alignment of the text (deprecated; use valignment).</BLURB>
-<DEFAULT>"baseline"</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTextOverlay::wrap-mode</NAME>
-<TYPE>GstTextOverlayWrapMode</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>wrap mode</NICK>
-<BLURB>Whether to wrap the text and if so how.</BLURB>
-<DEFAULT>wordchar</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTextOverlay::xpad</NAME>
+<NAME>GstVorbisEnc::bitrate</NAME>
 <TYPE>gint</TYPE>
-<RANGE>>= 0</RANGE>
+<RANGE>[G_MAXULONG,250001]</RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>horizontal paddding</NICK>
-<BLURB>Horizontal paddding when using left/right alignment.</BLURB>
-<DEFAULT>25</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTextOverlay::ypad</NAME>
-<TYPE>gint</TYPE>
-<RANGE>>= 0</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>vertical padding</NICK>
-<BLURB>Vertical padding when using top/bottom alignment.</BLURB>
-<DEFAULT>25</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTextOverlay::halignment</NAME>
-<TYPE>GstTextOverlayHAlign</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>horizontal alignment</NICK>
-<BLURB>Horizontal alignment of the text.</BLURB>
-<DEFAULT>center</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTextOverlay::valignment</NAME>
-<TYPE>GstTextOverlayVAlign</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>vertical alignment</NICK>
-<BLURB>Vertical alignment of the text.</BLURB>
-<DEFAULT>baseline</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTextOverlay::line-alignment</NAME>
-<TYPE>GstTextOverlayLineAlign</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>line alignment</NICK>
-<BLURB>Alignment of text lines relative to each other.</BLURB>
-<DEFAULT>center</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTextOverlay::silent</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>silent</NICK>
-<BLURB>Whether to render the text string.</BLURB>
-<DEFAULT>FALSE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTextOverlay::wait-text</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Wait Text</NICK>
-<BLURB>Whether to wait for subtitles.</BLURB>
-<DEFAULT>TRUE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTextOverlay::auto-resize</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>auto resize</NICK>
-<BLURB>Automatically adjust font size to screen-size.</BLURB>
-<DEFAULT>TRUE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTextOverlay::vertical-render</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>vertical render</NICK>
-<BLURB>Vertical Render.</BLURB>
-<DEFAULT>FALSE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTextOverlay::color</NAME>
-<TYPE>guint</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Color</NICK>
-<BLURB>Color to use for text (big-endian ARGB).</BLURB>
-<DEFAULT>4294967295</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTextOverlay::xpos</NAME>
-<TYPE>gdouble</TYPE>
-<RANGE>[0,1]</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>horizontal position</NICK>
-<BLURB>Horizontal position when using position alignment.</BLURB>
-<DEFAULT>0.5</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstTextOverlay::ypos</NAME>
-<TYPE>gdouble</TYPE>
-<RANGE>[0,1]</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>vertical position</NICK>
-<BLURB>Vertical position when using position alignment.</BLURB>
-<DEFAULT>0.5</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>CDParanoia::abort-on-skip</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Abort on skip</NICK>
-<BLURB>Abort on imperfect reads/skips.</BLURB>
-<DEFAULT>FALSE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>CDParanoia::default-sectors</NAME>
-<TYPE>gint</TYPE>
-<RANGE>[-1,100]</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Default sectors</NICK>
-<BLURB>Force default number of sectors in read to n sectors.</BLURB>
+<NICK>Target Bitrate</NICK>
+<BLURB>Attempt to encode at a bitrate averaging this (in bps). This uses the bitrate management engine, and is not recommended for most users. Quality is a better alternative. (-1 == disabled).</BLURB>
 <DEFAULT>-1</DEFAULT>
 </ARG>
 
 <ARG>
-<NAME>CDParanoia::device</NAME>
-<TYPE>gchararray</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Device</NICK>
-<BLURB>CD device location.</BLURB>
-<DEFAULT>"/dev/cdrom"</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>CDParanoia::discid</NAME>
-<TYPE>gchararray</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>discid</NICK>
-<BLURB>The dics id.</BLURB>
-<DEFAULT>NULL</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>CDParanoia::endian</NAME>
-<TYPE>GstParanoiaEndian</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Endian</NICK>
-<BLURB>Force endian on drive.</BLURB>
-<DEFAULT>treat drive as little endian</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>CDParanoia::generic-device</NAME>
-<TYPE>gchararray</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Generic device</NICK>
-<BLURB>Use specified generic scsi device.</BLURB>
-<DEFAULT>NULL</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>CDParanoia::never-skip</NAME>
-<TYPE>gint</TYPE>
-<RANGE>>= 0</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Never skip</NICK>
-<BLURB>never accept any less than perfect data reconstruction (don't allow 'V's) but if [n] is given, skip after [n] retries without progress.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>CDParanoia::paranoia-mode</NAME>
-<TYPE>GstParanoiaMode</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Paranoia mode</NICK>
-<BLURB>Type of checking to perform.</BLURB>
-<DEFAULT>Disable paranoid checking</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>CDParanoia::read-speed</NAME>
-<TYPE>gint</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Read speed</NICK>
-<BLURB>Read from device at specified speed.</BLURB>
-<DEFAULT>-1</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>CDParanoia::search-overlap</NAME>
-<TYPE>gint</TYPE>
-<RANGE>[-1,75]</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Search overlap</NICK>
-<BLURB>Force minimum overlap search during verification to n sectors.</BLURB>
-<DEFAULT>-1</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>CDParanoia::toc-bias</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>TOC bias</NICK>
-<BLURB>Assume that the beginning offset of track 1 as reported in the TOC will be addressed as LBA 0.  Necessary for some Toshiba drives to get track boundaries.</BLURB>
-<DEFAULT>FALSE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>CDParanoia::toc-offset</NAME>
-<TYPE>gint</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>TOC offset</NICK>
-<BLURB>Add <n> sectors to the values reported.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstAlsaMixerElement::device</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Device</NICK>
-<BLURB>ALSA device, as defined in an asound configuration file.</BLURB>
-<DEFAULT>"default"</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstAlsaMixerElement::device-name</NAME>
+<NAME>GstVorbisEnc::last-message</NAME>
 <TYPE>gchar*</TYPE>
 <RANGE></RANGE>
 <FLAGS>r</FLAGS>
-<NICK>Device name</NICK>
-<BLURB>Human-readable name of the sound device.</BLURB>
-<DEFAULT>""</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstGnomeVFSSink::handle</NAME>
-<TYPE>GnomeVFSHandle*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>GnomeVFSHandle</NICK>
-<BLURB>Handle for GnomeVFS.</BLURB>
-<DEFAULT></DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstGnomeVFSSink::location</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>File Location</NICK>
-<BLURB>Location of the file to write.</BLURB>
+<NICK>last-message</NICK>
+<BLURB>The last status message.</BLURB>
 <DEFAULT>NULL</DEFAULT>
 </ARG>
 
 <ARG>
-<NAME>GstGnomeVFSSink::uri</NAME>
-<TYPE>GnomeVFSURI*</TYPE>
+<NAME>GstVorbisEnc::managed</NAME>
+<TYPE>gboolean</TYPE>
 <RANGE></RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>GnomeVFSURI</NICK>
-<BLURB>URI for GnomeVFS.</BLURB>
-<DEFAULT></DEFAULT>
+<NICK>Managed</NICK>
+<BLURB>Enable bitrate management engine.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstVorbisEnc::max-bitrate</NAME>
+<TYPE>gint</TYPE>
+<RANGE>[G_MAXULONG,250001]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Maximum Bitrate</NICK>
+<BLURB>Specify a maximum bitrate (in bps). Useful for streaming applications. (-1 == disabled).</BLURB>
+<DEFAULT>-1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstVorbisEnc::min-bitrate</NAME>
+<TYPE>gint</TYPE>
+<RANGE>[G_MAXULONG,250001]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Minimum Bitrate</NICK>
+<BLURB>Specify a minimum bitrate (in bps). Useful for encoding for a fixed-size channel. (-1 == disabled).</BLURB>
+<DEFAULT>-1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstVorbisEnc::quality</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[-0.1,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Quality</NICK>
+<BLURB>Specify quality instead of specifying a particular bitrate.</BLURB>
+<DEFAULT>0.3</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstCdParanoiaSrc::cache-size</NAME>
+<TYPE>gint</TYPE>
+<RANGE>>= G_MAXULONG</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Cache size</NICK>
+<BLURB>Set CD cache size to n sectors (-1 = auto).</BLURB>
+<DEFAULT>-1</DEFAULT>
 </ARG>
 
 <ARG>
@@ -2689,1582 +2179,232 @@
 </ARG>
 
 <ARG>
-<NAME>GstCdParanoiaSrc::cache-size</NAME>
-<TYPE>gint</TYPE>
-<RANGE>>= G_MAXULONG</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Cache size</NICK>
-<BLURB>Set CD cache size to n sectors (-1 = auto).</BLURB>
-<DEFAULT>-1</DEFAULT>
+<NAME>GstAlsaSrc::card-name</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>r</FLAGS>
+<NICK>Card name</NICK>
+<BLURB>Human-readable name of the sound card.</BLURB>
+<DEFAULT>""</DEFAULT>
 </ARG>
 
 <ARG>
-<NAME>GstSubParse::subtitle-encoding</NAME>
+<NAME>GstAlsaSrc::device</NAME>
 <TYPE>gchar*</TYPE>
 <RANGE></RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>subtitle charset encoding</NICK>
-<BLURB>Encoding to assume if input subtitles are not in UTF-8 or any other Unicode encoding. If not set, the GST_SUBTITLE_ENCODING environment variable will be checked for an encoding to use. If that is not set either, ISO-8859-15 will be assumed.</BLURB>
-<DEFAULT>NULL</DEFAULT>
+<NICK>Device</NICK>
+<BLURB>ALSA device, as defined in an asound configuration file.</BLURB>
+<DEFAULT>"default"</DEFAULT>
 </ARG>
 
 <ARG>
-<NAME>GstSubParse::video-fps</NAME>
-<TYPE>GstFraction</TYPE>
+<NAME>GstAlsaSrc::device-name</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>r</FLAGS>
+<NICK>Device name</NICK>
+<BLURB>Human-readable name of the sound device.</BLURB>
+<DEFAULT>""</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstAlsaSink::card-name</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>r</FLAGS>
+<NICK>Card name</NICK>
+<BLURB>Human-readable name of the sound card.</BLURB>
+<DEFAULT>""</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstAlsaSink::device</NAME>
+<TYPE>gchar*</TYPE>
 <RANGE></RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>Video framerate</NICK>
-<BLURB>Framerate of the video stream. This is needed by some subtitle formats to synchronize subtitles and video properly. If not set and the subtitle format requires it subtitles may be out of sync.</BLURB>
-<DEFAULT></DEFAULT>
+<NICK>Device</NICK>
+<BLURB>ALSA device, as defined in an asound configuration file.</BLURB>
+<DEFAULT>"default"</DEFAULT>
 </ARG>
 
 <ARG>
-<NAME>GstTheoraParse::synchronization-points</NAME>
-<TYPE>GValueArray*</TYPE>
+<NAME>GstAlsaSink::device-name</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>r</FLAGS>
+<NICK>Device name</NICK>
+<BLURB>Human-readable name of the sound device.</BLURB>
+<DEFAULT>""</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstOggMux::max-delay</NAME>
+<TYPE>guint64</TYPE>
 <RANGE></RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>Synchronization points</NICK>
-<BLURB>An array of (granuletime, buffertime) pairs.</BLURB>
-<DEFAULT></DEFAULT>
+<NICK>Max delay</NICK>
+<BLURB>Maximum delay in multiplexing streams.</BLURB>
+<DEFAULT>500000000</DEFAULT>
 </ARG>
 
 <ARG>
-<NAME>GstGDPPay::crc-header</NAME>
+<NAME>GstOggMux::max-page-delay</NAME>
+<TYPE>guint64</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Max page delay</NICK>
+<BLURB>Maximum delay for sending out a page.</BLURB>
+<DEFAULT>500000000</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstOggMux::max-tolerance</NAME>
+<TYPE>guint64</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Max time tolerance</NICK>
+<BLURB>Maximum timestamp difference for maintaining perfect granules.</BLURB>
+<DEFAULT>40000000</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstOggMux::skeleton</NAME>
 <TYPE>gboolean</TYPE>
 <RANGE></RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>CRC Header</NICK>
-<BLURB>Calculate and store a CRC checksum on the header.</BLURB>
+<NICK>Skeleton</NICK>
+<BLURB>Whether to include a Skeleton track.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstTheoraEnc::bitrate</NAME>
+<TYPE>gint</TYPE>
+<RANGE>[0,16777215]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Bitrate</NICK>
+<BLURB>Compressed video bitrate (kbps).</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstTheoraEnc::cap-overflow</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Cap overflow</NICK>
+<BLURB>Enable capping of bit reservoir overflows.</BLURB>
 <DEFAULT>TRUE</DEFAULT>
 </ARG>
 
 <ARG>
-<NAME>GstGDPPay::crc-payload</NAME>
+<NAME>GstTheoraEnc::cap-underflow</NAME>
 <TYPE>gboolean</TYPE>
 <RANGE></RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>CRC Payload</NICK>
-<BLURB>Calculate and store a CRC checksum on the payload.</BLURB>
+<NICK>Cap underflow</NICK>
+<BLURB>Enable capping of bit reservoir underflows.</BLURB>
 <DEFAULT>FALSE</DEFAULT>
 </ARG>
 
 <ARG>
-<NAME>GstGDPPay::version</NAME>
-<TYPE>GstDPVersion</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Version</NICK>
-<BLURB>Version of the GStreamer Data Protocol.</BLURB>
-<DEFAULT>GST_DP_VERSION_1_0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstDecodeBin2::caps</NAME>
-<TYPE>GstCaps*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Caps</NICK>
-<BLURB>The caps on which to stop decoding.</BLURB>
-<DEFAULT></DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstDecodeBin2::subtitle-encoding</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>subtitle encoding</NICK>
-<BLURB>Encoding to assume if input subtitles are not in UTF-8 encoding. If not set, the GST_SUBTITLE_ENCODING environment variable will be checked for an encoding to use. If that is not set either, ISO-8859-15 will be assumed.</BLURB>
-<DEFAULT>NULL</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstDecodeBin2::sink-caps</NAME>
-<TYPE>GstCaps*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Sink Caps</NICK>
-<BLURB>The caps of the input data. (NULL = use typefind element).</BLURB>
-<DEFAULT></DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstDecodeBin2::high-percent</NAME>
-<TYPE>gint</TYPE>
-<RANGE>[0,100]</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>High percent</NICK>
-<BLURB>High threshold for buffering to finish.</BLURB>
-<DEFAULT>99</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstDecodeBin2::low-percent</NAME>
-<TYPE>gint</TYPE>
-<RANGE>[0,100]</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Low percent</NICK>
-<BLURB>Low threshold for buffering to start.</BLURB>
-<DEFAULT>10</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstDecodeBin2::max-size-buffers</NAME>
-<TYPE>guint</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Max. size (buffers)</NICK>
-<BLURB>Max. number of buffers in the queue (0=automatic).</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstDecodeBin2::max-size-bytes</NAME>
-<TYPE>guint</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Max. size (bytes)</NICK>
-<BLURB>Max. amount of bytes in the queue (0=automatic).</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstDecodeBin2::max-size-time</NAME>
-<TYPE>guint64</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Max. size (ns)</NICK>
-<BLURB>Max. amount of data in the queue (in ns, 0=automatic).</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstDecodeBin2::use-buffering</NAME>
+<NAME>GstTheoraEnc::drop-frames</NAME>
 <TYPE>gboolean</TYPE>
 <RANGE></RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>Use Buffering</NICK>
-<BLURB>Emit GST_MESSAGE_BUFFERING based on low-/high-percent thresholds.</BLURB>
-<DEFAULT>FALSE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstDecodeBin2::post-stream-topology</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Post Stream Topology</NICK>
-<BLURB>Post stream-topology messages.</BLURB>
-<DEFAULT>FALSE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstDecodeBin2::expose-all-streams</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Expose All Streams</NICK>
-<BLURB>Expose all streams, including those of unknown type or that don't match the 'caps' property.</BLURB>
+<NICK>Drop frames</NICK>
+<BLURB>Allow or disallow frame dropping.</BLURB>
 <DEFAULT>TRUE</DEFAULT>
 </ARG>
 
 <ARG>
-<NAME>GstURIDecodeBin::uri</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>URI</NICK>
-<BLURB>URI to decode.</BLURB>
-<DEFAULT>NULL</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstURIDecodeBin::connection-speed</NAME>
-<TYPE>guint64</TYPE>
-<RANGE><= 18446744073709551</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Connection Speed</NICK>
-<BLURB>Network connection speed in kbps (0 = unknown).</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstURIDecodeBin::caps</NAME>
-<TYPE>GstCaps*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Caps</NICK>
-<BLURB>The caps on which to stop decoding. (NULL = default).</BLURB>
-<DEFAULT></DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstURIDecodeBin::subtitle-encoding</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>subtitle encoding</NICK>
-<BLURB>Encoding to assume if input subtitles are not in UTF-8 encoding. If not set, the GST_SUBTITLE_ENCODING environment variable will be checked for an encoding to use. If that is not set either, ISO-8859-15 will be assumed.</BLURB>
-<DEFAULT>NULL</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstURIDecodeBin::source</NAME>
-<TYPE>GstElement*</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>Source</NICK>
-<BLURB>Source object used.</BLURB>
-<DEFAULT></DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstURIDecodeBin::buffer-duration</NAME>
-<TYPE>gint64</TYPE>
-<RANGE>>= G_MAXULONG</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Buffer duration (ns)</NICK>
-<BLURB>Buffer duration when buffering streams (-1 default value).</BLURB>
-<DEFAULT>-1</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstURIDecodeBin::buffer-size</NAME>
-<TYPE>gint</TYPE>
-<RANGE>>= G_MAXULONG</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Buffer size (bytes)</NICK>
-<BLURB>Buffer size when buffering streams (-1 default value).</BLURB>
-<DEFAULT>-1</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstURIDecodeBin::download</NAME>
+<NAME>GstTheoraEnc::keyframe-auto</NAME>
 <TYPE>gboolean</TYPE>
 <RANGE></RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>Download</NICK>
-<BLURB>Attempt download buffering when buffering network streams.</BLURB>
-<DEFAULT>FALSE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstURIDecodeBin::use-buffering</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Use Buffering</NICK>
-<BLURB>Perform buffering on demuxed/parsed media.</BLURB>
-<DEFAULT>FALSE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstURIDecodeBin::expose-all-streams</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Expose All Streams</NICK>
-<BLURB>Expose all streams, including those of unknown type or that don't match the 'caps' property.</BLURB>
+<NICK>Keyframe Auto</NICK>
+<BLURB>Automatic keyframe detection.</BLURB>
 <DEFAULT>TRUE</DEFAULT>
 </ARG>
 
 <ARG>
-<NAME>GstURIDecodeBin::ring-buffer-max-size</NAME>
-<TYPE>guint64</TYPE>
-<RANGE><= G_MAXUINT</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Max. ring buffer size (bytes)</NICK>
-<BLURB>Max. amount of data in the ring buffer (bytes, 0 = ring buffer disabled).</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstQueue2::current-level-buffers</NAME>
-<TYPE>guint</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>Current level (buffers)</NICK>
-<BLURB>Current number of buffers in the queue.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstQueue2::current-level-bytes</NAME>
-<TYPE>guint</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>Current level (kB)</NICK>
-<BLURB>Current amount of data in the queue (bytes).</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstQueue2::current-level-time</NAME>
-<TYPE>guint64</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>Current level (ns)</NICK>
-<BLURB>Current amount of data in the queue (in ns).</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstQueue2::high-percent</NAME>
+<NAME>GstTheoraEnc::keyframe-force</NAME>
 <TYPE>gint</TYPE>
-<RANGE>[0,100]</RANGE>
+<RANGE>[1,32768]</RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>High percent</NICK>
-<BLURB>High threshold for buffering to finish.</BLURB>
-<DEFAULT>99</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstQueue2::low-percent</NAME>
-<TYPE>gint</TYPE>
-<RANGE>[0,100]</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Low percent</NICK>
-<BLURB>Low threshold for buffering to start.</BLURB>
-<DEFAULT>10</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstQueue2::max-size-buffers</NAME>
-<TYPE>guint</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Max. size (buffers)</NICK>
-<BLURB>Max. number of buffers in the queue (0=disable).</BLURB>
-<DEFAULT>100</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstQueue2::max-size-bytes</NAME>
-<TYPE>guint</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Max. size (kB)</NICK>
-<BLURB>Max. amount of data in the queue (bytes, 0=disable).</BLURB>
-<DEFAULT>2097152</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstQueue2::max-size-time</NAME>
-<TYPE>guint64</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Max. size (ns)</NICK>
-<BLURB>Max. amount of data in the queue (in ns, 0=disable).</BLURB>
-<DEFAULT>2000000000</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstQueue2::temp-location</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Temporary File Location</NICK>
-<BLURB>Location to store temporary files in (Deprecated: Only read this property, use temp-tmpl to configure the name template).</BLURB>
-<DEFAULT>NULL</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstQueue2::use-buffering</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Use buffering</NICK>
-<BLURB>Emit GST_MESSAGE_BUFFERING based on low-/high-percent thresholds.</BLURB>
-<DEFAULT>FALSE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstQueue2::use-rate-estimate</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Use Rate Estimate</NICK>
-<BLURB>Estimate the bitrate of the stream to calculate time level.</BLURB>
-<DEFAULT>TRUE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstQueue2::temp-template</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Temporary File Template</NICK>
-<BLURB>File template to store temporary files in, should contain directory and XXXXXX. (NULL == disabled).</BLURB>
-<DEFAULT>NULL</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstAudioConvert::dithering</NAME>
-<TYPE>GstAudioConvertDithering</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Dithering</NICK>
-<BLURB>Selects between different dithering methods.</BLURB>
-<DEFAULT>Triangular dithering (default)</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstAudioConvert::noise-shaping</NAME>
-<TYPE>GstAudioConvertNoiseShaping</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Noise shaping</NICK>
-<BLURB>Selects between different noise shaping methods.</BLURB>
-<DEFAULT>No noise shaping (default)</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin2::audio-sink</NAME>
-<TYPE>GstElement*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Audio Sink</NICK>
-<BLURB>the audio output element to use (NULL = default sink).</BLURB>
-<DEFAULT></DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin2::connection-speed</NAME>
-<TYPE>guint</TYPE>
-<RANGE><= 4294967</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Connection Speed</NICK>
-<BLURB>Network connection speed in kbps (0 = unknown).</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin2::current-audio</NAME>
-<TYPE>gint</TYPE>
-<RANGE>>= -1</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Current audio</NICK>
-<BLURB>Currently playing audio stream (-1 = auto).</BLURB>
-<DEFAULT>-1</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin2::current-text</NAME>
-<TYPE>gint</TYPE>
-<RANGE>>= -1</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Current Text</NICK>
-<BLURB>Currently playing text stream (-1 = auto).</BLURB>
-<DEFAULT>-1</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin2::current-video</NAME>
-<TYPE>gint</TYPE>
-<RANGE>>= -1</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Current Video</NICK>
-<BLURB>Currently playing video stream (-1 = auto).</BLURB>
-<DEFAULT>-1</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin2::flags</NAME>
-<TYPE>GstPlayFlags</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Flags</NICK>
-<BLURB>Flags to control behaviour.</BLURB>
-<DEFAULT>Render the video stream|Render the audio stream|Render subtitles|Use software volume</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin2::frame</NAME>
-<TYPE>GstBuffer*</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>Frame</NICK>
-<BLURB>The last frame (NULL = no video available).</BLURB>
-<DEFAULT></DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin2::n-audio</NAME>
-<TYPE>gint</TYPE>
-<RANGE>>= 0</RANGE>
-<FLAGS>r</FLAGS>
-<NICK>Number Audio</NICK>
-<BLURB>Total number of audio streams.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin2::n-text</NAME>
-<TYPE>gint</TYPE>
-<RANGE>>= 0</RANGE>
-<FLAGS>r</FLAGS>
-<NICK>Number Text</NICK>
-<BLURB>Total number of text streams.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin2::n-video</NAME>
-<TYPE>gint</TYPE>
-<RANGE>>= 0</RANGE>
-<FLAGS>r</FLAGS>
-<NICK>Number Video</NICK>
-<BLURB>Total number of video streams.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin2::source</NAME>
-<TYPE>GstElement*</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>Source</NICK>
-<BLURB>Source element.</BLURB>
-<DEFAULT></DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin2::subtitle-encoding</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>subtitle encoding</NICK>
-<BLURB>Encoding to assume if input subtitles are not in UTF-8 encoding. If not set, the GST_SUBTITLE_ENCODING environment variable will be checked for an encoding to use. If that is not set either, ISO-8859-15 will be assumed.</BLURB>
-<DEFAULT>NULL</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin2::subtitle-font-desc</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>w</FLAGS>
-<NICK>Subtitle font description</NICK>
-<BLURB>Pango font description of font to be used for subtitle rendering.</BLURB>
-<DEFAULT>NULL</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin2::suburi</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>.sub-URI</NICK>
-<BLURB>Optional URI of a subtitle.</BLURB>
-<DEFAULT>NULL</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin2::uri</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>URI</NICK>
-<BLURB>URI of the media to play.</BLURB>
-<DEFAULT>NULL</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin2::video-sink</NAME>
-<TYPE>GstElement*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Video Sink</NICK>
-<BLURB>the video output element to use (NULL = default sink).</BLURB>
-<DEFAULT></DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin2::vis-plugin</NAME>
-<TYPE>GstElement*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Vis plugin</NICK>
-<BLURB>the visualization element to use (NULL = default).</BLURB>
-<DEFAULT></DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin2::volume</NAME>
-<TYPE>gdouble</TYPE>
-<RANGE>[0,10]</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Volume</NICK>
-<BLURB>The audio volume, 1.0=100%.</BLURB>
-<DEFAULT>1</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin2::mute</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Mute</NICK>
-<BLURB>Mute the audio channel without changing the volume.</BLURB>
-<DEFAULT>FALSE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin2::buffer-duration</NAME>
-<TYPE>gint64</TYPE>
-<RANGE>>= -1</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Buffer duration (ns)</NICK>
-<BLURB>Buffer duration when buffering network streams.</BLURB>
-<DEFAULT>-1</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin2::buffer-size</NAME>
-<TYPE>gint</TYPE>
-<RANGE>>= -1</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Buffer size (bytes)</NICK>
-<BLURB>Buffer size when buffering network streams.</BLURB>
-<DEFAULT>-1</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin2::text-sink</NAME>
-<TYPE>GstElement*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Text plugin</NICK>
-<BLURB>the text output element to use (NULL = default textoverlay).</BLURB>
-<DEFAULT></DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin2::subpic-sink</NAME>
-<TYPE>GstElement*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Subpicture plugin</NICK>
-<BLURB>the subpicture output element to use (NULL = default dvdspu).</BLURB>
-<DEFAULT></DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin2::av-offset</NAME>
-<TYPE>gint64</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>AV Offset</NICK>
-<BLURB>The synchronisation offset between audio and video in nanoseconds.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBin2::ring-buffer-max-size</NAME>
-<TYPE>guint64</TYPE>
-<RANGE><= G_MAXULONG</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Max. ring buffer size (bytes)</NICK>
-<BLURB>Max. amount of data in the ring buffer (bytes, 0 = ring buffer disabled).</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstGioSink::location</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Location</NICK>
-<BLURB>URI location to write to.</BLURB>
-<DEFAULT>NULL</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstGioSink::file</NAME>
-<TYPE>GFile*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>File</NICK>
-<BLURB>GFile to write to.</BLURB>
-<DEFAULT></DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstGioSrc::location</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Location</NICK>
-<BLURB>URI location to read from.</BLURB>
-<DEFAULT>NULL</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstGioSrc::file</NAME>
-<TYPE>GFile*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>File</NICK>
-<BLURB>GFile to read from.</BLURB>
-<DEFAULT></DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstGioStreamSink::stream</NAME>
-<TYPE>GOutputStream*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Stream</NICK>
-<BLURB>Stream to write to.</BLURB>
-<DEFAULT></DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstGioStreamSrc::stream</NAME>
-<TYPE>GInputStream*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Stream</NICK>
-<BLURB>Stream to read from.</BLURB>
-<DEFAULT></DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBaseBin::connection-speed</NAME>
-<TYPE>guint</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Connection Speed</NICK>
-<BLURB>Network connection speed in kbps (0 = unknown).</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBaseBin::current-audio</NAME>
-<TYPE>gint</TYPE>
-<RANGE>>= -1</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Current audio</NICK>
-<BLURB>Currently playing audio stream (-1 = none).</BLURB>
-<DEFAULT>-1</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBaseBin::current-text</NAME>
-<TYPE>gint</TYPE>
-<RANGE>>= -1</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Current text</NICK>
-<BLURB>Currently playing text stream (-1 = none).</BLURB>
-<DEFAULT>-1</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBaseBin::current-video</NAME>
-<TYPE>gint</TYPE>
-<RANGE>>= -1</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Current video</NICK>
-<BLURB>Currently playing video stream (-1 = none).</BLURB>
-<DEFAULT>-1</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBaseBin::nstreams</NAME>
-<TYPE>gint</TYPE>
-<RANGE>>= 0</RANGE>
-<FLAGS>r</FLAGS>
-<NICK>NStreams</NICK>
-<BLURB>number of streams.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBaseBin::queue-min-threshold</NAME>
-<TYPE>guint64</TYPE>
-<RANGE><= G_MAXINT64</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Queue min threshold</NICK>
-<BLURB>Buffering low threshold of internal queues in nanoseconds.</BLURB>
-<DEFAULT>900000000</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBaseBin::queue-size</NAME>
-<TYPE>guint64</TYPE>
-<RANGE><= G_MAXINT64</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Queue size</NICK>
-<BLURB>Size of internal queues in nanoseconds.</BLURB>
-<DEFAULT>3000000000</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBaseBin::queue-threshold</NAME>
-<TYPE>guint64</TYPE>
-<RANGE><= G_MAXINT64</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Queue threshold</NICK>
-<BLURB>Buffering threshold of internal queues in nanoseconds.</BLURB>
-<DEFAULT>2850000000</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBaseBin::source</NAME>
-<TYPE>GstElement*</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>Source</NICK>
-<BLURB>Source element.</BLURB>
-<DEFAULT></DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBaseBin::stream-info</NAME>
-<TYPE>gpointer</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>Stream info</NICK>
-<BLURB>List of streaminfo.</BLURB>
-<DEFAULT></DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBaseBin::stream-info-value-array</NAME>
-<TYPE>GValueArray*</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>StreamInfo GValueArray</NICK>
-<BLURB>value array of streaminfo.</BLURB>
-<DEFAULT></DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBaseBin::subtitle-encoding</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>subtitle encoding</NICK>
-<BLURB>Encoding to assume if input subtitles are not in UTF-8 encoding. If not set, the GST_SUBTITLE_ENCODING environment variable will be checked for an encoding to use. If that is not set either, ISO-8859-15 will be assumed.</BLURB>
-<DEFAULT>NULL</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBaseBin::suburi</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>.sub-URI</NICK>
-<BLURB>Optional URI of a subtitle.</BLURB>
-<DEFAULT>NULL</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlayBaseBin::uri</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>URI</NICK>
-<BLURB>URI of the media to play.</BLURB>
-<DEFAULT>NULL</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstSpeexResample::filter-length</NAME>
-<TYPE>gint</TYPE>
-<RANGE>>= 0</RANGE>
-<FLAGS>rwx</FLAGS>
-<NICK>Filter length</NICK>
-<BLURB>DEPRECATED, DON'T USE THIS! Length of the resample filter.</BLURB>
+<NICK>Keyframe force</NICK>
+<BLURB>Force keyframe every N frames.</BLURB>
 <DEFAULT>64</DEFAULT>
 </ARG>
 
 <ARG>
-<NAME>GstSpeexResample::quality</NAME>
+<NAME>GstTheoraEnc::keyframe-freq</NAME>
 <TYPE>gint</TYPE>
-<RANGE>[0,10]</RANGE>
-<FLAGS>rwx</FLAGS>
-<NICK>Quality</NICK>
-<BLURB>Resample quality with 0 being the lowest and 10 being the best.</BLURB>
-<DEFAULT>4</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstClockOverlay::time-format</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
+<RANGE>[1,32768]</RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>Date/Time Format</NICK>
-<BLURB>Format to use for time and date value, as in strftime.</BLURB>
-<DEFAULT>"%H:%M:%S"</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstAppSink::caps</NAME>
-<TYPE>GstCaps*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Caps</NICK>
-<BLURB>The allowed caps for the sink pad.</BLURB>
-<DEFAULT></DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstAppSink::drop</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Drop</NICK>
-<BLURB>Drop old buffers when the buffer queue is filled.</BLURB>
-<DEFAULT>FALSE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstAppSink::emit-signals</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Emit signals</NICK>
-<BLURB>Emit new-preroll and new-sample signals.</BLURB>
-<DEFAULT>FALSE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstAppSink::eos</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>EOS</NICK>
-<BLURB>Check if the sink is EOS or not started.</BLURB>
-<DEFAULT>TRUE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstAppSink::max-buffers</NAME>
-<TYPE>guint</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Max Buffers</NICK>
-<BLURB>The maximum number of buffers to queue internally (0 = unlimited).</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstAppSrc::block</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Block</NICK>
-<BLURB>Block push-buffer when max-bytes are queued.</BLURB>
-<DEFAULT>FALSE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstAppSrc::caps</NAME>
-<TYPE>GstCaps*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Caps</NICK>
-<BLURB>The allowed caps for the src pad.</BLURB>
-<DEFAULT></DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstAppSrc::format</NAME>
-<TYPE>GstFormat</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Format</NICK>
-<BLURB>The format of the segment events and seek.</BLURB>
-<DEFAULT>GST_FORMAT_BYTES</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstAppSrc::is-live</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Is Live</NICK>
-<BLURB>Whether to act as a live source.</BLURB>
-<DEFAULT>FALSE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstAppSrc::max-bytes</NAME>
-<TYPE>guint64</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Max bytes</NICK>
-<BLURB>The maximum number of bytes to queue internally (0 = unlimited).</BLURB>
-<DEFAULT>200000</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstAppSrc::max-latency</NAME>
-<TYPE>gint64</TYPE>
-<RANGE>>= G_MAXULONG</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Max Latency</NICK>
-<BLURB>The maximum latency (-1 = unlimited).</BLURB>
-<DEFAULT>-1</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstAppSrc::min-latency</NAME>
-<TYPE>gint64</TYPE>
-<RANGE>>= G_MAXULONG</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Min Latency</NICK>
-<BLURB>The minimum latency (-1 = default).</BLURB>
-<DEFAULT>-1</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstAppSrc::size</NAME>
-<TYPE>gint64</TYPE>
-<RANGE>>= G_MAXULONG</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Size</NICK>
-<BLURB>The size of the data stream in bytes (-1 if unknown).</BLURB>
-<DEFAULT>-1</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstAppSrc::stream-type</NAME>
-<TYPE>GstAppStreamType</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Stream Type</NICK>
-<BLURB>the type of the stream.</BLURB>
-<DEFAULT>GST_APP_STREAM_TYPE_STREAM</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstAppSrc::emit-signals</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Emit signals</NICK>
-<BLURB>Emit need-data, enough-data and seek-data signals.</BLURB>
-<DEFAULT>TRUE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstAppSrc::min-percent</NAME>
-<TYPE>guint</TYPE>
-<RANGE><= 100</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Min Percent</NICK>
-<BLURB>Emit need-data when queued bytes drops below this percent of max-bytes.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstAppSrc::current-level-bytes</NAME>
-<TYPE>guint64</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>Current Level Bytes</NICK>
-<BLURB>The number of currently queued bytes.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstAudioResample::filter-length</NAME>
-<TYPE>gint</TYPE>
-<RANGE>>= 0</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Filter length</NICK>
-<BLURB>Length of the resample filter.</BLURB>
+<NICK>Keyframe frequency</NICK>
+<BLURB>Keyframe frequency.</BLURB>
 <DEFAULT>64</DEFAULT>
 </ARG>
 
 <ARG>
-<NAME>GstAudioResample::quality</NAME>
-<TYPE>gint</TYPE>
-<RANGE>[0,10]</RANGE>
-<FLAGS>rwx</FLAGS>
-<NICK>Quality</NICK>
-<BLURB>Resample quality with 0 being the lowest and 10 being the best.</BLURB>
-<DEFAULT>4</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstAudioResample::sinc-filter-auto-threshold</NAME>
-<TYPE>guint</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Sinc filter auto mode threshold</NICK>
-<BLURB>Memory usage threshold to use if sinc filter mode is AUTO, given in bytes.</BLURB>
-<DEFAULT>1048576</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstAudioResample::sinc-filter-mode</NAME>
-<TYPE>SpeexResamplerSincFilterMode</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Sinc filter table mode</NICK>
-<BLURB>What sinc filter table mode to use.</BLURB>
-<DEFAULT>Use full table if table size below threshold</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstAdder::caps</NAME>
-<TYPE>GstCaps*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Target caps</NICK>
-<BLURB>Set target format for mixing (NULL means ANY). Setting this property takes a reference to the supplied GstCaps object.</BLURB>
-<DEFAULT></DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlaySink::flags</NAME>
-<TYPE>GstPlayFlags</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Flags</NICK>
-<BLURB>Flags to control behaviour.</BLURB>
-<DEFAULT>Render the video stream|Render the audio stream|Render subtitles|Use software volume|Use software color balance</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlaySink::mute</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Mute</NICK>
-<BLURB>Mute the audio channel without changing the volume.</BLURB>
-<DEFAULT>FALSE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlaySink::subtitle-font-desc</NAME>
+<NAME>GstTheoraEnc::multipass-cache-file</NAME>
 <TYPE>gchar*</TYPE>
 <RANGE></RANGE>
-<FLAGS>w</FLAGS>
-<NICK>Subtitle font description</NICK>
-<BLURB>Pango font description of font to be used for subtitle rendering.</BLURB>
+<FLAGS>rw</FLAGS>
+<NICK>Multipass Cache File</NICK>
+<BLURB>Multipass cache file.</BLURB>
 <DEFAULT>NULL</DEFAULT>
 </ARG>
 
 <ARG>
-<NAME>GstPlaySink::vis-plugin</NAME>
-<TYPE>GstElement*</TYPE>
+<NAME>GstTheoraEnc::multipass-mode</NAME>
+<TYPE>GstTheoraEncMultipassMode</TYPE>
 <RANGE></RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>Vis plugin</NICK>
-<BLURB>the visualization element to use (NULL = default).</BLURB>
-<DEFAULT></DEFAULT>
+<NICK>Multipass mode</NICK>
+<BLURB>Single pass or first/second pass.</BLURB>
+<DEFAULT>Single pass</DEFAULT>
 </ARG>
 
 <ARG>
-<NAME>GstPlaySink::volume</NAME>
-<TYPE>gdouble</TYPE>
-<RANGE>[0,10]</RANGE>
+<NAME>GstTheoraEnc::quality</NAME>
+<TYPE>gint</TYPE>
+<RANGE>[0,63]</RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>Volume</NICK>
-<BLURB>The audio volume, 1.0=100%.</BLURB>
+<NICK>Quality</NICK>
+<BLURB>Video quality.</BLURB>
+<DEFAULT>48</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstTheoraEnc::rate-buffer</NAME>
+<TYPE>gint</TYPE>
+<RANGE>[0,1000]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Rate Control Buffer</NICK>
+<BLURB>Sets the size of the rate control buffer, in units of frames.  The default value of 0 instructs the encoder to automatically select an appropriate value.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstTheoraEnc::speed-level</NAME>
+<TYPE>gint</TYPE>
+<RANGE>[0,3]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Speed level</NICK>
+<BLURB>Controls the amount of motion vector searching done while encoding.</BLURB>
 <DEFAULT>1</DEFAULT>
 </ARG>
 
 <ARG>
-<NAME>GstPlaySink::subtitle-encoding</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>subtitle encoding</NICK>
-<BLURB>Encoding to assume if input subtitles are not in UTF-8 encoding. If not set, the GST_SUBTITLE_ENCODING environment variable will be checked for an encoding to use. If that is not set either, ISO-8859-15 will be assumed.</BLURB>
-<DEFAULT>NULL</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlaySink::av-offset</NAME>
-<TYPE>gint64</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>AV Offset</NICK>
-<BLURB>The synchronisation offset between audio and video in nanoseconds.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlaySink::frame</NAME>
-<TYPE>GstBuffer*</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>Frame</NICK>
-<BLURB>The last frame (NULL = no video available).</BLURB>
-<DEFAULT></DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlaySink::audio-sink</NAME>
-<TYPE>GstElement*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Audio Sink</NICK>
-<BLURB>the audio output element to use (NULL = default sink).</BLURB>
-<DEFAULT></DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlaySink::sample</NAME>
-<TYPE>GstSample*</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>Sample</NICK>
-<BLURB>The last sample (NULL = no video available).</BLURB>
-<DEFAULT></DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlaySink::text-sink</NAME>
-<TYPE>GstElement*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Text sink</NICK>
-<BLURB>the text output element to use (NULL = default subtitleoverlay).</BLURB>
-<DEFAULT></DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlaySink::video-sink</NAME>
-<TYPE>GstElement*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Video Sink</NICK>
-<BLURB>the video output element to use (NULL = default sink).</BLURB>
-<DEFAULT></DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlaySink::send-event-mode</NAME>
-<TYPE>GstPlaySinkSendEventMode</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Send event mode</NICK>
-<BLURB>How to send events received in send_event function.</BLURB>
-<DEFAULT>Default GstBin's send_event handling (default)</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstPlaySink::force-aspect-ratio</NAME>
+<NAME>GstTheoraEnc::vp3-compatible</NAME>
 <TYPE>gboolean</TYPE>
 <RANGE></RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>Force Aspect Ratio</NICK>
-<BLURB>When enabled, scaling will respect original aspect ratio.</BLURB>
-<DEFAULT>TRUE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstSubtitleOverlay::font-desc</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Subtitle font description</NICK>
-<BLURB>Pango font description of font to be used for subtitle rendering.</BLURB>
-<DEFAULT>NULL</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstSubtitleOverlay::silent</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Silent</NICK>
-<BLURB>Whether to show subtitles.</BLURB>
+<NICK>VP3 compatible</NICK>
+<BLURB>Disables non-VP3 compatible features.</BLURB>
 <DEFAULT>FALSE</DEFAULT>
 </ARG>
 
-<ARG>
-<NAME>GstSubtitleOverlay::subtitle-encoding</NAME>
-<TYPE>gchar*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>subtitle encoding</NICK>
-<BLURB>Encoding to assume if input subtitles are not in UTF-8 encoding. If not set, the GST_SUBTITLE_ENCODING environment variable will be checked for an encoding to use. If that is not set either, ISO-8859-15 will be assumed.</BLURB>
-<DEFAULT>NULL</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstEncodeBin::audio-jitter-tolerance</NAME>
-<TYPE>guint64</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Audio jitter tolerance</NICK>
-<BLURB>Amount of timestamp jitter/imperfection to allow on audio streams before inserting/dropping samples (ns).</BLURB>
-<DEFAULT>20000000</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstEncodeBin::avoid-reencoding</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Avoid re-encoding</NICK>
-<BLURB>Whether to re-encode portions of compatible video streams that lay on segment boundaries.</BLURB>
-<DEFAULT>FALSE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstEncodeBin::profile</NAME>
-<TYPE>GstEncodingProfile*</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Profile</NICK>
-<BLURB>The GstEncodingProfile to use.</BLURB>
-<DEFAULT></DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstEncodeBin::queue-buffers-max</NAME>
-<TYPE>guint</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Max. size (buffers)</NICK>
-<BLURB>Max. number of buffers in the queue (0=disable).</BLURB>
-<DEFAULT>200</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstEncodeBin::queue-bytes-max</NAME>
-<TYPE>guint</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Max. size (kB)</NICK>
-<BLURB>Max. amount of data in the queue (bytes, 0=disable).</BLURB>
-<DEFAULT>10485760</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstEncodeBin::queue-time-max</NAME>
-<TYPE>guint64</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Max. size (ns)</NICK>
-<BLURB>Max. amount of data in the queue (in ns, 0=disable).</BLURB>
-<DEFAULT>1000000000</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstEncodeBin::flags</NAME>
-<TYPE>GstEncodeBinFlags</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Flags</NICK>
-<BLURB>Flags to control behaviour.</BLURB>
-<DEFAULT></DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstMultiSocketSink::buffers-max</NAME>
-<TYPE>gint</TYPE>
-<RANGE>>= G_MAXULONG</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Buffers max</NICK>
-<BLURB>max number of buffers to queue for a client (-1 = no limit).</BLURB>
-<DEFAULT>-1</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstMultiSocketSink::buffers-min</NAME>
-<TYPE>gint</TYPE>
-<RANGE>>= G_MAXULONG</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Buffers min</NICK>
-<BLURB>min number of buffers to queue (-1 = as few as possible).</BLURB>
-<DEFAULT>-1</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstMultiSocketSink::buffers-queued</NAME>
-<TYPE>guint</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>Buffers queued</NICK>
-<BLURB>Number of buffers currently queued.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstMultiSocketSink::buffers-soft-max</NAME>
-<TYPE>gint</TYPE>
-<RANGE>>= G_MAXULONG</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Buffers soft max</NICK>
-<BLURB>Recover client when going over this limit (-1 = no limit).</BLURB>
-<DEFAULT>-1</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstMultiSocketSink::burst-format</NAME>
-<TYPE>GstFormat</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Burst format</NICK>
-<BLURB>The format of the burst units (when sync-method is burst[[-with]-keyframe]).</BLURB>
-<DEFAULT>GST_FORMAT_UNDEFINED</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstMultiSocketSink::burst-value</NAME>
-<TYPE>guint64</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Burst value</NICK>
-<BLURB>The amount of burst expressed in burst-unit.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstMultiSocketSink::bytes-min</NAME>
-<TYPE>gint</TYPE>
-<RANGE>>= G_MAXULONG</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Bytes min</NICK>
-<BLURB>min number of bytes to queue (-1 = as little as possible).</BLURB>
-<DEFAULT>-1</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstMultiSocketSink::bytes-served</NAME>
-<TYPE>guint64</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>Bytes served</NICK>
-<BLURB>Total number of bytes send to all clients.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstMultiSocketSink::bytes-to-serve</NAME>
-<TYPE>guint64</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>Bytes to serve</NICK>
-<BLURB>Number of bytes received to serve to clients.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstMultiSocketSink::handle-read</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Handle Read</NICK>
-<BLURB>Handle client reads and discard the data.</BLURB>
-<DEFAULT>TRUE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstMultiSocketSink::num-sockets</NAME>
-<TYPE>guint</TYPE>
-<RANGE></RANGE>
-<FLAGS>r</FLAGS>
-<NICK>Number of sockets</NICK>
-<BLURB>The current number of client sockets.</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstMultiSocketSink::qos-dscp</NAME>
-<TYPE>gint</TYPE>
-<RANGE>[G_MAXULONG,63]</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>QoS diff srv code point</NICK>
-<BLURB>Quality of Service, differentiated services code point (-1 default).</BLURB>
-<DEFAULT>-1</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstMultiSocketSink::recover-policy</NAME>
-<TYPE>GstMultiSocketSinkRecoverPolicy</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Recover Policy</NICK>
-<BLURB>How to recover when client reaches the soft max.</BLURB>
-<DEFAULT>Do not try to recover</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstMultiSocketSink::resend-streamheader</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Resend streamheader</NICK>
-<BLURB>Resend the streamheader if it changes in the caps.</BLURB>
-<DEFAULT>TRUE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstMultiSocketSink::sync-method</NAME>
-<TYPE>GstMultiSocketSinkSyncMethod</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Sync Method</NICK>
-<BLURB>How to sync new clients to the stream.</BLURB>
-<DEFAULT>Serve starting from the latest buffer</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstMultiSocketSink::time-min</NAME>
-<TYPE>gint64</TYPE>
-<RANGE>>= G_MAXULONG</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Time min</NICK>
-<BLURB>min number of time to queue (-1 = as little as possible).</BLURB>
-<DEFAULT>-1</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstMultiSocketSink::timeout</NAME>
-<TYPE>guint64</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Timeout</NICK>
-<BLURB>Maximum inactivity timeout in nanoseconds for a client (0 = no limit).</BLURB>
-<DEFAULT>0</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstMultiSocketSink::unit-type</NAME>
-<TYPE>GstFormat</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Units type</NICK>
-<BLURB>The unit to measure the max/soft-max/queued properties.</BLURB>
-<DEFAULT>GST_FORMAT_BUFFERS</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstMultiSocketSink::units-max</NAME>
-<TYPE>gint64</TYPE>
-<RANGE>>= G_MAXULONG</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Units max</NICK>
-<BLURB>max number of units to queue (-1 = no limit).</BLURB>
-<DEFAULT>-1</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstMultiSocketSink::units-soft-max</NAME>
-<TYPE>gint64</TYPE>
-<RANGE>>= G_MAXULONG</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Units soft max</NICK>
-<BLURB>Recover client when going over this limit (-1 = no limit).</BLURB>
-<DEFAULT>-1</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>GstVideoConvert::dither</NAME>
-<TYPE>GstVideoConvertDitherMethod</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Dither</NICK>
-<BLURB>Apply dithering while converting.</BLURB>
-<DEFAULT>No dithering (default)</DEFAULT>
-</ARG>
-
diff --git a/docs/plugins/gst-plugins-base-plugins.hierarchy b/docs/plugins/gst-plugins-base-plugins.hierarchy
index a3eee22..32d2ae1 100644
--- a/docs/plugins/gst-plugins-base-plugins.hierarchy
+++ b/docs/plugins/gst-plugins-base-plugins.hierarchy
@@ -108,6 +108,7 @@
       GstPadTemplate
       GstPlugin
       GstPluginFeature
+        GstDeviceMonitorFactory
         GstElementFactory
         GstTypeFindFactory
       GstRegistry
diff --git a/docs/plugins/gst-plugins-base-plugins.signals b/docs/plugins/gst-plugins-base-plugins.signals
index 6d2190c..74e285f 100644
--- a/docs/plugins/gst-plugins-base-plugins.signals
+++ b/docs/plugins/gst-plugins-base-plugins.signals
@@ -1,286 +1,4 @@
 <SIGNAL>
-<NAME>GstMultiFdSink::add</NAME>
-<RETURNS>void</RETURNS>
-<FLAGS>la</FLAGS>
-GstMultiFdSink *gstmultifdsink
-gint  arg1
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstMultiFdSink::clear</NAME>
-<RETURNS>void</RETURNS>
-<FLAGS>la</FLAGS>
-GstMultiFdSink *gstmultifdsink
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstMultiFdSink::client-added</NAME>
-<RETURNS>void</RETURNS>
-<FLAGS>l</FLAGS>
-GstMultiFdSink *gstmultifdsink
-gint  arg1
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstMultiFdSink::client-removed</NAME>
-<RETURNS>void</RETURNS>
-<FLAGS>l</FLAGS>
-GstMultiFdSink *gstmultifdsink
-gint  arg1
-GstMultiHandleSinkClientStatus  arg2
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstMultiFdSink::get-stats</NAME>
-<RETURNS>GstStructure*</RETURNS>
-<FLAGS>la</FLAGS>
-GstMultiFdSink *gstmultifdsink
-gint  arg1
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstMultiFdSink::remove</NAME>
-<RETURNS>void</RETURNS>
-<FLAGS>la</FLAGS>
-GstMultiFdSink *gstmultifdsink
-gint  arg1
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstMultiFdSink::client-fd-removed</NAME>
-<RETURNS>void</RETURNS>
-<FLAGS>l</FLAGS>
-GstMultiFdSink *gstmultifdsink
-gint  arg1
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstMultiFdSink::add-full</NAME>
-<RETURNS>void</RETURNS>
-<FLAGS>la</FLAGS>
-GstMultiFdSink *gstmultifdsink
-gint  arg1
-GstMultiHandleSinkSyncMethod  arg2
-GstFormat  arg3
-guint64  arg4
-GstFormat  arg5
-guint64  arg6
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstMultiFdSink::remove-flush</NAME>
-<RETURNS>void</RETURNS>
-<FLAGS>la</FLAGS>
-GstMultiFdSink *gstmultifdsink
-gint  arg1
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstMultiFdSink::client-handle-removed</NAME>
-<RETURNS>void</RETURNS>
-<FLAGS>l</FLAGS>
-GstMultiFdSink *gstmultifdsink
-gint  arg1
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstDecodeBin::new-decoded-pad</NAME>
-<RETURNS>void</RETURNS>
-<FLAGS>l</FLAGS>
-GstDecodeBin *gstdecodebin
-GstPad *arg1
-gboolean  arg2
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstDecodeBin::removed-decoded-pad</NAME>
-<RETURNS>void</RETURNS>
-<FLAGS>l</FLAGS>
-GstDecodeBin *gstdecodebin
-GstPad *arg1
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstDecodeBin::unknown-type</NAME>
-<RETURNS>void</RETURNS>
-<FLAGS>l</FLAGS>
-GstDecodeBin *gstdecodebin
-GstPad *arg1
-GstCaps *arg2
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstDecodeBin::autoplug-continue</NAME>
-<RETURNS>gboolean</RETURNS>
-<FLAGS>l</FLAGS>
-GstDecodeBin *gstdecodebin
-GstPad *arg1
-GstCaps *arg2
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstDecodeBin::autoplug-factories</NAME>
-<RETURNS>GValueArray*</RETURNS>
-<FLAGS>l</FLAGS>
-GstDecodeBin *gstdecodebin
-GstPad *arg1
-GstCaps *arg2
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstDecodeBin::autoplug-select</NAME>
-<RETURNS>GstAutoplugSelectResult</RETURNS>
-<FLAGS>l</FLAGS>
-GstDecodeBin *gstdecodebin
-GstPad *arg1
-GstCaps *arg2
-GstElementFactory *arg3
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstDecodeBin::autoplug-sort</NAME>
-<RETURNS>GValueArray*</RETURNS>
-<FLAGS>l</FLAGS>
-GstDecodeBin *gstdecodebin
-GstPad *arg1
-GstCaps *arg2
-GValueArray *arg3
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstDecodeBin::drained</NAME>
-<RETURNS>void</RETURNS>
-<FLAGS>l</FLAGS>
-GstDecodeBin *gstdecodebin
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstDecodeBin::autoplug-query</NAME>
-<RETURNS>gboolean</RETURNS>
-<FLAGS>l</FLAGS>
-GstDecodeBin *gstdecodebin
-GstPad *arg1
-GstElement *arg2
-GstQuery *arg3
-</SIGNAL>
-
-<SIGNAL>
-<NAME>CDParanoia::smilie-change</NAME>
-<RETURNS>void</RETURNS>
-CDParanoia *cdparanoia
-gchar *arg1
-</SIGNAL>
-
-<SIGNAL>
-<NAME>CDParanoia::transport-error</NAME>
-<RETURNS>void</RETURNS>
-CDParanoia *cdparanoia
-gint  arg1
-</SIGNAL>
-
-<SIGNAL>
-<NAME>CDParanoia::uncorrected-error</NAME>
-<RETURNS>void</RETURNS>
-CDParanoia *cdparanoia
-gint  arg1
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstGnomeVFSSink::allow-overwrite</NAME>
-<RETURNS>gboolean</RETURNS>
-<FLAGS>c</FLAGS>
-GstGnomeVFSSink *gstgnomevfssink
-GnomeVFSURI *arg1
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstCdParanoiaSrc::transport-error</NAME>
-<RETURNS>void</RETURNS>
-<FLAGS>l</FLAGS>
-GstCdParanoiaSrc *gstcdparanoiasrc
-gint  arg1
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstCdParanoiaSrc::uncorrected-error</NAME>
-<RETURNS>void</RETURNS>
-<FLAGS>l</FLAGS>
-GstCdParanoiaSrc *gstcdparanoiasrc
-gint  arg1
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstDecodeBin2::autoplug-continue</NAME>
-<RETURNS>gboolean</RETURNS>
-<FLAGS>l</FLAGS>
-GstDecodeBin2 *gstdecodebin2
-GstPad *arg1
-GstCaps *arg2
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstDecodeBin2::autoplug-sort</NAME>
-<RETURNS>GValueArray*</RETURNS>
-<FLAGS>l</FLAGS>
-GstDecodeBin2 *gstdecodebin2
-GstPad *arg1
-GstCaps *arg2
-GValueArray *arg3
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstDecodeBin2::new-decoded-pad</NAME>
-<RETURNS>void</RETURNS>
-<FLAGS>l</FLAGS>
-GstDecodeBin2 *gstdecodebin2
-GstPad *arg1
-gboolean  arg2
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstDecodeBin2::removed-decoded-pad</NAME>
-<RETURNS>void</RETURNS>
-<FLAGS>l</FLAGS>
-GstDecodeBin2 *gstdecodebin2
-GstPad *arg1
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstDecodeBin2::unknown-type</NAME>
-<RETURNS>void</RETURNS>
-<FLAGS>l</FLAGS>
-GstDecodeBin2 *gstdecodebin2
-GstPad *arg1
-GstCaps *arg2
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstDecodeBin2::autoplug-factories</NAME>
-<RETURNS>GValueArray*</RETURNS>
-<FLAGS>l</FLAGS>
-GstDecodeBin2 *gstdecodebin2
-GstPad *arg1
-GstCaps *arg2
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstDecodeBin2::autoplug-select</NAME>
-<RETURNS>GstAutoplugSelectResult</RETURNS>
-<FLAGS>l</FLAGS>
-GstDecodeBin2 *gstdecodebin2
-GstPad *arg1
-GstCaps *arg2
-GstElementFactory *arg3
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstDecodeBin2::drained</NAME>
-<RETURNS>void</RETURNS>
-<FLAGS>l</FLAGS>
-GstDecodeBin2 *gstdecodebin2
-</SIGNAL>
-
-<SIGNAL>
 <NAME>GstURIDecodeBin::autoplug-continue</NAME>
 <RETURNS>gboolean</RETURNS>
 <FLAGS>l</FLAGS>
@@ -299,6 +17,16 @@
 </SIGNAL>
 
 <SIGNAL>
+<NAME>GstURIDecodeBin::autoplug-query</NAME>
+<RETURNS>gboolean</RETURNS>
+<FLAGS>l</FLAGS>
+GstURIDecodeBin *gsturidecodebin
+GstPad *arg1
+GstElement *arg2
+GstQuery *arg3
+</SIGNAL>
+
+<SIGNAL>
 <NAME>GstURIDecodeBin::autoplug-select</NAME>
 <RETURNS>GstAutoplugSelectResult</RETURNS>
 <FLAGS>l</FLAGS>
@@ -309,22 +37,6 @@
 </SIGNAL>
 
 <SIGNAL>
-<NAME>GstURIDecodeBin::unknown-type</NAME>
-<RETURNS>void</RETURNS>
-<FLAGS>l</FLAGS>
-GstURIDecodeBin *gsturidecodebin
-GstPad *arg1
-GstCaps *arg2
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstURIDecodeBin::drained</NAME>
-<RETURNS>void</RETURNS>
-<FLAGS>l</FLAGS>
-GstURIDecodeBin *gsturidecodebin
-</SIGNAL>
-
-<SIGNAL>
 <NAME>GstURIDecodeBin::autoplug-sort</NAME>
 <RETURNS>GValueArray*</RETURNS>
 <FLAGS>l</FLAGS>
@@ -335,6 +47,13 @@
 </SIGNAL>
 
 <SIGNAL>
+<NAME>GstURIDecodeBin::drained</NAME>
+<RETURNS>void</RETURNS>
+<FLAGS>l</FLAGS>
+GstURIDecodeBin *gsturidecodebin
+</SIGNAL>
+
+<SIGNAL>
 <NAME>GstURIDecodeBin::source-setup</NAME>
 <RETURNS>void</RETURNS>
 <FLAGS>l</FLAGS>
@@ -343,245 +62,12 @@
 </SIGNAL>
 
 <SIGNAL>
-<NAME>GstURIDecodeBin::autoplug-query</NAME>
-<RETURNS>gboolean</RETURNS>
+<NAME>GstURIDecodeBin::unknown-type</NAME>
+<RETURNS>void</RETURNS>
 <FLAGS>l</FLAGS>
 GstURIDecodeBin *gsturidecodebin
 GstPad *arg1
-GstElement *arg2
-GstQuery *arg3
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstPlayBin2::about-to-finish</NAME>
-<RETURNS>void</RETURNS>
-<FLAGS>l</FLAGS>
-GstPlayBin2 *gstplaybin2
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstPlayBin2::audio-changed</NAME>
-<RETURNS>void</RETURNS>
-<FLAGS>l</FLAGS>
-GstPlayBin2 *gstplaybin2
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstPlayBin2::get-audio-tags</NAME>
-<RETURNS>GstTagList*</RETURNS>
-<FLAGS>la</FLAGS>
-GstPlayBin2 *gstplaybin2
-gint  arg1
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstPlayBin2::get-text-tags</NAME>
-<RETURNS>GstTagList*</RETURNS>
-<FLAGS>la</FLAGS>
-GstPlayBin2 *gstplaybin2
-gint  arg1
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstPlayBin2::get-video-tags</NAME>
-<RETURNS>GstTagList*</RETURNS>
-<FLAGS>la</FLAGS>
-GstPlayBin2 *gstplaybin2
-gint  arg1
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstPlayBin2::text-changed</NAME>
-<RETURNS>void</RETURNS>
-<FLAGS>l</FLAGS>
-GstPlayBin2 *gstplaybin2
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstPlayBin2::video-changed</NAME>
-<RETURNS>void</RETURNS>
-<FLAGS>l</FLAGS>
-GstPlayBin2 *gstplaybin2
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstPlayBin2::convert-frame</NAME>
-<RETURNS>GstBuffer*</RETURNS>
-<FLAGS>la</FLAGS>
-GstPlayBin2 *gstplaybin2
-GstCaps *arg1
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstPlayBin2::get-audio-pad</NAME>
-<RETURNS>GstPad*</RETURNS>
-<FLAGS>la</FLAGS>
-GstPlayBin2 *gstplaybin2
-gint  arg1
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstPlayBin2::get-text-pad</NAME>
-<RETURNS>GstPad*</RETURNS>
-<FLAGS>la</FLAGS>
-GstPlayBin2 *gstplaybin2
-gint  arg1
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstPlayBin2::get-video-pad</NAME>
-<RETURNS>GstPad*</RETURNS>
-<FLAGS>la</FLAGS>
-GstPlayBin2 *gstplaybin2
-gint  arg1
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstPlayBin2::audio-tags-changed</NAME>
-<RETURNS>void</RETURNS>
-<FLAGS>l</FLAGS>
-GstPlayBin2 *gstplaybin2
-gint  arg1
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstPlayBin2::text-tags-changed</NAME>
-<RETURNS>void</RETURNS>
-<FLAGS>l</FLAGS>
-GstPlayBin2 *gstplaybin2
-gint  arg1
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstPlayBin2::video-tags-changed</NAME>
-<RETURNS>void</RETURNS>
-<FLAGS>l</FLAGS>
-GstPlayBin2 *gstplaybin2
-gint  arg1
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstPlayBin2::source-setup</NAME>
-<RETURNS>void</RETURNS>
-<FLAGS>l</FLAGS>
-GstPlayBin2 *gstplaybin2
-GstElement *arg1
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstAppSink::eos</NAME>
-<RETURNS>void</RETURNS>
-<FLAGS>l</FLAGS>
-GstAppSink *gstappsink
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstAppSink::new-buffer</NAME>
-<RETURNS>void</RETURNS>
-<FLAGS>l</FLAGS>
-GstAppSink *gstappsink
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstAppSink::new-preroll</NAME>
-<RETURNS>GstFlowReturn</RETURNS>
-<FLAGS>l</FLAGS>
-GstAppSink *gstappsink
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstAppSink::pull-buffer</NAME>
-<RETURNS>GstBuffer*</RETURNS>
-<FLAGS>la</FLAGS>
-GstAppSink *gstappsink
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstAppSink::pull-preroll</NAME>
-<RETURNS>GstSample*</RETURNS>
-<FLAGS>la</FLAGS>
-GstAppSink *gstappsink
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstAppSink::new-buffer-list</NAME>
-<RETURNS>void</RETURNS>
-<FLAGS>l</FLAGS>
-GstAppSink *gstappsink
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstAppSink::pull-buffer-list</NAME>
-<RETURNS>GstBufferList*</RETURNS>
-<FLAGS>la</FLAGS>
-GstAppSink *gstappsink
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstAppSink::new-sample</NAME>
-<RETURNS>GstFlowReturn</RETURNS>
-<FLAGS>l</FLAGS>
-GstAppSink *gstappsink
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstAppSink::pull-sample</NAME>
-<RETURNS>GstSample*</RETURNS>
-<FLAGS>la</FLAGS>
-GstAppSink *gstappsink
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstAppSrc::end-of-stream</NAME>
-<RETURNS>GstFlowReturn</RETURNS>
-<FLAGS>la</FLAGS>
-GstAppSrc *gstappsrc
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstAppSrc::enough-data</NAME>
-<RETURNS>void</RETURNS>
-<FLAGS>l</FLAGS>
-GstAppSrc *gstappsrc
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstAppSrc::need-data</NAME>
-<RETURNS>void</RETURNS>
-<FLAGS>l</FLAGS>
-GstAppSrc *gstappsrc
-guint  arg1
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstAppSrc::push-buffer</NAME>
-<RETURNS>GstFlowReturn</RETURNS>
-<FLAGS>la</FLAGS>
-GstAppSrc *gstappsrc
-GstBuffer *arg1
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstAppSrc::seek-data</NAME>
-<RETURNS>gboolean</RETURNS>
-<FLAGS>l</FLAGS>
-GstAppSrc *gstappsrc
-guint64  arg1
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstPlaySink::reconfigure</NAME>
-<RETURNS>gboolean</RETURNS>
-<FLAGS>la</FLAGS>
-GstPlaySink *gstplaysink
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstPlaySink::convert-frame</NAME>
-<RETURNS>GstBuffer*</RETURNS>
-<FLAGS>la</FLAGS>
-GstPlaySink *gstplaysink
-GstCaps *arg1
+GstCaps *arg2
 </SIGNAL>
 
 <SIGNAL>
@@ -593,104 +79,10 @@
 </SIGNAL>
 
 <SIGNAL>
-<NAME>GstEncodeBin::request-pad</NAME>
-<RETURNS>GstPad*</RETURNS>
+<NAME>GstPlaySink::reconfigure</NAME>
+<RETURNS>gboolean</RETURNS>
 <FLAGS>la</FLAGS>
-GstEncodeBin *gstencodebin
-GstCaps *arg1
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstEncodeBin::request-profile-pad</NAME>
-<RETURNS>GstPad*</RETURNS>
-<FLAGS>la</FLAGS>
-GstEncodeBin *gstencodebin
-gchar *arg1
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstMultiSocketSink::add</NAME>
-<RETURNS>void</RETURNS>
-<FLAGS>la</FLAGS>
-GstMultiSocketSink *gstmultisocketsink
-GSocket *arg1
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstMultiSocketSink::add-full</NAME>
-<RETURNS>void</RETURNS>
-<FLAGS>la</FLAGS>
-GstMultiSocketSink *gstmultisocketsink
-GSocket *arg1
-GstMultiHandleSinkSyncMethod  arg2
-GstFormat  arg3
-guint64  arg4
-GstFormat  arg5
-guint64  arg6
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstMultiSocketSink::clear</NAME>
-<RETURNS>void</RETURNS>
-<FLAGS>la</FLAGS>
-GstMultiSocketSink *gstmultisocketsink
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstMultiSocketSink::client-added</NAME>
-<RETURNS>void</RETURNS>
-<FLAGS>l</FLAGS>
-GstMultiSocketSink *gstmultisocketsink
-GObject *arg1
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstMultiSocketSink::client-removed</NAME>
-<RETURNS>void</RETURNS>
-<FLAGS>l</FLAGS>
-GstMultiSocketSink *gstmultisocketsink
-gint  arg1
-GstMultiHandleSinkClientStatus  arg2
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstMultiSocketSink::client-socket-removed</NAME>
-<RETURNS>void</RETURNS>
-<FLAGS>l</FLAGS>
-GstMultiSocketSink *gstmultisocketsink
-GSocket *arg1
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstMultiSocketSink::get-stats</NAME>
-<RETURNS>GstStructure*</RETURNS>
-<FLAGS>la</FLAGS>
-GstMultiSocketSink *gstmultisocketsink
-GSocket *arg1
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstMultiSocketSink::remove</NAME>
-<RETURNS>void</RETURNS>
-<FLAGS>la</FLAGS>
-GstMultiSocketSink *gstmultisocketsink
-GSocket *arg1
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstMultiSocketSink::remove-flush</NAME>
-<RETURNS>void</RETURNS>
-<FLAGS>la</FLAGS>
-GstMultiSocketSink *gstmultisocketsink
-GSocket *arg1
-</SIGNAL>
-
-<SIGNAL>
-<NAME>GstMultiSocketSink::client-handle-removed</NAME>
-<RETURNS>void</RETURNS>
-<FLAGS>l</FLAGS>
-GstMultiSocketSink *gstmultisocketsink
-GSocket *arg1
+GstPlaySink *gstplaysink
 </SIGNAL>
 
 <SIGNAL>
@@ -809,3 +201,312 @@
 gint  arg1
 </SIGNAL>
 
+<SIGNAL>
+<NAME>GstDecodeBin::autoplug-continue</NAME>
+<RETURNS>gboolean</RETURNS>
+<FLAGS>l</FLAGS>
+GstDecodeBin *gstdecodebin
+GstPad *arg1
+GstCaps *arg2
+</SIGNAL>
+
+<SIGNAL>
+<NAME>GstDecodeBin::autoplug-factories</NAME>
+<RETURNS>GValueArray*</RETURNS>
+<FLAGS>l</FLAGS>
+GstDecodeBin *gstdecodebin
+GstPad *arg1
+GstCaps *arg2
+</SIGNAL>
+
+<SIGNAL>
+<NAME>GstDecodeBin::autoplug-query</NAME>
+<RETURNS>gboolean</RETURNS>
+<FLAGS>l</FLAGS>
+GstDecodeBin *gstdecodebin
+GstPad *arg1
+GstElement *arg2
+GstQuery *arg3
+</SIGNAL>
+
+<SIGNAL>
+<NAME>GstDecodeBin::autoplug-select</NAME>
+<RETURNS>GstAutoplugSelectResult</RETURNS>
+<FLAGS>l</FLAGS>
+GstDecodeBin *gstdecodebin
+GstPad *arg1
+GstCaps *arg2
+GstElementFactory *arg3
+</SIGNAL>
+
+<SIGNAL>
+<NAME>GstDecodeBin::autoplug-sort</NAME>
+<RETURNS>GValueArray*</RETURNS>
+<FLAGS>l</FLAGS>
+GstDecodeBin *gstdecodebin
+GstPad *arg1
+GstCaps *arg2
+GValueArray *arg3
+</SIGNAL>
+
+<SIGNAL>
+<NAME>GstDecodeBin::drained</NAME>
+<RETURNS>void</RETURNS>
+<FLAGS>l</FLAGS>
+GstDecodeBin *gstdecodebin
+</SIGNAL>
+
+<SIGNAL>
+<NAME>GstDecodeBin::unknown-type</NAME>
+<RETURNS>void</RETURNS>
+<FLAGS>l</FLAGS>
+GstDecodeBin *gstdecodebin
+GstPad *arg1
+GstCaps *arg2
+</SIGNAL>
+
+<SIGNAL>
+<NAME>GstEncodeBin::request-pad</NAME>
+<RETURNS>GstPad*</RETURNS>
+<FLAGS>la</FLAGS>
+GstEncodeBin *gstencodebin
+GstCaps *arg1
+</SIGNAL>
+
+<SIGNAL>
+<NAME>GstEncodeBin::request-profile-pad</NAME>
+<RETURNS>GstPad*</RETURNS>
+<FLAGS>la</FLAGS>
+GstEncodeBin *gstencodebin
+gchar *arg1
+</SIGNAL>
+
+<SIGNAL>
+<NAME>GstAppSrc::end-of-stream</NAME>
+<RETURNS>GstFlowReturn</RETURNS>
+<FLAGS>la</FLAGS>
+GstAppSrc *gstappsrc
+</SIGNAL>
+
+<SIGNAL>
+<NAME>GstAppSrc::enough-data</NAME>
+<RETURNS>void</RETURNS>
+<FLAGS>l</FLAGS>
+GstAppSrc *gstappsrc
+</SIGNAL>
+
+<SIGNAL>
+<NAME>GstAppSrc::need-data</NAME>
+<RETURNS>void</RETURNS>
+<FLAGS>l</FLAGS>
+GstAppSrc *gstappsrc
+guint  arg1
+</SIGNAL>
+
+<SIGNAL>
+<NAME>GstAppSrc::push-buffer</NAME>
+<RETURNS>GstFlowReturn</RETURNS>
+<FLAGS>la</FLAGS>
+GstAppSrc *gstappsrc
+GstBuffer *arg1
+</SIGNAL>
+
+<SIGNAL>
+<NAME>GstAppSrc::seek-data</NAME>
+<RETURNS>gboolean</RETURNS>
+<FLAGS>l</FLAGS>
+GstAppSrc *gstappsrc
+guint64  arg1
+</SIGNAL>
+
+<SIGNAL>
+<NAME>GstAppSink::eos</NAME>
+<RETURNS>void</RETURNS>
+<FLAGS>l</FLAGS>
+GstAppSink *gstappsink
+</SIGNAL>
+
+<SIGNAL>
+<NAME>GstAppSink::new-preroll</NAME>
+<RETURNS>GstFlowReturn</RETURNS>
+<FLAGS>l</FLAGS>
+GstAppSink *gstappsink
+</SIGNAL>
+
+<SIGNAL>
+<NAME>GstAppSink::new-sample</NAME>
+<RETURNS>GstFlowReturn</RETURNS>
+<FLAGS>l</FLAGS>
+GstAppSink *gstappsink
+</SIGNAL>
+
+<SIGNAL>
+<NAME>GstAppSink::pull-preroll</NAME>
+<RETURNS>GstSample*</RETURNS>
+<FLAGS>la</FLAGS>
+GstAppSink *gstappsink
+</SIGNAL>
+
+<SIGNAL>
+<NAME>GstAppSink::pull-sample</NAME>
+<RETURNS>GstSample*</RETURNS>
+<FLAGS>la</FLAGS>
+GstAppSink *gstappsink
+</SIGNAL>
+
+<SIGNAL>
+<NAME>GstMultiSocketSink::add</NAME>
+<RETURNS>void</RETURNS>
+<FLAGS>la</FLAGS>
+GstMultiSocketSink *gstmultisocketsink
+GSocket *arg1
+</SIGNAL>
+
+<SIGNAL>
+<NAME>GstMultiSocketSink::add-full</NAME>
+<RETURNS>void</RETURNS>
+<FLAGS>la</FLAGS>
+GstMultiSocketSink *gstmultisocketsink
+GSocket *arg1
+GstMultiHandleSinkSyncMethod  arg2
+GstFormat  arg3
+guint64  arg4
+GstFormat  arg5
+guint64  arg6
+</SIGNAL>
+
+<SIGNAL>
+<NAME>GstMultiSocketSink::client-added</NAME>
+<RETURNS>void</RETURNS>
+<FLAGS>l</FLAGS>
+GstMultiSocketSink *gstmultisocketsink
+GObject *arg1
+</SIGNAL>
+
+<SIGNAL>
+<NAME>GstMultiSocketSink::client-removed</NAME>
+<RETURNS>void</RETURNS>
+<FLAGS>l</FLAGS>
+GstMultiSocketSink *gstmultisocketsink
+gint  arg1
+GstMultiHandleSinkClientStatus  arg2
+</SIGNAL>
+
+<SIGNAL>
+<NAME>GstMultiSocketSink::client-socket-removed</NAME>
+<RETURNS>void</RETURNS>
+<FLAGS>l</FLAGS>
+GstMultiSocketSink *gstmultisocketsink
+GSocket *arg1
+</SIGNAL>
+
+<SIGNAL>
+<NAME>GstMultiSocketSink::get-stats</NAME>
+<RETURNS>GstStructure*</RETURNS>
+<FLAGS>la</FLAGS>
+GstMultiSocketSink *gstmultisocketsink
+GSocket *arg1
+</SIGNAL>
+
+<SIGNAL>
+<NAME>GstMultiSocketSink::remove</NAME>
+<RETURNS>void</RETURNS>
+<FLAGS>la</FLAGS>
+GstMultiSocketSink *gstmultisocketsink
+GSocket *arg1
+</SIGNAL>
+
+<SIGNAL>
+<NAME>GstMultiSocketSink::remove-flush</NAME>
+<RETURNS>void</RETURNS>
+<FLAGS>la</FLAGS>
+GstMultiSocketSink *gstmultisocketsink
+GSocket *arg1
+</SIGNAL>
+
+<SIGNAL>
+<NAME>GstMultiFdSink::add</NAME>
+<RETURNS>void</RETURNS>
+<FLAGS>la</FLAGS>
+GstMultiFdSink *gstmultifdsink
+gint  arg1
+</SIGNAL>
+
+<SIGNAL>
+<NAME>GstMultiFdSink::add-full</NAME>
+<RETURNS>void</RETURNS>
+<FLAGS>la</FLAGS>
+GstMultiFdSink *gstmultifdsink
+gint  arg1
+GstMultiHandleSinkSyncMethod  arg2
+GstFormat  arg3
+guint64  arg4
+GstFormat  arg5
+guint64  arg6
+</SIGNAL>
+
+<SIGNAL>
+<NAME>GstMultiFdSink::client-added</NAME>
+<RETURNS>void</RETURNS>
+<FLAGS>l</FLAGS>
+GstMultiFdSink *gstmultifdsink
+gint  arg1
+</SIGNAL>
+
+<SIGNAL>
+<NAME>GstMultiFdSink::client-fd-removed</NAME>
+<RETURNS>void</RETURNS>
+<FLAGS>l</FLAGS>
+GstMultiFdSink *gstmultifdsink
+gint  arg1
+</SIGNAL>
+
+<SIGNAL>
+<NAME>GstMultiFdSink::client-removed</NAME>
+<RETURNS>void</RETURNS>
+<FLAGS>l</FLAGS>
+GstMultiFdSink *gstmultifdsink
+gint  arg1
+GstMultiHandleSinkClientStatus  arg2
+</SIGNAL>
+
+<SIGNAL>
+<NAME>GstMultiFdSink::get-stats</NAME>
+<RETURNS>GstStructure*</RETURNS>
+<FLAGS>la</FLAGS>
+GstMultiFdSink *gstmultifdsink
+gint  arg1
+</SIGNAL>
+
+<SIGNAL>
+<NAME>GstMultiFdSink::remove</NAME>
+<RETURNS>void</RETURNS>
+<FLAGS>la</FLAGS>
+GstMultiFdSink *gstmultifdsink
+gint  arg1
+</SIGNAL>
+
+<SIGNAL>
+<NAME>GstMultiFdSink::remove-flush</NAME>
+<RETURNS>void</RETURNS>
+<FLAGS>la</FLAGS>
+GstMultiFdSink *gstmultifdsink
+gint  arg1
+</SIGNAL>
+
+<SIGNAL>
+<NAME>GstCdParanoiaSrc::transport-error</NAME>
+<RETURNS>void</RETURNS>
+<FLAGS>l</FLAGS>
+GstCdParanoiaSrc *gstcdparanoiasrc
+gint  arg1
+</SIGNAL>
+
+<SIGNAL>
+<NAME>GstCdParanoiaSrc::uncorrected-error</NAME>
+<RETURNS>void</RETURNS>
+<FLAGS>l</FLAGS>
+GstCdParanoiaSrc *gstcdparanoiasrc
+gint  arg1
+</SIGNAL>
+
diff --git a/docs/plugins/html/gst-plugins-base-plugins-1.0.devhelp2 b/docs/plugins/html/gst-plugins-base-plugins-1.0.devhelp2
index a036a50..ba19a14 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-1.0.devhelp2
+++ b/docs/plugins/html/gst-plugins-base-plugins-1.0.devhelp2
@@ -80,8 +80,8 @@
   </chapters>
   <functions>
     <keyword type="" name="Example launch line" link="gst-plugins-base-plugins-adder.html#id-1.2.2.8.4"/>
-    <keyword type="" name="Element Information" link="gst-plugins-base-plugins-adder.html#id-1.2.2.8.5.1.1"/>
-    <keyword type="" name="Element Pads" link="gst-plugins-base-plugins-adder.html#id-1.2.2.8.5.1.2"/>
+    <keyword type="" name="Element Information" link="gst-plugins-base-plugins-adder.html#id-1.2.2.8.5.1"/>
+    <keyword type="" name="Element Pads" link="gst-plugins-base-plugins-adder.html#id-1.2.2.8.5.2"/>
     <keyword type="struct" name="struct GstAdder" link="gst-plugins-base-plugins-adder.html#GstAdder-struct"/>
     <keyword type="property" name="The “caps” property" link="gst-plugins-base-plugins-adder.html#GstAdder--caps"/>
     <keyword type="" name="Element Information" link="gst-plugins-base-plugins-appsrc.html#id-1.2.3.9.5.1.1"/>
@@ -89,16 +89,16 @@
     <keyword type="struct" name="struct GstAppSrc" link="gst-plugins-base-plugins-appsrc.html#GstAppSrc-struct"/>
     <keyword type="property" name="The “block” property" link="gst-plugins-base-plugins-appsrc.html#GstAppSrc--block"/>
     <keyword type="property" name="The “caps” property" link="gst-plugins-base-plugins-appsrc.html#GstAppSrc--caps"/>
+    <keyword type="property" name="The “current-level-bytes” property" link="gst-plugins-base-plugins-appsrc.html#GstAppSrc--current-level-bytes"/>
+    <keyword type="property" name="The “emit-signals” property" link="gst-plugins-base-plugins-appsrc.html#GstAppSrc--emit-signals"/>
     <keyword type="property" name="The “format” property" link="gst-plugins-base-plugins-appsrc.html#GstAppSrc--format"/>
     <keyword type="property" name="The “is-live” property" link="gst-plugins-base-plugins-appsrc.html#GstAppSrc--is-live"/>
     <keyword type="property" name="The “max-bytes” property" link="gst-plugins-base-plugins-appsrc.html#GstAppSrc--max-bytes"/>
     <keyword type="property" name="The “max-latency” property" link="gst-plugins-base-plugins-appsrc.html#GstAppSrc--max-latency"/>
     <keyword type="property" name="The “min-latency” property" link="gst-plugins-base-plugins-appsrc.html#GstAppSrc--min-latency"/>
+    <keyword type="property" name="The “min-percent” property" link="gst-plugins-base-plugins-appsrc.html#GstAppSrc--min-percent"/>
     <keyword type="property" name="The “size” property" link="gst-plugins-base-plugins-appsrc.html#GstAppSrc--size"/>
     <keyword type="property" name="The “stream-type” property" link="gst-plugins-base-plugins-appsrc.html#GstAppSrc--stream-type"/>
-    <keyword type="property" name="The “emit-signals” property" link="gst-plugins-base-plugins-appsrc.html#GstAppSrc--emit-signals"/>
-    <keyword type="property" name="The “min-percent” property" link="gst-plugins-base-plugins-appsrc.html#GstAppSrc--min-percent"/>
-    <keyword type="property" name="The “current-level-bytes” property" link="gst-plugins-base-plugins-appsrc.html#GstAppSrc--current-level-bytes"/>
     <keyword type="signal" name="The “end-of-stream” signal" link="gst-plugins-base-plugins-appsrc.html#GstAppSrc-end-of-stream"/>
     <keyword type="signal" name="The “enough-data” signal" link="gst-plugins-base-plugins-appsrc.html#GstAppSrc-enough-data"/>
     <keyword type="signal" name="The “need-data” signal" link="gst-plugins-base-plugins-appsrc.html#GstAppSrc-need-data"/>
@@ -113,29 +113,25 @@
     <keyword type="property" name="The “eos” property" link="gst-plugins-base-plugins-appsink.html#GstAppSink--eos"/>
     <keyword type="property" name="The “max-buffers” property" link="gst-plugins-base-plugins-appsink.html#GstAppSink--max-buffers"/>
     <keyword type="signal" name="The “eos” signal" link="gst-plugins-base-plugins-appsink.html#GstAppSink-eos"/>
-    <keyword type="signal" name="The “new-buffer” signal" link="gst-plugins-base-plugins-appsink.html#GstAppSink-new-buffer"/>
     <keyword type="signal" name="The “new-preroll” signal" link="gst-plugins-base-plugins-appsink.html#GstAppSink-new-preroll"/>
-    <keyword type="signal" name="The “pull-buffer” signal" link="gst-plugins-base-plugins-appsink.html#GstAppSink-pull-buffer"/>
-    <keyword type="signal" name="The “pull-preroll” signal" link="gst-plugins-base-plugins-appsink.html#GstAppSink-pull-preroll"/>
-    <keyword type="signal" name="The “new-buffer-list” signal" link="gst-plugins-base-plugins-appsink.html#GstAppSink-new-buffer-list"/>
-    <keyword type="signal" name="The “pull-buffer-list” signal" link="gst-plugins-base-plugins-appsink.html#GstAppSink-pull-buffer-list"/>
     <keyword type="signal" name="The “new-sample” signal" link="gst-plugins-base-plugins-appsink.html#GstAppSink-new-sample"/>
+    <keyword type="signal" name="The “pull-preroll” signal" link="gst-plugins-base-plugins-appsink.html#GstAppSink-pull-preroll"/>
     <keyword type="signal" name="The “pull-sample” signal" link="gst-plugins-base-plugins-appsink.html#GstAppSink-pull-sample"/>
     <keyword type="" name="Element Information" link="gst-plugins-base-plugins-alsasink.html#id-1.2.5.7.2.1"/>
     <keyword type="" name="Element Pads" link="gst-plugins-base-plugins-alsasink.html#id-1.2.5.7.2.2"/>
     <keyword type="struct" name="struct GstAlsaSink" link="gst-plugins-base-plugins-alsasink.html#GstAlsaSink-struct"/>
+    <keyword type="property" name="The “card-name” property" link="gst-plugins-base-plugins-alsasink.html#GstAlsaSink--card-name"/>
     <keyword type="property" name="The “device” property" link="gst-plugins-base-plugins-alsasink.html#GstAlsaSink--device"/>
     <keyword type="property" name="The “device-name” property" link="gst-plugins-base-plugins-alsasink.html#GstAlsaSink--device-name"/>
-    <keyword type="property" name="The “card-name” property" link="gst-plugins-base-plugins-alsasink.html#GstAlsaSink--card-name"/>
     <keyword type="" name="Element Information" link="gst-plugins-base-plugins-alsasrc.html#id-1.2.6.7.2.1"/>
     <keyword type="" name="Element Pads" link="gst-plugins-base-plugins-alsasrc.html#id-1.2.6.7.2.2"/>
     <keyword type="struct" name="struct GstAlsaSrc" link="gst-plugins-base-plugins-alsasrc.html#GstAlsaSrc-struct"/>
+    <keyword type="property" name="The “card-name” property" link="gst-plugins-base-plugins-alsasrc.html#GstAlsaSrc--card-name"/>
     <keyword type="property" name="The “device” property" link="gst-plugins-base-plugins-alsasrc.html#GstAlsaSrc--device"/>
     <keyword type="property" name="The “device-name” property" link="gst-plugins-base-plugins-alsasrc.html#GstAlsaSrc--device-name"/>
-    <keyword type="property" name="The “card-name” property" link="gst-plugins-base-plugins-alsasrc.html#GstAlsaSrc--card-name"/>
     <keyword type="" name="Example launch line" link="gst-plugins-base-plugins-audioconvert.html#id-1.2.7.7.3"/>
-    <keyword type="" name="Element Information" link="gst-plugins-base-plugins-audioconvert.html#id-1.2.7.7.4.1.1"/>
-    <keyword type="" name="Element Pads" link="gst-plugins-base-plugins-audioconvert.html#id-1.2.7.7.4.1.2"/>
+    <keyword type="" name="Element Information" link="gst-plugins-base-plugins-audioconvert.html#id-1.2.7.7.4.1"/>
+    <keyword type="" name="Element Pads" link="gst-plugins-base-plugins-audioconvert.html#id-1.2.7.7.4.2"/>
     <keyword type="struct" name="struct GstAudioConvert" link="gst-plugins-base-plugins-audioconvert.html#GstAudioConvert-struct"/>
     <keyword type="enum" name="enum GstAudioConvertDithering" link="gst-plugins-base-plugins-audioconvert.html#GstAudioConvertDithering"/>
     <keyword type="enum" name="enum GstAudioConvertNoiseShaping" link="gst-plugins-base-plugins-audioconvert.html#GstAudioConvertNoiseShaping"/>
@@ -150,13 +146,12 @@
     <keyword type="property" name="The “in” property" link="gst-plugins-base-plugins-audiorate.html#GstAudioRate--in"/>
     <keyword type="property" name="The “out” property" link="gst-plugins-base-plugins-audiorate.html#GstAudioRate--out"/>
     <keyword type="property" name="The “silent” property" link="gst-plugins-base-plugins-audiorate.html#GstAudioRate--silent"/>
-    <keyword type="property" name="The “tolerance” property" link="gst-plugins-base-plugins-audiorate.html#GstAudioRate--tolerance"/>
     <keyword type="property" name="The “skip-to-first” property" link="gst-plugins-base-plugins-audiorate.html#GstAudioRate--skip-to-first"/>
+    <keyword type="property" name="The “tolerance” property" link="gst-plugins-base-plugins-audiorate.html#GstAudioRate--tolerance"/>
     <keyword type="" name="Example launch line" link="gst-plugins-base-plugins-audioresample.html#id-1.2.9.7.4"/>
     <keyword type="" name="Element Information" link="gst-plugins-base-plugins-audioresample.html#id-1.2.9.7.5.1"/>
     <keyword type="" name="Element Pads" link="gst-plugins-base-plugins-audioresample.html#id-1.2.9.7.5.2"/>
     <keyword type="struct" name="struct GstAudioResample" link="gst-plugins-base-plugins-audioresample.html#GstAudioResample-struct"/>
-    <keyword type="property" name="The “filter-length” property" link="gst-plugins-base-plugins-audioresample.html#GstAudioResample--filter-length"/>
     <keyword type="property" name="The “quality” property" link="gst-plugins-base-plugins-audioresample.html#GstAudioResample--quality"/>
     <keyword type="property" name="The “sinc-filter-auto-threshold” property" link="gst-plugins-base-plugins-audioresample.html#GstAudioResample--sinc-filter-auto-threshold"/>
     <keyword type="property" name="The “sinc-filter-mode” property" link="gst-plugins-base-plugins-audioresample.html#GstAudioResample--sinc-filter-mode"/>
@@ -165,22 +160,22 @@
     <keyword type="" name="Element Pads" link="gst-plugins-base-plugins-audiotestsrc.html#id-1.2.10.7.4.2"/>
     <keyword type="struct" name="struct GstAudioTestSrc" link="gst-plugins-base-plugins-audiotestsrc.html#GstAudioTestSrc-struct"/>
     <keyword type="enum" name="enum GstAudioTestSrcWave" link="gst-plugins-base-plugins-audiotestsrc.html#GstAudioTestSrcWave"/>
+    <keyword type="property" name="The “can-activate-pull” property" link="gst-plugins-base-plugins-audiotestsrc.html#GstAudioTestSrc--can-activate-pull"/>
+    <keyword type="property" name="The “can-activate-push” property" link="gst-plugins-base-plugins-audiotestsrc.html#GstAudioTestSrc--can-activate-push"/>
     <keyword type="property" name="The “freq” property" link="gst-plugins-base-plugins-audiotestsrc.html#GstAudioTestSrc--freq"/>
     <keyword type="property" name="The “is-live” property" link="gst-plugins-base-plugins-audiotestsrc.html#GstAudioTestSrc--is-live"/>
     <keyword type="property" name="The “samplesperbuffer” property" link="gst-plugins-base-plugins-audiotestsrc.html#GstAudioTestSrc--samplesperbuffer"/>
     <keyword type="property" name="The “timestamp-offset” property" link="gst-plugins-base-plugins-audiotestsrc.html#GstAudioTestSrc--timestamp-offset"/>
     <keyword type="property" name="The “volume” property" link="gst-plugins-base-plugins-audiotestsrc.html#GstAudioTestSrc--volume"/>
     <keyword type="property" name="The “wave” property" link="gst-plugins-base-plugins-audiotestsrc.html#GstAudioTestSrc--wave"/>
-    <keyword type="property" name="The “can-activate-pull” property" link="gst-plugins-base-plugins-audiotestsrc.html#GstAudioTestSrc--can-activate-pull"/>
-    <keyword type="property" name="The “can-activate-push” property" link="gst-plugins-base-plugins-audiotestsrc.html#GstAudioTestSrc--can-activate-push"/>
     <keyword type="" name="Element Information" link="gst-plugins-base-plugins-cdparanoiasrc.html#id-1.2.11.9.2.1"/>
     <keyword type="" name="Element Pads" link="gst-plugins-base-plugins-cdparanoiasrc.html#id-1.2.11.9.2.2"/>
     <keyword type="struct" name="struct GstCdParanoiaSrc" link="gst-plugins-base-plugins-cdparanoiasrc.html#GstCdParanoiaSrc-struct"/>
+    <keyword type="property" name="The “cache-size” property" link="gst-plugins-base-plugins-cdparanoiasrc.html#GstCdParanoiaSrc--cache-size"/>
     <keyword type="property" name="The “generic-device” property" link="gst-plugins-base-plugins-cdparanoiasrc.html#GstCdParanoiaSrc--generic-device"/>
     <keyword type="property" name="The “paranoia-mode” property" link="gst-plugins-base-plugins-cdparanoiasrc.html#GstCdParanoiaSrc--paranoia-mode"/>
     <keyword type="property" name="The “read-speed” property" link="gst-plugins-base-plugins-cdparanoiasrc.html#GstCdParanoiaSrc--read-speed"/>
     <keyword type="property" name="The “search-overlap” property" link="gst-plugins-base-plugins-cdparanoiasrc.html#GstCdParanoiaSrc--search-overlap"/>
-    <keyword type="property" name="The “cache-size” property" link="gst-plugins-base-plugins-cdparanoiasrc.html#GstCdParanoiaSrc--cache-size"/>
     <keyword type="signal" name="The “transport-error” signal" link="gst-plugins-base-plugins-cdparanoiasrc.html#GstCdParanoiaSrc-transport-error"/>
     <keyword type="signal" name="The “uncorrected-error” signal" link="gst-plugins-base-plugins-cdparanoiasrc.html#GstCdParanoiaSrc-uncorrected-error"/>
     <keyword type="" name="Element Information" link="gst-plugins-base-plugins-clockoverlay.html#id-1.2.12.7.2.1"/>
@@ -190,9 +185,8 @@
     <keyword type="" name="Element Information" link="gst-plugins-base-plugins-decodebin.html#id-1.2.13.9.3.3.1"/>
     <keyword type="" name="Element Pads" link="gst-plugins-base-plugins-decodebin.html#id-1.2.13.9.3.3.2"/>
     <keyword type="struct" name="struct GstDecodeBin" link="gst-plugins-base-plugins-decodebin.html#GstDecodeBin-struct"/>
-    <keyword type="property" name="The “threaded” property" link="gst-plugins-base-plugins-decodebin.html#GstDecodeBin--threaded"/>
-    <keyword type="property" name="The “sink-caps” property" link="gst-plugins-base-plugins-decodebin.html#GstDecodeBin--sink-caps"/>
     <keyword type="property" name="The “caps” property" link="gst-plugins-base-plugins-decodebin.html#GstDecodeBin--caps"/>
+    <keyword type="property" name="The “connection-speed” property" link="gst-plugins-base-plugins-decodebin.html#GstDecodeBin--connection-speed"/>
     <keyword type="property" name="The “expose-all-streams” property" link="gst-plugins-base-plugins-decodebin.html#GstDecodeBin--expose-all-streams"/>
     <keyword type="property" name="The “high-percent” property" link="gst-plugins-base-plugins-decodebin.html#GstDecodeBin--high-percent"/>
     <keyword type="property" name="The “low-percent” property" link="gst-plugins-base-plugins-decodebin.html#GstDecodeBin--low-percent"/>
@@ -200,29 +194,27 @@
     <keyword type="property" name="The “max-size-bytes” property" link="gst-plugins-base-plugins-decodebin.html#GstDecodeBin--max-size-bytes"/>
     <keyword type="property" name="The “max-size-time” property" link="gst-plugins-base-plugins-decodebin.html#GstDecodeBin--max-size-time"/>
     <keyword type="property" name="The “post-stream-topology” property" link="gst-plugins-base-plugins-decodebin.html#GstDecodeBin--post-stream-topology"/>
+    <keyword type="property" name="The “sink-caps” property" link="gst-plugins-base-plugins-decodebin.html#GstDecodeBin--sink-caps"/>
     <keyword type="property" name="The “subtitle-encoding” property" link="gst-plugins-base-plugins-decodebin.html#GstDecodeBin--subtitle-encoding"/>
     <keyword type="property" name="The “use-buffering” property" link="gst-plugins-base-plugins-decodebin.html#GstDecodeBin--use-buffering"/>
-    <keyword type="property" name="The “connection-speed” property" link="gst-plugins-base-plugins-decodebin.html#GstDecodeBin--connection-speed"/>
-    <keyword type="signal" name="The “new-decoded-pad” signal" link="gst-plugins-base-plugins-decodebin.html#GstDecodeBin-new-decoded-pad"/>
-    <keyword type="signal" name="The “removed-decoded-pad” signal" link="gst-plugins-base-plugins-decodebin.html#GstDecodeBin-removed-decoded-pad"/>
-    <keyword type="signal" name="The “unknown-type” signal" link="gst-plugins-base-plugins-decodebin.html#GstDecodeBin-unknown-type"/>
     <keyword type="signal" name="The “autoplug-continue” signal" link="gst-plugins-base-plugins-decodebin.html#GstDecodeBin-autoplug-continue"/>
     <keyword type="signal" name="The “autoplug-factories” signal" link="gst-plugins-base-plugins-decodebin.html#GstDecodeBin-autoplug-factories"/>
+    <keyword type="signal" name="The “autoplug-query” signal" link="gst-plugins-base-plugins-decodebin.html#GstDecodeBin-autoplug-query"/>
     <keyword type="signal" name="The “autoplug-select” signal" link="gst-plugins-base-plugins-decodebin.html#GstDecodeBin-autoplug-select"/>
     <keyword type="signal" name="The “autoplug-sort” signal" link="gst-plugins-base-plugins-decodebin.html#GstDecodeBin-autoplug-sort"/>
     <keyword type="signal" name="The “drained” signal" link="gst-plugins-base-plugins-decodebin.html#GstDecodeBin-drained"/>
-    <keyword type="signal" name="The “autoplug-query” signal" link="gst-plugins-base-plugins-decodebin.html#GstDecodeBin-autoplug-query"/>
+    <keyword type="signal" name="The “unknown-type” signal" link="gst-plugins-base-plugins-decodebin.html#GstDecodeBin-unknown-type"/>
     <keyword type="" name="Features" link="gst-plugins-base-plugins-encodebin.html#id-1.2.14.9.4"/>
     <keyword type="" name="Element Information" link="gst-plugins-base-plugins-encodebin.html#id-1.2.14.9.5.1"/>
     <keyword type="" name="Element Pads" link="gst-plugins-base-plugins-encodebin.html#id-1.2.14.9.5.2"/>
     <keyword type="struct" name="GstEncodeBin" link="gst-plugins-base-plugins-encodebin.html#GstEncodeBin-struct"/>
     <keyword type="property" name="The “audio-jitter-tolerance” property" link="gst-plugins-base-plugins-encodebin.html#GstEncodeBin--audio-jitter-tolerance"/>
     <keyword type="property" name="The “avoid-reencoding” property" link="gst-plugins-base-plugins-encodebin.html#GstEncodeBin--avoid-reencoding"/>
+    <keyword type="property" name="The “flags” property" link="gst-plugins-base-plugins-encodebin.html#GstEncodeBin--flags"/>
     <keyword type="property" name="The “profile” property" link="gst-plugins-base-plugins-encodebin.html#GstEncodeBin--profile"/>
     <keyword type="property" name="The “queue-buffers-max” property" link="gst-plugins-base-plugins-encodebin.html#GstEncodeBin--queue-buffers-max"/>
     <keyword type="property" name="The “queue-bytes-max” property" link="gst-plugins-base-plugins-encodebin.html#GstEncodeBin--queue-bytes-max"/>
     <keyword type="property" name="The “queue-time-max” property" link="gst-plugins-base-plugins-encodebin.html#GstEncodeBin--queue-time-max"/>
-    <keyword type="property" name="The “flags” property" link="gst-plugins-base-plugins-encodebin.html#GstEncodeBin--flags"/>
     <keyword type="signal" name="The “request-pad” signal" link="gst-plugins-base-plugins-encodebin.html#GstEncodeBin-request-pad"/>
     <keyword type="signal" name="The “request-profile-pad” signal" link="gst-plugins-base-plugins-encodebin.html#GstEncodeBin-request-profile-pad"/>
     <keyword type="" name="Example launch line" link="gst-plugins-base-plugins-videoconvert.html#id-1.2.15.7.3"/>
@@ -234,14 +226,14 @@
     <keyword type="" name="Element Information" link="gst-plugins-base-plugins-giosink.html#id-1.2.16.8.6.1"/>
     <keyword type="" name="Element Pads" link="gst-plugins-base-plugins-giosink.html#id-1.2.16.8.6.2"/>
     <keyword type="struct" name="struct GstGioSink" link="gst-plugins-base-plugins-giosink.html#GstGioSink-struct"/>
-    <keyword type="property" name="The “location” property" link="gst-plugins-base-plugins-giosink.html#GstGioSink--location"/>
     <keyword type="property" name="The “file” property" link="gst-plugins-base-plugins-giosink.html#GstGioSink--file"/>
+    <keyword type="property" name="The “location” property" link="gst-plugins-base-plugins-giosink.html#GstGioSink--location"/>
     <keyword type="" name="Example launch lines" link="gst-plugins-base-plugins-giosrc.html#id-1.2.17.8.4"/>
     <keyword type="" name="Element Information" link="gst-plugins-base-plugins-giosrc.html#id-1.2.17.8.5.1"/>
     <keyword type="" name="Element Pads" link="gst-plugins-base-plugins-giosrc.html#id-1.2.17.8.5.2"/>
     <keyword type="struct" name="struct GstGioSrc" link="gst-plugins-base-plugins-giosrc.html#GstGioSrc-struct"/>
-    <keyword type="property" name="The “location” property" link="gst-plugins-base-plugins-giosrc.html#GstGioSrc--location"/>
     <keyword type="property" name="The “file” property" link="gst-plugins-base-plugins-giosrc.html#GstGioSrc--file"/>
+    <keyword type="property" name="The “location” property" link="gst-plugins-base-plugins-giosrc.html#GstGioSrc--location"/>
     <keyword type="" name="Example code" link="gst-plugins-base-plugins-giostreamsink.html#id-1.2.18.7.4"/>
     <keyword type="" name="Element Information" link="gst-plugins-base-plugins-giostreamsink.html#id-1.2.18.7.5.1"/>
     <keyword type="" name="Element Pads" link="gst-plugins-base-plugins-giostreamsink.html#id-1.2.18.7.5.2"/>
@@ -252,81 +244,35 @@
     <keyword type="" name="Element Pads" link="gst-plugins-base-plugins-giostreamsrc.html#id-1.2.19.7.5.2"/>
     <keyword type="struct" name="struct GstGioStreamSrc" link="gst-plugins-base-plugins-giostreamsrc.html#GstGioStreamSrc-struct"/>
     <keyword type="property" name="The “stream” property" link="gst-plugins-base-plugins-giostreamsrc.html#GstGioStreamSrc--stream"/>
-    <keyword type="" name="Element Information" link="gst-plugins-base-plugins-multifdsink.html#id-1.2.20.8.13.1.1"/>
-    <keyword type="" name="Element Pads" link="gst-plugins-base-plugins-multifdsink.html#id-1.2.20.8.13.1.2"/>
+    <keyword type="" name="Element Information" link="gst-plugins-base-plugins-multifdsink.html#id-1.2.20.8.12.1.1"/>
+    <keyword type="" name="Element Pads" link="gst-plugins-base-plugins-multifdsink.html#id-1.2.20.8.12.1.2"/>
     <keyword type="struct" name="struct GstMultiFdSink" link="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink-struct"/>
     <keyword type="enum" name="enum GstRecoverPolicy" link="gst-plugins-base-plugins-multifdsink.html#GstRecoverPolicy"/>
     <keyword type="enum" name="enum GstSyncMethod" link="gst-plugins-base-plugins-multifdsink.html#GstSyncMethod"/>
     <keyword type="enum" name="enum GstClientStatus" link="gst-plugins-base-plugins-multifdsink.html#GstClientStatus"/>
-    <keyword type="property" name="The “buffers-max” property" link="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--buffers-max"/>
-    <keyword type="property" name="The “buffers-queued” property" link="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--buffers-queued"/>
-    <keyword type="property" name="The “buffers-soft-max” property" link="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--buffers-soft-max"/>
-    <keyword type="property" name="The “bytes-served” property" link="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--bytes-served"/>
-    <keyword type="property" name="The “bytes-to-serve” property" link="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--bytes-to-serve"/>
-    <keyword type="property" name="The “mode” property" link="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--mode"/>
-    <keyword type="property" name="The “protocol” property" link="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--protocol"/>
-    <keyword type="property" name="The “recover-policy” property" link="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--recover-policy"/>
-    <keyword type="property" name="The “sync-clients” property" link="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--sync-clients"/>
-    <keyword type="property" name="The “sync-method” property" link="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--sync-method"/>
-    <keyword type="property" name="The “timeout” property" link="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--timeout"/>
-    <keyword type="property" name="The “buffers-min” property" link="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--buffers-min"/>
-    <keyword type="property" name="The “burst-unit” property" link="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--burst-unit"/>
-    <keyword type="property" name="The “burst-value” property" link="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--burst-value"/>
-    <keyword type="property" name="The “bytes-min” property" link="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--bytes-min"/>
-    <keyword type="property" name="The “time-min” property" link="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--time-min"/>
-    <keyword type="property" name="The “unit-type” property" link="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--unit-type"/>
-    <keyword type="property" name="The “units-max” property" link="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--units-max"/>
-    <keyword type="property" name="The “units-soft-max” property" link="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--units-soft-max"/>
-    <keyword type="property" name="The “qos-dscp” property" link="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--qos-dscp"/>
     <keyword type="property" name="The “handle-read” property" link="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--handle-read"/>
-    <keyword type="property" name="The “resend-streamheader” property" link="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--resend-streamheader"/>
-    <keyword type="property" name="The “num-fds” property" link="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--num-fds"/>
     <keyword type="signal" name="The “add” signal" link="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink-add"/>
-    <keyword type="signal" name="The “clear” signal" link="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink-clear"/>
+    <keyword type="signal" name="The “add-full” signal" link="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink-add-full"/>
     <keyword type="signal" name="The “client-added” signal" link="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink-client-added"/>
+    <keyword type="signal" name="The “client-fd-removed” signal" link="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink-client-fd-removed"/>
     <keyword type="signal" name="The “client-removed” signal" link="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink-client-removed"/>
     <keyword type="signal" name="The “get-stats” signal" link="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink-get-stats"/>
     <keyword type="signal" name="The “remove” signal" link="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink-remove"/>
-    <keyword type="signal" name="The “client-fd-removed” signal" link="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink-client-fd-removed"/>
-    <keyword type="signal" name="The “add-full” signal" link="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink-add-full"/>
     <keyword type="signal" name="The “remove-flush” signal" link="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink-remove-flush"/>
-    <keyword type="signal" name="The “client-handle-removed” signal" link="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink-client-handle-removed"/>
-    <keyword type="" name="Element Information" link="gst-plugins-base-plugins-multisocketsink.html#id-1.2.21.8.12.1.1"/>
-    <keyword type="" name="Element Pads" link="gst-plugins-base-plugins-multisocketsink.html#id-1.2.21.8.12.1.2"/>
+    <keyword type="" name="Element Information" link="gst-plugins-base-plugins-multisocketsink.html#id-1.2.21.7.11.1.1"/>
+    <keyword type="" name="Element Pads" link="gst-plugins-base-plugins-multisocketsink.html#id-1.2.21.7.11.1.2"/>
     <keyword type="struct" name="struct GstMultiSocketSink" link="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink-struct"/>
     <keyword type="enum" name="enum GstRecoverPolicy" link="gst-plugins-base-plugins-multisocketsink.html#GstRecoverPolicy"/>
     <keyword type="enum" name="enum GstSyncMethod" link="gst-plugins-base-plugins-multisocketsink.html#GstSyncMethod"/>
     <keyword type="enum" name="enum GstClientStatus" link="gst-plugins-base-plugins-multisocketsink.html#GstClientStatus"/>
-    <keyword type="property" name="The “buffers-max” property" link="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--buffers-max"/>
-    <keyword type="property" name="The “buffers-min” property" link="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--buffers-min"/>
-    <keyword type="property" name="The “buffers-queued” property" link="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--buffers-queued"/>
-    <keyword type="property" name="The “buffers-soft-max” property" link="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--buffers-soft-max"/>
-    <keyword type="property" name="The “burst-format” property" link="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--burst-format"/>
-    <keyword type="property" name="The “burst-value” property" link="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--burst-value"/>
-    <keyword type="property" name="The “bytes-min” property" link="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--bytes-min"/>
-    <keyword type="property" name="The “bytes-served” property" link="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--bytes-served"/>
-    <keyword type="property" name="The “bytes-to-serve” property" link="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--bytes-to-serve"/>
-    <keyword type="property" name="The “handle-read” property" link="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--handle-read"/>
-    <keyword type="property" name="The “num-sockets” property" link="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--num-sockets"/>
-    <keyword type="property" name="The “qos-dscp” property" link="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--qos-dscp"/>
-    <keyword type="property" name="The “recover-policy” property" link="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--recover-policy"/>
-    <keyword type="property" name="The “resend-streamheader” property" link="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--resend-streamheader"/>
-    <keyword type="property" name="The “sync-method” property" link="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--sync-method"/>
-    <keyword type="property" name="The “time-min” property" link="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--time-min"/>
-    <keyword type="property" name="The “timeout” property" link="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--timeout"/>
-    <keyword type="property" name="The “unit-type” property" link="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--unit-type"/>
-    <keyword type="property" name="The “units-max” property" link="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--units-max"/>
-    <keyword type="property" name="The “units-soft-max” property" link="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--units-soft-max"/>
     <keyword type="signal" name="The “add” signal" link="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink-add"/>
     <keyword type="signal" name="The “add-full” signal" link="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink-add-full"/>
-    <keyword type="signal" name="The “clear” signal" link="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink-clear"/>
     <keyword type="signal" name="The “client-added” signal" link="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink-client-added"/>
     <keyword type="signal" name="The “client-removed” signal" link="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink-client-removed"/>
     <keyword type="signal" name="The “client-socket-removed” signal" link="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink-client-socket-removed"/>
     <keyword type="signal" name="The “get-stats” signal" link="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink-get-stats"/>
     <keyword type="signal" name="The “remove” signal" link="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink-remove"/>
     <keyword type="signal" name="The “remove-flush” signal" link="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink-remove-flush"/>
-    <keyword type="signal" name="The “client-handle-removed” signal" link="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink-client-handle-removed"/>
     <keyword type="" name="Element Information" link="gst-plugins-base-plugins-oggdemux.html#id-1.2.22.6.2.1"/>
     <keyword type="" name="Element Pads" link="gst-plugins-base-plugins-oggdemux.html#id-1.2.22.6.2.2"/>
     <keyword type="struct" name="struct GstOggDemux" link="gst-plugins-base-plugins-oggdemux.html#GstOggDemux-struct"/>
@@ -350,19 +296,18 @@
     <keyword type="struct" name="struct GstPlayBin" link="gst-plugins-base-plugins-playbin.html#GstPlayBin-struct"/>
     <keyword type="enum" name="enum GstPlayFlags" link="gst-plugins-base-plugins-playbin.html#GstPlayFlags"/>
     <keyword type="property" name="The “audio-sink” property" link="gst-plugins-base-plugins-playbin.html#GstPlayBin--audio-sink"/>
-    <keyword type="property" name="The “frame” property" link="gst-plugins-base-plugins-playbin.html#GstPlayBin--frame"/>
-    <keyword type="property" name="The “subtitle-font-desc” property" link="gst-plugins-base-plugins-playbin.html#GstPlayBin--subtitle-font-desc"/>
-    <keyword type="property" name="The “video-sink” property" link="gst-plugins-base-plugins-playbin.html#GstPlayBin--video-sink"/>
-    <keyword type="property" name="The “vis-plugin” property" link="gst-plugins-base-plugins-playbin.html#GstPlayBin--vis-plugin"/>
-    <keyword type="property" name="The “volume” property" link="gst-plugins-base-plugins-playbin.html#GstPlayBin--volume"/>
-    <keyword type="property" name="The “connection-speed” property" link="gst-plugins-base-plugins-playbin.html#GstPlayBin--connection-speed"/>
+    <keyword type="property" name="The “audio-stream-combiner” property" link="gst-plugins-base-plugins-playbin.html#GstPlayBin--audio-stream-combiner"/>
     <keyword type="property" name="The “av-offset” property" link="gst-plugins-base-plugins-playbin.html#GstPlayBin--av-offset"/>
     <keyword type="property" name="The “buffer-duration” property" link="gst-plugins-base-plugins-playbin.html#GstPlayBin--buffer-duration"/>
     <keyword type="property" name="The “buffer-size” property" link="gst-plugins-base-plugins-playbin.html#GstPlayBin--buffer-size"/>
+    <keyword type="property" name="The “connection-speed” property" link="gst-plugins-base-plugins-playbin.html#GstPlayBin--connection-speed"/>
     <keyword type="property" name="The “current-audio” property" link="gst-plugins-base-plugins-playbin.html#GstPlayBin--current-audio"/>
+    <keyword type="property" name="The “current-suburi” property" link="gst-plugins-base-plugins-playbin.html#GstPlayBin--current-suburi"/>
     <keyword type="property" name="The “current-text” property" link="gst-plugins-base-plugins-playbin.html#GstPlayBin--current-text"/>
+    <keyword type="property" name="The “current-uri” property" link="gst-plugins-base-plugins-playbin.html#GstPlayBin--current-uri"/>
     <keyword type="property" name="The “current-video” property" link="gst-plugins-base-plugins-playbin.html#GstPlayBin--current-video"/>
     <keyword type="property" name="The “flags” property" link="gst-plugins-base-plugins-playbin.html#GstPlayBin--flags"/>
+    <keyword type="property" name="The “force-aspect-ratio” property" link="gst-plugins-base-plugins-playbin.html#GstPlayBin--force-aspect-ratio"/>
     <keyword type="property" name="The “mute” property" link="gst-plugins-base-plugins-playbin.html#GstPlayBin--mute"/>
     <keyword type="property" name="The “n-audio” property" link="gst-plugins-base-plugins-playbin.html#GstPlayBin--n-audio"/>
     <keyword type="property" name="The “n-text” property" link="gst-plugins-base-plugins-playbin.html#GstPlayBin--n-text"/>
@@ -371,15 +316,17 @@
     <keyword type="property" name="The “sample” property" link="gst-plugins-base-plugins-playbin.html#GstPlayBin--sample"/>
     <keyword type="property" name="The “source” property" link="gst-plugins-base-plugins-playbin.html#GstPlayBin--source"/>
     <keyword type="property" name="The “subtitle-encoding” property" link="gst-plugins-base-plugins-playbin.html#GstPlayBin--subtitle-encoding"/>
+    <keyword type="property" name="The “subtitle-font-desc” property" link="gst-plugins-base-plugins-playbin.html#GstPlayBin--subtitle-font-desc"/>
     <keyword type="property" name="The “suburi” property" link="gst-plugins-base-plugins-playbin.html#GstPlayBin--suburi"/>
     <keyword type="property" name="The “text-sink” property" link="gst-plugins-base-plugins-playbin.html#GstPlayBin--text-sink"/>
-    <keyword type="property" name="The “uri” property" link="gst-plugins-base-plugins-playbin.html#GstPlayBin--uri"/>
-    <keyword type="property" name="The “current-suburi” property" link="gst-plugins-base-plugins-playbin.html#GstPlayBin--current-suburi"/>
-    <keyword type="property" name="The “current-uri” property" link="gst-plugins-base-plugins-playbin.html#GstPlayBin--current-uri"/>
-    <keyword type="property" name="The “force-aspect-ratio” property" link="gst-plugins-base-plugins-playbin.html#GstPlayBin--force-aspect-ratio"/>
-    <keyword type="property" name="The “audio-stream-combiner” property" link="gst-plugins-base-plugins-playbin.html#GstPlayBin--audio-stream-combiner"/>
     <keyword type="property" name="The “text-stream-combiner” property" link="gst-plugins-base-plugins-playbin.html#GstPlayBin--text-stream-combiner"/>
+    <keyword type="property" name="The “uri” property" link="gst-plugins-base-plugins-playbin.html#GstPlayBin--uri"/>
+    <keyword type="property" name="The “video-sink” property" link="gst-plugins-base-plugins-playbin.html#GstPlayBin--video-sink"/>
     <keyword type="property" name="The “video-stream-combiner” property" link="gst-plugins-base-plugins-playbin.html#GstPlayBin--video-stream-combiner"/>
+    <keyword type="property" name="The “vis-plugin” property" link="gst-plugins-base-plugins-playbin.html#GstPlayBin--vis-plugin"/>
+    <keyword type="property" name="The “volume” property" link="gst-plugins-base-plugins-playbin.html#GstPlayBin--volume"/>
+    <keyword type="property" name="The “audio-filter” property" link="gst-plugins-base-plugins-playbin.html#GstPlayBin--audio-filter"/>
+    <keyword type="property" name="The “video-filter” property" link="gst-plugins-base-plugins-playbin.html#GstPlayBin--video-filter"/>
     <keyword type="signal" name="The “about-to-finish” signal" link="gst-plugins-base-plugins-playbin.html#GstPlayBin-about-to-finish"/>
     <keyword type="signal" name="The “audio-changed” signal" link="gst-plugins-base-plugins-playbin.html#GstPlayBin-audio-changed"/>
     <keyword type="signal" name="The “audio-tags-changed” signal" link="gst-plugins-base-plugins-playbin.html#GstPlayBin-audio-tags-changed"/>
@@ -408,52 +355,29 @@
     <keyword type="struct" name="struct GstTCPClientSrc" link="gst-plugins-base-plugins-tcpclientsrc.html#GstTCPClientSrc-struct"/>
     <keyword type="property" name="The “host” property" link="gst-plugins-base-plugins-tcpclientsrc.html#GstTCPClientSrc--host"/>
     <keyword type="property" name="The “port” property" link="gst-plugins-base-plugins-tcpclientsrc.html#GstTCPClientSrc--port"/>
-    <keyword type="property" name="The “protocol” property" link="gst-plugins-base-plugins-tcpclientsrc.html#GstTCPClientSrc--protocol"/>
     <keyword type="" name="Example launch line" link="gst-plugins-base-plugins-tcpclientsink.html#id-1.2.27.7.2"/>
     <keyword type="" name="Element Information" link="gst-plugins-base-plugins-tcpclientsink.html#id-1.2.27.7.3.1"/>
     <keyword type="" name="Element Pads" link="gst-plugins-base-plugins-tcpclientsink.html#id-1.2.27.7.3.2"/>
     <keyword type="struct" name="struct GstTCPClientSink" link="gst-plugins-base-plugins-tcpclientsink.html#GstTCPClientSink-struct"/>
     <keyword type="property" name="The “host” property" link="gst-plugins-base-plugins-tcpclientsink.html#GstTCPClientSink--host"/>
     <keyword type="property" name="The “port” property" link="gst-plugins-base-plugins-tcpclientsink.html#GstTCPClientSink--port"/>
-    <keyword type="property" name="The “protocol” property" link="gst-plugins-base-plugins-tcpclientsink.html#GstTCPClientSink--protocol"/>
     <keyword type="" name="Example launch line" link="gst-plugins-base-plugins-tcpserversrc.html#id-1.2.28.7.2"/>
     <keyword type="" name="Element Information" link="gst-plugins-base-plugins-tcpserversrc.html#id-1.2.28.7.3.1"/>
     <keyword type="" name="Element Pads" link="gst-plugins-base-plugins-tcpserversrc.html#id-1.2.28.7.3.2"/>
     <keyword type="struct" name="struct GstTCPServerSrc" link="gst-plugins-base-plugins-tcpserversrc.html#GstTCPServerSrc-struct"/>
+    <keyword type="property" name="The “current-port” property" link="gst-plugins-base-plugins-tcpserversrc.html#GstTCPServerSrc--current-port"/>
     <keyword type="property" name="The “host” property" link="gst-plugins-base-plugins-tcpserversrc.html#GstTCPServerSrc--host"/>
     <keyword type="property" name="The “port” property" link="gst-plugins-base-plugins-tcpserversrc.html#GstTCPServerSrc--port"/>
-    <keyword type="property" name="The “protocol” property" link="gst-plugins-base-plugins-tcpserversrc.html#GstTCPServerSrc--protocol"/>
-    <keyword type="property" name="The “current-port” property" link="gst-plugins-base-plugins-tcpserversrc.html#GstTCPServerSrc--current-port"/>
     <keyword type="" name="Example launch line" link="gst-plugins-base-plugins-tcpserversink.html#id-1.2.29.7.2"/>
     <keyword type="" name="Element Information" link="gst-plugins-base-plugins-tcpserversink.html#id-1.2.29.7.3.1"/>
     <keyword type="" name="Element Pads" link="gst-plugins-base-plugins-tcpserversink.html#id-1.2.29.7.3.2"/>
     <keyword type="struct" name="struct GstTCPServerSink" link="gst-plugins-base-plugins-tcpserversink.html#GstTCPServerSink-struct"/>
+    <keyword type="property" name="The “current-port” property" link="gst-plugins-base-plugins-tcpserversink.html#GstTCPServerSink--current-port"/>
     <keyword type="property" name="The “host” property" link="gst-plugins-base-plugins-tcpserversink.html#GstTCPServerSink--host"/>
     <keyword type="property" name="The “port” property" link="gst-plugins-base-plugins-tcpserversink.html#GstTCPServerSink--port"/>
-    <keyword type="property" name="The “current-port” property" link="gst-plugins-base-plugins-tcpserversink.html#GstTCPServerSink--current-port"/>
-    <keyword type="" name="Element Information" link="gst-plugins-base-plugins-textoverlay.html#id-1.2.30.7.2.1"/>
-    <keyword type="" name="Element Pads" link="gst-plugins-base-plugins-textoverlay.html#id-1.2.30.7.2.2"/>
+    <keyword type="" name="Element Information" link="gst-plugins-base-plugins-textoverlay.html#id-1.2.30.6.2.1"/>
+    <keyword type="" name="Element Pads" link="gst-plugins-base-plugins-textoverlay.html#id-1.2.30.6.2.2"/>
     <keyword type="struct" name="struct GstTextOverlay" link="gst-plugins-base-plugins-textoverlay.html#GstTextOverlay-struct"/>
-    <keyword type="property" name="The “deltax” property" link="gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--deltax"/>
-    <keyword type="property" name="The “deltay” property" link="gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--deltay"/>
-    <keyword type="property" name="The “font-desc” property" link="gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--font-desc"/>
-    <keyword type="property" name="The “halign” property" link="gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--halign"/>
-    <keyword type="property" name="The “shaded-background” property" link="gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--shaded-background"/>
-    <keyword type="property" name="The “text” property" link="gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--text"/>
-    <keyword type="property" name="The “valign” property" link="gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--valign"/>
-    <keyword type="property" name="The “wrap-mode” property" link="gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--wrap-mode"/>
-    <keyword type="property" name="The “xpad” property" link="gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--xpad"/>
-    <keyword type="property" name="The “ypad” property" link="gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--ypad"/>
-    <keyword type="property" name="The “halignment” property" link="gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--halignment"/>
-    <keyword type="property" name="The “valignment” property" link="gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--valignment"/>
-    <keyword type="property" name="The “line-alignment” property" link="gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--line-alignment"/>
-    <keyword type="property" name="The “silent” property" link="gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--silent"/>
-    <keyword type="property" name="The “wait-text” property" link="gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--wait-text"/>
-    <keyword type="property" name="The “auto-resize” property" link="gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--auto-resize"/>
-    <keyword type="property" name="The “vertical-render” property" link="gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--vertical-render"/>
-    <keyword type="property" name="The “color” property" link="gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--color"/>
-    <keyword type="property" name="The “xpos” property" link="gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--xpos"/>
-    <keyword type="property" name="The “ypos” property" link="gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--ypos"/>
     <keyword type="" name="Element Information" link="gst-plugins-base-plugins-textrender.html#id-1.2.31.7.2.1"/>
     <keyword type="" name="Element Pads" link="gst-plugins-base-plugins-textrender.html#id-1.2.31.7.2.2"/>
     <keyword type="struct" name="struct GstTextRender" link="gst-plugins-base-plugins-textrender.html#GstTextRender-struct"/>
@@ -463,38 +387,28 @@
     <keyword type="property" name="The “valignment” property" link="gst-plugins-base-plugins-textrender.html#GstTextRender--valignment"/>
     <keyword type="property" name="The “xpad” property" link="gst-plugins-base-plugins-textrender.html#GstTextRender--xpad"/>
     <keyword type="property" name="The “ypad” property" link="gst-plugins-base-plugins-textrender.html#GstTextRender--ypad"/>
-    <keyword type="" name="Element Information" link="gst-plugins-base-plugins-theoradec.html#id-1.2.32.7.2.1"/>
-    <keyword type="" name="Element Pads" link="gst-plugins-base-plugins-theoradec.html#id-1.2.32.7.2.2"/>
+    <keyword type="" name="Element Information" link="gst-plugins-base-plugins-theoradec.html#id-1.2.32.6.2.1"/>
+    <keyword type="" name="Element Pads" link="gst-plugins-base-plugins-theoradec.html#id-1.2.32.6.2.2"/>
     <keyword type="struct" name="struct GstTheoraDec" link="gst-plugins-base-plugins-theoradec.html#GstTheoraDec-struct"/>
-    <keyword type="property" name="The “crop” property" link="gst-plugins-base-plugins-theoradec.html#GstTheoraDec--crop"/>
     <keyword type="" name="Element Information" link="gst-plugins-base-plugins-theoraenc.html#id-1.2.33.8.2.1"/>
     <keyword type="" name="Element Pads" link="gst-plugins-base-plugins-theoraenc.html#id-1.2.33.8.2.2"/>
     <keyword type="struct" name="struct GstTheoraEnc" link="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc-struct"/>
     <keyword type="property" name="The “bitrate” property" link="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--bitrate"/>
-    <keyword type="property" name="The “border” property" link="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--border"/>
-    <keyword type="property" name="The “center” property" link="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--center"/>
-    <keyword type="property" name="The “keyframe-auto” property" link="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--keyframe-auto"/>
-    <keyword type="property" name="The “keyframe-force” property" link="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--keyframe-force"/>
-    <keyword type="property" name="The “keyframe-freq” property" link="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--keyframe-freq"/>
-    <keyword type="property" name="The “keyframe-mindistance” property" link="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--keyframe-mindistance"/>
-    <keyword type="property" name="The “keyframe-threshold” property" link="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--keyframe-threshold"/>
-    <keyword type="property" name="The “noise-sensitivity” property" link="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--noise-sensitivity"/>
-    <keyword type="property" name="The “quality” property" link="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--quality"/>
-    <keyword type="property" name="The “quick” property" link="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--quick"/>
-    <keyword type="property" name="The “sharpness” property" link="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--sharpness"/>
-    <keyword type="property" name="The “speed-level” property" link="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--speed-level"/>
     <keyword type="property" name="The “cap-overflow” property" link="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--cap-overflow"/>
     <keyword type="property" name="The “cap-underflow” property" link="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--cap-underflow"/>
     <keyword type="property" name="The “drop-frames” property" link="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--drop-frames"/>
-    <keyword type="property" name="The “rate-buffer” property" link="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--rate-buffer"/>
-    <keyword type="property" name="The “vp3-compatible” property" link="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--vp3-compatible"/>
+    <keyword type="property" name="The “keyframe-auto” property" link="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--keyframe-auto"/>
+    <keyword type="property" name="The “keyframe-force” property" link="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--keyframe-force"/>
+    <keyword type="property" name="The “keyframe-freq” property" link="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--keyframe-freq"/>
     <keyword type="property" name="The “multipass-cache-file” property" link="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--multipass-cache-file"/>
     <keyword type="property" name="The “multipass-mode” property" link="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--multipass-mode"/>
-    <keyword type="property" name="The “dup-on-gap” property" link="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--dup-on-gap"/>
-    <keyword type="" name="Element Information" link="gst-plugins-base-plugins-theoraparse.html#id-1.2.34.7.2.1"/>
-    <keyword type="" name="Element Pads" link="gst-plugins-base-plugins-theoraparse.html#id-1.2.34.7.2.2"/>
+    <keyword type="property" name="The “quality” property" link="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--quality"/>
+    <keyword type="property" name="The “rate-buffer” property" link="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--rate-buffer"/>
+    <keyword type="property" name="The “speed-level” property" link="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--speed-level"/>
+    <keyword type="property" name="The “vp3-compatible” property" link="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--vp3-compatible"/>
+    <keyword type="" name="Element Information" link="gst-plugins-base-plugins-theoraparse.html#id-1.2.34.6.2.1"/>
+    <keyword type="" name="Element Pads" link="gst-plugins-base-plugins-theoraparse.html#id-1.2.34.6.2.2"/>
     <keyword type="struct" name="struct GstTheoraParse" link="gst-plugins-base-plugins-theoraparse.html#GstTheoraParse-struct"/>
-    <keyword type="property" name="The “synchronization-points” property" link="gst-plugins-base-plugins-theoraparse.html#GstTheoraParse--synchronization-points"/>
     <keyword type="" name="Element Information" link="gst-plugins-base-plugins-timeoverlay.html#id-1.2.35.6.2.1"/>
     <keyword type="" name="Element Pads" link="gst-plugins-base-plugins-timeoverlay.html#id-1.2.35.6.2.2"/>
     <keyword type="struct" name="struct GstTimeOverlay" link="gst-plugins-base-plugins-timeoverlay.html#GstTimeOverlay-struct"/>
@@ -502,48 +416,48 @@
     <keyword type="" name="Element Pads" link="gst-plugins-base-plugins-uridecodebin.html#id-1.2.36.9.2.2.2"/>
     <keyword type="struct" name="struct GstURIDecodeBin" link="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin-struct"/>
     <keyword type="enum" name="enum GstAutoplugSelectResult" link="gst-plugins-base-plugins-uridecodebin.html#GstAutoplugSelectResult"/>
-    <keyword type="property" name="The “uri” property" link="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--uri"/>
-    <keyword type="property" name="The “connection-speed” property" link="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--connection-speed"/>
-    <keyword type="property" name="The “caps” property" link="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--caps"/>
-    <keyword type="property" name="The “subtitle-encoding” property" link="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--subtitle-encoding"/>
-    <keyword type="property" name="The “source” property" link="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--source"/>
     <keyword type="property" name="The “buffer-duration” property" link="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--buffer-duration"/>
     <keyword type="property" name="The “buffer-size” property" link="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--buffer-size"/>
+    <keyword type="property" name="The “caps” property" link="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--caps"/>
+    <keyword type="property" name="The “connection-speed” property" link="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--connection-speed"/>
     <keyword type="property" name="The “download” property" link="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--download"/>
-    <keyword type="property" name="The “use-buffering” property" link="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--use-buffering"/>
     <keyword type="property" name="The “expose-all-streams” property" link="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--expose-all-streams"/>
     <keyword type="property" name="The “ring-buffer-max-size” property" link="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--ring-buffer-max-size"/>
+    <keyword type="property" name="The “source” property" link="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--source"/>
+    <keyword type="property" name="The “subtitle-encoding” property" link="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--subtitle-encoding"/>
+    <keyword type="property" name="The “uri” property" link="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--uri"/>
+    <keyword type="property" name="The “use-buffering” property" link="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--use-buffering"/>
     <keyword type="signal" name="The “autoplug-continue” signal" link="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin-autoplug-continue"/>
     <keyword type="signal" name="The “autoplug-factories” signal" link="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin-autoplug-factories"/>
-    <keyword type="signal" name="The “autoplug-select” signal" link="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin-autoplug-select"/>
-    <keyword type="signal" name="The “unknown-type” signal" link="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin-unknown-type"/>
-    <keyword type="signal" name="The “drained” signal" link="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin-drained"/>
-    <keyword type="signal" name="The “autoplug-sort” signal" link="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin-autoplug-sort"/>
-    <keyword type="signal" name="The “source-setup” signal" link="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin-source-setup"/>
     <keyword type="signal" name="The “autoplug-query” signal" link="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin-autoplug-query"/>
+    <keyword type="signal" name="The “autoplug-select” signal" link="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin-autoplug-select"/>
+    <keyword type="signal" name="The “autoplug-sort” signal" link="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin-autoplug-sort"/>
+    <keyword type="signal" name="The “drained” signal" link="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin-drained"/>
+    <keyword type="signal" name="The “source-setup” signal" link="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin-source-setup"/>
+    <keyword type="signal" name="The “unknown-type” signal" link="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin-unknown-type"/>
     <keyword type="" name="Example pipelines" link="gst-plugins-base-plugins-videorate.html#id-1.2.37.7.10"/>
-    <keyword type="" name="Element Information" link="gst-plugins-base-plugins-videorate.html#id-1.2.37.7.11.1.1"/>
-    <keyword type="" name="Element Pads" link="gst-plugins-base-plugins-videorate.html#id-1.2.37.7.11.1.2"/>
+    <keyword type="" name="Element Information" link="gst-plugins-base-plugins-videorate.html#id-1.2.37.7.11.1"/>
+    <keyword type="" name="Element Pads" link="gst-plugins-base-plugins-videorate.html#id-1.2.37.7.11.2"/>
     <keyword type="struct" name="struct GstVideoRate" link="gst-plugins-base-plugins-videorate.html#GstVideoRate-struct"/>
+    <keyword type="property" name="The “average-period” property" link="gst-plugins-base-plugins-videorate.html#GstVideoRate--average-period"/>
     <keyword type="property" name="The “drop” property" link="gst-plugins-base-plugins-videorate.html#GstVideoRate--drop"/>
+    <keyword type="property" name="The “drop-only” property" link="gst-plugins-base-plugins-videorate.html#GstVideoRate--drop-only"/>
     <keyword type="property" name="The “duplicate” property" link="gst-plugins-base-plugins-videorate.html#GstVideoRate--duplicate"/>
     <keyword type="property" name="The “in” property" link="gst-plugins-base-plugins-videorate.html#GstVideoRate--in"/>
+    <keyword type="property" name="The “max-rate” property" link="gst-plugins-base-plugins-videorate.html#GstVideoRate--max-rate"/>
     <keyword type="property" name="The “new-pref” property" link="gst-plugins-base-plugins-videorate.html#GstVideoRate--new-pref"/>
     <keyword type="property" name="The “out” property" link="gst-plugins-base-plugins-videorate.html#GstVideoRate--out"/>
     <keyword type="property" name="The “silent” property" link="gst-plugins-base-plugins-videorate.html#GstVideoRate--silent"/>
     <keyword type="property" name="The “skip-to-first” property" link="gst-plugins-base-plugins-videorate.html#GstVideoRate--skip-to-first"/>
-    <keyword type="property" name="The “average-period” property" link="gst-plugins-base-plugins-videorate.html#GstVideoRate--average-period"/>
-    <keyword type="property" name="The “drop-only” property" link="gst-plugins-base-plugins-videorate.html#GstVideoRate--drop-only"/>
-    <keyword type="property" name="The “max-rate” property" link="gst-plugins-base-plugins-videorate.html#GstVideoRate--max-rate"/>
     <keyword type="" name="Example pipelines" link="gst-plugins-base-plugins-videoscale.html#id-1.2.38.7.4"/>
-    <keyword type="" name="Element Information" link="gst-plugins-base-plugins-videoscale.html#id-1.2.38.7.5.1.1"/>
-    <keyword type="" name="Element Pads" link="gst-plugins-base-plugins-videoscale.html#id-1.2.38.7.5.1.2"/>
+    <keyword type="" name="Element Information" link="gst-plugins-base-plugins-videoscale.html#id-1.2.38.7.5.1"/>
+    <keyword type="" name="Element Pads" link="gst-plugins-base-plugins-videoscale.html#id-1.2.38.7.5.2"/>
     <keyword type="struct" name="struct GstVideoScale" link="gst-plugins-base-plugins-videoscale.html#GstVideoScale-struct"/>
     <keyword type="enum" name="enum GstVideoScaleMethod" link="gst-plugins-base-plugins-videoscale.html#GstVideoScaleMethod"/>
-    <keyword type="property" name="The “method” property" link="gst-plugins-base-plugins-videoscale.html#GstVideoScale--method"/>
     <keyword type="property" name="The “add-borders” property" link="gst-plugins-base-plugins-videoscale.html#GstVideoScale--add-borders"/>
     <keyword type="property" name="The “dither” property" link="gst-plugins-base-plugins-videoscale.html#GstVideoScale--dither"/>
     <keyword type="property" name="The “envelope” property" link="gst-plugins-base-plugins-videoscale.html#GstVideoScale--envelope"/>
+    <keyword type="property" name="The “method” property" link="gst-plugins-base-plugins-videoscale.html#GstVideoScale--method"/>
     <keyword type="property" name="The “sharpen” property" link="gst-plugins-base-plugins-videoscale.html#GstVideoScale--sharpen"/>
     <keyword type="property" name="The “sharpness” property" link="gst-plugins-base-plugins-videoscale.html#GstVideoScale--sharpness"/>
     <keyword type="" name="Example launch line" link="gst-plugins-base-plugins-videotestsrc.html#id-1.2.39.7.3"/>
@@ -551,11 +465,10 @@
     <keyword type="" name="Element Pads" link="gst-plugins-base-plugins-videotestsrc.html#id-1.2.39.7.4.2"/>
     <keyword type="struct" name="struct GstVideoTestSrc" link="gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc-struct"/>
     <keyword type="enum" name="enum GstVideoTestSrcPattern" link="gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrcPattern"/>
-    <keyword type="property" name="The “pattern” property" link="gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--pattern"/>
-    <keyword type="property" name="The “timestamp-offset” property" link="gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--timestamp-offset"/>
+    <keyword type="property" name="The “background-color” property" link="gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--background-color"/>
+    <keyword type="property" name="The “foreground-color” property" link="gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--foreground-color"/>
+    <keyword type="property" name="The “horizontal-speed” property" link="gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--horizontal-speed"/>
     <keyword type="property" name="The “is-live” property" link="gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--is-live"/>
-    <keyword type="property" name="The “peer-alloc” property" link="gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--peer-alloc"/>
-    <keyword type="property" name="The “colorspec” property" link="gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--colorspec"/>
     <keyword type="property" name="The “k0” property" link="gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--k0"/>
     <keyword type="property" name="The “kt” property" link="gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--kt"/>
     <keyword type="property" name="The “kt2” property" link="gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--kt2"/>
@@ -566,11 +479,10 @@
     <keyword type="property" name="The “ky” property" link="gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--ky"/>
     <keyword type="property" name="The “ky2” property" link="gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--ky2"/>
     <keyword type="property" name="The “kyt” property" link="gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--kyt"/>
+    <keyword type="property" name="The “pattern” property" link="gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--pattern"/>
+    <keyword type="property" name="The “timestamp-offset” property" link="gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--timestamp-offset"/>
     <keyword type="property" name="The “xoffset” property" link="gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--xoffset"/>
     <keyword type="property" name="The “yoffset” property" link="gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--yoffset"/>
-    <keyword type="property" name="The “background-color” property" link="gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--background-color"/>
-    <keyword type="property" name="The “foreground-color” property" link="gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--foreground-color"/>
-    <keyword type="property" name="The “horizontal-speed” property" link="gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--horizontal-speed"/>
     <keyword type="" name="Example launch line" link="gst-plugins-base-plugins-volume.html#id-1.2.40.8.3"/>
     <keyword type="" name="Element Information" link="gst-plugins-base-plugins-volume.html#id-1.2.40.8.4.1"/>
     <keyword type="" name="Element Pads" link="gst-plugins-base-plugins-volume.html#id-1.2.40.8.4.2"/>
@@ -599,32 +511,32 @@
     <keyword type="" name="Element Pads" link="gst-plugins-base-plugins-ximagesink.html#id-1.2.45.8.2.2"/>
     <keyword type="struct" name="struct GstXImageSink" link="gst-plugins-base-plugins-ximagesink.html#GstXImageSink-struct"/>
     <keyword type="property" name="The “display” property" link="gst-plugins-base-plugins-ximagesink.html#GstXImageSink--display"/>
-    <keyword type="property" name="The “pixel-aspect-ratio” property" link="gst-plugins-base-plugins-ximagesink.html#GstXImageSink--pixel-aspect-ratio"/>
-    <keyword type="property" name="The “synchronous” property" link="gst-plugins-base-plugins-ximagesink.html#GstXImageSink--synchronous"/>
     <keyword type="property" name="The “force-aspect-ratio” property" link="gst-plugins-base-plugins-ximagesink.html#GstXImageSink--force-aspect-ratio"/>
     <keyword type="property" name="The “handle-events” property" link="gst-plugins-base-plugins-ximagesink.html#GstXImageSink--handle-events"/>
     <keyword type="property" name="The “handle-expose” property" link="gst-plugins-base-plugins-ximagesink.html#GstXImageSink--handle-expose"/>
+    <keyword type="property" name="The “pixel-aspect-ratio” property" link="gst-plugins-base-plugins-ximagesink.html#GstXImageSink--pixel-aspect-ratio"/>
+    <keyword type="property" name="The “synchronous” property" link="gst-plugins-base-plugins-ximagesink.html#GstXImageSink--synchronous"/>
     <keyword type="property" name="The “window-height” property" link="gst-plugins-base-plugins-ximagesink.html#GstXImageSink--window-height"/>
     <keyword type="property" name="The “window-width” property" link="gst-plugins-base-plugins-ximagesink.html#GstXImageSink--window-width"/>
     <keyword type="" name="Element Information" link="gst-plugins-base-plugins-xvimagesink.html#id-1.2.46.8.2.1"/>
     <keyword type="" name="Element Pads" link="gst-plugins-base-plugins-xvimagesink.html#id-1.2.46.8.2.2"/>
     <keyword type="struct" name="struct GstXvImageSink" link="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink-struct"/>
+    <keyword type="property" name="The “autopaint-colorkey” property" link="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--autopaint-colorkey"/>
     <keyword type="property" name="The “brightness” property" link="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--brightness"/>
+    <keyword type="property" name="The “colorkey” property" link="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--colorkey"/>
     <keyword type="property" name="The “contrast” property" link="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--contrast"/>
+    <keyword type="property" name="The “device” property" link="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--device"/>
+    <keyword type="property" name="The “device-name” property" link="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--device-name"/>
     <keyword type="property" name="The “display” property" link="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--display"/>
+    <keyword type="property" name="The “double-buffer” property" link="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--double-buffer"/>
+    <keyword type="property" name="The “draw-borders” property" link="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--draw-borders"/>
+    <keyword type="property" name="The “force-aspect-ratio” property" link="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--force-aspect-ratio"/>
+    <keyword type="property" name="The “handle-events” property" link="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--handle-events"/>
+    <keyword type="property" name="The “handle-expose” property" link="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--handle-expose"/>
     <keyword type="property" name="The “hue” property" link="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--hue"/>
     <keyword type="property" name="The “pixel-aspect-ratio” property" link="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--pixel-aspect-ratio"/>
     <keyword type="property" name="The “saturation” property" link="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--saturation"/>
     <keyword type="property" name="The “synchronous” property" link="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--synchronous"/>
-    <keyword type="property" name="The “force-aspect-ratio” property" link="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--force-aspect-ratio"/>
-    <keyword type="property" name="The “device” property" link="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--device"/>
-    <keyword type="property" name="The “device-name” property" link="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--device-name"/>
-    <keyword type="property" name="The “handle-events” property" link="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--handle-events"/>
-    <keyword type="property" name="The “double-buffer” property" link="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--double-buffer"/>
-    <keyword type="property" name="The “handle-expose” property" link="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--handle-expose"/>
-    <keyword type="property" name="The “autopaint-colorkey” property" link="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--autopaint-colorkey"/>
-    <keyword type="property" name="The “colorkey” property" link="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--colorkey"/>
-    <keyword type="property" name="The “draw-borders” property" link="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--draw-borders"/>
     <keyword type="property" name="The “window-height” property" link="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--window-height"/>
     <keyword type="property" name="The “window-width” property" link="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--window-width"/>
   </functions>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-adder.html b/docs/plugins/html/gst-plugins-base-plugins-adder.html
index dc2da2f..662e8ac 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-adder.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-adder.html
@@ -98,11 +98,10 @@
 </div>
  This pipeline produces two sine waves mixed together.
 </div>
-<p>Last reviewed on 2006-05-09 (0.10.7)</p>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.2.8.5.1.1"></a><h3>Element Information</h3>
+<a name="id-1.2.2.8.5.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -128,7 +127,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.2.8.5.1.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.2.8.5.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-base-plugins-alsasink.html b/docs/plugins/html/gst-plugins-base-plugins-alsasink.html
index dcf2efb..21083ce 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-alsasink.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-alsasink.html
@@ -45,6 +45,12 @@
 <tr>
 <td class="property_type">
 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-alsasink.html#GstAlsaSink--card-name" title="The “card-name” property">card-name</a></td>
+<td class="property_flags">Read</td>
+</tr>
+<tr>
+<td class="property_type">
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-alsasink.html#GstAlsaSink--device" title="The “device” property">device</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
@@ -54,12 +60,6 @@
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-alsasink.html#GstAlsaSink--device-name" title="The “device-name” property">device-name</a></td>
 <td class="property_flags">Read</td>
 </tr>
-<tr>
-<td class="property_type">
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-alsasink.html#GstAlsaSink--card-name" title="The “card-name” property">card-name</a></td>
-<td class="property_flags">Read</td>
-</tr>
 </tbody>
 </table></div>
 </div>
@@ -180,6 +180,14 @@
 <div class="refsect1">
 <a name="gst-plugins-base-plugins-alsasink.property-details"></a><h2>Property Details</h2>
 <div class="refsect2">
+<a name="GstAlsaSink--card-name"></a><h3>The <code class="literal">“card-name”</code> property</h3>
+<pre class="programlisting">  “card-name”                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
+<p>Human-readable name of the sound card.</p>
+<p>Flags: Read</p>
+<p>Default value: ""</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GstAlsaSink--device"></a><h3>The <code class="literal">“device”</code> property</h3>
 <pre class="programlisting">  “device”                   <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
 <p>ALSA device, as defined in an asound configuration file.</p>
@@ -194,14 +202,6 @@
 <p>Flags: Read</p>
 <p>Default value: ""</p>
 </div>
-<hr>
-<div class="refsect2">
-<a name="GstAlsaSink--card-name"></a><h3>The <code class="literal">“card-name”</code> property</h3>
-<pre class="programlisting">  “card-name”                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
-<p>Human-readable name of the sound card.</p>
-<p>Flags: Read</p>
-<p>Default value: ""</p>
-</div>
 </div>
 </div>
 <div class="footer">
diff --git a/docs/plugins/html/gst-plugins-base-plugins-alsasrc.html b/docs/plugins/html/gst-plugins-base-plugins-alsasrc.html
index ef36ec2..1cd47bb 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-alsasrc.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-alsasrc.html
@@ -45,6 +45,12 @@
 <tr>
 <td class="property_type">
 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-alsasrc.html#GstAlsaSrc--card-name" title="The “card-name” property">card-name</a></td>
+<td class="property_flags">Read</td>
+</tr>
+<tr>
+<td class="property_type">
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-alsasrc.html#GstAlsaSrc--device" title="The “device” property">device</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
@@ -54,12 +60,6 @@
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-alsasrc.html#GstAlsaSrc--device-name" title="The “device-name” property">device-name</a></td>
 <td class="property_flags">Read</td>
 </tr>
-<tr>
-<td class="property_type">
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-alsasrc.html#GstAlsaSrc--card-name" title="The “card-name” property">card-name</a></td>
-<td class="property_flags">Read</td>
-</tr>
 </tbody>
 </table></div>
 </div>
@@ -165,6 +165,14 @@
 <div class="refsect1">
 <a name="gst-plugins-base-plugins-alsasrc.property-details"></a><h2>Property Details</h2>
 <div class="refsect2">
+<a name="GstAlsaSrc--card-name"></a><h3>The <code class="literal">“card-name”</code> property</h3>
+<pre class="programlisting">  “card-name”                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
+<p>Human-readable name of the sound card.</p>
+<p>Flags: Read</p>
+<p>Default value: ""</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GstAlsaSrc--device"></a><h3>The <code class="literal">“device”</code> property</h3>
 <pre class="programlisting">  “device”                   <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
 <p>ALSA device, as defined in an asound configuration file.</p>
@@ -179,14 +187,6 @@
 <p>Flags: Read</p>
 <p>Default value: ""</p>
 </div>
-<hr>
-<div class="refsect2">
-<a name="GstAlsaSrc--card-name"></a><h3>The <code class="literal">“card-name”</code> property</h3>
-<pre class="programlisting">  “card-name”                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
-<p>Human-readable name of the sound card.</p>
-<p>Flags: Read</p>
-<p>Default value: ""</p>
-</div>
 </div>
 </div>
 <div class="footer">
diff --git a/docs/plugins/html/gst-plugins-base-plugins-appsink.html b/docs/plugins/html/gst-plugins-base-plugins-appsink.html
index 6a9c202..065cec2 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-appsink.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-appsink.html
@@ -88,20 +88,14 @@
 <td class="signal_flags">Run Last</td>
 </tr>
 <tr>
-<td class="signal_type"><span class="returnvalue">void</span></td>
-<td class="signal_name"><a class="link" href="gst-plugins-base-plugins-appsink.html#GstAppSink-new-buffer" title="The “new-buffer” signal">new-buffer</a></td>
-<td class="signal_flags">Run Last</td>
-</tr>
-<tr>
 <td class="signal_type"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="returnvalue">GstFlowReturn</span></a></td>
 <td class="signal_name"><a class="link" href="gst-plugins-base-plugins-appsink.html#GstAppSink-new-preroll" title="The “new-preroll” signal">new-preroll</a></td>
 <td class="signal_flags">Run Last</td>
 </tr>
 <tr>
-<td class="signal_type">
-<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstBuffer.html#GstBuffer"><span class="returnvalue">GstBuffer</span></a>*</td>
-<td class="signal_name"><a class="link" href="gst-plugins-base-plugins-appsink.html#GstAppSink-pull-buffer" title="The “pull-buffer” signal">pull-buffer</a></td>
-<td class="signal_flags">Action</td>
+<td class="signal_type"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="returnvalue">GstFlowReturn</span></a></td>
+<td class="signal_name"><a class="link" href="gst-plugins-base-plugins-appsink.html#GstAppSink-new-sample" title="The “new-sample” signal">new-sample</a></td>
+<td class="signal_flags">Run Last</td>
 </tr>
 <tr>
 <td class="signal_type">
@@ -110,22 +104,6 @@
 <td class="signal_flags">Action</td>
 </tr>
 <tr>
-<td class="signal_type"><span class="returnvalue">void</span></td>
-<td class="signal_name"><a class="link" href="gst-plugins-base-plugins-appsink.html#GstAppSink-new-buffer-list" title="The “new-buffer-list” signal">new-buffer-list</a></td>
-<td class="signal_flags">Run Last</td>
-</tr>
-<tr>
-<td class="signal_type">
-<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstBufferList.html#GstBufferList"><span class="returnvalue">GstBufferList</span></a>*</td>
-<td class="signal_name"><a class="link" href="gst-plugins-base-plugins-appsink.html#GstAppSink-pull-buffer-list" title="The “pull-buffer-list” signal">pull-buffer-list</a></td>
-<td class="signal_flags">Action</td>
-</tr>
-<tr>
-<td class="signal_type"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="returnvalue">GstFlowReturn</span></a></td>
-<td class="signal_name"><a class="link" href="gst-plugins-base-plugins-appsink.html#GstAppSink-new-sample" title="The “new-sample” signal">new-sample</a></td>
-<td class="signal_flags">Run Last</td>
-</tr>
-<tr>
 <td class="signal_type">
 <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstSample.html#GstSample"><span class="returnvalue">GstSample</span></a>*</td>
 <td class="signal_name"><a class="link" href="gst-plugins-base-plugins-appsink.html#GstAppSink-pull-sample" title="The “pull-sample” signal">pull-sample</a></td>
@@ -318,8 +296,8 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="GstAppSink-new-buffer"></a><h3>The <code class="literal">“new-buffer”</code> signal</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
+<a name="GstAppSink-new-preroll"></a><h3>The <code class="literal">“new-preroll”</code> signal</h3>
+<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="returnvalue">GstFlowReturn</span></a>
 user_function (<a class="link" href="gst-plugins-base-plugins-appsink.html#GstAppSink"><span class="type">GstAppSink</span></a> *gstappsink,
                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>    user_data)</pre>
 <p>
@@ -346,11 +324,15 @@
 </tbody>
 </table></div>
 </div>
+<div class="refsect3">
+<a name="id-1.2.4.13.3.6"></a><h4>Returns</h4>
+<p></p>
+</div>
 <p>Flags: Run Last</p>
 </div>
 <hr>
 <div class="refsect2">
-<a name="GstAppSink-new-preroll"></a><h3>The <code class="literal">“new-preroll”</code> signal</h3>
+<a name="GstAppSink-new-sample"></a><h3>The <code class="literal">“new-sample”</code> signal</h3>
 <pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="returnvalue">GstFlowReturn</span></a>
 user_function (<a class="link" href="gst-plugins-base-plugins-appsink.html#GstAppSink"><span class="type">GstAppSink</span></a> *gstappsink,
                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>    user_data)</pre>
@@ -386,8 +368,8 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="GstAppSink-pull-buffer"></a><h3>The <code class="literal">“pull-buffer”</code> signal</h3>
-<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstBuffer.html#GstBuffer"><span class="returnvalue">GstBuffer</span></a>*
+<a name="GstAppSink-pull-preroll"></a><h3>The <code class="literal">“pull-preroll”</code> signal</h3>
+<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstSample.html#GstSample"><span class="returnvalue">GstSample</span></a>*
 user_function (<a class="link" href="gst-plugins-base-plugins-appsink.html#GstAppSink"><span class="type">GstAppSink</span></a> *gstappsink,
                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>    user_data)</pre>
 <p>
@@ -422,7 +404,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="GstAppSink-pull-preroll"></a><h3>The <code class="literal">“pull-preroll”</code> signal</h3>
+<a name="GstAppSink-pull-sample"></a><h3>The <code class="literal">“pull-sample”</code> signal</h3>
 <pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstSample.html#GstSample"><span class="returnvalue">GstSample</span></a>*
 user_function (<a class="link" href="gst-plugins-base-plugins-appsink.html#GstAppSink"><span class="type">GstAppSink</span></a> *gstappsink,
                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>    user_data)</pre>
@@ -456,146 +438,6 @@
 </div>
 <p>Flags: Action</p>
 </div>
-<hr>
-<div class="refsect2">
-<a name="GstAppSink-new-buffer-list"></a><h3>The <code class="literal">“new-buffer-list”</code> signal</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-user_function (<a class="link" href="gst-plugins-base-plugins-appsink.html#GstAppSink"><span class="type">GstAppSink</span></a> *gstappsink,
-               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>    user_data)</pre>
-<p>
-</p>
-<div class="refsect3">
-<a name="id-1.2.4.13.7.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>gstappsink</p></td>
-<td class="parameter_description"><p>the object which received the signal.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p>Flags: Run Last</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstAppSink-pull-buffer-list"></a><h3>The <code class="literal">“pull-buffer-list”</code> signal</h3>
-<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstBufferList.html#GstBufferList"><span class="returnvalue">GstBufferList</span></a>*
-user_function (<a class="link" href="gst-plugins-base-plugins-appsink.html#GstAppSink"><span class="type">GstAppSink</span></a> *gstappsink,
-               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>    user_data)</pre>
-<p>
-</p>
-<div class="refsect3">
-<a name="id-1.2.4.13.8.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>gstappsink</p></td>
-<td class="parameter_description"><p>the object which received the signal.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="id-1.2.4.13.8.6"></a><h4>Returns</h4>
-<p></p>
-</div>
-<p>Flags: Action</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstAppSink-new-sample"></a><h3>The <code class="literal">“new-sample”</code> signal</h3>
-<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="returnvalue">GstFlowReturn</span></a>
-user_function (<a class="link" href="gst-plugins-base-plugins-appsink.html#GstAppSink"><span class="type">GstAppSink</span></a> *gstappsink,
-               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>    user_data)</pre>
-<p>
-</p>
-<div class="refsect3">
-<a name="id-1.2.4.13.9.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>gstappsink</p></td>
-<td class="parameter_description"><p>the object which received the signal.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="id-1.2.4.13.9.6"></a><h4>Returns</h4>
-<p></p>
-</div>
-<p>Flags: Run Last</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstAppSink-pull-sample"></a><h3>The <code class="literal">“pull-sample”</code> signal</h3>
-<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstSample.html#GstSample"><span class="returnvalue">GstSample</span></a>*
-user_function (<a class="link" href="gst-plugins-base-plugins-appsink.html#GstAppSink"><span class="type">GstAppSink</span></a> *gstappsink,
-               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>    user_data)</pre>
-<p>
-</p>
-<div class="refsect3">
-<a name="id-1.2.4.13.10.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>gstappsink</p></td>
-<td class="parameter_description"><p>the object which received the signal.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="id-1.2.4.13.10.6"></a><h4>Returns</h4>
-<p></p>
-</div>
-<p>Flags: Action</p>
-</div>
 </div>
 </div>
 <div class="footer">
diff --git a/docs/plugins/html/gst-plugins-base-plugins-appsrc.html b/docs/plugins/html/gst-plugins-base-plugins-appsrc.html
index bc76101..24d97a5 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-appsrc.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-appsrc.html
@@ -56,6 +56,16 @@
 <td class="property_flags">Read / Write</td>
 </tr>
 <tr>
+<td class="property_type"><span class="type">guint64</span></td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-appsrc.html#GstAppSrc--current-level-bytes" title="The “current-level-bytes” property">current-level-bytes</a></td>
+<td class="property_flags">Read</td>
+</tr>
+<tr>
+<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-appsrc.html#GstAppSrc--emit-signals" title="The “emit-signals” property">emit-signals</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
 <td class="property_type"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstFormat.html#GstFormat"><span class="type">GstFormat</span></a></td>
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-appsrc.html#GstAppSrc--format" title="The “format” property">format</a></td>
 <td class="property_flags">Read / Write</td>
@@ -81,6 +91,11 @@
 <td class="property_flags">Read / Write</td>
 </tr>
 <tr>
+<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-appsrc.html#GstAppSrc--min-percent" title="The “min-percent” property">min-percent</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
 <td class="property_type"><span class="type">gint64</span></td>
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-appsrc.html#GstAppSrc--size" title="The “size” property">size</a></td>
 <td class="property_flags">Read / Write</td>
@@ -90,21 +105,6 @@
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-appsrc.html#GstAppSrc--stream-type" title="The “stream-type” property">stream-type</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-appsrc.html#GstAppSrc--emit-signals" title="The “emit-signals” property">emit-signals</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-appsrc.html#GstAppSrc--min-percent" title="The “min-percent” property">min-percent</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><span class="type">guint64</span></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-appsrc.html#GstAppSrc--current-level-bytes" title="The “current-level-bytes” property">current-level-bytes</a></td>
-<td class="property_flags">Read</td>
-</tr>
 </tbody>
 </table></div>
 </div>
@@ -271,6 +271,22 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="GstAppSrc--current-level-bytes"></a><h3>The <code class="literal">“current-level-bytes”</code> property</h3>
+<pre class="programlisting">  “current-level-bytes”      <span class="type">guint64</span></pre>
+<p>The number of currently queued bytes.</p>
+<p>Flags: Read</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstAppSrc--emit-signals"></a><h3>The <code class="literal">“emit-signals”</code> property</h3>
+<pre class="programlisting">  “emit-signals”             <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Emit need-data, enough-data and seek-data signals.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GstAppSrc--format"></a><h3>The <code class="literal">“format”</code> property</h3>
 <pre class="programlisting">  “format”                   <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstFormat.html#GstFormat"><span class="type">GstFormat</span></a></pre>
 <p>The format of the segment events and seek.</p>
@@ -313,6 +329,15 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="GstAppSrc--min-percent"></a><h3>The <code class="literal">“min-percent”</code> property</h3>
+<pre class="programlisting">  “min-percent”              <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></pre>
+<p>Emit need-data when queued bytes drops below this percent of max-bytes.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: &lt;= 100</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GstAppSrc--size"></a><h3>The <code class="literal">“size”</code> property</h3>
 <pre class="programlisting">  “size”                     <span class="type">gint64</span></pre>
 <p>The size of the data stream in bytes (-1 if unknown).</p>
@@ -328,31 +353,6 @@
 <p>Flags: Read / Write</p>
 <p>Default value: GST_APP_STREAM_TYPE_STREAM</p>
 </div>
-<hr>
-<div class="refsect2">
-<a name="GstAppSrc--emit-signals"></a><h3>The <code class="literal">“emit-signals”</code> property</h3>
-<pre class="programlisting">  “emit-signals”             <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
-<p>Emit need-data, enough-data and seek-data signals.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: TRUE</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstAppSrc--min-percent"></a><h3>The <code class="literal">“min-percent”</code> property</h3>
-<pre class="programlisting">  “min-percent”              <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></pre>
-<p>Emit need-data when queued bytes drops below this percent of max-bytes.</p>
-<p>Flags: Read / Write</p>
-<p>Allowed values: &lt;= 100</p>
-<p>Default value: 0</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstAppSrc--current-level-bytes"></a><h3>The <code class="literal">“current-level-bytes”</code> property</h3>
-<pre class="programlisting">  “current-level-bytes”      <span class="type">guint64</span></pre>
-<p>The number of currently queued bytes.</p>
-<p>Flags: Read</p>
-<p>Default value: 0</p>
-</div>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-base-plugins-appsrc.signal-details"></a><h2>Signal Details</h2>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-audioconvert.html b/docs/plugins/html/gst-plugins-base-plugins-audioconvert.html
index bdf113a..87d498e 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-audioconvert.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-audioconvert.html
@@ -120,11 +120,10 @@
  The vorbis encoder takes float audio data instead of the integer data
 generated by audiotestsrc.
 </div>
-<p>Last reviewed on 2006-03-02 (0.10.4)</p>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.7.7.4.1.1"></a><h3>Element Information</h3>
+<a name="id-1.2.7.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -150,7 +149,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.7.7.4.1.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.7.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-base-plugins-audiorate.html b/docs/plugins/html/gst-plugins-base-plugins-audiorate.html
index b0a6798..1b52a7e 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-audiorate.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-audiorate.html
@@ -68,13 +68,13 @@
 <td class="property_flags">Read / Write</td>
 </tr>
 <tr>
-<td class="property_type"><span class="type">guint64</span></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-audiorate.html#GstAudioRate--tolerance" title="The “tolerance” property">tolerance</a></td>
+<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-audiorate.html#GstAudioRate--skip-to-first" title="The “skip-to-first” property">skip-to-first</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
 <tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-audiorate.html#GstAudioRate--skip-to-first" title="The “skip-to-first” property">skip-to-first</a></td>
+<td class="property_type"><span class="type">guint64</span></td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-audiorate.html#GstAudioRate--tolerance" title="The “tolerance” property">tolerance</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
 </tbody>
@@ -278,22 +278,20 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="GstAudioRate--skip-to-first"></a><h3>The <code class="literal">“skip-to-first”</code> property</h3>
+<pre class="programlisting">  “skip-to-first”            <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Don't produce buffers before the first one we receive.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GstAudioRate--tolerance"></a><h3>The <code class="literal">“tolerance”</code> property</h3>
 <pre class="programlisting">  “tolerance”                <span class="type">guint64</span></pre>
 <p>The difference between incoming timestamp and next timestamp must exceed
 the given value for audiorate to add or drop samples.</p>
 <p>Flags: Read / Write</p>
 <p>Default value: 40000000</p>
-<p class="since">Since 0.10.26</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstAudioRate--skip-to-first"></a><h3>The <code class="literal">“skip-to-first”</code> property</h3>
-<pre class="programlisting">  “skip-to-first”            <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
-<p>Don't produce buffers before the first one we receive.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: FALSE</p>
-<p class="since">Since 0.10.33</p>
 </div>
 </div>
 <div class="refsect1">
diff --git a/docs/plugins/html/gst-plugins-base-plugins-audioresample.html b/docs/plugins/html/gst-plugins-base-plugins-audioresample.html
index b117132..5b89113 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-audioresample.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-audioresample.html
@@ -44,11 +44,6 @@
 <tbody>
 <tr>
 <td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-audioresample.html#GstAudioResample--filter-length" title="The “filter-length” property">filter-length</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-audioresample.html#GstAudioResample--quality" title="The “quality” property">quality</a></td>
 <td class="property_flags">Read / Write / Construct</td>
 </tr>
@@ -211,15 +206,6 @@
 <div class="refsect1">
 <a name="gst-plugins-base-plugins-audioresample.property-details"></a><h2>Property Details</h2>
 <div class="refsect2">
-<a name="GstAudioResample--filter-length"></a><h3>The <code class="literal">“filter-length”</code> property</h3>
-<pre class="programlisting">  “filter-length”            <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
-<p>Length of the resample filter.</p>
-<p>Flags: Read / Write</p>
-<p>Allowed values: &gt;= 0</p>
-<p>Default value: 64</p>
-</div>
-<hr>
-<div class="refsect2">
 <a name="GstAudioResample--quality"></a><h3>The <code class="literal">“quality”</code> property</h3>
 <pre class="programlisting">  “quality”                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
 <p>Resample quality with 0 being the lowest and 10 being the best.</p>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-audiotestsrc.html b/docs/plugins/html/gst-plugins-base-plugins-audiotestsrc.html
index d3e55a3..857d55f 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-audiotestsrc.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-audiotestsrc.html
@@ -43,6 +43,16 @@
 </colgroup>
 <tbody>
 <tr>
+<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-audiotestsrc.html#GstAudioTestSrc--can-activate-pull" title="The “can-activate-pull” property">can-activate-pull</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-audiotestsrc.html#GstAudioTestSrc--can-activate-push" title="The “can-activate-push” property">can-activate-push</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
 <td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></td>
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-audiotestsrc.html#GstAudioTestSrc--freq" title="The “freq” property">freq</a></td>
 <td class="property_flags">Read / Write</td>
@@ -72,16 +82,6 @@
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-audiotestsrc.html#GstAudioTestSrc--wave" title="The “wave” property">wave</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-audiotestsrc.html#GstAudioTestSrc--can-activate-pull" title="The “can-activate-pull” property">can-activate-pull</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-audiotestsrc.html#GstAudioTestSrc--can-activate-push" title="The “can-activate-push” property">can-activate-push</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
 </tbody>
 </table></div>
 </div>
@@ -327,6 +327,22 @@
 <div class="refsect1">
 <a name="gst-plugins-base-plugins-audiotestsrc.property-details"></a><h2>Property Details</h2>
 <div class="refsect2">
+<a name="GstAudioTestSrc--can-activate-pull"></a><h3>The <code class="literal">“can-activate-pull”</code> property</h3>
+<pre class="programlisting">  “can-activate-pull”        <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Can activate in pull mode.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstAudioTestSrc--can-activate-push"></a><h3>The <code class="literal">“can-activate-push”</code> property</h3>
+<pre class="programlisting">  “can-activate-push”        <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Can activate in push mode.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GstAudioTestSrc--freq"></a><h3>The <code class="literal">“freq”</code> property</h3>
 <pre class="programlisting">  “freq”                     <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></pre>
 <p>Frequency of test signal.</p>
@@ -376,22 +392,6 @@
 <p>Flags: Read / Write</p>
 <p>Default value: Sine</p>
 </div>
-<hr>
-<div class="refsect2">
-<a name="GstAudioTestSrc--can-activate-pull"></a><h3>The <code class="literal">“can-activate-pull”</code> property</h3>
-<pre class="programlisting">  “can-activate-pull”        <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
-<p>Can activate in pull mode.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: FALSE</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstAudioTestSrc--can-activate-push"></a><h3>The <code class="literal">“can-activate-push”</code> property</h3>
-<pre class="programlisting">  “can-activate-push”        <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
-<p>Can activate in push mode.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: TRUE</p>
-</div>
 </div>
 </div>
 <div class="footer">
diff --git a/docs/plugins/html/gst-plugins-base-plugins-cdparanoiasrc.html b/docs/plugins/html/gst-plugins-base-plugins-cdparanoiasrc.html
index c5ae884..4395412 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-cdparanoiasrc.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-cdparanoiasrc.html
@@ -45,6 +45,11 @@
 </colgroup>
 <tbody>
 <tr>
+<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-cdparanoiasrc.html#GstCdParanoiaSrc--cache-size" title="The “cache-size” property">cache-size</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
 <td class="property_type">
 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-cdparanoiasrc.html#GstCdParanoiaSrc--generic-device" title="The “generic-device” property">generic-device</a></td>
@@ -65,11 +70,6 @@
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-cdparanoiasrc.html#GstCdParanoiaSrc--search-overlap" title="The “search-overlap” property">search-overlap</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-cdparanoiasrc.html#GstCdParanoiaSrc--cache-size" title="The “cache-size” property">cache-size</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
 </tbody>
 </table></div>
 </div>
@@ -202,6 +202,15 @@
 <div class="refsect1">
 <a name="gst-plugins-base-plugins-cdparanoiasrc.property-details"></a><h2>Property Details</h2>
 <div class="refsect2">
+<a name="GstCdParanoiaSrc--cache-size"></a><h3>The <code class="literal">“cache-size”</code> property</h3>
+<pre class="programlisting">  “cache-size”               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Set CD cache size to n sectors (-1 = auto).</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: &gt;= G_MAXULONG</p>
+<p>Default value: -1</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GstCdParanoiaSrc--generic-device"></a><h3>The <code class="literal">“generic-device”</code> property</h3>
 <pre class="programlisting">  “generic-device”           <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
 <p>Use specified generic scsi device.</p>
@@ -234,15 +243,6 @@
 <p>Allowed values: [G_MAXULONG,75]</p>
 <p>Default value: -1</p>
 </div>
-<hr>
-<div class="refsect2">
-<a name="GstCdParanoiaSrc--cache-size"></a><h3>The <code class="literal">“cache-size”</code> property</h3>
-<pre class="programlisting">  “cache-size”               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
-<p>Set CD cache size to n sectors (-1 = auto).</p>
-<p>Flags: Read / Write</p>
-<p>Allowed values: &gt;= G_MAXULONG</p>
-<p>Default value: -1</p>
-</div>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-base-plugins-cdparanoiasrc.signal-details"></a><h2>Signal Details</h2>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-clockoverlay.html b/docs/plugins/html/gst-plugins-base-plugins-clockoverlay.html
index 16c6804..30262e4 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-clockoverlay.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-clockoverlay.html
@@ -126,6 +126,10 @@
 <td><p><span class="term">details</span></p></td>
 <td>video/x-raw, format=(string){ BGRx, RGBx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, I420, YV12, AYUV, YUY2, UYVY, v308, Y41B, Y42B, Y444, NV12, NV21, A420, YUV9, YVU9, IYU1, GRAY8 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
 </tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
 </tbody>
 </table></div>
 <div class="variablelist"><table border="0" class="variablelist">
@@ -150,6 +154,10 @@
 <td><p><span class="term">details</span></p></td>
 <td>video/x-raw, format=(string){ BGRx, RGBx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, I420, YV12, AYUV, YUY2, UYVY, v308, Y41B, Y42B, Y444, NV12, NV21, A420, YUV9, YVU9, IYU1, GRAY8 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
 </tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
 </tbody>
 </table></div>
 </div>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-decodebin.html b/docs/plugins/html/gst-plugins-base-plugins-decodebin.html
index 220fb18..fe758a9 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-decodebin.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-decodebin.html
@@ -45,23 +45,17 @@
 </colgroup>
 <tbody>
 <tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-decodebin.html#GstDecodeBin--threaded" title="The “threaded” property">threaded</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type">
-<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a> *</td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-decodebin.html#GstDecodeBin--sink-caps" title="The “sink-caps” property">sink-caps</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
 <td class="property_type">
 <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a> *</td>
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-decodebin.html#GstDecodeBin--caps" title="The “caps” property">caps</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
 <tr>
+<td class="property_type"><span class="type">guint64</span></td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-decodebin.html#GstDecodeBin--connection-speed" title="The “connection-speed” property">connection-speed</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
 <td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-decodebin.html#GstDecodeBin--expose-all-streams" title="The “expose-all-streams” property">expose-all-streams</a></td>
 <td class="property_flags">Read / Write</td>
@@ -98,6 +92,12 @@
 </tr>
 <tr>
 <td class="property_type">
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-decodebin.html#GstDecodeBin--sink-caps" title="The “sink-caps” property">sink-caps</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type">
 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-decodebin.html#GstDecodeBin--subtitle-encoding" title="The “subtitle-encoding” property">subtitle-encoding</a></td>
 <td class="property_flags">Read / Write</td>
@@ -107,11 +107,6 @@
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-decodebin.html#GstDecodeBin--use-buffering" title="The “use-buffering” property">use-buffering</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
-<tr>
-<td class="property_type"><span class="type">guint64</span></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-decodebin.html#GstDecodeBin--connection-speed" title="The “connection-speed” property">connection-speed</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
 </tbody>
 </table></div>
 </div>
@@ -125,21 +120,6 @@
 </colgroup>
 <tbody>
 <tr>
-<td class="signal_type"><span class="returnvalue">void</span></td>
-<td class="signal_name"><a class="link" href="gst-plugins-base-plugins-decodebin.html#GstDecodeBin-new-decoded-pad" title="The “new-decoded-pad” signal">new-decoded-pad</a></td>
-<td class="signal_flags">Run Last</td>
-</tr>
-<tr>
-<td class="signal_type"><span class="returnvalue">void</span></td>
-<td class="signal_name"><a class="link" href="gst-plugins-base-plugins-decodebin.html#GstDecodeBin-removed-decoded-pad" title="The “removed-decoded-pad” signal">removed-decoded-pad</a></td>
-<td class="signal_flags">Run Last</td>
-</tr>
-<tr>
-<td class="signal_type"><span class="returnvalue">void</span></td>
-<td class="signal_name"><a class="link" href="gst-plugins-base-plugins-decodebin.html#GstDecodeBin-unknown-type" title="The “unknown-type” signal">unknown-type</a></td>
-<td class="signal_flags">Run Last</td>
-</tr>
-<tr>
 <td class="signal_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a></td>
 <td class="signal_name"><a class="link" href="gst-plugins-base-plugins-decodebin.html#GstDecodeBin-autoplug-continue" title="The “autoplug-continue” signal">autoplug-continue</a></td>
 <td class="signal_flags">Run Last</td>
@@ -151,6 +131,11 @@
 <td class="signal_flags">Run Last</td>
 </tr>
 <tr>
+<td class="signal_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a></td>
+<td class="signal_name"><a class="link" href="gst-plugins-base-plugins-decodebin.html#GstDecodeBin-autoplug-query" title="The “autoplug-query” signal">autoplug-query</a></td>
+<td class="signal_flags">Run Last</td>
+</tr>
+<tr>
 <td class="signal_type"><a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GstAutoplugSelectResult" title="enum GstAutoplugSelectResult"><span class="returnvalue">GstAutoplugSelectResult</span></a></td>
 <td class="signal_name"><a class="link" href="gst-plugins-base-plugins-decodebin.html#GstDecodeBin-autoplug-select" title="The “autoplug-select” signal">autoplug-select</a></td>
 <td class="signal_flags">Run Last</td>
@@ -167,8 +152,8 @@
 <td class="signal_flags">Run Last</td>
 </tr>
 <tr>
-<td class="signal_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a></td>
-<td class="signal_name"><a class="link" href="gst-plugins-base-plugins-decodebin.html#GstDecodeBin-autoplug-query" title="The “autoplug-query” signal">autoplug-query</a></td>
+<td class="signal_type"><span class="returnvalue">void</span></td>
+<td class="signal_name"><a class="link" href="gst-plugins-base-plugins-decodebin.html#GstDecodeBin-unknown-type" title="The “unknown-type” signal">unknown-type</a></td>
 <td class="signal_flags">Run Last</td>
 </tr>
 </tbody>
@@ -307,21 +292,6 @@
 <div class="refsect1">
 <a name="gst-plugins-base-plugins-decodebin.property-details"></a><h2>Property Details</h2>
 <div class="refsect2">
-<a name="GstDecodeBin--threaded"></a><h3>The <code class="literal">“threaded”</code> property</h3>
-<pre class="programlisting">  “threaded”                 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
-<p>Use threads.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: FALSE</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstDecodeBin--sink-caps"></a><h3>The <code class="literal">“sink-caps”</code> property</h3>
-<pre class="programlisting">  “sink-caps”                <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a> *</pre>
-<p>The caps of the input data. (NULL = use typefind element).</p>
-<p>Flags: Read / Write</p>
-</div>
-<hr>
-<div class="refsect2">
 <a name="GstDecodeBin--caps"></a><h3>The <code class="literal">“caps”</code> property</h3>
 <pre class="programlisting">  “caps”                     <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a> *</pre>
 <p>The caps on which to stop decoding.</p>
@@ -329,6 +299,15 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="GstDecodeBin--connection-speed"></a><h3>The <code class="literal">“connection-speed”</code> property</h3>
+<pre class="programlisting">  “connection-speed”         <span class="type">guint64</span></pre>
+<p>Network connection speed in kbps (0 = unknown).</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: &lt;= 18446744073709551</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GstDecodeBin--expose-all-streams"></a><h3>The <code class="literal">“expose-all-streams”</code> property</h3>
 <pre class="programlisting">  “expose-all-streams”       <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
 <p>Expose all streams, including those of unknown type or that don't match the 'caps' property.</p>
@@ -343,7 +322,6 @@
 <p>Flags: Read / Write</p>
 <p>Allowed values: [0,100]</p>
 <p>Default value: 99</p>
-<p class="since">Since 0.10.26</p>
 </div>
 <hr>
 <div class="refsect2">
@@ -353,7 +331,6 @@
 <p>Flags: Read / Write</p>
 <p>Allowed values: [0,100]</p>
 <p>Default value: 10</p>
-<p class="since">Since 0.10.26</p>
 </div>
 <hr>
 <div class="refsect2">
@@ -362,7 +339,6 @@
 <p>Max amount of buffers in the queue (0=automatic).</p>
 <p>Flags: Read / Write</p>
 <p>Default value: 0</p>
-<p class="since">Since 0.10.26</p>
 </div>
 <hr>
 <div class="refsect2">
@@ -371,7 +347,6 @@
 <p>Max amount of bytes in the queue (0=automatic).</p>
 <p>Flags: Read / Write</p>
 <p>Default value: 0</p>
-<p class="since">Since 0.10.26</p>
 </div>
 <hr>
 <div class="refsect2">
@@ -380,7 +355,6 @@
 <p>Max amount of time in the queue (in ns, 0=automatic).</p>
 <p>Flags: Read / Write</p>
 <p>Default value: 0</p>
-<p class="since">Since 0.10.26</p>
 </div>
 <hr>
 <div class="refsect2">
@@ -392,6 +366,13 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="GstDecodeBin--sink-caps"></a><h3>The <code class="literal">“sink-caps”</code> property</h3>
+<pre class="programlisting">  “sink-caps”                <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a> *</pre>
+<p>The caps of the input data. (NULL = use typefind element).</p>
+<p>Flags: Read / Write</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GstDecodeBin--subtitle-encoding"></a><h3>The <code class="literal">“subtitle-encoding”</code> property</h3>
 <pre class="programlisting">  “subtitle-encoding”        <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
 <p>Encoding to assume if input subtitles are not in UTF-8 encoding. If not set, the GST_SUBTITLE_ENCODING environment variable will be checked for an encoding to use. If that is not set either, ISO-8859-15 will be assumed.</p>
@@ -406,131 +387,10 @@
 <p>Flags: Read / Write</p>
 <p>Default value: FALSE</p>
 </div>
-<hr>
-<div class="refsect2">
-<a name="GstDecodeBin--connection-speed"></a><h3>The <code class="literal">“connection-speed”</code> property</h3>
-<pre class="programlisting">  “connection-speed”         <span class="type">guint64</span></pre>
-<p>Network connection speed in kbps (0 = unknown).</p>
-<p>Flags: Read / Write</p>
-<p>Allowed values: &lt;= 18446744073709551</p>
-<p>Default value: 0</p>
-</div>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-base-plugins-decodebin.signal-details"></a><h2>Signal Details</h2>
 <div class="refsect2">
-<a name="GstDecodeBin-new-decoded-pad"></a><h3>The <code class="literal">“new-decoded-pad”</code> signal</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-user_function (<a class="link" href="gst-plugins-base-plugins-decodebin.html#GstDecodeBin"><span class="type">GstDecodeBin</span></a> *gstdecodebin,
-               <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a>       *arg1,
-               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>      arg2,
-               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>      user_data)</pre>
-<p>
-</p>
-<div class="refsect3">
-<a name="id-1.2.13.13.2.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>gstdecodebin</p></td>
-<td class="parameter_description"><p>the object which received the signal.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p>Flags: Run Last</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstDecodeBin-removed-decoded-pad"></a><h3>The <code class="literal">“removed-decoded-pad”</code> signal</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-user_function (<a class="link" href="gst-plugins-base-plugins-decodebin.html#GstDecodeBin"><span class="type">GstDecodeBin</span></a> *gstdecodebin,
-               <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a>       *arg1,
-               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>      user_data)</pre>
-<p>
-</p>
-<div class="refsect3">
-<a name="id-1.2.13.13.3.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>gstdecodebin</p></td>
-<td class="parameter_description"><p>the object which received the signal.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p>Flags: Run Last</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstDecodeBin-unknown-type"></a><h3>The <code class="literal">“unknown-type”</code> signal</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-user_function (<a class="link" href="gst-plugins-base-plugins-decodebin.html#GstDecodeBin"><span class="type">GstDecodeBin</span></a> *bin,
-               <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a>       *pad,
-               <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>      *caps,
-               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>      user_data)</pre>
-<p>This signal is emitted when a pad for which there is no further possible
-decoding is added to the decodebin.</p>
-<div class="refsect3">
-<a name="id-1.2.13.13.4.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>bin</p></td>
-<td class="parameter_description"><p>The decodebin.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>pad</p></td>
-<td class="parameter_description"><p>The new pad containing caps that cannot be resolved to a 'final'
-stream type.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>caps</p></td>
-<td class="parameter_description"><p>The <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a> of the pad that cannot be resolved.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p>Flags: Run Last</p>
-</div>
-<hr>
-<div class="refsect2">
 <a name="GstDecodeBin-autoplug-continue"></a><h3>The <code class="literal">“autoplug-continue”</code> signal</h3>
 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
 user_function (<a class="link" href="gst-plugins-base-plugins-decodebin.html#GstDecodeBin"><span class="type">GstDecodeBin</span></a> *bin,
@@ -545,7 +405,7 @@
   connected in.
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.13.5.6"></a><h4>Parameters</h4>
+<a name="id-1.2.13.13.2.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -577,7 +437,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.13.5.7"></a><h4>Returns</h4>
+<a name="id-1.2.13.13.2.7"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><span class="type">TRUE</span></a> if you wish decodebin to look for elements that can
 handle the given <em class="parameter"><code>caps</code></em>
 . If <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><span class="type">FALSE</span></a>, those caps will be considered as
@@ -610,7 +470,7 @@
   signal, they will never be invoked!
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.13.6.8"></a><h4>Parameters</h4>
+<a name="id-1.2.13.13.3.8"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -642,7 +502,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.13.6.9"></a><h4>Returns</h4>
+<a name="id-1.2.13.13.3.9"></a><h4>Returns</h4>
 <p> a <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Value-arrays.html#GValueArray"><span class="type">GValueArray</span></a>* with a list of factories to try. The factories are
 by default tried in the returned order or based on the index returned by
 "autoplug-select".</p>
@@ -652,182 +512,6 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="GstDecodeBin-autoplug-select"></a><h3>The <code class="literal">“autoplug-select”</code> signal</h3>
-<pre class="programlisting"><a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GstAutoplugSelectResult" title="enum GstAutoplugSelectResult"><span class="returnvalue">GstAutoplugSelectResult</span></a>
-user_function (<a class="link" href="gst-plugins-base-plugins-decodebin.html#GstDecodeBin"><span class="type">GstDecodeBin</span></a>      *bin,
-               <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a>            *pad,
-               <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>           *caps,
-               <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElementFactory.html"><span class="type">GstElementFactory</span></a> *factory,
-               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>           user_data)</pre>
-<p>This signal is emitted once decodebin has found all the possible
-<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElementFactory.html"><span class="type">GstElementFactory</span></a> that can be used to handle the given <em class="parameter"><code>caps</code></em>
-. For each of
-those factories, this signal is emitted.</p>
-<p>The signal handler should return a <span class="type">GST_TYPE_AUTOPLUG_SELECT_RESULT</span> enum
-value indicating what decodebin should do next.</p>
-<p>A value of <a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GST-AUTOPLUG-SELECT-TRY:CAPS"><span class="type">GST_AUTOPLUG_SELECT_TRY</span></a> will try to autoplug an element from
-<em class="parameter"><code>factory</code></em>
-.</p>
-<p>A value of <a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GST-AUTOPLUG-SELECT-EXPOSE:CAPS"><span class="type">GST_AUTOPLUG_SELECT_EXPOSE</span></a> will expose <em class="parameter"><code>pad</code></em>
- without plugging
-any element to it.</p>
-<p>A value of <a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GST-AUTOPLUG-SELECT-SKIP:CAPS"><span class="type">GST_AUTOPLUG_SELECT_SKIP</span></a> will skip <em class="parameter"><code>factory</code></em>
- and move to the
-next factory.</p>
-<div class="note">
-  Only the signal handler that is connected first will ever by invoked.
-  Don't connect signal handlers with the <span class="type">G_CONNECT_AFTER</span> flag to this
-  signal, they will never be invoked!
-</div>
-<div class="refsect3">
-<a name="id-1.2.13.13.7.10"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>bin</p></td>
-<td class="parameter_description"><p>The decodebin.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>pad</p></td>
-<td class="parameter_description"><p>The <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a>.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>caps</p></td>
-<td class="parameter_description"><p>The <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>factory</p></td>
-<td class="parameter_description"><p>A <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElementFactory.html"><span class="type">GstElementFactory</span></a> to use.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="id-1.2.13.13.7.11"></a><h4>Returns</h4>
-<p> a <span class="type">GST_TYPE_AUTOPLUG_SELECT_RESULT</span> that indicates the required
-operation. the default handler will always return
-<a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GST-AUTOPLUG-SELECT-TRY:CAPS"><span class="type">GST_AUTOPLUG_SELECT_TRY</span></a>.</p>
-<p></p>
-</div>
-<p>Flags: Run Last</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstDecodeBin-autoplug-sort"></a><h3>The <code class="literal">“autoplug-sort”</code> signal</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Value-arrays.html#GValueArray"><span class="returnvalue">GValueArray</span></a>*
-user_function (<a class="link" href="gst-plugins-base-plugins-decodebin.html#GstDecodeBin"><span class="type">GstDecodeBin</span></a> *bin,
-               <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a>       *pad,
-               <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>      *caps,
-               <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Value-arrays.html#GValueArray"><span class="type">GValueArray</span></a>  *factories,
-               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>      user_data)</pre>
-<p>Once decodebin has found the possible <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElementFactory.html"><span class="type">GstElementFactory</span></a> objects to try
-for <em class="parameter"><code>caps</code></em>
- on <em class="parameter"><code>pad</code></em>
-, this signal is emited. The purpose of the signal is for
-the application to perform additional sorting or filtering on the element
-factory array.</p>
-<p>The callee should copy and modify <em class="parameter"><code>factories</code></em>
- or return <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><span class="type">NULL</span></a> if the
-order should not change.</p>
-<div class="note">
-  Invocation of signal handlers stops after one signal handler has
-  returned something else than <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><span class="type">NULL</span></a>. Signal handlers are invoked in
-  the order they were connected in.
-  Don't connect signal handlers with the <span class="type">G_CONNECT_AFTER</span> flag to this
-  signal, they will never be invoked!
-</div>
-<div class="refsect3">
-<a name="id-1.2.13.13.8.7"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>bin</p></td>
-<td class="parameter_description"><p>The decodebin.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>pad</p></td>
-<td class="parameter_description"><p>The <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a>.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>caps</p></td>
-<td class="parameter_description"><p>The <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>factories</p></td>
-<td class="parameter_description"><p>A <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Value-arrays.html#GValueArray"><span class="type">GValueArray</span></a> of possible <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElementFactory.html"><span class="type">GstElementFactory</span></a> to use.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="id-1.2.13.13.8.8"></a><h4>Returns</h4>
-<p> A new sorted array of <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElementFactory.html"><span class="type">GstElementFactory</span></a> objects.</p>
-<p></p>
-</div>
-<p>Flags: Run Last</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstDecodeBin-drained"></a><h3>The <code class="literal">“drained”</code> signal</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-user_function (<a class="link" href="gst-plugins-base-plugins-decodebin.html#GstDecodeBin"><span class="type">GstDecodeBin</span></a> *bin,
-               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>      user_data)</pre>
-<p>This signal is emitted once decodebin has finished decoding all the data.</p>
-<div class="refsect3">
-<a name="id-1.2.13.13.9.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>bin</p></td>
-<td class="parameter_description"><p>The decodebin</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p>Flags: Run Last</p>
-<p class="since">Since 0.10.16</p>
-</div>
-<hr>
-<div class="refsect2">
 <a name="GstDecodeBin-autoplug-query"></a><h3>The <code class="literal">“autoplug-query”</code> signal</h3>
 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
 user_function (<a class="link" href="gst-plugins-base-plugins-decodebin.html#GstDecodeBin"><span class="type">GstDecodeBin</span></a> *bin,
@@ -840,7 +524,7 @@
 be used to tell the element about the downstream supported caps
 for example.</p>
 <div class="refsect3">
-<a name="id-1.2.13.13.10.5"></a><h4>Parameters</h4>
+<a name="id-1.2.13.13.4.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -877,12 +561,234 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.13.13.10.6"></a><h4>Returns</h4>
+<a name="id-1.2.13.13.4.6"></a><h4>Returns</h4>
 <p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><span class="type">TRUE</span></a> if the query was handled, <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><span class="type">FALSE</span></a> otherwise.</p>
 <p></p>
 </div>
 <p>Flags: Run Last</p>
 </div>
+<hr>
+<div class="refsect2">
+<a name="GstDecodeBin-autoplug-select"></a><h3>The <code class="literal">“autoplug-select”</code> signal</h3>
+<pre class="programlisting"><a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GstAutoplugSelectResult" title="enum GstAutoplugSelectResult"><span class="returnvalue">GstAutoplugSelectResult</span></a>
+user_function (<a class="link" href="gst-plugins-base-plugins-decodebin.html#GstDecodeBin"><span class="type">GstDecodeBin</span></a>      *bin,
+               <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a>            *pad,
+               <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>           *caps,
+               <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElementFactory.html"><span class="type">GstElementFactory</span></a> *factory,
+               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>           user_data)</pre>
+<p>This signal is emitted once decodebin has found all the possible
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElementFactory.html"><span class="type">GstElementFactory</span></a> that can be used to handle the given <em class="parameter"><code>caps</code></em>
+. For each of
+those factories, this signal is emitted.</p>
+<p>The signal handler should return a <span class="type">GST_TYPE_AUTOPLUG_SELECT_RESULT</span> enum
+value indicating what decodebin should do next.</p>
+<p>A value of <a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GST-AUTOPLUG-SELECT-TRY:CAPS"><span class="type">GST_AUTOPLUG_SELECT_TRY</span></a> will try to autoplug an element from
+<em class="parameter"><code>factory</code></em>
+.</p>
+<p>A value of <a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GST-AUTOPLUG-SELECT-EXPOSE:CAPS"><span class="type">GST_AUTOPLUG_SELECT_EXPOSE</span></a> will expose <em class="parameter"><code>pad</code></em>
+ without plugging
+any element to it.</p>
+<p>A value of <a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GST-AUTOPLUG-SELECT-SKIP:CAPS"><span class="type">GST_AUTOPLUG_SELECT_SKIP</span></a> will skip <em class="parameter"><code>factory</code></em>
+ and move to the
+next factory.</p>
+<div class="note">
+  The signal handler will not be invoked if any of the previously
+  registered signal handlers (if any) return a value other than
+  GST_AUTOPLUG_SELECT_TRY. Which also means that if you return
+  GST_AUTOPLUG_SELECT_TRY from one signal handler, handlers that get
+  registered next (again, if any) can override that decision.
+</div>
+<div class="refsect3">
+<a name="id-1.2.13.13.5.10"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>bin</p></td>
+<td class="parameter_description"><p>The decodebin.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>pad</p></td>
+<td class="parameter_description"><p>The <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a>.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>caps</p></td>
+<td class="parameter_description"><p>The <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>factory</p></td>
+<td class="parameter_description"><p>A <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElementFactory.html"><span class="type">GstElementFactory</span></a> to use.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>user_data</p></td>
+<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.13.13.5.11"></a><h4>Returns</h4>
+<p> a <span class="type">GST_TYPE_AUTOPLUG_SELECT_RESULT</span> that indicates the required
+operation. the default handler will always return
+<a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GST-AUTOPLUG-SELECT-TRY:CAPS"><span class="type">GST_AUTOPLUG_SELECT_TRY</span></a>.</p>
+<p></p>
+</div>
+<p>Flags: Run Last</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstDecodeBin-autoplug-sort"></a><h3>The <code class="literal">“autoplug-sort”</code> signal</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Value-arrays.html#GValueArray"><span class="returnvalue">GValueArray</span></a>*
+user_function (<a class="link" href="gst-plugins-base-plugins-decodebin.html#GstDecodeBin"><span class="type">GstDecodeBin</span></a> *bin,
+               <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a>       *pad,
+               <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>      *caps,
+               <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Value-arrays.html#GValueArray"><span class="type">GValueArray</span></a>  *factories,
+               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>      user_data)</pre>
+<p>Once decodebin has found the possible <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElementFactory.html"><span class="type">GstElementFactory</span></a> objects to try
+for <em class="parameter"><code>caps</code></em>
+ on <em class="parameter"><code>pad</code></em>
+, this signal is emited. The purpose of the signal is for
+the application to perform additional sorting or filtering on the element
+factory array.</p>
+<p>The callee should copy and modify <em class="parameter"><code>factories</code></em>
+ or return <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><span class="type">NULL</span></a> if the
+order should not change.</p>
+<div class="note">
+  Invocation of signal handlers stops after one signal handler has
+  returned something else than <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><span class="type">NULL</span></a>. Signal handlers are invoked in
+  the order they were connected in.
+  Don't connect signal handlers with the <span class="type">G_CONNECT_AFTER</span> flag to this
+  signal, they will never be invoked!
+</div>
+<div class="refsect3">
+<a name="id-1.2.13.13.6.7"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>bin</p></td>
+<td class="parameter_description"><p>The decodebin.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>pad</p></td>
+<td class="parameter_description"><p>The <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a>.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>caps</p></td>
+<td class="parameter_description"><p>The <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>factories</p></td>
+<td class="parameter_description"><p>A <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Value-arrays.html#GValueArray"><span class="type">GValueArray</span></a> of possible <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElementFactory.html"><span class="type">GstElementFactory</span></a> to use.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>user_data</p></td>
+<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.13.13.6.8"></a><h4>Returns</h4>
+<p> A new sorted array of <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElementFactory.html"><span class="type">GstElementFactory</span></a> objects.</p>
+<p></p>
+</div>
+<p>Flags: Run Last</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstDecodeBin-drained"></a><h3>The <code class="literal">“drained”</code> signal</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+user_function (<a class="link" href="gst-plugins-base-plugins-decodebin.html#GstDecodeBin"><span class="type">GstDecodeBin</span></a> *bin,
+               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>      user_data)</pre>
+<p>This signal is emitted once decodebin has finished decoding all the data.</p>
+<div class="refsect3">
+<a name="id-1.2.13.13.7.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>bin</p></td>
+<td class="parameter_description"><p>The decodebin</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>user_data</p></td>
+<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p>Flags: Run Last</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstDecodeBin-unknown-type"></a><h3>The <code class="literal">“unknown-type”</code> signal</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+user_function (<a class="link" href="gst-plugins-base-plugins-decodebin.html#GstDecodeBin"><span class="type">GstDecodeBin</span></a> *bin,
+               <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a>       *pad,
+               <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>      *caps,
+               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>      user_data)</pre>
+<p>This signal is emitted when a pad for which there is no further possible
+decoding is added to the decodebin.</p>
+<div class="refsect3">
+<a name="id-1.2.13.13.8.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>bin</p></td>
+<td class="parameter_description"><p>The decodebin.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>pad</p></td>
+<td class="parameter_description"><p>The new pad containing caps that cannot be resolved to a 'final'
+stream type.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>caps</p></td>
+<td class="parameter_description"><p>The <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a> of the pad that cannot be resolved.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>user_data</p></td>
+<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p>Flags: Run Last</p>
+</div>
 </div>
 </div>
 <div class="footer">
diff --git a/docs/plugins/html/gst-plugins-base-plugins-encodebin.html b/docs/plugins/html/gst-plugins-base-plugins-encodebin.html
index d1f825a..424ca2f 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-encodebin.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-encodebin.html
@@ -55,6 +55,11 @@
 <td class="property_flags">Read / Write</td>
 </tr>
 <tr>
+<td class="property_type"><span class="type">GstEncodeBinFlags</span></td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-encodebin.html#GstEncodeBin--flags" title="The “flags” property">flags</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
 <td class="property_type">
 <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-encoding-profile.html#GstEncodingProfile"><span class="type">GstEncodingProfile</span></a> *</td>
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-encodebin.html#GstEncodeBin--profile" title="The “profile” property">profile</a></td>
@@ -75,11 +80,6 @@
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-encodebin.html#GstEncodeBin--queue-time-max" title="The “queue-time-max” property">queue-time-max</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
-<tr>
-<td class="property_type"><span class="type">GstEncodeBinFlags</span></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-encodebin.html#GstEncodeBin--flags" title="The “flags” property">flags</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
 </tbody>
 </table></div>
 </div>
@@ -368,6 +368,13 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="GstEncodeBin--flags"></a><h3>The <code class="literal">“flags”</code> property</h3>
+<pre class="programlisting">  “flags”                    <span class="type">GstEncodeBinFlags</span></pre>
+<p>Control the behaviour of encodebin.</p>
+<p>Flags: Read / Write</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GstEncodeBin--profile"></a><h3>The <code class="literal">“profile”</code> property</h3>
 <pre class="programlisting">  “profile”                  <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-encoding-profile.html#GstEncodingProfile"><span class="type">GstEncodingProfile</span></a> *</pre>
 <p>The <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-encoding-profile.html#GstEncodingProfile"><span class="type">GstEncodingProfile</span></a> to use. This property must be set before going
@@ -398,13 +405,6 @@
 <p>Flags: Read / Write</p>
 <p>Default value: 1000000000</p>
 </div>
-<hr>
-<div class="refsect2">
-<a name="GstEncodeBin--flags"></a><h3>The <code class="literal">“flags”</code> property</h3>
-<pre class="programlisting">  “flags”                    <span class="type">GstEncodeBinFlags</span></pre>
-<p>Control the behaviour of encodebin.</p>
-<p>Flags: Read / Write</p>
-</div>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-base-plugins-encodebin.signal-details"></a><h2>Signal Details</h2>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-giosink.html b/docs/plugins/html/gst-plugins-base-plugins-giosink.html
index 0636f9a..c090dc8 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-giosink.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-giosink.html
@@ -45,14 +45,14 @@
 <tbody>
 <tr>
 <td class="property_type">
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-giosink.html#GstGioSink--location" title="The “location” property">location</a></td>
+<a href="http://library.gnome.org/devel/gio/unstable/GFile.html"><span class="type">GFile</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-giosink.html#GstGioSink--file" title="The “file” property">file</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
 <tr>
 <td class="property_type">
-<a href="http://library.gnome.org/devel/gio/unstable/GFile.html"><span class="type">GFile</span></a> *</td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-giosink.html#GstGioSink--file" title="The “file” property">file</a></td>
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-giosink.html#GstGioSink--location" title="The “location” property">location</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
 </tbody>
@@ -221,20 +221,19 @@
 <div class="refsect1">
 <a name="gst-plugins-base-plugins-giosink.property-details"></a><h2>Property Details</h2>
 <div class="refsect2">
+<a name="GstGioSink--file"></a><h3>The <code class="literal">“file”</code> property</h3>
+<pre class="programlisting">  “file”                     <a href="http://library.gnome.org/devel/gio/unstable/GFile.html"><span class="type">GFile</span></a> *</pre>
+<p><a href="http://library.gnome.org/devel/gio/unstable/GFile.html"><code class="literal">GFile</code></a> to write to.</p>
+<p>Flags: Read / Write</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GstGioSink--location"></a><h3>The <code class="literal">“location”</code> property</h3>
 <pre class="programlisting">  “location”                 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
 <p>URI location to write to.</p>
 <p>Flags: Read / Write</p>
 <p>Default value: NULL</p>
 </div>
-<hr>
-<div class="refsect2">
-<a name="GstGioSink--file"></a><h3>The <code class="literal">“file”</code> property</h3>
-<pre class="programlisting">  “file”                     <a href="http://library.gnome.org/devel/gio/unstable/GFile.html"><span class="type">GFile</span></a> *</pre>
-<p><a href="http://library.gnome.org/devel/gio/unstable/GFile.html"><code class="literal">GFile</code></a> to write to.</p>
-<p>Flags: Read / Write</p>
-<p class="since">Since 0.10.20</p>
-</div>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-base-plugins-giosink.see-also"></a><h2>See Also</h2>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-giosrc.html b/docs/plugins/html/gst-plugins-base-plugins-giosrc.html
index c43d29a..6b52feb 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-giosrc.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-giosrc.html
@@ -45,14 +45,14 @@
 <tbody>
 <tr>
 <td class="property_type">
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-giosrc.html#GstGioSrc--location" title="The “location” property">location</a></td>
+<a href="http://library.gnome.org/devel/gio/unstable/GFile.html"><span class="type">GFile</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-giosrc.html#GstGioSrc--file" title="The “file” property">file</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
 <tr>
 <td class="property_type">
-<a href="http://library.gnome.org/devel/gio/unstable/GFile.html"><span class="type">GFile</span></a> *</td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-giosrc.html#GstGioSrc--file" title="The “file” property">file</a></td>
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-giosrc.html#GstGioSrc--location" title="The “location” property">location</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
 </tbody>
@@ -218,20 +218,19 @@
 <div class="refsect1">
 <a name="gst-plugins-base-plugins-giosrc.property-details"></a><h2>Property Details</h2>
 <div class="refsect2">
+<a name="GstGioSrc--file"></a><h3>The <code class="literal">“file”</code> property</h3>
+<pre class="programlisting">  “file”                     <a href="http://library.gnome.org/devel/gio/unstable/GFile.html"><span class="type">GFile</span></a> *</pre>
+<p><a href="http://library.gnome.org/devel/gio/unstable/GFile.html"><code class="literal">GFile</code></a> to read from.</p>
+<p>Flags: Read / Write</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GstGioSrc--location"></a><h3>The <code class="literal">“location”</code> property</h3>
 <pre class="programlisting">  “location”                 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
 <p>URI location to read from.</p>
 <p>Flags: Read / Write</p>
 <p>Default value: NULL</p>
 </div>
-<hr>
-<div class="refsect2">
-<a name="GstGioSrc--file"></a><h3>The <code class="literal">“file”</code> property</h3>
-<pre class="programlisting">  “file”                     <a href="http://library.gnome.org/devel/gio/unstable/GFile.html"><span class="type">GFile</span></a> *</pre>
-<p><a href="http://library.gnome.org/devel/gio/unstable/GFile.html"><code class="literal">GFile</code></a> to read from.</p>
-<p>Flags: Read / Write</p>
-<p class="since">Since 0.10.20</p>
-</div>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-base-plugins-giosrc.see-also"></a><h2>See Also</h2>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-multifdsink.html b/docs/plugins/html/gst-plugins-base-plugins-multifdsink.html
index 4709afb..fe131b2 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-multifdsink.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-multifdsink.html
@@ -42,123 +42,11 @@
 <col width="300px" class="properties_name">
 <col width="200px" class="properties_flags">
 </colgroup>
-<tbody>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--buffers-max" title="The “buffers-max” property">buffers-max</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--buffers-queued" title="The “buffers-queued” property">buffers-queued</a></td>
-<td class="property_flags">Read</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--buffers-soft-max" title="The “buffers-soft-max” property">buffers-soft-max</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><span class="type">guint64</span></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--bytes-served" title="The “bytes-served” property">bytes-served</a></td>
-<td class="property_flags">Read</td>
-</tr>
-<tr>
-<td class="property_type"><span class="type">guint64</span></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--bytes-to-serve" title="The “bytes-to-serve” property">bytes-to-serve</a></td>
-<td class="property_flags">Read</td>
-</tr>
-<tr>
-<td class="property_type"><span class="type">GstFDSetMode</span></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--mode" title="The “mode” property">mode</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base/html/gst-plugins-base-plugins-multifdsink.html#GstTCPProtocol"><span class="type">GstTCPProtocol</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--protocol" title="The “protocol” property">protocol</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstRecoverPolicy" title="enum GstRecoverPolicy"><span class="type">GstRecoverPolicy</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--recover-policy" title="The “recover-policy” property">recover-policy</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--sync-clients" title="The “sync-clients” property">sync-clients</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstSyncMethod" title="enum GstSyncMethod"><span class="type">GstSyncMethod</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--sync-method" title="The “sync-method” property">sync-method</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><span class="type">guint64</span></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--timeout" title="The “timeout” property">timeout</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--buffers-min" title="The “buffers-min” property">buffers-min</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base/html/gst-plugins-base-plugins-multifdsink.html#GstTCPUnitType"><span class="type">GstTCPUnitType</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--burst-unit" title="The “burst-unit” property">burst-unit</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><span class="type">guint64</span></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--burst-value" title="The “burst-value” property">burst-value</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--bytes-min" title="The “bytes-min” property">bytes-min</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><span class="type">gint64</span></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--time-min" title="The “time-min” property">time-min</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base/html/gst-plugins-base-plugins-multifdsink.html#GstTCPUnitType"><span class="type">GstTCPUnitType</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--unit-type" title="The “unit-type” property">unit-type</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><span class="type">gint64</span></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--units-max" title="The “units-max” property">units-max</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><span class="type">gint64</span></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--units-soft-max" title="The “units-soft-max” property">units-soft-max</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--qos-dscp" title="The “qos-dscp” property">qos-dscp</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
+<tbody><tr>
 <td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--handle-read" title="The “handle-read” property">handle-read</a></td>
 <td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--resend-streamheader" title="The “resend-streamheader” property">resend-streamheader</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--num-fds" title="The “num-fds” property">num-fds</a></td>
-<td class="property_flags">Read</td>
-</tr>
-</tbody>
+</tr></tbody>
 </table></div>
 </div>
 <div class="refsect1">
@@ -177,7 +65,7 @@
 </tr>
 <tr>
 <td class="signal_type"><span class="returnvalue">void</span></td>
-<td class="signal_name"><a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink-clear" title="The “clear” signal">clear</a></td>
+<td class="signal_name"><a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink-add-full" title="The “add-full” signal">add-full</a></td>
 <td class="signal_flags">Action</td>
 </tr>
 <tr>
@@ -187,6 +75,11 @@
 </tr>
 <tr>
 <td class="signal_type"><span class="returnvalue">void</span></td>
+<td class="signal_name"><a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink-client-fd-removed" title="The “client-fd-removed” signal">client-fd-removed</a></td>
+<td class="signal_flags">Run Last</td>
+</tr>
+<tr>
+<td class="signal_type"><span class="returnvalue">void</span></td>
 <td class="signal_name"><a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink-client-removed" title="The “client-removed” signal">client-removed</a></td>
 <td class="signal_flags">Run Last</td>
 </tr>
@@ -203,24 +96,9 @@
 </tr>
 <tr>
 <td class="signal_type"><span class="returnvalue">void</span></td>
-<td class="signal_name"><a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink-client-fd-removed" title="The “client-fd-removed” signal">client-fd-removed</a></td>
-<td class="signal_flags">Run Last</td>
-</tr>
-<tr>
-<td class="signal_type"><span class="returnvalue">void</span></td>
-<td class="signal_name"><a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink-add-full" title="The “add-full” signal">add-full</a></td>
-<td class="signal_flags">Action</td>
-</tr>
-<tr>
-<td class="signal_type"><span class="returnvalue">void</span></td>
 <td class="signal_name"><a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink-remove-flush" title="The “remove-flush” signal">remove-flush</a></td>
 <td class="signal_flags">Action</td>
 </tr>
-<tr>
-<td class="signal_type"><span class="returnvalue">void</span></td>
-<td class="signal_name"><a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink-client-handle-removed" title="The “client-handle-removed” signal">client-handle-removed</a></td>
-<td class="signal_flags">Run Last</td>
-</tr>
 </tbody>
 </table></div>
 </div>
@@ -269,14 +147,14 @@
 For each descriptor added, the <a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink-client-added" title="The “client-added” signal"><span class="type">“client-added”</span></a> signal will be called.</p>
 <p>The multifdsink element needs to be set into READY, PAUSED or PLAYING state
 before operations such as adding clients are possible.</p>
-<p>As of version 0.10.8, a client can also be added with the <a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink-add-full" title="The “add-full” signal"><span class="type">“add-full”</span></a> signal
+<p>A client can also be added with the <a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink-add-full" title="The “add-full” signal"><span class="type">“add-full”</span></a> signal
 that allows for more control over what and how much data a client 
 initially receives.</p>
 <p>Clients can be removed from multifdsink by emitting the <a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink-remove" title="The “remove” signal"><span class="type">“remove”</span></a> signal. For
 each descriptor removed, the <a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink-client-removed" title="The “client-removed” signal"><span class="type">“client-removed”</span></a> signal will be called. The
 <a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink-client-removed" title="The “client-removed” signal"><span class="type">“client-removed”</span></a> signal can also be fired when multifdsink decides that a
 client is not active anymore or, depending on the value of the
-<a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--recover-policy" title="The “recover-policy” property"><span class="type">“recover-policy”</span></a> property, if the client is reading too slowly.
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base/html/gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--recover-policy"><span class="type">“recover-policy”</span></a> property, if the client is reading too slowly.
 In all cases, multifdsink will never close a file descriptor itself.
 The user of multifdsink is responsible for closing all file descriptors.
 This can for example be done in response to the <a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink-client-fd-removed" title="The “client-fd-removed” signal"><span class="type">“client-fd-removed”</span></a> signal.
@@ -289,7 +167,7 @@
 separate thread to send the buffers to the clients. This ensures that no
 client write can block the pipeline and that clients can read with different
 speeds.</p>
-<p>When adding a client to multifdsink, the <a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--sync-method" title="The “sync-method” property"><span class="type">“sync-method”</span></a> property will define
+<p>When adding a client to multifdsink, the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base/html/gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--sync-method"><span class="type">“sync-method”</span></a> property will define
 which buffer in the queued buffers will be sent first to the client. Clients 
 can be sent the most recent buffer (which might not be decodable by the 
 client if it is not a keyframe), the next keyframe received in 
@@ -297,7 +175,7 @@
 last received keyframe (which will cause a simple burst-on-connect). 
 Multifdsink will always keep at least one keyframe in its internal buffers
 when the sync-mode is set to latest-keyframe.</p>
-<p>As of version 0.10.8, there are additional values for the <a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--sync-method" title="The “sync-method” property"><span class="type">“sync-method”</span></a> 
+<p>There are additional values for the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base/html/gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--sync-method"><span class="type">“sync-method”</span></a>
 property to allow finer control over burst-on-connect behaviour. By selecting
 the 'burst' method a minimum burst size can be chosen, 'burst-keyframe'
 additionally requires that the burst begin with a keyframe, and 
@@ -305,7 +183,7 @@
 prefer a minimum burst size even if it requires not starting with a keyframe.</p>
 <p>Multifdsink can be instructed to keep at least a minimum amount of data
 expressed in time or byte units in its internal queues with the 
-<a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--time-min" title="The “time-min” property"><span class="type">“time-min”</span></a> and <a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--bytes-min" title="The “bytes-min” property"><span class="type">“bytes-min”</span></a> properties respectively.
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base/html/gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--time-min"><span class="type">“time-min”</span></a> and <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base/html/gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--bytes-min"><span class="type">“bytes-min”</span></a> properties respectively.
 These properties are useful if the application adds clients with the 
 <a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink-add-full" title="The “add-full” signal"><span class="type">“add-full”</span></a> signal to make sure that a burst connect can
 actually be honored. </p>
@@ -314,11 +192,11 @@
 fast, no data will be send to the client until multifdsink receives more
 data. If the client, however, reads too slowly, data for that client will be 
 queued up in multifdsink. Two properties control the amount of data 
-(buffers) that is queued in multifdsink: <a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--buffers-max" title="The “buffers-max” property"><span class="type">“buffers-max”</span></a> and 
-<a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--buffers-soft-max" title="The “buffers-soft-max” property"><span class="type">“buffers-soft-max”</span></a>. A client that falls behind by
-<a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--buffers-max" title="The “buffers-max” property"><span class="type">“buffers-max”</span></a> is removed from multifdsink forcibly.</p>
-<p>A client with a lag of at least <a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--buffers-soft-max" title="The “buffers-soft-max” property"><span class="type">“buffers-soft-max”</span></a> enters the recovery
-procedure which is controlled with the <a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--recover-policy" title="The “recover-policy” property"><span class="type">“recover-policy”</span></a> property.
+(buffers) that is queued in multifdsink: <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base/html/gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--buffers-max"><span class="type">“buffers-max”</span></a> and 
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base/html/gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--buffers-soft-max"><span class="type">“buffers-soft-max”</span></a>. A client that falls behind by
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base/html/gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--buffers-max"><span class="type">“buffers-max”</span></a> is removed from multifdsink forcibly.</p>
+<p>A client with a lag of at least <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base/html/gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--buffers-soft-max"><span class="type">“buffers-soft-max”</span></a> enters the recovery
+procedure which is controlled with the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base/html/gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--recover-policy"><span class="type">“recover-policy”</span></a> property.
 A recover policy of NONE will do nothing, RESYNC_LATEST will send the most recently
 received buffer as the next buffer for the client, RESYNC_SOFT_LIMIT
 positions the client to the soft limit in the buffer queue and
@@ -328,11 +206,10 @@
 buffers to the clients. This behaviour can be disabled by setting the sync 
 property to FALSE. Multifdsink will by default not do QoS and will never
 drop late buffers.</p>
-<p>Last reviewed on 2006-09-12 (0.10.10)</p>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.20.8.13.1.1"></a><h3>Element Information</h3>
+<a name="id-1.2.20.8.12.1.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -358,7 +235,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.20.8.13.1.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.20.8.12.1.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -578,196 +455,12 @@
 <div class="refsect1">
 <a name="gst-plugins-base-plugins-multifdsink.property-details"></a><h2>Property Details</h2>
 <div class="refsect2">
-<a name="GstMultiFdSink--buffers-max"></a><h3>The <code class="literal">“buffers-max”</code> property</h3>
-<pre class="programlisting">  “buffers-max”              <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
-<p>max number of buffers to queue for a client (-1 = no limit).</p>
-<p>Flags: Read / Write</p>
-<p>Allowed values: &gt;= -1</p>
-<p>Default value: -1</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiFdSink--buffers-queued"></a><h3>The <code class="literal">“buffers-queued”</code> property</h3>
-<pre class="programlisting">  “buffers-queued”           <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></pre>
-<p>Number of buffers currently queued.</p>
-<p>Flags: Read</p>
-<p>Default value: 0</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiFdSink--buffers-soft-max"></a><h3>The <code class="literal">“buffers-soft-max”</code> property</h3>
-<pre class="programlisting">  “buffers-soft-max”         <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
-<p>Recover client when going over this limit (-1 = no limit).</p>
-<p>Flags: Read / Write</p>
-<p>Allowed values: &gt;= -1</p>
-<p>Default value: -1</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiFdSink--bytes-served"></a><h3>The <code class="literal">“bytes-served”</code> property</h3>
-<pre class="programlisting">  “bytes-served”             <span class="type">guint64</span></pre>
-<p>Total number of bytes send to all clients.</p>
-<p>Flags: Read</p>
-<p>Default value: 0</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiFdSink--bytes-to-serve"></a><h3>The <code class="literal">“bytes-to-serve”</code> property</h3>
-<pre class="programlisting">  “bytes-to-serve”           <span class="type">guint64</span></pre>
-<p>Number of bytes received to serve to clients.</p>
-<p>Flags: Read</p>
-<p>Default value: 0</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiFdSink--mode"></a><h3>The <code class="literal">“mode”</code> property</h3>
-<pre class="programlisting">  “mode”                     <span class="type">GstFDSetMode</span></pre>
-<p>The mode for selecting activity on the fds (deprecated).</p>
-<p>Flags: Read / Write</p>
-<p>Default value: Poll</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiFdSink--protocol"></a><h3>The <code class="literal">“protocol”</code> property</h3>
-<pre class="programlisting">  “protocol”                 <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base/html/gst-plugins-base-plugins-multifdsink.html#GstTCPProtocol"><span class="type">GstTCPProtocol</span></a></pre>
-<p>The protocol to wrap data in. GDP protocol here is deprecated. Please use gdppay element.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: GST_TCP_PROTOCOL_NONE</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiFdSink--recover-policy"></a><h3>The <code class="literal">“recover-policy”</code> property</h3>
-<pre class="programlisting">  “recover-policy”           <a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstRecoverPolicy" title="enum GstRecoverPolicy"><span class="type">GstRecoverPolicy</span></a></pre>
-<p>How to recover when client reaches the soft max.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: Do not try to recover</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiFdSink--sync-clients"></a><h3>The <code class="literal">“sync-clients”</code> property</h3>
-<pre class="programlisting">  “sync-clients”             <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
-<p>(DEPRECATED) Sync clients to a keyframe.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: FALSE</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiFdSink--sync-method"></a><h3>The <code class="literal">“sync-method”</code> property</h3>
-<pre class="programlisting">  “sync-method”              <a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstSyncMethod" title="enum GstSyncMethod"><span class="type">GstSyncMethod</span></a></pre>
-<p>How to sync new clients to the stream.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: Serve starting from the latest buffer</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiFdSink--timeout"></a><h3>The <code class="literal">“timeout”</code> property</h3>
-<pre class="programlisting">  “timeout”                  <span class="type">guint64</span></pre>
-<p>Maximum inactivity timeout in nanoseconds for a client (0 = no limit).</p>
-<p>Flags: Read / Write</p>
-<p>Default value: 0</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiFdSink--buffers-min"></a><h3>The <code class="literal">“buffers-min”</code> property</h3>
-<pre class="programlisting">  “buffers-min”              <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
-<p>min number of buffers to queue (-1 = as few as possible).</p>
-<p>Flags: Read / Write</p>
-<p>Allowed values: &gt;= -1</p>
-<p>Default value: -1</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiFdSink--burst-unit"></a><h3>The <code class="literal">“burst-unit”</code> property</h3>
-<pre class="programlisting">  “burst-unit”               <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base/html/gst-plugins-base-plugins-multifdsink.html#GstTCPUnitType"><span class="type">GstTCPUnitType</span></a></pre>
-<p>The format of the burst units (when sync-method is burst[[-with]-keyframe]).</p>
-<p>Flags: Read / Write</p>
-<p>Default value: Undefined</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiFdSink--burst-value"></a><h3>The <code class="literal">“burst-value”</code> property</h3>
-<pre class="programlisting">  “burst-value”              <span class="type">guint64</span></pre>
-<p>The amount of burst expressed in burst-unit.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: 0</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiFdSink--bytes-min"></a><h3>The <code class="literal">“bytes-min”</code> property</h3>
-<pre class="programlisting">  “bytes-min”                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
-<p>min number of bytes to queue (-1 = as little as possible).</p>
-<p>Flags: Read / Write</p>
-<p>Allowed values: &gt;= -1</p>
-<p>Default value: -1</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiFdSink--time-min"></a><h3>The <code class="literal">“time-min”</code> property</h3>
-<pre class="programlisting">  “time-min”                 <span class="type">gint64</span></pre>
-<p>min number of time to queue (-1 = as little as possible).</p>
-<p>Flags: Read / Write</p>
-<p>Allowed values: &gt;= -1</p>
-<p>Default value: -1</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiFdSink--unit-type"></a><h3>The <code class="literal">“unit-type”</code> property</h3>
-<pre class="programlisting">  “unit-type”                <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base/html/gst-plugins-base-plugins-multifdsink.html#GstTCPUnitType"><span class="type">GstTCPUnitType</span></a></pre>
-<p>The unit to measure the max/soft-max/queued properties.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: Buffers</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiFdSink--units-max"></a><h3>The <code class="literal">“units-max”</code> property</h3>
-<pre class="programlisting">  “units-max”                <span class="type">gint64</span></pre>
-<p>max number of units to queue (-1 = no limit).</p>
-<p>Flags: Read / Write</p>
-<p>Allowed values: &gt;= -1</p>
-<p>Default value: -1</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiFdSink--units-soft-max"></a><h3>The <code class="literal">“units-soft-max”</code> property</h3>
-<pre class="programlisting">  “units-soft-max”           <span class="type">gint64</span></pre>
-<p>Recover client when going over this limit (-1 = no limit).</p>
-<p>Flags: Read / Write</p>
-<p>Allowed values: &gt;= -1</p>
-<p>Default value: -1</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiFdSink--qos-dscp"></a><h3>The <code class="literal">“qos-dscp”</code> property</h3>
-<pre class="programlisting">  “qos-dscp”                 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
-<p>Quality of Service, differentiated services code point (-1 default).</p>
-<p>Flags: Read / Write</p>
-<p>Allowed values: [-1,63]</p>
-<p>Default value: -1</p>
-</div>
-<hr>
-<div class="refsect2">
 <a name="GstMultiFdSink--handle-read"></a><h3>The <code class="literal">“handle-read”</code> property</h3>
 <pre class="programlisting">  “handle-read”              <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
 <p>Handle client reads and discard the data.</p>
 <p>Flags: Read / Write</p>
 <p>Default value: TRUE</p>
 </div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiFdSink--resend-streamheader"></a><h3>The <code class="literal">“resend-streamheader”</code> property</h3>
-<pre class="programlisting">  “resend-streamheader”      <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
-<p>Resend the streamheader if it changes in the caps.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: TRUE</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiFdSink--num-fds"></a><h3>The <code class="literal">“num-fds”</code> property</h3>
-<pre class="programlisting">  “num-fds”                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></pre>
-<p>The current number of client file descriptors.</p>
-<p>Flags: Read</p>
-<p>Default value: 0</p>
-</div>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-base-plugins-multifdsink.signal-details"></a><h2>Signal Details</h2>
@@ -809,262 +502,6 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="GstMultiFdSink-clear"></a><h3>The <code class="literal">“clear”</code> signal</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-user_function (<a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink"><span class="type">GstMultiFdSink</span></a> *gstmultifdsink,
-               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>        user_data)</pre>
-<p>
-</p>
-<div class="refsect3">
-<a name="id-1.2.20.12.3.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>gstmultifdsink</p></td>
-<td class="parameter_description"><p>the object which received the signal.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p>Flags: Action</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiFdSink-client-added"></a><h3>The <code class="literal">“client-added”</code> signal</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-user_function (<a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink"><span class="type">GstMultiFdSink</span></a> *gstmultifdsink,
-               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>            fd,
-               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>        user_data)</pre>
-<p>The given file descriptor was added to multifdsink. This signal will
-be emitted from the streaming thread so application should be prepared
-for that.</p>
-<div class="refsect3">
-<a name="id-1.2.20.12.4.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>gstmultifdsink</p></td>
-<td class="parameter_description"><p>the multifdsink element that emitted this signal</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>fd</p></td>
-<td class="parameter_description"><p>the file descriptor that was added to multifdsink</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p>Flags: Run Last</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiFdSink-client-removed"></a><h3>The <code class="literal">“client-removed”</code> signal</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-user_function (<a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink"><span class="type">GstMultiFdSink</span></a>                *gstmultifdsink,
-               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                           fd,
-               <span class="type">GstMultiHandleSinkClientStatus</span> status,
-               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>                       user_data)</pre>
-<p>The given file descriptor is about to be removed from multifdsink. This
-signal will be emitted from the streaming thread so applications should
-be prepared for that.</p>
-<p><em class="parameter"><code>gstmultifdsink</code></em>
- still holds a handle to <em class="parameter"><code>fd</code></em>
- so it is possible to call
-the get-stats signal from this callback. For the same reason it is
-not safe to <code class="function">close()</code> and reuse <em class="parameter"><code>fd</code></em>
- in this callback.</p>
-<div class="refsect3">
-<a name="id-1.2.20.12.5.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>gstmultifdsink</p></td>
-<td class="parameter_description"><p>the multifdsink element that emitted this signal</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>fd</p></td>
-<td class="parameter_description"><p>the file descriptor that is to be removed from multifdsink</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>status</p></td>
-<td class="parameter_description"><p>the reason why the client was removed</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p>Flags: Run Last</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiFdSink-get-stats"></a><h3>The <code class="literal">“get-stats”</code> signal</h3>
-<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstStructure.html#GstStructure"><span class="returnvalue">GstStructure</span></a>*
-user_function (<a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink"><span class="type">GstMultiFdSink</span></a> *gstmultifdsink,
-               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>            fd,
-               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>        user_data)</pre>
-<p>Get statistics about <em class="parameter"><code>fd</code></em>
-. This function returns a GValueArray to ease
-automatic wrapping for bindings.</p>
-<div class="refsect3">
-<a name="id-1.2.20.12.6.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>gstmultifdsink</p></td>
-<td class="parameter_description"><p>the multifdsink element to emit this signal on</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>fd</p></td>
-<td class="parameter_description"><p>the file descriptor to get stats of from multifdsink</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="id-1.2.20.12.6.6"></a><h4>Returns</h4>
-<p> a GValueArray with the statistics. The array contains guint64
-values that represent respectively: total number of bytes sent, time
-when the client was added, time when the client was
-disconnected/removed, time the client is/was active, last activity
-time (in epoch seconds), number of buffers dropped.
-All times are expressed in nanoseconds (GstClockTime).
-The array can be 0-length if the client was not found.</p>
-<p></p>
-</div>
-<p>Flags: Action</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiFdSink-remove"></a><h3>The <code class="literal">“remove”</code> signal</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-user_function (<a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink"><span class="type">GstMultiFdSink</span></a> *gstmultifdsink,
-               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>            fd,
-               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>        user_data)</pre>
-<p>Remove the given open file descriptor from multifdsink.</p>
-<div class="refsect3">
-<a name="id-1.2.20.12.7.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>gstmultifdsink</p></td>
-<td class="parameter_description"><p>the multifdsink element to emit this signal on</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>fd</p></td>
-<td class="parameter_description"><p>the file descriptor to remove from multifdsink</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p>Flags: Action</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiFdSink-client-fd-removed"></a><h3>The <code class="literal">“client-fd-removed”</code> signal</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-user_function (<a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink"><span class="type">GstMultiFdSink</span></a> *gstmultifdsink,
-               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>            fd,
-               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>        user_data)</pre>
-<p>The given file descriptor was removed from multifdsink. This signal will
-be emitted from the streaming thread so applications should be prepared
-for that.</p>
-<p>In this callback, <em class="parameter"><code>gstmultifdsink</code></em>
- has removed all the information
-associated with <em class="parameter"><code>fd</code></em>
- and it is therefore not possible to call get-stats
-with <em class="parameter"><code>fd</code></em>
-. It is however safe to <code class="function">close()</code> and reuse <em class="parameter"><code>fd</code></em>
- in the callback.</p>
-<div class="refsect3">
-<a name="id-1.2.20.12.8.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>gstmultifdsink</p></td>
-<td class="parameter_description"><p>the multifdsink element that emitted this signal</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>fd</p></td>
-<td class="parameter_description"><p>the file descriptor that was removed from multifdsink</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p>Flags: Run Last</p>
-<p class="since">Since 0.10.7</p>
-</div>
-<hr>
-<div class="refsect2">
 <a name="GstMultiFdSink-add-full"></a><h3>The <code class="literal">“add-full”</code> signal</h3>
 <pre class="programlisting"><span class="returnvalue">void</span>
 user_function (<a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink"><span class="type">GstMultiFdSink</span></a>              *gstmultifdsink,
@@ -1078,7 +515,7 @@
 <p>Hand the given open file descriptor to multifdsink to write to and
 specify the burst parameters for the new connection.</p>
 <div class="refsect3">
-<a name="id-1.2.20.12.9.5"></a><h4>Parameters</h4>
+<a name="id-1.2.20.12.3.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1139,15 +576,200 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="GstMultiFdSink-remove-flush"></a><h3>The <code class="literal">“remove-flush”</code> signal</h3>
+<a name="GstMultiFdSink-client-added"></a><h3>The <code class="literal">“client-added”</code> signal</h3>
 <pre class="programlisting"><span class="returnvalue">void</span>
 user_function (<a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink"><span class="type">GstMultiFdSink</span></a> *gstmultifdsink,
                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>            fd,
                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>        user_data)</pre>
-<p>Remove the given open file descriptor from multifdsink after flushing all
-the pending data to the fd.</p>
+<p>The given file descriptor was added to multifdsink. This signal will
+be emitted from the streaming thread so application should be prepared
+for that.</p>
 <div class="refsect3">
-<a name="id-1.2.20.12.10.5"></a><h4>Parameters</h4>
+<a name="id-1.2.20.12.4.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>gstmultifdsink</p></td>
+<td class="parameter_description"><p>the multifdsink element that emitted this signal</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>fd</p></td>
+<td class="parameter_description"><p>the file descriptor that was added to multifdsink</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>user_data</p></td>
+<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p>Flags: Run Last</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMultiFdSink-client-fd-removed"></a><h3>The <code class="literal">“client-fd-removed”</code> signal</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+user_function (<a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink"><span class="type">GstMultiFdSink</span></a> *gstmultifdsink,
+               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>            fd,
+               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>        user_data)</pre>
+<p>The given file descriptor was removed from multifdsink. This signal will
+be emitted from the streaming thread so applications should be prepared
+for that.</p>
+<p>In this callback, <em class="parameter"><code>gstmultifdsink</code></em>
+ has removed all the information
+associated with <em class="parameter"><code>fd</code></em>
+ and it is therefore not possible to call get-stats
+with <em class="parameter"><code>fd</code></em>
+. It is however safe to <code class="function">close()</code> and reuse <em class="parameter"><code>fd</code></em>
+ in the callback.</p>
+<div class="refsect3">
+<a name="id-1.2.20.12.5.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>gstmultifdsink</p></td>
+<td class="parameter_description"><p>the multifdsink element that emitted this signal</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>fd</p></td>
+<td class="parameter_description"><p>the file descriptor that was removed from multifdsink</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>user_data</p></td>
+<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p>Flags: Run Last</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMultiFdSink-client-removed"></a><h3>The <code class="literal">“client-removed”</code> signal</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+user_function (<a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink"><span class="type">GstMultiFdSink</span></a>                *gstmultifdsink,
+               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                           fd,
+               <span class="type">GstMultiHandleSinkClientStatus</span> status,
+               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>                       user_data)</pre>
+<p>The given file descriptor is about to be removed from multifdsink. This
+signal will be emitted from the streaming thread so applications should
+be prepared for that.</p>
+<p><em class="parameter"><code>gstmultifdsink</code></em>
+ still holds a handle to <em class="parameter"><code>fd</code></em>
+ so it is possible to call
+the get-stats signal from this callback. For the same reason it is
+not safe to <code class="function">close()</code> and reuse <em class="parameter"><code>fd</code></em>
+ in this callback.</p>
+<div class="refsect3">
+<a name="id-1.2.20.12.6.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>gstmultifdsink</p></td>
+<td class="parameter_description"><p>the multifdsink element that emitted this signal</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>fd</p></td>
+<td class="parameter_description"><p>the file descriptor that is to be removed from multifdsink</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>status</p></td>
+<td class="parameter_description"><p>the reason why the client was removed</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>user_data</p></td>
+<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p>Flags: Run Last</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMultiFdSink-get-stats"></a><h3>The <code class="literal">“get-stats”</code> signal</h3>
+<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstStructure.html#GstStructure"><span class="returnvalue">GstStructure</span></a>*
+user_function (<a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink"><span class="type">GstMultiFdSink</span></a> *gstmultifdsink,
+               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>            fd,
+               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>        user_data)</pre>
+<p>Get statistics about <em class="parameter"><code>fd</code></em>
+. This function returns a GValueArray to ease
+automatic wrapping for bindings.</p>
+<div class="refsect3">
+<a name="id-1.2.20.12.7.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>gstmultifdsink</p></td>
+<td class="parameter_description"><p>the multifdsink element to emit this signal on</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>fd</p></td>
+<td class="parameter_description"><p>the file descriptor to get stats of from multifdsink</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>user_data</p></td>
+<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.20.12.7.6"></a><h4>Returns</h4>
+<p> a GValueArray with the statistics. The array contains guint64
+values that represent respectively: total number of bytes sent, time
+when the client was added, time when the client was
+disconnected/removed, time the client is/was active, last activity
+time (in epoch seconds), number of buffers dropped.
+All times are expressed in nanoseconds (GstClockTime).
+The array can be 0-length if the client was not found.</p>
+<p></p>
+</div>
+<p>Flags: Action</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMultiFdSink-remove"></a><h3>The <code class="literal">“remove”</code> signal</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+user_function (<a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink"><span class="type">GstMultiFdSink</span></a> *gstmultifdsink,
+               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>            fd,
+               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>        user_data)</pre>
+<p>Remove the given open file descriptor from multifdsink.</p>
+<div class="refsect3">
+<a name="id-1.2.20.12.8.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1177,15 +799,15 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="GstMultiFdSink-client-handle-removed"></a><h3>The <code class="literal">“client-handle-removed”</code> signal</h3>
+<a name="GstMultiFdSink-remove-flush"></a><h3>The <code class="literal">“remove-flush”</code> signal</h3>
 <pre class="programlisting"><span class="returnvalue">void</span>
 user_function (<a class="link" href="gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink"><span class="type">GstMultiFdSink</span></a> *gstmultifdsink,
-               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>            arg1,
+               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>            fd,
                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>        user_data)</pre>
-<p>
-</p>
+<p>Remove the given open file descriptor from multifdsink after flushing all
+the pending data to the fd.</p>
 <div class="refsect3">
-<a name="id-1.2.20.12.11.5"></a><h4>Parameters</h4>
+<a name="id-1.2.20.12.9.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1195,7 +817,12 @@
 <tbody>
 <tr>
 <td class="parameter_name"><p>gstmultifdsink</p></td>
-<td class="parameter_description"><p>the object which received the signal.</p></td>
+<td class="parameter_description"><p>the multifdsink element to emit this signal on</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>fd</p></td>
+<td class="parameter_description"><p>the file descriptor to remove from multifdsink</p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
@@ -1206,7 +833,7 @@
 </tbody>
 </table></div>
 </div>
-<p>Flags: Run Last</p>
+<p>Flags: Action</p>
 </div>
 </div>
 <div class="refsect1">
diff --git a/docs/plugins/html/gst-plugins-base-plugins-multisocketsink.html b/docs/plugins/html/gst-plugins-base-plugins-multisocketsink.html
index 28f99c5..78f16a5 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-multisocketsink.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-multisocketsink.html
@@ -16,8 +16,7 @@
 <td width="100%" align="left" class="shortcuts">
 <a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span> 
                   <a href="#gst-plugins-base-plugins-multisocketsink.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span> 
-                  <a href="#gst-plugins-base-plugins-multisocketsink.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties"> <span class="dim">|</span> 
-                  <a href="#gst-plugins-base-plugins-multisocketsink.properties" class="shortcut">Properties</a></span><span id="nav_signals"> <span class="dim">|</span> 
+                  <a href="#gst-plugins-base-plugins-multisocketsink.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_signals"> <span class="dim">|</span> 
                   <a href="#gst-plugins-base-plugins-multisocketsink.signals" class="shortcut">Signals</a></span>
 </td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
@@ -35,118 +34,6 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="gst-plugins-base-plugins-multisocketsink.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
-<colgroup>
-<col width="150px" class="properties_type">
-<col width="300px" class="properties_name">
-<col width="200px" class="properties_flags">
-</colgroup>
-<tbody>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--buffers-max" title="The “buffers-max” property">buffers-max</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--buffers-min" title="The “buffers-min” property">buffers-min</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--buffers-queued" title="The “buffers-queued” property">buffers-queued</a></td>
-<td class="property_flags">Read</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--buffers-soft-max" title="The “buffers-soft-max” property">buffers-soft-max</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstFormat.html#GstFormat"><span class="type">GstFormat</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--burst-format" title="The “burst-format” property">burst-format</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><span class="type">guint64</span></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--burst-value" title="The “burst-value” property">burst-value</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--bytes-min" title="The “bytes-min” property">bytes-min</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><span class="type">guint64</span></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--bytes-served" title="The “bytes-served” property">bytes-served</a></td>
-<td class="property_flags">Read</td>
-</tr>
-<tr>
-<td class="property_type"><span class="type">guint64</span></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--bytes-to-serve" title="The “bytes-to-serve” property">bytes-to-serve</a></td>
-<td class="property_flags">Read</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--handle-read" title="The “handle-read” property">handle-read</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--num-sockets" title="The “num-sockets” property">num-sockets</a></td>
-<td class="property_flags">Read</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--qos-dscp" title="The “qos-dscp” property">qos-dscp</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><span class="type">GstMultiSocketSinkRecoverPolicy</span></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--recover-policy" title="The “recover-policy” property">recover-policy</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--resend-streamheader" title="The “resend-streamheader” property">resend-streamheader</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><span class="type">GstMultiSocketSinkSyncMethod</span></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--sync-method" title="The “sync-method” property">sync-method</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><span class="type">gint64</span></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--time-min" title="The “time-min” property">time-min</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><span class="type">guint64</span></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--timeout" title="The “timeout” property">timeout</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstFormat.html#GstFormat"><span class="type">GstFormat</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--unit-type" title="The “unit-type” property">unit-type</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><span class="type">gint64</span></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--units-max" title="The “units-max” property">units-max</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><span class="type">gint64</span></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--units-soft-max" title="The “units-soft-max” property">units-soft-max</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect1">
 <a name="gst-plugins-base-plugins-multisocketsink.signals"></a><h2>Signals</h2>
 <div class="informaltable"><table border="0">
 <colgroup>
@@ -167,11 +54,6 @@
 </tr>
 <tr>
 <td class="signal_type"><span class="returnvalue">void</span></td>
-<td class="signal_name"><a class="link" href="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink-clear" title="The “clear” signal">clear</a></td>
-<td class="signal_flags">Action</td>
-</tr>
-<tr>
-<td class="signal_type"><span class="returnvalue">void</span></td>
 <td class="signal_name"><a class="link" href="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink-client-added" title="The “client-added” signal">client-added</a></td>
 <td class="signal_flags">Run Last</td>
 </tr>
@@ -201,11 +83,6 @@
 <td class="signal_name"><a class="link" href="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink-remove-flush" title="The “remove-flush” signal">remove-flush</a></td>
 <td class="signal_flags">Action</td>
 </tr>
-<tr>
-<td class="signal_type"><span class="returnvalue">void</span></td>
-<td class="signal_name"><a class="link" href="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink-client-handle-removed" title="The “client-handle-removed” signal">client-handle-removed</a></td>
-<td class="signal_flags">Run Last</td>
-</tr>
 </tbody>
 </table></div>
 </div>
@@ -253,14 +130,14 @@
 <p>This plugin writes incoming data to a set of file descriptors. The
 file descriptors can be added to multisocketsink by emitting the <a class="link" href="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink-add" title="The “add” signal"><span class="type">“add”</span></a> signal. 
 For each descriptor added, the <a class="link" href="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink-client-added" title="The “client-added” signal"><span class="type">“client-added”</span></a> signal will be called.</p>
-<p>As of version 0.10.8, a client can also be added with the <a class="link" href="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink-add-full" title="The “add-full” signal"><span class="type">“add-full”</span></a> signal
+<p>A client can also be added with the <a class="link" href="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink-add-full" title="The “add-full” signal"><span class="type">“add-full”</span></a> signal
 that allows for more control over what and how much data a client 
 initially receives.</p>
 <p>Clients can be removed from multisocketsink by emitting the <a class="link" href="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink-remove" title="The “remove” signal"><span class="type">“remove”</span></a> signal. For
 each descriptor removed, the <a class="link" href="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink-client-removed" title="The “client-removed” signal"><span class="type">“client-removed”</span></a> signal will be called. The
 <a class="link" href="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink-client-removed" title="The “client-removed” signal"><span class="type">“client-removed”</span></a> signal can also be fired when multisocketsink decides that a
 client is not active anymore or, depending on the value of the
-<a class="link" href="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--recover-policy" title="The “recover-policy” property"><span class="type">“recover-policy”</span></a> property, if the client is reading too slowly.
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base/html/gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--recover-policy"><span class="type">“recover-policy”</span></a> property, if the client is reading too slowly.
 In all cases, multisocketsink will never close a file descriptor itself.
 The user of multisocketsink is responsible for closing all file descriptors.
 This can for example be done in response to the <span class="type">“client-fd-removed”</span> signal.
@@ -273,7 +150,7 @@
 separate thread to send the buffers to the clients. This ensures that no
 client write can block the pipeline and that clients can read with different
 speeds.</p>
-<p>When adding a client to multisocketsink, the <a class="link" href="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--sync-method" title="The “sync-method” property"><span class="type">“sync-method”</span></a> property will define
+<p>When adding a client to multisocketsink, the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base/html/gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--sync-method"><span class="type">“sync-method”</span></a> property will define
 which buffer in the queued buffers will be sent first to the client. Clients 
 can be sent the most recent buffer (which might not be decodable by the 
 client if it is not a keyframe), the next keyframe received in 
@@ -281,7 +158,7 @@
 last received keyframe (which will cause a simple burst-on-connect). 
 Multisocketsink will always keep at least one keyframe in its internal buffers
 when the sync-mode is set to latest-keyframe.</p>
-<p>As of version 0.10.8, there are additional values for the <a class="link" href="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--sync-method" title="The “sync-method” property"><span class="type">“sync-method”</span></a> 
+<p>There are additional values for the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base/html/gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--sync-method"><span class="type">“sync-method”</span></a>
 property to allow finer control over burst-on-connect behaviour. By selecting
 the 'burst' method a minimum burst size can be chosen, 'burst-keyframe'
 additionally requires that the burst begin with a keyframe, and 
@@ -289,7 +166,7 @@
 prefer a minimum burst size even if it requires not starting with a keyframe.</p>
 <p>Multisocketsink can be instructed to keep at least a minimum amount of data
 expressed in time or byte units in its internal queues with the 
-<a class="link" href="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--time-min" title="The “time-min” property"><span class="type">“time-min”</span></a> and <a class="link" href="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--bytes-min" title="The “bytes-min” property"><span class="type">“bytes-min”</span></a> properties respectively.
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base/html/gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--time-min"><span class="type">“time-min”</span></a> and <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base/html/gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--bytes-min"><span class="type">“bytes-min”</span></a> properties respectively.
 These properties are useful if the application adds clients with the 
 <a class="link" href="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink-add-full" title="The “add-full” signal"><span class="type">“add-full”</span></a> signal to make sure that a burst connect can
 actually be honored. </p>
@@ -298,11 +175,11 @@
 fast, no data will be send to the client until multisocketsink receives more
 data. If the client, however, reads too slowly, data for that client will be 
 queued up in multisocketsink. Two properties control the amount of data 
-(buffers) that is queued in multisocketsink: <a class="link" href="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--buffers-max" title="The “buffers-max” property"><span class="type">“buffers-max”</span></a> and 
-<a class="link" href="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--buffers-soft-max" title="The “buffers-soft-max” property"><span class="type">“buffers-soft-max”</span></a>. A client that falls behind by
-<a class="link" href="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--buffers-max" title="The “buffers-max” property"><span class="type">“buffers-max”</span></a> is removed from multisocketsink forcibly.</p>
-<p>A client with a lag of at least <a class="link" href="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--buffers-soft-max" title="The “buffers-soft-max” property"><span class="type">“buffers-soft-max”</span></a> enters the recovery
-procedure which is controlled with the <a class="link" href="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--recover-policy" title="The “recover-policy” property"><span class="type">“recover-policy”</span></a> property.
+(buffers) that is queued in multisocketsink: <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base/html/gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--buffers-max"><span class="type">“buffers-max”</span></a> and 
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base/html/gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--buffers-soft-max"><span class="type">“buffers-soft-max”</span></a>. A client that falls behind by
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base/html/gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--buffers-max"><span class="type">“buffers-max”</span></a> is removed from multisocketsink forcibly.</p>
+<p>A client with a lag of at least <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base/html/gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--buffers-soft-max"><span class="type">“buffers-soft-max”</span></a> enters the recovery
+procedure which is controlled with the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base/html/gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--recover-policy"><span class="type">“recover-policy”</span></a> property.
 A recover policy of NONE will do nothing, RESYNC_LATEST will send the most recently
 received buffer as the next buffer for the client, RESYNC_SOFT_LIMIT
 positions the client to the soft limit in the buffer queue and
@@ -312,11 +189,10 @@
 buffers to the clients. This behaviour can be disabled by setting the sync 
 property to FALSE. Multisocketsink will by default not do QoS and will never
 drop late buffers.</p>
-<p>Last reviewed on 2006-09-12 (0.10.10)</p>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.21.8.12.1.1"></a><h3>Element Information</h3>
+<a name="id-1.2.21.7.11.1.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -342,7 +218,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.21.8.12.1.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.21.7.11.1.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -388,7 +264,7 @@
 <p>Possible values for the recovery procedure to use when a client consumes
 data too slow and has a backlag of more that soft-limit buffers.</p>
 <div class="refsect3">
-<a name="id-1.2.21.10.3.4"></a><h4>Members</h4>
+<a name="id-1.2.21.9.3.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -426,7 +302,7 @@
 <p>This enum defines the selection of the first buffer that is sent
 to a new client.</p>
 <div class="refsect3">
-<a name="id-1.2.21.10.4.4"></a><h4>Members</h4>
+<a name="id-1.2.21.9.4.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -474,7 +350,7 @@
 <p>This specifies the reason why a client was removed from
 multisocketsink and is received in the "client-removed" signal.</p>
 <div class="refsect3">
-<a name="id-1.2.21.10.5.4"></a><h4>Members</h4>
+<a name="id-1.2.21.9.5.4"></a><h4>Members</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
@@ -523,176 +399,6 @@
 </div>
 </div>
 <div class="refsect1">
-<a name="gst-plugins-base-plugins-multisocketsink.property-details"></a><h2>Property Details</h2>
-<div class="refsect2">
-<a name="GstMultiSocketSink--buffers-max"></a><h3>The <code class="literal">“buffers-max”</code> property</h3>
-<pre class="programlisting">  “buffers-max”              <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
-<p>max number of buffers to queue for a client (-1 = no limit).</p>
-<p>Flags: Read / Write</p>
-<p>Allowed values: &gt;= G_MAXULONG</p>
-<p>Default value: -1</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiSocketSink--buffers-min"></a><h3>The <code class="literal">“buffers-min”</code> property</h3>
-<pre class="programlisting">  “buffers-min”              <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
-<p>min number of buffers to queue (-1 = as few as possible).</p>
-<p>Flags: Read / Write</p>
-<p>Allowed values: &gt;= G_MAXULONG</p>
-<p>Default value: -1</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiSocketSink--buffers-queued"></a><h3>The <code class="literal">“buffers-queued”</code> property</h3>
-<pre class="programlisting">  “buffers-queued”           <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></pre>
-<p>Number of buffers currently queued.</p>
-<p>Flags: Read</p>
-<p>Default value: 0</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiSocketSink--buffers-soft-max"></a><h3>The <code class="literal">“buffers-soft-max”</code> property</h3>
-<pre class="programlisting">  “buffers-soft-max”         <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
-<p>Recover client when going over this limit (-1 = no limit).</p>
-<p>Flags: Read / Write</p>
-<p>Allowed values: &gt;= G_MAXULONG</p>
-<p>Default value: -1</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiSocketSink--burst-format"></a><h3>The <code class="literal">“burst-format”</code> property</h3>
-<pre class="programlisting">  “burst-format”             <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstFormat.html#GstFormat"><span class="type">GstFormat</span></a></pre>
-<p>The format of the burst units (when sync-method is burst[[-with]-keyframe]).</p>
-<p>Flags: Read / Write</p>
-<p>Default value: GST_FORMAT_UNDEFINED</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiSocketSink--burst-value"></a><h3>The <code class="literal">“burst-value”</code> property</h3>
-<pre class="programlisting">  “burst-value”              <span class="type">guint64</span></pre>
-<p>The amount of burst expressed in burst-unit.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: 0</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiSocketSink--bytes-min"></a><h3>The <code class="literal">“bytes-min”</code> property</h3>
-<pre class="programlisting">  “bytes-min”                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
-<p>min number of bytes to queue (-1 = as little as possible).</p>
-<p>Flags: Read / Write</p>
-<p>Allowed values: &gt;= G_MAXULONG</p>
-<p>Default value: -1</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiSocketSink--bytes-served"></a><h3>The <code class="literal">“bytes-served”</code> property</h3>
-<pre class="programlisting">  “bytes-served”             <span class="type">guint64</span></pre>
-<p>Total number of bytes send to all clients.</p>
-<p>Flags: Read</p>
-<p>Default value: 0</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiSocketSink--bytes-to-serve"></a><h3>The <code class="literal">“bytes-to-serve”</code> property</h3>
-<pre class="programlisting">  “bytes-to-serve”           <span class="type">guint64</span></pre>
-<p>Number of bytes received to serve to clients.</p>
-<p>Flags: Read</p>
-<p>Default value: 0</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiSocketSink--handle-read"></a><h3>The <code class="literal">“handle-read”</code> property</h3>
-<pre class="programlisting">  “handle-read”              <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
-<p>Handle client reads and discard the data.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: TRUE</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiSocketSink--num-sockets"></a><h3>The <code class="literal">“num-sockets”</code> property</h3>
-<pre class="programlisting">  “num-sockets”              <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></pre>
-<p>The current number of client sockets.</p>
-<p>Flags: Read</p>
-<p>Default value: 0</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiSocketSink--qos-dscp"></a><h3>The <code class="literal">“qos-dscp”</code> property</h3>
-<pre class="programlisting">  “qos-dscp”                 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
-<p>Quality of Service, differentiated services code point (-1 default).</p>
-<p>Flags: Read / Write</p>
-<p>Allowed values: [G_MAXULONG,63]</p>
-<p>Default value: -1</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiSocketSink--recover-policy"></a><h3>The <code class="literal">“recover-policy”</code> property</h3>
-<pre class="programlisting">  “recover-policy”           <span class="type">GstMultiSocketSinkRecoverPolicy</span></pre>
-<p>How to recover when client reaches the soft max.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: Do not try to recover</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiSocketSink--resend-streamheader"></a><h3>The <code class="literal">“resend-streamheader”</code> property</h3>
-<pre class="programlisting">  “resend-streamheader”      <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
-<p>Resend the streamheader if it changes in the caps.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: TRUE</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiSocketSink--sync-method"></a><h3>The <code class="literal">“sync-method”</code> property</h3>
-<pre class="programlisting">  “sync-method”              <span class="type">GstMultiSocketSinkSyncMethod</span></pre>
-<p>How to sync new clients to the stream.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: Serve starting from the latest buffer</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiSocketSink--time-min"></a><h3>The <code class="literal">“time-min”</code> property</h3>
-<pre class="programlisting">  “time-min”                 <span class="type">gint64</span></pre>
-<p>min number of time to queue (-1 = as little as possible).</p>
-<p>Flags: Read / Write</p>
-<p>Allowed values: &gt;= G_MAXULONG</p>
-<p>Default value: -1</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiSocketSink--timeout"></a><h3>The <code class="literal">“timeout”</code> property</h3>
-<pre class="programlisting">  “timeout”                  <span class="type">guint64</span></pre>
-<p>Maximum inactivity timeout in nanoseconds for a client (0 = no limit).</p>
-<p>Flags: Read / Write</p>
-<p>Default value: 0</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiSocketSink--unit-type"></a><h3>The <code class="literal">“unit-type”</code> property</h3>
-<pre class="programlisting">  “unit-type”                <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstFormat.html#GstFormat"><span class="type">GstFormat</span></a></pre>
-<p>The unit to measure the max/soft-max/queued properties.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: GST_FORMAT_BUFFERS</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiSocketSink--units-max"></a><h3>The <code class="literal">“units-max”</code> property</h3>
-<pre class="programlisting">  “units-max”                <span class="type">gint64</span></pre>
-<p>max number of units to queue (-1 = no limit).</p>
-<p>Flags: Read / Write</p>
-<p>Allowed values: &gt;= G_MAXULONG</p>
-<p>Default value: -1</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiSocketSink--units-soft-max"></a><h3>The <code class="literal">“units-soft-max”</code> property</h3>
-<pre class="programlisting">  “units-soft-max”           <span class="type">gint64</span></pre>
-<p>Recover client when going over this limit (-1 = no limit).</p>
-<p>Flags: Read / Write</p>
-<p>Allowed values: &gt;= G_MAXULONG</p>
-<p>Default value: -1</p>
-</div>
-</div>
-<div class="refsect1">
 <a name="gst-plugins-base-plugins-multisocketsink.signal-details"></a><h2>Signal Details</h2>
 <div class="refsect2">
 <a name="GstMultiSocketSink-add"></a><h3>The <code class="literal">“add”</code> signal</h3>
@@ -702,7 +408,7 @@
                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>            user_data)</pre>
 <p>Hand the given open socket to multisocketsink to write to.</p>
 <div class="refsect3">
-<a name="id-1.2.21.12.2.5"></a><h4>Parameters</h4>
+<a name="id-1.2.21.10.2.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -745,7 +451,7 @@
 <p>Hand the given open socket to multisocketsink to write to and
 specify the burst parameters for the new connection.</p>
 <div class="refsect3">
-<a name="id-1.2.21.12.3.5"></a><h4>Parameters</h4>
+<a name="id-1.2.21.10.3.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -806,38 +512,6 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="GstMultiSocketSink-clear"></a><h3>The <code class="literal">“clear”</code> signal</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-user_function (<a class="link" href="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink"><span class="type">GstMultiSocketSink</span></a> *gstmultisocketsink,
-               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>            user_data)</pre>
-<p>
-</p>
-<div class="refsect3">
-<a name="id-1.2.21.12.4.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>gstmultisocketsink</p></td>
-<td class="parameter_description"><p>the object which received the signal.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p>Flags: Action</p>
-</div>
-<hr>
-<div class="refsect2">
 <a name="GstMultiSocketSink-client-added"></a><h3>The <code class="literal">“client-added”</code> signal</h3>
 <pre class="programlisting"><span class="returnvalue">void</span>
 user_function (<a class="link" href="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink"><span class="type">GstMultiSocketSink</span></a> *gstmultisocketsink,
@@ -847,7 +521,7 @@
 be emitted from the streaming thread so application should be prepared
 for that.</p>
 <div class="refsect3">
-<a name="id-1.2.21.12.5.5"></a><h4>Parameters</h4>
+<a name="id-1.2.21.10.4.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -893,7 +567,7 @@
 not safe to <code class="function">close()</code> and reuse <em class="parameter"><code>socket</code></em>
  in this callback.</p>
 <div class="refsect3">
-<a name="id-1.2.21.12.6.6"></a><h4>Parameters</h4>
+<a name="id-1.2.21.10.5.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -944,7 +618,7 @@
 . It is however safe to <code class="function">close()</code> and reuse <em class="parameter"><code>fd</code></em>
  in the callback.</p>
 <div class="refsect3">
-<a name="id-1.2.21.12.7.6"></a><h4>Parameters</h4>
+<a name="id-1.2.21.10.6.6"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -971,7 +645,6 @@
 </table></div>
 </div>
 <p>Flags: Run Last</p>
-<p class="since">Since 0.10.7</p>
 </div>
 <hr>
 <div class="refsect2">
@@ -983,7 +656,7 @@
 <p>Get statistics about <em class="parameter"><code>socket</code></em>
 . This function returns a GstStructure.</p>
 <div class="refsect3">
-<a name="id-1.2.21.12.8.5"></a><h4>Parameters</h4>
+<a name="id-1.2.21.10.7.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1010,7 +683,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.21.12.8.6"></a><h4>Returns</h4>
+<a name="id-1.2.21.10.7.6"></a><h4>Returns</h4>
 <p> a GstStructure with the statistics. The structure contains
 values that represent: total number of bytes sent, time
 when the client was added, time when the client was
@@ -1030,7 +703,7 @@
                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>            user_data)</pre>
 <p>Remove the given open socket from multisocketsink.</p>
 <div class="refsect3">
-<a name="id-1.2.21.12.9.5"></a><h4>Parameters</h4>
+<a name="id-1.2.21.10.8.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1068,7 +741,7 @@
 <p>Remove the given open socket from multisocketsink after flushing all
 the pending data to the socket.</p>
 <div class="refsect3">
-<a name="id-1.2.21.12.10.5"></a><h4>Parameters</h4>
+<a name="id-1.2.21.10.9.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1096,39 +769,6 @@
 </div>
 <p>Flags: Action</p>
 </div>
-<hr>
-<div class="refsect2">
-<a name="GstMultiSocketSink-client-handle-removed"></a><h3>The <code class="literal">“client-handle-removed”</code> signal</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-user_function (<a class="link" href="gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink"><span class="type">GstMultiSocketSink</span></a> *gstmultisocketsink,
-               <a href="http://library.gnome.org/devel/gio/unstable/GSocket.html"><span class="type">GSocket</span></a>            *arg1,
-               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>            user_data)</pre>
-<p>
-</p>
-<div class="refsect3">
-<a name="id-1.2.21.12.11.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>gstmultisocketsink</p></td>
-<td class="parameter_description"><p>the object which received the signal.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p>Flags: Run Last</p>
-</div>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-base-plugins-multisocketsink.see-also"></a><h2>See Also</h2>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-playbin.html b/docs/plugins/html/gst-plugins-base-plugins-playbin.html
index 3f6549a..001db6e 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-playbin.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-playbin.html
@@ -52,36 +52,8 @@
 </tr>
 <tr>
 <td class="property_type">
-<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstBuffer.html#GstBuffer"><span class="type">GstBuffer</span></a> *</td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-playbin.html#GstPlayBin--frame" title="The “frame” property">frame</a></td>
-<td class="property_flags">Read</td>
-</tr>
-<tr>
-<td class="property_type">
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-playbin.html#GstPlayBin--subtitle-font-desc" title="The “subtitle-font-desc” property">subtitle-font-desc</a></td>
-<td class="property_flags">Write</td>
-</tr>
-<tr>
-<td class="property_type">
 <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> *</td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-playbin.html#GstPlayBin--video-sink" title="The “video-sink” property">video-sink</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type">
-<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> *</td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-playbin.html#GstPlayBin--vis-plugin" title="The “vis-plugin” property">vis-plugin</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-playbin.html#GstPlayBin--volume" title="The “volume” property">volume</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><span class="type">guint64</span></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-playbin.html#GstPlayBin--connection-speed" title="The “connection-speed” property">connection-speed</a></td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-playbin.html#GstPlayBin--audio-stream-combiner" title="The “audio-stream-combiner” property">audio-stream-combiner</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
 <tr>
@@ -100,16 +72,33 @@
 <td class="property_flags">Read / Write</td>
 </tr>
 <tr>
+<td class="property_type"><span class="type">guint64</span></td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-playbin.html#GstPlayBin--connection-speed" title="The “connection-speed” property">connection-speed</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
 <td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-playbin.html#GstPlayBin--current-audio" title="The “current-audio” property">current-audio</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
 <tr>
+<td class="property_type">
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-playbin.html#GstPlayBin--current-suburi" title="The “current-suburi” property">current-suburi</a></td>
+<td class="property_flags">Read</td>
+</tr>
+<tr>
 <td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-playbin.html#GstPlayBin--current-text" title="The “current-text” property">current-text</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
 <tr>
+<td class="property_type">
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-playbin.html#GstPlayBin--current-uri" title="The “current-uri” property">current-uri</a></td>
+<td class="property_flags">Read</td>
+</tr>
+<tr>
 <td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-playbin.html#GstPlayBin--current-video" title="The “current-video” property">current-video</a></td>
 <td class="property_flags">Read / Write</td>
@@ -121,6 +110,11 @@
 </tr>
 <tr>
 <td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-playbin.html#GstPlayBin--force-aspect-ratio" title="The “force-aspect-ratio” property">force-aspect-ratio</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-playbin.html#GstPlayBin--mute" title="The “mute” property">mute</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
@@ -165,6 +159,12 @@
 <tr>
 <td class="property_type">
 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-playbin.html#GstPlayBin--subtitle-font-desc" title="The “subtitle-font-desc” property">subtitle-font-desc</a></td>
+<td class="property_flags">Write</td>
+</tr>
+<tr>
+<td class="property_type">
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-playbin.html#GstPlayBin--suburi" title="The “suburi” property">suburi</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
@@ -176,45 +176,51 @@
 </tr>
 <tr>
 <td class="property_type">
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-playbin.html#GstPlayBin--uri" title="The “uri” property">uri</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type">
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-playbin.html#GstPlayBin--current-suburi" title="The “current-suburi” property">current-suburi</a></td>
-<td class="property_flags">Read</td>
-</tr>
-<tr>
-<td class="property_type">
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-playbin.html#GstPlayBin--current-uri" title="The “current-uri” property">current-uri</a></td>
-<td class="property_flags">Read</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-playbin.html#GstPlayBin--force-aspect-ratio" title="The “force-aspect-ratio” property">force-aspect-ratio</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type">
-<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> *</td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-playbin.html#GstPlayBin--audio-stream-combiner" title="The “audio-stream-combiner” property">audio-stream-combiner</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type">
 <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> *</td>
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-playbin.html#GstPlayBin--text-stream-combiner" title="The “text-stream-combiner” property">text-stream-combiner</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
 <tr>
 <td class="property_type">
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-playbin.html#GstPlayBin--uri" title="The “uri” property">uri</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type">
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-playbin.html#GstPlayBin--video-sink" title="The “video-sink” property">video-sink</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type">
 <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> *</td>
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-playbin.html#GstPlayBin--video-stream-combiner" title="The “video-stream-combiner” property">video-stream-combiner</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
+<tr>
+<td class="property_type">
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-playbin.html#GstPlayBin--vis-plugin" title="The “vis-plugin” property">vis-plugin</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-playbin.html#GstPlayBin--volume" title="The “volume” property">volume</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type">
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-playbin.html#GstPlayBin--audio-filter" title="The “audio-filter” property">audio-filter</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type">
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-playbin.html#GstPlayBin--video-filter" title="The “video-filter” property">video-filter</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
 </tbody>
 </table></div>
 </div>
@@ -477,8 +483,7 @@
 value that shows the progress of the buffering process. Applications need
 to set playbin to PLAYING or PAUSED state in response to these messages.
 They may also want to convey the buffering progress to the user in some
-way. Here is how to extract the percentage information from the message
-(requires GStreamer &gt;= 0.10.11):
+way. Here is how to extract the percentage information from the message:
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -724,6 +729,14 @@
 <td class="enum_member_description"> </td>
 <td class="enum_member_annotations"> </td>
 </tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-PLAY-FLAG-FORCE-FILTERS:CAPS"></a>GST_PLAY_FLAG_FORCE_FILTERS</p></td>
+<td class="enum_member_description">
+<p>force audio/video filters to be applied if
+  set.</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
 </tbody>
 </table></div>
 </div>
@@ -739,54 +752,14 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="GstPlayBin--frame"></a><h3>The <code class="literal">“frame”</code> property</h3>
-<pre class="programlisting">  “frame”                    <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstBuffer.html#GstBuffer"><span class="type">GstBuffer</span></a> *</pre>
-<p>The last frame (NULL = no video available).</p>
-<p>Flags: Read</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstPlayBin--subtitle-font-desc"></a><h3>The <code class="literal">“subtitle-font-desc”</code> property</h3>
-<pre class="programlisting">  “subtitle-font-desc”       <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
-<p>Pango font description of font to be used for subtitle rendering.</p>
-<p>Flags: Write</p>
-<p>Default value: NULL</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstPlayBin--video-sink"></a><h3>The <code class="literal">“video-sink”</code> property</h3>
-<pre class="programlisting">  “video-sink”               <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> *</pre>
-<p>the video output element to use (NULL = default sink).</p>
+<a name="GstPlayBin--audio-stream-combiner"></a><h3>The <code class="literal">“audio-stream-combiner”</code> property</h3>
+<pre class="programlisting">  “audio-stream-combiner”    <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> *</pre>
+<p>Get or set the current audio stream combiner. By default, an input-selector
+is created and deleted as-needed.</p>
 <p>Flags: Read / Write</p>
 </div>
 <hr>
 <div class="refsect2">
-<a name="GstPlayBin--vis-plugin"></a><h3>The <code class="literal">“vis-plugin”</code> property</h3>
-<pre class="programlisting">  “vis-plugin”               <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> *</pre>
-<p>the visualization element to use (NULL = default).</p>
-<p>Flags: Read / Write</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstPlayBin--volume"></a><h3>The <code class="literal">“volume”</code> property</h3>
-<pre class="programlisting">  “volume”                   <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></pre>
-<p>Get or set the current audio stream volume. 1.0 means 100%,
-0.0 means mute. This uses a linear volume scale.</p>
-<p>Flags: Read / Write</p>
-<p>Allowed values: [0,10]</p>
-<p>Default value: 1</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstPlayBin--connection-speed"></a><h3>The <code class="literal">“connection-speed”</code> property</h3>
-<pre class="programlisting">  “connection-speed”         <span class="type">guint64</span></pre>
-<p>Network connection speed in kbps (0 = unknown).</p>
-<p>Flags: Read / Write</p>
-<p>Allowed values: &lt;= 18446744073709551</p>
-<p>Default value: 0</p>
-</div>
-<hr>
-<div class="refsect2">
 <a name="GstPlayBin--av-offset"></a><h3>The <code class="literal">“av-offset”</code> property</h3>
 <pre class="programlisting">  “av-offset”                <span class="type">gint64</span></pre>
 <p>Control the synchronisation offset between the audio and video streams.
@@ -794,7 +767,6 @@
 the audio go behind the video.</p>
 <p>Flags: Read / Write</p>
 <p>Default value: 0</p>
-<p class="since">Since 0.10.30</p>
 </div>
 <hr>
 <div class="refsect2">
@@ -816,6 +788,15 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="GstPlayBin--connection-speed"></a><h3>The <code class="literal">“connection-speed”</code> property</h3>
+<pre class="programlisting">  “connection-speed”         <span class="type">guint64</span></pre>
+<p>Network connection speed in kbps (0 = unknown).</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: &lt;= 18446744073709551</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GstPlayBin--current-audio"></a><h3>The <code class="literal">“current-audio”</code> property</h3>
 <pre class="programlisting">  “current-audio”            <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
 <p>Get or set the currently playing audio stream. By default the first audio
@@ -826,6 +807,14 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="GstPlayBin--current-suburi"></a><h3>The <code class="literal">“current-suburi”</code> property</h3>
+<pre class="programlisting">  “current-suburi”           <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
+<p>The currently playing subtitle uri.</p>
+<p>Flags: Read</p>
+<p>Default value: NULL</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GstPlayBin--current-text"></a><h3>The <code class="literal">“current-text”</code> property</h3>
 <pre class="programlisting">  “current-text”             <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
 <p>Get or set the currently playing subtitle stream. By default the first
@@ -836,6 +825,14 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="GstPlayBin--current-uri"></a><h3>The <code class="literal">“current-uri”</code> property</h3>
+<pre class="programlisting">  “current-uri”              <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
+<p>The currently playing uri.</p>
+<p>Flags: Read</p>
+<p>Default value: NULL</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GstPlayBin--current-video"></a><h3>The <code class="literal">“current-video”</code> property</h3>
 <pre class="programlisting">  “current-video”            <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
 <p>Get or set the currently playing video stream. By default the first video
@@ -854,6 +851,14 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="GstPlayBin--force-aspect-ratio"></a><h3>The <code class="literal">“force-aspect-ratio”</code> property</h3>
+<pre class="programlisting">  “force-aspect-ratio”       <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>When enabled, scaling will respect original aspect ratio.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GstPlayBin--mute"></a><h3>The <code class="literal">“mute”</code> property</h3>
 <pre class="programlisting">  “mute”                     <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
 <p>Mute the audio channel without changing the volume.</p>
@@ -896,7 +901,6 @@
 <p>Flags: Read / Write</p>
 <p>Allowed values: &lt;= G_MAXUINT</p>
 <p>Default value: 0</p>
-<p class="since">Since 0.10.31</p>
 </div>
 <hr>
 <div class="refsect2">
@@ -923,6 +927,14 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="GstPlayBin--subtitle-font-desc"></a><h3>The <code class="literal">“subtitle-font-desc”</code> property</h3>
+<pre class="programlisting">  “subtitle-font-desc”       <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
+<p>Pango font description of font to be used for subtitle rendering.</p>
+<p>Flags: Write</p>
+<p>Default value: NULL</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GstPlayBin--suburi"></a><h3>The <code class="literal">“suburi”</code> property</h3>
 <pre class="programlisting">  “suburi”                   <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
 <p>Set the next subtitle URI that playbin will play. This property can be
@@ -939,6 +951,14 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="GstPlayBin--text-stream-combiner"></a><h3>The <code class="literal">“text-stream-combiner”</code> property</h3>
+<pre class="programlisting">  “text-stream-combiner”     <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> *</pre>
+<p>Get or set the current text stream combiner. By default, an input-selector
+is created and deleted as-needed.</p>
+<p>Flags: Read / Write</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GstPlayBin--uri"></a><h3>The <code class="literal">“uri”</code> property</h3>
 <pre class="programlisting">  “uri”                      <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
 <p>Set the next URI that playbin will play. This property can be set from the
@@ -948,42 +968,9 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="GstPlayBin--current-suburi"></a><h3>The <code class="literal">“current-suburi”</code> property</h3>
-<pre class="programlisting">  “current-suburi”           <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
-<p>The currently playing subtitle uri.</p>
-<p>Flags: Read</p>
-<p>Default value: NULL</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstPlayBin--current-uri"></a><h3>The <code class="literal">“current-uri”</code> property</h3>
-<pre class="programlisting">  “current-uri”              <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
-<p>The currently playing uri.</p>
-<p>Flags: Read</p>
-<p>Default value: NULL</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstPlayBin--force-aspect-ratio"></a><h3>The <code class="literal">“force-aspect-ratio”</code> property</h3>
-<pre class="programlisting">  “force-aspect-ratio”       <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
-<p>When enabled, scaling will respect original aspect ratio.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: TRUE</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstPlayBin--audio-stream-combiner"></a><h3>The <code class="literal">“audio-stream-combiner”</code> property</h3>
-<pre class="programlisting">  “audio-stream-combiner”    <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> *</pre>
-<p>Get or set the current audio stream combiner. By default, an input-selector
-is created and deleted as-needed.</p>
-<p>Flags: Read / Write</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstPlayBin--text-stream-combiner"></a><h3>The <code class="literal">“text-stream-combiner”</code> property</h3>
-<pre class="programlisting">  “text-stream-combiner”     <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> *</pre>
-<p>Get or set the current text stream combiner. By default, an input-selector
-is created and deleted as-needed.</p>
+<a name="GstPlayBin--video-sink"></a><h3>The <code class="literal">“video-sink”</code> property</h3>
+<pre class="programlisting">  “video-sink”               <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> *</pre>
+<p>the video output element to use (NULL = default sink).</p>
 <p>Flags: Read / Write</p>
 </div>
 <hr>
@@ -994,6 +981,37 @@
 is created and deleted as-needed.</p>
 <p>Flags: Read / Write</p>
 </div>
+<hr>
+<div class="refsect2">
+<a name="GstPlayBin--vis-plugin"></a><h3>The <code class="literal">“vis-plugin”</code> property</h3>
+<pre class="programlisting">  “vis-plugin”               <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> *</pre>
+<p>the visualization element to use (NULL = default).</p>
+<p>Flags: Read / Write</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstPlayBin--volume"></a><h3>The <code class="literal">“volume”</code> property</h3>
+<pre class="programlisting">  “volume”                   <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></pre>
+<p>Get or set the current audio stream volume. 1.0 means 100%,
+0.0 means mute. This uses a linear volume scale.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [0,10]</p>
+<p>Default value: 1</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstPlayBin--audio-filter"></a><h3>The <code class="literal">“audio-filter”</code> property</h3>
+<pre class="programlisting">  “audio-filter”             <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> *</pre>
+<p>the audio filter(s) to apply, if possible.</p>
+<p>Flags: Read / Write</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstPlayBin--video-filter"></a><h3>The <code class="literal">“video-filter”</code> property</h3>
+<pre class="programlisting">  “video-filter”             <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> *</pre>
+<p>the video filter(s) to apply, if possible.</p>
+<p>Flags: Read / Write</p>
+</div>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-base-plugins-playbin.signal-details"></a><h2>Signal Details</h2>
@@ -1105,7 +1123,6 @@
 </table></div>
 </div>
 <p>Flags: Run Last</p>
-<p class="since">Since 0.10.24</p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1466,7 +1483,6 @@
 </table></div>
 </div>
 <p>Flags: Run Last</p>
-<p class="since">Since 0.10.33</p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1544,7 +1560,6 @@
 </table></div>
 </div>
 <p>Flags: Run Last</p>
-<p class="since">Since 0.10.24</p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1622,7 +1637,6 @@
 </table></div>
 </div>
 <p>Flags: Run Last</p>
-<p class="since">Since 0.10.24</p>
 </div>
 </div>
 </div>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-plugin-adder.html b/docs/plugins/html/gst-plugins-base-plugins-plugin-adder.html
index 97f62e1..4ddb18f 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-plugin-adder.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-plugin-adder.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.2.4</td>
+<td>1.3.1</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-plugin-alsa.html b/docs/plugins/html/gst-plugins-base-plugins-plugin-alsa.html
index f38d7a1..bc7c226 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-plugin-alsa.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-plugin-alsa.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.2.4</td>
+<td>1.3.1</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-plugin-app.html b/docs/plugins/html/gst-plugins-base-plugins-plugin-app.html
index be29048..07b9db1 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-plugin-app.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-plugin-app.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.2.4</td>
+<td>1.3.1</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-plugin-audioconvert.html b/docs/plugins/html/gst-plugins-base-plugins-plugin-audioconvert.html
index 0f1e873..deea001 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-plugin-audioconvert.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-plugin-audioconvert.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.2.4</td>
+<td>1.3.1</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-plugin-audiorate.html b/docs/plugins/html/gst-plugins-base-plugins-plugin-audiorate.html
index 16d95b3..1a12d47 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-plugin-audiorate.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-plugin-audiorate.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.2.4</td>
+<td>1.3.1</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-plugin-audioresample.html b/docs/plugins/html/gst-plugins-base-plugins-plugin-audioresample.html
index 88d49bb..5951dfa 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-plugin-audioresample.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-plugin-audioresample.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.2.4</td>
+<td>1.3.1</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-plugin-audiotestsrc.html b/docs/plugins/html/gst-plugins-base-plugins-plugin-audiotestsrc.html
index 1174793..0d5cd90 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-plugin-audiotestsrc.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-plugin-audiotestsrc.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.2.4</td>
+<td>1.3.1</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-plugin-cdparanoia.html b/docs/plugins/html/gst-plugins-base-plugins-plugin-cdparanoia.html
index 9559665..ad9623f 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-plugin-cdparanoia.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-plugin-cdparanoia.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.2.4</td>
+<td>1.3.1</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-plugin-encoding.html b/docs/plugins/html/gst-plugins-base-plugins-plugin-encoding.html
index fff5caf..5effd24 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-plugin-encoding.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-plugin-encoding.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.2.4</td>
+<td>1.3.1</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-plugin-gio.html b/docs/plugins/html/gst-plugins-base-plugins-plugin-gio.html
index 0d8b6fd..752b033 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-plugin-gio.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-plugin-gio.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.2.4</td>
+<td>1.3.1</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-plugin-libvisual.html b/docs/plugins/html/gst-plugins-base-plugins-plugin-libvisual.html
index 1bef542..b7883f9 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-plugin-libvisual.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-plugin-libvisual.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.2.4</td>
+<td>1.3.1</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-plugin-ogg.html b/docs/plugins/html/gst-plugins-base-plugins-plugin-ogg.html
index 39525f6..61de2eb 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-plugin-ogg.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-plugin-ogg.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.2.4</td>
+<td>1.3.1</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-plugin-pango.html b/docs/plugins/html/gst-plugins-base-plugins-plugin-pango.html
index afcab38..039f3ad 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-plugin-pango.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-plugin-pango.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.2.4</td>
+<td>1.3.1</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-plugin-playback.html b/docs/plugins/html/gst-plugins-base-plugins-plugin-playback.html
index 873356c..e123486 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-plugin-playback.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-plugin-playback.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.2.4</td>
+<td>1.3.1</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-plugin-subparse.html b/docs/plugins/html/gst-plugins-base-plugins-plugin-subparse.html
index 4701f14..471bdbd 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-plugin-subparse.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-plugin-subparse.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.2.4</td>
+<td>1.3.1</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-plugin-tcp.html b/docs/plugins/html/gst-plugins-base-plugins-plugin-tcp.html
index 9e5417e..3195919 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-plugin-tcp.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-plugin-tcp.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.2.4</td>
+<td>1.3.1</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-plugin-theora.html b/docs/plugins/html/gst-plugins-base-plugins-plugin-theora.html
index 92c27a8..4f5b3ce 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-plugin-theora.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-plugin-theora.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.2.4</td>
+<td>1.3.1</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-plugin-typefindfunctions.html b/docs/plugins/html/gst-plugins-base-plugins-plugin-typefindfunctions.html
index 339815e..8fe9a14 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-plugin-typefindfunctions.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-plugin-typefindfunctions.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.2.4</td>
+<td>1.3.1</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-plugin-videoconvert.html b/docs/plugins/html/gst-plugins-base-plugins-plugin-videoconvert.html
index 613f78f..8170946 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-plugin-videoconvert.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-plugin-videoconvert.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.2.4</td>
+<td>1.3.1</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-plugin-videorate.html b/docs/plugins/html/gst-plugins-base-plugins-plugin-videorate.html
index 0145a6a..a97f296 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-plugin-videorate.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-plugin-videorate.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.2.4</td>
+<td>1.3.1</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-plugin-videoscale.html b/docs/plugins/html/gst-plugins-base-plugins-plugin-videoscale.html
index 5b8a64b..3494e69 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-plugin-videoscale.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-plugin-videoscale.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.2.4</td>
+<td>1.3.1</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-plugin-videotestsrc.html b/docs/plugins/html/gst-plugins-base-plugins-plugin-videotestsrc.html
index 3c2d764..aa26dbe 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-plugin-videotestsrc.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-plugin-videotestsrc.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.2.4</td>
+<td>1.3.1</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-plugin-volume.html b/docs/plugins/html/gst-plugins-base-plugins-plugin-volume.html
index 13093a5..ddf8ff2 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-plugin-volume.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-plugin-volume.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.2.4</td>
+<td>1.3.1</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-plugin-vorbis.html b/docs/plugins/html/gst-plugins-base-plugins-plugin-vorbis.html
index 61d5045..b35bdf5 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-plugin-vorbis.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-plugin-vorbis.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.2.4</td>
+<td>1.3.1</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-plugin-ximagesink.html b/docs/plugins/html/gst-plugins-base-plugins-plugin-ximagesink.html
index b5325df..479a70e 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-plugin-ximagesink.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-plugin-ximagesink.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.2.4</td>
+<td>1.3.1</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-plugin-xvimagesink.html b/docs/plugins/html/gst-plugins-base-plugins-plugin-xvimagesink.html
index 3d4fda4..c318ad0 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-plugin-xvimagesink.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-plugin-xvimagesink.html
@@ -41,7 +41,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.2.4</td>
+<td>1.3.1</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-tcpclientsink.html b/docs/plugins/html/gst-plugins-base-plugins-tcpclientsink.html
index 16623a2..1b6a7a3 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-tcpclientsink.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-tcpclientsink.html
@@ -53,11 +53,6 @@
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-tcpclientsink.html#GstTCPClientSink--port" title="The “port” property">port</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
-<tr>
-<td class="property_type"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base/html/gst-plugins-base-plugins-multifdsink.html#GstTCPProtocol"><span class="type">GstTCPProtocol</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-tcpclientsink.html#GstTCPClientSink--protocol" title="The “protocol” property">protocol</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
 </tbody>
 </table></div>
 </div>
@@ -195,14 +190,6 @@
 <p>Allowed values: [0,65535]</p>
 <p>Default value: 4953</p>
 </div>
-<hr>
-<div class="refsect2">
-<a name="GstTCPClientSink--protocol"></a><h3>The <code class="literal">“protocol”</code> property</h3>
-<pre class="programlisting">  “protocol”                 <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base/html/gst-plugins-base-plugins-multifdsink.html#GstTCPProtocol"><span class="type">GstTCPProtocol</span></a></pre>
-<p>The protocol to wrap data in.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: GST_TCP_PROTOCOL_NONE</p>
-</div>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-base-plugins-tcpclientsink.see-also"></a><h2>See Also</h2>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-tcpclientsrc.html b/docs/plugins/html/gst-plugins-base-plugins-tcpclientsrc.html
index 4128d8d..ddf9e87 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-tcpclientsrc.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-tcpclientsrc.html
@@ -53,11 +53,6 @@
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-tcpclientsrc.html#GstTCPClientSrc--port" title="The “port” property">port</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
-<tr>
-<td class="property_type"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base/html/gst-plugins-base-plugins-multifdsink.html#GstTCPProtocol"><span class="type">GstTCPProtocol</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-tcpclientsrc.html#GstTCPClientSrc--protocol" title="The “protocol” property">protocol</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
 </tbody>
 </table></div>
 </div>
@@ -196,14 +191,6 @@
 <p>Allowed values: [0,65535]</p>
 <p>Default value: 4953</p>
 </div>
-<hr>
-<div class="refsect2">
-<a name="GstTCPClientSrc--protocol"></a><h3>The <code class="literal">“protocol”</code> property</h3>
-<pre class="programlisting">  “protocol”                 <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base/html/gst-plugins-base-plugins-multifdsink.html#GstTCPProtocol"><span class="type">GstTCPProtocol</span></a></pre>
-<p>The protocol to wrap data in.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: GST_TCP_PROTOCOL_NONE</p>
-</div>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-base-plugins-tcpclientsrc.see-also"></a><h2>See Also</h2>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-tcpserversink.html b/docs/plugins/html/gst-plugins-base-plugins-tcpserversink.html
index e47bfe5..3ba3c89 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-tcpserversink.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-tcpserversink.html
@@ -43,6 +43,11 @@
 </colgroup>
 <tbody>
 <tr>
+<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-tcpserversink.html#GstTCPServerSink--current-port" title="The “current-port” property">current-port</a></td>
+<td class="property_flags">Read</td>
+</tr>
+<tr>
 <td class="property_type">
 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-tcpserversink.html#GstTCPServerSink--host" title="The “host” property">host</a></td>
@@ -53,11 +58,6 @@
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-tcpserversink.html#GstTCPServerSink--port" title="The “port” property">port</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-tcpserversink.html#GstTCPServerSink--current-port" title="The “current-port” property">current-port</a></td>
-<td class="property_flags">Read</td>
-</tr>
 </tbody>
 </table></div>
 </div>
@@ -181,6 +181,18 @@
 <div class="refsect1">
 <a name="gst-plugins-base-plugins-tcpserversink.property-details"></a><h2>Property Details</h2>
 <div class="refsect2">
+<a name="GstTCPServerSink--current-port"></a><h3>The <code class="literal">“current-port”</code> property</h3>
+<pre class="programlisting">  “current-port”             <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>The port number the socket is currently bound to. Applications can use
+this property to retrieve the port number actually bound to in case
+the port requested was 0 (=allocate a random available port).</p>
+<p>Flags: Read</p>
+<p>Allowed values: [0,65535]</p>
+<p>Default value: 0</p>
+<p class="since">Since 1.0.2</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GstTCPServerSink--host"></a><h3>The <code class="literal">“host”</code> property</h3>
 <pre class="programlisting">  “host”                     <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
 <p>The host/IP to listen on.</p>
@@ -196,18 +208,6 @@
 <p>Allowed values: [0,65535]</p>
 <p>Default value: 4953</p>
 </div>
-<hr>
-<div class="refsect2">
-<a name="GstTCPServerSink--current-port"></a><h3>The <code class="literal">“current-port”</code> property</h3>
-<pre class="programlisting">  “current-port”             <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
-<p>The port number the socket is currently bound to. Applications can use
-this property to retrieve the port number actually bound to in case
-the port requested was 0 (=allocate a random available port).</p>
-<p>Flags: Read</p>
-<p>Allowed values: [0,65535]</p>
-<p>Default value: 0</p>
-<p class="since">Since 1.0.2</p>
-</div>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-base-plugins-tcpserversink.see-also"></a><h2>See Also</h2>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-tcpserversrc.html b/docs/plugins/html/gst-plugins-base-plugins-tcpserversrc.html
index b8d5050..a49df5d 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-tcpserversrc.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-tcpserversrc.html
@@ -43,6 +43,11 @@
 </colgroup>
 <tbody>
 <tr>
+<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-tcpserversrc.html#GstTCPServerSrc--current-port" title="The “current-port” property">current-port</a></td>
+<td class="property_flags">Read</td>
+</tr>
+<tr>
 <td class="property_type">
 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-tcpserversrc.html#GstTCPServerSrc--host" title="The “host” property">host</a></td>
@@ -53,16 +58,6 @@
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-tcpserversrc.html#GstTCPServerSrc--port" title="The “port” property">port</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
-<tr>
-<td class="property_type"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base/html/gst-plugins-base-plugins-multifdsink.html#GstTCPProtocol"><span class="type">GstTCPProtocol</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-tcpserversrc.html#GstTCPServerSrc--protocol" title="The “protocol” property">protocol</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-tcpserversrc.html#GstTCPServerSrc--current-port" title="The “current-port” property">current-port</a></td>
-<td class="property_flags">Read</td>
-</tr>
 </tbody>
 </table></div>
 </div>
@@ -186,6 +181,18 @@
 <div class="refsect1">
 <a name="gst-plugins-base-plugins-tcpserversrc.property-details"></a><h2>Property Details</h2>
 <div class="refsect2">
+<a name="GstTCPServerSrc--current-port"></a><h3>The <code class="literal">“current-port”</code> property</h3>
+<pre class="programlisting">  “current-port”             <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>The port number the socket is currently bound to. Applications can use
+this property to retrieve the port number actually bound to in case
+the port requested was 0 (=allocate a random available port).</p>
+<p>Flags: Read</p>
+<p>Allowed values: [0,65535]</p>
+<p>Default value: 0</p>
+<p class="since">Since 1.0.2</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GstTCPServerSrc--host"></a><h3>The <code class="literal">“host”</code> property</h3>
 <pre class="programlisting">  “host”                     <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
 <p>The hostname to listen as.</p>
@@ -201,26 +208,6 @@
 <p>Allowed values: [0,65535]</p>
 <p>Default value: 4953</p>
 </div>
-<hr>
-<div class="refsect2">
-<a name="GstTCPServerSrc--protocol"></a><h3>The <code class="literal">“protocol”</code> property</h3>
-<pre class="programlisting">  “protocol”                 <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base/html/gst-plugins-base-plugins-multifdsink.html#GstTCPProtocol"><span class="type">GstTCPProtocol</span></a></pre>
-<p>The protocol to wrap data in.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: GST_TCP_PROTOCOL_NONE</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstTCPServerSrc--current-port"></a><h3>The <code class="literal">“current-port”</code> property</h3>
-<pre class="programlisting">  “current-port”             <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
-<p>The port number the socket is currently bound to. Applications can use
-this property to retrieve the port number actually bound to in case
-the port requested was 0 (=allocate a random available port).</p>
-<p>Flags: Read</p>
-<p>Allowed values: [0,65535]</p>
-<p>Default value: 0</p>
-<p class="since">Since 1.0.2</p>
-</div>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-base-plugins-tcpserversrc.see-also"></a><h2>See Also</h2>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-textoverlay.html b/docs/plugins/html/gst-plugins-base-plugins-textoverlay.html
index 9324825..0dcd7ed 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-textoverlay.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-textoverlay.html
@@ -16,8 +16,7 @@
 <td width="100%" align="left" class="shortcuts">
 <a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span> 
                   <a href="#gst-plugins-base-plugins-textoverlay.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span> 
-                  <a href="#gst-plugins-base-plugins-textoverlay.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties"> <span class="dim">|</span> 
-                  <a href="#gst-plugins-base-plugins-textoverlay.properties" class="shortcut">Properties</a></span>
+                  <a href="#gst-plugins-base-plugins-textoverlay.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
 </td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
@@ -33,122 +32,6 @@
 </td>
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
-<div class="refsect1">
-<a name="gst-plugins-base-plugins-textoverlay.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
-<colgroup>
-<col width="150px" class="properties_type">
-<col width="300px" class="properties_name">
-<col width="200px" class="properties_flags">
-</colgroup>
-<tbody>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--deltax" title="The “deltax” property">deltax</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--deltay" title="The “deltay” property">deltay</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type">
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--font-desc" title="The “font-desc” property">font-desc</a></td>
-<td class="property_flags">Write</td>
-</tr>
-<tr>
-<td class="property_type">
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--halign" title="The “halign” property">halign</a></td>
-<td class="property_flags">Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--shaded-background" title="The “shaded-background” property">shaded-background</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type">
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--text" title="The “text” property">text</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type">
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--valign" title="The “valign” property">valign</a></td>
-<td class="property_flags">Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base/html/gst-plugins-base-plugins-textoverlay.html#GstTextOverlayWrapMode"><span class="type">GstTextOverlayWrapMode</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--wrap-mode" title="The “wrap-mode” property">wrap-mode</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--xpad" title="The “xpad” property">xpad</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--ypad" title="The “ypad” property">ypad</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base/html/gst-plugins-base-plugins-textoverlay.html#GstTextOverlayHAlign"><span class="type">GstTextOverlayHAlign</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--halignment" title="The “halignment” property">halignment</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base/html/gst-plugins-base-plugins-textoverlay.html#GstTextOverlayVAlign"><span class="type">GstTextOverlayVAlign</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--valignment" title="The “valignment” property">valignment</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><span class="type">GstTextOverlayLineAlign</span></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--line-alignment" title="The “line-alignment” property">line-alignment</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--silent" title="The “silent” property">silent</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--wait-text" title="The “wait-text” property">wait-text</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--auto-resize" title="The “auto-resize” property">auto-resize</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--vertical-render" title="The “vertical-render” property">vertical-render</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--color" title="The “color” property">color</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--xpos" title="The “xpos” property">xpos</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--ypos" title="The “ypos” property">ypos</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-</tbody>
-</table></div>
-</div>
 <a name="GstTextOverlay"></a><div class="refsect1">
 <a name="gst-plugins-base-plugins-textoverlay.other"></a><h2>Types and Values</h2>
 <div class="informaltable"><table width="100%" border="0">
@@ -177,7 +60,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.30.7.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.30.6.2.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -203,7 +86,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.30.7.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.30.6.2.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -250,6 +133,10 @@
 <td><p><span class="term">details</span></p></td>
 <td>video/x-raw, format=(string){ BGRx, RGBx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, I420, YV12, AYUV, YUY2, UYVY, v308, Y41B, Y42B, Y444, NV12, NV21, A420, YUV9, YVU9, IYU1, GRAY8 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
 </tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
 </tbody>
 </table></div>
 <div class="variablelist"><table border="0" class="variablelist">
@@ -274,6 +161,10 @@
 <td><p><span class="term">details</span></p></td>
 <td>video/x-raw, format=(string){ BGRx, RGBx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, I420, YV12, AYUV, YUY2, UYVY, v308, Y41B, Y42B, Y444, NV12, NV21, A420, YUV9, YVU9, IYU1, GRAY8 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
 </tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
 </tbody>
 </table></div>
 </div>
@@ -293,172 +184,6 @@
 </p>
 </div>
 </div>
-<div class="refsect1">
-<a name="gst-plugins-base-plugins-textoverlay.property-details"></a><h2>Property Details</h2>
-<div class="refsect2">
-<a name="GstTextOverlay--deltax"></a><h3>The <code class="literal">“deltax”</code> property</h3>
-<pre class="programlisting">  “deltax”                   <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
-<p>Shift X position to the left or to the right. Unit is pixels.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: 0</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstTextOverlay--deltay"></a><h3>The <code class="literal">“deltay”</code> property</h3>
-<pre class="programlisting">  “deltay”                   <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
-<p>Shift Y position up or down. Unit is pixels.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: 0</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstTextOverlay--font-desc"></a><h3>The <code class="literal">“font-desc”</code> property</h3>
-<pre class="programlisting">  “font-desc”                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
-<p>Pango font description of font to be used for rendering. See documentation of pango_font_description_from_string for syntax.</p>
-<p>Flags: Write</p>
-<p>Default value: ""</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstTextOverlay--halign"></a><h3>The <code class="literal">“halign”</code> property</h3>
-<pre class="programlisting">  “halign”                   <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
-<p>Horizontal alignment of the text (deprecated; use halignment).</p>
-<p>Flags: Write</p>
-<p>Default value: "center"</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstTextOverlay--shaded-background"></a><h3>The <code class="literal">“shaded-background”</code> property</h3>
-<pre class="programlisting">  “shaded-background”        <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
-<p>Whether to shade the background under the text area.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: FALSE</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstTextOverlay--text"></a><h3>The <code class="literal">“text”</code> property</h3>
-<pre class="programlisting">  “text”                     <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
-<p>Text to be display.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: ""</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstTextOverlay--valign"></a><h3>The <code class="literal">“valign”</code> property</h3>
-<pre class="programlisting">  “valign”                   <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
-<p>Vertical alignment of the text (deprecated; use valignment).</p>
-<p>Flags: Write</p>
-<p>Default value: "baseline"</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstTextOverlay--wrap-mode"></a><h3>The <code class="literal">“wrap-mode”</code> property</h3>
-<pre class="programlisting">  “wrap-mode”                <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base/html/gst-plugins-base-plugins-textoverlay.html#GstTextOverlayWrapMode"><span class="type">GstTextOverlayWrapMode</span></a></pre>
-<p>Whether to wrap the text and if so how.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: wordchar</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstTextOverlay--xpad"></a><h3>The <code class="literal">“xpad”</code> property</h3>
-<pre class="programlisting">  “xpad”                     <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
-<p>Horizontal paddding when using left/right alignment.</p>
-<p>Flags: Read / Write</p>
-<p>Allowed values: &gt;= 0</p>
-<p>Default value: 25</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstTextOverlay--ypad"></a><h3>The <code class="literal">“ypad”</code> property</h3>
-<pre class="programlisting">  “ypad”                     <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
-<p>Vertical padding when using top/bottom alignment.</p>
-<p>Flags: Read / Write</p>
-<p>Allowed values: &gt;= 0</p>
-<p>Default value: 25</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstTextOverlay--halignment"></a><h3>The <code class="literal">“halignment”</code> property</h3>
-<pre class="programlisting">  “halignment”               <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base/html/gst-plugins-base-plugins-textoverlay.html#GstTextOverlayHAlign"><span class="type">GstTextOverlayHAlign</span></a></pre>
-<p>Horizontal alignment of the text.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: center</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstTextOverlay--valignment"></a><h3>The <code class="literal">“valignment”</code> property</h3>
-<pre class="programlisting">  “valignment”               <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base/html/gst-plugins-base-plugins-textoverlay.html#GstTextOverlayVAlign"><span class="type">GstTextOverlayVAlign</span></a></pre>
-<p>Vertical alignment of the text.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: baseline</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstTextOverlay--line-alignment"></a><h3>The <code class="literal">“line-alignment”</code> property</h3>
-<pre class="programlisting">  “line-alignment”           <span class="type">GstTextOverlayLineAlign</span></pre>
-<p>Alignment of text lines relative to each other.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: center</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstTextOverlay--silent"></a><h3>The <code class="literal">“silent”</code> property</h3>
-<pre class="programlisting">  “silent”                   <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
-<p>Whether to render the text string.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: FALSE</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstTextOverlay--wait-text"></a><h3>The <code class="literal">“wait-text”</code> property</h3>
-<pre class="programlisting">  “wait-text”                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
-<p>Whether to wait for subtitles.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: TRUE</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstTextOverlay--auto-resize"></a><h3>The <code class="literal">“auto-resize”</code> property</h3>
-<pre class="programlisting">  “auto-resize”              <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
-<p>Automatically adjust font size to screen-size.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: TRUE</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstTextOverlay--vertical-render"></a><h3>The <code class="literal">“vertical-render”</code> property</h3>
-<pre class="programlisting">  “vertical-render”          <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
-<p>Vertical Render.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: FALSE</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstTextOverlay--color"></a><h3>The <code class="literal">“color”</code> property</h3>
-<pre class="programlisting">  “color”                    <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></pre>
-<p>Color to use for text (big-endian ARGB).</p>
-<p>Flags: Read / Write</p>
-<p>Default value: 4294967295</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstTextOverlay--xpos"></a><h3>The <code class="literal">“xpos”</code> property</h3>
-<pre class="programlisting">  “xpos”                     <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></pre>
-<p>Horizontal position when using position alignment.</p>
-<p>Flags: Read / Write</p>
-<p>Allowed values: [0,1]</p>
-<p>Default value: 0.5</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstTextOverlay--ypos"></a><h3>The <code class="literal">“ypos”</code> property</h3>
-<pre class="programlisting">  “ypos”                     <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></pre>
-<p>Vertical position when using position alignment.</p>
-<p>Flags: Read / Write</p>
-<p>Allowed values: [0,1]</p>
-<p>Default value: 0.5</p>
-</div>
-</div>
 </div>
 <div class="footer">
 <hr>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-theoradec.html b/docs/plugins/html/gst-plugins-base-plugins-theoradec.html
index a35717c..865d68c 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-theoradec.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-theoradec.html
@@ -16,8 +16,7 @@
 <td width="100%" align="left" class="shortcuts">
 <a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span> 
                   <a href="#gst-plugins-base-plugins-theoradec.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span> 
-                  <a href="#gst-plugins-base-plugins-theoradec.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties"> <span class="dim">|</span> 
-                  <a href="#gst-plugins-base-plugins-theoradec.properties" class="shortcut">Properties</a></span>
+                  <a href="#gst-plugins-base-plugins-theoradec.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
 </td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
@@ -33,21 +32,6 @@
 </td>
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
-<div class="refsect1">
-<a name="gst-plugins-base-plugins-theoradec.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
-<colgroup>
-<col width="150px" class="properties_type">
-<col width="300px" class="properties_name">
-<col width="200px" class="properties_flags">
-</colgroup>
-<tbody><tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-theoradec.html#GstTheoraDec--crop" title="The “crop” property">crop</a></td>
-<td class="property_flags">Read / Write</td>
-</tr></tbody>
-</table></div>
-</div>
 <a name="GstTheoraDec"></a><div class="refsect1">
 <a name="gst-plugins-base-plugins-theoradec.other"></a><h2>Types and Values</h2>
 <div class="informaltable"><table width="100%" border="0">
@@ -76,7 +60,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.32.7.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.32.6.2.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -102,7 +86,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.32.7.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.32.6.2.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -168,16 +152,6 @@
 </p>
 </div>
 </div>
-<div class="refsect1">
-<a name="gst-plugins-base-plugins-theoradec.property-details"></a><h2>Property Details</h2>
-<div class="refsect2">
-<a name="GstTheoraDec--crop"></a><h3>The <code class="literal">“crop”</code> property</h3>
-<pre class="programlisting">  “crop”                     <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
-<p>Crop the image to the visible region.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: TRUE</p>
-</div>
-</div>
 </div>
 <div class="footer">
 <hr>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-theoraenc.html b/docs/plugins/html/gst-plugins-base-plugins-theoraenc.html
index f8437aa..a59ccf4 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-theoraenc.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-theoraenc.html
@@ -49,13 +49,18 @@
 <td class="property_flags">Read / Write</td>
 </tr>
 <tr>
-<td class="property_type"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base/html/gst-plugins-base-plugins-theoraenc.html#GstTheoraEncBorderMode"><span class="type">GstTheoraEncBorderMode</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--border" title="The “border” property">border</a></td>
+<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--cap-overflow" title="The “cap-overflow” property">cap-overflow</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
 <tr>
 <td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--center" title="The “center” property">center</a></td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--cap-underflow" title="The “cap-underflow” property">cap-underflow</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--drop-frames" title="The “drop-frames” property">drop-frames</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
 <tr>
@@ -74,66 +79,6 @@
 <td class="property_flags">Read / Write</td>
 </tr>
 <tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--keyframe-mindistance" title="The “keyframe-mindistance” property">keyframe-mindistance</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--keyframe-threshold" title="The “keyframe-threshold” property">keyframe-threshold</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--noise-sensitivity" title="The “noise-sensitivity” property">noise-sensitivity</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--quality" title="The “quality” property">quality</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--quick" title="The “quick” property">quick</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--sharpness" title="The “sharpness” property">sharpness</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--speed-level" title="The “speed-level” property">speed-level</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--cap-overflow" title="The “cap-overflow” property">cap-overflow</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--cap-underflow" title="The “cap-underflow” property">cap-underflow</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--drop-frames" title="The “drop-frames” property">drop-frames</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--rate-buffer" title="The “rate-buffer” property">rate-buffer</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--vp3-compatible" title="The “vp3-compatible” property">vp3-compatible</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
 <td class="property_type">
 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--multipass-cache-file" title="The “multipass-cache-file” property">multipass-cache-file</a></td>
@@ -145,8 +90,23 @@
 <td class="property_flags">Read / Write</td>
 </tr>
 <tr>
+<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--quality" title="The “quality” property">quality</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--rate-buffer" title="The “rate-buffer” property">rate-buffer</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--speed-level" title="The “speed-level” property">speed-level</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
 <td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--dup-on-gap" title="The “dup-on-gap” property">dup-on-gap</a></td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--vp3-compatible" title="The “vp3-compatible” property">vp3-compatible</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
 </tbody>
@@ -290,17 +250,25 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="GstTheoraEnc--border"></a><h3>The <code class="literal">“border”</code> property</h3>
-<pre class="programlisting">  “border”                   <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base/html/gst-plugins-base-plugins-theoraenc.html#GstTheoraEncBorderMode"><span class="type">GstTheoraEncBorderMode</span></a></pre>
-<p>ignored and kept for API compat only.</p>
+<a name="GstTheoraEnc--cap-overflow"></a><h3>The <code class="literal">“cap-overflow”</code> property</h3>
+<pre class="programlisting">  “cap-overflow”             <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Enable capping of bit reservoir overflows.</p>
 <p>Flags: Read / Write</p>
-<p>Default value: Black Border</p>
+<p>Default value: TRUE</p>
 </div>
 <hr>
 <div class="refsect2">
-<a name="GstTheoraEnc--center"></a><h3>The <code class="literal">“center”</code> property</h3>
-<pre class="programlisting">  “center”                   <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
-<p>ignored and kept for API compat only.</p>
+<a name="GstTheoraEnc--cap-underflow"></a><h3>The <code class="literal">“cap-underflow”</code> property</h3>
+<pre class="programlisting">  “cap-underflow”            <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Enable capping of bit reservoir underflows.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstTheoraEnc--drop-frames"></a><h3>The <code class="literal">“drop-frames”</code> property</h3>
+<pre class="programlisting">  “drop-frames”              <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Allow or disallow frame dropping.</p>
 <p>Flags: Read / Write</p>
 <p>Default value: TRUE</p>
 </div>
@@ -332,109 +300,6 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="GstTheoraEnc--keyframe-mindistance"></a><h3>The <code class="literal">“keyframe-mindistance”</code> property</h3>
-<pre class="programlisting">  “keyframe-mindistance”     <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
-<p>ignored and kept for API compat only.</p>
-<p>Flags: Read / Write</p>
-<p>Allowed values: [1,32768]</p>
-<p>Default value: 8</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstTheoraEnc--keyframe-threshold"></a><h3>The <code class="literal">“keyframe-threshold”</code> property</h3>
-<pre class="programlisting">  “keyframe-threshold”       <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
-<p>ignored and kept for API compat only.</p>
-<p>Flags: Read / Write</p>
-<p>Allowed values: [0,32768]</p>
-<p>Default value: 80</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstTheoraEnc--noise-sensitivity"></a><h3>The <code class="literal">“noise-sensitivity”</code> property</h3>
-<pre class="programlisting">  “noise-sensitivity”        <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
-<p>ignored and kept for API compat only.</p>
-<p>Flags: Read / Write</p>
-<p>Allowed values: [0,32768]</p>
-<p>Default value: 1</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstTheoraEnc--quality"></a><h3>The <code class="literal">“quality”</code> property</h3>
-<pre class="programlisting">  “quality”                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
-<p>Video quality.</p>
-<p>Flags: Read / Write</p>
-<p>Allowed values: [0,63]</p>
-<p>Default value: 48</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstTheoraEnc--quick"></a><h3>The <code class="literal">“quick”</code> property</h3>
-<pre class="programlisting">  “quick”                    <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
-<p>ignored and kept for API compat only.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: TRUE</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstTheoraEnc--sharpness"></a><h3>The <code class="literal">“sharpness”</code> property</h3>
-<pre class="programlisting">  “sharpness”                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
-<p>ignored and kept for API compat only.</p>
-<p>Flags: Read / Write</p>
-<p>Allowed values: [0,2]</p>
-<p>Default value: 0</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstTheoraEnc--speed-level"></a><h3>The <code class="literal">“speed-level”</code> property</h3>
-<pre class="programlisting">  “speed-level”              <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
-<p>Controls the amount of motion vector searching done while encoding.</p>
-<p>Flags: Read / Write</p>
-<p>Allowed values: [0,3]</p>
-<p>Default value: 1</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstTheoraEnc--cap-overflow"></a><h3>The <code class="literal">“cap-overflow”</code> property</h3>
-<pre class="programlisting">  “cap-overflow”             <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
-<p>Enable capping of bit reservoir overflows.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: TRUE</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstTheoraEnc--cap-underflow"></a><h3>The <code class="literal">“cap-underflow”</code> property</h3>
-<pre class="programlisting">  “cap-underflow”            <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
-<p>Enable capping of bit reservoir underflows.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: FALSE</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstTheoraEnc--drop-frames"></a><h3>The <code class="literal">“drop-frames”</code> property</h3>
-<pre class="programlisting">  “drop-frames”              <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
-<p>Allow or disallow frame dropping.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: TRUE</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstTheoraEnc--rate-buffer"></a><h3>The <code class="literal">“rate-buffer”</code> property</h3>
-<pre class="programlisting">  “rate-buffer”              <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
-<p>Sets the size of the rate control buffer, in units of frames.  The default value of 0 instructs the encoder to automatically select an appropriate value.</p>
-<p>Flags: Read / Write</p>
-<p>Allowed values: [0,1000]</p>
-<p>Default value: 0</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstTheoraEnc--vp3-compatible"></a><h3>The <code class="literal">“vp3-compatible”</code> property</h3>
-<pre class="programlisting">  “vp3-compatible”           <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
-<p>Disables non-VP3 compatible features.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: FALSE</p>
-</div>
-<hr>
-<div class="refsect2">
 <a name="GstTheoraEnc--multipass-cache-file"></a><h3>The <code class="literal">“multipass-cache-file”</code> property</h3>
 <pre class="programlisting">  “multipass-cache-file”     <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
 <p>Multipass cache file.</p>
@@ -451,9 +316,36 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="GstTheoraEnc--dup-on-gap"></a><h3>The <code class="literal">“dup-on-gap”</code> property</h3>
-<pre class="programlisting">  “dup-on-gap”               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
-<p>Allow codec to handle frames with GAP flag as duplicates of previous frame. This is good to work with variable frame rate stabilized by videorate element. It will add variable latency with maximal size of keyframe distance, this way it is a bad idea to use with live streams.</p>
+<a name="GstTheoraEnc--quality"></a><h3>The <code class="literal">“quality”</code> property</h3>
+<pre class="programlisting">  “quality”                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Video quality.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [0,63]</p>
+<p>Default value: 48</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstTheoraEnc--rate-buffer"></a><h3>The <code class="literal">“rate-buffer”</code> property</h3>
+<pre class="programlisting">  “rate-buffer”              <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Sets the size of the rate control buffer, in units of frames.  The default value of 0 instructs the encoder to automatically select an appropriate value.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [0,1000]</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstTheoraEnc--speed-level"></a><h3>The <code class="literal">“speed-level”</code> property</h3>
+<pre class="programlisting">  “speed-level”              <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Controls the amount of motion vector searching done while encoding.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [0,3]</p>
+<p>Default value: 1</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstTheoraEnc--vp3-compatible"></a><h3>The <code class="literal">“vp3-compatible”</code> property</h3>
+<pre class="programlisting">  “vp3-compatible”           <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Disables non-VP3 compatible features.</p>
 <p>Flags: Read / Write</p>
 <p>Default value: FALSE</p>
 </div>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-theoraparse.html b/docs/plugins/html/gst-plugins-base-plugins-theoraparse.html
index 63b7a5d..b86399c 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-theoraparse.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-theoraparse.html
@@ -16,8 +16,7 @@
 <td width="100%" align="left" class="shortcuts">
 <a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span> 
                   <a href="#gst-plugins-base-plugins-theoraparse.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span> 
-                  <a href="#gst-plugins-base-plugins-theoraparse.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties"> <span class="dim">|</span> 
-                  <a href="#gst-plugins-base-plugins-theoraparse.properties" class="shortcut">Properties</a></span>
+                  <a href="#gst-plugins-base-plugins-theoraparse.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
 </td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
@@ -33,22 +32,6 @@
 </td>
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
-<div class="refsect1">
-<a name="gst-plugins-base-plugins-theoraparse.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
-<colgroup>
-<col width="150px" class="properties_type">
-<col width="300px" class="properties_name">
-<col width="200px" class="properties_flags">
-</colgroup>
-<tbody><tr>
-<td class="property_type">
-<a href="http://library.gnome.org/devel/gobject/unstable/gobject-Value-arrays.html#GValueArray"><span class="type">GValueArray</span></a> *</td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-theoraparse.html#GstTheoraParse--synchronization-points" title="The “synchronization-points” property">synchronization-points</a></td>
-<td class="property_flags">Read / Write</td>
-</tr></tbody>
-</table></div>
-</div>
 <a name="GstTheoraParse"></a><div class="refsect1">
 <a name="gst-plugins-base-plugins-theoraparse.other"></a><h2>Types and Values</h2>
 <div class="informaltable"><table width="100%" border="0">
@@ -76,7 +59,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.34.7.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.34.6.2.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -102,7 +85,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.34.7.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.34.6.2.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -168,15 +151,6 @@
 </p>
 </div>
 </div>
-<div class="refsect1">
-<a name="gst-plugins-base-plugins-theoraparse.property-details"></a><h2>Property Details</h2>
-<div class="refsect2">
-<a name="GstTheoraParse--synchronization-points"></a><h3>The <code class="literal">“synchronization-points”</code> property</h3>
-<pre class="programlisting">  “synchronization-points”   <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Value-arrays.html#GValueArray"><span class="type">GValueArray</span></a> *</pre>
-<p>An array of (granuletime, buffertime) pairs.</p>
-<p>Flags: Read / Write</p>
-</div>
-</div>
 </div>
 <div class="footer">
 <hr>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-timeoverlay.html b/docs/plugins/html/gst-plugins-base-plugins-timeoverlay.html
index a68e719..266e28f 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-timeoverlay.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-timeoverlay.html
@@ -109,6 +109,10 @@
 <td><p><span class="term">details</span></p></td>
 <td>video/x-raw, format=(string){ BGRx, RGBx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, I420, YV12, AYUV, YUY2, UYVY, v308, Y41B, Y42B, Y444, NV12, NV21, A420, YUV9, YVU9, IYU1, GRAY8 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
 </tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
 </tbody>
 </table></div>
 <div class="variablelist"><table border="0" class="variablelist">
@@ -133,6 +137,10 @@
 <td><p><span class="term">details</span></p></td>
 <td>video/x-raw, format=(string){ BGRx, RGBx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, I420, YV12, AYUV, YUY2, UYVY, v308, Y41B, Y42B, Y444, NV12, NV21, A420, YUV9, YVU9, IYU1, GRAY8 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
 </tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
 </tbody>
 </table></div>
 </div>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-uridecodebin.html b/docs/plugins/html/gst-plugins-base-plugins-uridecodebin.html
index 9456a93..2c10e38 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-uridecodebin.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-uridecodebin.html
@@ -45,35 +45,6 @@
 </colgroup>
 <tbody>
 <tr>
-<td class="property_type">
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--uri" title="The “uri” property">uri</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><span class="type">guint64</span></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--connection-speed" title="The “connection-speed” property">connection-speed</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type">
-<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a> *</td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--caps" title="The “caps” property">caps</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type">
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--subtitle-encoding" title="The “subtitle-encoding” property">subtitle-encoding</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type">
-<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> *</td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--source" title="The “source” property">source</a></td>
-<td class="property_flags">Read</td>
-</tr>
-<tr>
 <td class="property_type"><span class="type">gint64</span></td>
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--buffer-duration" title="The “buffer-duration” property">buffer-duration</a></td>
 <td class="property_flags">Read / Write</td>
@@ -84,13 +55,19 @@
 <td class="property_flags">Read / Write</td>
 </tr>
 <tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--download" title="The “download” property">download</a></td>
+<td class="property_type">
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--caps" title="The “caps” property">caps</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><span class="type">guint64</span></td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--connection-speed" title="The “connection-speed” property">connection-speed</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
 <tr>
 <td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--use-buffering" title="The “use-buffering” property">use-buffering</a></td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--download" title="The “download” property">download</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
 <tr>
@@ -103,6 +80,29 @@
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--ring-buffer-max-size" title="The “ring-buffer-max-size” property">ring-buffer-max-size</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
+<tr>
+<td class="property_type">
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--source" title="The “source” property">source</a></td>
+<td class="property_flags">Read</td>
+</tr>
+<tr>
+<td class="property_type">
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--subtitle-encoding" title="The “subtitle-encoding” property">subtitle-encoding</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type">
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--uri" title="The “uri” property">uri</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--use-buffering" title="The “use-buffering” property">use-buffering</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
 </tbody>
 </table></div>
 </div>
@@ -127,21 +127,16 @@
 <td class="signal_flags">Run Last</td>
 </tr>
 <tr>
+<td class="signal_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a></td>
+<td class="signal_name"><a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin-autoplug-query" title="The “autoplug-query” signal">autoplug-query</a></td>
+<td class="signal_flags">Run Last</td>
+</tr>
+<tr>
 <td class="signal_type"><a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GstAutoplugSelectResult" title="enum GstAutoplugSelectResult"><span class="returnvalue">GstAutoplugSelectResult</span></a></td>
 <td class="signal_name"><a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin-autoplug-select" title="The “autoplug-select” signal">autoplug-select</a></td>
 <td class="signal_flags">Run Last</td>
 </tr>
 <tr>
-<td class="signal_type"><span class="returnvalue">void</span></td>
-<td class="signal_name"><a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin-unknown-type" title="The “unknown-type” signal">unknown-type</a></td>
-<td class="signal_flags">Run Last</td>
-</tr>
-<tr>
-<td class="signal_type"><span class="returnvalue">void</span></td>
-<td class="signal_name"><a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin-drained" title="The “drained” signal">drained</a></td>
-<td class="signal_flags">Run Last</td>
-</tr>
-<tr>
 <td class="signal_type">
 <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Value-arrays.html#GValueArray"><span class="returnvalue">GValueArray</span></a>*</td>
 <td class="signal_name"><a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin-autoplug-sort" title="The “autoplug-sort” signal">autoplug-sort</a></td>
@@ -149,12 +144,17 @@
 </tr>
 <tr>
 <td class="signal_type"><span class="returnvalue">void</span></td>
+<td class="signal_name"><a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin-drained" title="The “drained” signal">drained</a></td>
+<td class="signal_flags">Run Last</td>
+</tr>
+<tr>
+<td class="signal_type"><span class="returnvalue">void</span></td>
 <td class="signal_name"><a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin-source-setup" title="The “source-setup” signal">source-setup</a></td>
 <td class="signal_flags">Run Last</td>
 </tr>
 <tr>
-<td class="signal_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a></td>
-<td class="signal_name"><a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin-autoplug-query" title="The “autoplug-query” signal">autoplug-query</a></td>
+<td class="signal_type"><span class="returnvalue">void</span></td>
+<td class="signal_name"><a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin-unknown-type" title="The “unknown-type” signal">unknown-type</a></td>
 <td class="signal_flags">Run Last</td>
 </tr>
 </tbody>
@@ -310,45 +310,6 @@
 <div class="refsect1">
 <a name="gst-plugins-base-plugins-uridecodebin.property-details"></a><h2>Property Details</h2>
 <div class="refsect2">
-<a name="GstURIDecodeBin--uri"></a><h3>The <code class="literal">“uri”</code> property</h3>
-<pre class="programlisting">  “uri”                      <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
-<p>URI to decode.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: NULL</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstURIDecodeBin--connection-speed"></a><h3>The <code class="literal">“connection-speed”</code> property</h3>
-<pre class="programlisting">  “connection-speed”         <span class="type">guint64</span></pre>
-<p>Network connection speed in kbps (0 = unknown).</p>
-<p>Flags: Read / Write</p>
-<p>Allowed values: &lt;= 18446744073709551</p>
-<p>Default value: 0</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstURIDecodeBin--caps"></a><h3>The <code class="literal">“caps”</code> property</h3>
-<pre class="programlisting">  “caps”                     <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a> *</pre>
-<p>The caps on which to stop decoding. (NULL = default).</p>
-<p>Flags: Read / Write</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstURIDecodeBin--subtitle-encoding"></a><h3>The <code class="literal">“subtitle-encoding”</code> property</h3>
-<pre class="programlisting">  “subtitle-encoding”        <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
-<p>Encoding to assume if input subtitles are not in UTF-8 encoding. If not set, the GST_SUBTITLE_ENCODING environment variable will be checked for an encoding to use. If that is not set either, ISO-8859-15 will be assumed.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: NULL</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstURIDecodeBin--source"></a><h3>The <code class="literal">“source”</code> property</h3>
-<pre class="programlisting">  “source”                   <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> *</pre>
-<p>Source object used.</p>
-<p>Flags: Read</p>
-</div>
-<hr>
-<div class="refsect2">
 <a name="GstURIDecodeBin--buffer-duration"></a><h3>The <code class="literal">“buffer-duration”</code> property</h3>
 <pre class="programlisting">  “buffer-duration”          <span class="type">gint64</span></pre>
 <p>Buffer duration when buffering streams (-1 default value).</p>
@@ -367,17 +328,25 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="GstURIDecodeBin--download"></a><h3>The <code class="literal">“download”</code> property</h3>
-<pre class="programlisting">  “download”                 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
-<p>Attempt download buffering when buffering network streams.</p>
+<a name="GstURIDecodeBin--caps"></a><h3>The <code class="literal">“caps”</code> property</h3>
+<pre class="programlisting">  “caps”                     <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a> *</pre>
+<p>The caps on which to stop decoding. (NULL = default).</p>
 <p>Flags: Read / Write</p>
-<p>Default value: FALSE</p>
 </div>
 <hr>
 <div class="refsect2">
-<a name="GstURIDecodeBin--use-buffering"></a><h3>The <code class="literal">“use-buffering”</code> property</h3>
-<pre class="programlisting">  “use-buffering”            <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
-<p>Perform buffering on demuxed/parsed media.</p>
+<a name="GstURIDecodeBin--connection-speed"></a><h3>The <code class="literal">“connection-speed”</code> property</h3>
+<pre class="programlisting">  “connection-speed”         <span class="type">guint64</span></pre>
+<p>Network connection speed in kbps (0 = unknown).</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: &lt;= 18446744073709551</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstURIDecodeBin--download"></a><h3>The <code class="literal">“download”</code> property</h3>
+<pre class="programlisting">  “download”                 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Attempt download buffering when buffering network streams.</p>
 <p>Flags: Read / Write</p>
 <p>Default value: FALSE</p>
 </div>
@@ -398,6 +367,37 @@
 <p>Allowed values: &lt;= G_MAXUINT</p>
 <p>Default value: 0</p>
 </div>
+<hr>
+<div class="refsect2">
+<a name="GstURIDecodeBin--source"></a><h3>The <code class="literal">“source”</code> property</h3>
+<pre class="programlisting">  “source”                   <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> *</pre>
+<p>Source object used.</p>
+<p>Flags: Read</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstURIDecodeBin--subtitle-encoding"></a><h3>The <code class="literal">“subtitle-encoding”</code> property</h3>
+<pre class="programlisting">  “subtitle-encoding”        <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
+<p>Encoding to assume if input subtitles are not in UTF-8 encoding. If not set, the GST_SUBTITLE_ENCODING environment variable will be checked for an encoding to use. If that is not set either, ISO-8859-15 will be assumed.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: NULL</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstURIDecodeBin--uri"></a><h3>The <code class="literal">“uri”</code> property</h3>
+<pre class="programlisting">  “uri”                      <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
+<p>URI to decode.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: NULL</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstURIDecodeBin--use-buffering"></a><h3>The <code class="literal">“use-buffering”</code> property</h3>
+<pre class="programlisting">  “use-buffering”            <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Perform buffering on demuxed/parsed media.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: FALSE</p>
+</div>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-base-plugins-uridecodebin.signal-details"></a><h2>Signal Details</h2>
@@ -523,6 +523,45 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="GstURIDecodeBin-autoplug-query"></a><h3>The <code class="literal">“autoplug-query”</code> signal</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+user_function (<a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin"><span class="type">GstURIDecodeBin</span></a> *gsturidecodebin,
+               <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a>          *arg1,
+               <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>      *arg2,
+               <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstQuery.html#GstQuery"><span class="type">GstQuery</span></a>        *arg3,
+               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>         user_data)</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="id-1.2.36.13.4.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>gsturidecodebin</p></td>
+<td class="parameter_description"><p>the object which received the signal.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>user_data</p></td>
+<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.36.13.4.6"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p>Flags: Run Last</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GstURIDecodeBin-autoplug-select"></a><h3>The <code class="literal">“autoplug-select”</code> signal</h3>
 <pre class="programlisting"><a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GstAutoplugSelectResult" title="enum GstAutoplugSelectResult"><span class="returnvalue">GstAutoplugSelectResult</span></a>
 user_function (<a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin"><span class="type">GstURIDecodeBin</span></a>   *bin,
@@ -546,12 +585,14 @@
  and move to the
 next factory.</p>
 <div class="note">
-  Only the signal handler that is connected first will ever by invoked.
-  Don't connect signal handlers with the <span class="type">G_CONNECT_AFTER</span> flag to this
-  signal, they will never be invoked!
+  The signal handler will not be invoked if any of the previously
+  registered signal handlers (if any) return a value other than
+  GST_AUTOPLUG_SELECT_TRY. Which also means that if you return
+  GST_AUTOPLUG_SELECT_TRY from one signal handler, handlers that get
+  registered next (again, if any) can override that decision.
 </div>
 <div class="refsect3">
-<a name="id-1.2.36.13.4.10"></a><h4>Parameters</h4>
+<a name="id-1.2.36.13.5.10"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -588,7 +629,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.36.13.4.11"></a><h4>Returns</h4>
+<a name="id-1.2.36.13.5.11"></a><h4>Returns</h4>
 <p> a <span class="type">GST_TYPE_AUTOPLUG_SELECT_RESULT</span> that indicates the required
 operation. The default handler will always return
 <a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GST-AUTOPLUG-SELECT-TRY:CAPS"><span class="type">GST_AUTOPLUG_SELECT_TRY</span></a>.</p>
@@ -598,75 +639,6 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="GstURIDecodeBin-unknown-type"></a><h3>The <code class="literal">“unknown-type”</code> signal</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-user_function (<a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin"><span class="type">GstURIDecodeBin</span></a> *bin,
-               <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a>          *pad,
-               <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>         *caps,
-               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>         user_data)</pre>
-<p>This signal is emitted when a pad for which there is no further possible
-decoding is added to the uridecodebin.</p>
-<div class="refsect3">
-<a name="id-1.2.36.13.5.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>bin</p></td>
-<td class="parameter_description"><p>The uridecodebin.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>pad</p></td>
-<td class="parameter_description"><p>the new pad containing caps that cannot be resolved to a 'final'.
-stream type.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>caps</p></td>
-<td class="parameter_description"><p>the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a> of the pad that cannot be resolved.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p>Flags: Run Last</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstURIDecodeBin-drained"></a><h3>The <code class="literal">“drained”</code> signal</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-user_function (<a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin"><span class="type">GstURIDecodeBin</span></a> *arg0,
-               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>         user_data)</pre>
-<p>This signal is emitted when the data for the current uri is played.</p>
-<div class="refsect3">
-<a name="id-1.2.36.13.6.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<p>Flags: Run Last</p>
-</div>
-<hr>
-<div class="refsect2">
 <a name="GstURIDecodeBin-autoplug-sort"></a><h3>The <code class="literal">“autoplug-sort”</code> signal</h3>
 <pre class="programlisting"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Value-arrays.html#GValueArray"><span class="returnvalue">GValueArray</span></a>*
 user_function (<a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin"><span class="type">GstURIDecodeBin</span></a> *bin,
@@ -691,7 +663,7 @@
   signal, they will never be invoked!
 </div>
 <div class="refsect3">
-<a name="id-1.2.36.13.7.7"></a><h4>Parameters</h4>
+<a name="id-1.2.36.13.6.7"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -728,7 +700,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.36.13.7.8"></a><h4>Returns</h4>
+<a name="id-1.2.36.13.6.8"></a><h4>Returns</h4>
 <p> A new sorted array of <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElementFactory.html"><span class="type">GstElementFactory</span></a> objects.</p>
 <p></p>
 </div>
@@ -737,6 +709,30 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="GstURIDecodeBin-drained"></a><h3>The <code class="literal">“drained”</code> signal</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+user_function (<a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin"><span class="type">GstURIDecodeBin</span></a> *arg0,
+               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>         user_data)</pre>
+<p>This signal is emitted when the data for the current uri is played.</p>
+<div class="refsect3">
+<a name="id-1.2.36.13.7.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>user_data</p></td>
+<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<p>Flags: Run Last</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GstURIDecodeBin-source-setup"></a><h3>The <code class="literal">“source-setup”</code> signal</h3>
 <pre class="programlisting"><span class="returnvalue">void</span>
 user_function (<a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin"><span class="type">GstURIDecodeBin</span></a> *bin,
@@ -779,15 +775,14 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="GstURIDecodeBin-autoplug-query"></a><h3>The <code class="literal">“autoplug-query”</code> signal</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-user_function (<a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin"><span class="type">GstURIDecodeBin</span></a> *gsturidecodebin,
-               <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a>          *arg1,
-               <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>      *arg2,
-               <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstQuery.html#GstQuery"><span class="type">GstQuery</span></a>        *arg3,
+<a name="GstURIDecodeBin-unknown-type"></a><h3>The <code class="literal">“unknown-type”</code> signal</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+user_function (<a class="link" href="gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin"><span class="type">GstURIDecodeBin</span></a> *bin,
+               <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a>          *pad,
+               <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>         *caps,
                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>         user_data)</pre>
-<p>
-</p>
+<p>This signal is emitted when a pad for which there is no further possible
+decoding is added to the uridecodebin.</p>
 <div class="refsect3">
 <a name="id-1.2.36.13.9.5"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
@@ -798,8 +793,19 @@
 </colgroup>
 <tbody>
 <tr>
-<td class="parameter_name"><p>gsturidecodebin</p></td>
-<td class="parameter_description"><p>the object which received the signal.</p></td>
+<td class="parameter_name"><p>bin</p></td>
+<td class="parameter_description"><p>The uridecodebin.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>pad</p></td>
+<td class="parameter_description"><p>the new pad containing caps that cannot be resolved to a 'final'.
+stream type.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>caps</p></td>
+<td class="parameter_description"><p>the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a> of the pad that cannot be resolved.</p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
@@ -810,10 +816,6 @@
 </tbody>
 </table></div>
 </div>
-<div class="refsect3">
-<a name="id-1.2.36.13.9.6"></a><h4>Returns</h4>
-<p></p>
-</div>
 <p>Flags: Run Last</p>
 </div>
 </div>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-videoconvert.html b/docs/plugins/html/gst-plugins-base-plugins-videoconvert.html
index cb7d440..44904a7 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-videoconvert.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-videoconvert.html
@@ -139,11 +139,11 @@
 </tr>
 <tr>
 <td><p><span class="term">details</span></p></td>
-<td>video/x-raw, format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+<td>video/x-raw, format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
 </tr>
 <tr>
 <td><p><span class="term"></span></p></td>
-<td> video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+<td> video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
 </tr>
 </tbody>
 </table></div>
@@ -167,11 +167,11 @@
 </tr>
 <tr>
 <td><p><span class="term">details</span></p></td>
-<td>video/x-raw, format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+<td>video/x-raw, format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
 </tr>
 <tr>
 <td><p><span class="term"></span></p></td>
-<td> video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+<td> video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
 </tr>
 </tbody>
 </table></div>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-videorate.html b/docs/plugins/html/gst-plugins-base-plugins-videorate.html
index 8042b32..cf53eca 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-videorate.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-videorate.html
@@ -44,10 +44,20 @@
 <tbody>
 <tr>
 <td class="property_type"><span class="type">guint64</span></td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-videorate.html#GstVideoRate--average-period" title="The “average-period” property">average-period</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><span class="type">guint64</span></td>
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-videorate.html#GstVideoRate--drop" title="The “drop” property">drop</a></td>
 <td class="property_flags">Read</td>
 </tr>
 <tr>
+<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-videorate.html#GstVideoRate--drop-only" title="The “drop-only” property">drop-only</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
 <td class="property_type"><span class="type">guint64</span></td>
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-videorate.html#GstVideoRate--duplicate" title="The “duplicate” property">duplicate</a></td>
 <td class="property_flags">Read</td>
@@ -58,6 +68,11 @@
 <td class="property_flags">Read</td>
 </tr>
 <tr>
+<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-videorate.html#GstVideoRate--max-rate" title="The “max-rate” property">max-rate</a></td>
+<td class="property_flags">Read / Write / Construct</td>
+</tr>
+<tr>
 <td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></td>
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-videorate.html#GstVideoRate--new-pref" title="The “new-pref” property">new-pref</a></td>
 <td class="property_flags">Read / Write</td>
@@ -77,21 +92,6 @@
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-videorate.html#GstVideoRate--skip-to-first" title="The “skip-to-first” property">skip-to-first</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
-<tr>
-<td class="property_type"><span class="type">guint64</span></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-videorate.html#GstVideoRate--average-period" title="The “average-period” property">average-period</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-videorate.html#GstVideoRate--drop-only" title="The “drop-only” property">drop-only</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-videorate.html#GstVideoRate--max-rate" title="The “max-rate” property">max-rate</a></td>
-<td class="property_flags">Read / Write / Construct</td>
-</tr>
 </tbody>
 </table></div>
 </div>
@@ -171,11 +171,10 @@
  Capture video from a V4L device, and adjust the stream to 12.5 fps before
 encoding to Ogg/Theora.
 </div>
-<p>Last reviewed on 2006-09-02 (0.10.11)</p>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.37.7.11.1.1"></a><h3>Element Information</h3>
+<a name="id-1.2.37.7.11.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -201,7 +200,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.37.7.11.1.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.37.7.11.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -285,6 +284,17 @@
 <div class="refsect1">
 <a name="gst-plugins-base-plugins-videorate.property-details"></a><h2>Property Details</h2>
 <div class="refsect2">
+<a name="GstVideoRate--average-period"></a><h3>The <code class="literal">“average-period”</code> property</h3>
+<pre class="programlisting">  “average-period”           <span class="type">guint64</span></pre>
+<p>Arrange for maximum framerate by dropping frames beyond a certain framerate,
+where the framerate is calculated using a moving average over the
+configured.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: &lt;= G_MAXLONG</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GstVideoRate--drop"></a><h3>The <code class="literal">“drop”</code> property</h3>
 <pre class="programlisting">  “drop”                     <span class="type">guint64</span></pre>
 <p>Number of dropped frames.</p>
@@ -293,6 +303,14 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="GstVideoRate--drop-only"></a><h3>The <code class="literal">“drop-only”</code> property</h3>
+<pre class="programlisting">  “drop-only”                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Only drop frames, no duplicates are produced.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GstVideoRate--duplicate"></a><h3>The <code class="literal">“duplicate”</code> property</h3>
 <pre class="programlisting">  “duplicate”                <span class="type">guint64</span></pre>
 <p>Number of duplicated frames.</p>
@@ -309,6 +327,15 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="GstVideoRate--max-rate"></a><h3>The <code class="literal">“max-rate”</code> property</h3>
+<pre class="programlisting">  “max-rate”                 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>maximum framerate to pass through</p>
+<p>Flags: Read / Write / Construct</p>
+<p>Allowed values: &gt;= 1</p>
+<p>Default value: 2147483647</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GstVideoRate--new-pref"></a><h3>The <code class="literal">“new-pref”</code> property</h3>
 <pre class="programlisting">  “new-pref”                 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></pre>
 <p>Value indicating how much to prefer new frames (unused).</p>
@@ -339,38 +366,6 @@
 <p>Don't produce buffers before the first one we receive.</p>
 <p>Flags: Read / Write</p>
 <p>Default value: FALSE</p>
-<p class="since">Since 0.10.25</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstVideoRate--average-period"></a><h3>The <code class="literal">“average-period”</code> property</h3>
-<pre class="programlisting">  “average-period”           <span class="type">guint64</span></pre>
-<p>Arrange for maximum framerate by dropping frames beyond a certain framerate,
-where the framerate is calculated using a moving average over the
-configured.</p>
-<p>Flags: Read / Write</p>
-<p>Allowed values: &lt;= G_MAXLONG</p>
-<p>Default value: 0</p>
-<p class="since">Since 0.10.36</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstVideoRate--drop-only"></a><h3>The <code class="literal">“drop-only”</code> property</h3>
-<pre class="programlisting">  “drop-only”                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
-<p>Only drop frames, no duplicates are produced.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: FALSE</p>
-<p class="since">Since 0.10.36</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstVideoRate--max-rate"></a><h3>The <code class="literal">“max-rate”</code> property</h3>
-<pre class="programlisting">  “max-rate”                 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
-<p>maximum framerate to pass through</p>
-<p>Flags: Read / Write / Construct</p>
-<p>Allowed values: &gt;= 1</p>
-<p>Default value: 2147483647</p>
-<p class="since">Since 0.10.36</p>
 </div>
 </div>
 </div>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-videoscale.html b/docs/plugins/html/gst-plugins-base-plugins-videoscale.html
index 2e9cfaa..858dfe4 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-videoscale.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-videoscale.html
@@ -43,11 +43,6 @@
 </colgroup>
 <tbody>
 <tr>
-<td class="property_type"><a class="link" href="gst-plugins-base-plugins-videoscale.html#GstVideoScaleMethod" title="enum GstVideoScaleMethod"><span class="type">GstVideoScaleMethod</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-videoscale.html#GstVideoScale--method" title="The “method” property">method</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
 <td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-videoscale.html#GstVideoScale--add-borders" title="The “add-borders” property">add-borders</a></td>
 <td class="property_flags">Read / Write</td>
@@ -63,6 +58,11 @@
 <td class="property_flags">Read / Write / Construct</td>
 </tr>
 <tr>
+<td class="property_type"><a class="link" href="gst-plugins-base-plugins-videoscale.html#GstVideoScaleMethod" title="enum GstVideoScaleMethod"><span class="type">GstVideoScaleMethod</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-videoscale.html#GstVideoScale--method" title="The “method” property">method</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
 <td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></td>
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-videoscale.html#GstVideoScale--sharpen" title="The “sharpen” property">sharpen</a></td>
 <td class="property_flags">Read / Write / Construct</td>
@@ -143,11 +143,10 @@
  Decode an Ogg/Theora and display the video using xvimagesink with a width
 of 50.
 </div>
-<p>Last reviewed on 2006-03-02 (0.10.4)</p>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.38.7.5.1.1"></a><h3>Element Information</h3>
+<a name="id-1.2.38.7.5.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -173,7 +172,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.38.7.5.1.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.38.7.5.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -294,14 +293,6 @@
 <div class="refsect1">
 <a name="gst-plugins-base-plugins-videoscale.property-details"></a><h2>Property Details</h2>
 <div class="refsect2">
-<a name="GstVideoScale--method"></a><h3>The <code class="literal">“method”</code> property</h3>
-<pre class="programlisting">  “method”                   <a class="link" href="gst-plugins-base-plugins-videoscale.html#GstVideoScaleMethod" title="enum GstVideoScaleMethod"><span class="type">GstVideoScaleMethod</span></a></pre>
-<p>method.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: Bilinear</p>
-</div>
-<hr>
-<div class="refsect2">
 <a name="GstVideoScale--add-borders"></a><h3>The <code class="literal">“add-borders”</code> property</h3>
 <pre class="programlisting">  “add-borders”              <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
 <p>Add black borders if necessary to keep the display aspect ratio.</p>
@@ -327,6 +318,14 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="GstVideoScale--method"></a><h3>The <code class="literal">“method”</code> property</h3>
+<pre class="programlisting">  “method”                   <a class="link" href="gst-plugins-base-plugins-videoscale.html#GstVideoScaleMethod" title="enum GstVideoScaleMethod"><span class="type">GstVideoScaleMethod</span></a></pre>
+<p>method.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: Bilinear</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GstVideoScale--sharpen"></a><h3>The <code class="literal">“sharpen”</code> property</h3>
 <pre class="programlisting">  “sharpen”                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></pre>
 <p>Sharpening.</p>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-videotestsrc.html b/docs/plugins/html/gst-plugins-base-plugins-videotestsrc.html
index 56d8654..2e799ea 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-videotestsrc.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-videotestsrc.html
@@ -43,13 +43,18 @@
 </colgroup>
 <tbody>
 <tr>
-<td class="property_type"><a class="link" href="gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrcPattern" title="enum GstVideoTestSrcPattern"><span class="type">GstVideoTestSrcPattern</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--pattern" title="The “pattern” property">pattern</a></td>
+<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--background-color" title="The “background-color” property">background-color</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
 <tr>
-<td class="property_type"><span class="type">gint64</span></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--timestamp-offset" title="The “timestamp-offset” property">timestamp-offset</a></td>
+<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--foreground-color" title="The “foreground-color” property">foreground-color</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--horizontal-speed" title="The “horizontal-speed” property">horizontal-speed</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
 <tr>
@@ -58,16 +63,6 @@
 <td class="property_flags">Read / Write</td>
 </tr>
 <tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--peer-alloc" title="The “peer-alloc” property">peer-alloc</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base/html/gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrcColorSpec"><span class="type">GstVideoTestSrcColorSpec</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--colorspec" title="The “colorspec” property">colorspec</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
 <td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--k0" title="The “k0” property">k0</a></td>
 <td class="property_flags">Read / Write</td>
@@ -118,6 +113,16 @@
 <td class="property_flags">Read / Write</td>
 </tr>
 <tr>
+<td class="property_type"><a class="link" href="gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrcPattern" title="enum GstVideoTestSrcPattern"><span class="type">GstVideoTestSrcPattern</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--pattern" title="The “pattern” property">pattern</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><span class="type">gint64</span></td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--timestamp-offset" title="The “timestamp-offset” property">timestamp-offset</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
 <td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--xoffset" title="The “xoffset” property">xoffset</a></td>
 <td class="property_flags">Read / Write</td>
@@ -127,21 +132,6 @@
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--yoffset" title="The “yoffset” property">yoffset</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--background-color" title="The “background-color” property">background-color</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--foreground-color" title="The “foreground-color” property">foreground-color</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--horizontal-speed" title="The “horizontal-speed” property">horizontal-speed</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
 </tbody>
 </table></div>
 </div>
@@ -244,7 +234,7 @@
 </tr>
 <tr>
 <td><p><span class="term">details</span></p></td>
-<td>video/x-raw, format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+<td>video/x-raw, format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
 </tr>
 <tr>
 <td><p><span class="term"></span></p></td>
@@ -462,17 +452,27 @@
 <div class="refsect1">
 <a name="gst-plugins-base-plugins-videotestsrc.property-details"></a><h2>Property Details</h2>
 <div class="refsect2">
-<a name="GstVideoTestSrc--pattern"></a><h3>The <code class="literal">“pattern”</code> property</h3>
-<pre class="programlisting">  “pattern”                  <a class="link" href="gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrcPattern" title="enum GstVideoTestSrcPattern"><span class="type">GstVideoTestSrcPattern</span></a></pre>
-<p>Type of test pattern to generate.</p>
+<a name="GstVideoTestSrc--background-color"></a><h3>The <code class="literal">“background-color”</code> property</h3>
+<pre class="programlisting">  “background-color”         <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></pre>
+<p>Color to use for background color of some patterns.  Default is
+black (0xff000000).</p>
 <p>Flags: Read / Write</p>
-<p>Default value: SMPTE 100% color bars</p>
+<p>Default value: 4278190080</p>
 </div>
 <hr>
 <div class="refsect2">
-<a name="GstVideoTestSrc--timestamp-offset"></a><h3>The <code class="literal">“timestamp-offset”</code> property</h3>
-<pre class="programlisting">  “timestamp-offset”         <span class="type">gint64</span></pre>
-<p>An offset added to timestamps set on buffers (in ns).</p>
+<a name="GstVideoTestSrc--foreground-color"></a><h3>The <code class="literal">“foreground-color”</code> property</h3>
+<pre class="programlisting">  “foreground-color”         <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></pre>
+<p>Color to use for solid-color pattern and foreground color of other
+patterns.  Default is white (0xffffffff).</p>
+<p>Flags: Read / Write</p>
+<p>Default value: 4294967295</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstVideoTestSrc--horizontal-speed"></a><h3>The <code class="literal">“horizontal-speed”</code> property</h3>
+<pre class="programlisting">  “horizontal-speed”         <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Scroll image number of pixels per frame (positive is scroll to the left).</p>
 <p>Flags: Read / Write</p>
 <p>Default value: 0</p>
 </div>
@@ -486,22 +486,6 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="GstVideoTestSrc--peer-alloc"></a><h3>The <code class="literal">“peer-alloc”</code> property</h3>
-<pre class="programlisting">  “peer-alloc”               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
-<p>Ask the peer to allocate an output buffer.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: TRUE</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstVideoTestSrc--colorspec"></a><h3>The <code class="literal">“colorspec”</code> property</h3>
-<pre class="programlisting">  “colorspec”                <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base/html/gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrcColorSpec"><span class="type">GstVideoTestSrcColorSpec</span></a></pre>
-<p>Generate video in the given color specification (Deprecated: use a caps filter with video/x-raw-yuv,color-matrix="sdtv" or "hdtv" instead).</p>
-<p>Flags: Read / Write</p>
-<p>Default value: ITU-R Rec. BT.601</p>
-</div>
-<hr>
-<div class="refsect2">
 <a name="GstVideoTestSrc--k0"></a><h3>The <code class="literal">“k0”</code> property</h3>
 <pre class="programlisting">  “k0”                       <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
 <p>Zoneplate zero order phase, for generating plain fields or phase offsets.</p>
@@ -582,6 +566,22 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="GstVideoTestSrc--pattern"></a><h3>The <code class="literal">“pattern”</code> property</h3>
+<pre class="programlisting">  “pattern”                  <a class="link" href="gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrcPattern" title="enum GstVideoTestSrcPattern"><span class="type">GstVideoTestSrcPattern</span></a></pre>
+<p>Type of test pattern to generate.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: SMPTE 100% color bars</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstVideoTestSrc--timestamp-offset"></a><h3>The <code class="literal">“timestamp-offset”</code> property</h3>
+<pre class="programlisting">  “timestamp-offset”         <span class="type">gint64</span></pre>
+<p>An offset added to timestamps set on buffers (in ns).</p>
+<p>Flags: Read / Write</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GstVideoTestSrc--xoffset"></a><h3>The <code class="literal">“xoffset”</code> property</h3>
 <pre class="programlisting">  “xoffset”                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
 <p>Zoneplate 2nd order products x offset.</p>
@@ -596,32 +596,6 @@
 <p>Flags: Read / Write</p>
 <p>Default value: 0</p>
 </div>
-<hr>
-<div class="refsect2">
-<a name="GstVideoTestSrc--background-color"></a><h3>The <code class="literal">“background-color”</code> property</h3>
-<pre class="programlisting">  “background-color”         <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></pre>
-<p>Color to use for background color of some patterns.  Default is
-black (0xff000000).</p>
-<p>Flags: Read / Write</p>
-<p>Default value: 4278190080</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstVideoTestSrc--foreground-color"></a><h3>The <code class="literal">“foreground-color”</code> property</h3>
-<pre class="programlisting">  “foreground-color”         <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></pre>
-<p>Color to use for solid-color pattern and foreground color of other
-patterns.  Default is white (0xffffffff).</p>
-<p>Flags: Read / Write</p>
-<p>Default value: 4294967295</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstVideoTestSrc--horizontal-speed"></a><h3>The <code class="literal">“horizontal-speed”</code> property</h3>
-<pre class="programlisting">  “horizontal-speed”         <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
-<p>Scroll image number of pixels per frame (positive is scroll to the left).</p>
-<p>Flags: Read / Write</p>
-<p>Default value: 0</p>
-</div>
 </div>
 </div>
 <div class="footer">
diff --git a/docs/plugins/html/gst-plugins-base-plugins-ximagesink.html b/docs/plugins/html/gst-plugins-base-plugins-ximagesink.html
index 5f315f4..729807e 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-ximagesink.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-ximagesink.html
@@ -50,17 +50,6 @@
 <td class="property_flags">Read / Write</td>
 </tr>
 <tr>
-<td class="property_type">
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-ximagesink.html#GstXImageSink--pixel-aspect-ratio" title="The “pixel-aspect-ratio” property">pixel-aspect-ratio</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-ximagesink.html#GstXImageSink--synchronous" title="The “synchronous” property">synchronous</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
 <td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-ximagesink.html#GstXImageSink--force-aspect-ratio" title="The “force-aspect-ratio” property">force-aspect-ratio</a></td>
 <td class="property_flags">Read / Write</td>
@@ -76,6 +65,17 @@
 <td class="property_flags">Read / Write</td>
 </tr>
 <tr>
+<td class="property_type">
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-ximagesink.html#GstXImageSink--pixel-aspect-ratio" title="The “pixel-aspect-ratio” property">pixel-aspect-ratio</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-ximagesink.html#GstXImageSink--synchronous" title="The “synchronous” property">synchronous</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
 <td class="property_type"><span class="type">guint64</span></td>
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-ximagesink.html#GstXImageSink--window-height" title="The “window-height” property">window-height</a></td>
 <td class="property_flags">Read</td>
@@ -202,22 +202,6 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="GstXImageSink--pixel-aspect-ratio"></a><h3>The <code class="literal">“pixel-aspect-ratio”</code> property</h3>
-<pre class="programlisting">  “pixel-aspect-ratio”       <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
-<p>The pixel aspect ratio of the device.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: "1/1"</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstXImageSink--synchronous"></a><h3>The <code class="literal">“synchronous”</code> property</h3>
-<pre class="programlisting">  “synchronous”              <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
-<p>When enabled, runs the X display in synchronous mode. (unrelated to A/V sync, used only for debugging).</p>
-<p>Flags: Read / Write</p>
-<p>Default value: FALSE</p>
-</div>
-<hr>
-<div class="refsect2">
 <a name="GstXImageSink--force-aspect-ratio"></a><h3>The <code class="literal">“force-aspect-ratio”</code> property</h3>
 <pre class="programlisting">  “force-aspect-ratio”       <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
 <p>When enabled, reverse caps negotiation (scaling) will respect original aspect ratio.</p>
@@ -242,6 +226,22 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="GstXImageSink--pixel-aspect-ratio"></a><h3>The <code class="literal">“pixel-aspect-ratio”</code> property</h3>
+<pre class="programlisting">  “pixel-aspect-ratio”       <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
+<p>The pixel aspect ratio of the device.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: "1/1"</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstXImageSink--synchronous"></a><h3>The <code class="literal">“synchronous”</code> property</h3>
+<pre class="programlisting">  “synchronous”              <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>When enabled, runs the X display in synchronous mode. (unrelated to A/V sync, used only for debugging).</p>
+<p>Flags: Read / Write</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GstXImageSink--window-height"></a><h3>The <code class="literal">“window-height”</code> property</h3>
 <pre class="programlisting">  “window-height”            <span class="type">guint64</span></pre>
 <p>Height of the window.</p>
diff --git a/docs/plugins/html/gst-plugins-base-plugins-xvimagesink.html b/docs/plugins/html/gst-plugins-base-plugins-xvimagesink.html
index 3b2531d..0bde808 100644
--- a/docs/plugins/html/gst-plugins-base-plugins-xvimagesink.html
+++ b/docs/plugins/html/gst-plugins-base-plugins-xvimagesink.html
@@ -44,22 +44,69 @@
 </colgroup>
 <tbody>
 <tr>
+<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--autopaint-colorkey" title="The “autopaint-colorkey” property">autopaint-colorkey</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
 <td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--brightness" title="The “brightness” property">brightness</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
 <tr>
 <td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--colorkey" title="The “colorkey” property">colorkey</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--contrast" title="The “contrast” property">contrast</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
 <tr>
 <td class="property_type">
 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--device" title="The “device” property">device</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type">
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--device-name" title="The “device-name” property">device-name</a></td>
+<td class="property_flags">Read</td>
+</tr>
+<tr>
+<td class="property_type">
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--display" title="The “display” property">display</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
 <tr>
+<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--double-buffer" title="The “double-buffer” property">double-buffer</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--draw-borders" title="The “draw-borders” property">draw-borders</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--force-aspect-ratio" title="The “force-aspect-ratio” property">force-aspect-ratio</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--handle-events" title="The “handle-events” property">handle-events</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--handle-expose" title="The “handle-expose” property">handle-expose</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
 <td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--hue" title="The “hue” property">hue</a></td>
 <td class="property_flags">Read / Write</td>
@@ -81,53 +128,6 @@
 <td class="property_flags">Read / Write</td>
 </tr>
 <tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--force-aspect-ratio" title="The “force-aspect-ratio” property">force-aspect-ratio</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type">
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--device" title="The “device” property">device</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type">
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--device-name" title="The “device-name” property">device-name</a></td>
-<td class="property_flags">Read</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--handle-events" title="The “handle-events” property">handle-events</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--double-buffer" title="The “double-buffer” property">double-buffer</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--handle-expose" title="The “handle-expose” property">handle-expose</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--autopaint-colorkey" title="The “autopaint-colorkey” property">autopaint-colorkey</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--colorkey" title="The “colorkey” property">colorkey</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--draw-borders" title="The “draw-borders” property">draw-borders</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
 <td class="property_type"><span class="type">guint64</span></td>
 <td class="property_name"><a class="link" href="gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--window-height" title="The “window-height” property">window-height</a></td>
 <td class="property_flags">Read</td>
@@ -246,6 +246,14 @@
 <div class="refsect1">
 <a name="gst-plugins-base-plugins-xvimagesink.property-details"></a><h2>Property Details</h2>
 <div class="refsect2">
+<a name="GstXvImageSink--autopaint-colorkey"></a><h3>The <code class="literal">“autopaint-colorkey”</code> property</h3>
+<pre class="programlisting">  “autopaint-colorkey”       <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Whether to autofill overlay with colorkey.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GstXvImageSink--brightness"></a><h3>The <code class="literal">“brightness”</code> property</h3>
 <pre class="programlisting">  “brightness”               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
 <p>The brightness of the video.</p>
@@ -255,6 +263,14 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="GstXvImageSink--colorkey"></a><h3>The <code class="literal">“colorkey”</code> property</h3>
+<pre class="programlisting">  “colorkey”                 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Color to use for the overlay mask.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GstXvImageSink--contrast"></a><h3>The <code class="literal">“contrast”</code> property</h3>
 <pre class="programlisting">  “contrast”                 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
 <p>The contrast of the video.</p>
@@ -264,6 +280,22 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="GstXvImageSink--device"></a><h3>The <code class="literal">“device”</code> property</h3>
+<pre class="programlisting">  “device”                   <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
+<p>The number of the video adaptor.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: "0"</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstXvImageSink--device-name"></a><h3>The <code class="literal">“device-name”</code> property</h3>
+<pre class="programlisting">  “device-name”              <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
+<p>The name of the video adaptor.</p>
+<p>Flags: Read</p>
+<p>Default value: NULL</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GstXvImageSink--display"></a><h3>The <code class="literal">“display”</code> property</h3>
 <pre class="programlisting">  “display”                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
 <p>X Display name.</p>
@@ -272,6 +304,46 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="GstXvImageSink--double-buffer"></a><h3>The <code class="literal">“double-buffer”</code> property</h3>
+<pre class="programlisting">  “double-buffer”            <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Whether to double-buffer the output.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstXvImageSink--draw-borders"></a><h3>The <code class="literal">“draw-borders”</code> property</h3>
+<pre class="programlisting">  “draw-borders”             <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Draw black borders to fill unused area in force-aspect-ratio mode.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstXvImageSink--force-aspect-ratio"></a><h3>The <code class="literal">“force-aspect-ratio”</code> property</h3>
+<pre class="programlisting">  “force-aspect-ratio”       <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>When enabled, scaling will respect original aspect ratio.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstXvImageSink--handle-events"></a><h3>The <code class="literal">“handle-events”</code> property</h3>
+<pre class="programlisting">  “handle-events”            <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>When enabled, XEvents will be selected and handled.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstXvImageSink--handle-expose"></a><h3>The <code class="literal">“handle-expose”</code> property</h3>
+<pre class="programlisting">  “handle-expose”            <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>When enabled, the current frame will always be drawn in response to X Expose events.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GstXvImageSink--hue"></a><h3>The <code class="literal">“hue”</code> property</h3>
 <pre class="programlisting">  “hue”                      <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
 <p>The hue of the video.</p>
@@ -306,78 +378,6 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="GstXvImageSink--force-aspect-ratio"></a><h3>The <code class="literal">“force-aspect-ratio”</code> property</h3>
-<pre class="programlisting">  “force-aspect-ratio”       <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
-<p>When enabled, scaling will respect original aspect ratio.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: TRUE</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstXvImageSink--device"></a><h3>The <code class="literal">“device”</code> property</h3>
-<pre class="programlisting">  “device”                   <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
-<p>The number of the video adaptor.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: "0"</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstXvImageSink--device-name"></a><h3>The <code class="literal">“device-name”</code> property</h3>
-<pre class="programlisting">  “device-name”              <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
-<p>The name of the video adaptor.</p>
-<p>Flags: Read</p>
-<p>Default value: NULL</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstXvImageSink--handle-events"></a><h3>The <code class="literal">“handle-events”</code> property</h3>
-<pre class="programlisting">  “handle-events”            <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
-<p>When enabled, XEvents will be selected and handled.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: TRUE</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstXvImageSink--double-buffer"></a><h3>The <code class="literal">“double-buffer”</code> property</h3>
-<pre class="programlisting">  “double-buffer”            <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
-<p>Whether to double-buffer the output.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: TRUE</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstXvImageSink--handle-expose"></a><h3>The <code class="literal">“handle-expose”</code> property</h3>
-<pre class="programlisting">  “handle-expose”            <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
-<p>When enabled, the current frame will always be drawn in response to X Expose events.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: TRUE</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstXvImageSink--autopaint-colorkey"></a><h3>The <code class="literal">“autopaint-colorkey”</code> property</h3>
-<pre class="programlisting">  “autopaint-colorkey”       <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
-<p>Whether to autofill overlay with colorkey.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: TRUE</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstXvImageSink--colorkey"></a><h3>The <code class="literal">“colorkey”</code> property</h3>
-<pre class="programlisting">  “colorkey”                 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
-<p>Color to use for the overlay mask.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: 0</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstXvImageSink--draw-borders"></a><h3>The <code class="literal">“draw-borders”</code> property</h3>
-<pre class="programlisting">  “draw-borders”             <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
-<p>Draw black borders to fill unused area in force-aspect-ratio mode.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: TRUE</p>
-</div>
-<hr>
-<div class="refsect2">
 <a name="GstXvImageSink--window-height"></a><h3>The <code class="literal">“window-height”</code> property</h3>
 <pre class="programlisting">  “window-height”            <span class="type">guint64</span></pre>
 <p>Height of the window.</p>
diff --git a/docs/plugins/html/index.html b/docs/plugins/html/index.html
index bf0ac4e..7065625 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 Base Plugins 1.0 Plugins Reference Manual</p></th></tr></table></div>
 <div><p class="releaseinfo">
-      for GStreamer Base Plugins 1.0 (1.2.4)
+      for GStreamer Base Plugins 1.0 (1.3.1)
       The latest version of this documentation can be found on-line at
       <a class="ulink" href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base/html/" target="_top">http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base/html/</a>.
     </p></div>
diff --git a/docs/plugins/html/index.sgml b/docs/plugins/html/index.sgml
index 234d79b..29a372e 100644
--- a/docs/plugins/html/index.sgml
+++ b/docs/plugins/html/index.sgml
@@ -25,16 +25,16 @@
 <ANCHOR id="gst-plugins-base-plugins-appsrc.property-details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-appsrc.html#gst-plugins-base-plugins-appsrc.property-details">
 <ANCHOR id="GstAppSrc--block" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-appsrc.html#GstAppSrc--block">
 <ANCHOR id="GstAppSrc--caps" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-appsrc.html#GstAppSrc--caps">
+<ANCHOR id="GstAppSrc--current-level-bytes" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-appsrc.html#GstAppSrc--current-level-bytes">
+<ANCHOR id="GstAppSrc--emit-signals" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-appsrc.html#GstAppSrc--emit-signals">
 <ANCHOR id="GstAppSrc--format" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-appsrc.html#GstAppSrc--format">
 <ANCHOR id="GstAppSrc--is-live" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-appsrc.html#GstAppSrc--is-live">
 <ANCHOR id="GstAppSrc--max-bytes" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-appsrc.html#GstAppSrc--max-bytes">
 <ANCHOR id="GstAppSrc--max-latency" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-appsrc.html#GstAppSrc--max-latency">
 <ANCHOR id="GstAppSrc--min-latency" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-appsrc.html#GstAppSrc--min-latency">
+<ANCHOR id="GstAppSrc--min-percent" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-appsrc.html#GstAppSrc--min-percent">
 <ANCHOR id="GstAppSrc--size" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-appsrc.html#GstAppSrc--size">
 <ANCHOR id="GstAppSrc--stream-type" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-appsrc.html#GstAppSrc--stream-type">
-<ANCHOR id="GstAppSrc--emit-signals" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-appsrc.html#GstAppSrc--emit-signals">
-<ANCHOR id="GstAppSrc--min-percent" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-appsrc.html#GstAppSrc--min-percent">
-<ANCHOR id="GstAppSrc--current-level-bytes" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-appsrc.html#GstAppSrc--current-level-bytes">
 <ANCHOR id="gst-plugins-base-plugins-appsrc.signal-details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-appsrc.html#gst-plugins-base-plugins-appsrc.signal-details">
 <ANCHOR id="GstAppSrc-end-of-stream" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-appsrc.html#GstAppSrc-end-of-stream">
 <ANCHOR id="GstAppSrc-enough-data" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-appsrc.html#GstAppSrc-enough-data">
@@ -60,13 +60,9 @@
 <ANCHOR id="GstAppSink--max-buffers" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-appsink.html#GstAppSink--max-buffers">
 <ANCHOR id="gst-plugins-base-plugins-appsink.signal-details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-appsink.html#gst-plugins-base-plugins-appsink.signal-details">
 <ANCHOR id="GstAppSink-eos" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-appsink.html#GstAppSink-eos">
-<ANCHOR id="GstAppSink-new-buffer" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-appsink.html#GstAppSink-new-buffer">
 <ANCHOR id="GstAppSink-new-preroll" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-appsink.html#GstAppSink-new-preroll">
-<ANCHOR id="GstAppSink-pull-buffer" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-appsink.html#GstAppSink-pull-buffer">
-<ANCHOR id="GstAppSink-pull-preroll" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-appsink.html#GstAppSink-pull-preroll">
-<ANCHOR id="GstAppSink-new-buffer-list" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-appsink.html#GstAppSink-new-buffer-list">
-<ANCHOR id="GstAppSink-pull-buffer-list" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-appsink.html#GstAppSink-pull-buffer-list">
 <ANCHOR id="GstAppSink-new-sample" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-appsink.html#GstAppSink-new-sample">
+<ANCHOR id="GstAppSink-pull-preroll" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-appsink.html#GstAppSink-pull-preroll">
 <ANCHOR id="GstAppSink-pull-sample" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-appsink.html#GstAppSink-pull-sample">
 <ANCHOR id="gst-plugins-base-plugins-alsasink" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-alsasink.html">
 <ANCHOR id="gst-plugins-base-plugins-alsasink.properties" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-alsasink.html#gst-plugins-base-plugins-alsasink.properties">
@@ -78,9 +74,9 @@
 <ANCHOR id="gst-plugins-base-plugins-alsasink.other_details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-alsasink.html#gst-plugins-base-plugins-alsasink.other_details">
 <ANCHOR id="GstAlsaSink-struct" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-alsasink.html#GstAlsaSink-struct">
 <ANCHOR id="gst-plugins-base-plugins-alsasink.property-details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-alsasink.html#gst-plugins-base-plugins-alsasink.property-details">
+<ANCHOR id="GstAlsaSink--card-name" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-alsasink.html#GstAlsaSink--card-name">
 <ANCHOR id="GstAlsaSink--device" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-alsasink.html#GstAlsaSink--device">
 <ANCHOR id="GstAlsaSink--device-name" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-alsasink.html#GstAlsaSink--device-name">
-<ANCHOR id="GstAlsaSink--card-name" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-alsasink.html#GstAlsaSink--card-name">
 <ANCHOR id="gst-plugins-base-plugins-alsasrc" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-alsasrc.html">
 <ANCHOR id="gst-plugins-base-plugins-alsasrc.properties" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-alsasrc.html#gst-plugins-base-plugins-alsasrc.properties">
 <ANCHOR id="GstAlsaSrc" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-alsasrc.html#GstAlsaSrc">
@@ -91,9 +87,9 @@
 <ANCHOR id="gst-plugins-base-plugins-alsasrc.other_details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-alsasrc.html#gst-plugins-base-plugins-alsasrc.other_details">
 <ANCHOR id="GstAlsaSrc-struct" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-alsasrc.html#GstAlsaSrc-struct">
 <ANCHOR id="gst-plugins-base-plugins-alsasrc.property-details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-alsasrc.html#gst-plugins-base-plugins-alsasrc.property-details">
+<ANCHOR id="GstAlsaSrc--card-name" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-alsasrc.html#GstAlsaSrc--card-name">
 <ANCHOR id="GstAlsaSrc--device" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-alsasrc.html#GstAlsaSrc--device">
 <ANCHOR id="GstAlsaSrc--device-name" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-alsasrc.html#GstAlsaSrc--device-name">
-<ANCHOR id="GstAlsaSrc--card-name" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-alsasrc.html#GstAlsaSrc--card-name">
 <ANCHOR id="gst-plugins-base-plugins-audioconvert" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-audioconvert.html">
 <ANCHOR id="gst-plugins-base-plugins-audioconvert.properties" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-audioconvert.html#gst-plugins-base-plugins-audioconvert.properties">
 <ANCHOR id="GstAudioConvert" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-audioconvert.html#GstAudioConvert">
@@ -123,8 +119,8 @@
 <ANCHOR id="GstAudioRate--in" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-audiorate.html#GstAudioRate--in">
 <ANCHOR id="GstAudioRate--out" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-audiorate.html#GstAudioRate--out">
 <ANCHOR id="GstAudioRate--silent" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-audiorate.html#GstAudioRate--silent">
-<ANCHOR id="GstAudioRate--tolerance" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-audiorate.html#GstAudioRate--tolerance">
 <ANCHOR id="GstAudioRate--skip-to-first" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-audiorate.html#GstAudioRate--skip-to-first">
+<ANCHOR id="GstAudioRate--tolerance" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-audiorate.html#GstAudioRate--tolerance">
 <ANCHOR id="gst-plugins-base-plugins-audiorate.see-also" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-audiorate.html#gst-plugins-base-plugins-audiorate.see-also">
 <ANCHOR id="gst-plugins-base-plugins-audioresample" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-audioresample.html">
 <ANCHOR id="gst-plugins-base-plugins-audioresample.properties" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-audioresample.html#gst-plugins-base-plugins-audioresample.properties">
@@ -136,7 +132,6 @@
 <ANCHOR id="gst-plugins-base-plugins-audioresample.other_details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-audioresample.html#gst-plugins-base-plugins-audioresample.other_details">
 <ANCHOR id="GstAudioResample-struct" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-audioresample.html#GstAudioResample-struct">
 <ANCHOR id="gst-plugins-base-plugins-audioresample.property-details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-audioresample.html#gst-plugins-base-plugins-audioresample.property-details">
-<ANCHOR id="GstAudioResample--filter-length" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-audioresample.html#GstAudioResample--filter-length">
 <ANCHOR id="GstAudioResample--quality" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-audioresample.html#GstAudioResample--quality">
 <ANCHOR id="GstAudioResample--sinc-filter-auto-threshold" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-audioresample.html#GstAudioResample--sinc-filter-auto-threshold">
 <ANCHOR id="GstAudioResample--sinc-filter-mode" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-audioresample.html#GstAudioResample--sinc-filter-mode">
@@ -151,14 +146,14 @@
 <ANCHOR id="GstAudioTestSrc-struct" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-audiotestsrc.html#GstAudioTestSrc-struct">
 <ANCHOR id="GstAudioTestSrcWave" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-audiotestsrc.html#GstAudioTestSrcWave">
 <ANCHOR id="gst-plugins-base-plugins-audiotestsrc.property-details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-audiotestsrc.html#gst-plugins-base-plugins-audiotestsrc.property-details">
+<ANCHOR id="GstAudioTestSrc--can-activate-pull" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-audiotestsrc.html#GstAudioTestSrc--can-activate-pull">
+<ANCHOR id="GstAudioTestSrc--can-activate-push" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-audiotestsrc.html#GstAudioTestSrc--can-activate-push">
 <ANCHOR id="GstAudioTestSrc--freq" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-audiotestsrc.html#GstAudioTestSrc--freq">
 <ANCHOR id="GstAudioTestSrc--is-live" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-audiotestsrc.html#GstAudioTestSrc--is-live">
 <ANCHOR id="GstAudioTestSrc--samplesperbuffer" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-audiotestsrc.html#GstAudioTestSrc--samplesperbuffer">
 <ANCHOR id="GstAudioTestSrc--timestamp-offset" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-audiotestsrc.html#GstAudioTestSrc--timestamp-offset">
 <ANCHOR id="GstAudioTestSrc--volume" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-audiotestsrc.html#GstAudioTestSrc--volume">
 <ANCHOR id="GstAudioTestSrc--wave" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-audiotestsrc.html#GstAudioTestSrc--wave">
-<ANCHOR id="GstAudioTestSrc--can-activate-pull" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-audiotestsrc.html#GstAudioTestSrc--can-activate-pull">
-<ANCHOR id="GstAudioTestSrc--can-activate-push" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-audiotestsrc.html#GstAudioTestSrc--can-activate-push">
 <ANCHOR id="gst-plugins-base-plugins-cdparanoiasrc" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-cdparanoiasrc.html">
 <ANCHOR id="gst-plugins-base-plugins-cdparanoiasrc.properties" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-cdparanoiasrc.html#gst-plugins-base-plugins-cdparanoiasrc.properties">
 <ANCHOR id="gst-plugins-base-plugins-cdparanoiasrc.signals" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-cdparanoiasrc.html#gst-plugins-base-plugins-cdparanoiasrc.signals">
@@ -171,11 +166,11 @@
 <ANCHOR id="gst-plugins-base-plugins-cdparanoiasrc.other_details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-cdparanoiasrc.html#gst-plugins-base-plugins-cdparanoiasrc.other_details">
 <ANCHOR id="GstCdParanoiaSrc-struct" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-cdparanoiasrc.html#GstCdParanoiaSrc-struct">
 <ANCHOR id="gst-plugins-base-plugins-cdparanoiasrc.property-details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-cdparanoiasrc.html#gst-plugins-base-plugins-cdparanoiasrc.property-details">
+<ANCHOR id="GstCdParanoiaSrc--cache-size" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-cdparanoiasrc.html#GstCdParanoiaSrc--cache-size">
 <ANCHOR id="GstCdParanoiaSrc--generic-device" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-cdparanoiasrc.html#GstCdParanoiaSrc--generic-device">
 <ANCHOR id="GstCdParanoiaSrc--paranoia-mode" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-cdparanoiasrc.html#GstCdParanoiaSrc--paranoia-mode">
 <ANCHOR id="GstCdParanoiaSrc--read-speed" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-cdparanoiasrc.html#GstCdParanoiaSrc--read-speed">
 <ANCHOR id="GstCdParanoiaSrc--search-overlap" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-cdparanoiasrc.html#GstCdParanoiaSrc--search-overlap">
-<ANCHOR id="GstCdParanoiaSrc--cache-size" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-cdparanoiasrc.html#GstCdParanoiaSrc--cache-size">
 <ANCHOR id="gst-plugins-base-plugins-cdparanoiasrc.signal-details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-cdparanoiasrc.html#gst-plugins-base-plugins-cdparanoiasrc.signal-details">
 <ANCHOR id="GstCdParanoiaSrc-transport-error" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-cdparanoiasrc.html#GstCdParanoiaSrc-transport-error">
 <ANCHOR id="GstCdParanoiaSrc-uncorrected-error" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-cdparanoiasrc.html#GstCdParanoiaSrc-uncorrected-error">
@@ -202,9 +197,8 @@
 <ANCHOR id="gst-plugins-base-plugins-decodebin.other_details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-decodebin.html#gst-plugins-base-plugins-decodebin.other_details">
 <ANCHOR id="GstDecodeBin-struct" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-decodebin.html#GstDecodeBin-struct">
 <ANCHOR id="gst-plugins-base-plugins-decodebin.property-details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-decodebin.html#gst-plugins-base-plugins-decodebin.property-details">
-<ANCHOR id="GstDecodeBin--threaded" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-decodebin.html#GstDecodeBin--threaded">
-<ANCHOR id="GstDecodeBin--sink-caps" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-decodebin.html#GstDecodeBin--sink-caps">
 <ANCHOR id="GstDecodeBin--caps" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-decodebin.html#GstDecodeBin--caps">
+<ANCHOR id="GstDecodeBin--connection-speed" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-decodebin.html#GstDecodeBin--connection-speed">
 <ANCHOR id="GstDecodeBin--expose-all-streams" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-decodebin.html#GstDecodeBin--expose-all-streams">
 <ANCHOR id="GstDecodeBin--high-percent" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-decodebin.html#GstDecodeBin--high-percent">
 <ANCHOR id="GstDecodeBin--low-percent" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-decodebin.html#GstDecodeBin--low-percent">
@@ -212,19 +206,17 @@
 <ANCHOR id="GstDecodeBin--max-size-bytes" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-decodebin.html#GstDecodeBin--max-size-bytes">
 <ANCHOR id="GstDecodeBin--max-size-time" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-decodebin.html#GstDecodeBin--max-size-time">
 <ANCHOR id="GstDecodeBin--post-stream-topology" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-decodebin.html#GstDecodeBin--post-stream-topology">
+<ANCHOR id="GstDecodeBin--sink-caps" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-decodebin.html#GstDecodeBin--sink-caps">
 <ANCHOR id="GstDecodeBin--subtitle-encoding" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-decodebin.html#GstDecodeBin--subtitle-encoding">
 <ANCHOR id="GstDecodeBin--use-buffering" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-decodebin.html#GstDecodeBin--use-buffering">
-<ANCHOR id="GstDecodeBin--connection-speed" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-decodebin.html#GstDecodeBin--connection-speed">
 <ANCHOR id="gst-plugins-base-plugins-decodebin.signal-details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-decodebin.html#gst-plugins-base-plugins-decodebin.signal-details">
-<ANCHOR id="GstDecodeBin-new-decoded-pad" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-decodebin.html#GstDecodeBin-new-decoded-pad">
-<ANCHOR id="GstDecodeBin-removed-decoded-pad" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-decodebin.html#GstDecodeBin-removed-decoded-pad">
-<ANCHOR id="GstDecodeBin-unknown-type" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-decodebin.html#GstDecodeBin-unknown-type">
 <ANCHOR id="GstDecodeBin-autoplug-continue" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-decodebin.html#GstDecodeBin-autoplug-continue">
 <ANCHOR id="GstDecodeBin-autoplug-factories" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-decodebin.html#GstDecodeBin-autoplug-factories">
+<ANCHOR id="GstDecodeBin-autoplug-query" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-decodebin.html#GstDecodeBin-autoplug-query">
 <ANCHOR id="GstDecodeBin-autoplug-select" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-decodebin.html#GstDecodeBin-autoplug-select">
 <ANCHOR id="GstDecodeBin-autoplug-sort" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-decodebin.html#GstDecodeBin-autoplug-sort">
 <ANCHOR id="GstDecodeBin-drained" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-decodebin.html#GstDecodeBin-drained">
-<ANCHOR id="GstDecodeBin-autoplug-query" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-decodebin.html#GstDecodeBin-autoplug-query">
+<ANCHOR id="GstDecodeBin-unknown-type" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-decodebin.html#GstDecodeBin-unknown-type">
 <ANCHOR id="gst-plugins-base-plugins-encodebin" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-encodebin.html">
 <ANCHOR id="gst-plugins-base-plugins-encodebin.properties" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-encodebin.html#gst-plugins-base-plugins-encodebin.properties">
 <ANCHOR id="gst-plugins-base-plugins-encodebin.signals" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-encodebin.html#gst-plugins-base-plugins-encodebin.signals">
@@ -239,11 +231,11 @@
 <ANCHOR id="gst-plugins-base-plugins-encodebin.property-details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-encodebin.html#gst-plugins-base-plugins-encodebin.property-details">
 <ANCHOR id="GstEncodeBin--audio-jitter-tolerance" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-encodebin.html#GstEncodeBin--audio-jitter-tolerance">
 <ANCHOR id="GstEncodeBin--avoid-reencoding" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-encodebin.html#GstEncodeBin--avoid-reencoding">
+<ANCHOR id="GstEncodeBin--flags" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-encodebin.html#GstEncodeBin--flags">
 <ANCHOR id="GstEncodeBin--profile" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-encodebin.html#GstEncodeBin--profile">
 <ANCHOR id="GstEncodeBin--queue-buffers-max" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-encodebin.html#GstEncodeBin--queue-buffers-max">
 <ANCHOR id="GstEncodeBin--queue-bytes-max" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-encodebin.html#GstEncodeBin--queue-bytes-max">
 <ANCHOR id="GstEncodeBin--queue-time-max" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-encodebin.html#GstEncodeBin--queue-time-max">
-<ANCHOR id="GstEncodeBin--flags" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-encodebin.html#GstEncodeBin--flags">
 <ANCHOR id="gst-plugins-base-plugins-encodebin.signal-details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-encodebin.html#gst-plugins-base-plugins-encodebin.signal-details">
 <ANCHOR id="GstEncodeBin-request-pad" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-encodebin.html#GstEncodeBin-request-pad">
 <ANCHOR id="GstEncodeBin-request-profile-pad" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-encodebin.html#GstEncodeBin-request-profile-pad">
@@ -269,8 +261,8 @@
 <ANCHOR id="gst-plugins-base-plugins-giosink.other_details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-giosink.html#gst-plugins-base-plugins-giosink.other_details">
 <ANCHOR id="GstGioSink-struct" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-giosink.html#GstGioSink-struct">
 <ANCHOR id="gst-plugins-base-plugins-giosink.property-details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-giosink.html#gst-plugins-base-plugins-giosink.property-details">
-<ANCHOR id="GstGioSink--location" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-giosink.html#GstGioSink--location">
 <ANCHOR id="GstGioSink--file" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-giosink.html#GstGioSink--file">
+<ANCHOR id="GstGioSink--location" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-giosink.html#GstGioSink--location">
 <ANCHOR id="gst-plugins-base-plugins-giosink.see-also" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-giosink.html#gst-plugins-base-plugins-giosink.see-also">
 <ANCHOR id="gst-plugins-base-plugins-giosrc" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-giosrc.html">
 <ANCHOR id="gst-plugins-base-plugins-giosrc.properties" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-giosrc.html#gst-plugins-base-plugins-giosrc.properties">
@@ -283,8 +275,8 @@
 <ANCHOR id="gst-plugins-base-plugins-giosrc.other_details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-giosrc.html#gst-plugins-base-plugins-giosrc.other_details">
 <ANCHOR id="GstGioSrc-struct" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-giosrc.html#GstGioSrc-struct">
 <ANCHOR id="gst-plugins-base-plugins-giosrc.property-details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-giosrc.html#gst-plugins-base-plugins-giosrc.property-details">
-<ANCHOR id="GstGioSrc--location" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-giosrc.html#GstGioSrc--location">
 <ANCHOR id="GstGioSrc--file" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-giosrc.html#GstGioSrc--file">
+<ANCHOR id="GstGioSrc--location" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-giosrc.html#GstGioSrc--location">
 <ANCHOR id="gst-plugins-base-plugins-giosrc.see-also" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-giosrc.html#gst-plugins-base-plugins-giosrc.see-also">
 <ANCHOR id="gst-plugins-base-plugins-giostreamsink" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-giostreamsink.html">
 <ANCHOR id="gst-plugins-base-plugins-giostreamsink.properties" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-giostreamsink.html#gst-plugins-base-plugins-giostreamsink.properties">
@@ -322,43 +314,18 @@
 <ANCHOR id="GstSyncMethod" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multifdsink.html#GstSyncMethod">
 <ANCHOR id="GstClientStatus" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multifdsink.html#GstClientStatus">
 <ANCHOR id="gst-plugins-base-plugins-multifdsink.property-details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multifdsink.html#gst-plugins-base-plugins-multifdsink.property-details">
-<ANCHOR id="GstMultiFdSink--buffers-max" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--buffers-max">
-<ANCHOR id="GstMultiFdSink--buffers-queued" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--buffers-queued">
-<ANCHOR id="GstMultiFdSink--buffers-soft-max" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--buffers-soft-max">
-<ANCHOR id="GstMultiFdSink--bytes-served" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--bytes-served">
-<ANCHOR id="GstMultiFdSink--bytes-to-serve" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--bytes-to-serve">
-<ANCHOR id="GstMultiFdSink--mode" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--mode">
-<ANCHOR id="GstMultiFdSink--protocol" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--protocol">
-<ANCHOR id="GstMultiFdSink--recover-policy" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--recover-policy">
-<ANCHOR id="GstMultiFdSink--sync-clients" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--sync-clients">
-<ANCHOR id="GstMultiFdSink--sync-method" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--sync-method">
-<ANCHOR id="GstMultiFdSink--timeout" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--timeout">
-<ANCHOR id="GstMultiFdSink--buffers-min" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--buffers-min">
-<ANCHOR id="GstMultiFdSink--burst-unit" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--burst-unit">
-<ANCHOR id="GstMultiFdSink--burst-value" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--burst-value">
-<ANCHOR id="GstMultiFdSink--bytes-min" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--bytes-min">
-<ANCHOR id="GstMultiFdSink--time-min" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--time-min">
-<ANCHOR id="GstMultiFdSink--unit-type" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--unit-type">
-<ANCHOR id="GstMultiFdSink--units-max" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--units-max">
-<ANCHOR id="GstMultiFdSink--units-soft-max" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--units-soft-max">
-<ANCHOR id="GstMultiFdSink--qos-dscp" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--qos-dscp">
 <ANCHOR id="GstMultiFdSink--handle-read" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--handle-read">
-<ANCHOR id="GstMultiFdSink--resend-streamheader" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--resend-streamheader">
-<ANCHOR id="GstMultiFdSink--num-fds" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink--num-fds">
 <ANCHOR id="gst-plugins-base-plugins-multifdsink.signal-details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multifdsink.html#gst-plugins-base-plugins-multifdsink.signal-details">
 <ANCHOR id="GstMultiFdSink-add" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink-add">
-<ANCHOR id="GstMultiFdSink-clear" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink-clear">
+<ANCHOR id="GstMultiFdSink-add-full" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink-add-full">
 <ANCHOR id="GstMultiFdSink-client-added" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink-client-added">
+<ANCHOR id="GstMultiFdSink-client-fd-removed" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink-client-fd-removed">
 <ANCHOR id="GstMultiFdSink-client-removed" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink-client-removed">
 <ANCHOR id="GstMultiFdSink-get-stats" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink-get-stats">
 <ANCHOR id="GstMultiFdSink-remove" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink-remove">
-<ANCHOR id="GstMultiFdSink-client-fd-removed" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink-client-fd-removed">
-<ANCHOR id="GstMultiFdSink-add-full" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink-add-full">
 <ANCHOR id="GstMultiFdSink-remove-flush" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink-remove-flush">
-<ANCHOR id="GstMultiFdSink-client-handle-removed" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multifdsink.html#GstMultiFdSink-client-handle-removed">
 <ANCHOR id="gst-plugins-base-plugins-multifdsink.see-also" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multifdsink.html#gst-plugins-base-plugins-multifdsink.see-also">
 <ANCHOR id="gst-plugins-base-plugins-multisocketsink" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multisocketsink.html">
-<ANCHOR id="gst-plugins-base-plugins-multisocketsink.properties" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multisocketsink.html#gst-plugins-base-plugins-multisocketsink.properties">
 <ANCHOR id="gst-plugins-base-plugins-multisocketsink.signals" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multisocketsink.html#gst-plugins-base-plugins-multisocketsink.signals">
 <ANCHOR id="GstMultiSocketSink" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink">
 <ANCHOR id="gst-plugins-base-plugins-multisocketsink.other" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multisocketsink.html#gst-plugins-base-plugins-multisocketsink.other">
@@ -370,38 +337,15 @@
 <ANCHOR id="GstRecoverPolicy" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multisocketsink.html#GstRecoverPolicy">
 <ANCHOR id="GstSyncMethod" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multisocketsink.html#GstSyncMethod">
 <ANCHOR id="GstClientStatus" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multisocketsink.html#GstClientStatus">
-<ANCHOR id="gst-plugins-base-plugins-multisocketsink.property-details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multisocketsink.html#gst-plugins-base-plugins-multisocketsink.property-details">
-<ANCHOR id="GstMultiSocketSink--buffers-max" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--buffers-max">
-<ANCHOR id="GstMultiSocketSink--buffers-min" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--buffers-min">
-<ANCHOR id="GstMultiSocketSink--buffers-queued" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--buffers-queued">
-<ANCHOR id="GstMultiSocketSink--buffers-soft-max" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--buffers-soft-max">
-<ANCHOR id="GstMultiSocketSink--burst-format" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--burst-format">
-<ANCHOR id="GstMultiSocketSink--burst-value" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--burst-value">
-<ANCHOR id="GstMultiSocketSink--bytes-min" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--bytes-min">
-<ANCHOR id="GstMultiSocketSink--bytes-served" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--bytes-served">
-<ANCHOR id="GstMultiSocketSink--bytes-to-serve" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--bytes-to-serve">
-<ANCHOR id="GstMultiSocketSink--handle-read" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--handle-read">
-<ANCHOR id="GstMultiSocketSink--num-sockets" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--num-sockets">
-<ANCHOR id="GstMultiSocketSink--qos-dscp" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--qos-dscp">
-<ANCHOR id="GstMultiSocketSink--recover-policy" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--recover-policy">
-<ANCHOR id="GstMultiSocketSink--resend-streamheader" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--resend-streamheader">
-<ANCHOR id="GstMultiSocketSink--sync-method" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--sync-method">
-<ANCHOR id="GstMultiSocketSink--time-min" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--time-min">
-<ANCHOR id="GstMultiSocketSink--timeout" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--timeout">
-<ANCHOR id="GstMultiSocketSink--unit-type" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--unit-type">
-<ANCHOR id="GstMultiSocketSink--units-max" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--units-max">
-<ANCHOR id="GstMultiSocketSink--units-soft-max" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink--units-soft-max">
 <ANCHOR id="gst-plugins-base-plugins-multisocketsink.signal-details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multisocketsink.html#gst-plugins-base-plugins-multisocketsink.signal-details">
 <ANCHOR id="GstMultiSocketSink-add" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink-add">
 <ANCHOR id="GstMultiSocketSink-add-full" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink-add-full">
-<ANCHOR id="GstMultiSocketSink-clear" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink-clear">
 <ANCHOR id="GstMultiSocketSink-client-added" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink-client-added">
 <ANCHOR id="GstMultiSocketSink-client-removed" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink-client-removed">
 <ANCHOR id="GstMultiSocketSink-client-socket-removed" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink-client-socket-removed">
 <ANCHOR id="GstMultiSocketSink-get-stats" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink-get-stats">
 <ANCHOR id="GstMultiSocketSink-remove" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink-remove">
 <ANCHOR id="GstMultiSocketSink-remove-flush" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink-remove-flush">
-<ANCHOR id="GstMultiSocketSink-client-handle-removed" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multisocketsink.html#GstMultiSocketSink-client-handle-removed">
 <ANCHOR id="gst-plugins-base-plugins-multisocketsink.see-also" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-multisocketsink.html#gst-plugins-base-plugins-multisocketsink.see-also">
 <ANCHOR id="gst-plugins-base-plugins-oggdemux" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-oggdemux.html">
 <ANCHOR id="GstOggDemux" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-oggdemux.html#GstOggDemux">
@@ -440,19 +384,18 @@
 <ANCHOR id="GstPlayFlags" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#GstPlayFlags">
 <ANCHOR id="gst-plugins-base-plugins-playbin.property-details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#gst-plugins-base-plugins-playbin.property-details">
 <ANCHOR id="GstPlayBin--audio-sink" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#GstPlayBin--audio-sink">
-<ANCHOR id="GstPlayBin--frame" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#GstPlayBin--frame">
-<ANCHOR id="GstPlayBin--subtitle-font-desc" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#GstPlayBin--subtitle-font-desc">
-<ANCHOR id="GstPlayBin--video-sink" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#GstPlayBin--video-sink">
-<ANCHOR id="GstPlayBin--vis-plugin" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#GstPlayBin--vis-plugin">
-<ANCHOR id="GstPlayBin--volume" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#GstPlayBin--volume">
-<ANCHOR id="GstPlayBin--connection-speed" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#GstPlayBin--connection-speed">
+<ANCHOR id="GstPlayBin--audio-stream-combiner" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#GstPlayBin--audio-stream-combiner">
 <ANCHOR id="GstPlayBin--av-offset" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#GstPlayBin--av-offset">
 <ANCHOR id="GstPlayBin--buffer-duration" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#GstPlayBin--buffer-duration">
 <ANCHOR id="GstPlayBin--buffer-size" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#GstPlayBin--buffer-size">
+<ANCHOR id="GstPlayBin--connection-speed" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#GstPlayBin--connection-speed">
 <ANCHOR id="GstPlayBin--current-audio" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#GstPlayBin--current-audio">
+<ANCHOR id="GstPlayBin--current-suburi" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#GstPlayBin--current-suburi">
 <ANCHOR id="GstPlayBin--current-text" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#GstPlayBin--current-text">
+<ANCHOR id="GstPlayBin--current-uri" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#GstPlayBin--current-uri">
 <ANCHOR id="GstPlayBin--current-video" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#GstPlayBin--current-video">
 <ANCHOR id="GstPlayBin--flags" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#GstPlayBin--flags">
+<ANCHOR id="GstPlayBin--force-aspect-ratio" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#GstPlayBin--force-aspect-ratio">
 <ANCHOR id="GstPlayBin--mute" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#GstPlayBin--mute">
 <ANCHOR id="GstPlayBin--n-audio" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#GstPlayBin--n-audio">
 <ANCHOR id="GstPlayBin--n-text" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#GstPlayBin--n-text">
@@ -461,15 +404,17 @@
 <ANCHOR id="GstPlayBin--sample" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#GstPlayBin--sample">
 <ANCHOR id="GstPlayBin--source" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#GstPlayBin--source">
 <ANCHOR id="GstPlayBin--subtitle-encoding" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#GstPlayBin--subtitle-encoding">
+<ANCHOR id="GstPlayBin--subtitle-font-desc" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#GstPlayBin--subtitle-font-desc">
 <ANCHOR id="GstPlayBin--suburi" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#GstPlayBin--suburi">
 <ANCHOR id="GstPlayBin--text-sink" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#GstPlayBin--text-sink">
-<ANCHOR id="GstPlayBin--uri" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#GstPlayBin--uri">
-<ANCHOR id="GstPlayBin--current-suburi" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#GstPlayBin--current-suburi">
-<ANCHOR id="GstPlayBin--current-uri" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#GstPlayBin--current-uri">
-<ANCHOR id="GstPlayBin--force-aspect-ratio" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#GstPlayBin--force-aspect-ratio">
-<ANCHOR id="GstPlayBin--audio-stream-combiner" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#GstPlayBin--audio-stream-combiner">
 <ANCHOR id="GstPlayBin--text-stream-combiner" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#GstPlayBin--text-stream-combiner">
+<ANCHOR id="GstPlayBin--uri" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#GstPlayBin--uri">
+<ANCHOR id="GstPlayBin--video-sink" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#GstPlayBin--video-sink">
 <ANCHOR id="GstPlayBin--video-stream-combiner" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#GstPlayBin--video-stream-combiner">
+<ANCHOR id="GstPlayBin--vis-plugin" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#GstPlayBin--vis-plugin">
+<ANCHOR id="GstPlayBin--volume" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#GstPlayBin--volume">
+<ANCHOR id="GstPlayBin--audio-filter" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#GstPlayBin--audio-filter">
+<ANCHOR id="GstPlayBin--video-filter" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#GstPlayBin--video-filter">
 <ANCHOR id="gst-plugins-base-plugins-playbin.signal-details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#gst-plugins-base-plugins-playbin.signal-details">
 <ANCHOR id="GstPlayBin-about-to-finish" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#GstPlayBin-about-to-finish">
 <ANCHOR id="GstPlayBin-audio-changed" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-playbin.html#GstPlayBin-audio-changed">
@@ -512,7 +457,6 @@
 <ANCHOR id="gst-plugins-base-plugins-tcpclientsrc.property-details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-tcpclientsrc.html#gst-plugins-base-plugins-tcpclientsrc.property-details">
 <ANCHOR id="GstTCPClientSrc--host" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-tcpclientsrc.html#GstTCPClientSrc--host">
 <ANCHOR id="GstTCPClientSrc--port" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-tcpclientsrc.html#GstTCPClientSrc--port">
-<ANCHOR id="GstTCPClientSrc--protocol" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-tcpclientsrc.html#GstTCPClientSrc--protocol">
 <ANCHOR id="gst-plugins-base-plugins-tcpclientsrc.see-also" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-tcpclientsrc.html#gst-plugins-base-plugins-tcpclientsrc.see-also">
 <ANCHOR id="gst-plugins-base-plugins-tcpclientsink" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-tcpclientsink.html">
 <ANCHOR id="gst-plugins-base-plugins-tcpclientsink.properties" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-tcpclientsink.html#gst-plugins-base-plugins-tcpclientsink.properties">
@@ -526,7 +470,6 @@
 <ANCHOR id="gst-plugins-base-plugins-tcpclientsink.property-details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-tcpclientsink.html#gst-plugins-base-plugins-tcpclientsink.property-details">
 <ANCHOR id="GstTCPClientSink--host" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-tcpclientsink.html#GstTCPClientSink--host">
 <ANCHOR id="GstTCPClientSink--port" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-tcpclientsink.html#GstTCPClientSink--port">
-<ANCHOR id="GstTCPClientSink--protocol" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-tcpclientsink.html#GstTCPClientSink--protocol">
 <ANCHOR id="gst-plugins-base-plugins-tcpclientsink.see-also" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-tcpclientsink.html#gst-plugins-base-plugins-tcpclientsink.see-also">
 <ANCHOR id="gst-plugins-base-plugins-tcpserversrc" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-tcpserversrc.html">
 <ANCHOR id="gst-plugins-base-plugins-tcpserversrc.properties" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-tcpserversrc.html#gst-plugins-base-plugins-tcpserversrc.properties">
@@ -538,10 +481,9 @@
 <ANCHOR id="gst-plugins-base-plugins-tcpserversrc.other_details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-tcpserversrc.html#gst-plugins-base-plugins-tcpserversrc.other_details">
 <ANCHOR id="GstTCPServerSrc-struct" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-tcpserversrc.html#GstTCPServerSrc-struct">
 <ANCHOR id="gst-plugins-base-plugins-tcpserversrc.property-details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-tcpserversrc.html#gst-plugins-base-plugins-tcpserversrc.property-details">
+<ANCHOR id="GstTCPServerSrc--current-port" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-tcpserversrc.html#GstTCPServerSrc--current-port">
 <ANCHOR id="GstTCPServerSrc--host" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-tcpserversrc.html#GstTCPServerSrc--host">
 <ANCHOR id="GstTCPServerSrc--port" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-tcpserversrc.html#GstTCPServerSrc--port">
-<ANCHOR id="GstTCPServerSrc--protocol" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-tcpserversrc.html#GstTCPServerSrc--protocol">
-<ANCHOR id="GstTCPServerSrc--current-port" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-tcpserversrc.html#GstTCPServerSrc--current-port">
 <ANCHOR id="gst-plugins-base-plugins-tcpserversrc.see-also" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-tcpserversrc.html#gst-plugins-base-plugins-tcpserversrc.see-also">
 <ANCHOR id="gst-plugins-base-plugins-tcpserversink" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-tcpserversink.html">
 <ANCHOR id="gst-plugins-base-plugins-tcpserversink.properties" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-tcpserversink.html#gst-plugins-base-plugins-tcpserversink.properties">
@@ -553,12 +495,11 @@
 <ANCHOR id="gst-plugins-base-plugins-tcpserversink.other_details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-tcpserversink.html#gst-plugins-base-plugins-tcpserversink.other_details">
 <ANCHOR id="GstTCPServerSink-struct" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-tcpserversink.html#GstTCPServerSink-struct">
 <ANCHOR id="gst-plugins-base-plugins-tcpserversink.property-details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-tcpserversink.html#gst-plugins-base-plugins-tcpserversink.property-details">
+<ANCHOR id="GstTCPServerSink--current-port" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-tcpserversink.html#GstTCPServerSink--current-port">
 <ANCHOR id="GstTCPServerSink--host" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-tcpserversink.html#GstTCPServerSink--host">
 <ANCHOR id="GstTCPServerSink--port" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-tcpserversink.html#GstTCPServerSink--port">
-<ANCHOR id="GstTCPServerSink--current-port" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-tcpserversink.html#GstTCPServerSink--current-port">
 <ANCHOR id="gst-plugins-base-plugins-tcpserversink.see-also" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-tcpserversink.html#gst-plugins-base-plugins-tcpserversink.see-also">
 <ANCHOR id="gst-plugins-base-plugins-textoverlay" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-textoverlay.html">
-<ANCHOR id="gst-plugins-base-plugins-textoverlay.properties" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-textoverlay.html#gst-plugins-base-plugins-textoverlay.properties">
 <ANCHOR id="GstTextOverlay" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-textoverlay.html#GstTextOverlay">
 <ANCHOR id="gst-plugins-base-plugins-textoverlay.other" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-textoverlay.html#gst-plugins-base-plugins-textoverlay.other">
 <ANCHOR id="gst-plugins-base-plugins-textoverlay.object-hierarchy" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-textoverlay.html#gst-plugins-base-plugins-textoverlay.object-hierarchy">
@@ -566,27 +507,6 @@
 <ANCHOR id="gst-plugins-base-plugins-textoverlay.functions_details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-textoverlay.html#gst-plugins-base-plugins-textoverlay.functions_details">
 <ANCHOR id="gst-plugins-base-plugins-textoverlay.other_details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-textoverlay.html#gst-plugins-base-plugins-textoverlay.other_details">
 <ANCHOR id="GstTextOverlay-struct" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-textoverlay.html#GstTextOverlay-struct">
-<ANCHOR id="gst-plugins-base-plugins-textoverlay.property-details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-textoverlay.html#gst-plugins-base-plugins-textoverlay.property-details">
-<ANCHOR id="GstTextOverlay--deltax" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--deltax">
-<ANCHOR id="GstTextOverlay--deltay" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--deltay">
-<ANCHOR id="GstTextOverlay--font-desc" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--font-desc">
-<ANCHOR id="GstTextOverlay--halign" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--halign">
-<ANCHOR id="GstTextOverlay--shaded-background" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--shaded-background">
-<ANCHOR id="GstTextOverlay--text" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--text">
-<ANCHOR id="GstTextOverlay--valign" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--valign">
-<ANCHOR id="GstTextOverlay--wrap-mode" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--wrap-mode">
-<ANCHOR id="GstTextOverlay--xpad" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--xpad">
-<ANCHOR id="GstTextOverlay--ypad" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--ypad">
-<ANCHOR id="GstTextOverlay--halignment" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--halignment">
-<ANCHOR id="GstTextOverlay--valignment" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--valignment">
-<ANCHOR id="GstTextOverlay--line-alignment" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--line-alignment">
-<ANCHOR id="GstTextOverlay--silent" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--silent">
-<ANCHOR id="GstTextOverlay--wait-text" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--wait-text">
-<ANCHOR id="GstTextOverlay--auto-resize" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--auto-resize">
-<ANCHOR id="GstTextOverlay--vertical-render" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--vertical-render">
-<ANCHOR id="GstTextOverlay--color" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--color">
-<ANCHOR id="GstTextOverlay--xpos" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--xpos">
-<ANCHOR id="GstTextOverlay--ypos" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-textoverlay.html#GstTextOverlay--ypos">
 <ANCHOR id="gst-plugins-base-plugins-textrender" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-textrender.html">
 <ANCHOR id="gst-plugins-base-plugins-textrender.properties" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-textrender.html#gst-plugins-base-plugins-textrender.properties">
 <ANCHOR id="GstTextRender" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-textrender.html#GstTextRender">
@@ -604,7 +524,6 @@
 <ANCHOR id="GstTextRender--xpad" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-textrender.html#GstTextRender--xpad">
 <ANCHOR id="GstTextRender--ypad" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-textrender.html#GstTextRender--ypad">
 <ANCHOR id="gst-plugins-base-plugins-theoradec" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoradec.html">
-<ANCHOR id="gst-plugins-base-plugins-theoradec.properties" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoradec.html#gst-plugins-base-plugins-theoradec.properties">
 <ANCHOR id="GstTheoraDec" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoradec.html#GstTheoraDec">
 <ANCHOR id="gst-plugins-base-plugins-theoradec.other" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoradec.html#gst-plugins-base-plugins-theoradec.other">
 <ANCHOR id="gst-plugins-base-plugins-theoradec.object-hierarchy" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoradec.html#gst-plugins-base-plugins-theoradec.object-hierarchy">
@@ -612,8 +531,6 @@
 <ANCHOR id="gst-plugins-base-plugins-theoradec.functions_details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoradec.html#gst-plugins-base-plugins-theoradec.functions_details">
 <ANCHOR id="gst-plugins-base-plugins-theoradec.other_details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoradec.html#gst-plugins-base-plugins-theoradec.other_details">
 <ANCHOR id="GstTheoraDec-struct" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoradec.html#GstTheoraDec-struct">
-<ANCHOR id="gst-plugins-base-plugins-theoradec.property-details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoradec.html#gst-plugins-base-plugins-theoradec.property-details">
-<ANCHOR id="GstTheoraDec--crop" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoradec.html#GstTheoraDec--crop">
 <ANCHOR id="gst-plugins-base-plugins-theoraenc" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoraenc.html">
 <ANCHOR id="gst-plugins-base-plugins-theoraenc.properties" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoraenc.html#gst-plugins-base-plugins-theoraenc.properties">
 <ANCHOR id="GstTheoraEnc" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc">
@@ -626,28 +543,19 @@
 <ANCHOR id="GstTheoraEnc-struct" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc-struct">
 <ANCHOR id="gst-plugins-base-plugins-theoraenc.property-details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoraenc.html#gst-plugins-base-plugins-theoraenc.property-details">
 <ANCHOR id="GstTheoraEnc--bitrate" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--bitrate">
-<ANCHOR id="GstTheoraEnc--border" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--border">
-<ANCHOR id="GstTheoraEnc--center" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--center">
-<ANCHOR id="GstTheoraEnc--keyframe-auto" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--keyframe-auto">
-<ANCHOR id="GstTheoraEnc--keyframe-force" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--keyframe-force">
-<ANCHOR id="GstTheoraEnc--keyframe-freq" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--keyframe-freq">
-<ANCHOR id="GstTheoraEnc--keyframe-mindistance" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--keyframe-mindistance">
-<ANCHOR id="GstTheoraEnc--keyframe-threshold" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--keyframe-threshold">
-<ANCHOR id="GstTheoraEnc--noise-sensitivity" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--noise-sensitivity">
-<ANCHOR id="GstTheoraEnc--quality" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--quality">
-<ANCHOR id="GstTheoraEnc--quick" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--quick">
-<ANCHOR id="GstTheoraEnc--sharpness" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--sharpness">
-<ANCHOR id="GstTheoraEnc--speed-level" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--speed-level">
 <ANCHOR id="GstTheoraEnc--cap-overflow" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--cap-overflow">
 <ANCHOR id="GstTheoraEnc--cap-underflow" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--cap-underflow">
 <ANCHOR id="GstTheoraEnc--drop-frames" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--drop-frames">
-<ANCHOR id="GstTheoraEnc--rate-buffer" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--rate-buffer">
-<ANCHOR id="GstTheoraEnc--vp3-compatible" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--vp3-compatible">
+<ANCHOR id="GstTheoraEnc--keyframe-auto" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--keyframe-auto">
+<ANCHOR id="GstTheoraEnc--keyframe-force" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--keyframe-force">
+<ANCHOR id="GstTheoraEnc--keyframe-freq" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--keyframe-freq">
 <ANCHOR id="GstTheoraEnc--multipass-cache-file" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--multipass-cache-file">
 <ANCHOR id="GstTheoraEnc--multipass-mode" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--multipass-mode">
-<ANCHOR id="GstTheoraEnc--dup-on-gap" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--dup-on-gap">
+<ANCHOR id="GstTheoraEnc--quality" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--quality">
+<ANCHOR id="GstTheoraEnc--rate-buffer" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--rate-buffer">
+<ANCHOR id="GstTheoraEnc--speed-level" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--speed-level">
+<ANCHOR id="GstTheoraEnc--vp3-compatible" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoraenc.html#GstTheoraEnc--vp3-compatible">
 <ANCHOR id="gst-plugins-base-plugins-theoraparse" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoraparse.html">
-<ANCHOR id="gst-plugins-base-plugins-theoraparse.properties" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoraparse.html#gst-plugins-base-plugins-theoraparse.properties">
 <ANCHOR id="GstTheoraParse" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoraparse.html#GstTheoraParse">
 <ANCHOR id="gst-plugins-base-plugins-theoraparse.other" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoraparse.html#gst-plugins-base-plugins-theoraparse.other">
 <ANCHOR id="gst-plugins-base-plugins-theoraparse.object-hierarchy" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoraparse.html#gst-plugins-base-plugins-theoraparse.object-hierarchy">
@@ -655,8 +563,6 @@
 <ANCHOR id="gst-plugins-base-plugins-theoraparse.functions_details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoraparse.html#gst-plugins-base-plugins-theoraparse.functions_details">
 <ANCHOR id="gst-plugins-base-plugins-theoraparse.other_details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoraparse.html#gst-plugins-base-plugins-theoraparse.other_details">
 <ANCHOR id="GstTheoraParse-struct" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoraparse.html#GstTheoraParse-struct">
-<ANCHOR id="gst-plugins-base-plugins-theoraparse.property-details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoraparse.html#gst-plugins-base-plugins-theoraparse.property-details">
-<ANCHOR id="GstTheoraParse--synchronization-points" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-theoraparse.html#GstTheoraParse--synchronization-points">
 <ANCHOR id="gst-plugins-base-plugins-timeoverlay" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-timeoverlay.html">
 <ANCHOR id="GstTimeOverlay" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-timeoverlay.html#GstTimeOverlay">
 <ANCHOR id="gst-plugins-base-plugins-timeoverlay.other" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-timeoverlay.html#gst-plugins-base-plugins-timeoverlay.other">
@@ -678,26 +584,26 @@
 <ANCHOR id="GstURIDecodeBin-struct" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin-struct">
 <ANCHOR id="GstAutoplugSelectResult" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-uridecodebin.html#GstAutoplugSelectResult">
 <ANCHOR id="gst-plugins-base-plugins-uridecodebin.property-details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-uridecodebin.html#gst-plugins-base-plugins-uridecodebin.property-details">
-<ANCHOR id="GstURIDecodeBin--uri" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--uri">
-<ANCHOR id="GstURIDecodeBin--connection-speed" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--connection-speed">
-<ANCHOR id="GstURIDecodeBin--caps" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--caps">
-<ANCHOR id="GstURIDecodeBin--subtitle-encoding" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--subtitle-encoding">
-<ANCHOR id="GstURIDecodeBin--source" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--source">
 <ANCHOR id="GstURIDecodeBin--buffer-duration" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--buffer-duration">
 <ANCHOR id="GstURIDecodeBin--buffer-size" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--buffer-size">
+<ANCHOR id="GstURIDecodeBin--caps" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--caps">
+<ANCHOR id="GstURIDecodeBin--connection-speed" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--connection-speed">
 <ANCHOR id="GstURIDecodeBin--download" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--download">
-<ANCHOR id="GstURIDecodeBin--use-buffering" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--use-buffering">
 <ANCHOR id="GstURIDecodeBin--expose-all-streams" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--expose-all-streams">
 <ANCHOR id="GstURIDecodeBin--ring-buffer-max-size" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--ring-buffer-max-size">
+<ANCHOR id="GstURIDecodeBin--source" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--source">
+<ANCHOR id="GstURIDecodeBin--subtitle-encoding" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--subtitle-encoding">
+<ANCHOR id="GstURIDecodeBin--uri" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--uri">
+<ANCHOR id="GstURIDecodeBin--use-buffering" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin--use-buffering">
 <ANCHOR id="gst-plugins-base-plugins-uridecodebin.signal-details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-uridecodebin.html#gst-plugins-base-plugins-uridecodebin.signal-details">
 <ANCHOR id="GstURIDecodeBin-autoplug-continue" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin-autoplug-continue">
 <ANCHOR id="GstURIDecodeBin-autoplug-factories" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin-autoplug-factories">
-<ANCHOR id="GstURIDecodeBin-autoplug-select" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin-autoplug-select">
-<ANCHOR id="GstURIDecodeBin-unknown-type" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin-unknown-type">
-<ANCHOR id="GstURIDecodeBin-drained" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin-drained">
-<ANCHOR id="GstURIDecodeBin-autoplug-sort" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin-autoplug-sort">
-<ANCHOR id="GstURIDecodeBin-source-setup" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin-source-setup">
 <ANCHOR id="GstURIDecodeBin-autoplug-query" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin-autoplug-query">
+<ANCHOR id="GstURIDecodeBin-autoplug-select" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin-autoplug-select">
+<ANCHOR id="GstURIDecodeBin-autoplug-sort" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin-autoplug-sort">
+<ANCHOR id="GstURIDecodeBin-drained" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin-drained">
+<ANCHOR id="GstURIDecodeBin-source-setup" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin-source-setup">
+<ANCHOR id="GstURIDecodeBin-unknown-type" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-uridecodebin.html#GstURIDecodeBin-unknown-type">
 <ANCHOR id="gst-plugins-base-plugins-videorate" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videorate.html">
 <ANCHOR id="gst-plugins-base-plugins-videorate.properties" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videorate.html#gst-plugins-base-plugins-videorate.properties">
 <ANCHOR id="GstVideoRate" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videorate.html#GstVideoRate">
@@ -708,16 +614,16 @@
 <ANCHOR id="gst-plugins-base-plugins-videorate.other_details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videorate.html#gst-plugins-base-plugins-videorate.other_details">
 <ANCHOR id="GstVideoRate-struct" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videorate.html#GstVideoRate-struct">
 <ANCHOR id="gst-plugins-base-plugins-videorate.property-details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videorate.html#gst-plugins-base-plugins-videorate.property-details">
+<ANCHOR id="GstVideoRate--average-period" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videorate.html#GstVideoRate--average-period">
 <ANCHOR id="GstVideoRate--drop" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videorate.html#GstVideoRate--drop">
+<ANCHOR id="GstVideoRate--drop-only" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videorate.html#GstVideoRate--drop-only">
 <ANCHOR id="GstVideoRate--duplicate" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videorate.html#GstVideoRate--duplicate">
 <ANCHOR id="GstVideoRate--in" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videorate.html#GstVideoRate--in">
+<ANCHOR id="GstVideoRate--max-rate" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videorate.html#GstVideoRate--max-rate">
 <ANCHOR id="GstVideoRate--new-pref" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videorate.html#GstVideoRate--new-pref">
 <ANCHOR id="GstVideoRate--out" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videorate.html#GstVideoRate--out">
 <ANCHOR id="GstVideoRate--silent" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videorate.html#GstVideoRate--silent">
 <ANCHOR id="GstVideoRate--skip-to-first" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videorate.html#GstVideoRate--skip-to-first">
-<ANCHOR id="GstVideoRate--average-period" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videorate.html#GstVideoRate--average-period">
-<ANCHOR id="GstVideoRate--drop-only" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videorate.html#GstVideoRate--drop-only">
-<ANCHOR id="GstVideoRate--max-rate" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videorate.html#GstVideoRate--max-rate">
 <ANCHOR id="gst-plugins-base-plugins-videoscale" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videoscale.html">
 <ANCHOR id="gst-plugins-base-plugins-videoscale.properties" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videoscale.html#gst-plugins-base-plugins-videoscale.properties">
 <ANCHOR id="GstVideoScale" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videoscale.html#GstVideoScale">
@@ -729,10 +635,10 @@
 <ANCHOR id="GstVideoScale-struct" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videoscale.html#GstVideoScale-struct">
 <ANCHOR id="GstVideoScaleMethod" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videoscale.html#GstVideoScaleMethod">
 <ANCHOR id="gst-plugins-base-plugins-videoscale.property-details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videoscale.html#gst-plugins-base-plugins-videoscale.property-details">
-<ANCHOR id="GstVideoScale--method" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videoscale.html#GstVideoScale--method">
 <ANCHOR id="GstVideoScale--add-borders" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videoscale.html#GstVideoScale--add-borders">
 <ANCHOR id="GstVideoScale--dither" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videoscale.html#GstVideoScale--dither">
 <ANCHOR id="GstVideoScale--envelope" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videoscale.html#GstVideoScale--envelope">
+<ANCHOR id="GstVideoScale--method" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videoscale.html#GstVideoScale--method">
 <ANCHOR id="GstVideoScale--sharpen" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videoscale.html#GstVideoScale--sharpen">
 <ANCHOR id="GstVideoScale--sharpness" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videoscale.html#GstVideoScale--sharpness">
 <ANCHOR id="gst-plugins-base-plugins-videoscale.see-also" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videoscale.html#gst-plugins-base-plugins-videoscale.see-also">
@@ -747,11 +653,10 @@
 <ANCHOR id="GstVideoTestSrc-struct" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc-struct">
 <ANCHOR id="GstVideoTestSrcPattern" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrcPattern">
 <ANCHOR id="gst-plugins-base-plugins-videotestsrc.property-details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videotestsrc.html#gst-plugins-base-plugins-videotestsrc.property-details">
-<ANCHOR id="GstVideoTestSrc--pattern" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--pattern">
-<ANCHOR id="GstVideoTestSrc--timestamp-offset" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--timestamp-offset">
+<ANCHOR id="GstVideoTestSrc--background-color" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--background-color">
+<ANCHOR id="GstVideoTestSrc--foreground-color" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--foreground-color">
+<ANCHOR id="GstVideoTestSrc--horizontal-speed" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--horizontal-speed">
 <ANCHOR id="GstVideoTestSrc--is-live" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--is-live">
-<ANCHOR id="GstVideoTestSrc--peer-alloc" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--peer-alloc">
-<ANCHOR id="GstVideoTestSrc--colorspec" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--colorspec">
 <ANCHOR id="GstVideoTestSrc--k0" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--k0">
 <ANCHOR id="GstVideoTestSrc--kt" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--kt">
 <ANCHOR id="GstVideoTestSrc--kt2" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--kt2">
@@ -762,11 +667,10 @@
 <ANCHOR id="GstVideoTestSrc--ky" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--ky">
 <ANCHOR id="GstVideoTestSrc--ky2" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--ky2">
 <ANCHOR id="GstVideoTestSrc--kyt" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--kyt">
+<ANCHOR id="GstVideoTestSrc--pattern" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--pattern">
+<ANCHOR id="GstVideoTestSrc--timestamp-offset" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--timestamp-offset">
 <ANCHOR id="GstVideoTestSrc--xoffset" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--xoffset">
 <ANCHOR id="GstVideoTestSrc--yoffset" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--yoffset">
-<ANCHOR id="GstVideoTestSrc--background-color" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--background-color">
-<ANCHOR id="GstVideoTestSrc--foreground-color" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--foreground-color">
-<ANCHOR id="GstVideoTestSrc--horizontal-speed" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrc--horizontal-speed">
 <ANCHOR id="gst-plugins-base-plugins-volume" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-volume.html">
 <ANCHOR id="gst-plugins-base-plugins-volume.properties" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-volume.html#gst-plugins-base-plugins-volume.properties">
 <ANCHOR id="GstVolume" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-volume.html#GstVolume">
@@ -834,11 +738,11 @@
 <ANCHOR id="GstXImageSink-struct" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-ximagesink.html#GstXImageSink-struct">
 <ANCHOR id="gst-plugins-base-plugins-ximagesink.property-details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-ximagesink.html#gst-plugins-base-plugins-ximagesink.property-details">
 <ANCHOR id="GstXImageSink--display" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-ximagesink.html#GstXImageSink--display">
-<ANCHOR id="GstXImageSink--pixel-aspect-ratio" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-ximagesink.html#GstXImageSink--pixel-aspect-ratio">
-<ANCHOR id="GstXImageSink--synchronous" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-ximagesink.html#GstXImageSink--synchronous">
 <ANCHOR id="GstXImageSink--force-aspect-ratio" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-ximagesink.html#GstXImageSink--force-aspect-ratio">
 <ANCHOR id="GstXImageSink--handle-events" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-ximagesink.html#GstXImageSink--handle-events">
 <ANCHOR id="GstXImageSink--handle-expose" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-ximagesink.html#GstXImageSink--handle-expose">
+<ANCHOR id="GstXImageSink--pixel-aspect-ratio" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-ximagesink.html#GstXImageSink--pixel-aspect-ratio">
+<ANCHOR id="GstXImageSink--synchronous" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-ximagesink.html#GstXImageSink--synchronous">
 <ANCHOR id="GstXImageSink--window-height" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-ximagesink.html#GstXImageSink--window-height">
 <ANCHOR id="GstXImageSink--window-width" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-ximagesink.html#GstXImageSink--window-width">
 <ANCHOR id="gst-plugins-base-plugins-xvimagesink" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-xvimagesink.html">
@@ -852,22 +756,22 @@
 <ANCHOR id="gst-plugins-base-plugins-xvimagesink.other_details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-xvimagesink.html#gst-plugins-base-plugins-xvimagesink.other_details">
 <ANCHOR id="GstXvImageSink-struct" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink-struct">
 <ANCHOR id="gst-plugins-base-plugins-xvimagesink.property-details" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-xvimagesink.html#gst-plugins-base-plugins-xvimagesink.property-details">
+<ANCHOR id="GstXvImageSink--autopaint-colorkey" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--autopaint-colorkey">
 <ANCHOR id="GstXvImageSink--brightness" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--brightness">
+<ANCHOR id="GstXvImageSink--colorkey" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--colorkey">
 <ANCHOR id="GstXvImageSink--contrast" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--contrast">
+<ANCHOR id="GstXvImageSink--device" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--device">
+<ANCHOR id="GstXvImageSink--device-name" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--device-name">
 <ANCHOR id="GstXvImageSink--display" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--display">
+<ANCHOR id="GstXvImageSink--double-buffer" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--double-buffer">
+<ANCHOR id="GstXvImageSink--draw-borders" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--draw-borders">
+<ANCHOR id="GstXvImageSink--force-aspect-ratio" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--force-aspect-ratio">
+<ANCHOR id="GstXvImageSink--handle-events" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--handle-events">
+<ANCHOR id="GstXvImageSink--handle-expose" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--handle-expose">
 <ANCHOR id="GstXvImageSink--hue" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--hue">
 <ANCHOR id="GstXvImageSink--pixel-aspect-ratio" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--pixel-aspect-ratio">
 <ANCHOR id="GstXvImageSink--saturation" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--saturation">
 <ANCHOR id="GstXvImageSink--synchronous" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--synchronous">
-<ANCHOR id="GstXvImageSink--force-aspect-ratio" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--force-aspect-ratio">
-<ANCHOR id="GstXvImageSink--device" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--device">
-<ANCHOR id="GstXvImageSink--device-name" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--device-name">
-<ANCHOR id="GstXvImageSink--handle-events" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--handle-events">
-<ANCHOR id="GstXvImageSink--double-buffer" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--double-buffer">
-<ANCHOR id="GstXvImageSink--handle-expose" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--handle-expose">
-<ANCHOR id="GstXvImageSink--autopaint-colorkey" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--autopaint-colorkey">
-<ANCHOR id="GstXvImageSink--colorkey" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--colorkey">
-<ANCHOR id="GstXvImageSink--draw-borders" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--draw-borders">
 <ANCHOR id="GstXvImageSink--window-height" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--window-height">
 <ANCHOR id="GstXvImageSink--window-width" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-xvimagesink.html#GstXvImageSink--window-width">
 <ANCHOR id="gst-plugins-base-plugins-plugin-adder" href="gst-plugins-base-plugins-1.0/gst-plugins-base-plugins-plugin-adder.html">
diff --git a/docs/plugins/inspect/plugin-adder.xml b/docs/plugins/inspect/plugin-adder.xml
index 7e8096d..9592d1c 100644
--- a/docs/plugins/inspect/plugin-adder.xml
+++ b/docs/plugins/inspect/plugin-adder.xml
@@ -3,7 +3,7 @@
   <description>Adds multiple streams</description>
   <filename>../../gst/adder/.libs/libgstadder.so</filename>
   <basename>libgstadder.so</basename>
-  <version>1.2.4</version>
+  <version>1.3.1</version>
   <license>LGPL</license>
   <source>gst-plugins-base</source>
   <package>GStreamer Base Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-alsa.xml b/docs/plugins/inspect/plugin-alsa.xml
index 5448826..4306b21 100644
--- a/docs/plugins/inspect/plugin-alsa.xml
+++ b/docs/plugins/inspect/plugin-alsa.xml
@@ -3,7 +3,7 @@
   <description>ALSA plugin library</description>
   <filename>../../ext/alsa/.libs/libgstalsa.so</filename>
   <basename>libgstalsa.so</basename>
-  <version>1.2.4</version>
+  <version>1.3.1</version>
   <license>LGPL</license>
   <source>gst-plugins-base</source>
   <package>GStreamer Base Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-app.xml b/docs/plugins/inspect/plugin-app.xml
index db881e6..7303dad 100644
--- a/docs/plugins/inspect/plugin-app.xml
+++ b/docs/plugins/inspect/plugin-app.xml
@@ -3,7 +3,7 @@
   <description>Elements used to communicate with applications</description>
   <filename>../../gst/app/.libs/libgstapp.so</filename>
   <basename>libgstapp.so</basename>
-  <version>1.2.4</version>
+  <version>1.3.1</version>
   <license>LGPL</license>
   <source>gst-plugins-base</source>
   <package>GStreamer Base Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-audioconvert.xml b/docs/plugins/inspect/plugin-audioconvert.xml
index ecba1ec..65db168 100644
--- a/docs/plugins/inspect/plugin-audioconvert.xml
+++ b/docs/plugins/inspect/plugin-audioconvert.xml
@@ -3,7 +3,7 @@
   <description>Convert audio to different formats</description>
   <filename>../../gst/audioconvert/.libs/libgstaudioconvert.so</filename>
   <basename>libgstaudioconvert.so</basename>
-  <version>1.2.4</version>
+  <version>1.3.1</version>
   <license>LGPL</license>
   <source>gst-plugins-base</source>
   <package>GStreamer Base Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-audiorate.xml b/docs/plugins/inspect/plugin-audiorate.xml
index cb6b19d..6657714 100644
--- a/docs/plugins/inspect/plugin-audiorate.xml
+++ b/docs/plugins/inspect/plugin-audiorate.xml
@@ -3,7 +3,7 @@
   <description>Adjusts audio frames</description>
   <filename>../../gst/audiorate/.libs/libgstaudiorate.so</filename>
   <basename>libgstaudiorate.so</basename>
-  <version>1.2.4</version>
+  <version>1.3.1</version>
   <license>LGPL</license>
   <source>gst-plugins-base</source>
   <package>GStreamer Base Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-audioresample.xml b/docs/plugins/inspect/plugin-audioresample.xml
index 93aee17..96c3df3 100644
--- a/docs/plugins/inspect/plugin-audioresample.xml
+++ b/docs/plugins/inspect/plugin-audioresample.xml
@@ -3,7 +3,7 @@
   <description>Resamples audio</description>
   <filename>../../gst/audioresample/.libs/libgstaudioresample.so</filename>
   <basename>libgstaudioresample.so</basename>
-  <version>1.2.4</version>
+  <version>1.3.1</version>
   <license>LGPL</license>
   <source>gst-plugins-base</source>
   <package>GStreamer Base Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-audiotestsrc.xml b/docs/plugins/inspect/plugin-audiotestsrc.xml
index 15c3828..a4e08b7 100644
--- a/docs/plugins/inspect/plugin-audiotestsrc.xml
+++ b/docs/plugins/inspect/plugin-audiotestsrc.xml
@@ -3,7 +3,7 @@
   <description>Creates audio test signals of given frequency and volume</description>
   <filename>../../gst/audiotestsrc/.libs/libgstaudiotestsrc.so</filename>
   <basename>libgstaudiotestsrc.so</basename>
-  <version>1.2.4</version>
+  <version>1.3.1</version>
   <license>LGPL</license>
   <source>gst-plugins-base</source>
   <package>GStreamer Base Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-cdparanoia.xml b/docs/plugins/inspect/plugin-cdparanoia.xml
index db1839d..e2f6da9 100644
--- a/docs/plugins/inspect/plugin-cdparanoia.xml
+++ b/docs/plugins/inspect/plugin-cdparanoia.xml
@@ -3,7 +3,7 @@
   <description>Read audio from CD in paranoid mode</description>
   <filename>../../ext/cdparanoia/.libs/libgstcdparanoia.so</filename>
   <basename>libgstcdparanoia.so</basename>
-  <version>1.2.4</version>
+  <version>1.3.1</version>
   <license>LGPL</license>
   <source>gst-plugins-base</source>
   <package>GStreamer Base Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-encoding.xml b/docs/plugins/inspect/plugin-encoding.xml
index f94c528..f74c7e3 100644
--- a/docs/plugins/inspect/plugin-encoding.xml
+++ b/docs/plugins/inspect/plugin-encoding.xml
@@ -3,7 +3,7 @@
   <description>various encoding-related elements</description>
   <filename>../../gst/encoding/.libs/libgstencodebin.so</filename>
   <basename>libgstencodebin.so</basename>
-  <version>1.2.4</version>
+  <version>1.3.1</version>
   <license>LGPL</license>
   <source>gst-plugins-base</source>
   <package>GStreamer Base Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-gio.xml b/docs/plugins/inspect/plugin-gio.xml
index 4555567..9b3f794 100644
--- a/docs/plugins/inspect/plugin-gio.xml
+++ b/docs/plugins/inspect/plugin-gio.xml
@@ -3,7 +3,7 @@
   <description>GIO elements</description>
   <filename>../../gst/gio/.libs/libgstgio.so</filename>
   <basename>libgstgio.so</basename>
-  <version>1.2.4</version>
+  <version>1.3.1</version>
   <license>LGPL</license>
   <source>gst-plugins-base</source>
   <package>GStreamer Base Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-ivorbisdec.xml b/docs/plugins/inspect/plugin-ivorbisdec.xml
index bd17dbf..bb337d2 100644
--- a/docs/plugins/inspect/plugin-ivorbisdec.xml
+++ b/docs/plugins/inspect/plugin-ivorbisdec.xml
@@ -3,7 +3,7 @@
   <description>Vorbis Tremor decoder</description>
   <filename>../../ext/vorbis/.libs/libgstivorbisdec.so</filename>
   <basename>libgstivorbisdec.so</basename>
-  <version>1.2.4</version>
+  <version>1.3.1</version>
   <license>LGPL</license>
   <source>gst-plugins-base</source>
   <package>GStreamer Base Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-libvisual.xml b/docs/plugins/inspect/plugin-libvisual.xml
index da49f63..1db9fa7 100644
--- a/docs/plugins/inspect/plugin-libvisual.xml
+++ b/docs/plugins/inspect/plugin-libvisual.xml
@@ -3,7 +3,7 @@
   <description>libvisual visualization plugins</description>
   <filename>../../ext/libvisual/.libs/libgstlibvisual.so</filename>
   <basename>libgstlibvisual.so</basename>
-  <version>1.2.4</version>
+  <version>1.3.1</version>
   <license>LGPL</license>
   <source>gst-plugins-base</source>
   <package>GStreamer Base Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-ogg.xml b/docs/plugins/inspect/plugin-ogg.xml
index d3fd0a9..69acc24 100644
--- a/docs/plugins/inspect/plugin-ogg.xml
+++ b/docs/plugins/inspect/plugin-ogg.xml
@@ -3,7 +3,7 @@
   <description>ogg stream manipulation (info about ogg: http://xiph.org)</description>
   <filename>../../ext/ogg/.libs/libgstogg.so</filename>
   <basename>libgstogg.so</basename>
-  <version>1.2.4</version>
+  <version>1.3.1</version>
   <license>LGPL</license>
   <source>gst-plugins-base</source>
   <package>GStreamer Base Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-pango.xml b/docs/plugins/inspect/plugin-pango.xml
index 45f7fd5..648b77e 100644
--- a/docs/plugins/inspect/plugin-pango.xml
+++ b/docs/plugins/inspect/plugin-pango.xml
@@ -3,7 +3,7 @@
   <description>Pango-based text rendering and overlay</description>
   <filename>../../ext/pango/.libs/libgstpango.so</filename>
   <basename>libgstpango.so</basename>
-  <version>1.2.4</version>
+  <version>1.3.1</version>
   <license>LGPL</license>
   <source>gst-plugins-base</source>
   <package>GStreamer Base Plug-ins source release</package>
@@ -20,13 +20,13 @@
           <name>video_sink</name>
           <direction>sink</direction>
           <presence>always</presence>
-          <details>video/x-raw, format=(string){ BGRx, RGBx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, I420, YV12, AYUV, YUY2, UYVY, v308, Y41B, Y42B, Y444, NV12, NV21, A420, YUV9, YVU9, IYU1, GRAY8 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+          <details>video/x-raw, format=(string){ BGRx, RGBx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, I420, YV12, AYUV, YUY2, UYVY, v308, Y41B, Y42B, Y444, NV12, NV21, A420, YUV9, YVU9, IYU1, GRAY8 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
         </caps>
         <caps>
           <name>src</name>
           <direction>source</direction>
           <presence>always</presence>
-          <details>video/x-raw, format=(string){ BGRx, RGBx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, I420, YV12, AYUV, YUY2, UYVY, v308, Y41B, Y42B, Y444, NV12, NV21, A420, YUV9, YVU9, IYU1, GRAY8 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+          <details>video/x-raw, format=(string){ BGRx, RGBx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, I420, YV12, AYUV, YUY2, UYVY, v308, Y41B, Y42B, Y444, NV12, NV21, A420, YUV9, YVU9, IYU1, GRAY8 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
         </caps>
       </pads>
     </element>
@@ -47,13 +47,13 @@
           <name>video_sink</name>
           <direction>sink</direction>
           <presence>always</presence>
-          <details>video/x-raw, format=(string){ BGRx, RGBx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, I420, YV12, AYUV, YUY2, UYVY, v308, Y41B, Y42B, Y444, NV12, NV21, A420, YUV9, YVU9, IYU1, GRAY8 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+          <details>video/x-raw, format=(string){ BGRx, RGBx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, I420, YV12, AYUV, YUY2, UYVY, v308, Y41B, Y42B, Y444, NV12, NV21, A420, YUV9, YVU9, IYU1, GRAY8 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
         </caps>
         <caps>
           <name>src</name>
           <direction>source</direction>
           <presence>always</presence>
-          <details>video/x-raw, format=(string){ BGRx, RGBx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, I420, YV12, AYUV, YUY2, UYVY, v308, Y41B, Y42B, Y444, NV12, NV21, A420, YUV9, YVU9, IYU1, GRAY8 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+          <details>video/x-raw, format=(string){ BGRx, RGBx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, I420, YV12, AYUV, YUY2, UYVY, v308, Y41B, Y42B, Y444, NV12, NV21, A420, YUV9, YVU9, IYU1, GRAY8 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
         </caps>
       </pads>
     </element>
@@ -89,13 +89,13 @@
           <name>video_sink</name>
           <direction>sink</direction>
           <presence>always</presence>
-          <details>video/x-raw, format=(string){ BGRx, RGBx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, I420, YV12, AYUV, YUY2, UYVY, v308, Y41B, Y42B, Y444, NV12, NV21, A420, YUV9, YVU9, IYU1, GRAY8 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+          <details>video/x-raw, format=(string){ BGRx, RGBx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, I420, YV12, AYUV, YUY2, UYVY, v308, Y41B, Y42B, Y444, NV12, NV21, A420, YUV9, YVU9, IYU1, GRAY8 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
         </caps>
         <caps>
           <name>src</name>
           <direction>source</direction>
           <presence>always</presence>
-          <details>video/x-raw, format=(string){ BGRx, RGBx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, I420, YV12, AYUV, YUY2, UYVY, v308, Y41B, Y42B, Y444, NV12, NV21, A420, YUV9, YVU9, IYU1, GRAY8 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+          <details>video/x-raw, format=(string){ BGRx, RGBx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, I420, YV12, AYUV, YUY2, UYVY, v308, Y41B, Y42B, Y444, NV12, NV21, A420, YUV9, YVU9, IYU1, GRAY8 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
         </caps>
       </pads>
     </element>
diff --git a/docs/plugins/inspect/plugin-playback.xml b/docs/plugins/inspect/plugin-playback.xml
index c8e2e97..20ca924 100644
--- a/docs/plugins/inspect/plugin-playback.xml
+++ b/docs/plugins/inspect/plugin-playback.xml
@@ -3,7 +3,7 @@
   <description>various playback elements</description>
   <filename>../../gst/playback/.libs/libgstplayback.so</filename>
   <basename>libgstplayback.so</basename>
-  <version>1.2.4</version>
+  <version>1.3.1</version>
   <license>LGPL</license>
   <source>gst-plugins-base</source>
   <package>GStreamer Base Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-subparse.xml b/docs/plugins/inspect/plugin-subparse.xml
index 3b265e9..85dce22 100644
--- a/docs/plugins/inspect/plugin-subparse.xml
+++ b/docs/plugins/inspect/plugin-subparse.xml
@@ -3,7 +3,7 @@
   <description>Subtitle parsing</description>
   <filename>../../gst/subparse/.libs/libgstsubparse.so</filename>
   <basename>libgstsubparse.so</basename>
-  <version>1.2.4</version>
+  <version>1.3.1</version>
   <license>LGPL</license>
   <source>gst-plugins-base</source>
   <package>GStreamer Base Plug-ins source release</package>
@@ -41,7 +41,7 @@
           <name>sink</name>
           <direction>sink</direction>
           <presence>always</presence>
-          <details>application/x-subtitle; application/x-subtitle-sami; application/x-subtitle-tmplayer; application/x-subtitle-mpl2; application/x-subtitle-dks; application/x-subtitle-qttext</details>
+          <details>application/x-subtitle; application/x-subtitle-sami; application/x-subtitle-tmplayer; application/x-subtitle-mpl2; application/x-subtitle-dks; application/x-subtitle-qttext; application/x-subtitle-lrc</details>
         </caps>
         <caps>
           <name>src</name>
diff --git a/docs/plugins/inspect/plugin-tcp.xml b/docs/plugins/inspect/plugin-tcp.xml
index f991c41..404e7c4 100644
--- a/docs/plugins/inspect/plugin-tcp.xml
+++ b/docs/plugins/inspect/plugin-tcp.xml
@@ -3,7 +3,7 @@
   <description>transfer data over the network via TCP</description>
   <filename>../../gst/tcp/.libs/libgsttcp.so</filename>
   <basename>libgsttcp.so</basename>
-  <version>1.2.4</version>
+  <version>1.3.1</version>
   <license>LGPL</license>
   <source>gst-plugins-base</source>
   <package>GStreamer Base Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-theora.xml b/docs/plugins/inspect/plugin-theora.xml
index 3906e69..9015d28 100644
--- a/docs/plugins/inspect/plugin-theora.xml
+++ b/docs/plugins/inspect/plugin-theora.xml
@@ -3,7 +3,7 @@
   <description>Theora plugin library</description>
   <filename>../../ext/theora/.libs/libgsttheora.so</filename>
   <basename>libgsttheora.so</basename>
-  <version>1.2.4</version>
+  <version>1.3.1</version>
   <license>LGPL</license>
   <source>gst-plugins-base</source>
   <package>GStreamer Base Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-typefindfunctions.xml b/docs/plugins/inspect/plugin-typefindfunctions.xml
index 3aa3cd1..8290951 100644
--- a/docs/plugins/inspect/plugin-typefindfunctions.xml
+++ b/docs/plugins/inspect/plugin-typefindfunctions.xml
@@ -3,7 +3,7 @@
   <description>default typefind functions</description>
   <filename>../../gst/typefind/.libs/libgsttypefindfunctions.so</filename>
   <basename>libgsttypefindfunctions.so</basename>
-  <version>1.2.4</version>
+  <version>1.3.1</version>
   <license>LGPL</license>
   <source>gst-plugins-base</source>
   <package>GStreamer Base Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-videoconvert.xml b/docs/plugins/inspect/plugin-videoconvert.xml
index bd91f1a..c37d734 100644
--- a/docs/plugins/inspect/plugin-videoconvert.xml
+++ b/docs/plugins/inspect/plugin-videoconvert.xml
@@ -3,7 +3,7 @@
   <description>Colorspace conversion</description>
   <filename>../../gst/videoconvert/.libs/libgstvideoconvert.so</filename>
   <basename>libgstvideoconvert.so</basename>
-  <version>1.2.4</version>
+  <version>1.3.1</version>
   <license>LGPL</license>
   <source>gst-plugins-base</source>
   <package>GStreamer Base Plug-ins source release</package>
@@ -20,13 +20,13 @@
           <name>sink</name>
           <direction>sink</direction>
           <presence>always</presence>
-          <details>video/x-raw, format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+          <details>video/x-raw, format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
         </caps>
         <caps>
           <name>src</name>
           <direction>source</direction>
           <presence>always</presence>
-          <details>video/x-raw, format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+          <details>video/x-raw, format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
         </caps>
       </pads>
     </element>
diff --git a/docs/plugins/inspect/plugin-videorate.xml b/docs/plugins/inspect/plugin-videorate.xml
index aee2283..6b1df2e 100644
--- a/docs/plugins/inspect/plugin-videorate.xml
+++ b/docs/plugins/inspect/plugin-videorate.xml
@@ -3,7 +3,7 @@
   <description>Adjusts video frames</description>
   <filename>../../gst/videorate/.libs/libgstvideorate.so</filename>
   <basename>libgstvideorate.so</basename>
-  <version>1.2.4</version>
+  <version>1.3.1</version>
   <license>LGPL</license>
   <source>gst-plugins-base</source>
   <package>GStreamer Base Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-videoscale.xml b/docs/plugins/inspect/plugin-videoscale.xml
index 35f994c..597cc04 100644
--- a/docs/plugins/inspect/plugin-videoscale.xml
+++ b/docs/plugins/inspect/plugin-videoscale.xml
@@ -3,7 +3,7 @@
   <description>Resizes video</description>
   <filename>../../gst/videoscale/.libs/libgstvideoscale.so</filename>
   <basename>libgstvideoscale.so</basename>
-  <version>1.2.4</version>
+  <version>1.3.1</version>
   <license>LGPL</license>
   <source>gst-plugins-base</source>
   <package>GStreamer Base Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-videotestsrc.xml b/docs/plugins/inspect/plugin-videotestsrc.xml
index f5fa62d..442e5b3 100644
--- a/docs/plugins/inspect/plugin-videotestsrc.xml
+++ b/docs/plugins/inspect/plugin-videotestsrc.xml
@@ -3,7 +3,7 @@
   <description>Creates a test video stream</description>
   <filename>../../gst/videotestsrc/.libs/libgstvideotestsrc.so</filename>
   <basename>libgstvideotestsrc.so</basename>
-  <version>1.2.4</version>
+  <version>1.3.1</version>
   <license>LGPL</license>
   <source>gst-plugins-base</source>
   <package>GStreamer Base Plug-ins source release</package>
@@ -20,7 +20,7 @@
           <name>src</name>
           <direction>source</direction>
           <presence>always</presence>
-          <details>video/x-raw, format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-bayer, format=(string){ bggr, rggb, grbg, gbrg }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+          <details>video/x-raw, format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-bayer, format=(string){ bggr, rggb, grbg, gbrg }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
         </caps>
       </pads>
     </element>
diff --git a/docs/plugins/inspect/plugin-volume.xml b/docs/plugins/inspect/plugin-volume.xml
index 07361c4..d904e87 100644
--- a/docs/plugins/inspect/plugin-volume.xml
+++ b/docs/plugins/inspect/plugin-volume.xml
@@ -3,7 +3,7 @@
   <description>plugin for controlling audio volume</description>
   <filename>../../gst/volume/.libs/libgstvolume.so</filename>
   <basename>libgstvolume.so</basename>
-  <version>1.2.4</version>
+  <version>1.3.1</version>
   <license>LGPL</license>
   <source>gst-plugins-base</source>
   <package>GStreamer Base Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-vorbis.xml b/docs/plugins/inspect/plugin-vorbis.xml
index 3fc9ef3..e4ba41f 100644
--- a/docs/plugins/inspect/plugin-vorbis.xml
+++ b/docs/plugins/inspect/plugin-vorbis.xml
@@ -3,7 +3,7 @@
   <description>Vorbis plugin library</description>
   <filename>../../ext/vorbis/.libs/libgstvorbis.so</filename>
   <basename>libgstvorbis.so</basename>
-  <version>1.2.4</version>
+  <version>1.3.1</version>
   <license>LGPL</license>
   <source>gst-plugins-base</source>
   <package>GStreamer Base Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-ximagesink.xml b/docs/plugins/inspect/plugin-ximagesink.xml
index 8184138..77554cf 100644
--- a/docs/plugins/inspect/plugin-ximagesink.xml
+++ b/docs/plugins/inspect/plugin-ximagesink.xml
@@ -3,7 +3,7 @@
   <description>X11 video output element based on standard Xlib calls</description>
   <filename>../../sys/ximage/.libs/libgstximagesink.so</filename>
   <basename>libgstximagesink.so</basename>
-  <version>1.2.4</version>
+  <version>1.3.1</version>
   <license>LGPL</license>
   <source>gst-plugins-base</source>
   <package>GStreamer Base Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-xvimagesink.xml b/docs/plugins/inspect/plugin-xvimagesink.xml
index 44bd7bc..24f88be 100644
--- a/docs/plugins/inspect/plugin-xvimagesink.xml
+++ b/docs/plugins/inspect/plugin-xvimagesink.xml
@@ -3,7 +3,7 @@
   <description>XFree86 video output plugin using Xv extension</description>
   <filename>../../sys/xvimage/.libs/libgstxvimagesink.so</filename>
   <basename>libgstxvimagesink.so</basename>
-  <version>1.2.4</version>
+  <version>1.3.1</version>
   <license>LGPL</license>
   <source>gst-plugins-base</source>
   <package>GStreamer Base Plug-ins source release</package>
diff --git a/ext/Makefile.in b/ext/Makefile.in
index 6985e31..70f85ac 100644
--- a/ext/Makefile.in
+++ b/ext/Makefile.in
@@ -91,7 +91,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -403,9 +402,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/ext/alsa/Makefile.in b/ext/alsa/Makefile.in
index 442b171..332ae00 100644
--- a/ext/alsa/Makefile.in
+++ b/ext/alsa/Makefile.in
@@ -88,7 +88,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -426,9 +425,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/ext/alsa/gstalsa.c b/ext/alsa/gstalsa.c
index 0828110..d702a23 100644
--- a/ext/alsa/gstalsa.c
+++ b/ext/alsa/gstalsa.c
@@ -707,3 +707,55 @@
         GST_AUDIO_CHANNEL_POSITION_SIDE_LEFT,
       GST_AUDIO_CHANNEL_POSITION_SIDE_RIGHT}
 };
+
+#ifdef SND_CHMAP_API_VERSION
+/* +1 is to make zero as holes */
+#define ITEM(x, y) \
+  [SND_CHMAP_ ## x] = GST_AUDIO_CHANNEL_POSITION_ ## y + 1
+
+static GstAudioChannelPosition gst_pos[SND_CHMAP_LAST + 1] = {
+  ITEM(MONO, MONO),
+  ITEM(FL, FRONT_LEFT),
+  ITEM(FR, FRONT_RIGHT),
+  ITEM(FC, FRONT_CENTER),
+  ITEM(RL, REAR_LEFT),
+  ITEM(RR, REAR_RIGHT),
+  ITEM(RC, REAR_CENTER),
+  ITEM(LFE, LFE1),
+  ITEM(SL, SIDE_LEFT),
+  ITEM(SR, SIDE_RIGHT),
+  ITEM(FLC, FRONT_LEFT_OF_CENTER),
+  ITEM(FRC, FRONT_RIGHT_OF_CENTER),
+  ITEM(FLW, WIDE_LEFT),
+  ITEM(FRW, WIDE_RIGHT),
+  ITEM(TC, TOP_CENTER),
+  ITEM(TFL, TOP_FRONT_LEFT),
+  ITEM(TFR, TOP_FRONT_RIGHT),
+  ITEM(TFC, TOP_FRONT_CENTER),
+  ITEM(TRL, TOP_REAR_LEFT),
+  ITEM(TRR, TOP_REAR_RIGHT),
+  ITEM(TRC, TOP_REAR_CENTER),
+  ITEM(LLFE, LFE1),
+  ITEM(RLFE, LFE2),
+  ITEM(BC, BOTTOM_FRONT_CENTER),
+  ITEM(BLC, BOTTOM_FRONT_LEFT),
+  ITEM(BRC, BOTTOM_FRONT_LEFT),
+};
+#undef ITEM
+
+gboolean alsa_chmap_to_channel_positions (const snd_pcm_chmap_t *chmap,
+					  GstAudioChannelPosition *pos)
+{
+  int c;
+
+  for (c = 0; c < chmap->channels; c++) {
+    if (chmap->pos[c] > SND_CHMAP_LAST)
+      return FALSE;
+    pos[c] = gst_pos[chmap->pos[c]];
+    if (!pos[c])
+      return FALSE;
+    pos[c]--;
+  }
+  return TRUE;
+}
+#endif /* SND_CHMAP_API_VERSION */
diff --git a/ext/alsa/gstalsa.h b/ext/alsa/gstalsa.h
index b9000de..8026619 100644
--- a/ext/alsa/gstalsa.h
+++ b/ext/alsa/gstalsa.h
@@ -71,5 +71,9 @@
                                             GstCaps   * caps);
 
 extern const GstAudioChannelPosition alsa_position[][8];
+#ifdef SND_CHMAP_API_VERSION
+gboolean alsa_chmap_to_channel_positions (const snd_pcm_chmap_t *chmap,
+					  GstAudioChannelPosition *pos);
+#endif
 
 #endif /* __GST_ALSA_H__ */
diff --git a/ext/alsa/gstalsaplugin.c b/ext/alsa/gstalsaplugin.c
index 8596276..6a7e42b 100644
--- a/ext/alsa/gstalsaplugin.c
+++ b/ext/alsa/gstalsaplugin.c
@@ -31,6 +31,9 @@
 GST_DEBUG_CATEGORY (alsa_debug);
 
 /* ALSA debugging wrapper */
+/* *INDENT-OFF* */
+G_GNUC_PRINTF (5, 6)
+/* *INDENT-ON* */
 static void
 gst_alsa_error_wrapper (const char *file, int line, const char *function,
     int err, const char *fmt, ...)
diff --git a/ext/alsa/gstalsasink.c b/ext/alsa/gstalsasink.c
index 19dbd8b..1985cfb 100644
--- a/ext/alsa/gstalsasink.c
+++ b/ext/alsa/gstalsasink.c
@@ -32,8 +32,6 @@
  * gst-launch -v filesrc location=sine.ogg ! oggdemux ! vorbisdec ! audioconvert ! audioresample ! alsasink
  * ]| Play an Ogg/Vorbis file.
  * </refsect2>
- *
- * Last reviewed on 2006-03-01 (0.10.4)
  */
 
 #ifdef HAVE_CONFIG_H
@@ -896,6 +894,18 @@
     snd_output_close (out_buf);
   }
 
+#ifdef SND_CHMAP_API_VERSION
+  if (spec->type == GST_AUDIO_RING_BUFFER_FORMAT_TYPE_RAW && alsa->channels < 9) {
+    snd_pcm_chmap_t *chmap = snd_pcm_get_chmap (alsa->handle);
+    if (chmap && chmap->channels == alsa->channels) {
+      GstAudioChannelPosition pos[8];
+      if (alsa_chmap_to_channel_positions (chmap, pos))
+	gst_audio_ring_buffer_set_channel_positions (GST_AUDIO_BASE_SINK (alsa)->ringbuffer, pos);
+    }
+    free (chmap);
+  }
+#endif /* SND_CHMAP_API_VERSION */
+
   return TRUE;
 
   /* ERRORS */
diff --git a/ext/alsa/gstalsasrc.c b/ext/alsa/gstalsasrc.c
index fa4b555..43b82b1 100644
--- a/ext/alsa/gstalsasrc.c
+++ b/ext/alsa/gstalsasrc.c
@@ -31,8 +31,6 @@
  * gst-launch -v alsasrc ! audioconvert ! vorbisenc ! oggmux ! filesink location=alsasrc.ogg
  * ]| Record from a sound card using ALSA and encode to Ogg/Vorbis.
  * </refsect2>
- *
- * Last reviewed on 2006-03-01 (0.10.4)
  */
 
 #ifdef HAVE_CONFIG_H
@@ -783,6 +781,18 @@
     snd_output_close (out_buf);
   }
 
+#ifdef SND_CHMAP_API_VERSION
+  if (spec->type == GST_AUDIO_RING_BUFFER_FORMAT_TYPE_RAW && alsa->channels < 9) {
+    snd_pcm_chmap_t *chmap = snd_pcm_get_chmap (alsa->handle);
+    if (chmap && chmap->channels == alsa->channels) {
+      GstAudioChannelPosition pos[8];
+      if (alsa_chmap_to_channel_positions (chmap, pos))
+	gst_audio_ring_buffer_set_channel_positions (GST_AUDIO_BASE_SRC (alsa)->ringbuffer, pos);
+    }
+    free (chmap);
+  }
+#endif /* SND_CHMAP_API_VERSION */
+
   return TRUE;
 
   /* ERRORS */
diff --git a/ext/cdparanoia/Makefile.in b/ext/cdparanoia/Makefile.in
index d51c00c..06e1e18 100644
--- a/ext/cdparanoia/Makefile.in
+++ b/ext/cdparanoia/Makefile.in
@@ -88,7 +88,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -426,9 +425,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/ext/cdparanoia/gstcdparanoiasrc.c b/ext/cdparanoia/gstcdparanoiasrc.c
index a2721d2..4c512be 100644
--- a/ext/cdparanoia/gstcdparanoiasrc.c
+++ b/ext/cdparanoia/gstcdparanoiasrc.c
@@ -156,11 +156,9 @@
           75, DEFAULT_SEARCH_OVERLAP,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
   /**
-   * GstCdParanoiaSrc:cache-size
+   * GstCdParanoiaSrc:cache-size:
    *
    * Set CD cache size to n sectors (-1 = auto)
-   *
-   * Since: 0.10.24
    */
   g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_CACHE_SIZE,
       g_param_spec_int ("cache-size", "Cache size",
@@ -171,7 +169,7 @@
   /* FIXME: we don't really want signals for this, but messages on the bus,
    * but then we can't check any longer whether anyone is interested in them */
   /**
-   * GstCdParanoiaSrc::transport-error
+   * GstCdParanoiaSrc::transport-error:
    * @cdparanoia: The CdParanoia instance
    * @sector: The sector number at which the error was encountered.
    *
@@ -184,7 +182,7 @@
       G_STRUCT_OFFSET (GstCdParanoiaSrcClass, transport_error),
       NULL, NULL, g_cclosure_marshal_VOID__INT, G_TYPE_NONE, 1, G_TYPE_INT);
   /**
-   * GstCdParanoiaSrc::uncorrected-error
+   * GstCdParanoiaSrc::uncorrected-error:
    * @cdparanoia: The CdParanoia instance
    * @sector: The sector number at which the error was encountered.
    *
diff --git a/ext/libvisual/Makefile.in b/ext/libvisual/Makefile.in
index 2a9919b..eb214ce 100644
--- a/ext/libvisual/Makefile.in
+++ b/ext/libvisual/Makefile.in
@@ -88,7 +88,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -427,9 +426,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/ext/ogg/Makefile.in b/ext/ogg/Makefile.in
index c748943..4a468b1 100644
--- a/ext/ogg/Makefile.in
+++ b/ext/ogg/Makefile.in
@@ -88,7 +88,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -431,9 +430,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/ext/ogg/gstoggdemux.c b/ext/ogg/gstoggdemux.c
index 579f0dc..902410b 100644
--- a/ext/ogg/gstoggdemux.c
+++ b/ext/ogg/gstoggdemux.c
@@ -31,8 +31,6 @@
  * gst-launch -v filesrc location=test.ogg ! oggdemux ! vorbisdec ! audioconvert ! alsasink
  * ]| Decodes the vorbis audio stored inside an ogg container.
  * </refsect2>
- *
- * Last reviewed on 2006-12-30 (0.10.5)
  */
 
 
@@ -259,7 +257,7 @@
       gint64 total_time = -1;
 
       gst_query_parse_duration (query, &format, NULL);
-      /* can only get position in time */
+      /* can only get duration in time */
       if (format != GST_FORMAT_TIME)
         goto wrong_format;
 
@@ -524,6 +522,8 @@
   GST_DEBUG_OBJECT (ogg,
       "%p streaming to peer serial %08x", pad, pad->map.serialno);
 
+  gst_ogg_stream_update_stats (&pad->map, packet);
+
   if (pad->map.is_ogm) {
     const guint8 *data;
     long bytes;
@@ -2996,7 +2996,7 @@
   for (i = 0; i < chain->streams->len; i++) {
     GstOggPad *pad = g_array_index (chain->streams, GstOggPad *, i);
     if (!pad) {
-      GST_WARNING_OBJECT (ogg, "No pad for serialno %08x", pad->map.serialno);
+      GST_WARNING_OBJECT (ogg, "No pad at index %d", i);
       pending--;
       continue;
     }
@@ -4514,7 +4514,6 @@
 {
   GstOggDemux *ogg;
   GstFlowReturn ret;
-  GstEvent *event;
 
   ogg = GST_OGG_DEMUX (GST_OBJECT_PARENT (pad));
 
@@ -4532,14 +4531,10 @@
 
     GST_OBJECT_LOCK (ogg);
     ogg->running = TRUE;
-    event = ogg->event;
-    ogg->event = NULL;
     GST_OBJECT_UNLOCK (ogg);
 
     /* and seek to configured positions without FLUSH */
-    res = gst_ogg_demux_perform_seek_pull (ogg, event);
-    if (event)
-      gst_event_unref (event);
+    res = gst_ogg_demux_perform_seek_pull (ogg, NULL);
 
     if (!res)
       goto seek_failed;
diff --git a/ext/ogg/gstoggdemux.h b/ext/ogg/gstoggdemux.h
index b2b8203..4b9a32c 100644
--- a/ext/ogg/gstoggdemux.h
+++ b/ext/ogg/gstoggdemux.h
@@ -157,7 +157,6 @@
   GstSegment segment;
   guint32  seqnum;
 
-  GstEvent *event;
   GstEvent *newsegment;         /* pending newsegment to be sent from _loop */
 
   /* annodex stuff */
diff --git a/ext/ogg/gstoggmux.c b/ext/ogg/gstoggmux.c
index 53da5a0..cc0af3a 100644
--- a/ext/ogg/gstoggmux.c
+++ b/ext/ogg/gstoggmux.c
@@ -31,8 +31,6 @@
  * ]| Encodes a video stream captured from a v4l2-compatible camera to Ogg/Theora
  * (the encoding will stop automatically after 500 frames)
  * </refsect2>
- *
- * Last reviewed on 2008-02-06 (0.10.17)
  */
 
 #ifdef HAVE_CONFIG_H
@@ -137,6 +135,8 @@
 static GstPad *gst_ogg_mux_request_new_pad (GstElement * element,
     GstPadTemplate * templ, const gchar * name, const GstCaps * caps);
 static void gst_ogg_mux_release_pad (GstElement * element, GstPad * pad);
+static void gst_ogg_pad_data_reset (GstOggMux * ogg_mux,
+    GstOggPadData * pad_data);
 
 static void gst_ogg_mux_set_property (GObject * object,
     guint prop_id, const GValue * value, GParamSpec * pspec);
@@ -293,6 +293,22 @@
   return GST_PAD_LINK_OK;
 }
 
+static void
+gst_ogg_mux_flush (GstOggMux * ogg_mux)
+{
+  GSList *walk;
+
+  for (walk = ogg_mux->collect->data; walk; walk = g_slist_next (walk)) {
+    GstOggPadData *pad;
+
+    pad = (GstOggPadData *) walk->data;
+
+    gst_ogg_pad_data_reset (ogg_mux, pad);
+  }
+
+  gst_ogg_mux_clear (ogg_mux);
+}
+
 static gboolean
 gst_ogg_mux_sink_event (GstCollectPads * pads, GstCollectData * pad,
     GstEvent * event, gpointer user_data)
@@ -320,7 +336,8 @@
       break;
     }
     case GST_EVENT_FLUSH_STOP:{
-      gst_segment_init (&ogg_pad->segment, GST_FORMAT_TIME);
+      /* only a single flush-stop is forwarded from collect pads */
+      gst_ogg_mux_flush (ogg_mux);
       break;
     }
     case GST_EVENT_TAG:{
@@ -362,6 +379,41 @@
   return FALSE;
 }
 
+static void
+gst_ogg_pad_data_reset (GstOggMux * ogg_mux, GstOggPadData * oggpad)
+{
+  oggpad->packetno = 0;
+  oggpad->pageno = 0;
+  oggpad->eos = FALSE;
+
+  /* we assume there will be some control data first for this pad */
+  oggpad->state = GST_OGG_PAD_STATE_CONTROL;
+  oggpad->new_page = TRUE;
+  oggpad->first_delta = FALSE;
+  oggpad->prev_delta = FALSE;
+  oggpad->data_pushed = FALSE;
+  oggpad->map.headers = NULL;
+  oggpad->map.queued = NULL;
+  oggpad->next_granule = 0;
+  oggpad->keyframe_granule = -1;
+  ogg_stream_clear (&oggpad->map.stream);
+  ogg_stream_init (&oggpad->map.stream, oggpad->map.serialno);
+
+  if (oggpad->pagebuffers) {
+    GstBuffer *buf;
+
+    while ((buf = g_queue_pop_head (oggpad->pagebuffers)) != NULL) {
+      gst_buffer_unref (buf);
+    }
+  } else if (GST_STATE (ogg_mux) > GST_STATE_READY) {
+    /* This will be initialized in init_collectpads when going from ready
+     * paused state */
+    oggpad->pagebuffers = g_queue_new ();
+  }
+
+  gst_segment_init (&oggpad->segment, GST_FORMAT_TIME);
+}
+
 static guint32
 gst_ogg_mux_generate_serialno (GstOggMux * ogg_mux)
 {
@@ -442,28 +494,7 @@
       ogg_mux->active_pads++;
 
       oggpad->map.serialno = serial;
-      oggpad->packetno = 0;
-      oggpad->pageno = 0;
-      oggpad->eos = FALSE;
-      /* we assume there will be some control data first for this pad */
-      oggpad->state = GST_OGG_PAD_STATE_CONTROL;
-      oggpad->new_page = TRUE;
-      oggpad->first_delta = FALSE;
-      oggpad->prev_delta = FALSE;
-      oggpad->data_pushed = FALSE;
-      oggpad->map.headers = NULL;
-      oggpad->map.queued = NULL;
-      oggpad->next_granule = 0;
-      oggpad->keyframe_granule = -1;
-
-      if (GST_STATE (ogg_mux) > GST_STATE_READY) {
-        /* This will be initialized in init_collectpads when going from ready
-         * paused state */
-        ogg_stream_init (&oggpad->map.stream, oggpad->map.serialno);
-        oggpad->pagebuffers = g_queue_new ();
-      }
-
-      gst_segment_init (&oggpad->segment, GST_FORMAT_TIME);
+      gst_ogg_pad_data_reset (ogg_mux, oggpad);
     }
   }
 
@@ -815,7 +846,11 @@
   gst_buffer_map (buf, &map, GST_MAP_READ);
   packet.packet = map.data;
   packet.bytes = map.size;
+
+  gst_ogg_stream_update_stats (&pad->map, &packet);
+
   duration = gst_ogg_stream_get_packet_duration (&pad->map, &packet);
+
   gst_buffer_unmap (buf, &map);
 
   /* give up if no duration can be determined, relying on upstream */
@@ -977,6 +1012,11 @@
               pad->have_type = gst_ogg_stream_setup_map (&pad->map, &packet);
             }
             if (!pad->have_type) {
+              /* fallback 2 to try to get the mapping from the caps */
+              pad->have_type =
+                  gst_ogg_stream_setup_map_from_caps (&pad->map, caps);
+            }
+            if (!pad->have_type) {
               GST_ERROR_OBJECT (data->pad,
                   "mapper didn't recognise input stream " "(pad caps: %"
                   GST_PTR_FORMAT ")", caps);
@@ -1065,6 +1105,7 @@
   GstCaps *caps;
   const GValue *streamheader;
   GstPad *thepad;
+  GstBuffer *header;
 
   thepad = pad->collect.pad;
 
@@ -1106,6 +1147,9 @@
   } else if (gst_structure_has_name (structure, "video/x-dirac")) {
     res = g_list_append (res, pad->buffer);
     pad->buffer = NULL;
+  } else if (pad->have_type
+      && (header = gst_ogg_stream_get_headers (&pad->map))) {
+    res = g_list_append (res, header);
   } else {
     GST_LOG_OBJECT (thepad, "caps don't have streamheader");
   }
@@ -1242,9 +1286,13 @@
     gchar *tmp;
     if (n)
       g_string_append (s, ", ");
-    gst_tag_list_get_string_index (tags, tag, n, &tmp);
-    g_string_append (s, tmp);
-    g_free (tmp);
+    if (gst_tag_list_get_string_index (tags, tag, n, &tmp)) {
+      g_string_append (s, tmp);
+      g_free (tmp);
+    } else {
+      GST_WARNING_OBJECT (mux, "Tag %s index %u was not found (%u total)", tag,
+          n, size);
+    }
   }
   gst_ogg_mux_add_fisbone_message_header (mux, bw, header, s->str);
   g_string_free (s, TRUE);
@@ -2060,6 +2108,7 @@
   while (walk) {
     GstOggPadData *oggpad = (GstOggPadData *) walk->data;
 
+    ogg_stream_clear (&oggpad->map.stream);
     ogg_stream_init (&oggpad->map.stream, oggpad->map.serialno);
     oggpad->packetno = 0;
     oggpad->pageno = 0;
diff --git a/ext/ogg/gstoggmux.h b/ext/ogg/gstoggmux.h
index dc1a445..3cb8840 100644
--- a/ext/ogg/gstoggmux.h
+++ b/ext/ogg/gstoggmux.h
@@ -19,7 +19,7 @@
  */
 
 #ifndef __GST_OGG_MUX_H__
-#define __GST_OGGEMUX_H__
+#define __GST_OGG_MUX_H__
 
 #include <ogg/ogg.h>
 
diff --git a/ext/ogg/gstoggstream.c b/ext/ogg/gstoggstream.c
index 0459851..a199ffe 100644
--- a/ext/ogg/gstoggstream.c
+++ b/ext/ogg/gstoggstream.c
@@ -40,6 +40,8 @@
 
 typedef gboolean (*GstOggMapSetupFunc) (GstOggStream * pad,
     ogg_packet * packet);
+typedef gboolean (*GstOggMapSetupFromCapsFunc) (GstOggStream * pad,
+    const GstCaps * caps);
 typedef GstClockTime (*GstOggMapToTimeFunc) (GstOggStream * pad,
     gint64 granulepos);
 typedef gint64 (*GstOggMapToGranuleFunc) (GstOggStream * pad,
@@ -66,6 +68,10 @@
 typedef gint64 (*GstOggMapGranuleposToKeyGranuleFunc) (GstOggStream * pad,
     gint64 granulepos);
 
+typedef GstBuffer *(*GstOggMapGetHeadersFunc) (GstOggStream * pad);
+typedef void (*GstOggMapUpdateStatsFunc) (GstOggStream * pad,
+    ogg_packet * packet);
+
 #define SKELETON_FISBONE_MIN_SIZE  52
 #define SKELETON_FISHEAD_3_3_MIN_SIZE 112
 #define SKELETON_FISHEAD_4_0_MIN_SIZE 80
@@ -77,6 +83,7 @@
   int min_packet_size;
   const gchar *media_type;
   GstOggMapSetupFunc setup_func;
+  GstOggMapSetupFromCapsFunc setup_from_caps_func;
   GstOggMapToGranuleFunc granulepos_to_granule_func;
   GstOggMapToGranuleposFunc granule_to_granulepos_func;
   GstOggMapIsGranuleposKeyFrameFunc is_granulepos_key_frame_func;
@@ -85,6 +92,8 @@
   GstOggMapPacketDurationFunc packet_duration_func;
   GstOggMapGranuleposToKeyGranuleFunc granulepos_to_key_granule_func;
   GstOggMapExtractTagsFunc extract_tags_func;
+  GstOggMapGetHeadersFunc get_headers_func;
+  GstOggMapUpdateStatsFunc update_stats_func;
 };
 
 extern const GstOggMap mappers[];
@@ -265,6 +274,24 @@
   return gst_structure_get_name (structure);
 }
 
+GstBuffer *
+gst_ogg_stream_get_headers (GstOggStream * pad)
+{
+  if (!mappers[pad->map].get_headers_func)
+    return NULL;
+
+  return mappers[pad->map].get_headers_func (pad);
+}
+
+void
+gst_ogg_stream_update_stats (GstOggStream * pad, ogg_packet * packet)
+{
+  if (!mappers[pad->map].get_headers_func)
+    return;
+
+  return mappers[pad->map].update_stats_func (pad, packet);
+}
+
 /* some generic functions */
 
 static gboolean
@@ -471,7 +498,7 @@
   if (granulepos == (gint64) - 1)
     return FALSE;
 
-  frame_mask = (1 << pad->granuleshift) - 1;
+  frame_mask = (G_GUINT64_CONSTANT (1) << pad->granuleshift) - 1;
 
   return ((granulepos & frame_mask) == 0);
 }
@@ -651,6 +678,50 @@
 }
 
 static gboolean
+vp8_fill_header (GstOggStream * pad, const GstCaps * caps, guint8 * data)
+{
+  gint width, height, par_n, par_d, fps_n, fps_d;
+  GstStructure *structure = gst_caps_get_structure (caps, 0);
+
+  if (!(gst_structure_get_int (structure, "width", &width) &&
+          gst_structure_get_int (structure, "height", &height) &&
+          gst_structure_get_fraction (structure, "framerate", &fps_n,
+              &fps_d))) {
+    GST_DEBUG ("Failed to get width, height or framerate from caps %"
+        GST_PTR_FORMAT, caps);
+    return FALSE;
+  }
+  if (!gst_structure_get_fraction (structure, "pixel-aspect-ratio", &par_n,
+          &par_d)) {
+    par_n = par_d = 1;
+  }
+
+  memcpy (data, "OVP80\1\1", 8);
+  GST_WRITE_UINT16_BE (data + 8, width);
+  GST_WRITE_UINT16_BE (data + 10, height);
+  GST_WRITE_UINT24_BE (data + 12, par_n);
+  GST_WRITE_UINT24_BE (data + 15, par_d);
+  GST_WRITE_UINT32_BE (data + 18, fps_n);
+  GST_WRITE_UINT32_BE (data + 22, fps_d);
+
+  return TRUE;
+}
+
+static gboolean
+setup_vp8_mapper_from_caps (GstOggStream * pad, const GstCaps * caps)
+{
+  guint8 data[26];
+  ogg_packet packet;
+
+  if (!vp8_fill_header (pad, caps, data))
+    return FALSE;
+
+  packet.packet = data;
+  packet.bytes = 26;
+  return setup_vp8_mapper (pad, &packet);
+}
+
+static gboolean
 is_keyframe_vp8 (GstOggStream * pad, gint64 granulepos)
 {
   guint64 gpos = granulepos;
@@ -683,11 +754,14 @@
 granule_to_granulepos_vp8 (GstOggStream * pad, gint64 granule,
     gint64 keyframe_granule)
 {
-  /* FIXME: This requires to look into the content of the packets
-   * because the simple granule counter doesn't know about invisible
-   * frames...
-   */
-  return -1;
+  guint inv;
+  gint64 granulepos;
+
+  inv = (pad->invisible_count <= 0) ? 0x3 : pad->invisible_count - 1;
+
+  granulepos =
+      (granule << 32) | (inv << 30) | ((granule - keyframe_granule) << 3);
+  return granulepos;
 }
 
 /* Check if this packet contains an invisible frame or not */
@@ -742,6 +816,30 @@
   }
 }
 
+static GstBuffer *
+get_headers_vp8 (GstOggStream * pad)
+{
+  guint8 *data = g_malloc (26);
+
+  if (vp8_fill_header (pad, pad->caps, data)) {
+    return gst_buffer_new_wrapped (data, 26);
+  }
+  g_free (data);
+  return NULL;
+}
+
+static void
+update_stats_vp8 (GstOggStream * pad, ogg_packet * packet)
+{
+  if (packet_duration_vp8 (pad, packet)) {
+    /* set to -1 as when we get thefirst invisible it should be
+     * set to 0 */
+    pad->invisible_count = -1;
+  } else {
+    pad->invisible_count++;
+  }
+}
+
 /* vorbis */
 
 static gboolean
@@ -1007,7 +1105,7 @@
     return 576 << (block_size_index - 2);
   }
   if (block_size_index >= 8) {
-    return 256 << (block_size_index - 8);
+    return G_GUINT64_CONSTANT (256) << (block_size_index - 8);
   }
   if (block_size_index == 6 || block_size_index == 7) {
     guint len, bytes = (block_size_index - 6) + 1;
@@ -1408,6 +1506,9 @@
   guint64 ts;
   GstOggIndex *best;
 
+  g_return_val_if_fail (timestamp != NULL, FALSE);
+  g_return_val_if_fail (offset != NULL, FALSE);
+
   n_index = pad->n_index;
   if (n_index == 0 || pad->index == NULL)
     return FALSE;
@@ -1425,11 +1526,9 @@
 
   GST_INFO ("found at index %u", (guint) (best - pad->index));
 
-  if (offset)
-    *offset = best->offset;
-  if (timestamp)
-    *timestamp =
-        gst_util_uint64_scale (best->timestamp, GST_SECOND, pad->kp_denom);
+  *offset = best->offset;
+  *timestamp =
+      gst_util_uint64_scale (best->timestamp, GST_SECOND, pad->kp_denom);
 
   return TRUE;
 }
@@ -2096,7 +2195,7 @@
   if (granulepos == (gint64) - 1)
     return FALSE;
 
-  frame_mask = (1 << pad->granuleshift) - 1;
+  frame_mask = (G_GUINT64_CONSTANT (1) << pad->granuleshift) - 1;
 
   return ((granulepos & frame_mask) == 0);
 }
@@ -2141,6 +2240,7 @@
     "\200theora", 7, 42,
     "video/x-theora",
     setup_theora_mapper,
+    NULL,
     granulepos_to_granule_theora,
     granule_to_granulepos_default,
     is_granulepos_keyframe_theora,
@@ -2148,12 +2248,15 @@
     is_header_theora,
     packet_duration_constant,
     NULL,
-    extract_tags_theora
+    extract_tags_theora,
+    NULL,
+    NULL
   },
   {
     "\001vorbis", 7, 22,
     "audio/x-vorbis",
     setup_vorbis_mapper,
+    NULL,
     granulepos_to_granule_default,
     granule_to_granulepos_default,
     is_granulepos_keyframe_true,
@@ -2161,12 +2264,15 @@
     is_header_vorbis,
     packet_duration_vorbis,
     NULL,
-    extract_tags_vorbis
+    extract_tags_vorbis,
+    NULL,
+    NULL
   },
   {
     "Speex", 5, 80,
     "audio/x-speex",
     setup_speex_mapper,
+    NULL,
     granulepos_to_granule_default,
     granule_to_granulepos_default,
     is_granulepos_keyframe_true,
@@ -2174,7 +2280,9 @@
     is_header_count,
     packet_duration_constant,
     NULL,
-    extract_tags_count
+    extract_tags_count,
+    NULL,
+    NULL
   },
   {
     "PCM     ", 8, 0,
@@ -2184,9 +2292,12 @@
     NULL,
     NULL,
     NULL,
+    NULL,
     is_header_count,
     NULL,
     NULL,
+    NULL,
+    NULL,
     NULL
   },
   {
@@ -2197,15 +2308,19 @@
     NULL,
     NULL,
     NULL,
+    NULL,
     is_header_count,
     NULL,
     NULL,
+    NULL,
+    NULL,
     NULL
   },
   {
     "Annodex", 7, 0,
     "application/x-annodex",
     setup_fishead_mapper,
+    NULL,
     granulepos_to_granule_default,
     granule_to_granulepos_default,
     NULL,
@@ -2213,6 +2328,8 @@
     is_header_count,
     NULL,
     NULL,
+    NULL,
+    NULL,
     NULL
   },
   {
@@ -2223,15 +2340,19 @@
     NULL,
     NULL,
     NULL,
+    NULL,
     is_header_true,
     NULL,
     NULL,
+    NULL,
+    NULL,
     NULL
   },
   {
     "fLaC", 4, 0,
     "audio/x-flac",
     setup_fLaC_mapper,
+    NULL,
     granulepos_to_granule_default,
     granule_to_granulepos_default,
     is_granulepos_keyframe_true,
@@ -2239,12 +2360,15 @@
     is_header_fLaC,
     packet_duration_flac,
     NULL,
+    NULL,
+    NULL,
     NULL
   },
   {
     "\177FLAC", 5, 36,
     "audio/x-flac",
     setup_flac_mapper,
+    NULL,
     granulepos_to_granule_default,
     granule_to_granulepos_default,
     is_granulepos_keyframe_true,
@@ -2252,7 +2376,9 @@
     is_header_flac,
     packet_duration_flac,
     NULL,
-    extract_tags_flac
+    extract_tags_flac,
+    NULL,
+    NULL
   },
   {
     "AnxData", 7, 0,
@@ -2264,12 +2390,16 @@
     NULL,
     NULL,
     NULL,
+    NULL,
+    NULL,
+    NULL,
     NULL
   },
   {
     "CELT    ", 8, 0,
     "audio/x-celt",
     setup_celt_mapper,
+    NULL,
     granulepos_to_granule_default,
     granule_to_granulepos_default,
     NULL,
@@ -2277,12 +2407,15 @@
     is_header_count,
     packet_duration_constant,
     NULL,
-    extract_tags_count
+    extract_tags_count,
+    NULL,
+    NULL
   },
   {
     "\200kate\0\0\0", 8, 0,
     "text/x-kate",
     setup_kate_mapper,
+    NULL,
     granulepos_to_granule_default,
     granule_to_granulepos_default,
     NULL,
@@ -2290,12 +2423,15 @@
     is_header_count,
     packet_duration_kate,
     NULL,
-    extract_tags_kate
+    extract_tags_kate,
+    NULL,
+    NULL
   },
   {
     "BBCD\0", 5, 13,
     "video/x-dirac",
     setup_dirac_mapper,
+    NULL,
     granulepos_to_granule_dirac,
     granule_to_granulepos_dirac,
     is_keyframe_dirac,
@@ -2303,12 +2439,15 @@
     is_header_count,
     packet_duration_constant,
     granulepos_to_key_granule_dirac,
+    NULL,
+    NULL,
     NULL
   },
   {
     "OVP80\1\1", 7, 4,
     "video/x-vp8",
     setup_vp8_mapper,
+    setup_vp8_mapper_from_caps,
     granulepos_to_granule_vp8,
     granule_to_granulepos_vp8,
     is_keyframe_vp8,
@@ -2316,12 +2455,15 @@
     is_header_vp8,
     packet_duration_vp8,
     granulepos_to_key_granule_vp8,
-    extract_tags_vp8
+    extract_tags_vp8,
+    get_headers_vp8,
+    update_stats_vp8
   },
   {
     "OpusHead", 8, 0,
     "audio/x-opus",
     setup_opus_mapper,
+    NULL,
     granulepos_to_granule_opus,
     granule_to_granulepos_default,
     NULL,
@@ -2329,12 +2471,15 @@
     is_header_opus,
     packet_duration_opus,
     NULL,
-    extract_tags_opus
+    extract_tags_opus,
+    NULL,
+    NULL
   },
   {
     "\001audio\0\0\0", 9, 53,
     "application/x-ogm-audio",
     setup_ogmaudio_mapper,
+    NULL,
     granulepos_to_granule_default,
     granule_to_granulepos_default,
     is_granulepos_keyframe_true,
@@ -2342,12 +2487,15 @@
     is_header_ogm,
     packet_duration_ogm,
     NULL,
+    NULL,
+    NULL,
     NULL
   },
   {
     "\001video\0\0\0", 9, 53,
     "application/x-ogm-video",
     setup_ogmvideo_mapper,
+    NULL,
     granulepos_to_granule_default,
     granule_to_granulepos_default,
     NULL,
@@ -2355,12 +2503,15 @@
     is_header_ogm,
     packet_duration_constant,
     NULL,
+    NULL,
+    NULL,
     NULL
   },
   {
     "\001text\0\0\0", 9, 9,
     "application/x-ogm-text",
     setup_ogmtext_mapper,
+    NULL,
     granulepos_to_granule_default,
     granule_to_granulepos_default,
     is_granulepos_keyframe_true,
@@ -2368,12 +2519,15 @@
     is_header_ogm,
     packet_duration_ogm,
     NULL,
-    extract_tags_ogm
+    extract_tags_ogm,
+    NULL,
+    NULL
   },
   {
     "\200daala", 6, 42,
     "video/x-daala",
     setup_daala_mapper,
+    NULL,
     granulepos_to_granule_daala,
     granule_to_granulepos_default,
     is_granulepos_keyframe_daala,
@@ -2381,7 +2535,9 @@
     is_header_daala,
     packet_duration_constant,
     NULL,
-    extract_tags_daala
+    extract_tags_daala,
+    NULL,
+    NULL
   },
  
 };
@@ -2420,6 +2576,42 @@
 }
 
 gboolean
+gst_ogg_stream_setup_map_from_caps (GstOggStream * pad, const GstCaps * caps)
+{
+  int i;
+  gboolean ret;
+  GstStructure *structure;
+
+  g_return_val_if_fail (caps != NULL, FALSE);
+
+  structure = gst_caps_get_structure (caps, 0);
+
+  for (i = 0; i < G_N_ELEMENTS (mappers); i++) {
+    if (mappers[i].setup_from_caps_func &&
+        gst_structure_has_name (structure, mappers[i].media_type)) {
+
+      GST_DEBUG ("found mapper for '%s'", mappers[i].id);
+
+      if (mappers[i].setup_from_caps_func)
+        ret = mappers[i].setup_from_caps_func (pad, caps);
+      else
+        continue;
+
+      if (ret) {
+        GST_DEBUG ("got stream type %" GST_PTR_FORMAT, pad->caps);
+        pad->map = i;
+        return TRUE;
+      } else {
+        GST_WARNING ("mapper '%s' did not accept caps %" GST_PTR_FORMAT,
+            mappers[i].media_type, caps);
+      }
+    }
+  }
+
+  return FALSE;
+}
+
+gboolean
 gst_ogg_stream_setup_map_from_caps_headers (GstOggStream * pad,
     const GstCaps * caps)
 {
diff --git a/ext/ogg/gstoggstream.h b/ext/ogg/gstoggstream.h
index 7d2c2ca..06e2907 100644
--- a/ext/ogg/gstoggstream.h
+++ b/ext/ogg/gstoggstream.h
@@ -94,6 +94,7 @@
   gboolean theora_has_zero_keyoffset;
   /* VP8 stuff */
   gboolean is_vp8;
+  gint64 invisible_count;
   /* opus stuff */
   gint64 first_granpos;
   /* OGM stuff */
@@ -116,6 +117,8 @@
 gboolean gst_ogg_stream_setup_map (GstOggStream * pad, ogg_packet *packet);
 gboolean gst_ogg_stream_setup_map_from_caps_headers (GstOggStream * pad,
     const GstCaps * caps);
+gboolean gst_ogg_stream_setup_map_from_caps (GstOggStream * pad,
+    const GstCaps * caps);
 GstClockTime gst_ogg_stream_get_end_time_for_granulepos (GstOggStream *pad,
     gint64 granulepos);
 GstClockTime gst_ogg_stream_get_start_time_for_granulepos (GstOggStream *pad,
@@ -133,6 +136,8 @@
 gint64 gst_ogg_stream_get_packet_duration (GstOggStream * pad, ogg_packet *packet);
 void gst_ogg_stream_extract_tags (GstOggStream * pad, ogg_packet * packet);
 const char *gst_ogg_stream_get_media_type (GstOggStream * pad);
+GstBuffer *gst_ogg_stream_get_headers (GstOggStream *pad);
+void gst_ogg_stream_update_stats (GstOggStream * pad, ogg_packet * packet);
 
 gboolean gst_ogg_map_parse_fisbone (GstOggStream * pad, const guint8 * data, guint size,
     guint32 * serialno, GstOggSkeleton *type);
diff --git a/ext/pango/Makefile.in b/ext/pango/Makefile.in
index b09f8c0..26bfd11 100644
--- a/ext/pango/Makefile.in
+++ b/ext/pango/Makefile.in
@@ -88,7 +88,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -429,9 +428,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/ext/pango/gstbasetextoverlay.c b/ext/pango/gstbasetextoverlay.c
index 66d79b8..28709f8 100644
--- a/ext/pango/gstbasetextoverlay.c
+++ b/ext/pango/gstbasetextoverlay.c
@@ -149,18 +149,26 @@
 
 #define VIDEO_FORMATS GST_VIDEO_OVERLAY_COMPOSITION_BLEND_FORMATS
 
+#define BASE_TEXT_OVERLAY_CAPS GST_VIDEO_CAPS_MAKE (VIDEO_FORMATS)
+
+#define BASE_TEXT_OVERLAY_ALL_CAPS BASE_TEXT_OVERLAY_CAPS ";" \
+    GST_VIDEO_CAPS_MAKE_WITH_FEATURES ("ANY", GST_VIDEO_FORMATS_ALL)
+
+static GstStaticCaps sw_template_caps =
+GST_STATIC_CAPS (BASE_TEXT_OVERLAY_CAPS);
+
 static GstStaticPadTemplate src_template_factory =
 GST_STATIC_PAD_TEMPLATE ("src",
     GST_PAD_SRC,
     GST_PAD_ALWAYS,
-    GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE (VIDEO_FORMATS))
+    GST_STATIC_CAPS (BASE_TEXT_OVERLAY_ALL_CAPS)
     );
 
 static GstStaticPadTemplate video_sink_template_factory =
 GST_STATIC_PAD_TEMPLATE ("video_sink",
     GST_PAD_SINK,
     GST_PAD_ALWAYS,
-    GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE (VIDEO_FORMATS))
+    GST_STATIC_CAPS (BASE_TEXT_OVERLAY_ALL_CAPS)
     );
 
 #define GST_TYPE_BASE_TEXT_OVERLAY_VALIGN (gst_base_text_overlay_valign_get_type())
@@ -265,7 +273,9 @@
 static GstStateChangeReturn gst_base_text_overlay_change_state (GstElement *
     element, GstStateChange transition);
 
-static GstCaps *gst_base_text_overlay_getcaps (GstPad * pad,
+static GstCaps *gst_base_text_overlay_get_videosink_caps (GstPad * pad,
+    GstBaseTextOverlay * overlay, GstCaps * filter);
+static GstCaps *gst_base_text_overlay_get_src_caps (GstPad * pad,
     GstBaseTextOverlay * overlay, GstCaps * filter);
 static gboolean gst_base_text_overlay_setcaps (GstBaseTextOverlay * overlay,
     GstCaps * caps);
@@ -417,24 +427,20 @@
           "Shift Y position up or down. Unit is pixels.", G_MININT, G_MAXINT,
           DEFAULT_PROP_DELTAY, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
   /**
-   * GstBaseTextOverlay:xpos
+   * GstBaseTextOverlay:xpos:
    *
    * Horizontal position of the rendered text when using positioned alignment.
-   *
-   * Since: 0.10.31
-   **/
+   */
   g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_XPOS,
       g_param_spec_double ("xpos", "horizontal position",
           "Horizontal position when using position alignment", 0, 1.0,
           DEFAULT_PROP_XPOS,
           G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE | G_PARAM_STATIC_STRINGS));
   /**
-   * GstBaseTextOverlay:ypos
+   * GstBaseTextOverlay:ypos:
    *
    * Vertical position of the rendered text when using positioned alignment.
-   *
-   * Since: 0.10.31
-   **/
+   */
   g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_YPOS,
       g_param_spec_double ("ypos", "vertical position",
           "Vertical position when using position alignment", 0, 1.0,
@@ -452,24 +458,20 @@
           "for syntax.", DEFAULT_PROP_FONT_DESC,
           G_PARAM_WRITABLE | G_PARAM_STATIC_STRINGS));
   /**
-   * GstBaseTextOverlay:color
+   * GstBaseTextOverlay:color:
    *
    * Color of the rendered text.
-   *
-   * Since: 0.10.31
-   **/
+   */
   g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_COLOR,
       g_param_spec_uint ("color", "Color",
           "Color to use for text (big-endian ARGB).", 0, G_MAXUINT32,
           DEFAULT_PROP_COLOR,
           G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE | G_PARAM_STATIC_STRINGS));
   /**
-   * GstTextOverlay:outline-color
+   * GstTextOverlay:outline-color:
    *
    * Color of the outline of the rendered text.
-   *
-   * Since: 0.10.35
-   **/
+   */
   g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_OUTLINE_COLOR,
       g_param_spec_uint ("outline-color", "Text Outline Color",
           "Color to use for outline the text (big-endian ARGB).", 0,
@@ -477,25 +479,21 @@
           G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE | G_PARAM_STATIC_STRINGS));
 
   /**
-   * GstBaseTextOverlay:line-alignment
+   * GstBaseTextOverlay:line-alignment:
    *
    * Alignment of text lines relative to each other (for multi-line text)
-   *
-   * Since: 0.10.15
-   **/
+   */
   g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_LINE_ALIGNMENT,
       g_param_spec_enum ("line-alignment", "line alignment",
           "Alignment of text lines relative to each other.",
           GST_TYPE_BASE_TEXT_OVERLAY_LINE_ALIGN, DEFAULT_PROP_LINE_ALIGNMENT,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
   /**
-   * GstBaseTextOverlay:silent
+   * GstBaseTextOverlay:silent:
    *
    * If set, no text is rendered. Useful to switch off text rendering
    * temporarily without removing the textoverlay element from the pipeline.
-   *
-   * Since: 0.10.15
-   **/
+   */
   /* FIXME 0.11: rename to "visible" or "text-visible" or "render-text" */
   g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_SILENT,
       g_param_spec_boolean ("silent", "silent",
@@ -503,14 +501,12 @@
           DEFAULT_PROP_SILENT,
           G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE | G_PARAM_STATIC_STRINGS));
   /**
-   * GstBaseTextOverlay:wait-text
+   * GstBaseTextOverlay:wait-text:
    *
    * If set, the video will block until a subtitle is received on the text pad.
    * If video and subtitles are sent in sync, like from the same demuxer, this
    * property should be set.
-   *
-   * Since: 0.10.20
-   **/
+   */
   g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_WAIT_TEXT,
       g_param_spec_boolean ("wait-text", "Wait Text",
           "Whether to wait for subtitles",
@@ -646,6 +642,7 @@
 
   overlay->text_buffer = NULL;
   overlay->text_linked = FALSE;
+
   g_mutex_init (&overlay->lock);
   g_cond_init (&overlay->cond);
   gst_segment_init (&overlay->segment, GST_FORMAT_TIME);
@@ -756,6 +753,20 @@
 }
 
 static gboolean
+gst_base_text_overlay_can_handle_caps (GstCaps * incaps)
+{
+  gboolean ret;
+  GstCaps *caps;
+  static GstStaticCaps static_caps = GST_STATIC_CAPS (BASE_TEXT_OVERLAY_CAPS);
+
+  caps = gst_static_caps_get (&static_caps);
+  ret = gst_caps_is_subset (incaps, caps);
+  gst_caps_unref (caps);
+
+  return ret;
+}
+
+static gboolean
 gst_base_text_overlay_setcaps (GstBaseTextOverlay * overlay, GstCaps * caps)
 {
   GstVideoInfo info;
@@ -775,6 +786,13 @@
     GST_BASE_TEXT_OVERLAY_LOCK (overlay);
     g_mutex_lock (GST_BASE_TEXT_OVERLAY_GET_CLASS (overlay)->pango_lock);
     gst_base_text_overlay_negotiate (overlay);
+
+    if (!overlay->attach_compo_to_buffer &&
+        !gst_base_text_overlay_can_handle_caps (caps)) {
+      GST_DEBUG_OBJECT (overlay, "unsupported caps %" GST_PTR_FORMAT, caps);
+      ret = FALSE;
+    }
+
     gst_base_text_overlay_update_wrap_mode (overlay);
     g_mutex_unlock (GST_BASE_TEXT_OVERLAY_GET_CLASS (overlay)->pango_lock);
     GST_BASE_TEXT_OVERLAY_UNLOCK (overlay);
@@ -981,7 +999,7 @@
       GstCaps *filter, *caps;
 
       gst_query_parse_caps (query, &filter);
-      caps = gst_base_text_overlay_getcaps (pad, overlay, filter);
+      caps = gst_base_text_overlay_get_src_caps (pad, overlay, filter);
       gst_query_set_caps_result (query, caps);
       gst_caps_unref (caps);
       ret = TRUE;
@@ -1056,37 +1074,209 @@
   return ret;
 }
 
+/**
+ * gst_base_text_overlay_add_feature_and_intersect:
+ *
+ * Creates a new #GstCaps containing the (given caps +
+ * given caps feature) + (given caps intersected by the
+ * given filter).
+ *
+ * Returns: the new #GstCaps
+ */
 static GstCaps *
-gst_base_text_overlay_getcaps (GstPad * pad, GstBaseTextOverlay * overlay,
-    GstCaps * filter)
+gst_base_text_overlay_add_feature_and_intersect (GstCaps * caps,
+    const gchar * feature, GstCaps * filter)
 {
-  GstPad *otherpad;
-  GstCaps *caps;
+  int i, caps_size;
+  GstCaps *new_caps;
+
+  new_caps = gst_caps_copy (caps);
+
+  caps_size = gst_caps_get_size (new_caps);
+  for (i = 0; i < caps_size; i++) {
+    GstCapsFeatures *features = gst_caps_get_features (new_caps, i);
+    gst_caps_features_add (features, feature);
+  }
+
+  gst_caps_append (new_caps, gst_caps_intersect_full (caps,
+          filter, GST_CAPS_INTERSECT_FIRST));
+
+  return new_caps;
+}
+
+/**
+ * gst_base_text_overlay_intersect_by_feature:
+ *
+ * Creates a new #GstCaps based on the following filtering rule.
+ *
+ * For each individual caps contained in given caps, if the
+ * caps uses the given caps feature, keep a version of the caps
+ * with the feature and an another one without. Otherwise, intersect
+ * the caps with the given filter.
+ *
+ * Returns: the new #GstCaps
+ */
+static GstCaps *
+gst_base_text_overlay_intersect_by_feature (GstCaps * caps,
+    const gchar * feature, GstCaps * filter)
+{
+  int i, caps_size;
+  GstCaps *new_caps;
+
+  new_caps = gst_caps_new_empty ();
+
+  caps_size = gst_caps_get_size (caps);
+  for (i = 0; i < caps_size; i++) {
+    GstStructure *caps_structure = gst_caps_get_structure (caps, i);
+    GstCapsFeatures *caps_features =
+        gst_caps_features_copy (gst_caps_get_features (caps, i));
+    GstCaps *filtered_caps;
+    GstCaps *simple_caps =
+        gst_caps_new_full (gst_structure_copy (caps_structure), NULL);
+    gst_caps_set_features (simple_caps, 0, caps_features);
+
+    if (gst_caps_features_contains (caps_features, feature)) {
+      gst_caps_append (new_caps, gst_caps_copy (simple_caps));
+
+      gst_caps_features_remove (caps_features, feature);
+      filtered_caps = gst_caps_ref (simple_caps);
+    } else {
+      filtered_caps = gst_caps_intersect_full (simple_caps, filter,
+          GST_CAPS_INTERSECT_FIRST);
+    }
+
+    gst_caps_unref (simple_caps);
+    gst_caps_append (new_caps, filtered_caps);
+  }
+
+  return new_caps;
+}
+
+static GstCaps *
+gst_base_text_overlay_get_videosink_caps (GstPad * pad,
+    GstBaseTextOverlay * overlay, GstCaps * filter)
+{
+  GstPad *srcpad = overlay->srcpad;
+  GstCaps *peer_caps = NULL, *caps = NULL, *overlay_filter = NULL;
 
   if (G_UNLIKELY (!overlay))
     return gst_pad_get_pad_template_caps (pad);
 
-  if (pad == overlay->srcpad)
-    otherpad = overlay->video_sinkpad;
-  else
-    otherpad = overlay->srcpad;
+  if (filter) {
+    /* filter caps + composition feature + filter caps
+     * filtered by the software caps. */
+    GstCaps *sw_caps = gst_static_caps_get (&sw_template_caps);
+    overlay_filter = gst_base_text_overlay_add_feature_and_intersect (filter,
+        GST_CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION, sw_caps);
+    gst_caps_unref (sw_caps);
 
-  /* we can do what the peer can */
-  caps = gst_pad_peer_query_caps (otherpad, filter);
-  if (caps) {
-    GstCaps *temp, *templ;
+    GST_DEBUG_OBJECT (overlay, "overlay filter %" GST_PTR_FORMAT,
+        overlay_filter);
+  }
 
-    GST_DEBUG_OBJECT (pad, "peer caps  %" GST_PTR_FORMAT, caps);
+  peer_caps = gst_pad_peer_query_caps (srcpad, overlay_filter);
 
-    /* filtered against our padtemplate */
-    templ = gst_pad_get_pad_template_caps (otherpad);
-    GST_DEBUG_OBJECT (pad, "our template  %" GST_PTR_FORMAT, templ);
-    temp = gst_caps_intersect_full (caps, templ, GST_CAPS_INTERSECT_FIRST);
-    GST_DEBUG_OBJECT (pad, "intersected %" GST_PTR_FORMAT, temp);
-    gst_caps_unref (caps);
-    gst_caps_unref (templ);
-    /* this is what we can do */
-    caps = temp;
+  if (overlay_filter)
+    gst_caps_unref (overlay_filter);
+
+  if (peer_caps) {
+
+    GST_DEBUG_OBJECT (pad, "peer caps  %" GST_PTR_FORMAT, peer_caps);
+
+    if (gst_caps_is_any (peer_caps)) {
+
+      /* if peer returns ANY caps, return filtered src pad template caps */
+      caps = gst_caps_copy (gst_pad_get_pad_template_caps (srcpad));
+      if (filter) {
+        GstCaps *intersection = gst_caps_intersect_full (filter, caps,
+            GST_CAPS_INTERSECT_FIRST);
+        gst_caps_unref (caps);
+        caps = intersection;
+      }
+
+    } else {
+
+      /* duplicate caps which contains the composition into one version with
+       * the meta and one without. Filter the other caps by the software caps */
+      GstCaps *sw_caps = gst_static_caps_get (&sw_template_caps);
+      caps = gst_base_text_overlay_intersect_by_feature (peer_caps,
+          GST_CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION, sw_caps);
+      gst_caps_unref (sw_caps);
+    }
+
+    gst_caps_unref (peer_caps);
+
+  } else {
+    /* no peer, our padtemplate is enough then */
+    caps = gst_pad_get_pad_template_caps (pad);
+    if (filter) {
+      GstCaps *intersection;
+
+      intersection =
+          gst_caps_intersect_full (filter, caps, GST_CAPS_INTERSECT_FIRST);
+      gst_caps_unref (caps);
+      caps = intersection;
+    }
+  }
+
+  GST_DEBUG_OBJECT (overlay, "returning  %" GST_PTR_FORMAT, caps);
+
+  return caps;
+}
+
+static GstCaps *
+gst_base_text_overlay_get_src_caps (GstPad * pad, GstBaseTextOverlay * overlay,
+    GstCaps * filter)
+{
+  GstPad *sinkpad = overlay->video_sinkpad;
+  GstCaps *peer_caps = NULL, *caps = NULL, *overlay_filter = NULL;
+
+  if (G_UNLIKELY (!overlay))
+    return gst_pad_get_pad_template_caps (pad);
+
+  if (filter) {
+    /* duplicate filter caps which contains the composition into one version
+     * with the meta and one without. Filter the other caps by the software
+     * caps */
+    GstCaps *sw_caps = gst_static_caps_get (&sw_template_caps);
+    overlay_filter =
+        gst_base_text_overlay_intersect_by_feature (filter,
+        GST_CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION, sw_caps);
+    gst_caps_unref (sw_caps);
+  }
+
+  peer_caps = gst_pad_peer_query_caps (sinkpad, overlay_filter);
+
+  if (overlay_filter)
+    gst_caps_unref (overlay_filter);
+
+  if (peer_caps) {
+
+    GST_DEBUG_OBJECT (pad, "peer caps  %" GST_PTR_FORMAT, peer_caps);
+
+    if (gst_caps_is_any (peer_caps)) {
+
+      /* if peer returns ANY caps, return filtered sink pad template caps */
+      caps = gst_caps_copy (gst_pad_get_pad_template_caps (sinkpad));
+      if (filter) {
+        GstCaps *intersection = gst_caps_intersect_full (filter, caps,
+            GST_CAPS_INTERSECT_FIRST);
+        gst_caps_unref (caps);
+        caps = intersection;
+      }
+
+    } else {
+
+      /* return upstream caps + composition feature + upstream caps
+       * filtered by the software caps. */
+      GstCaps *sw_caps = gst_static_caps_get (&sw_template_caps);
+      caps = gst_base_text_overlay_add_feature_and_intersect (peer_caps,
+          GST_CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION, sw_caps);
+      gst_caps_unref (sw_caps);
+    }
+
+    gst_caps_unref (peer_caps);
+
   } else {
     /* no peer, our padtemplate is enough then */
     caps = gst_pad_get_pad_template_caps (pad);
@@ -1942,7 +2132,7 @@
       GstCaps *filter, *caps;
 
       gst_query_parse_caps (query, &filter);
-      caps = gst_base_text_overlay_getcaps (pad, overlay, filter);
+      caps = gst_base_text_overlay_get_videosink_caps (pad, overlay, filter);
       gst_query_set_caps_result (query, caps);
       gst_caps_unref (caps);
       ret = TRUE;
@@ -2126,7 +2316,7 @@
       GST_DEBUG_OBJECT (overlay, "estimating duration based on framerate");
       stop = start + gst_util_uint64_scale_int (GST_SECOND, fps_denom, fps_num);
     } else {
-      GST_WARNING_OBJECT (overlay, "no duration, assuming minimal duration");
+      GST_LOG_OBJECT (overlay, "no duration, assuming minimal duration");
       stop = start + 1;         /* we need to assume some interval */
     }
     gst_caps_unref (caps);
@@ -2208,11 +2398,11 @@
       /* If timestamp and duration are valid */
       if (valid_text_time) {
         text_running_time =
-            gst_segment_to_running_time (&overlay->segment, GST_FORMAT_TIME,
-            text_start);
+            gst_segment_to_running_time (&overlay->text_segment,
+            GST_FORMAT_TIME, text_start);
         text_running_time_end =
-            gst_segment_to_running_time (&overlay->segment, GST_FORMAT_TIME,
-            text_end);
+            gst_segment_to_running_time (&overlay->text_segment,
+            GST_FORMAT_TIME, text_end);
       }
 
       GST_LOG_OBJECT (overlay, "T: %" GST_TIME_FORMAT " - %" GST_TIME_FORMAT,
diff --git a/ext/pango/gsttextrender.c b/ext/pango/gsttextrender.c
index 853e7e3..be7df62 100644
--- a/ext/pango/gsttextrender.c
+++ b/ext/pango/gsttextrender.c
@@ -521,6 +521,11 @@
     goto done;
   }
 
+  if (render->segment_event) {
+    gst_pad_push_event (render->srcpad, render->segment_event);
+    render->segment_event = NULL;
+  }
+
   GST_DEBUG ("Allocating buffer WxH = %dx%d", render->width, render->height);
   outbuf = gst_buffer_new_and_alloc (render->width * render->height * 4);
 
@@ -589,11 +594,38 @@
   return ret;
 }
 
+static gboolean
+gst_text_render_event (GstPad * pad, GstObject * parent, GstEvent * event)
+{
+  GstTextRender *render = GST_TEXT_RENDER (parent);
+  gboolean ret = TRUE;
+
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_SEGMENT:
+    {
+      if (gst_pad_has_current_caps (render->srcpad)) {
+        ret = gst_pad_push_event (render->srcpad, event);
+      } else {
+        gst_event_replace (&render->segment_event, event);
+        gst_event_unref (event);
+      }
+      break;
+    }
+    default:
+      ret = gst_pad_push_event (render->srcpad, event);
+      break;
+  }
+
+  return ret;
+}
+
 static void
 gst_text_render_finalize (GObject * object)
 {
   GstTextRender *render = GST_TEXT_RENDER (object);
 
+  gst_event_replace (&render->segment_event, NULL);
+
   g_free (render->text_image);
 
   if (render->layout)
@@ -613,6 +645,9 @@
   gst_object_unref (template);
   gst_pad_set_chain_function (render->sinkpad,
       GST_DEBUG_FUNCPTR (gst_text_render_chain));
+  gst_pad_set_event_function (render->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_text_render_event));
+
   gst_element_add_pad (GST_ELEMENT (render), render->sinkpad);
 
   /* source */
diff --git a/ext/pango/gsttextrender.h b/ext/pango/gsttextrender.h
index 66d37db..90ac089 100644
--- a/ext/pango/gsttextrender.h
+++ b/ext/pango/gsttextrender.h
@@ -89,6 +89,8 @@
 
     gint xpad;
     gint ypad;
+
+    GstEvent             *segment_event;
 };
 
 struct _GstTextRenderClass {
diff --git a/ext/theora/Makefile.in b/ext/theora/Makefile.in
index 35c7ad7..c26aaaa 100644
--- a/ext/theora/Makefile.in
+++ b/ext/theora/Makefile.in
@@ -88,7 +88,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -429,9 +428,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/ext/theora/gsttheoradec.c b/ext/theora/gsttheoradec.c
index 827d24f..11ecffd 100644
--- a/ext/theora/gsttheoradec.c
+++ b/ext/theora/gsttheoradec.c
@@ -36,8 +36,6 @@
  * ]| This example pipeline will decode an ogg stream and decodes the theora video. Refer to
  * the theoraenc example to create the ogg file.
  * </refsect2>
- *
- * Last reviewed on 2006-03-01 (0.10.4)
  */
 
 #ifdef HAVE_CONFIG_H
@@ -207,6 +205,7 @@
   /* input is packetized,
    * but is not marked that way so data gets parsed and keyframes marked */
   gst_video_decoder_set_packetized (GST_VIDEO_DECODER (dec), FALSE);
+  gst_video_decoder_set_needs_format (GST_VIDEO_DECODER (dec), TRUE);
 }
 
 static gboolean
@@ -398,9 +397,6 @@
   GstVideoFormat fmt;
   GstVideoInfo *info;
 
-  if (!dec->input_state)
-    return GST_FLOW_NOT_NEGOTIATED;
-
   info = &dec->input_state->info;
 
   GST_DEBUG_OBJECT (dec, "fps %d/%d, PAR %d/%d",
diff --git a/ext/theora/gsttheoraenc.c b/ext/theora/gsttheoraenc.c
index f830ecc..48b3533 100644
--- a/ext/theora/gsttheoraenc.c
+++ b/ext/theora/gsttheoraenc.c
@@ -50,8 +50,6 @@
  * ogg container. Refer to the theoradec documentation to decode the create
  * stream.
  * </refsect2>
- *
- * Last reviewed on 2006-03-01 (0.10.4)
  */
 
 #ifdef HAVE_CONFIG_H
@@ -364,6 +362,13 @@
   ogg_uint32_t keyframe_force;
   int rate_flags;
 
+
+  if (enc->input_state == NULL) {
+    GST_INFO_OBJECT (enc, "Not configured yet, returning FALSE");
+
+    return FALSE;
+  }
+
   GST_OBJECT_LOCK (enc);
   enc->info.target_bitrate = enc->video_bitrate;
   enc->info.quality = enc->video_quality;
@@ -881,7 +886,8 @@
   running_time =
       gst_segment_to_running_time (&GST_VIDEO_ENCODER_INPUT_SEGMENT (enc),
       GST_FORMAT_TIME, timestamp);
-  g_return_val_if_fail (running_time >= 0 || timestamp < 0, GST_FLOW_ERROR);
+  g_return_val_if_fail (running_time >= 0 || timestamp == GST_CLOCK_TIME_NONE,
+      GST_FLOW_ERROR);
 
   GST_OBJECT_LOCK (enc);
   if (enc->bitrate_changed) {
diff --git a/ext/theora/gsttheoraparse.c b/ext/theora/gsttheoraparse.c
index e4c0f8f..f3558e8 100644
--- a/ext/theora/gsttheoraparse.c
+++ b/ext/theora/gsttheoraparse.c
@@ -52,8 +52,6 @@
  * ]| This pipeline shows remuxing. video-remuxed.ogg might not be exactly the same
  * as video.ogg, but they should produce exactly the same decoded data.
  * </refsect2>
- *
- * Last reviewed on 2008-05-28 (0.10.20)
  */
 
 /* FIXME 0.11: suppress warnings for deprecated API such as GValueArray
@@ -126,8 +124,6 @@
    * GstTheoraParse:sychronization-points
    *
    * An array of (granuletime, buffertime) pairs
-   *
-   * Since: 0.10.10
    */
   g_object_class_install_property (gobject_class, PROP_SYNCHRONIZATION_POINTS,
       g_param_spec_value_array ("synchronization-points",
diff --git a/ext/vorbis/Makefile.in b/ext/vorbis/Makefile.in
index ff60ec6..0d8b22a 100644
--- a/ext/vorbis/Makefile.in
+++ b/ext/vorbis/Makefile.in
@@ -90,7 +90,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -455,9 +454,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/ext/vorbis/gstvorbisdec.c b/ext/vorbis/gstvorbisdec.c
index 7273d2c..3a5a334 100644
--- a/ext/vorbis/gstvorbisdec.c
+++ b/ext/vorbis/gstvorbisdec.c
@@ -32,8 +32,6 @@
  * gst-launch -v filesrc location=sine.ogg ! oggdemux ! vorbisdec ! audioconvert ! alsasink
  * ]| Decode an Ogg/Vorbis. To create an Ogg/Vorbis file refer to the documentation of vorbisenc.
  * </refsect2>
- *
- * Last reviewed on 2006-03-01 (0.10.4)
  */
 
 #ifdef HAVE_CONFIG_H
diff --git a/ext/vorbis/gstvorbisenc.c b/ext/vorbis/gstvorbisenc.c
index 655dd15..6579321 100644
--- a/ext/vorbis/gstvorbisenc.c
+++ b/ext/vorbis/gstvorbisenc.c
@@ -36,8 +36,6 @@
  * gst-launch -v alsasrc ! audioconvert ! vorbisenc ! oggmux ! filesink location=alsasrc.ogg
  * ]| Record from a sound card using ALSA and encode to Ogg/Vorbis.
  * </refsect2>
- *
- * Last reviewed on 2006-03-01 (0.10.4)
  */
 #ifdef HAVE_CONFIG_H
 #include "config.h"
diff --git a/ext/vorbis/gstvorbisparse.c b/ext/vorbis/gstvorbisparse.c
index eff07b8..57b792c 100644
--- a/ext/vorbis/gstvorbisparse.c
+++ b/ext/vorbis/gstvorbisparse.c
@@ -45,8 +45,6 @@
  * ]| This pipeline shows remuxing. sine-remuxed.ogg might not be exactly the same
  * as sine.ogg, but they should produce exactly the same decoded data.
  * </refsect2>
- *
- * Last reviewed on 2006-04-01 (0.10.4.1)
  */
 
 #ifdef HAVE_CONFIG_H
diff --git a/gst-libs/Makefile.in b/gst-libs/Makefile.in
index 1765a26..0fd0bc3 100644
--- a/gst-libs/Makefile.in
+++ b/gst-libs/Makefile.in
@@ -85,7 +85,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -398,9 +397,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/gst-libs/gst/Makefile.in b/gst-libs/gst/Makefile.in
index edfdac4..cc389b0 100644
--- a/gst-libs/gst/Makefile.in
+++ b/gst-libs/gst/Makefile.in
@@ -87,7 +87,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -401,9 +400,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/gst-libs/gst/allocators/Makefile.in b/gst-libs/gst/allocators/Makefile.in
index d9b8ab5..c4ab6b1 100644
--- a/gst-libs/gst/allocators/Makefile.in
+++ b/gst-libs/gst/allocators/Makefile.in
@@ -91,7 +91,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -416,9 +415,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/gst-libs/gst/app/Makefile.in b/gst-libs/gst/app/Makefile.in
index fc9a810..23370fa 100644
--- a/gst-libs/gst/app/Makefile.in
+++ b/gst-libs/gst/app/Makefile.in
@@ -100,7 +100,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -427,9 +426,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/gst-libs/gst/app/gstappsink.c b/gst-libs/gst/app/gstappsink.c
index be6237f..ecec3b5 100644
--- a/gst-libs/gst/app/gstappsink.c
+++ b/gst-libs/gst/app/gstappsink.c
@@ -57,8 +57,6 @@
  *
  * The eos signal can also be used to be informed when the EOS state is reached
  * to avoid polling.
- *
- * Last reviewed on 2008-12-17 (0.10.22)
  */
 
 #ifdef HAVE_CONFIG_H
diff --git a/gst-libs/gst/app/gstappsrc.c b/gst-libs/gst/app/gstappsrc.c
index 34b8a16..a3be774 100644
--- a/gst-libs/gst/app/gstappsrc.c
+++ b/gst-libs/gst/app/gstappsrc.c
@@ -84,8 +84,6 @@
  * gst_app_src_end_of_stream() or emit the end-of-stream action signal. After
  * this call, no more buffers can be pushed into appsrc until a flushing seek
  * happened or the state of the appsrc has gone through READY.
- *
- * Last reviewed on 2008-12-17 (0.10.10)
  */
 
 #ifdef HAVE_CONFIG_H
diff --git a/gst-libs/gst/audio/Makefile.in b/gst-libs/gst/audio/Makefile.in
index 0175e5c..03225eb 100644
--- a/gst-libs/gst/audio/Makefile.in
+++ b/gst-libs/gst/audio/Makefile.in
@@ -122,7 +122,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -471,9 +470,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/gst-libs/gst/audio/audio-channels.c b/gst-libs/gst/audio/audio-channels.c
index 2f6f7a5..e5d2a55 100644
--- a/gst-libs/gst/audio/audio-channels.c
+++ b/gst-libs/gst/audio/audio-channels.c
@@ -17,10 +17,10 @@
  * Boston, MA 02110-1301, USA.
  */
 /**
- * SECTION:gstaudio
- * @short_description: Support library for audio elements
+ * SECTION:gstaudiochannels
+ * @short_description: Support library for audio channel handling
  *
- * This library contains some helper functions for audio elements.
+ * This library contains some helper functions for multichannel audio.
  */
 
 #ifdef HAVE_CONFIG_H
diff --git a/gst-libs/gst/audio/audio-format.c b/gst-libs/gst/audio/audio-format.c
index 25628dd..c7f5d46 100644
--- a/gst-libs/gst/audio/audio-format.c
+++ b/gst-libs/gst/audio/audio-format.c
@@ -27,6 +27,12 @@
 
 #include "gstaudiopack.h"
 
+#ifdef HAVE_ORC
+#include <orc/orcfunctions.h>
+#else
+#define orc_memset memset
+#endif
+
 #if G_BYTE_ORDER == G_LITTLE_ENDIAN
 # define audio_orc_unpack_s16le audio_orc_unpack_s16
 # define audio_orc_unpack_s16be audio_orc_unpack_s16_swap
@@ -410,7 +416,7 @@
 {
   g_return_val_if_fail (format != GST_AUDIO_FORMAT_UNKNOWN, NULL);
 
-  if (format >= G_N_ELEMENTS (formats))
+  if ((gint) format >= G_N_ELEMENTS (formats))
     return NULL;
 
   return GST_AUDIO_FORMAT_INFO_NAME (&formats[format]);
@@ -427,7 +433,7 @@
 const GstAudioFormatInfo *
 gst_audio_format_get_info (GstAudioFormat format)
 {
-  g_return_val_if_fail (format < G_N_ELEMENTS (formats), NULL);
+  g_return_val_if_fail ((gint) format < G_N_ELEMENTS (formats), NULL);
 
   return &formats[format];
 }
@@ -453,14 +459,41 @@
   if (info->flags & GST_AUDIO_FORMAT_FLAG_FLOAT ||
       info->flags & GST_AUDIO_FORMAT_FLAG_SIGNED) {
     /* float or signed always 0 */
-    memset (dest, 0, length);
+    orc_memset (dest, 0, length);
   } else {
     gint i, j, bps = info->width >> 3;
 
     switch (bps) {
       case 1:
-        memset (dest, info->silence[0], length);
+        orc_memset (dest, info->silence[0], length);
         break;
+      case 2:{
+#if G_BYTE_ORDER == G_LITTLE_ENDIAN
+        guint16 silence = GST_READ_UINT16_LE (info->silence);
+#else
+        guint16 silence = GST_READ_UINT16_BE (info->silence);
+#endif
+        audio_orc_splat_u16 (dest, silence, length / bps);
+        break;
+      }
+      case 4:{
+#if G_BYTE_ORDER == G_LITTLE_ENDIAN
+        guint32 silence = GST_READ_UINT32_LE (info->silence);
+#else
+        guint32 silence = GST_READ_UINT32_BE (info->silence);
+#endif
+        audio_orc_splat_u32 (dest, silence, length / bps);
+        break;
+      }
+      case 8:{
+#if G_BYTE_ORDER == G_LITTLE_ENDIAN
+        guint64 silence = GST_READ_UINT64_LE (info->silence);
+#else
+        guint64 silence = GST_READ_UINT64_BE (info->silence);
+#endif
+        audio_orc_splat_u64 (dest, silence, length / bps);
+        break;
+      }
       default:
         for (i = 0; i < length; i += bps) {
           for (j = 0; j < bps; j++)
diff --git a/gst-libs/gst/audio/audio-info.c b/gst-libs/gst/audio/audio-info.c
index 2cae7e1..26b96dd 100644
--- a/gst-libs/gst/audio/audio-info.c
+++ b/gst-libs/gst/audio/audio-info.c
@@ -96,8 +96,6 @@
   memset (info, 0, sizeof (GstAudioInfo));
 
   info->finfo = gst_audio_format_get_info (GST_AUDIO_FORMAT_UNKNOWN);
-
-  memset (&info->position, 0xff, sizeof (info->position));
 }
 
 /**
@@ -109,6 +107,8 @@
  * @position: the channel positions
  *
  * Set the default info for the audio info of @format and @rate and @channels.
+ *
+ * Note: This initializes @info first, no values are preserved.
  */
 void
 gst_audio_info_set_format (GstAudioInfo * info, GstAudioFormat format,
@@ -121,6 +121,8 @@
   g_return_if_fail (format != GST_AUDIO_FORMAT_UNKNOWN);
   g_return_if_fail (channels <= 64 || position == NULL);
 
+  gst_audio_info_init (info);
+
   finfo = gst_audio_format_get_info (format);
 
   info->flags = 0;
@@ -179,6 +181,8 @@
   guint64 channel_mask;
   gint i;
   GstAudioChannelPosition position[64];
+  GstAudioFlags flags;
+  GstAudioLayout layout;
 
   g_return_val_if_fail (info != NULL, FALSE);
   g_return_val_if_fail (caps != NULL, FALSE);
@@ -186,7 +190,7 @@
 
   GST_DEBUG ("parsing caps %" GST_PTR_FORMAT, caps);
 
-  info->flags = 0;
+  flags = 0;
 
   str = gst_caps_get_structure (caps, 0);
 
@@ -203,9 +207,9 @@
   if (!(s = gst_structure_get_string (str, "layout")))
     goto no_layout;
   if (g_str_equal (s, "interleaved"))
-    info->layout = GST_AUDIO_LAYOUT_INTERLEAVED;
+    layout = GST_AUDIO_LAYOUT_INTERLEAVED;
   else if (g_str_equal (s, "non-interleaved"))
-    info->layout = GST_AUDIO_LAYOUT_NON_INTERLEAVED;
+    layout = GST_AUDIO_LAYOUT_NON_INTERLEAVED;
   else
     goto unknown_layout;
 
@@ -215,7 +219,7 @@
     goto no_channels;
 
   if (!gst_structure_get (str, "channel-mask", GST_TYPE_BITMASK, &channel_mask,
-          NULL)) {
+          NULL) || (channel_mask == 0 && channels == 1)) {
     if (channels == 1) {
       position[0] = GST_AUDIO_CHANNEL_POSITION_MONO;
     } else if (channels == 2) {
@@ -225,7 +229,7 @@
       goto no_channel_mask;
     }
   } else if (channel_mask == 0) {
-    info->flags |= GST_AUDIO_FLAG_UNPOSITIONED;
+    flags |= GST_AUDIO_FLAG_UNPOSITIONED;
     for (i = 0; i < MIN (64, channels); i++)
       position[i] = GST_AUDIO_CHANNEL_POSITION_NONE;
   } else {
@@ -237,6 +241,9 @@
   gst_audio_info_set_format (info, format, rate, channels,
       (channels > 64) ? NULL : position);
 
+  info->flags = flags;
+  info->layout = layout;
+
   return TRUE;
 
   /* ERROR */
diff --git a/gst-libs/gst/audio/audio.c b/gst-libs/gst/audio/audio.c
index 9745abb..de713d7 100644
--- a/gst-libs/gst/audio/audio.c
+++ b/gst-libs/gst/audio/audio.c
@@ -71,7 +71,7 @@
     /* No timestamp - assume the buffer is completely in the segment */
     return buffer;
 
-  /* Get copies of the buffer metadata to change later. 
+  /* Get copies of the buffer metadata to change later.
    * Calculate the missing values for the calculations,
    * they won't be changed later though. */
 
diff --git a/gst-libs/gst/audio/gstaudiobasesink.c b/gst-libs/gst/audio/gstaudiobasesink.c
index c5e1de4..26f7134 100644
--- a/gst-libs/gst/audio/gstaudiobasesink.c
+++ b/gst-libs/gst/audio/gstaudiobasesink.c
@@ -28,8 +28,6 @@
  * This is the base class for audio sinks. Subclasses need to implement the
  * ::create_ringbuffer vmethod. This base class will then take care of
  * writing samples to the ringbuffer, synchronisation, clipping and flushing.
- *
- * Last reviewed on 2006-09-27 (0.10.12)
  */
 
 #include <string.h>
@@ -80,7 +78,7 @@
   LAST_SIGNAL
 };
 
-/* FIXME: 0.11, store the buffer_time and latency_time in nanoseconds */
+/* FIXME: 2.0, store the buffer_time and latency_time in nanoseconds */
 #define DEFAULT_BUFFER_TIME     ((200 * GST_MSECOND) / GST_USECOND)
 #define DEFAULT_LATENCY_TIME    ((10 * GST_MSECOND) / GST_USECOND)
 #define DEFAULT_PROVIDE_CLOCK   TRUE
@@ -90,7 +88,7 @@
 #define DEFAULT_CAN_ACTIVATE_PULL FALSE
 
 /* when timestamps drift for more than 40ms we resync. This should
- * be anough to compensate for timestamp rounding errors. */
+ * be enough to compensate for timestamp rounding errors. */
 #define DEFAULT_ALIGNMENT_THRESHOLD   (40 * GST_MSECOND)
 
 /* when clock slaving drift for more than 40ms we resync. This is
@@ -152,10 +150,6 @@
 static void gst_audio_base_sink_get_property (GObject * object, guint prop_id,
     GValue * value, GParamSpec * pspec);
 
-#if 0
-static GstStateChangeReturn gst_audio_base_sink_async_play (GstBaseSink *
-    basesink);
-#endif
 static GstStateChangeReturn gst_audio_base_sink_change_state (GstElement *
     element, GstStateChange transition);
 static gboolean gst_audio_base_sink_activate_pull (GstBaseSink * basesink,
@@ -164,6 +158,7 @@
     query);
 
 static GstClock *gst_audio_base_sink_provide_clock (GstElement * elem);
+static inline void gst_audio_base_sink_reset_sync (GstAudioBaseSink * sink);
 static GstClockTime gst_audio_base_sink_get_time (GstClock * clock,
     GstAudioBaseSink * sink);
 static void gst_audio_base_sink_callback (GstAudioRingBuffer * rbuf,
@@ -215,8 +210,8 @@
 
   g_object_class_install_property (gobject_class, PROP_LATENCY_TIME,
       g_param_spec_int64 ("latency-time", "Latency Time",
-          "The minimum amount of data to write in each iteration in microseconds",
-          1, G_MAXINT64, DEFAULT_LATENCY_TIME,
+          "The minimum amount of data to write in each iteration "
+          "in microseconds", 1, G_MAXINT64, DEFAULT_LATENCY_TIME,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
   g_object_class_install_property (gobject_class, PROP_PROVIDE_CLOCK,
@@ -226,7 +221,7 @@
 
   g_object_class_install_property (gobject_class, PROP_SLAVE_METHOD,
       g_param_spec_enum ("slave-method", "Slave Method",
-          "Algorithm to use to match the rate of the masterclock",
+          "Algorithm used to match the rate of the masterclock",
           GST_TYPE_AUDIO_BASE_SINK_SLAVE_METHOD, DEFAULT_SLAVE_METHOD,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
@@ -450,7 +445,7 @@
             GST_OBJECT_UNLOCK (basesink);
 
             GST_DEBUG_OBJECT (basesink,
-                "we are not yet negotiated, can't report latency yet");
+                "we are not negotiated, can't report latency yet");
             res = FALSE;
             goto done;
           }
@@ -469,6 +464,7 @@
            * amount of time. */
           max_latency = (max_l == -1) ? -1 : (base_latency + max_l);
 
+
           GST_DEBUG_OBJECT (basesink,
               "peer min %" GST_TIME_FORMAT ", our min latency: %"
               GST_TIME_FORMAT, GST_TIME_ARGS (min_l),
@@ -561,7 +557,8 @@
  *
  * Controls whether @sink will provide a clock or not. If @provide is %TRUE,
  * gst_element_provide_clock() will return a clock that reflects the datarate
- * of @sink. If @provide is %FALSE, gst_element_provide_clock() will return NULL.
+ * of @sink. If @provide is %FALSE, gst_element_provide_clock() will return
+ * NULL.
  */
 void
 gst_audio_base_sink_set_provide_clock (GstAudioBaseSink * sink,
@@ -891,10 +888,7 @@
     goto acquire_error;
 
   /* We need to resync since the ringbuffer restarted */
-  sink->priv->avg_skew = -1;
-  sink->next_sample = -1;
-  sink->priv->eos_time = -1;
-  sink->priv->discont_time = -1;
+  gst_audio_base_sink_reset_sync (sink);
 
   if (bsink->pad_mode == GST_PAD_MODE_PUSH) {
     GST_DEBUG_OBJECT (sink, "activate ringbuffer");
@@ -909,7 +903,7 @@
       crate_denom);
 
   /* calculate actual latency and buffer times.
-   * FIXME: In 0.11, store the latency_time internally in ns */
+   * FIXME: In 2.0, store the latency_time internally in ns */
   spec->latency_time = gst_util_uint64_scale (spec->segsize,
       (GST_SECOND / GST_USECOND), spec->info.rate * spec->info.bpf);
 
@@ -966,6 +960,16 @@
   return caps;
 }
 
+static inline void
+gst_audio_base_sink_reset_sync (GstAudioBaseSink * sink)
+{
+  sink->next_sample = -1;
+  sink->priv->eos_time = -1;
+  sink->priv->discont_time = -1;
+  sink->priv->avg_skew = -1;
+  sink->priv->last_align = 0;
+}
+
 static void
 gst_audio_base_sink_get_times (GstBaseSink * bsink, GstBuffer * buffer,
     GstClockTime * start, GstClockTime * end)
@@ -1086,10 +1090,7 @@
       break;
     case GST_EVENT_FLUSH_STOP:
       /* always resync on sample after a flush */
-      sink->priv->avg_skew = -1;
-      sink->next_sample = -1;
-      sink->priv->eos_time = -1;
-      sink->priv->discont_time = -1;
+      gst_audio_base_sink_reset_sync (sink);
       if (sink->ringbuffer)
         gst_audio_ring_buffer_set_flushing (sink->ringbuffer, FALSE);
       break;
@@ -1123,8 +1124,8 @@
 static guint64
 gst_audio_base_sink_get_offset (GstAudioBaseSink * sink)
 {
-  guint64 sample;
-  gint writeseg, segdone, sps;
+  guint64 sample, sps;
+  gint writeseg, segdone;
   gint diff;
 
   /* assume we can append to the previous sample */
@@ -1285,14 +1286,20 @@
     GST_WARNING_OBJECT (sink,
         "correct clock skew %" G_GINT64_FORMAT " > %" G_GINT64_FORMAT,
         sink->priv->avg_skew, mdrift2);
-    cexternal = cexternal > mdrift ? cexternal - mdrift : 0;
-    sink->priv->avg_skew -= mdrift;
+
+    if (sink->priv->avg_skew > (2 * mdrift)) {
+      cexternal -= sink->priv->avg_skew;
+      sink->priv->avg_skew = 0;
+    } else {
+      cexternal = cexternal > mdrift ? cexternal - mdrift : 0;
+      sink->priv->avg_skew -= mdrift;
+    }
 
     driftsamples = (sink->ringbuffer->spec.info.rate * mdrift) / GST_SECOND;
     last_align = sink->priv->last_align;
 
-    /* if we were aligning in the wrong direction or we aligned more than what we
-     * will correct, resync */
+    /* if we were aligning in the wrong direction or we aligned more than what
+     * we will correct, resync */
     if (last_align < 0 || last_align > driftsamples)
       sink->next_sample = -1;
 
@@ -1307,14 +1314,20 @@
     GST_WARNING_OBJECT (sink,
         "correct clock skew %" G_GINT64_FORMAT " < %" G_GINT64_FORMAT,
         sink->priv->avg_skew, -mdrift2);
-    cexternal += mdrift;
-    sink->priv->avg_skew += mdrift;
+
+    if (sink->priv->avg_skew < (2 * -mdrift)) {
+      cexternal -= sink->priv->avg_skew;
+      sink->priv->avg_skew = 0;
+    } else {
+      cexternal += mdrift;
+      sink->priv->avg_skew += mdrift;
+    }
 
     driftsamples = (sink->ringbuffer->spec.info.rate * mdrift) / GST_SECOND;
     last_align = sink->priv->last_align;
 
-    /* if we were aligning in the wrong direction or we aligned more than what we
-     * will correct, resync */
+    /* if we were aligning in the wrong direction or we aligned more than what
+     * we will correct, resync */
     if (last_align > 0 || -last_align > driftsamples)
       sink->next_sample = -1;
 
@@ -1493,10 +1506,7 @@
       break;
   }
 
-  sink->priv->avg_skew = -1;
-  sink->next_sample = -1;
-  sink->priv->eos_time = -1;
-  sink->priv->discont_time = -1;
+  gst_audio_base_sink_reset_sync (sink);
 
   return GST_FLOW_OK;
 
@@ -1528,28 +1538,24 @@
   gint64 sample_diff;
   gint64 max_sample_diff;
   gint segdone = g_atomic_int_get (&ringbuf->segdone) - ringbuf->segbase;
-  gint64 samples_done = segdone * ringbuf->samples_per_seg;
+  gint64 samples_done = segdone * (gint64) ringbuf->samples_per_seg;
   gint64 headroom = sample_offset - samples_done;
   gboolean allow_align = TRUE;
   gboolean discont = FALSE;
   gint rate;
 
-  /* now try to align the sample to the previous one, first see how big the
-   * difference is. */
-  if (sample_offset >= sink->next_sample)
-    sample_diff = sample_offset - sink->next_sample;
-  else
-    sample_diff = sink->next_sample - sample_offset;
+  /* now try to align the sample to the previous one. */
 
-  rate = GST_AUDIO_INFO_RATE (&ringbuf->spec.info);
+  /* calc align with previous sample and determine how big the
+   * difference is. */
+  align = sink->next_sample - sample_offset;
+  sample_diff = ABS (align);
 
   /* calculate the max allowed drift in units of samples. */
+  rate = GST_AUDIO_INFO_RATE (&ringbuf->spec.info);
   max_sample_diff = gst_util_uint64_scale_int (sink->priv->alignment_threshold,
       rate, GST_SECOND);
 
-  /* calc align with previous sample */
-  align = sink->next_sample - sample_offset;
-
   /* don't align if it means writing behind the read-segment */
   if (sample_diff > headroom && align < 0)
     allow_align = FALSE;
@@ -1785,8 +1791,8 @@
   }
 
   if (G_UNLIKELY (sync_offset != 0)) {
-    /* compensate for ts-offset and delay we know this will not underflow because we
-     * clipped above. */
+    /* compensate for ts-offset and delay. We know this will not underflow
+     * because we clipped above. */
     GST_DEBUG_OBJECT (sink,
         "compensating for sync-offset %" GST_TIME_FORMAT,
         GST_TIME_ARGS (sync_offset));
@@ -1876,8 +1882,9 @@
   }
 
   /* always resync after a discont */
-  if (G_UNLIKELY (GST_BUFFER_FLAG_IS_SET (buf, GST_BUFFER_FLAG_DISCONT))) {
-    GST_DEBUG_OBJECT (sink, "resync after discont");
+  if (G_UNLIKELY (GST_BUFFER_FLAG_IS_SET (buf, GST_BUFFER_FLAG_DISCONT) ||
+          GST_BUFFER_FLAG_IS_SET (buf, GST_BUFFER_FLAG_RESYNC))) {
+    GST_DEBUG_OBJECT (sink, "resync after discont/resync");
     goto no_align;
   }
 
@@ -2029,9 +2036,9 @@
  * gst_audio_base_sink_create_ringbuffer:
  * @sink: a #GstAudioBaseSink.
  *
- * Create and return the #GstAudioRingBuffer for @sink. This function will call the
- * ::create_ringbuffer vmethod and will set @sink as the parent of the returned
- * buffer (see gst_object_set_parent()).
+ * Create and return the #GstAudioRingBuffer for @sink. This function will
+ * call the ::create_ringbuffer vmethod and will set @sink as the parent of
+ * the returned buffer (see gst_object_set_parent()).
  *
  * Returns: (transfer none): The new ringbuffer of @sink.
  */
@@ -2067,7 +2074,7 @@
   GST_PAD_STREAM_LOCK (basesink->sinkpad);
 
   /* would be nice to arrange for pad_alloc_buffer to return data -- as it is we
-     will copy twice, once into data, once into DMA */
+   * will copy twice, once into data, once into DMA */
   GST_LOG_OBJECT (basesink, "pulling %u bytes offset %" G_GUINT64_FORMAT
       " to fill audio buffer", len, basesink->offset);
   ret =
@@ -2168,27 +2175,6 @@
   return ret;
 }
 
-#if 0
-/* should be called with the LOCK */
-static GstStateChangeReturn
-gst_audio_base_sink_async_play (GstBaseSink * basesink)
-{
-  GstAudioBaseSink *sink;
-
-  sink = GST_AUDIO_BASE_SINK (basesink);
-
-  GST_DEBUG_OBJECT (sink, "ringbuffer may start now");
-  sink->priv->sync_latency = TRUE;
-  gst_audio_ring_buffer_may_start (sink->ringbuffer, TRUE);
-  if (basesink->pad_mode == GST_PAD_MODE_PULL) {
-    /* we always start the ringbuffer in pull mode immediatly */
-    gst_audio_ring_buffer_start (sink->ringbuffer);
-  }
-
-  return GST_STATE_CHANGE_SUCCESS;
-}
-#endif
-
 static GstStateChangeReturn
 gst_audio_base_sink_change_state (GstElement * element,
     GstStateChange transition)
@@ -2206,10 +2192,7 @@
         goto open_failed;
       break;
     case GST_STATE_CHANGE_READY_TO_PAUSED:
-      sink->next_sample = -1;
-      sink->priv->last_align = -1;
-      sink->priv->eos_time = -1;
-      sink->priv->discont_time = -1;
+      gst_audio_base_sink_reset_sync (sink);
       gst_audio_ring_buffer_set_flushing (sink->ringbuffer, FALSE);
       gst_audio_ring_buffer_may_start (sink->ringbuffer, FALSE);
 
@@ -2283,7 +2266,7 @@
       gst_audio_ring_buffer_release (sink->ringbuffer);
       break;
     case GST_STATE_CHANGE_READY_TO_NULL:
-      /* we release again here because the aqcuire happens when setting the
+      /* we release again here because the acquire happens when setting the
        * caps, which happens before we commit the state to PAUSED and thus the
        * PAUSED->READY state change (see above, where we release the ringbuffer)
        * might not be called when we get here. */
diff --git a/gst-libs/gst/audio/gstaudiobasesrc.c b/gst-libs/gst/audio/gstaudiobasesrc.c
index 53c32b0..38b22b5 100644
--- a/gst-libs/gst/audio/gstaudiobasesrc.c
+++ b/gst-libs/gst/audio/gstaudiobasesrc.c
@@ -2,7 +2,7 @@
  * Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu>
  *                    2005 Wim Taymans <wim@fluendo.com>
  *
- * gstaudiobasesrc.c: 
+ * gstaudiobasesrc.c:
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -28,8 +28,6 @@
  * This is the base class for audio sources. Subclasses need to implement the
  * ::create_ringbuffer vmethod. This base class will then take care of
  * reading samples from the ringbuffer, synchronisation and flushing.
- *
- * Last reviewed on 2006-09-27 (0.10.12)
  */
 
 #ifdef HAVE_CONFIG_H
@@ -50,7 +48,7 @@
 gst_audio_base_src_slave_method_get_type (void)
 {
   static volatile gsize slave_method_type = 0;
-  /* FIXME 0.11: nick should be "retimestamp" not "re-timestamp" */
+  /* FIXME 2.0: nick should be "retimestamp" not "re-timestamp" */
   static const GEnumValue slave_method[] = {
     {GST_AUDIO_BASE_SRC_SLAVE_RESAMPLE,
         "GST_AUDIO_BASE_SRC_SLAVE_RESAMPLE", "resample"},
@@ -85,6 +83,7 @@
   LAST_SIGNAL
 };
 
+/* FIXME: 2.0, handle BUFFER_TIME and LATENCY in nanoseconds */
 #define DEFAULT_BUFFER_TIME     ((200 * GST_MSECOND) / GST_USECOND)
 #define DEFAULT_LATENCY_TIME    ((10 * GST_MSECOND) / GST_USECOND)
 #define DEFAULT_ACTUAL_BUFFER_TIME     -1
@@ -165,18 +164,19 @@
   gobject_class->get_property = gst_audio_base_src_get_property;
   gobject_class->dispose = gst_audio_base_src_dispose;
 
+  /* FIXME: 2.0, handle BUFFER_TIME and LATENCY in nanoseconds */
   g_object_class_install_property (gobject_class, PROP_BUFFER_TIME,
       g_param_spec_int64 ("buffer-time", "Buffer Time",
-          "Size of audio buffer in microseconds, this is the maximum amount "
+          "Size of audio buffer in microseconds. This is the maximum amount "
           "of data that is buffered in the device and the maximum latency that "
           "the source reports", 1, G_MAXINT64, DEFAULT_BUFFER_TIME,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
   g_object_class_install_property (gobject_class, PROP_LATENCY_TIME,
       g_param_spec_int64 ("latency-time", "Latency Time",
-          "The minimum amount of data to read in each iteration in microseconds, "
-          "this is the minimum latency that the source reports", 1,
-          G_MAXINT64, DEFAULT_LATENCY_TIME,
+          "The minimum amount of data to read in each iteration in "
+          "microseconds. This is the minimum latency that the source reports",
+          1, G_MAXINT64, DEFAULT_LATENCY_TIME,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
   /**
@@ -208,7 +208,7 @@
 
   g_object_class_install_property (gobject_class, PROP_SLAVE_METHOD,
       g_param_spec_enum ("slave-method", "Slave Method",
-          "Algorithm to use to match the rate of the masterclock",
+          "Algorithm used to match the rate of the masterclock",
           GST_TYPE_AUDIO_BASE_SRC_SLAVE_METHOD, DEFAULT_SLAVE_METHOD,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
@@ -245,7 +245,7 @@
   else
     GST_OBJECT_FLAG_UNSET (audiobasesrc, GST_ELEMENT_FLAG_PROVIDE_CLOCK);
   audiobasesrc->priv->slave_method = DEFAULT_SLAVE_METHOD;
-  /* reset blocksize we use latency time to calculate a more useful 
+  /* reset blocksize we use latency time to calculate a more useful
    * value based on negotiated format. */
   GST_BASE_SRC (audiobasesrc)->blocksize = 0;
 
@@ -357,7 +357,7 @@
  * @src: a #GstAudioBaseSrc
  * @provide: new state
  *
- * Controls whether @src will provide a clock or not. If @provide is %TRUE, 
+ * Controls whether @src will provide a clock or not. If @provide is %TRUE,
  * gst_element_provide_clock() will return a clock that reflects the datarate
  * of @src. If @provide is %FALSE, gst_element_provide_clock() will return NULL.
  */
@@ -599,7 +599,7 @@
 gst_audio_base_src_get_times (GstBaseSrc * bsrc, GstBuffer * buffer,
     GstClockTime * start, GstClockTime * end)
 {
-  /* no need to sync to a clock here, we schedule the samples based
+  /* No need to sync to a clock here. We schedule the samples based
    * on our own clock for the moment. */
   *start = GST_CLOCK_TIME_NONE;
   *end = GST_CLOCK_TIME_NONE;
@@ -651,7 +651,7 @@
     }
     case GST_QUERY_SCHEDULING:
     {
-      /* We allow limited pull base operation. Basically pulling can be
+      /* We allow limited pull base operation. Basically, pulling can be
        * done on any number of bytes as long as the offset is -1 or
        * sequentially increasing. */
       gst_query_set_scheduling (query, GST_SCHEDULING_FLAG_SEQUENTIAL, 1, -1,
@@ -705,7 +705,7 @@
   return res;
 }
 
-/* get the next offset in the ringbuffer for reading samples.
+/* Get the next offset in the ringbuffer for reading samples.
  * If the next sample is too far away, this function will position itself to the
  * next most recent sample, creating discontinuity */
 static guint64
@@ -732,9 +732,9 @@
      * the sample should be read from. */
     readseg = sample / sps;
 
-    /* see how far away it is from the read segment, normally segdone (where new
-     * data is written in the ringbuffer) is bigger than readseg (where we are
-     * reading). */
+    /* See how far away it is from the read segment. Normally, segdone (where
+     * new data is written in the ringbuffer) is bigger than readseg
+     * (where we are reading). */
     diff = segdone - readseg;
     if (diff >= segtotal) {
       GST_DEBUG_OBJECT (src, "dropped, align to segment %d", segdone);
@@ -800,7 +800,7 @@
     if (src->next_sample != -1 && sample != src->next_sample)
       goto wrong_offset;
   } else {
-    /* calculate the sequentially next sample we need to read. This can jump and
+    /* Calculate the sequentially-next sample we need to read. This can jump and
      * create a DISCONT. */
     sample = gst_audio_base_src_get_offset (src);
   }
@@ -879,8 +879,8 @@
     /* we are slaved, check how to handle this */
     switch (src->priv->slave_method) {
       case GST_AUDIO_BASE_SRC_SLAVE_RESAMPLE:
-        /* not implemented, use skew algorithm. This algorithm should
-         * work on the readout pointer and produces more or less samples based
+        /* Not implemented, use skew algorithm. This algorithm should
+         * work on the readout pointer and produce more or less samples based
          * on the clock drift */
       case GST_AUDIO_BASE_SRC_SLAVE_SKEW:
       {
@@ -899,7 +899,8 @@
         segments_written = g_atomic_int_get (&ringbuffer->segdone);
 
         /* subtract the base to segments_written to get the number of the
-           last written segment in the ringbuffer (one segment written = segment 0) */
+         * last written segment in the ringbuffer
+         * (one segment written = segment 0) */
         last_written_segment = segments_written - ringbuffer->segbase - 1;
 
         /* samples per segment */
@@ -914,7 +915,8 @@
         /* get the running_time */
         running_time = current_time - base_time;
 
-        /* the running_time converted to a sample (relative to the ringbuffer) */
+        /* the running_time converted to a sample
+         * (relative to the ringbuffer) */
         running_time_sample =
             gst_util_uint64_scale_int (running_time, rate, GST_SECOND);
 
@@ -924,7 +926,8 @@
         /* the segment currently read from the ringbuffer */
         last_read_segment = sample / sps;
 
-        /* the skew we have between running_time and the ringbuffertime (last written to) */
+        /* the skew we have between running_time and the ringbuffertime
+         * (last written to) */
         segment_skew = running_time_segment - last_written_segment;
 
         GST_DEBUG_OBJECT (bsrc,
@@ -987,9 +990,10 @@
       {
         GstClockTime base_time, latency;
 
-        /* We are slaved to another clock, take running time of the pipeline clock and
-         * timestamp against it. Somebody else in the pipeline should figure out the
-         * clock drift. We keep the duration we calculated above. */
+        /* We are slaved to another clock. Take running time of the pipeline
+         * clock and timestamp against it. Somebody else in the pipeline should
+         * figure out the clock drift. We keep the duration we calculated
+         * above. */
         timestamp = gst_clock_get_time (clock);
         base_time = GST_ELEMENT_CAST (src)->base_time;
 
@@ -1015,7 +1019,8 @@
       /* the read method returned a timestamp so we use this instead */
       timestamp = rb_timestamp;
     } else {
-      /* to get the timestamp against the clock we also need to add our offset */
+      /* to get the timestamp against the clock we also need to add our
+       * offset */
       timestamp = gst_audio_clock_adjust (clock, timestamp);
     }
 
@@ -1089,9 +1094,9 @@
  * gst_audio_base_src_create_ringbuffer:
  * @src: a #GstAudioBaseSrc.
  *
- * Create and return the #GstAudioRingBuffer for @src. This function will call the
- * ::create_ringbuffer vmethod and will set @src as the parent of the returned
- * buffer (see gst_object_set_parent()).
+ * Create and return the #GstAudioRingBuffer for @src. This function will call
+ * the ::create_ringbuffer vmethod and will set @src as the parent of the
+ * returned buffer (see gst_object_set_parent()).
  *
  * Returns: (transfer none): The new ringbuffer of @src.
  */
diff --git a/gst-libs/gst/audio/gstaudiocdsrc.c b/gst-libs/gst/audio/gstaudiocdsrc.c
index 716ea0a..a384d42 100644
--- a/gst-libs/gst/audio/gstaudiocdsrc.c
+++ b/gst-libs/gst/audio/gstaudiocdsrc.c
@@ -519,7 +519,7 @@
       goto wrong_value;
     }
     src_format = GST_FORMAT_DEFAULT;
-    src_val = src->priv->tracks[src_val].start * SAMPLES_PER_SECTOR;
+    src_val = src->priv->tracks[src_val].start * (gint64) SAMPLES_PER_SECTOR;
   } else if (src_format == sector_format) {
     src_format = GST_FORMAT_DEFAULT;
     src_val = src_val * SAMPLES_PER_SECTOR;
@@ -1102,7 +1102,7 @@
  * gst_audio_cd_src_add_track:
  * @src: a #GstAudioCdSrc
  * @track: address of #GstAudioCdSrcTrack to add
- * 
+ *
  * CDDA sources use this function from their start vfunc to announce the
  * available data and audio tracks to the base source class. The caller
  * should allocate @track on the stack, the base source will do a shallow
@@ -1189,13 +1189,23 @@
   gchar *ptr;
   gchar tmp[9];
   gulong i;
+  unsigned int last_audio_track;
   guint leadout_sector;
   gsize digest_len;
 
   s = g_string_new (NULL);
 
+  /* MusicBrainz doesn't consider trailing data tracks
+   * data tracks up front stay, since the disc has to start with 1 */
+  last_audio_track = 0;
+  for (i = 0; i < src->priv->num_tracks; i++) {
+    if (src->priv->tracks[i].is_audio) {
+      last_audio_track = src->priv->tracks[i].num;
+    }
+  }
+
   leadout_sector =
-      src->priv->tracks[src->priv->num_tracks - 1].end + 1 + CD_MSF_OFFSET;
+      src->priv->tracks[last_audio_track - 1].end + 1 + CD_MSF_OFFSET;
 
   /* generate SHA digest */
   sha = g_checksum_new (G_CHECKSUM_SHA1);
@@ -1203,10 +1213,8 @@
   g_string_append_printf (s, "%02X", src->priv->tracks[0].num);
   g_checksum_update (sha, (guchar *) tmp, 2);
 
-  g_snprintf (tmp, sizeof (tmp), "%02X",
-      src->priv->tracks[src->priv->num_tracks - 1].num);
-  g_string_append_printf (s, " %02X",
-      src->priv->tracks[src->priv->num_tracks - 1].num);
+  g_snprintf (tmp, sizeof (tmp), "%02X", last_audio_track);
+  g_string_append_printf (s, " %02X", last_audio_track);
   g_checksum_update (sha, (guchar *) tmp, 2);
 
   g_snprintf (tmp, sizeof (tmp), "%08X", leadout_sector);
@@ -1214,7 +1222,7 @@
   g_checksum_update (sha, (guchar *) tmp, 8);
 
   for (i = 0; i < 99; i++) {
-    if (i < src->priv->num_tracks) {
+    if (i < last_audio_track) {
       guint frame_offset = src->priv->tracks[i].start + CD_MSF_OFFSET;
 
       g_snprintf (tmp, sizeof (tmp), "%08X", frame_offset);
diff --git a/gst-libs/gst/audio/gstaudioclock.c b/gst-libs/gst/audio/gstaudioclock.c
index a996b2d..70f5074 100644
--- a/gst-libs/gst/audio/gstaudioclock.c
+++ b/gst-libs/gst/audio/gstaudioclock.c
@@ -29,8 +29,6 @@
  * simply need to provide a function that returns the current clock time.
  *
  * This object is internally used to implement the clock in #GstAudioBaseSink.
- *
- * Last reviewed on 2006-09-27 (0.10.12)
  */
 
 #ifdef HAVE_CONFIG_H
diff --git a/gst-libs/gst/audio/gstaudiodecoder.c b/gst-libs/gst/audio/gstaudiodecoder.c
index 3504678..c3acb2e 100644
--- a/gst-libs/gst/audio/gstaudiodecoder.c
+++ b/gst-libs/gst/audio/gstaudiodecoder.c
@@ -192,6 +192,9 @@
   gboolean eos;
   gboolean sync;
 
+  gboolean had_output_data;
+  gboolean had_input_data;
+
   /* misc */
   gint delay;
 
@@ -558,6 +561,8 @@
 
     gst_audio_info_init (&dec->priv->ctx.info);
     dec->priv->ctx.max_errors = GST_AUDIO_DECODER_MAX_ERRORS;
+    dec->priv->ctx.had_output_data = FALSE;
+    dec->priv->ctx.had_input_data = FALSE;
   }
 
   g_queue_foreach (&dec->priv->frames, (GFunc) gst_buffer_unref, NULL);
@@ -908,6 +913,8 @@
     return GST_FLOW_OK;
   }
 
+  ctx->had_output_data = TRUE;
+
   GST_LOG_OBJECT (dec,
       "clipping buffer of size %" G_GSIZE_FORMAT " with ts %" GST_TIME_FORMAT
       ", duration %" GST_TIME_FORMAT, gst_buffer_get_size (buf),
@@ -1760,6 +1767,8 @@
 
   GST_AUDIO_DECODER_STREAM_LOCK (dec);
 
+  dec->priv->ctx.had_input_data = TRUE;
+
   if (GST_BUFFER_FLAG_IS_SET (buffer, GST_BUFFER_FLAG_DISCONT)) {
     gint64 samples, ts;
 
@@ -1824,13 +1833,16 @@
 
   caps = gst_pad_get_current_caps (dec->srcpad);
   if (caps && !gst_audio_info_from_caps (&dec->priv->ctx.info, caps))
-    return FALSE;
+    goto caps_error;
+  if (caps)
+    gst_caps_unref (caps);
 
   caps = gst_pad_get_allowed_caps (dec->srcpad);
   if (!caps || gst_caps_is_empty (caps) || gst_caps_is_any (caps))
-    return FALSE;
+    goto caps_error;
 
   /* before fixating, try to use whatever upstream provided */
+  caps = gst_caps_make_writable (caps);
   caps_size = gst_caps_get_size (caps);
   if (dec->priv->ctx.input_caps) {
     GstCaps *sinkcaps = dec->priv->ctx.input_caps;
@@ -1887,7 +1899,7 @@
   }
 
   if (!caps || !gst_audio_info_from_caps (&dec->priv->ctx.info, caps))
-    return FALSE;
+    goto caps_error;
 
   GST_INFO_OBJECT (dec,
       "Chose default caps %" GST_PTR_FORMAT " for initial gap", caps);
@@ -1900,6 +1912,13 @@
   }
 
   return TRUE;
+
+caps_error:
+  {
+    if (caps)
+      gst_caps_unref (caps);
+    return FALSE;
+  }
 }
 
 static gboolean
@@ -2083,6 +2102,12 @@
       gst_audio_decoder_drain (dec);
       GST_AUDIO_DECODER_STREAM_UNLOCK (dec);
 
+      if (dec->priv->ctx.had_input_data && !dec->priv->ctx.had_output_data) {
+        GST_ELEMENT_ERROR (dec, STREAM, DECODE,
+            ("No valid frames decoded before end of stream"),
+            ("no valid frames found"));
+      }
+
       /* Forward EOS because no buffer or serialized event will come after
        * EOS and nothing could trigger another _finish_frame() call. */
       ret = gst_audio_decoder_push_event (dec, event);
@@ -2767,9 +2792,10 @@
     GST_WARNING_OBJECT (dec, "error: %s", dbg);
   dec->priv->error_count += weight;
   dec->priv->discont = TRUE;
-  if (dec->priv->ctx.max_errors < dec->priv->error_count) {
-    gst_element_message_full (GST_ELEMENT (dec), GST_MESSAGE_ERROR,
-        domain, code, txt, dbg, file, function, line);
+  if (dec->priv->ctx.max_errors >= 0
+      && dec->priv->ctx.max_errors < dec->priv->error_count) {
+    gst_element_message_full (GST_ELEMENT (dec), GST_MESSAGE_ERROR, domain,
+        code, txt, dbg, file, function, line);
     return GST_FLOW_ERROR;
   } else {
     g_free (txt);
@@ -2870,8 +2896,9 @@
  * @num: max tolerated errors
  *
  * Sets numbers of tolerated decoder errors, where a tolerated one is then only
- * warned about, but more than tolerated will lead to fatal error.  Default
- * is set to GST_AUDIO_DECODER_MAX_ERRORS.
+ * warned about, but more than tolerated will lead to fatal error. You can set
+ * -1 for never returning fatal errors. Default is set to
+ * GST_AUDIO_DECODER_MAX_ERRORS.
  */
 void
 gst_audio_decoder_set_max_errors (GstAudioDecoder * dec, gint num)
@@ -3175,7 +3202,7 @@
 {
   gboolean result;
 
-  g_return_val_if_fail (GST_IS_AUDIO_DECODER (dec), 0);
+  g_return_val_if_fail (GST_IS_AUDIO_DECODER (dec), FALSE);
 
   GST_OBJECT_LOCK (dec);
   result = dec->priv->needs_format;
diff --git a/gst-libs/gst/audio/gstaudiodecoder.h b/gst-libs/gst/audio/gstaudiodecoder.h
index 419f025..8f97fe8 100644
--- a/gst-libs/gst/audio/gstaudiodecoder.h
+++ b/gst-libs/gst/audio/gstaudiodecoder.h
@@ -268,7 +268,7 @@
                                        GstEvent *event);
 
   gboolean      (*open)               (GstAudioDecoder *dec);
-  
+
   gboolean      (*close)              (GstAudioDecoder *dec);
 
   gboolean      (*negotiate)          (GstAudioDecoder *dec);
diff --git a/gst-libs/gst/audio/gstaudioencoder.c b/gst-libs/gst/audio/gstaudioencoder.c
index cea186d..71beafc 100644
--- a/gst-libs/gst/audio/gstaudioencoder.c
+++ b/gst-libs/gst/audio/gstaudioencoder.c
@@ -89,7 +89,7 @@
  * </orderedlist>
  *
  * Subclass is responsible for providing pad template caps for
- * source and sink pads. The pads need to be named "sink" and "src". It also 
+ * source and sink pads. The pads need to be named "sink" and "src". It also
  * needs to set the fixed caps on srcpad, when the format is ensured.  This
  * is typically when base class calls subclass' @set_format function, though
  * it might be delayed until calling @gst_audio_encoder_finish_frame.
@@ -579,6 +579,50 @@
   return gst_pad_push_event (enc->srcpad, event);
 }
 
+static inline void
+gst_audio_encoder_push_pending_events (GstAudioEncoder * enc)
+{
+  GstAudioEncoderPrivate *priv = enc->priv;
+
+  if (priv->pending_events) {
+    GList *pending_events, *l;
+
+    pending_events = priv->pending_events;
+    priv->pending_events = NULL;
+
+    GST_DEBUG_OBJECT (enc, "Pushing pending events");
+    for (l = pending_events; l; l = l->next)
+      gst_audio_encoder_push_event (enc, l->data);
+    g_list_free (pending_events);
+  }
+}
+
+static inline void
+gst_audio_encoder_check_and_push_ending_tags (GstAudioEncoder * enc)
+{
+  if (G_UNLIKELY (enc->priv->tags && enc->priv->tags_changed)) {
+#if 0
+    GstCaps *caps;
+#endif
+
+    /* add codec info to pending tags */
+#if 0
+    if (!enc->priv->tags)
+      enc->priv->tags = gst_tag_list_new ();
+    enc->priv->tags = gst_tag_list_make_writable (enc->priv->tags);
+    caps = gst_pad_get_current_caps (enc->srcpad);
+    gst_pb_utils_add_codec_description_to_tag_list (enc->priv->tags,
+        GST_TAG_CODEC, caps);
+    gst_pb_utils_add_codec_description_to_tag_list (enc->priv->tags,
+        GST_TAG_AUDIO_CODEC, caps);
+#endif
+    GST_DEBUG_OBJECT (enc, "sending tags %" GST_PTR_FORMAT, enc->priv->tags);
+    gst_audio_encoder_push_event (enc,
+        gst_event_new_tag (gst_tag_list_ref (enc->priv->tags)));
+    enc->priv->tags_changed = FALSE;
+  }
+}
+
 /**
  * gst_audio_encoder_finish_frame:
  * @enc: a #GstAudioEncoder
@@ -642,40 +686,10 @@
   if (G_LIKELY (buf))
     priv->got_data = TRUE;
 
-  if (priv->pending_events) {
-    GList *pending_events, *l;
-
-    pending_events = priv->pending_events;
-    priv->pending_events = NULL;
-
-    GST_DEBUG_OBJECT (enc, "Pushing pending events");
-    for (l = pending_events; l; l = l->next)
-      gst_audio_encoder_push_event (enc, l->data);
-    g_list_free (pending_events);
-  }
+  gst_audio_encoder_push_pending_events (enc);
 
   /* send after pending events, which likely includes newsegment event */
-  if (G_UNLIKELY (enc->priv->tags && enc->priv->tags_changed)) {
-#if 0
-    GstCaps *caps;
-#endif
-
-    /* add codec info to pending tags */
-#if 0
-    if (!enc->priv->tags)
-      enc->priv->tags = gst_tag_list_new ();
-    enc->priv->tags = gst_tag_list_make_writable (enc->priv->tags);
-    caps = gst_pad_get_current_caps (enc->srcpad);
-    gst_pb_utils_add_codec_description_to_tag_list (enc->priv->tags,
-        GST_TAG_CODEC, caps);
-    gst_pb_utils_add_codec_description_to_tag_list (enc->priv->tags,
-        GST_TAG_AUDIO_CODEC, caps);
-#endif
-    GST_DEBUG_OBJECT (enc, "sending tags %" GST_PTR_FORMAT, enc->priv->tags);
-    gst_audio_encoder_push_event (enc,
-        gst_event_new_tag (gst_tag_list_ref (enc->priv->tags)));
-    enc->priv->tags_changed = FALSE;
-  }
+  gst_audio_encoder_check_and_push_ending_tags (enc);
 
   /* remove corresponding samples from input */
   if (samples < 0)
@@ -800,6 +814,7 @@
       GST_BUFFER_TIMESTAMP (buf) = priv->base_ts +
           gst_util_uint64_scale (priv->samples - ctx->lookahead, GST_SECOND,
           ctx->info.rate);
+      GST_BUFFER_DTS (buf) = GST_BUFFER_TIMESTAMP (buf);
       GST_DEBUG_OBJECT (enc, "out samples %d", samples);
       if (G_LIKELY (samples > 0)) {
         priv->samples += samples;
@@ -1485,6 +1500,11 @@
     case GST_EVENT_EOS:
       GST_AUDIO_ENCODER_STREAM_LOCK (enc);
       gst_audio_encoder_drain (enc);
+
+      /* check for pending events and tags */
+      gst_audio_encoder_push_pending_events (enc);
+      gst_audio_encoder_check_and_push_ending_tags (enc);
+
       GST_AUDIO_ENCODER_STREAM_UNLOCK (enc);
 
       /* forward immediately because no buffer or serialized event
@@ -2639,7 +2659,7 @@
  * Negotiate with downstream elements to currently configured #GstCaps.
  * Unmark GST_PAD_FLAG_NEED_RECONFIGURE in any case. But mark it again if
  * negotiate fails.
- * 
+ *
  * Returns: #TRUE if the negotiation succeeded, else #FALSE.
  */
 gboolean
diff --git a/gst-libs/gst/audio/gstaudiofilter.c b/gst-libs/gst/audio/gstaudiofilter.c
index 71aed1b..94b3a58 100644
--- a/gst-libs/gst/audio/gstaudiofilter.c
+++ b/gst-libs/gst/audio/gstaudiofilter.c
@@ -36,8 +36,6 @@
  * #GstBaseTransformClass.transform_ip() and/or
  * #GstBaseTransformClass.transform()
  * virtual functions in their class_init function.
- *
- * Last reviewed on 2007-02-03 (0.10.11.1)
  */
 
 #ifdef HAVE_CONFIG_H
diff --git a/gst-libs/gst/audio/gstaudiometa.c b/gst-libs/gst/audio/gstaudiometa.c
index b0a1845..0cadc02 100644
--- a/gst-libs/gst/audio/gstaudiometa.c
+++ b/gst-libs/gst/audio/gstaudiometa.c
@@ -17,6 +17,15 @@
  * Boston, MA 02110-1301, USA.
  */
 
+/**
+ * SECTION:gstaudiometa
+ * @short_description: Buffer metadata for audio downmix matrix handling
+ *
+ * #GstAudioDownmixMeta defines an audio downmix matrix to be send along with
+ * audio buffers. These functions in this module help to create and attach the
+ * meta as well as extracting it.
+ */
+
 #include <string.h>
 
 #include "gstaudiometa.h"
@@ -103,7 +112,7 @@
  * @to_channels: The number of channels of the destination
  * @matrix: The matrix coefficients.
  *
- * Attaches GstAudioDownmixMeta metadata to @buffer with the given parameters.
+ * Attaches #GstAudioDownmixMeta metadata to @buffer with the given parameters.
  *
  * @matrix is an two-dimensional array of @to_channels times @from_channels
  * coefficients, i.e. the i-th output channels is constructed by multiplicating
diff --git a/gst-libs/gst/audio/gstaudiopack-dist.c b/gst-libs/gst/audio/gstaudiopack-dist.c
index f7ae993..004e203 100644
--- a/gst-libs/gst/audio/gstaudiopack-dist.c
+++ b/gst-libs/gst/audio/gstaudiopack-dist.c
@@ -167,6 +167,9 @@
     const gdouble * ORC_RESTRICT s1, int n);
 void audio_orc_pack_f64_swap (gdouble * ORC_RESTRICT d1,
     const gdouble * ORC_RESTRICT s1, int n);
+void audio_orc_splat_u16 (guint16 * ORC_RESTRICT d1, int p1, int n);
+void audio_orc_splat_u32 (guint32 * ORC_RESTRICT d1, int p1, int n);
+void audio_orc_splat_u64 (guint64 * ORC_RESTRICT d1, int p1, int n);
 
 
 /* begin Orc C target preamble */
@@ -192,8 +195,8 @@
 #define ORC_CLAMP_UW(x) ORC_CLAMP(x,ORC_UW_MIN,ORC_UW_MAX)
 #define ORC_CLAMP_SL(x) ORC_CLAMP(x,ORC_SL_MIN,ORC_SL_MAX)
 #define ORC_CLAMP_UL(x) ORC_CLAMP(x,ORC_UL_MIN,ORC_UL_MAX)
-#define ORC_SWAP_W(x) ((((x)&0xff)<<8) | (((x)&0xff00)>>8))
-#define ORC_SWAP_L(x) ((((x)&0xff)<<24) | (((x)&0xff00)<<8) | (((x)&0xff0000)>>8) | (((x)&0xff000000)>>24))
+#define ORC_SWAP_W(x) ((((x)&0xffU)<<8) | (((x)&0xff00U)>>8))
+#define ORC_SWAP_L(x) ((((x)&0xffU)<<24) | (((x)&0xff00U)<<8) | (((x)&0xff0000U)>>8) | (((x)&0xff000000U)>>24))
 #define ORC_SWAP_Q(x) ((((x)&ORC_UINT64_C(0xff))<<56) | (((x)&ORC_UINT64_C(0xff00))<<40) | (((x)&ORC_UINT64_C(0xff0000))<<24) | (((x)&ORC_UINT64_C(0xff000000))<<8) | (((x)&ORC_UINT64_C(0xff00000000))>>8) | (((x)&ORC_UINT64_C(0xff0000000000))>>24) | (((x)&ORC_UINT64_C(0xff000000000000))>>40) | (((x)&ORC_UINT64_C(0xff00000000000000))>>56))
 #define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset)))
 #define ORC_DENORMAL(x) ((x) & ((((x)&0x7f800000) == 0) ? 0xff800000 : 0xffffffff))
@@ -4642,3 +4645,305 @@
   func (ex);
 }
 #endif
+
+
+/* audio_orc_splat_u16 */
+#ifdef DISABLE_ORC
+void
+audio_orc_splat_u16 (guint16 * ORC_RESTRICT d1, int p1, int n)
+{
+  int i;
+  orc_union16 *ORC_RESTRICT ptr0;
+  orc_union16 var32;
+  orc_union16 var33;
+
+  ptr0 = (orc_union16 *) d1;
+
+  /* 0: loadpw */
+  var32.i = p1;
+
+  for (i = 0; i < n; i++) {
+    /* 1: copyw */
+    var33.i = var32.i;
+    /* 2: storew */
+    ptr0[i] = var33;
+  }
+
+}
+
+#else
+static void
+_backup_audio_orc_splat_u16 (OrcExecutor * ORC_RESTRICT ex)
+{
+  int i;
+  int n = ex->n;
+  orc_union16 *ORC_RESTRICT ptr0;
+  orc_union16 var32;
+  orc_union16 var33;
+
+  ptr0 = (orc_union16 *) ex->arrays[0];
+
+  /* 0: loadpw */
+  var32.i = ex->params[24];
+
+  for (i = 0; i < n; i++) {
+    /* 1: copyw */
+    var33.i = var32.i;
+    /* 2: storew */
+    ptr0[i] = var33;
+  }
+
+}
+
+void
+audio_orc_splat_u16 (guint16 * ORC_RESTRICT d1, int p1, int n)
+{
+  OrcExecutor _ex, *ex = &_ex;
+  static volatile int p_inited = 0;
+  static OrcCode *c = 0;
+  void (*func) (OrcExecutor *);
+
+  if (!p_inited) {
+    orc_once_mutex_lock ();
+    if (!p_inited) {
+      OrcProgram *p;
+
+#if 1
+      static const orc_uint8 bc[] = {
+        1, 9, 19, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 115, 112, 108,
+        97, 116, 95, 117, 49, 54, 11, 2, 2, 16, 2, 79, 0, 24, 2, 0,
+
+      };
+      p = orc_program_new_from_static_bytecode (bc);
+      orc_program_set_backup_function (p, _backup_audio_orc_splat_u16);
+#else
+      p = orc_program_new ();
+      orc_program_set_name (p, "audio_orc_splat_u16");
+      orc_program_set_backup_function (p, _backup_audio_orc_splat_u16);
+      orc_program_add_destination (p, 2, "d1");
+      orc_program_add_parameter (p, 2, "p1");
+
+      orc_program_append_2 (p, "copyw", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1,
+          ORC_VAR_D1);
+#endif
+
+      orc_program_compile (p);
+      c = orc_program_take_code (p);
+      orc_program_free (p);
+    }
+    p_inited = TRUE;
+    orc_once_mutex_unlock ();
+  }
+  ex->arrays[ORC_VAR_A2] = c;
+  ex->program = 0;
+
+  ex->n = n;
+  ex->arrays[ORC_VAR_D1] = d1;
+  ex->params[ORC_VAR_P1] = p1;
+
+  func = c->exec;
+  func (ex);
+}
+#endif
+
+
+/* audio_orc_splat_u32 */
+#ifdef DISABLE_ORC
+void
+audio_orc_splat_u32 (guint32 * ORC_RESTRICT d1, int p1, int n)
+{
+  int i;
+  orc_union32 *ORC_RESTRICT ptr0;
+  orc_union32 var32;
+  orc_union32 var33;
+
+  ptr0 = (orc_union32 *) d1;
+
+  /* 0: loadpl */
+  var32.i = p1;
+
+  for (i = 0; i < n; i++) {
+    /* 1: copyl */
+    var33.i = var32.i;
+    /* 2: storel */
+    ptr0[i] = var33;
+  }
+
+}
+
+#else
+static void
+_backup_audio_orc_splat_u32 (OrcExecutor * ORC_RESTRICT ex)
+{
+  int i;
+  int n = ex->n;
+  orc_union32 *ORC_RESTRICT ptr0;
+  orc_union32 var32;
+  orc_union32 var33;
+
+  ptr0 = (orc_union32 *) ex->arrays[0];
+
+  /* 0: loadpl */
+  var32.i = ex->params[24];
+
+  for (i = 0; i < n; i++) {
+    /* 1: copyl */
+    var33.i = var32.i;
+    /* 2: storel */
+    ptr0[i] = var33;
+  }
+
+}
+
+void
+audio_orc_splat_u32 (guint32 * ORC_RESTRICT d1, int p1, int n)
+{
+  OrcExecutor _ex, *ex = &_ex;
+  static volatile int p_inited = 0;
+  static OrcCode *c = 0;
+  void (*func) (OrcExecutor *);
+
+  if (!p_inited) {
+    orc_once_mutex_lock ();
+    if (!p_inited) {
+      OrcProgram *p;
+
+#if 1
+      static const orc_uint8 bc[] = {
+        1, 9, 19, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 115, 112, 108,
+        97, 116, 95, 117, 51, 50, 11, 4, 4, 16, 4, 112, 0, 24, 2, 0,
+
+      };
+      p = orc_program_new_from_static_bytecode (bc);
+      orc_program_set_backup_function (p, _backup_audio_orc_splat_u32);
+#else
+      p = orc_program_new ();
+      orc_program_set_name (p, "audio_orc_splat_u32");
+      orc_program_set_backup_function (p, _backup_audio_orc_splat_u32);
+      orc_program_add_destination (p, 4, "d1");
+      orc_program_add_parameter (p, 4, "p1");
+
+      orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1,
+          ORC_VAR_D1);
+#endif
+
+      orc_program_compile (p);
+      c = orc_program_take_code (p);
+      orc_program_free (p);
+    }
+    p_inited = TRUE;
+    orc_once_mutex_unlock ();
+  }
+  ex->arrays[ORC_VAR_A2] = c;
+  ex->program = 0;
+
+  ex->n = n;
+  ex->arrays[ORC_VAR_D1] = d1;
+  ex->params[ORC_VAR_P1] = p1;
+
+  func = c->exec;
+  func (ex);
+}
+#endif
+
+
+/* audio_orc_splat_u64 */
+#ifdef DISABLE_ORC
+void
+audio_orc_splat_u64 (guint64 * ORC_RESTRICT d1, int p1, int n)
+{
+  int i;
+  orc_union64 *ORC_RESTRICT ptr0;
+  orc_union64 var32;
+  orc_union64 var33;
+
+  ptr0 = (orc_union64 *) d1;
+
+  /* 0: loadpq */
+  var32.i = p1;
+
+  for (i = 0; i < n; i++) {
+    /* 1: copyq */
+    var33.i = var32.i;
+    /* 2: storeq */
+    ptr0[i] = var33;
+  }
+
+}
+
+#else
+static void
+_backup_audio_orc_splat_u64 (OrcExecutor * ORC_RESTRICT ex)
+{
+  int i;
+  int n = ex->n;
+  orc_union64 *ORC_RESTRICT ptr0;
+  orc_union64 var32;
+  orc_union64 var33;
+
+  ptr0 = (orc_union64 *) ex->arrays[0];
+
+  /* 0: loadpq */
+  var32.i =
+      (ex->params[24] & 0xffffffff) | ((orc_uint64) (ex->params[24 +
+              (ORC_VAR_T1 - ORC_VAR_P1)]) << 32);
+
+  for (i = 0; i < n; i++) {
+    /* 1: copyq */
+    var33.i = var32.i;
+    /* 2: storeq */
+    ptr0[i] = var33;
+  }
+
+}
+
+void
+audio_orc_splat_u64 (guint64 * ORC_RESTRICT d1, int p1, int n)
+{
+  OrcExecutor _ex, *ex = &_ex;
+  static volatile int p_inited = 0;
+  static OrcCode *c = 0;
+  void (*func) (OrcExecutor *);
+
+  if (!p_inited) {
+    orc_once_mutex_lock ();
+    if (!p_inited) {
+      OrcProgram *p;
+
+#if 1
+      static const orc_uint8 bc[] = {
+        1, 9, 19, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 115, 112, 108,
+        97, 116, 95, 117, 54, 52, 11, 8, 8, 16, 8, 137, 0, 24, 2, 0,
+
+      };
+      p = orc_program_new_from_static_bytecode (bc);
+      orc_program_set_backup_function (p, _backup_audio_orc_splat_u64);
+#else
+      p = orc_program_new ();
+      orc_program_set_name (p, "audio_orc_splat_u64");
+      orc_program_set_backup_function (p, _backup_audio_orc_splat_u64);
+      orc_program_add_destination (p, 8, "d1");
+      orc_program_add_parameter (p, 8, "p1");
+
+      orc_program_append_2 (p, "copyq", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1,
+          ORC_VAR_D1);
+#endif
+
+      orc_program_compile (p);
+      c = orc_program_take_code (p);
+      orc_program_free (p);
+    }
+    p_inited = TRUE;
+    orc_once_mutex_unlock ();
+  }
+  ex->arrays[ORC_VAR_A2] = c;
+  ex->program = 0;
+
+  ex->n = n;
+  ex->arrays[ORC_VAR_D1] = d1;
+  ex->params[ORC_VAR_P1] = p1;
+
+  func = c->exec;
+  func (ex);
+}
+#endif
diff --git a/gst-libs/gst/audio/gstaudiopack-dist.h b/gst-libs/gst/audio/gstaudiopack-dist.h
index dc569c8..0866f31 100644
--- a/gst-libs/gst/audio/gstaudiopack-dist.h
+++ b/gst-libs/gst/audio/gstaudiopack-dist.h
@@ -116,6 +116,9 @@
 void audio_orc_pack_f32_swap (gfloat * ORC_RESTRICT d1, const gdouble * ORC_RESTRICT s1, int n);
 void audio_orc_pack_f64 (gdouble * ORC_RESTRICT d1, const gdouble * ORC_RESTRICT s1, int n);
 void audio_orc_pack_f64_swap (gdouble * ORC_RESTRICT d1, const gdouble * ORC_RESTRICT s1, int n);
+void audio_orc_splat_u16 (guint16 * ORC_RESTRICT d1, int p1, int n);
+void audio_orc_splat_u32 (guint32 * ORC_RESTRICT d1, int p1, int n);
+void audio_orc_splat_u64 (guint64 * ORC_RESTRICT d1, int p1, int n);
 
 #ifdef __cplusplus
 }
diff --git a/gst-libs/gst/audio/gstaudiopack.orc b/gst-libs/gst/audio/gstaudiopack.orc
index b3e4878..9945827 100644
--- a/gst-libs/gst/audio/gstaudiopack.orc
+++ b/gst-libs/gst/audio/gstaudiopack.orc
@@ -336,3 +336,22 @@
 .source 8 s1 gdouble
 
 swapq d1, s1
+
+.function audio_orc_splat_u16
+.dest 2 d1 guint16
+.param 2 p1
+
+copyw d1, p1
+
+.function audio_orc_splat_u32
+.dest 4 d1 guint32
+.param 4 p1
+
+copyl d1, p1
+
+.function audio_orc_splat_u64
+.dest 8 d1 guint64
+.param 8 p1
+
+copyq d1, p1
+
diff --git a/gst-libs/gst/audio/gstaudioringbuffer.c b/gst-libs/gst/audio/gstaudioringbuffer.c
index 75151b8..7f4b17b 100644
--- a/gst-libs/gst/audio/gstaudioringbuffer.c
+++ b/gst-libs/gst/audio/gstaudioringbuffer.c
@@ -35,8 +35,6 @@
  * implementations.
  * </para>
  * </refsect2>
- *
- * Last reviewed on 2006-02-02 (0.10.4)
  */
 
 #include <string.h>
@@ -242,6 +240,7 @@
     if (!(gst_structure_get_int (structure, "rate", &info.rate)))
       goto parse_error;
 
+    gst_structure_get_int (structure, "channels", &info.channels);
     spec->type = GST_AUDIO_RING_BUFFER_FORMAT_TYPE_AC3;
     info.bpf = 4;
   } else if (g_str_equal (mimetype, "audio/x-eac3")) {
@@ -249,6 +248,7 @@
     if (!(gst_structure_get_int (structure, "rate", &info.rate)))
       goto parse_error;
 
+    gst_structure_get_int (structure, "channels", &info.channels);
     spec->type = GST_AUDIO_RING_BUFFER_FORMAT_TYPE_EAC3;
     info.bpf = 16;
   } else if (g_str_equal (mimetype, "audio/x-dts")) {
@@ -256,6 +256,7 @@
     if (!(gst_structure_get_int (structure, "rate", &info.rate)))
       goto parse_error;
 
+    gst_structure_get_int (structure, "channels", &info.channels);
     spec->type = GST_AUDIO_RING_BUFFER_FORMAT_TYPE_DTS;
     info.bpf = 4;
   } else if (g_str_equal (mimetype, "audio/mpeg") &&
@@ -266,6 +267,7 @@
     if (!(gst_structure_get_int (structure, "rate", &info.rate)))
       goto parse_error;
 
+    gst_structure_get_int (structure, "channels", &info.channels);
     spec->type = GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG;
     info.bpf = 4;
   } else if (g_str_equal (mimetype, "audio/mpeg") &&
@@ -276,6 +278,8 @@
     /* MPEG-2 AAC or MPEG-4 AAC */
     if (!(gst_structure_get_int (structure, "rate", &info.rate)))
       goto parse_error;
+
+    gst_structure_get_int (structure, "channels", &info.channels);
     spec->type = (i == 2) ? GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG2_AAC :
         GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG4_AAC;
     info.bpf = 4;
@@ -1214,7 +1218,7 @@
   if (G_UNLIKELY (buf->samples_per_seg == 0))
     return;
 
-  /* FIXME, we assume the ringbuffer can restart at a random 
+  /* FIXME, we assume the ringbuffer can restart at a random
    * position, round down to the beginning and keep track of
    * offset when calculating the processed samples. */
   buf->segbase = buf->segdone - sample / buf->samples_per_seg;
@@ -1661,7 +1665,7 @@
  * @len: the number of samples in data to read
  * @timestamp: where the timestamp is returned
  *
- * Read @len samples from the ringbuffer into the memory pointed 
+ * Read @len samples from the ringbuffer into the memory pointed
  * to by @data.
  * The first sample should be read from position @sample in
  * the ringbuffer.
@@ -1850,7 +1854,7 @@
  * @buf: the #GstAudioRingBuffer to advance
  * @advance: the number of segments written
  *
- * Subclasses should call this function to notify the fact that 
+ * Subclasses should call this function to notify the fact that
  * @advance segments are now processed by the device.
  *
  * MT safe.
@@ -1915,7 +1919,7 @@
  * @allowed: the new value
  *
  * Tell the ringbuffer that it is allowed to start playback when
- * the ringbuffer is filled with samples. 
+ * the ringbuffer is filled with samples.
  *
  * MT safe.
  */
@@ -1984,9 +1988,20 @@
 
   GST_INFO_OBJECT (buf, "Storing timestamp %" GST_TIME_FORMAT
       " @ %d", GST_TIME_ARGS (timestamp), readseg);
-  if (buf->timestamps) {
-    buf->timestamps[readseg] = timestamp;
-  } else {
-    GST_ERROR_OBJECT (buf, "Could not store timestamp, no timestamps buffer");
+
+  GST_OBJECT_LOCK (buf);
+  if (G_UNLIKELY (!buf->acquired))
+    goto not_acquired;
+
+  buf->timestamps[readseg] = timestamp;
+
+done:
+  GST_OBJECT_UNLOCK (buf);
+  return;
+
+not_acquired:
+  {
+    GST_DEBUG_OBJECT (buf, "we are not acquired");
+    goto done;
   }
 }
diff --git a/gst-libs/gst/audio/gstaudiosink.c b/gst-libs/gst/audio/gstaudiosink.c
index 1c318e6..a978030 100644
--- a/gst-libs/gst/audio/gstaudiosink.c
+++ b/gst-libs/gst/audio/gstaudiosink.c
@@ -47,7 +47,7 @@
  *   </varlistentry>
  *   <varlistentry>
  *     <term>delay()</term>
- *     <listitem><para>Get the number of samples written but not yet played 
+ *     <listitem><para>Get the number of samples written but not yet played
  *     by the device.</para></listitem>
  *   </varlistentry>
  *   <varlistentry>
@@ -63,8 +63,6 @@
  * All scheduling of samples and timestamps is done in this base class
  * together with #GstAudioBaseSink using a default implementation of a
  * #GstAudioRingBuffer that uses threads.
- *
- * Last reviewed on 2006-09-27 (0.10.12)
  */
 
 #include <string.h>
@@ -204,7 +202,7 @@
 
 /* this internal thread does nothing else but write samples to the audio device.
  * It will write each segment in the ringbuffer and will update the play
- * pointer. 
+ * pointer.
  * The start/stop methods control the thread.
  */
 static void
diff --git a/gst-libs/gst/audio/gstaudiosrc.c b/gst-libs/gst/audio/gstaudiosrc.c
index fac7c9c..197ab17 100644
--- a/gst-libs/gst/audio/gstaudiosrc.c
+++ b/gst-libs/gst/audio/gstaudiosrc.c
@@ -63,8 +63,6 @@
  * All scheduling of samples and timestamps is done in this base class
  * together with #GstAudioBaseSrc using a default implementation of a
  * #GstAudioRingBuffer that uses threads.
- *
- * Last reviewed on 2006-09-27 (0.10.12)
  */
 
 #include <string.h>
@@ -196,7 +194,7 @@
 
 /* this internal thread does nothing else but read samples from the audio device.
  * It will read each segment in the ringbuffer and will update the play
- * pointer. 
+ * pointer.
  * The start/stop methods control the thread.
  */
 static void
diff --git a/gst-libs/gst/audio/gstaudiosrc.h b/gst-libs/gst/audio/gstaudiosrc.h
index c498274..040caa2 100644
--- a/gst-libs/gst/audio/gstaudiosrc.h
+++ b/gst-libs/gst/audio/gstaudiosrc.h
@@ -64,7 +64,7 @@
  * @prepare: configure device with format
  * @unprepare: undo the configuration
  * @close: close the device
- * @read: read samples to the audio device
+ * @read: read samples from the audio device
  * @delay: the number of samples queued in the device
  * @reset: unblock a read to the device and reset.
  *
diff --git a/gst-libs/gst/fft/Makefile.in b/gst-libs/gst/fft/Makefile.in
index d50c749..cce0185 100644
--- a/gst-libs/gst/fft/Makefile.in
+++ b/gst-libs/gst/fft/Makefile.in
@@ -91,7 +91,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -445,9 +444,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/gst-libs/gst/pbutils/Makefile.in b/gst-libs/gst/pbutils/Makefile.in
index 66a8b03..bea3ea3 100644
--- a/gst-libs/gst/pbutils/Makefile.in
+++ b/gst-libs/gst/pbutils/Makefile.in
@@ -101,7 +101,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -459,9 +458,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/gst-libs/gst/pbutils/codec-utils.c b/gst-libs/gst/pbutils/codec-utils.c
index a34b3bc..517bbb2 100644
--- a/gst-libs/gst/pbutils/codec-utils.c
+++ b/gst-libs/gst/pbutils/codec-utils.c
@@ -1,7 +1,9 @@
 /* GStreamer base utils library codec-specific utility functions
  * Copyright (C) 2010 Arun Raghavan <arun.raghavan@collabora.co.uk>
+ *               2013 Sreerenj Balachandran <sreerenj.balachandran@intel.com>
  *               2010 Collabora Multimedia
  *               2010 Nokia Corporation
+ *               2013 Intel Corporation
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -634,6 +636,250 @@
 }
 
 /**
+ * gst_codec_utils_h265_get_profile:
+ * @profile_tier_level: Pointer to the profile_tier_level
+ *   structure for the stream.
+ * @len: Length of the data available in @profile_tier_level
+ *
+ * Converts the profile indication (general_profile_idc) in the stream's
+ * profile_level_tier structure into a string. The profile_tier_level is
+ * expected to have the following format, as defined in the H.265
+ * specification. The profile_tier_level is viewed as a bitstream here,
+ * with bit 0 being the most significant bit of the first byte.
+ *
+ * <itemizedlist>
+ * <listitem><para>Bit 0:1   - general_profile_space</para></listitem>
+ * <listitem><para>Bit 2     - general_tier_flag</para></listitem>
+ * <listitem><para>Bit 3:7   - general_profile_idc</para></listitem>
+ * <listitem><para>Bit 8:39  - gernal_profile_compatibility_flags</para></listitem>
+ * <listitem><para>Bit 40    - general_progressive_source_flag</para></listitem>
+ * <listitem><para>Bit 41    - general_interlaced_source_flag</para></listitem>
+ * <listitem><para>Bit 42    - general_non_packed_constraint_flag</para></listitem>
+ * <listitem><para>Bit 43    - general_frame_only_constraint_flag</para></listitem>
+ * <listitem><para>Bit 44:87 - general_reserved_zero_44bits</para></listitem>
+ * <listitem><para>Bit 88:95 - general_level_idc</para></listitem>
+ * </itemizedlist>
+ *
+ * Returns: The profile as a const string, or %NULL if there is an error.
+ *
+ * Since 1.4
+ */
+const gchar *
+gst_codec_utils_h265_get_profile (const guint8 * profile_tier_level, guint len)
+{
+  const gchar *profile = NULL;
+  gint gpcf1 = 0, gpcf2 = 0, gpcf3 = 0;
+  gint profile_idc;
+
+  g_return_val_if_fail (profile_tier_level != NULL, NULL);
+
+  if (len < 2)
+    return NULL;
+
+  GST_MEMDUMP ("ProfileTierLevel", profile_tier_level, len);
+
+  profile_idc = (profile_tier_level[0] & 0x1f);
+
+  gpcf1 = (profile_tier_level[1] & 0x40) >> 6;
+  gpcf2 = (profile_tier_level[1] & 0x20) >> 5;
+  gpcf3 = (profile_tier_level[1] & 0x10) >> 4;
+
+  if (profile_idc == 1 || gpcf1)
+    profile = "main";
+  else if (profile_idc == 2 || gpcf2)
+    profile = "main-10";
+  else if (profile_idc == 3 || gpcf3)
+    profile = "main-still-picture";
+  else
+    profile = NULL;
+
+  return profile;
+}
+
+/**
+ * gst_codec_utils_h265_get_tier:
+ * @profile_tier_level: Pointer to the profile_tier_level structure
+ *   for the stream.
+ * @len: Length of the data available in @profile_tier_level.
+ *
+ * Converts the tier indication (general_tier_flag) in the stream's
+ * profile_tier_level structure into a string. The profile_tier_level
+ * is expected to have the same format as for gst_codec_utils_h264_get_profile().
+ *
+ * Returns: The tier as a const string, or %NULL if there is an error.
+ *
+ * Since 1.4
+ */
+const gchar *
+gst_codec_utils_h265_get_tier (const guint8 * profile_tier_level, guint len)
+{
+  const gchar *tier = NULL;
+  gint tier_flag = 0;
+
+  g_return_val_if_fail (profile_tier_level != NULL, NULL);
+
+  if (len < 1)
+    return NULL;
+
+  GST_MEMDUMP ("ProfileTierLevel", profile_tier_level, len);
+
+  tier_flag = (profile_tier_level[0] & 0x20) >> 5;
+
+  if (tier_flag)
+    tier = "high";
+  else
+    tier = "main";
+
+  return tier;
+}
+
+/**
+ * gst_codec_utils_h265_get_level:
+ * @profile_tier_level: Pointer to the profile_tier_level structure
+ *   for the stream
+ * @len: Length of the data available in @profile_tier_level.
+ *
+ * Converts the level indication (general_level_idc) in the stream's
+ * profile_tier_level structure into a string. The profiel_tier_level is
+ * expected to have the same format as for gst_codec_utils_h264_get_profile().
+ *
+ * Returns: The level as a const string, or %NULL if there is an error.
+ *
+ * Since 1.4
+ */
+const gchar *
+gst_codec_utils_h265_get_level (const guint8 * profile_tier_level, guint len)
+{
+  g_return_val_if_fail (profile_tier_level != NULL, NULL);
+
+  if (len < 12)
+    return NULL;
+
+  GST_MEMDUMP ("ProfileTierLevel", profile_tier_level, len);
+
+  if (profile_tier_level[11] % 30 == 0)
+    return digit_to_string (profile_tier_level[11] / 30);
+  else {
+    switch (profile_tier_level[11]) {
+      case 63:
+        return "2.1";
+        break;
+      case 93:
+        return "3.1";
+        break;
+      case 123:
+        return "4.1";
+        break;
+      case 153:
+        return "5.1";
+        break;
+      case 156:
+        return "5.2";
+        break;
+      case 183:
+        return "6.1";
+        break;
+      case 186:
+        return "6.2";
+        break;
+      default:
+        return NULL;
+    }
+  }
+}
+
+/**
+ * gst_codec_utils_h265_get_level_idc:
+ * @level: A level string from caps
+ *
+ * Transform a level string from the caps into the level_idc
+ *
+ * Returns: the level_idc or 0 if the level is unknown
+ *
+ * Since 1.4
+ */
+guint8
+gst_codec_utils_h265_get_level_idc (const gchar * level)
+{
+  g_return_val_if_fail (level != NULL, 0);
+
+  if (!strcmp (level, "1"))
+    return 30;
+  else if (!strcmp (level, "2"))
+    return 60;
+  else if (!strcmp (level, "2.1"))
+    return 63;
+  else if (!strcmp (level, "3"))
+    return 90;
+  else if (!strcmp (level, "3.1"))
+    return 93;
+  else if (!strcmp (level, "4"))
+    return 120;
+  else if (!strcmp (level, "4.1"))
+    return 123;
+  else if (!strcmp (level, "5"))
+    return 150;
+  else if (!strcmp (level, "5.1"))
+    return 153;
+  else if (!strcmp (level, "5.2"))
+    return 156;
+  else if (!strcmp (level, "6"))
+    return 180;
+  else if (!strcmp (level, "6.1"))
+    return 183;
+  else if (!strcmp (level, "6.2"))
+    return 186;
+
+  GST_WARNING ("Invalid level %s", level);
+  return 0;
+}
+
+/**
+ * gst_codec_utils_h265_caps_set_level_tier_and_profile:
+ * @caps: the #GstCaps to which the level, tier and profile are to be added
+ * @profile_tier_level: Pointer to the profile_tier_level struct
+ * @len: Length of the data available in @profile_tier_level.
+ *
+ * Sets the level, tier and profile in @caps if it can be determined from
+ * @profile_tier_level. See gst_codec_utils_h265_get_level(),
+ * gst_codec_utils_h265_get_tier() and gst_codec_utils_h265_get_profile()
+ * for more details on the parameters.
+ *
+ * Returns: %TRUE if the level, tier, profile could be set, %FALSE otherwise.
+ *
+ * Since 1.4
+ */
+gboolean
+gst_codec_utils_h265_caps_set_level_tier_and_profile (GstCaps * caps,
+    const guint8 * profile_tier_level, guint len)
+{
+  const gchar *level, *tier, *profile;
+
+  g_return_val_if_fail (GST_IS_CAPS (caps), FALSE);
+  g_return_val_if_fail (GST_CAPS_IS_SIMPLE (caps), FALSE);
+  g_return_val_if_fail (GST_SIMPLE_CAPS_HAS_NAME (caps, "video/x-h265"), FALSE);
+  g_return_val_if_fail (profile_tier_level != NULL, FALSE);
+
+  level = gst_codec_utils_h265_get_level (profile_tier_level, len);
+  if (level != NULL)
+    gst_caps_set_simple (caps, "level", G_TYPE_STRING, level, NULL);
+
+  tier = gst_codec_utils_h265_get_tier (profile_tier_level, len);
+  if (tier != NULL)
+    gst_caps_set_simple (caps, "tier", G_TYPE_STRING, tier, NULL);
+
+  profile = gst_codec_utils_h265_get_profile (profile_tier_level, len);
+  if (profile != NULL)
+    gst_caps_set_simple (caps, "profile", G_TYPE_STRING, profile, NULL);
+
+  GST_LOG ("profile : %s", (profile) ? profile : "---");
+  GST_LOG ("tier    : %s", (tier) ? tier : "---");
+  GST_LOG ("level   : %s", (level) ? level : "---");
+
+  return (level != NULL && tier != NULL && profile != NULL);
+}
+
+/**
  * gst_codec_utils_mpeg4video_get_profile:
  * @vis_obj_seq: Pointer to the visual object sequence for the stream.
  * @len: Length of the data available in @sps.
diff --git a/gst-libs/gst/pbutils/codec-utils.h b/gst-libs/gst/pbutils/codec-utils.h
index bbbe7aa..0ef5bbd 100644
--- a/gst-libs/gst/pbutils/codec-utils.h
+++ b/gst-libs/gst/pbutils/codec-utils.h
@@ -51,6 +51,22 @@
                                                                const guint8 * sps,
                                                                guint          len);
 
+/* H.265 */
+
+const gchar * gst_codec_utils_h265_get_profile                     (const guint8 * profile_tier_level,
+                                                                    guint len);
+
+const gchar * gst_codec_utils_h265_get_tier                        (const guint8 * profile_tier_level,
+                                                                    guint len);
+
+const gchar * gst_codec_utils_h265_get_level                       (const guint8 * profile_tier_level,
+                                                                    guint len);
+
+guint8        gst_codec_utils_h265_get_level_idc                   (const gchar  * level);
+
+gboolean      gst_codec_utils_h265_caps_set_level_tier_and_profile (GstCaps      * caps,
+                                                                    const guint8 * profile_tier_level,
+                                                                    guint          len);
 /* MPEG-4 part 2 */
 
 const gchar * gst_codec_utils_mpeg4video_get_profile (const guint8 * vis_obj_seq, guint len);
diff --git a/gst-libs/gst/pbutils/descriptions.c b/gst-libs/gst/pbutils/descriptions.c
index 4ab776f..fcb0f1b 100644
--- a/gst-libs/gst/pbutils/descriptions.c
+++ b/gst-libs/gst/pbutils/descriptions.c
@@ -160,8 +160,9 @@
   {"audio/x-qdm", "QDesign Music (QDM)", FLAG_AUDIO, ""},
   {"audio/x-qdm2", "QDesign Music (QDM) 2", FLAG_AUDIO, ""},
   {"audio/x-ralf-mpeg4-generic", "Real Audio Lossless (RALF)", FLAG_AUDIO, ""},
-  {"audio/x-sbc", "SBC", FLAG_AUDIO, "sbc"},
-  {"audio/x-sds", "SDS", FLAG_AUDIO, ""},
+  {"audio/x-rf64", "Broadcast Wave Format", AUDIO_CONTAINER, "rf64"},
+  {"audio/x-sbc", "Low Complexity Subband Coding", FLAG_AUDIO, "sbc"},
+  {"audio/x-sds", "Midi Sample Dump Standard", FLAG_AUDIO, ""},
   {"audio/x-shorten", "Shorten Lossless", FLAG_AUDIO, "shn"},
   {"audio/x-sid", "Sid", FLAG_AUDIO, "sid"},
   {"audio/x-sipro", "Sipro/ACELP.NET Voice", FLAG_AUDIO, ""},
@@ -181,6 +182,7 @@
   {"audio/x-wavpack-correction", "Wavpack", 0, "wpc"},
   {"audio/x-wms", N_("Windows Media Speech"), FLAG_AUDIO, ""},
   {"audio/x-voxware", "Voxware", FLAG_AUDIO, ""},
+  {"audio/x-xi", "Fasttracker 2 Extended Instrument", FLAG_AUDIO, "xi"},
 
 
   /* video formats with static descriptions */
@@ -307,6 +309,7 @@
   {"video/x-dv", "Digital Video (DV)", FLAG_VIDEO, ""},
   {"video/x-h263", NULL, FLAG_VIDEO, "h263"},
   {"video/x-h264", NULL, FLAG_VIDEO, "h264"},
+  {"video/x-h265", NULL, FLAG_VIDEO, "h265"},
   {"video/x-indeo", NULL, FLAG_VIDEO, ""},
   {"video/x-msmpeg", NULL, FLAG_VIDEO, ""},
   {"video/x-pn-realvideo", NULL, FLAG_VIDEO, ""},
@@ -442,6 +445,9 @@
       ret = "H.264";
     }
     return g_strdup (ret);
+  } else if (strcmp (info->type, "video/x-h265") == 0) {
+    /* TODO: Any variants? */
+    return g_strdup ("H.265");
   } else if (strcmp (info->type, "video/x-divx") == 0) {
     gint ver = 0;
 
@@ -658,16 +664,21 @@
     gboolean sysstream;
     gint ver = 0;
 
-    if (!gst_structure_get_boolean (s, "systemstream", &sysstream) ||
-        !gst_structure_get_int (s, "mpegversion", &ver) || ver < 1 || ver > 4) {
-      GST_WARNING ("Missing fields in mpeg video caps %" GST_PTR_FORMAT, caps);
-    } else {
+    if (!gst_structure_get_boolean (s, "systemstream", &sysstream)) {
+      GST_WARNING ("Missing systemstream field in mpeg video caps "
+          "%" GST_PTR_FORMAT, caps);
+      sysstream = FALSE;
+    }
+
+    if (gst_structure_get_int (s, "mpegversion", &ver) && ver > 0 && ver <= 4) {
       if (sysstream) {
         return g_strdup_printf ("MPEG-%d System Stream", ver);
       } else {
         return g_strdup_printf ("MPEG-%d Video", ver);
       }
     }
+    GST_WARNING ("Missing mpegversion field in mpeg video caps "
+        "%" GST_PTR_FORMAT, caps);
     return g_strdup ("MPEG Video");
   } else if (strcmp (info->type, "audio/x-raw") == 0) {
     gint depth = 0;
diff --git a/gst-libs/gst/pbutils/encoding-profile.c b/gst-libs/gst/pbutils/encoding-profile.c
index 330bf4e..59371c4 100644
--- a/gst-libs/gst/pbutils/encoding-profile.c
+++ b/gst-libs/gst/pbutils/encoding-profile.c
@@ -150,6 +150,15 @@
   GObjectClass parent_class;
 };
 
+enum
+{
+  FIRST_PROPERTY,
+  PROP_RESTRICTION_CAPS,
+  LAST_PROPERTY
+};
+
+static GParamSpec *_properties[LAST_PROPERTY];
+
 static void string_to_profile_transform (const GValue * src_value,
     GValue * dest_value);
 static gboolean gst_encoding_profile_deserialize_valfunc (GValue * value,
@@ -198,6 +207,40 @@
   return g_define_type_id__volatile;
 }
 
+
+static void
+_encoding_profile_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec)
+{
+  GstEncodingProfile *prof = (GstEncodingProfile *) object;
+
+  switch (prop_id) {
+    case PROP_RESTRICTION_CAPS:
+      gst_value_set_caps (value, prof->restriction);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+_encoding_profile_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec)
+{
+  GstEncodingProfile *prof = (GstEncodingProfile *) object;
+
+  switch (prop_id) {
+    case PROP_RESTRICTION_CAPS:
+      gst_encoding_profile_set_restriction (prof, gst_caps_copy
+          (gst_value_get_caps (value)));
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
 static void
 gst_encoding_profile_finalize (GObject * object)
 {
@@ -212,6 +255,8 @@
     g_free (prof->description);
   if (prof->restriction)
     gst_caps_unref (prof->restriction);
+  if (prof->preset_name)
+    g_free (prof->preset_name);
 }
 
 static void
@@ -220,6 +265,18 @@
   GObjectClass *gobject_class = (GObjectClass *) klass;
 
   gobject_class->finalize = gst_encoding_profile_finalize;
+
+  gobject_class->set_property = _encoding_profile_set_property;
+  gobject_class->get_property = _encoding_profile_get_property;
+
+  _properties[PROP_RESTRICTION_CAPS] =
+      g_param_spec_boxed ("restriction-caps", "Restriction caps",
+      "The restriction caps to use", GST_TYPE_CAPS,
+      G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+
+  g_object_class_install_property (gobject_class,
+      PROP_RESTRICTION_CAPS, _properties[PROP_RESTRICTION_CAPS]);
+
 }
 
 /**
@@ -416,7 +473,7 @@
  * @restriction: (transfer full): the restriction to apply
  *
  * Set the restriction #GstCaps to apply before the encoder
- * that will be used in the profile. See gst_encoding_profile_set_restriction()
+ * that will be used in the profile. See gst_encoding_profile_get_restriction()
  * for more about restrictions. Does not apply to #GstEncodingContainerProfile.
  */
 void
@@ -426,6 +483,9 @@
   if (profile->restriction)
     gst_caps_unref (profile->restriction);
   profile->restriction = restriction;
+
+  g_object_notify_by_pspec (G_OBJECT (profile),
+      _properties[PROP_RESTRICTION_CAPS]);
 }
 
 /* Container profiles */
diff --git a/gst-libs/gst/pbutils/gstdiscoverer.c b/gst-libs/gst/pbutils/gstdiscoverer.c
index d6594ea..ab5683d 100644
--- a/gst-libs/gst/pbutils/gstdiscoverer.c
+++ b/gst-libs/gst/pbutils/gstdiscoverer.c
@@ -30,10 +30,12 @@
  * The blocking mode just requires calling gst_discoverer_discover_uri()
  * with the URI one wishes to discover.
  *
- * The non-blocking mode requires a running #GMainLoop in the default
+ * The non-blocking mode requires a running #GMainLoop iterating a
  * #GMainContext, where one connects to the various signals, appends the
  * URIs to be processed (through gst_discoverer_discover_uri_async()) and then
  * asks for the discovery to begin (through gst_discoverer_start()).
+ * By default this will use the GLib default main context unless you have
+ * set a custom context using g_main_context_push_thread_default().
  *
  * All the information is returned in a #GstDiscovererInfo structure.
  */
@@ -136,8 +138,8 @@
 
   _CAPS_QUARK = g_quark_from_static_string ("caps");
   _TAGS_QUARK = g_quark_from_static_string ("tags");
-  _TOC_QUARK = g_quark_from_static_string ("stream-id");
-  _STREAM_ID_QUARK = g_quark_from_static_string ("toc");
+  _TOC_QUARK = g_quark_from_static_string ("toc");
+  _STREAM_ID_QUARK = g_quark_from_static_string ("stream-id");
   _MISSING_PLUGIN_QUARK = g_quark_from_static_string ("missing-plugin");
   _STREAM_TOPOLOGY_QUARK = g_quark_from_static_string ("stream-topology");
   _TOPOLOGY_PAD_QUARK = g_quark_from_static_string ("pad");
@@ -729,9 +731,8 @@
     caps = gst_pad_query_caps (ps->pad, NULL);
   }
   if (caps) {
-    GST_DEBUG ("Got caps %" GST_PTR_FORMAT, caps);
+    GST_DEBUG ("stream-%02d, got caps %" GST_PTR_FORMAT, idx, caps);
     gst_structure_id_set (st, _CAPS_QUARK, GST_TYPE_CAPS, caps, NULL);
-
     gst_caps_unref (caps);
   }
   if (ps->tags)
@@ -762,6 +763,35 @@
   gst_tag_list_unref (new_tags);
 }
 
+static void
+collect_common_information (GstDiscovererStreamInfo * info,
+    const GstStructure * st)
+{
+  if (gst_structure_id_has_field (st, _TOC_QUARK)) {
+    gst_structure_id_get (st, _TOC_QUARK, GST_TYPE_TOC, &info->toc, NULL);
+  }
+
+  if (gst_structure_id_has_field (st, _STREAM_ID_QUARK)) {
+    gst_structure_id_get (st, _STREAM_ID_QUARK, G_TYPE_STRING, &info->stream_id,
+        NULL);
+  }
+}
+
+static GstDiscovererStreamInfo *
+make_info (GstDiscovererStreamInfo * parent, GType type, GstCaps * caps)
+{
+  GstDiscovererStreamInfo *info;
+
+  if (parent)
+    info = gst_discoverer_stream_info_ref (parent);
+  else {
+    info = g_object_new (type, NULL);
+    if (caps)
+      info->caps = gst_caps_ref (caps);
+  }
+  return info;
+}
+
 /* Parses a set of caps and tags in st and populates a GstDiscovererStreamInfo
  * structure (parent, if !NULL, otherwise it allocates one)
  */
@@ -772,19 +802,13 @@
   GstCaps *caps;
   GstStructure *caps_st;
   GstTagList *tags_st;
-  GstToc *toc_st;
   const gchar *name;
-  gchar *stream_id;
   int tmp;
   guint utmp;
 
   if (!st || !gst_structure_id_has_field (st, _CAPS_QUARK)) {
     GST_WARNING ("Couldn't find caps !");
-    if (parent)
-      return gst_discoverer_stream_info_ref (parent);
-    else
-      return (GstDiscovererStreamInfo *)
-          g_object_new (GST_TYPE_DISCOVERER_STREAM_INFO, NULL);
+    return make_info (parent, GST_TYPE_DISCOVERER_STREAM_INFO, NULL);
   }
 
   gst_structure_id_get (st, _CAPS_QUARK, GST_TYPE_CAPS, &caps, NULL);
@@ -795,13 +819,8 @@
     GstDiscovererAudioInfo *info;
     const gchar *format_str;
 
-    if (parent)
-      info = (GstDiscovererAudioInfo *) gst_discoverer_stream_info_ref (parent);
-    else {
-      info = (GstDiscovererAudioInfo *)
-          g_object_new (GST_TYPE_DISCOVERER_AUDIO_INFO, NULL);
-      info->parent.caps = gst_caps_ref (caps);
-    }
+    info = (GstDiscovererAudioInfo *) make_info (parent,
+        GST_TYPE_DISCOVERER_AUDIO_INFO, caps);
 
     if (gst_structure_get_int (caps_st, "rate", &tmp))
       info->sample_rate = (guint) tmp;
@@ -834,16 +853,7 @@
       gst_discoverer_merge_and_replace_tags (&info->parent.tags, tags_st);
     }
 
-    if (gst_structure_id_has_field (st, _TOC_QUARK)) {
-      gst_structure_id_get (st, _TOC_QUARK, GST_TYPE_TOC, &toc_st, NULL);
-      info->parent.toc = toc_st;
-    }
-
-    if (gst_structure_id_has_field (st, _STREAM_ID_QUARK)) {
-      gst_structure_id_get (st, _STREAM_ID_QUARK, G_TYPE_STRING, &stream_id,
-          NULL);
-      info->parent.stream_id = stream_id;
-    }
+    collect_common_information (&info->parent, st);
 
     if (!info->language && ((GstDiscovererStreamInfo *) info)->tags) {
       gchar *language;
@@ -861,19 +871,14 @@
     GstDiscovererVideoInfo *info;
     GstVideoInfo vinfo;
 
-    if (parent)
-      info = (GstDiscovererVideoInfo *) gst_discoverer_stream_info_ref (parent);
-    else {
-      info = (GstDiscovererVideoInfo *)
-          g_object_new (GST_TYPE_DISCOVERER_VIDEO_INFO, NULL);
-      info->parent.caps = gst_caps_ref (caps);
-    }
+    info = (GstDiscovererVideoInfo *) make_info (parent,
+        GST_TYPE_DISCOVERER_VIDEO_INFO, caps);
 
     if (gst_video_info_from_caps (&vinfo, caps)) {
       info->width = (guint) vinfo.width;
       info->height = (guint) vinfo.height;
 
-      info->depth = (guint) 0;
+      info->depth = vinfo.finfo->bits * vinfo.finfo->n_components;
 
       info->par_num = vinfo.par_n;
       info->par_denom = vinfo.par_d;
@@ -895,20 +900,10 @@
         info->max_bitrate = utmp;
 
       /* FIXME: Is it worth it to remove the tags we've parsed? */
-      gst_discoverer_merge_and_replace_tags (&info->parent.tags,
-          (GstTagList *) tags_st);
+      gst_discoverer_merge_and_replace_tags (&info->parent.tags, tags_st);
     }
 
-    if (gst_structure_id_has_field (st, _TOC_QUARK)) {
-      gst_structure_id_get (st, _TOC_QUARK, GST_TYPE_TOC, &toc_st, NULL);
-      info->parent.toc = toc_st;
-    }
-
-    if (gst_structure_id_has_field (st, _STREAM_ID_QUARK)) {
-      gst_structure_id_get (st, _STREAM_ID_QUARK, G_TYPE_STRING, &stream_id,
-          NULL);
-      info->parent.stream_id = stream_id;
-    }
+    collect_common_information (&info->parent, st);
 
     gst_caps_unref (caps);
     return (GstDiscovererStreamInfo *) info;
@@ -916,14 +911,8 @@
   } else if (is_subtitle_caps (caps)) {
     GstDiscovererSubtitleInfo *info;
 
-    if (parent)
-      info =
-          (GstDiscovererSubtitleInfo *) gst_discoverer_stream_info_ref (parent);
-    else {
-      info = (GstDiscovererSubtitleInfo *)
-          g_object_new (GST_TYPE_DISCOVERER_SUBTITLE_INFO, NULL);
-      info->parent.caps = gst_caps_ref (caps);
-    }
+    info = (GstDiscovererSubtitleInfo *) make_info (parent,
+        GST_TYPE_DISCOVERER_SUBTITLE_INFO, caps);
 
     if (gst_structure_id_has_field (st, _TAGS_QUARK)) {
       const gchar *language;
@@ -938,16 +927,7 @@
       gst_discoverer_merge_and_replace_tags (&info->parent.tags, tags_st);
     }
 
-    if (gst_structure_id_has_field (st, _TOC_QUARK)) {
-      gst_structure_id_get (st, _TOC_QUARK, GST_TYPE_TOC, &toc_st, NULL);
-      info->parent.toc = toc_st;
-    }
-
-    if (gst_structure_id_has_field (st, _STREAM_ID_QUARK)) {
-      gst_structure_id_get (st, _STREAM_ID_QUARK, G_TYPE_STRING, &stream_id,
-          NULL);
-      info->parent.stream_id = stream_id;
-    }
+    collect_common_information (&info->parent, st);
 
     if (!info->language && ((GstDiscovererStreamInfo *) info)->tags) {
       gchar *language;
@@ -964,27 +944,14 @@
     /* None of the above - populate what information we can */
     GstDiscovererStreamInfo *info;
 
-    if (parent)
-      info = gst_discoverer_stream_info_ref (parent);
-    else {
-      info = (GstDiscovererStreamInfo *)
-          g_object_new (GST_TYPE_DISCOVERER_STREAM_INFO, NULL);
-      info->caps = gst_caps_ref (caps);
-    }
+    info = make_info (parent, GST_TYPE_DISCOVERER_STREAM_INFO, caps);
 
     if (gst_structure_id_get (st, _TAGS_QUARK, GST_TYPE_TAG_LIST, &tags_st,
             NULL)) {
       gst_discoverer_merge_and_replace_tags (&info->tags, tags_st);
     }
 
-    if (gst_structure_id_get (st, _TOC_QUARK, GST_TYPE_TOC, &toc_st, NULL)) {
-      info->toc = toc_st;
-    }
-
-    if (gst_structure_id_get (st, _STREAM_ID_QUARK, G_TYPE_STRING, &stream_id,
-            NULL)) {
-      info->stream_id = stream_id;
-    }
+    collect_common_information (info, st);
 
     gst_caps_unref (caps);
     return info;
diff --git a/gst-libs/gst/riff/Makefile.in b/gst-libs/gst/riff/Makefile.in
index a6d81c5..82b1534 100644
--- a/gst-libs/gst/riff/Makefile.in
+++ b/gst-libs/gst/riff/Makefile.in
@@ -90,7 +90,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -416,9 +415,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/gst-libs/gst/riff/riff-ids.h b/gst-libs/gst/riff/riff-ids.h
index 26aa350..acc75d5 100644
--- a/gst-libs/gst/riff/riff-ids.h
+++ b/gst-libs/gst/riff/riff-ids.h
@@ -60,6 +60,8 @@
 #define GST_RIFF_TAG_acid GST_MAKE_FOURCC ('a','c','i','d')
 #define GST_RIFF_TAG_labl GST_MAKE_FOURCC ('l','a','b','l')
 #define GST_RIFF_TAG_note GST_MAKE_FOURCC ('n','o','t','e')
+#define GST_RIFF_TAG_smpl GST_MAKE_FOURCC ('s','m','p','l')
+#define GST_RIFF_TAG_inst GST_MAKE_FOURCC ('i','n','s','t')
 
 /* LIST types */
 #define GST_RIFF_LIST_movi GST_MAKE_FOURCC ('m','o','v','i')
@@ -69,6 +71,7 @@
 #define GST_RIFF_LIST_INFO GST_MAKE_FOURCC ('I','N','F','O')
 #define GST_RIFF_LIST_AVIX GST_MAKE_FOURCC ('A','V','I','X')
 #define GST_RIFF_LIST_adtl GST_MAKE_FOURCC ('a','d','t','l')
+#define GST_RIFF_LIST_ncdt GST_MAKE_FOURCC ('n','c','d','t')
 
 /* fcc types */
 #define GST_RIFF_FCC_vids GST_MAKE_FOURCC ('v','i','d','s')
@@ -110,6 +113,9 @@
 #define GST_RIFF_INFO_IAAR GST_MAKE_FOURCC ('I','A','A','R') /* album artist */
 #define GST_RIFF_INFO_ITRK GST_MAKE_FOURCC ('I','T','R','K') /* track number */
 
+/* ncdt types - see http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/Nikon.html#NCDT */
+#define GST_RIFF_LIST_nctg GST_MAKE_FOURCC ('n','c','t','g')
+
 /*********Chunk Names***************/
 #define GST_RIFF_FF00 GST_MAKE_FOURCC (0xFF,0xFF,0x00,0x00)
 #define GST_RIFF_00   GST_MAKE_FOURCC ('0', '0',0x00,0x00)
@@ -332,6 +338,7 @@
 #define GST_RIFF_WAVE_FORMAT_ITU_G721_ADPCM (0x0040)
 #define GST_RIFF_WAVE_FORMAT_G728_CELP      (0x0041)
 #define GST_RIFF_WAVE_FORMAT_MSG723         (0x0042)
+#define GST_RIFF_WAVE_FORMAT_ITU_G726_ADPCM (0x0045)
 #define GST_RIFF_WAVE_FORMAT_MPEGL12        (0x0050)
 #define GST_RIFF_WAVE_FORMAT_RT24           (0x0052)
 #define GST_RIFF_WAVE_FORMAT_PAC            (0x0053)
diff --git a/gst-libs/gst/riff/riff-media.c b/gst-libs/gst/riff/riff-media.c
index 08c2c0b..e4d877e 100644
--- a/gst-libs/gst/riff/riff-media.c
+++ b/gst-libs/gst/riff/riff-media.c
@@ -1133,7 +1133,7 @@
   }
 
   if (channel_reorder_map)
-    memcpy (channel_reorder_map, reorder_maps[nchannels],
+    memcpy (channel_reorder_map, reorder_maps[nchannels - 1],
         sizeof (gint) * nchannels);
 
   gst_caps_set_simple (caps, "channel-mask", GST_TYPE_BITMASK, channel_mask,
@@ -1391,6 +1391,37 @@
       block_align = TRUE;
       break;
 
+    case GST_RIFF_WAVE_FORMAT_ITU_G726_ADPCM:
+      rate_min = 8000;
+      rate_max = 8000;
+      channels_max = 1;
+      if (strf != NULL) {
+        gint bitrate;
+        bitrate = 0;
+        if (strf->av_bps == 2000 || strf->av_bps == 3000 || strf->av_bps == 4000
+            || strf->av_bps == 5000) {
+          strf->blockalign = strf->av_bps / 1000;
+          bitrate = strf->av_bps * 8;
+        } else if (strf->blockalign >= 2 && strf->blockalign <= 5) {
+          bitrate = strf->blockalign * 8000;
+        }
+        if (bitrate > 0) {
+          caps = gst_caps_new_simple ("audio/x-adpcm",
+              "layout", G_TYPE_STRING, "g726", "bitrate", G_TYPE_INT, bitrate,
+              NULL);
+        } else {
+          caps = gst_caps_new_simple ("audio/x-adpcm",
+              "layout", G_TYPE_STRING, "g726", NULL);
+        }
+      } else {
+        caps = gst_caps_new_simple ("audio/x-adpcm",
+            "layout", G_TYPE_STRING, "g726", NULL);
+      }
+      if (codec_name)
+        *codec_name = g_strdup ("G726 ADPCM audio");
+      block_align = TRUE;
+      break;
+
     case GST_RIFF_WAVE_FORMAT_DSP_TRUESPEECH:
       rate_min = 8000;
       rate_max = 8000;
diff --git a/gst-libs/gst/riff/riff-read.c b/gst-libs/gst/riff/riff-read.c
index 8bc5fa6..824bc73 100644
--- a/gst-libs/gst/riff/riff-read.c
+++ b/gst-libs/gst/riff/riff-read.c
@@ -619,6 +619,40 @@
   }
 }
 
+static void
+parse_tag_value (GstElement * element, GstTagList * taglist, const gchar * type,
+    guint8 * ptr, guint tsize)
+{
+  static const gchar *env_vars[] = { "GST_AVI_TAG_ENCODING",
+    "GST_RIFF_TAG_ENCODING", "GST_TAG_ENCODING", NULL
+  };
+  GType tag_type;
+  gchar *val;
+
+  tag_type = gst_tag_get_type (type);
+  val = gst_tag_freeform_string_to_utf8 ((gchar *) ptr, tsize, env_vars);
+
+  if (val != NULL) {
+    if (tag_type == G_TYPE_STRING) {
+      gst_tag_list_add (taglist, GST_TAG_MERGE_APPEND, type, val, NULL);
+    } else {
+      GValue tag_val = { 0, };
+
+      g_value_init (&tag_val, tag_type);
+      if (gst_value_deserialize (&tag_val, val)) {
+        gst_tag_list_add_value (taglist, GST_TAG_MERGE_APPEND, type, &tag_val);
+      } else {
+        GST_WARNING_OBJECT (element, "could not deserialize '%s' into a "
+            "tag %s of type %s", val, type, g_type_name (tag_type));
+      }
+      g_value_unset (&tag_val);
+    }
+    g_free (val);
+  } else {
+    GST_WARNING_OBJECT (element, "could not extract %s tag", type);
+  }
+}
+
 /**
  * gst_riff_parse_info:
  * @element: caller element (used for debugging/error).
@@ -762,38 +796,10 @@
     }
 
     if (type != NULL && ptr[0] != '\0') {
-      static const gchar *env_vars[] = { "GST_AVI_TAG_ENCODING",
-        "GST_RIFF_TAG_ENCODING", "GST_TAG_ENCODING", NULL
-      };
-      GType tag_type;
-      gchar *val;
-
       GST_DEBUG_OBJECT (element, "mapped tag %" GST_FOURCC_FORMAT " to tag %s",
           GST_FOURCC_ARGS (tag), type);
 
-      tag_type = gst_tag_get_type (type);
-      val = gst_tag_freeform_string_to_utf8 ((gchar *) ptr, tsize, env_vars);
-
-      if (val != NULL) {
-        if (tag_type == G_TYPE_STRING) {
-          gst_tag_list_add (taglist, GST_TAG_MERGE_APPEND, type, val, NULL);
-        } else {
-          GValue tag_val = { 0, };
-
-          g_value_init (&tag_val, tag_type);
-          if (gst_value_deserialize (&tag_val, val)) {
-            gst_tag_list_add_value (taglist, GST_TAG_MERGE_APPEND, type,
-                &tag_val);
-          } else {
-            GST_WARNING_OBJECT (element, "could not deserialize '%s' into a "
-                "tag %s of type %s", val, type, g_type_name (tag_type));
-          }
-          g_value_unset (&tag_val);
-        }
-        g_free (val);
-      } else {
-        GST_WARNING_OBJECT (element, "could not extract %s tag", type);
-      }
+      parse_tag_value (element, taglist, type, ptr, tsize);
     }
 
     if (tsize & 1) {
diff --git a/gst-libs/gst/riff/riff-read.h b/gst-libs/gst/riff/riff-read.h
index 918b997..95d606a 100644
--- a/gst-libs/gst/riff/riff-read.h
+++ b/gst-libs/gst/riff/riff-read.h
@@ -76,7 +76,6 @@
 void gst_riff_parse_info            (GstElement  * element,
                                      GstBuffer   * buf,
                                      GstTagList ** taglist);
-
 /*
  * Init.
  */
diff --git a/gst-libs/gst/rtp/Makefile.in b/gst-libs/gst/rtp/Makefile.in
index 3a2d0d5..1213dd1 100644
--- a/gst-libs/gst/rtp/Makefile.in
+++ b/gst-libs/gst/rtp/Makefile.in
@@ -89,7 +89,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -435,9 +434,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/gst-libs/gst/rtp/gstrtcpbuffer.c b/gst-libs/gst/rtp/gstrtcpbuffer.c
index 2935b9b..d66e986 100644
--- a/gst-libs/gst/rtp/gstrtcpbuffer.c
+++ b/gst-libs/gst/rtp/gstrtcpbuffer.c
@@ -40,8 +40,6 @@
  * gst_rtcp_packet_move_to_next().
  * </para>
  * </refsect2>
- *
- * Last reviewed on 2007-03-26 (0.10.13)
  */
 
 #include <string.h>
@@ -354,6 +352,11 @@
   packet->item_count = 0;
   packet->entry_offset = 4;
 
+  /* Ensure no overread from the claimed data size. The packet length
+     is expressed in multiple of 32 bits, to make things obvious. */
+  if (offset + 4 + packet->length * 4 > maxsize)
+    return FALSE;
+
   return TRUE;
 }
 
diff --git a/gst-libs/gst/rtp/gstrtpbasedepayload.c b/gst-libs/gst/rtp/gstrtpbasedepayload.c
index b8a4ad9..05a9033 100644
--- a/gst-libs/gst/rtp/gstrtpbasedepayload.c
+++ b/gst-libs/gst/rtp/gstrtpbasedepayload.c
@@ -45,6 +45,8 @@
   GstClockTime dts;
   GstClockTime duration;
 
+  guint32 last_seqnum;
+  guint32 last_rtptime;
   guint32 next_seqnum;
 
   gboolean negotiated;
@@ -62,6 +64,7 @@
 enum
 {
   PROP_0,
+  PROP_STATS,
   PROP_LAST
 };
 
@@ -131,6 +134,69 @@
   gobject_class->set_property = gst_rtp_base_depayload_set_property;
   gobject_class->get_property = gst_rtp_base_depayload_get_property;
 
+
+  /**
+   * GstRTPBaseDepayload:stats:
+   *
+   * Various depayloader statistics retrieved atomically (and are therefore
+   * synchroized with each other). This property return a GstStructure named
+   * application/x-rtp-depayload-stats containing the following fields relating to
+   * the last processed buffer and current state of the stream being depayloaded:
+   *
+   * <variablelist>
+   *   <varlistentry>
+   *     <term>clock-rate</term>
+   *     <listitem><para>#G_TYPE_UINT, clock-rate of the
+   *     stream</para></listitem>
+   *   </varlistentry>
+   *   <varlistentry>
+   *     <term>npt-start</term>
+   *     <listitem><para>#G_TYPE_UINT64, time of playback start
+   *     </para></listitem>
+   *   </varlistentry>
+   *   <varlistentry>
+   *     <term>npt-stop</term>
+   *     <listitem><para>#G_TYPE_UINT64, time of playback stop
+   *     </para></listitem>
+   *   </varlistentry>
+   *   <varlistentry>
+   *     <term>play-speed</term>
+   *     <listitem><para>#G_TYPE_DOUBLE, the playback speed
+   *     </para></listitem>
+   *   </varlistentry>
+   *   <varlistentry>
+   *     <term>play-scale</term>
+   *     <listitem><para>#G_TYPE_DOUBLE, the playback scale
+   *     </para></listitem>
+   *   </varlistentry>
+   *   <varlistentry>
+   *     <term>running-time-dts</term>
+   *     <listitem><para>#G_TYPE_UINT64, the last running-time of the
+   *      last DTS
+   *     </para></listitem>
+   *   </varlistentry>
+   *   <varlistentry>
+   *     <term>running-time-pts</term>
+   *     <listitem><para>#G_TYPE_UINT64, the last running-time of the
+   *      last PTS
+   *     </para></listitem>
+   *   </varlistentry>
+   *   <varlistentry>
+   *     <term>seqnum</term>
+   *     <listitem><para>#G_TYPE_UINT, the last seen seqnum
+   *     </para></listitem>
+   *   </varlistentry>
+   *   <varlistentry>
+   *     <term>timestamp</term>
+   *     <listitem><para>#G_TYPE_UINT, the last seen RTP timestamp
+   *     </para></listitem>
+   *   </varlistentry>
+   * </variablelist>
+   **/
+  g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_STATS,
+      g_param_spec_boxed ("stats", "Statistics", "Various statistics",
+          GST_TYPE_STRUCTURE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+
   gstelement_class->change_state = gst_rtp_base_depayload_change_state;
 
   klass->packet_lost = gst_rtp_base_depayload_packet_lost;
@@ -168,6 +234,14 @@
   gst_pad_use_fixed_caps (filter->srcpad);
   gst_element_add_pad (GST_ELEMENT (filter), filter->srcpad);
 
+  priv->npt_start = 0;
+  priv->npt_stop = -1;
+  priv->play_speed = 1.0;
+  priv->play_scale = 1.0;
+  priv->dts = -1;
+  priv->pts = -1;
+  priv->duration = -1;
+
   gst_segment_init (&filter->segment, GST_FORMAT_UNDEFINED);
 }
 
@@ -297,6 +371,9 @@
   rtptime = gst_rtp_buffer_get_timestamp (&rtp);
   gst_rtp_buffer_unmap (&rtp);
 
+  priv->last_seqnum = seqnum;
+  priv->last_rtptime = rtptime;
+
   discont = buf_discont;
 
   GST_LOG_OBJECT (filter, "discont %d, seqnum %u, rtptime %u, pts %"
@@ -439,7 +516,7 @@
         /* we get this event from the jitterbuffer when it considers a packet as
          * being lost. We send it to our packet_lost vmethod. The default
          * implementation will make time progress by pushing out a GAP event.
-         * Subclasses can override and to one of the following:
+         * Subclasses can override and do one of the following:
          *  - Adjust timestamp/duration to something more accurate before
          *    calling the parent (default) packet_lost method.
          *  - do some more advanced error concealing on the already received
@@ -638,7 +715,7 @@
   return res;
 }
 
-/* convert the PacketLost event form a jitterbuffer to a GAP event.
+/* convert the PacketLost event from a jitterbuffer to a GAP event.
  * subclasses can override this.  */
 static gboolean
 gst_rtp_base_depayload_packet_lost (GstRTPBaseDepayload * filter,
@@ -709,6 +786,29 @@
   return ret;
 }
 
+static GstStructure *
+gst_rtp_base_depayload_create_stats (GstRTPBaseDepayload * depayload)
+{
+  GstRTPBaseDepayloadPrivate *priv;
+  GstStructure *s;
+
+  priv = depayload->priv;
+
+  s = gst_structure_new ("application/x-rtp-depayload-stats",
+      "clock_rate", G_TYPE_UINT, depayload->clock_rate,
+      "npt-start", G_TYPE_UINT64, priv->npt_start,
+      "npt-stop", G_TYPE_UINT64, priv->npt_stop,
+      "play-speed", G_TYPE_DOUBLE, priv->play_speed,
+      "play-scale", G_TYPE_DOUBLE, priv->play_scale,
+      "running-time-dts", G_TYPE_UINT64, priv->dts,
+      "running-time-pts", G_TYPE_UINT64, priv->pts,
+      "seqnum", G_TYPE_UINT, (guint) priv->last_seqnum,
+      "timestamp", G_TYPE_UINT, (guint) priv->last_rtptime, NULL);
+
+  return s;
+}
+
+
 static void
 gst_rtp_base_depayload_set_property (GObject * object, guint prop_id,
     const GValue * value, GParamSpec * pspec)
@@ -724,7 +824,15 @@
 gst_rtp_base_depayload_get_property (GObject * object, guint prop_id,
     GValue * value, GParamSpec * pspec)
 {
+  GstRTPBaseDepayload *depayload;
+
+  depayload = GST_RTP_BASE_DEPAYLOAD (object);
+
   switch (prop_id) {
+    case PROP_STATS:
+      g_value_take_boxed (value,
+          gst_rtp_base_depayload_create_stats (depayload));
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
diff --git a/gst-libs/gst/rtp/gstrtpbasepayload.c b/gst-libs/gst/rtp/gstrtpbasepayload.c
index ff63496..e3bf92a 100644
--- a/gst-libs/gst/rtp/gstrtpbasepayload.c
+++ b/gst-libs/gst/rtp/gstrtpbasepayload.c
@@ -46,6 +46,8 @@
 
   guint64 base_offset;
   gint64 base_rtime;
+  guint64 base_rtime_hz;
+  guint64 running_time;
 
   gint64 prop_max_ptime;
   gint64 caps_max_ptime;
@@ -54,6 +56,8 @@
 
   gboolean delay_segment;
   GstEvent *pending_segment;
+
+  GstCaps *subclass_srccaps;
 };
 
 /* RTPBasePayload signals and args */
@@ -78,6 +82,7 @@
 #define DEFAULT_MIN_PTIME               0
 #define DEFAULT_PERFECT_RTPTIME         TRUE
 #define DEFAULT_PTIME_MULTIPLE          0
+#define DEFAULT_RUNNING_TIME            GST_CLOCK_TIME_NONE
 
 enum
 {
@@ -93,6 +98,7 @@
   PROP_SEQNUM,
   PROP_PERFECT_RTPTIME,
   PROP_PTIME_MULTIPLE,
+  PROP_STATS,
   PROP_LAST
 };
 
@@ -108,6 +114,10 @@
     rtpbasepayload, GstEvent * event);
 static gboolean gst_rtp_base_payload_sink_event (GstPad * pad,
     GstObject * parent, GstEvent * event);
+static gboolean gst_rtp_base_payload_src_event_default (GstRTPBasePayload *
+    rtpbasepayload, GstEvent * event);
+static gboolean gst_rtp_base_payload_src_event (GstPad * pad,
+    GstObject * parent, GstEvent * event);
 static gboolean gst_rtp_base_payload_query_default (GstRTPBasePayload *
     rtpbasepayload, GstPad * pad, GstQuery * query);
 static gboolean gst_rtp_base_payload_query (GstPad * pad, GstObject * parent,
@@ -123,6 +133,9 @@
 static GstStateChangeReturn gst_rtp_base_payload_change_state (GstElement *
     element, GstStateChange transition);
 
+static gboolean gst_rtp_base_payload_negotiate (GstRTPBasePayload * payload);
+
+
 static GstElementClass *parent_class = NULL;
 
 GType
@@ -175,7 +188,7 @@
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
   g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_PT,
       g_param_spec_uint ("pt", "payload type",
-          "The payload type of the packets", 0, 0x80, DEFAULT_PT,
+          "The payload type of the packets", 0, 0x7f, DEFAULT_PT,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
   g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_SSRC,
       g_param_spec_uint ("ssrc", "SSRC",
@@ -197,7 +210,7 @@
           -1, G_MAXINT64, DEFAULT_MAX_PTIME,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
   /**
-   * GstRTPBaseAudioPayload:min-ptime:
+   * GstRTPBasePayload:min-ptime:
    *
    * Minimum duration of the packet data in ns (can't go above MTU)
    **/
@@ -217,19 +230,30 @@
           0, G_MAXUINT16, 0, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
 
   /**
-   * GstRTPBaseAudioPayload:perfect-rtptime:
+   * GstRTPBasePayload:perfect-rtptime:
    *
-   * Try to use the offset fields to generate perfect RTP timestamps. when this
-   * option is disabled, RTP timestamps are generated from the GStreamer
-   * timestamps, which could result in RTP timestamps that don't increment with
-   * the amount of data in the packet.
+   * Try to use the offset fields to generate perfect RTP timestamps. When this
+   * option is disabled, RTP timestamps are generated from GST_BUFFER_PTS of
+   * each payloaded buffer. The PTSes of buffers may not necessarily increment
+   * with the amount of data in each input buffer, consider e.g. the case where
+   * the buffer arrives from a network which means that the PTS is unrelated to
+   * the amount of data. Because the RTP timestamps are generated from
+   * GST_BUFFER_PTS this can result in RTP timestamps that also don't increment
+   * with the amount of data in the payloaded packet. To circumvent this it is
+   * possible to set the perfect rtptime option enabled. When this option is
+   * enabled the payloader will increment the RTP timestamps based on
+   * GST_BUFFER_OFFSET which relates to the amount of data in each packet
+   * rather than the GST_BUFFER_PTS of each buffer and therefore the RTP
+   * timestamps will more closely correlate with the amount of data in each
+   * buffer. Currently GstRTPBasePayload is limited to handling perfect RTP
+   * timestamps for audio streams.
    */
   g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_PERFECT_RTPTIME,
       g_param_spec_boolean ("perfect-rtptime", "Perfect RTP Time",
           "Generate perfect RTP timestamps when possible",
           DEFAULT_PERFECT_RTPTIME, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
   /**
-   * GstRTPBaseAudioPayload:ptime-multiple:
+   * GstRTPBasePayload:ptime-multiple:
    *
    * Force buffers to be multiples of this duration in ns (0 disables)
    **/
@@ -239,10 +263,67 @@
           0, G_MAXINT64, DEFAULT_PTIME_MULTIPLE,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
+  /**
+   * GstRTPBasePayload:stats:
+   *
+   * Various payloader statistics retrieved atomically (and are therefore
+   * synchroized with each other), these can be used e.g. to generate an
+   * RTP-Info header. This property return a GstStructure named
+   * application/x-rtp-payload-stats containing the following fields relating to
+   * the last processed buffer and current state of the stream being payloaded:
+   *
+   * <variablelist>
+   *   <varlistentry>
+   *     <term>clock-rate</term>
+   *     <listitem><para>#G_TYPE_UINT, clock-rate of the
+   *     stream</para></listitem>
+   *   </varlistentry>
+   *   <varlistentry>
+   *     <term>running-time</term>
+   *     <listitem><para>#G_TYPE_UINT64, running time
+   *     </para></listitem>
+   *   </varlistentry>
+   *   <varlistentry>
+   *     <term>seqnum</term>
+   *     <listitem><para>#G_TYPE_UINT, sequence number, same as
+   *     #GstRTPBasePayload:seqnum</para></listitem>
+   *   </varlistentry>
+   *   <varlistentry>
+   *     <term>timestamp</term>
+   *     <listitem><para>#G_TYPE_UINT, RTP timestamp, same as
+   *     #GstRTPBasePayload:timestamp</para></listitem>
+   *   </varlistentry>
+   *   <varlistentry>
+   *     <term>ssrc</term>
+   *     <listitem><para>#G_TYPE_UINT, The SSRC in use
+   *     </para></listitem>
+   *   </varlistentry>
+   *   <varlistentry>
+   *     <term>pt</term>
+   *     <listitem><para>#G_TYPE_UINT, The Payload type in use, same as
+   *     #GstRTPBasePayload:pt</para></listitem>
+   *   </varlistentry>
+   *   <varlistentry>
+   *     <term>seqnum-offset</term>
+   *     <listitem><para>#G_TYPE_UINT, The current offset added to the
+   *     seqnum</para></listitem>
+   *   </varlistentry>
+   *   <varlistentry>
+   *     <term>timestamp-offset</term>
+   *     <listitem><para>#G_TYPE_UINT, The current offset added to the
+   *     timestamp</para></listitem>
+   *   </varlistentry>
+   * </variablelist>
+   **/
+  g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_STATS,
+      g_param_spec_boxed ("stats", "Statistics", "Various statistics",
+          GST_TYPE_STRUCTURE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+
   gstelement_class->change_state = gst_rtp_base_payload_change_state;
 
   klass->get_caps = gst_rtp_base_payload_getcaps_default;
   klass->sink_event = gst_rtp_base_payload_sink_event_default;
+  klass->src_event = gst_rtp_base_payload_src_event_default;
   klass->query = gst_rtp_base_payload_query_default;
 
   GST_DEBUG_CATEGORY_INIT (rtpbasepayload_debug, "rtpbasepayload", 0,
@@ -263,6 +344,8 @@
   g_return_if_fail (templ != NULL);
 
   rtpbasepayload->srcpad = gst_pad_new_from_template (templ, "src");
+  gst_pad_set_event_function (rtpbasepayload->srcpad,
+      gst_rtp_base_payload_src_event);
   gst_element_add_pad (GST_ELEMENT (rtpbasepayload), rtpbasepayload->srcpad);
 
   templ =
@@ -283,6 +366,7 @@
   rtpbasepayload->seqnum_offset = DEFAULT_SEQNUM_OFFSET;
   rtpbasepayload->ssrc = DEFAULT_SSRC;
   rtpbasepayload->ts_offset = DEFAULT_TIMESTAMP_OFFSET;
+  priv->running_time = DEFAULT_RUNNING_TIME;
   priv->seqnum_offset_random = (rtpbasepayload->seqnum_offset == -1);
   priv->ts_offset_random = (rtpbasepayload->ts_offset == -1);
   priv->ssrc_random = (rtpbasepayload->ssrc == -1);
@@ -292,7 +376,7 @@
   rtpbasepayload->priv->perfect_rtptime = DEFAULT_PERFECT_RTPTIME;
   rtpbasepayload->ptime_multiple = DEFAULT_PTIME_MULTIPLE;
   rtpbasepayload->priv->base_offset = GST_BUFFER_OFFSET_NONE;
-  rtpbasepayload->priv->base_rtime = GST_BUFFER_OFFSET_NONE;
+  rtpbasepayload->priv->base_rtime_hz = GST_BUFFER_OFFSET_NONE;
 
   rtpbasepayload->media = NULL;
   rtpbasepayload->encoding_name = NULL;
@@ -315,6 +399,8 @@
   g_free (rtpbasepayload->encoding_name);
   rtpbasepayload->encoding_name = NULL;
 
+  gst_caps_replace (&rtpbasepayload->priv->subclass_srccaps, NULL);
+
   G_OBJECT_CLASS (parent_class)->finalize (object);
 }
 
@@ -365,7 +451,7 @@
       if (rtpbasepayload_class->set_caps)
         res = rtpbasepayload_class->set_caps (rtpbasepayload, caps);
       else
-        res = TRUE;
+        res = gst_rtp_base_payload_negotiate (rtpbasepayload);
 
       rtpbasepayload->priv->negotiated = res;
 
@@ -419,6 +505,83 @@
 }
 
 static gboolean
+gst_rtp_base_payload_src_event_default (GstRTPBasePayload * rtpbasepayload,
+    GstEvent * event)
+{
+  GstObject *parent = GST_OBJECT_CAST (rtpbasepayload);
+  gboolean res = TRUE, forward = TRUE;
+
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_CUSTOM_UPSTREAM:
+    {
+      const GstStructure *s = gst_event_get_structure (event);
+
+      if (gst_structure_has_name (s, "GstRTPCollision")) {
+        guint ssrc = 0;
+
+        if (!gst_structure_get_uint (s, "ssrc", &ssrc))
+          ssrc = -1;
+
+        GST_DEBUG_OBJECT (rtpbasepayload, "collided ssrc: %" G_GUINT32_FORMAT,
+            ssrc);
+
+        /* choose another ssrc for our stream */
+        if (ssrc == rtpbasepayload->current_ssrc) {
+          GstCaps *caps;
+          guint suggested_ssrc = 0;
+
+          if (gst_structure_get_uint (s, "suggested-ssrc", &suggested_ssrc))
+            rtpbasepayload->current_ssrc = suggested_ssrc;
+
+          while (ssrc == rtpbasepayload->current_ssrc)
+            rtpbasepayload->current_ssrc = g_random_int ();
+
+          caps = gst_pad_get_current_caps (rtpbasepayload->srcpad);
+          caps = gst_caps_make_writable (caps);
+          gst_caps_set_simple (caps,
+              "ssrc", G_TYPE_UINT, rtpbasepayload->current_ssrc, NULL);
+          res = gst_pad_set_caps (rtpbasepayload->srcpad, caps);
+          gst_caps_unref (caps);
+
+          /* the event was for us */
+          forward = FALSE;
+        }
+      }
+      break;
+    }
+    default:
+      break;
+  }
+
+  if (forward)
+    res = gst_pad_event_default (rtpbasepayload->srcpad, parent, event);
+  else
+    gst_event_unref (event);
+
+  return res;
+}
+
+static gboolean
+gst_rtp_base_payload_src_event (GstPad * pad, GstObject * parent,
+    GstEvent * event)
+{
+  GstRTPBasePayload *rtpbasepayload;
+  GstRTPBasePayloadClass *rtpbasepayload_class;
+  gboolean res = FALSE;
+
+  rtpbasepayload = GST_RTP_BASE_PAYLOAD (parent);
+  rtpbasepayload_class = GST_RTP_BASE_PAYLOAD_GET_CLASS (rtpbasepayload);
+
+  if (rtpbasepayload_class->src_event)
+    res = rtpbasepayload_class->src_event (rtpbasepayload, event);
+  else
+    gst_event_unref (event);
+
+  return res;
+}
+
+
+static gboolean
 gst_rtp_base_payload_query_default (GstRTPBasePayload * rtpbasepayload,
     GstPad * pad, GstQuery * query)
 {
@@ -484,6 +647,9 @@
   if (!rtpbasepayload->priv->negotiated)
     goto not_negotiated;
 
+  if (gst_pad_check_reconfigure (GST_RTP_BASE_PAYLOAD_SRCPAD (rtpbasepayload)))
+    gst_rtp_base_payload_negotiate (rtpbasepayload);
+
   ret = rtpbasepayload_class->handle_buffer (rtpbasepayload, buffer);
 
   return ret;
@@ -575,8 +741,7 @@
 gst_rtp_base_payload_set_outcaps (GstRTPBasePayload * payload,
     const gchar * fieldname, ...)
 {
-  GstCaps *srccaps, *peercaps;
-  gboolean res;
+  GstCaps *srccaps;
 
   /* fill in the defaults, their properties cannot be negotiated. */
   srccaps = gst_caps_new_simple ("application/x-rtp",
@@ -597,13 +762,39 @@
     GST_DEBUG_OBJECT (payload, "custom added: %" GST_PTR_FORMAT, srccaps);
   }
 
+  gst_caps_replace (&payload->priv->subclass_srccaps, srccaps);
+  gst_caps_unref (srccaps);
+
+  return gst_rtp_base_payload_negotiate (payload);
+}
+
+static gboolean
+gst_rtp_base_payload_negotiate (GstRTPBasePayload * payload)
+{
+  GstCaps *peercaps, *filter, *srccaps;
+  gboolean res;
+
   payload->priv->caps_max_ptime = DEFAULT_MAX_PTIME;
   payload->ptime = 0;
 
-  /* the peer caps can override some of the defaults */
-  peercaps = gst_pad_peer_query_caps (payload->srcpad, srccaps);
+  gst_pad_check_reconfigure (payload->srcpad);
+
+  filter = gst_pad_get_pad_template_caps (payload->srcpad);
+
+  if (payload->priv->subclass_srccaps) {
+    GstCaps *tmp = gst_caps_intersect (payload->priv->subclass_srccaps,
+        filter);
+    gst_caps_unref (filter);
+    filter = tmp;
+  }
+
+  peercaps = gst_pad_peer_query_caps (payload->srcpad, filter);
+  gst_caps_unref (filter);
+
   if (peercaps == NULL) {
     /* no peer caps, just add the other properties */
+
+    srccaps = gst_caps_copy (payload->priv->subclass_srccaps);
     gst_caps_set_simple (srccaps,
         "payload", G_TYPE_INT, GST_RTP_BASE_PAYLOAD_PT (payload),
         "ssrc", G_TYPE_UINT, payload->current_ssrc,
@@ -621,7 +812,6 @@
     /* peer provides caps we can use to fixate. They are already intersected
      * with our srccaps, just make them writable */
     temp = gst_caps_make_writable (peercaps);
-    gst_caps_unref (srccaps);
 
     if (gst_caps_is_empty (temp)) {
       gst_caps_unref (temp);
@@ -651,6 +841,7 @@
             GST_RTP_BASE_PAYLOAD_PT (payload));
         gst_structure_get_int (s, "payload", &pt);
         GST_LOG_OBJECT (payload, "using peer pt %d", pt);
+        GST_RTP_BASE_PAYLOAD_PT (payload) = pt;
       } else {
         /* no pt field, use the internal pt */
         pt = GST_RTP_BASE_PAYLOAD_PT (payload);
@@ -687,6 +878,9 @@
       payload->seqnum_base = g_value_get_uint (value);
       GST_LOG_OBJECT (payload, "using peer seqnum-offset %u",
           payload->seqnum_base);
+      payload->priv->next_seqnum = payload->seqnum_base;
+      payload->seqnum = payload->seqnum_base;
+      payload->priv->seqnum_offset_random = FALSE;
     } else {
       /* FIXME, fixate_nearest_uint would be even better */
       gst_structure_set (s, "seqnum-offset", G_TYPE_UINT, payload->seqnum_base,
@@ -834,32 +1028,55 @@
   /* convert to RTP time */
   if (priv->perfect_rtptime && data.offset != GST_BUFFER_OFFSET_NONE &&
       priv->base_offset != GST_BUFFER_OFFSET_NONE) {
-    /* if we have an offset, use that for making an RTP timestamp */
-    data.rtptime = payload->ts_base + priv->base_rtime +
-        data.offset - priv->base_offset;
+    /* generate perfect RTP time by adding together the base timestamp, the
+     * running time of the first buffer and difference between the offset of the
+     * first buffer and the offset of the current buffer. */
+    guint64 offset = data.offset - priv->base_offset;
+    data.rtptime = payload->ts_base + priv->base_rtime_hz + offset;
+
     GST_LOG_OBJECT (payload,
         "Using offset %" G_GUINT64_FORMAT " for RTP timestamp", data.offset);
+
+    /* store buffer's running time */
+    GST_LOG_OBJECT (payload,
+        "setting running-time to %" G_GUINT64_FORMAT,
+        data.offset - priv->base_offset);
+    priv->running_time = priv->base_rtime + data.offset - priv->base_offset;
   } else if (GST_CLOCK_TIME_IS_VALID (data.pts)) {
-    gint64 rtime;
+    guint64 rtime_ns;
+    guint64 rtime_hz;
 
     /* no offset, use the gstreamer pts */
-    rtime = gst_segment_to_running_time (&payload->segment, GST_FORMAT_TIME,
+    rtime_ns = gst_segment_to_running_time (&payload->segment, GST_FORMAT_TIME,
         data.pts);
 
-    if (rtime == -1) {
+    if (!GST_CLOCK_TIME_IS_VALID (rtime_ns)) {
       GST_LOG_OBJECT (payload, "Clipped pts, using base RTP timestamp");
-      rtime = 0;
+      rtime_hz = 0;
     } else {
       GST_LOG_OBJECT (payload,
           "Using running_time %" GST_TIME_FORMAT " for RTP timestamp",
-          GST_TIME_ARGS (rtime));
-      rtime =
-          gst_util_uint64_scale_int (rtime, payload->clock_rate, GST_SECOND);
+          GST_TIME_ARGS (rtime_ns));
+      rtime_hz =
+          gst_util_uint64_scale_int (rtime_ns, payload->clock_rate, GST_SECOND);
       priv->base_offset = data.offset;
-      priv->base_rtime = rtime;
+      priv->base_rtime_hz = rtime_hz;
     }
+
     /* add running_time in clock-rate units to the base timestamp */
-    data.rtptime = payload->ts_base + rtime;
+    data.rtptime = payload->ts_base + rtime_hz;
+
+    /* store buffer's running time */
+    if (priv->perfect_rtptime) {
+      GST_LOG_OBJECT (payload,
+          "setting running-time to %" G_GUINT64_FORMAT, rtime_hz);
+      priv->running_time = rtime_hz;
+    } else {
+      GST_LOG_OBJECT (payload,
+          "setting running-time to %" GST_TIME_FORMAT,
+          GST_TIME_ARGS (rtime_ns));
+      priv->running_time = rtime_ns;
+    }
   } else {
     GST_LOG_OBJECT (payload,
         "Using previous RTP timestamp %" G_GUINT32_FORMAT, payload->timestamp);
@@ -883,8 +1100,8 @@
       (is_list) ? -1 : gst_buffer_get_size (GST_BUFFER (obj)),
       payload->seqnum, data.rtptime, GST_TIME_ARGS (data.pts));
 
-  if (g_atomic_int_compare_and_exchange (&payload->priv->
-          notified_first_timestamp, 1, 0)) {
+  if (g_atomic_int_compare_and_exchange (&payload->
+          priv->notified_first_timestamp, 1, 0)) {
     g_object_notify (G_OBJECT (payload), "timestamp");
     g_object_notify (G_OBJECT (payload), "seqnum");
   }
@@ -967,6 +1184,27 @@
   return res;
 }
 
+static GstStructure *
+gst_rtp_base_payload_create_stats (GstRTPBasePayload * rtpbasepayload)
+{
+  GstRTPBasePayloadPrivate *priv;
+  GstStructure *s;
+
+  priv = rtpbasepayload->priv;
+
+  s = gst_structure_new ("application/x-rtp-payload-stats",
+      "clock-rate", G_TYPE_UINT, (guint) rtpbasepayload->clock_rate,
+      "running-time", G_TYPE_UINT64, priv->running_time,
+      "seqnum", G_TYPE_UINT, (guint) rtpbasepayload->seqnum,
+      "timestamp", G_TYPE_UINT, (guint) rtpbasepayload->timestamp,
+      "ssrc", G_TYPE_UINT, rtpbasepayload->current_ssrc,
+      "pt", G_TYPE_UINT, rtpbasepayload->pt,
+      "seqnum-offset", G_TYPE_UINT, (guint) rtpbasepayload->seqnum_base,
+      "timestamp-offset", G_TYPE_UINT, (guint) rtpbasepayload->ts_base, NULL);
+
+  return s;
+}
+
 static void
 gst_rtp_base_payload_set_property (GObject * object, guint prop_id,
     const GValue * value, GParamSpec * pspec)
@@ -1074,6 +1312,10 @@
     case PROP_PTIME_MULTIPLE:
       g_value_set_int64 (value, rtpbasepayload->ptime_multiple);
       break;
+    case PROP_STATS:
+      g_value_take_boxed (value,
+          gst_rtp_base_payload_create_stats (rtpbasepayload));
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -1100,7 +1342,7 @@
       gst_event_replace (&rtpbasepayload->priv->pending_segment, NULL);
 
       if (priv->seqnum_offset_random)
-        rtpbasepayload->seqnum_base = g_random_int_range (0, G_MAXUINT16);
+        rtpbasepayload->seqnum_base = g_random_int_range (0, G_MAXINT16);
       else
         rtpbasepayload->seqnum_base = rtpbasepayload->seqnum_offset;
       priv->next_seqnum = rtpbasepayload->seqnum_base;
@@ -1116,9 +1358,11 @@
       else
         rtpbasepayload->ts_base = rtpbasepayload->ts_offset;
       rtpbasepayload->timestamp = rtpbasepayload->ts_base;
+      priv->running_time = DEFAULT_RUNNING_TIME;
       g_atomic_int_set (&rtpbasepayload->priv->notified_first_timestamp, 1);
       priv->base_offset = GST_BUFFER_OFFSET_NONE;
       priv->negotiated = FALSE;
+      gst_caps_replace (&rtpbasepayload->priv->subclass_srccaps, NULL);
       break;
     default:
       break;
diff --git a/gst-libs/gst/rtp/gstrtpbuffer.c b/gst-libs/gst/rtp/gstrtpbuffer.c
index a2379da..6ff9256 100644
--- a/gst-libs/gst/rtp/gstrtpbuffer.c
+++ b/gst-libs/gst/rtp/gstrtpbuffer.c
@@ -30,8 +30,6 @@
  * 'application/x-rtp' #GstCaps.
  * </para>
  * </refsect2>
- *
- * Last reviewed on 2006-07-17 (0.10.10)
  */
 
 #include "gstrtpbuffer.h"
@@ -296,6 +294,10 @@
 {
   g_return_val_if_fail (csrc_count <= 15, 0);
 
+  if (packet_len <
+      GST_RTP_HEADER_LEN + (csrc_count * sizeof (guint32)) + pad_len)
+    return 0;
+
   return packet_len - GST_RTP_HEADER_LEN - (csrc_count * sizeof (guint32))
       - pad_len;
 }
@@ -405,11 +407,11 @@
       goto map_failed;
 
     padding = rtp->map[3].data[skip];
-    if (skip + 1 < padding)
-      goto wrong_length;
-
     rtp->data[3] = rtp->map[3].data + skip + 1 - padding;
     rtp->size[3] = padding;
+
+    if (skip + 1 < padding)
+      goto wrong_length;
   } else {
     rtp->data[3] = NULL;
     rtp->size[3] = 0;
@@ -1044,7 +1046,7 @@
  *
  * Create a subbuffer of the payload of the RTP packet in @buffer. @offset bytes
  * are skipped in the payload and the subbuffer will be of size @len.
- * If @len is -1 the total payload starting from @offset if subbuffered.
+ * If @len is -1 the total payload starting from @offset is subbuffered.
  *
  * Returns: A new buffer with the specified data of the payload.
  */
@@ -1056,7 +1058,7 @@
 
   plen = gst_rtp_buffer_get_payload_len (rtp);
   /* we can't go past the length */
-  if (G_UNLIKELY (offset >= plen))
+  if (G_UNLIKELY (offset > plen))
     goto wrong_offset;
 
   /* apply offset */
@@ -1073,7 +1075,7 @@
   /* ERRORS */
 wrong_offset:
   {
-    g_warning ("offset=%u should be less then plen=%u", offset, plen);
+    g_warning ("offset=%u should be less than plen=%u", offset, plen);
     return NULL;
   }
 }
diff --git a/gst-libs/gst/rtp/gstrtphdrext.c b/gst-libs/gst/rtp/gstrtphdrext.c
index ed8f33a..9314ba4 100644
--- a/gst-libs/gst/rtp/gstrtphdrext.c
+++ b/gst-libs/gst/rtp/gstrtphdrext.c
@@ -26,8 +26,6 @@
  * <para>
  * </para>
  * </refsect2>
- *
- * Last reviewed on 2012-09-24 (1.0)
  */
 
 #include "gstrtphdrext.h"
diff --git a/gst-libs/gst/rtp/gstrtppayloads.c b/gst-libs/gst/rtp/gstrtppayloads.c
index 5717ec6..4a38f80 100644
--- a/gst-libs/gst/rtp/gstrtppayloads.c
+++ b/gst-libs/gst/rtp/gstrtppayloads.c
@@ -32,8 +32,6 @@
  * and get session bandwidth information.
  * </para>
  * </refsect2>
- *
- * Last reviewed on 2007-10-01 (0.10.15)
  */
 
 #include <string.h>
diff --git a/gst-libs/gst/rtsp/Makefile.in b/gst-libs/gst/rtsp/Makefile.in
index 2f5e509..3c398a4 100644
--- a/gst-libs/gst/rtsp/Makefile.in
+++ b/gst-libs/gst/rtsp/Makefile.in
@@ -99,7 +99,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -452,9 +451,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/gst-libs/gst/rtsp/gstrtspconnection.c b/gst-libs/gst/rtsp/gstrtspconnection.c
index ef1fcf1..7ab28ca 100644
--- a/gst-libs/gst/rtsp/gstrtspconnection.c
+++ b/gst-libs/gst/rtsp/gstrtspconnection.c
@@ -44,11 +44,9 @@
  * SECTION:gstrtspconnection
  * @short_description: manage RTSP connections
  * @see_also: gstrtspurl
- *  
+ *
  * This object manages the RTSP connection to the server. It provides function
  * to receive and send bytes and messages.
- *  
- * Last reviewed on 2007-07-24 (0.10.14)
  */
 
 #ifdef HAVE_CONFIG_H
@@ -65,6 +63,11 @@
 #include <glib.h>
 #include <gst/gst.h>
 
+/* necessary for IP_TOS define */
+#if GLIB_CHECK_VERSION(2, 36, 0)
+#include <gio/gnetworking.h>
+#endif
+
 #include "gstrtspconnection.h"
 
 #ifdef IP_TOS
@@ -154,6 +157,9 @@
   gchar *passwd;
   GHashTable *auth_params;
 
+  /* TLS */
+  GTlsDatabase *tls_database;
+
   DecodeCtx ctx;
   DecodeCtx *ctxp;
 
@@ -198,9 +204,69 @@
   memset (builder, 0, sizeof (GstRTSPBuilder));
 }
 
+static gboolean
+tls_accept_certificate (GTlsConnection * conn, GTlsCertificate * peer_cert,
+    GTlsCertificateFlags errors, GstRTSPConnection * rtspconn)
+{
+  GError *error = NULL;
+  gboolean accept = FALSE;
+
+  if (rtspconn->tls_database) {
+    GSocketConnectable *peer_identity;
+    GTlsCertificateFlags validation_flags;
+
+    GST_DEBUG ("TLS peer certificate not accepted, checking user database...");
+
+    peer_identity =
+        g_tls_client_connection_get_server_identity (G_TLS_CLIENT_CONNECTION
+        (conn));
+
+    errors =
+        g_tls_database_verify_chain (rtspconn->tls_database, peer_cert,
+        G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER, peer_identity,
+        g_tls_connection_get_interaction (conn), G_TLS_DATABASE_VERIFY_NONE,
+        NULL, &error);
+
+    if (error)
+      goto verify_error;
+
+    validation_flags = gst_rtsp_connection_get_tls_validation_flags (rtspconn);
+
+    accept = ((errors & validation_flags) == 0);
+    if (accept)
+      GST_DEBUG ("Peer certificate accepted");
+    else
+      GST_DEBUG ("Peer certificate not accepted (errors: 0x%08X)", errors);
+  }
+
+  return accept;
+
+/* ERRORS */
+verify_error:
+  {
+    GST_ERROR ("An error occurred while verifying the peer certificate: %s",
+        error->message);
+    g_clear_error (&error);
+    return FALSE;
+  }
+}
+
+static void
+socket_client_event (GSocketClient * client, GSocketClientEvent event,
+    GSocketConnectable * connectable, GIOStream * connection,
+    GstRTSPConnection * rtspconn)
+{
+  if (event == G_SOCKET_CLIENT_TLS_HANDSHAKING) {
+    GST_DEBUG ("TLS handshaking about to start...");
+
+    g_signal_connect (connection, "accept-certificate",
+        (GCallback) tls_accept_certificate, rtspconn);
+  }
+}
+
 /**
  * gst_rtsp_connection_create:
- * @url: a #GstRTSPUrl 
+ * @url: a #GstRTSPUrl
  * @conn: (out) (transfer full): storage for a #GstRTSPConnection
  *
  * Create a newly allocated #GstRTSPConnection from @url and store it in @conn.
@@ -228,6 +294,9 @@
   if (url->transports & GST_RTSP_LOWER_TRANS_TLS)
     g_socket_client_set_tls (newconn->client, TRUE);
 
+  g_signal_connect (newconn->client, "event", (GCallback) socket_client_event,
+      newconn);
+
   newconn->url = gst_rtsp_url_copy (url);
   newconn->timer = g_timer_new ();
   newconn->timeout = 60;
@@ -497,6 +566,62 @@
   return g_socket_client_get_tls_validation_flags (conn->client);
 }
 
+/**
+ * gst_rtsp_connection_set_tls_database:
+ * @conn: a #GstRTSPConnection
+ * @database: a #GTlsDatabase
+ *
+ * Sets the anchor certificate authorities database. This certificate
+ * database will be used to verify the server's certificate in case it
+ * can't be verified with the default certificate database first.
+ *
+ * Since: 1.4
+ */
+void
+gst_rtsp_connection_set_tls_database (GstRTSPConnection * conn,
+    GTlsDatabase * database)
+{
+  GTlsDatabase *old_db;
+
+  g_return_if_fail (conn != NULL);
+
+  if (database)
+    g_object_ref (database);
+
+  old_db = conn->tls_database;
+  conn->tls_database = database;
+
+  if (old_db)
+    g_object_unref (old_db);
+}
+
+/**
+ * gst_rtsp_connection_get_tls_database:
+ * @conn: a #GstRTSPConnection
+ *
+ * Gets the anchor certificate authorities database that will be used
+ * after a server certificate can't be verified with the default
+ * certificate database.
+ *
+ * Returns: (transfer full): the anchor certificate authorities database, or NULL if no
+ * database has been previously set. Use g_object_unref() to release the
+ * certificate database.
+ *
+ * Since: 1.4
+ */
+GTlsDatabase *
+gst_rtsp_connection_get_tls_database (GstRTSPConnection * conn)
+{
+  GTlsDatabase *result;
+
+  g_return_val_if_fail (conn != NULL, NULL);
+
+  if ((result = conn->tls_database))
+    g_object_ref (result);
+
+  return result;
+}
+
 static GstRTSPResult
 setup_tunneling (GstRTSPConnection * conn, GTimeVal * timeout, gchar * uri)
 {
@@ -666,7 +791,7 @@
 
 /**
  * gst_rtsp_connection_connect:
- * @conn: a #GstRTSPConnection 
+ * @conn: a #GstRTSPConnection
  * @timeout: a #GTimeVal timeout
  *
  * Attempt to connect to the url of @conn made with
@@ -1223,7 +1348,7 @@
  * Attempt to write @size bytes of @data to the connected @conn, blocking up to
  * the specified @timeout. @timeout can be #NULL, in which case this function
  * might block forever.
- * 
+ *
  * This function can be cancelled with gst_rtsp_connection_flush().
  *
  * Returns: #GST_RTSP_OK on success.
@@ -1363,7 +1488,7 @@
  * Attempt to send @message to the connected @conn, blocking up to
  * the specified @timeout. @timeout can be #NULL, in which case this function
  * might block forever.
- * 
+ *
  * This function can be cancelled with gst_rtsp_connection_flush().
  *
  * Returns: #GST_RTSP_OK on success.
@@ -2082,7 +2207,7 @@
  *
  * Close the connected @conn. After this call, the connection is in the same
  * state as when it was first created.
- * 
+ *
  * Returns: #GST_RTSP_OK on success.
  */
 GstRTSPResult
@@ -2140,7 +2265,7 @@
  * @conn: a #GstRTSPConnection
  *
  * Close and free @conn.
- * 
+ *
  * Returns: #GST_RTSP_OK on success.
  */
 GstRTSPResult
@@ -2156,6 +2281,8 @@
     g_object_unref (conn->cancellable);
   if (conn->client)
     g_object_unref (conn->client);
+  if (conn->tls_database)
+    g_object_unref (conn->tls_database);
 
   g_timer_destroy (conn->timer);
   gst_rtsp_url_free (conn->url);
@@ -2169,7 +2296,7 @@
  * gst_rtsp_connection_poll:
  * @conn: a #GstRTSPConnection
  * @events: a bitmask of #GstRTSPEvent flags to check
- * @revents: location for result flags 
+ * @revents: location for result flags
  * @timeout: a timeout
  *
  * Wait up to the specified @timeout for the connection to become available for
@@ -2180,14 +2307,13 @@
  * @timeout can be #NULL, in which case this function might block forever.
  *
  * This function can be cancelled with gst_rtsp_connection_flush().
- * 
+ *
  * Returns: #GST_RTSP_OK on success.
  */
 GstRTSPResult
 gst_rtsp_connection_poll (GstRTSPConnection * conn, GstRTSPEvent events,
     GstRTSPEvent * revents, GTimeVal * timeout)
 {
-  GstClockTime to;
   GMainContext *ctx;
   GSource *rs, *ws, *ts;
   GIOCondition condition;
@@ -2201,45 +2327,43 @@
   ctx = g_main_context_new ();
 
   /* configure timeout if any */
-  to = timeout ? GST_TIMEVAL_TO_TIME (*timeout) : GST_CLOCK_TIME_NONE;
-
   if (timeout) {
-    ts = g_timeout_source_new (to / GST_MSECOND);
+    ts = g_timeout_source_new (GST_TIMEVAL_TO_TIME (*timeout) / GST_MSECOND);
     g_source_set_dummy_callback (ts);
     g_source_attach (ts, ctx);
     g_source_unref (ts);
   }
 
-  rs = g_socket_create_source (conn->read_socket,
-      G_IO_IN | G_IO_PRI | G_IO_ERR | G_IO_HUP, conn->cancellable);
-  g_source_set_dummy_callback (rs);
-  g_source_attach (rs, ctx);
-  g_source_unref (rs);
+  if (events & GST_RTSP_EV_READ) {
+    rs = g_socket_create_source (conn->read_socket, G_IO_IN | G_IO_PRI,
+        conn->cancellable);
+    g_source_set_dummy_callback (rs);
+    g_source_attach (rs, ctx);
+    g_source_unref (rs);
+  }
 
-  ws = g_socket_create_source (conn->write_socket,
-      G_IO_OUT | G_IO_ERR | G_IO_HUP, conn->cancellable);
-  g_source_set_dummy_callback (ws);
-  g_source_attach (ws, ctx);
-  g_source_unref (ws);
+  if (events & GST_RTSP_EV_WRITE) {
+    ws = g_socket_create_source (conn->write_socket, G_IO_OUT,
+        conn->cancellable);
+    g_source_set_dummy_callback (ws);
+    g_source_attach (ws, ctx);
+    g_source_unref (ws);
+  }
 
   /* Returns after handling all pending events */
-  g_main_context_iteration (ctx, TRUE);
+  while (!g_main_context_iteration (ctx, TRUE));
 
   g_main_context_unref (ctx);
 
-  condition =
-      g_socket_condition_check (conn->read_socket,
-      G_IO_IN | G_IO_PRI | G_IO_ERR | G_IO_HUP);
-  condition |=
-      g_socket_condition_check (conn->write_socket,
-      G_IO_OUT | G_IO_ERR | G_IO_HUP);
-
   *revents = 0;
   if (events & GST_RTSP_EV_READ) {
+    condition = g_socket_condition_check (conn->read_socket,
+        G_IO_IN | G_IO_PRI);
     if ((condition & G_IO_IN) || (condition & G_IO_PRI))
       *revents |= GST_RTSP_EV_READ;
   }
   if (events & GST_RTSP_EV_WRITE) {
+    condition = g_socket_condition_check (conn->write_socket, G_IO_OUT);
     if ((condition & G_IO_OUT))
       *revents |= GST_RTSP_EV_WRITE;
   }
@@ -2327,7 +2451,7 @@
  * Start or stop the flushing action on @conn. When flushing, all current
  * and future actions on @conn will return #GST_RTSP_EINTR until the connection
  * is set to non-flushing mode again.
- * 
+ *
  * Returns: #GST_RTSP_OK.
  */
 GstRTSPResult
@@ -2350,7 +2474,7 @@
  * @port: the proxy port
  *
  * Set the proxy host and port.
- * 
+ *
  * Returns: #GST_RTSP_OK.
  */
 GstRTSPResult
@@ -2375,7 +2499,7 @@
  *
  * Configure @conn for authentication mode @method with @user and @pass as the
  * user and password respectively.
- * 
+ *
  * Returns: #GST_RTSP_OK.
  */
 GstRTSPResult
@@ -2492,6 +2616,7 @@
 set_qos_dscp (GSocket * socket, guint qos_dscp)
 {
 #ifndef IP_TOS
+  GST_FIXME ("IP_TOS socket option is not defined, not setting dscp");
   return GST_RTSP_OK;
 #else
   gint fd;
@@ -2518,14 +2643,22 @@
   /* extract and shift 6 bits of the DSCP */
   tos = (qos_dscp & 0x3f) << 2;
 
+#ifdef G_OS_WIN32
+#  define SETSOCKOPT_ARG4_TYPE const char *
+#else
+#  define SETSOCKOPT_ARG4_TYPE const void *
+#endif
+
   switch (af) {
     case AF_INET:
-      if (setsockopt (fd, IPPROTO_IP, IP_TOS, &tos, sizeof (tos)) < 0)
+      if (setsockopt (fd, IPPROTO_IP, IP_TOS, (SETSOCKOPT_ARG4_TYPE) & tos,
+              sizeof (tos)) < 0)
         goto no_setsockopt;
       break;
     case AF_INET6:
 #ifdef IPV6_TCLASS
-      if (setsockopt (fd, IPPROTO_IPV6, IPV6_TCLASS, &tos, sizeof (tos)) < 0)
+      if (setsockopt (fd, IPPROTO_IPV6, IPV6_TCLASS,
+              (SETSOCKOPT_ARG4_TYPE) & tos, sizeof (tos)) < 0)
         goto no_setsockopt;
       break;
 #endif
@@ -2630,8 +2763,8 @@
  *
  * Get the file descriptor for reading.
  *
- * Returns: the file descriptor used for reading or %NULL on error. The file
- * descriptor remains valid until the connection is closed.
+ * Returns: (transfer none): the file descriptor used for reading or %NULL on
+ * error. The file descriptor remains valid until the connection is closed.
  */
 GSocket *
 gst_rtsp_connection_get_read_socket (const GstRTSPConnection * conn)
@@ -2648,8 +2781,8 @@
  *
  * Get the file descriptor for writing.
  *
- * Returns: the file descriptor used for writing or NULL on error. The file
- * descriptor remains valid until the connection is closed.
+ * Returns: (transfer none): the file descriptor used for writing or NULL on
+ * error. The file descriptor remains valid until the connection is closed.
  */
 GSocket *
 gst_rtsp_connection_get_write_socket (const GstRTSPConnection * conn)
@@ -2699,7 +2832,7 @@
  * gst_rtsp_connection_is_tunneled:
  * @conn: a #GstRTSPConnection
  *
- * Get the tunneling state of the connection. 
+ * Get the tunneling state of the connection.
  *
  * Returns: if @conn is using HTTP tunneling.
  */
@@ -2715,7 +2848,7 @@
  * gst_rtsp_connection_get_tunnelid:
  * @conn: a #GstRTSPConnection
  *
- * Get the tunnel session id the connection. 
+ * Get the tunnel session id the connection.
  *
  * Returns: returns a non-empty string if @conn is being tunneled over HTTP.
  */
@@ -2872,6 +3005,8 @@
   guint write_id;
   gsize max_bytes;
   guint max_messages;
+  GCond queue_not_full;
+  gboolean flushing;
 
   GstRTSPWatchFuncs funcs;
 
@@ -2879,6 +3014,9 @@
   GDestroyNotify notify;
 };
 
+#define IS_BACKLOG_FULL(w) (((w)->max_bytes != 0 && (w)->messages_bytes >= (w)->max_bytes) || \
+      ((w)->max_messages != 0 && (w)->messages->length >= (w)->max_messages))
+
 static gboolean
 gst_rtsp_source_prepare (GSource * source, gint * timeout)
 {
@@ -3011,6 +3149,9 @@
 
         /* queue the response */
         response = gen_tunnel_reply (conn, code, &watch->message);
+        if (watch->funcs.tunnel_http_response)
+          watch->funcs.tunnel_http_response (watch, &watch->message, response,
+              watch->user_data);
         gst_rtsp_watch_send_message (watch, response, NULL);
         gst_rtsp_message_free (response);
         goto read_done;
@@ -3153,6 +3294,9 @@
 
     res = write_bytes (conn->output_stream, watch->write_data,
         &watch->write_off, watch->write_size, FALSE, conn->cancellable);
+
+    if (!IS_BACKLOG_FULL (watch))
+      g_cond_signal (&watch->queue_not_full);
     g_mutex_unlock (&watch->mutex);
 
     if (res == GST_RTSP_EINTR)
@@ -3211,7 +3355,9 @@
   g_queue_free (watch->messages);
   watch->messages = NULL;
   watch->messages_bytes = 0;
+
   g_free (watch->write_data);
+  g_cond_clear (&watch->queue_not_full);
 
   if (watch->readsrc)
     g_source_unref (watch->readsrc);
@@ -3246,7 +3392,7 @@
  * called with @user_data when activity happened on the watch.
  *
  * The new watch is usually created so that it can be attached to a
- * maincontext with gst_rtsp_watch_attach(). 
+ * maincontext with gst_rtsp_watch_attach().
  *
  * @conn must exist for the entire lifetime of the watch.
  *
@@ -3272,9 +3418,11 @@
 
   g_mutex_init (&result->mutex);
   result->messages = g_queue_new ();
+  g_cond_init (&result->queue_not_full);
 
   gst_rtsp_watch_reset (result);
   result->keep_running = TRUE;
+  result->flushing = FALSE;
 
   result->funcs = *funcs;
   result->user_data = user_data;
@@ -3344,7 +3492,7 @@
  *
  * Adds a #GstRTSPWatch to a context so that it will be executed within that context.
  *
- * Returns: the ID (greater than 0) for the watch within the GMainContext. 
+ * Returns: the ID (greater than 0) for the watch within the GMainContext.
  */
 guint
 gst_rtsp_watch_attach (GstRTSPWatch * watch, GMainContext * context)
@@ -3381,7 +3529,7 @@
  *
  * A value of 0 for @bytes or @messages means no limits.
  *
- * Since: 1.1.1
+ * Since: 1.2
  */
 void
 gst_rtsp_watch_set_send_backlog (GstRTSPWatch * watch,
@@ -3392,6 +3540,8 @@
   g_mutex_lock (&watch->mutex);
   watch->max_bytes = bytes;
   watch->max_messages = messages;
+  if (!IS_BACKLOG_FULL (watch))
+    g_cond_signal (&watch->queue_not_full);
   g_mutex_unlock (&watch->mutex);
 
   GST_DEBUG ("set backlog to bytes %" G_GSIZE_FORMAT ", messages %u",
@@ -3407,7 +3557,7 @@
  * Get the maximum amount of bytes and messages that will be queued in @watch.
  * See gst_rtsp_watch_set_send_backlog().
  *
- * Since: 1.1.1
+ * Since: 1.2
  */
 void
 gst_rtsp_watch_get_send_backlog (GstRTSPWatch * watch,
@@ -3444,7 +3594,7 @@
  * #GST_RTSP_ENOMEM.
  *
  * Returns: #GST_RTSP_OK on success. #GST_RTSP_ENOMEM when the backlog limits
- * are reached.
+ * are reached. #GST_RTSP_EINTR when @watch was flushing.
  */
 GstRTSPResult
 gst_rtsp_watch_write_data (GstRTSPWatch * watch, const guint8 * data,
@@ -3460,6 +3610,8 @@
   g_return_val_if_fail (size != 0, GST_RTSP_EINVAL);
 
   g_mutex_lock (&watch->mutex);
+  if (watch->flushing)
+    goto flushing;
 
   /* try to send the message synchronously first */
   if (watch->messages->length == 0 && watch->write_data == NULL) {
@@ -3475,9 +3627,7 @@
   }
 
   /* check limits */
-  if ((watch->max_bytes != 0 && watch->messages_bytes >= watch->max_bytes) ||
-      (watch->max_messages != 0
-          && watch->messages->length >= watch->max_messages))
+  if (IS_BACKLOG_FULL (watch))
     goto too_much_backlog;
 
   /* make a record with the data and id for sending async */
@@ -3533,6 +3683,13 @@
   return res;
 
   /* ERRORS */
+flushing:
+  {
+    GST_DEBUG ("we are flushing");
+    g_mutex_unlock (&watch->mutex);
+    g_free ((gpointer) data);
+    return GST_RTSP_EINTR;
+  }
 too_much_backlog:
   {
     GST_WARNING ("too much backlog: max_bytes %" G_GSIZE_FORMAT ", current %"
@@ -3575,3 +3732,96 @@
   return gst_rtsp_watch_write_data (watch,
       (guint8 *) g_string_free (str, FALSE), size, id);
 }
+
+/**
+ * gst_rtsp_watch_wait_backlog:
+ * @watch: a #GstRTSPWatch
+ * @timeout: a #GTimeVal timeout
+ *
+ * Wait until there is place in the backlog queue, @timeout is reached
+ * or @watch is set to flushing.
+ *
+ * If @timeout is #NULL this function can block forever. If @timeout
+ * contains a valid timeout, this function will return #GST_RTSP_ETIMEOUT
+ * after the timeout expired.
+ *
+ * The typically use of this function is when gst_rtsp_watch_write_data
+ * returns GST_RTSP_ENOMEM. The caller then calls this function to wait for
+ * free space in the backlog queue and try again.
+ *
+ * Returns: #GST_RTSP_OK when if there is room in queue.
+ *          #GST_RTSP_ETIMEOUT when @timeout was reached.
+ *          #GST_RTSP_EINTR when @watch is flushing
+ *          #GST_RTSP_EINVAL when called with invalid parameters.
+ *
+ * Since: 1.4
+ */
+GstRTSPResult
+gst_rtsp_watch_wait_backlog (GstRTSPWatch * watch, GTimeVal * timeout)
+{
+  gint64 end_time;
+  GstClockTime to;
+
+  g_return_val_if_fail (watch != NULL, GST_RTSP_EINVAL);
+
+  to = timeout ? GST_TIMEVAL_TO_TIME (*timeout) : 0;
+  end_time = g_get_monotonic_time () + GST_TIME_AS_USECONDS (to);
+
+  g_mutex_lock (&watch->mutex);
+  if (watch->flushing)
+    goto flushing;
+
+  while (IS_BACKLOG_FULL (watch)) {
+    gboolean res;
+
+    res = g_cond_wait_until (&watch->queue_not_full, &watch->mutex, end_time);
+    if (watch->flushing)
+      goto flushing;
+
+    if (!res)
+      goto timeout;
+  }
+  g_mutex_unlock (&watch->mutex);
+
+  return GST_RTSP_OK;
+
+  /* ERRORS */
+flushing:
+  {
+    GST_DEBUG ("we are flushing");
+    g_mutex_unlock (&watch->mutex);
+    return GST_RTSP_EINTR;
+  }
+timeout:
+  {
+    GST_DEBUG ("we timed out");
+    g_mutex_unlock (&watch->mutex);
+    return GST_RTSP_ETIMEOUT;
+  }
+}
+
+/**
+ * gst_rtsp_watch_set_flushing:
+ * @watch: a #GstRTSPWatch
+ * @flushing: new flushing state
+ *
+ * When @flushing is %TRUE, abort a call to gst_rtsp_watch_wait_backlog()
+ * and make sure gst_rtsp_watch_write_data() returns immediately with
+ * #GST_RTSP_EINTR. And empty the queue.
+ *
+ * Since: 1.4
+ */
+void
+gst_rtsp_watch_set_flushing (GstRTSPWatch * watch, gboolean flushing)
+{
+  g_return_if_fail (watch != NULL);
+
+  g_mutex_lock (&watch->mutex);
+  watch->flushing = flushing;
+  g_cond_signal (&watch->queue_not_full);
+  if (flushing == TRUE) {
+    g_queue_foreach (watch->messages, (GFunc) gst_rtsp_rec_free, NULL);
+    g_queue_clear (watch->messages);
+  }
+  g_mutex_unlock (&watch->mutex);
+}
diff --git a/gst-libs/gst/rtsp/gstrtspconnection.h b/gst-libs/gst/rtsp/gstrtspconnection.h
index 87faae2..7402b68 100644
--- a/gst-libs/gst/rtsp/gstrtspconnection.h
+++ b/gst-libs/gst/rtsp/gstrtspconnection.h
@@ -76,7 +76,8 @@
 GTlsConnection *     gst_rtsp_connection_get_tls                  (GstRTSPConnection * conn, GError ** error);
 gboolean             gst_rtsp_connection_set_tls_validation_flags (GstRTSPConnection * conn, GTlsCertificateFlags flags);
 GTlsCertificateFlags gst_rtsp_connection_get_tls_validation_flags (GstRTSPConnection * conn);
-
+void                 gst_rtsp_connection_set_tls_database (GstRTSPConnection * conn, GTlsDatabase * database);
+GTlsDatabase *       gst_rtsp_connection_get_tls_database (GstRTSPConnection * conn);
 
 /* sending/receiving raw bytes */
 GstRTSPResult      gst_rtsp_connection_read           (GstRTSPConnection * conn, guint8 * data,
@@ -163,6 +164,9 @@
  * @error_full: callback when an error occured with more information than
  *   the @error callback.
  * @tunnel_lost: callback when the post connection of a tunnel is closed.
+ * @tunnel_http_response: callback when an HTTP response to the GET request
+ *   is about to be sent for a tunneled connection. The response can be
+ *   modified in the callback. Since 1.4.
  *
  * Callback functions from a #GstRTSPWatch.
  */
@@ -180,9 +184,13 @@
                                          GstRTSPMessage *message, guint id,
                                          gpointer user_data);
   GstRTSPResult     (*tunnel_lost)      (GstRTSPWatch *watch, gpointer user_data);
+  GstRTSPResult     (*tunnel_http_response) (GstRTSPWatch *watch,
+                                             GstRTSPMessage *request,
+                                             GstRTSPMessage *response,
+                                             gpointer user_data);
 
   /*< private >*/
-  gpointer _gst_reserved[GST_PADDING];
+  gpointer _gst_reserved[GST_PADDING-1];
 } GstRTSPWatchFuncs;
 
 GstRTSPWatch *     gst_rtsp_watch_new                (GstRTSPConnection *conn,
@@ -206,7 +214,11 @@
 GstRTSPResult      gst_rtsp_watch_send_message       (GstRTSPWatch *watch,
                                                       GstRTSPMessage *message,
                                                       guint *id);
+GstRTSPResult      gst_rtsp_watch_wait_backlog       (GstRTSPWatch * watch,
+                                                      GTimeVal *timeout);
 
+void               gst_rtsp_watch_set_flushing       (GstRTSPWatch * watch,
+                                                      gboolean flush);
 G_END_DECLS
 
 #endif /* __GST_RTSP_CONNECTION_H__ */
diff --git a/gst-libs/gst/rtsp/gstrtspdefs.c b/gst-libs/gst/rtsp/gstrtspdefs.c
index 2fdc9c9..4f9dc9f 100644
--- a/gst-libs/gst/rtsp/gstrtspdefs.c
+++ b/gst-libs/gst/rtsp/gstrtspdefs.c
@@ -46,8 +46,6 @@
  * @see_also: gstrtspurl, gstrtspconnection
  *  
  * Provides common defines for the RTSP library. 
- *  
- * Last reviewed on 2007-07-24 (0.10.14)
  */
 
 #include <errno.h>
@@ -133,14 +131,12 @@
   {"Language", FALSE},
   {"PlayerStarttime", FALSE},
 
-  /* Since 0.10.16 */
   {"Location", FALSE},
 
-  /* Since 0.10.23 */
   {"ETag", FALSE},
   {"If-Match", TRUE},
 
-  /* WM extensions [MS-RTSP] Since 0.10.23 */
+  /* WM extensions [MS-RTSP] */
   {"Accept-Charset", TRUE},
   {"Supported", TRUE},
   {"Vary", TRUE},
@@ -161,19 +157,19 @@
   {"X-RTP-Info", FALSE},
   {"X-StartupProfile", FALSE},
 
-  /* Since 0.10.24 */
   {"Timestamp", FALSE},
 
-  /* Since 0.10.25 */
   {"Authentication-Info", FALSE},
   {"Host", FALSE},
   {"Pragma", TRUE},
   {"X-Server-IP-Address", FALSE},
   {"X-Sessioncookie", FALSE},
 
-  /* Since 0.10.36 */
   {"RTCP-Interval", FALSE},
 
+  /* Since 1.4 */
+  {"KeyMgmt", FALSE},
+
   {NULL, FALSE}
 };
 
@@ -229,6 +225,7 @@
       "Only aggregate operation allowed");
   DEF_STATUS (GST_RTSP_STS_UNSUPPORTED_TRANSPORT, "Unsupported transport");
   DEF_STATUS (GST_RTSP_STS_DESTINATION_UNREACHABLE, "Destination unreachable");
+  DEF_STATUS (GST_RTSP_STS_KEY_MANAGEMENT_FAILURE, "Key management failure");
   DEF_STATUS (GST_RTSP_STS_INTERNAL_SERVER_ERROR, "Internal Server Error");
   DEF_STATUS (GST_RTSP_STS_NOT_IMPLEMENTED, "Not Implemented");
   DEF_STATUS (GST_RTSP_STS_BAD_GATEWAY, "Bad Gateway");
@@ -474,7 +471,7 @@
  *
  * Returns: a #GstRTSPMethod
  *
- * Since: 1.1.1
+ * Since: 1.2
  */
 GstRTSPMethod
 gst_rtsp_options_from_text (const gchar * options)
diff --git a/gst-libs/gst/rtsp/gstrtspdefs.h b/gst-libs/gst/rtsp/gstrtspdefs.h
index 6a10ec3..4297a53 100644
--- a/gst-libs/gst/rtsp/gstrtspdefs.h
+++ b/gst-libs/gst/rtsp/gstrtspdefs.h
@@ -294,14 +294,12 @@
   GST_RTSP_HDR_LANGUAGE,            /* Language */
   GST_RTSP_HDR_PLAYER_START_TIME,   /* PlayerStarttime */
 
-  /* Since 0.10.16 */
   GST_RTSP_HDR_LOCATION,            /* Location */
 
-  /* Since 0.10.23 */
   GST_RTSP_HDR_ETAG,                /* ETag */
   GST_RTSP_HDR_IF_MATCH,            /* If-Match */
 
-  /* WM extensions [MS-RTSP] Since 0.10.23 */
+  /* WM extensions [MS-RTSP] */
   GST_RTSP_HDR_ACCEPT_CHARSET,      /* Accept-Charset */
   GST_RTSP_HDR_SUPPORTED,           /* Supported */
   GST_RTSP_HDR_VARY,                /* Vary */
@@ -322,19 +320,19 @@
   GST_RTSP_HDR_X_RTP_INFO,          /* X-RTP-Info */
   GST_RTSP_HDR_X_STARTUPPROFILE,    /* X-StartupProfile */
 
-  /* Since 0.10.24 */
   GST_RTSP_HDR_TIMESTAMP,           /* Timestamp */
 
-  /* Since 0.10.25 */
   GST_RTSP_HDR_AUTHENTICATION_INFO, /* Authentication-Info */
   GST_RTSP_HDR_HOST,                /* Host */
   GST_RTSP_HDR_PRAGMA,              /* Pragma */
   GST_RTSP_HDR_X_SERVER_IP_ADDRESS, /* X-Server-IP-Address */
   GST_RTSP_HDR_X_SESSIONCOOKIE,     /* X-Sessioncookie */
 
-  /* Since 0.10.36 */
   GST_RTSP_HDR_RTCP_INTERVAL,       /* RTCP-Interval */
 
+  /* Since 1.4 */
+  GST_RTSP_HDR_KEYMGMT,             /* KeyMgmt */
+
   GST_RTSP_HDR_LAST
 } GstRTSPHeaderField;
 
@@ -382,6 +380,7 @@
   GST_RTSP_STS_ONLY_AGGREGATE_OPERATION_ALLOWED     = 460,
   GST_RTSP_STS_UNSUPPORTED_TRANSPORT                = 461,
   GST_RTSP_STS_DESTINATION_UNREACHABLE              = 462,
+  GST_RTSP_STS_KEY_MANAGEMENT_FAILURE               = 463, /* since 1.4 */
   GST_RTSP_STS_INTERNAL_SERVER_ERROR                = 500,
   GST_RTSP_STS_NOT_IMPLEMENTED                      = 501,
   GST_RTSP_STS_BAD_GATEWAY                          = 502,
diff --git a/gst-libs/gst/rtsp/gstrtspextension.c b/gst-libs/gst/rtsp/gstrtspextension.c
index 89936aa..5b5eed3 100644
--- a/gst-libs/gst/rtsp/gstrtspextension.c
+++ b/gst-libs/gst/rtsp/gstrtspextension.c
@@ -29,8 +29,6 @@
  *  exentension (rtspwms) and the RealMedia RTSP extension (rtspreal).
  * </para>
  * </refsect2>
- *
- * Last reviewed on 2007-07-25 (0.10.14)
  */
 
 #ifdef HAVE_CONFIG_H
diff --git a/gst-libs/gst/rtsp/gstrtspmessage.c b/gst-libs/gst/rtsp/gstrtspmessage.c
index 3eece20..841aa19 100644
--- a/gst-libs/gst/rtsp/gstrtspmessage.c
+++ b/gst-libs/gst/rtsp/gstrtspmessage.c
@@ -47,8 +47,6 @@
  * @see_also: gstrtspconnection
  *  
  * Provides methods for creating and parsing request, response and data messages.
- *  
- * Last reviewed on 2007-07-25 (0.10.14)
  */
 
 #include <string.h>
diff --git a/gst-libs/gst/rtsp/gstrtsprange.c b/gst-libs/gst/rtsp/gstrtsprange.c
index 7197455..96efd45 100644
--- a/gst-libs/gst/rtsp/gstrtsprange.c
+++ b/gst-libs/gst/rtsp/gstrtsprange.c
@@ -45,8 +45,6 @@
  * @short_description: dealing with time ranges
  *  
  * Provides helper functions to deal with time ranges.
- *  
- * Last reviewed on 2007-07-25 (0.10.14)
  */
 
 #include <math.h>
@@ -576,7 +574,7 @@
  *
  * Returns: %TRUE on success.
  *
- * Since: 1.1.1
+ * Since: 1.2
  */
 gboolean
 gst_rtsp_range_get_times (const GstRTSPTimeRange * range,
diff --git a/gst-libs/gst/rtsp/gstrtsprange.h b/gst-libs/gst/rtsp/gstrtsprange.h
index 2dc0469..c80099b 100644
--- a/gst-libs/gst/rtsp/gstrtsprange.h
+++ b/gst-libs/gst/rtsp/gstrtsprange.h
@@ -114,7 +114,7 @@
  *
  * Extra fields for a time indication.
  *
- * Since: 1.1.1
+ * Since: 1.2
  */
 struct _GstRTSPTime2 {
   gdouble         frames;
@@ -128,8 +128,8 @@
  * @unit: the time units used
  * @min: the minimum interval
  * @max: the maximum interval
- * @min2: extra fields in the minimum interval (Since: 1.1.1)
- * @max2: extra fields in the maximum interval (Since: 1.1.1)
+ * @min2: extra fields in the minimum interval (Since: 1.2)
+ * @max2: extra fields in the maximum interval (Since: 1.2)
  *
  * A time range.
  */
diff --git a/gst-libs/gst/rtsp/gstrtsptransport.c b/gst-libs/gst/rtsp/gstrtsptransport.c
index 5207a2c..81c7431 100644
--- a/gst-libs/gst/rtsp/gstrtsptransport.c
+++ b/gst-libs/gst/rtsp/gstrtsptransport.c
@@ -46,8 +46,6 @@
  * @short_description: dealing with RTSP transports
  *  
  * Provides helper functions to deal with RTSP transport strings.
- *  
- * Last reviewed on 2007-07-25 (0.10.14)
  */
 
 #include <string.h>
@@ -77,15 +75,33 @@
 {
   const gchar *name;
   const GstRTSPTransMode mode;
-  const gchar *gst_mime;
+  const GstRTSPProfile profile;
+  const GstRTSPLowerTrans ltrans;
+  const gchar *media_type;
   const gchar *manager[MAX_MANAGERS];
 } GstRTSPTransMap;
 
 static const GstRTSPTransMap transports[] = {
-  {"rtp", GST_RTSP_TRANS_RTP, "application/x-rtp", {"rtpbin", "rtpdec"}},
-  {"x-real-rdt", GST_RTSP_TRANS_RDT, "application/x-rdt", {"rdtmanager", NULL}},
-  {"x-pn-tng", GST_RTSP_TRANS_RDT, "application/x-rdt", {"rdtmanager", NULL}},
-  {NULL, GST_RTSP_TRANS_UNKNOWN, NULL, {NULL, NULL}}
+  {"rtp", GST_RTSP_TRANS_RTP, GST_RTSP_PROFILE_AVP,
+        GST_RTSP_LOWER_TRANS_UDP_MCAST, "application/x-rtp",
+      {"rtpbin", "rtpdec"}},
+  {"srtp", GST_RTSP_TRANS_RTP, GST_RTSP_PROFILE_SAVP,
+        GST_RTSP_LOWER_TRANS_UDP_MCAST, "application/x-srtp",
+      {"rtpbin", "rtpdec"}},
+  {"rtpf", GST_RTSP_TRANS_RTP, GST_RTSP_PROFILE_AVPF,
+        GST_RTSP_LOWER_TRANS_UDP_MCAST, "application/x-rtp",
+      {"rtpbin", "rtpdec"}},
+  {"srtpf", GST_RTSP_TRANS_RTP, GST_RTSP_PROFILE_SAVPF,
+        GST_RTSP_LOWER_TRANS_UDP_MCAST, "application/x-srtp",
+      {"rtpbin", "rtpdec"}},
+  {"x-real-rdt", GST_RTSP_TRANS_RDT, GST_RTSP_PROFILE_AVP,
+        GST_RTSP_LOWER_TRANS_UNKNOWN, "application/x-rdt",
+      {"rdtmanager", NULL}},
+  {"x-pn-tng", GST_RTSP_TRANS_RDT, GST_RTSP_PROFILE_AVP,
+        GST_RTSP_LOWER_TRANS_UNKNOWN, "application/x-rdt",
+      {"rdtmanager", NULL}},
+  {NULL, GST_RTSP_TRANS_UNKNOWN, GST_RTSP_PROFILE_UNKNOWN,
+      GST_RTSP_LOWER_TRANS_UNKNOWN, NULL, {NULL, NULL}}
 };
 
 typedef struct
@@ -97,6 +113,8 @@
 static const RTSPProfileMap profiles[] = {
   {"avp", GST_RTSP_PROFILE_AVP},
   {"savp", GST_RTSP_PROFILE_SAVP},
+  {"avpf", GST_RTSP_PROFILE_AVPF},
+  {"savpf", GST_RTSP_PROFILE_SAVPF},
   {NULL, GST_RTSP_PROFILE_UNKNOWN}
 };
 
@@ -107,6 +125,8 @@
   static const GFlagsValue rtsp_profile[] = {
     {GST_RTSP_PROFILE_AVP, "GST_RTSP_PROFILE_AVP", "avp"},
     {GST_RTSP_PROFILE_SAVP, "GST_RTSP_PROFILE_SAVP", "savp"},
+    {GST_RTSP_PROFILE_AVPF, "GST_RTSP_PROFILE_AVPF", "avpf"},
+    {GST_RTSP_PROFILE_SAVPF, "GST_RTSP_PROFILE_SAVPF", "savpf"},
     {0, NULL, NULL},
   };
 
@@ -224,9 +244,13 @@
  * @mime: location to hold the result
  *
  * Get the mime type of the transport mode @trans. This mime type is typically
- * used to generate #GstCaps on buffers.
+ * used to generate #GstCaps events.
  *
- * Returns: #GST_RTSP_OK. 
+ * Deprecated: This functions only deals with the GstRTSPTransMode and only
+ *    returns the mime type for #GST_RTSP_PROFILE_AVP. Use
+ *    gst_rtsp_transport_get_media_type() instead.
+ *
+ * Returns: #GST_RTSP_OK.
  */
 GstRTSPResult
 gst_rtsp_transport_get_mime (GstRTSPTransMode trans, const gchar ** mime)
@@ -236,14 +260,58 @@
   g_return_val_if_fail (mime != NULL, GST_RTSP_EINVAL);
 
   for (i = 0; transports[i].name; i++)
-    if (transports[i].mode == trans)
+    if (transports[i].mode == trans
+        && transports[i].profile == GST_RTSP_PROFILE_AVP)
       break;
-  *mime = transports[i].gst_mime;
+  *mime = transports[i].media_type;
 
   return GST_RTSP_OK;
 }
 
 /**
+ * gst_rtsp_transport_get_media_type:
+ * @transport: a #GstRTSPTransport
+ * @media_type: (out): media type of @transport
+ *
+ * Get the media type of @transport. This media type is typically
+ * used to generate #GstCaps events.
+ *
+ * Since: 1.4
+ *
+ * Returns: #GST_RTSP_OK.
+ */
+GstRTSPResult
+gst_rtsp_transport_get_media_type (GstRTSPTransport * transport,
+    const gchar ** media_type)
+{
+  gint i;
+
+  g_return_val_if_fail (transport != NULL, GST_RTSP_EINVAL);
+  g_return_val_if_fail (media_type != NULL, GST_RTSP_EINVAL);
+
+  for (i = 0; transports[i].name; i++)
+    if (transports[i].mode == transport->trans
+        && transports[i].profile == transport->profile)
+      break;
+  *media_type = transports[i].media_type;
+
+  return GST_RTSP_OK;
+}
+
+static GstRTSPLowerTrans
+get_default_lower_trans (GstRTSPTransport * transport)
+{
+  gint i;
+
+  for (i = 0; transports[i].name; i++)
+    if (transports[i].mode == transport->trans
+        && transports[i].profile == transport->profile)
+      break;
+
+  return transports[i].ltrans;
+}
+
+/**
  * gst_rtsp_transport_get_manager:
  * @trans: a #GstRTSPTransMode
  * @manager: location to hold the result
@@ -457,11 +525,7 @@
     transport->lower_transport = ltrans[i].ltrans;
   } else {
     /* specifying the lower transport is optional */
-    if (transport->trans == GST_RTSP_TRANS_RTP &&
-        transport->profile == GST_RTSP_PROFILE_AVP)
-      transport->lower_transport = GST_RTSP_LOWER_TRANS_UDP_MCAST;
-    else
-      transport->lower_transport = GST_RTSP_LOWER_TRANS_UNKNOWN;
+    transport->lower_transport = get_default_lower_trans (transport);
   }
 
   g_strfreev (transp);
@@ -589,7 +653,10 @@
   g_ptr_array_add (strs, g_ascii_strup (tmp, -1));
 
   if (transport->trans != GST_RTSP_TRANS_RTP ||
-      transport->profile != GST_RTSP_PROFILE_AVP ||
+      (transport->profile != GST_RTSP_PROFILE_AVP &&
+          transport->profile != GST_RTSP_PROFILE_SAVP &&
+          transport->profile != GST_RTSP_PROFILE_AVPF &&
+          transport->profile != GST_RTSP_PROFILE_SAVPF) ||
       transport->lower_transport == GST_RTSP_LOWER_TRANS_TCP) {
     g_ptr_array_add (strs, g_strdup ("/"));
 
diff --git a/gst-libs/gst/rtsp/gstrtsptransport.h b/gst-libs/gst/rtsp/gstrtsptransport.h
index 9de5601..e291a94 100644
--- a/gst-libs/gst/rtsp/gstrtsptransport.h
+++ b/gst-libs/gst/rtsp/gstrtsptransport.h
@@ -65,15 +65,19 @@
 /**
  * GstRTSPProfile:
  * @GST_RTSP_PROFILE_UNKNOWN: invalid profile
- * @GST_RTSP_PROFILE_AVP: the Audio/Visual profile
- * @GST_RTSP_PROFILE_SAVP: the secure Audio/Visual profile
+ * @GST_RTSP_PROFILE_AVP: the Audio/Visual profile (RFC 3551)
+ * @GST_RTSP_PROFILE_SAVP: the secure Audio/Visual profile (RFC 3711)
+ * @GST_RTSP_PROFILE_AVPF: the Audio/Visual profile with feedback (RFC 4585)
+ * @GST_RTSP_PROFILE_SAVPF: the secure Audio/Visual profile with feedback (RFC 5124)
  *
  * The transfer profile to use.
  */
 typedef enum {
   GST_RTSP_PROFILE_UNKNOWN =  0,
   GST_RTSP_PROFILE_AVP     = (1 << 0),
-  GST_RTSP_PROFILE_SAVP    = (1 << 1)
+  GST_RTSP_PROFILE_SAVP    = (1 << 1),
+  GST_RTSP_PROFILE_AVPF    = (1 << 2),
+  GST_RTSP_PROFILE_SAVPF   = (1 << 3),
 } GstRTSPProfile;
 
 #define GST_TYPE_RTSP_PROFILE (gst_rtsp_profile_get_type())
@@ -175,6 +179,9 @@
 GstRTSPResult      gst_rtsp_transport_get_mime     (GstRTSPTransMode trans, const gchar **mime);
 GstRTSPResult      gst_rtsp_transport_get_manager  (GstRTSPTransMode trans, const gchar **manager, guint option);
 
+GstRTSPResult      gst_rtsp_transport_get_media_type (GstRTSPTransport *transport,
+                                                      const gchar **media_type);
+
 GstRTSPResult      gst_rtsp_transport_free         (GstRTSPTransport *transport);
 
 G_END_DECLS
diff --git a/gst-libs/gst/rtsp/gstrtspurl.c b/gst-libs/gst/rtsp/gstrtspurl.c
index 654f2aa..6c7e8c4 100644
--- a/gst-libs/gst/rtsp/gstrtspurl.c
+++ b/gst-libs/gst/rtsp/gstrtspurl.c
@@ -45,8 +45,6 @@
  * @short_description: handling RTSP urls
  *  
  * Provides helper functions to handle RTSP urls.
- *  
- * Last reviewed on 2007-07-25 (0.10.14)
  */
 
 #include <stdlib.h>
@@ -393,7 +391,8 @@
  * Also note that since paths usually start with a slash, the first component
  * will usually be the empty string.
  *
- * Returns: a string vector. g_strfreev() after usage.
+ * Returns: (transfer full): %NULL-terminated array of URL components. Free with
+ * g_strfreev() when no longer needed.
  */
 gchar **
 gst_rtsp_url_decode_path_components (const GstRTSPUrl * url)
diff --git a/gst-libs/gst/sdp/Makefile.am b/gst-libs/gst/sdp/Makefile.am
index 70fba4b..e15fa93 100644
--- a/gst-libs/gst/sdp/Makefile.am
+++ b/gst-libs/gst/sdp/Makefile.am
@@ -2,11 +2,12 @@
 
 libgstsdpinclude_HEADERS = sdp.h \
 			   gstsdp.h \
+			   gstmikey.h \
 			   gstsdpmessage.h
 
 lib_LTLIBRARIES = libgstsdp-@GST_API_VERSION@.la
 
-libgstsdp_@GST_API_VERSION@_la_SOURCES = gstsdpmessage.c
+libgstsdp_@GST_API_VERSION@_la_SOURCES = gstsdpmessage.c gstmikey.c
 
 libgstsdp_@GST_API_VERSION@_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(GIO_CFLAGS)
 libgstsdp_@GST_API_VERSION@_la_LIBADD = $(GST_LIBS) $(GIO_LIBS)
diff --git a/gst-libs/gst/sdp/Makefile.in b/gst-libs/gst/sdp/Makefile.in
index 092570c..43854ab 100644
--- a/gst-libs/gst/sdp/Makefile.in
+++ b/gst-libs/gst/sdp/Makefile.in
@@ -89,7 +89,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -160,7 +159,8 @@
 libgstsdp_@GST_API_VERSION@_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_1)
 am_libgstsdp_@GST_API_VERSION@_la_OBJECTS =  \
-	libgstsdp_@GST_API_VERSION@_la-gstsdpmessage.lo
+	libgstsdp_@GST_API_VERSION@_la-gstsdpmessage.lo \
+	libgstsdp_@GST_API_VERSION@_la-gstmikey.lo
 libgstsdp_@GST_API_VERSION@_la_OBJECTS =  \
 	$(am_libgstsdp_@GST_API_VERSION@_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
@@ -429,9 +429,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -525,10 +526,11 @@
 libgstsdpincludedir = $(includedir)/gstreamer-@GST_API_VERSION@/gst/sdp
 libgstsdpinclude_HEADERS = sdp.h \
 			   gstsdp.h \
+			   gstmikey.h \
 			   gstsdpmessage.h
 
 lib_LTLIBRARIES = libgstsdp-@GST_API_VERSION@.la
-libgstsdp_@GST_API_VERSION@_la_SOURCES = gstsdpmessage.c
+libgstsdp_@GST_API_VERSION@_la_SOURCES = gstsdpmessage.c gstmikey.c
 libgstsdp_@GST_API_VERSION@_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(GIO_CFLAGS)
 libgstsdp_@GST_API_VERSION@_la_LIBADD = $(GST_LIBS) $(GIO_LIBS)
 libgstsdp_@GST_API_VERSION@_la_LDFLAGS = $(GST_LIB_LDFLAGS) $(GST_ALL_LDFLAGS) $(GST_LT_LDFLAGS)
@@ -622,6 +624,7 @@
 distclean-compile:
 	-rm -f *.tab.c
 
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstsdp_@GST_API_VERSION@_la-gstmikey.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstsdp_@GST_API_VERSION@_la-gstsdpmessage.Plo@am__quote@
 
 .c.o:
@@ -655,6 +658,13 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstsdp_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libgstsdp_@GST_API_VERSION@_la-gstsdpmessage.lo `test -f 'gstsdpmessage.c' || echo '$(srcdir)/'`gstsdpmessage.c
 
+libgstsdp_@GST_API_VERSION@_la-gstmikey.lo: gstmikey.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstsdp_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -MT libgstsdp_@GST_API_VERSION@_la-gstmikey.lo -MD -MP -MF $(DEPDIR)/libgstsdp_@GST_API_VERSION@_la-gstmikey.Tpo -c -o libgstsdp_@GST_API_VERSION@_la-gstmikey.lo `test -f 'gstmikey.c' || echo '$(srcdir)/'`gstmikey.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstsdp_@GST_API_VERSION@_la-gstmikey.Tpo $(DEPDIR)/libgstsdp_@GST_API_VERSION@_la-gstmikey.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstmikey.c' object='libgstsdp_@GST_API_VERSION@_la-gstmikey.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstsdp_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libgstsdp_@GST_API_VERSION@_la-gstmikey.lo `test -f 'gstmikey.c' || echo '$(srcdir)/'`gstmikey.c
+
 mostlyclean-libtool:
 	-rm -f *.lo
 
diff --git a/gst-libs/gst/sdp/gstmikey.c b/gst-libs/gst/sdp/gstmikey.c
new file mode 100644
index 0000000..712941a
--- /dev/null
+++ b/gst-libs/gst/sdp/gstmikey.c
@@ -0,0 +1,2051 @@
+/* GStreamer
+ * Copyright (C) <2014> Wim Taymans <wim.taymans@gmail.com>
+ *
+ * gstmikey.h: various helper functions to manipulate mikey messages
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+/**
+ * SECTION:gstmikey
+ * @short_description: Helper methods for dealing with MIKEY messages
+ *
+ * <refsect2>
+ * <para>
+ * The GstMIKEY helper functions makes it easy to parse and create MIKEY
+ * messages.
+ * </para>
+ * </refsect2>
+ */
+
+#include <string.h>
+
+#include "gstmikey.h"
+
+static void payload_destroy (GstMIKEYPayload ** payload);
+
+#define INIT_ARRAY(field, type, init_func)              \
+G_STMT_START {                                          \
+  if (field)                                            \
+    g_array_set_size ((field), 0);                      \
+  else {                                                \
+    (field) = g_array_new (FALSE, TRUE, sizeof (type)); \
+    g_array_set_clear_func ((field), (GDestroyNotify)init_func);        \
+  }                                                     \
+} G_STMT_END
+
+#define FREE_ARRAY(field)         \
+G_STMT_START {                    \
+  if (field)                      \
+    g_array_free ((field), TRUE); \
+  (field) = NULL;                 \
+} G_STMT_END
+
+#define INIT_MEMDUP(field, data, len)            \
+G_STMT_START {                                   \
+  g_free ((field));                              \
+  (field) = g_memdup (data, len);                \
+} G_STMT_END
+#define FREE_MEMDUP(field)                       \
+G_STMT_START {                                   \
+  g_free ((field));                              \
+  (field) = NULL;                                \
+} G_STMT_END
+
+
+/* Key data transport payload (KEMAC) */
+static guint
+get_mac_len (GstMIKEYMacAlg mac_alg)
+{
+  guint len;
+
+  switch (mac_alg) {
+    case GST_MIKEY_MAC_NULL:
+      len = 0;                  /* no MAC key */
+      break;
+    case GST_MIKEY_MAC_HMAC_SHA_1_160:
+      len = 20;                 /* 160 bits key */
+      break;
+    default:
+      len = -1;
+      break;
+  }
+  return len;
+}
+
+/**
+ * gst_mikey_payload_kemac_set:
+ * @payload: a #GstMIKEYPayload
+ * @enc_alg: the #GstMIKEYEncAlg
+ * @mac_alg: a #GstMIKEYMacAlg
+ *
+ * Set the KEMAC parameters. @payload should point to a #GST_MIKEY_PT_KEMAC
+ * payload.
+ *
+ * Returns: %TRUE on success
+ */
+gboolean
+gst_mikey_payload_kemac_set (GstMIKEYPayload * payload,
+    GstMIKEYEncAlg enc_alg, GstMIKEYMacAlg mac_alg)
+{
+  GstMIKEYPayloadKEMAC *p = (GstMIKEYPayloadKEMAC *) payload;
+
+  g_return_val_if_fail (payload != NULL, FALSE);
+  g_return_val_if_fail (payload->type == GST_MIKEY_PT_KEMAC, FALSE);
+
+  p->enc_alg = enc_alg;
+  p->mac_alg = mac_alg;
+  INIT_ARRAY (p->subpayloads, GstMIKEYPayload *, payload_destroy);
+
+  return TRUE;
+}
+
+static void
+gst_mikey_payload_kemac_clear (GstMIKEYPayloadKEMAC * payload)
+{
+  FREE_ARRAY (payload->subpayloads);
+}
+
+static GstMIKEYPayloadKEMAC *
+gst_mikey_payload_kemac_copy (const GstMIKEYPayloadKEMAC * payload)
+{
+  guint i, len;
+  GstMIKEYPayloadKEMAC *copy = g_slice_dup (GstMIKEYPayloadKEMAC, payload);
+  gst_mikey_payload_kemac_set (&copy->pt, payload->enc_alg, payload->mac_alg);
+  len = payload->subpayloads->len;
+  for (i = 0; i < len; i++) {
+    GstMIKEYPayload *pay = g_array_index (payload->subpayloads,
+        GstMIKEYPayload *, i);
+    gst_mikey_payload_kemac_add_sub (&copy->pt, gst_mikey_payload_copy (pay));
+  }
+  return copy;
+}
+
+/**
+ * gst_mikey_payload_kemac_get_n_sub:
+ * @payload: a #GstMIKEYPayload
+ *
+ * Get the number of sub payloads of @payload. @payload should be of type
+ * #GST_MIKEY_PT_KEMAC.
+ *
+ * Returns: the number of sub payloads in @payload
+ */
+guint
+gst_mikey_payload_kemac_get_n_sub (const GstMIKEYPayload * payload)
+{
+  GstMIKEYPayloadKEMAC *p = (GstMIKEYPayloadKEMAC *) payload;
+
+  g_return_val_if_fail (payload != NULL, 0);
+  g_return_val_if_fail (payload->type == GST_MIKEY_PT_KEMAC, 0);
+
+  return p->subpayloads->len;
+}
+
+/**
+ * gst_mikey_payload_kemac_get_sub:
+ * @payload: a #GstMIKEYPayload
+ * @idx: an index
+ *
+ * Get the sub payload of @payload at @idx. @payload should be of type
+ * #GST_MIKEY_PT_KEMAC.
+ *
+ * Returns: the #GstMIKEYPayload at @idx.
+ */
+const GstMIKEYPayload *
+gst_mikey_payload_kemac_get_sub (const GstMIKEYPayload * payload, guint idx)
+{
+  GstMIKEYPayloadKEMAC *p = (GstMIKEYPayloadKEMAC *) payload;
+
+  g_return_val_if_fail (payload != NULL, 0);
+  g_return_val_if_fail (payload->type == GST_MIKEY_PT_KEMAC, 0);
+
+  if (p->subpayloads->len <= idx)
+    return NULL;
+
+  return g_array_index (p->subpayloads, GstMIKEYPayload *, idx);
+}
+
+/**
+ * gst_mikey_payload_kemac_remove_sub:
+ * @payload: a #GstMIKEYPayload
+ * @idx: the index to remove
+ *
+ * Remove the sub payload at @idx in @payload.
+ *
+ * Returns: %TRUE on success.
+ */
+gboolean
+gst_mikey_payload_kemac_remove_sub (GstMIKEYPayload * payload, guint idx)
+{
+  GstMIKEYPayloadKEMAC *p = (GstMIKEYPayloadKEMAC *) payload;
+
+  g_return_val_if_fail (payload != NULL, 0);
+  g_return_val_if_fail (payload->type == GST_MIKEY_PT_KEMAC, 0);
+  g_return_val_if_fail (p->subpayloads->len > idx, FALSE);
+
+  g_array_remove_index (p->subpayloads, idx);
+
+  return TRUE;
+}
+
+/**
+ * gst_mikey_payload_kemac_add_sub:
+ * @payload: a #GstMIKEYPayload
+ * @newpay: a #GstMIKEYPayload to add
+ *
+ * Add a new sub payload to @payload.
+ *
+ * Returns: %TRUE on success.
+ */
+gboolean
+gst_mikey_payload_kemac_add_sub (GstMIKEYPayload * payload,
+    GstMIKEYPayload * newpay)
+{
+  GstMIKEYPayloadKEMAC *p = (GstMIKEYPayloadKEMAC *) payload;
+
+  g_return_val_if_fail (payload != NULL, 0);
+  g_return_val_if_fail (payload->type == GST_MIKEY_PT_KEMAC, 0);
+
+  g_array_append_val (p->subpayloads, newpay);
+
+  return TRUE;
+}
+
+/* Envelope data payload (PKE) */
+/**
+ * gst_mikey_payload_pke_set:
+ * @payload: a #GstMIKEYPayload
+ * @C: envelope key cache indicator
+ * @data_len: the length of @data
+ * @data: the encrypted envelope key
+ *
+ * Set the PKE values in @payload. @payload must be of type
+ * #GST_MIKEY_PT_PKE.
+ *
+ * Returns: %TRUE on success
+ */
+gboolean
+gst_mikey_payload_pke_set (GstMIKEYPayload * payload, GstMIKEYCacheType C,
+    guint16 data_len, const guint8 * data)
+{
+  GstMIKEYPayloadPKE *p = (GstMIKEYPayloadPKE *) payload;
+
+  g_return_val_if_fail (payload != NULL, FALSE);
+  g_return_val_if_fail (payload->type == GST_MIKEY_PT_PKE, FALSE);
+
+  p->C = C;
+  p->data_len = data_len;
+  INIT_MEMDUP (p->data, data, data_len);
+
+  return TRUE;
+}
+
+static void
+gst_mikey_payload_pke_clear (GstMIKEYPayloadPKE * payload)
+{
+  FREE_MEMDUP (payload->data);
+}
+
+static GstMIKEYPayloadPKE *
+gst_mikey_payload_pke_copy (const GstMIKEYPayloadPKE * payload)
+{
+  GstMIKEYPayloadPKE *copy = g_slice_dup (GstMIKEYPayloadPKE, payload);
+  gst_mikey_payload_pke_set (&copy->pt, payload->C, payload->data_len,
+      payload->data);
+  return copy;
+}
+
+/* DH data payload (DH) */
+/* Signature payload (SIGN) */
+
+/* Timestamp payload (T) */
+static guint
+get_ts_len (GstMIKEYTSType type)
+{
+  guint len;
+
+  switch (type) {
+    case GST_MIKEY_TS_TYPE_NTP_UTC:
+    case GST_MIKEY_TS_TYPE_NTP:
+      len = 8;
+      break;
+    case GST_MIKEY_TS_TYPE_COUNTER:
+      len = 4;
+      break;
+    default:
+      len = -1;
+      break;
+  }
+  return len;
+}
+
+/**
+ * gst_mikey_payload_t_set:
+ * @payload: a #GstMIKEYPayload
+ * @type: the #GstMIKEYTSType
+ * @ts_value: the timestamp value
+ *
+ * Set the timestamp in a #GST_MIKEY_PT_T @payload.
+ *
+ * Returns: %TRUE on success
+ */
+gboolean
+gst_mikey_payload_t_set (GstMIKEYPayload * payload,
+    GstMIKEYTSType type, const guint8 * ts_value)
+{
+  GstMIKEYPayloadT *p = (GstMIKEYPayloadT *) payload;
+  guint ts_len;
+
+  g_return_val_if_fail (payload != NULL, FALSE);
+  g_return_val_if_fail (payload->type == GST_MIKEY_PT_T, FALSE);
+
+  if ((ts_len = get_ts_len (type)) == -1)
+    return FALSE;
+
+  p->type = type;
+  INIT_MEMDUP (p->ts_value, ts_value, ts_len);
+
+  return TRUE;
+}
+
+static void
+gst_mikey_payload_t_clear (GstMIKEYPayloadT * payload)
+{
+  FREE_MEMDUP (payload->ts_value);
+}
+
+static GstMIKEYPayloadT *
+gst_mikey_payload_t_copy (const GstMIKEYPayloadT * payload)
+{
+  GstMIKEYPayloadT *copy = g_slice_dup (GstMIKEYPayloadT, payload);
+  gst_mikey_payload_t_set (&copy->pt, payload->type, payload->ts_value);
+  return copy;
+}
+
+/* ID payload (ID) */
+/* Certificate Payload (CERT) */
+/* Cert hash payload (CHASH)*/
+/* Ver msg payload (V) */
+/* Security Policy payload (SP)*/
+static void
+param_clear (GstMIKEYPayloadSPParam * param)
+{
+  FREE_MEMDUP (param->val);
+}
+
+/**
+ * gst_mikey_payload_sp_set:
+ * @payload: a #GstMIKEYPayload
+ * @policy: the policy number
+ * @proto: a #GstMIKEYSecProto
+ *
+ * Set the Security Policy parameters for @payload.
+ *
+ * Returns: %TRUE on success
+ */
+gboolean
+gst_mikey_payload_sp_set (GstMIKEYPayload * payload,
+    guint policy, GstMIKEYSecProto proto)
+{
+  GstMIKEYPayloadSP *p = (GstMIKEYPayloadSP *) payload;
+
+  g_return_val_if_fail (payload != NULL, FALSE);
+  g_return_val_if_fail (payload->type == GST_MIKEY_PT_SP, FALSE);
+
+  p->policy = policy;
+  p->proto = proto;
+  INIT_ARRAY (p->params, GstMIKEYPayloadSPParam, param_clear);
+
+  return TRUE;
+}
+
+static void
+gst_mikey_payload_sp_clear (GstMIKEYPayloadSP * payload)
+{
+  FREE_ARRAY (payload->params);
+}
+
+static GstMIKEYPayloadSP *
+gst_mikey_payload_sp_copy (const GstMIKEYPayloadSP * payload)
+{
+  guint i, len;
+  GstMIKEYPayloadSP *copy = g_slice_dup (GstMIKEYPayloadSP, payload);
+  gst_mikey_payload_sp_set (&copy->pt, payload->policy, payload->proto);
+  len = payload->params->len;
+  for (i = 0; i < len; i++) {
+    GstMIKEYPayloadSPParam *param = &g_array_index (payload->params,
+        GstMIKEYPayloadSPParam, i);
+    gst_mikey_payload_sp_add_param (&copy->pt, param->type, param->len,
+        param->val);
+  }
+  return copy;
+}
+
+/**
+ * gst_mikey_payload_sp_get_n_params:
+ * @payload: a #GstMIKEYPayload
+ *
+ * Get the number of security policy parameters in a #GST_MIKEY_PT_SP
+ * @payload.
+ *
+ * Returns: the number of parameters in @payload
+ */
+guint
+gst_mikey_payload_sp_get_n_params (const GstMIKEYPayload * payload)
+{
+  GstMIKEYPayloadSP *p = (GstMIKEYPayloadSP *) payload;
+
+  g_return_val_if_fail (payload != NULL, 0);
+  g_return_val_if_fail (payload->type == GST_MIKEY_PT_SP, 0);
+
+  return p->params->len;
+
+}
+
+/**
+ * gst_mikey_payload_sp_get_param:
+ * @payload: a #GstMIKEYPayload
+ * @idx: an index
+ *
+ * Get the Security Policy parameter in a #GST_MIKEY_PT_SP @payload
+ * at @idx.
+ *
+ * Returns: the #GstMIKEYPayloadSPParam at @idx in @payload
+ */
+const GstMIKEYPayloadSPParam *
+gst_mikey_payload_sp_get_param (const GstMIKEYPayload * payload, guint idx)
+{
+  GstMIKEYPayloadSP *p = (GstMIKEYPayloadSP *) payload;
+
+  g_return_val_if_fail (payload != NULL, NULL);
+  g_return_val_if_fail (payload->type == GST_MIKEY_PT_SP, NULL);
+
+  if (p->params->len <= idx)
+    return NULL;
+
+  return &g_array_index (p->params, GstMIKEYPayloadSPParam, idx);
+}
+
+/**
+ * gst_mikey_payload_sp_remove_param:
+ * @payload: a #GstMIKEYPayload
+ * @idx: an index
+ *
+ * Remove the Security Policy parameters from a #GST_MIKEY_PT_SP
+ * @payload at @idx.
+ *
+ * Returns: %TRUE on success
+ */
+gboolean
+gst_mikey_payload_sp_remove_param (GstMIKEYPayload * payload, guint idx)
+{
+  GstMIKEYPayloadSP *p = (GstMIKEYPayloadSP *) payload;
+
+  g_return_val_if_fail (payload != NULL, FALSE);
+  g_return_val_if_fail (payload->type == GST_MIKEY_PT_SP, FALSE);
+  g_return_val_if_fail (p->params->len > idx, FALSE);
+
+  g_array_remove_index (p->params, idx);
+
+  return TRUE;
+}
+
+/**
+ * gst_mikey_payload_sp_add_param:
+ * @payload: a #GstMIKEYPayload
+ * @type: a type
+ * @len: a length
+ * @val: @len bytes of data
+ *
+ * Add a new parameter to the #GST_MIKEY_PT_SP @payload with @type, @len
+ * and @val.
+ *
+ * Returns: %TRUE on success
+ */
+gboolean
+gst_mikey_payload_sp_add_param (GstMIKEYPayload * payload,
+    guint8 type, guint8 len, const guint8 * val)
+{
+  GstMIKEYPayloadSPParam param = { 0 };
+  GstMIKEYPayloadSP *p = (GstMIKEYPayloadSP *) payload;
+
+  g_return_val_if_fail (payload != NULL, FALSE);
+  g_return_val_if_fail (payload->type == GST_MIKEY_PT_SP, FALSE);
+
+  param.type = type;
+  param.len = len;
+  INIT_MEMDUP (param.val, val, len);
+
+  g_array_append_val (p->params, param);
+
+  return TRUE;
+}
+
+/* RAND payload (RAND) */
+/**
+ * gst_mikey_payload_rand_set:
+ * @payload: a #GstMIKEYPayload
+ * @len: the length of @rand
+ * @rand: random values
+ *
+ * Set the random values in a #GST_MIKEY_PT_RAND @payload.
+ *
+ * Returns: %TRUE on success
+ */
+gboolean
+gst_mikey_payload_rand_set (GstMIKEYPayload * payload, guint8 len,
+    const guint8 * rand)
+{
+  GstMIKEYPayloadRAND *p = (GstMIKEYPayloadRAND *) payload;
+
+  g_return_val_if_fail (payload != NULL, FALSE);
+  g_return_val_if_fail (payload->type == GST_MIKEY_PT_RAND, FALSE);
+
+  p->len = len;
+  INIT_MEMDUP (p->rand, rand, len);
+
+  return TRUE;
+}
+
+static void
+gst_mikey_payload_rand_clear (GstMIKEYPayloadRAND * payload)
+{
+  FREE_MEMDUP (payload->rand);
+}
+
+static GstMIKEYPayloadRAND *
+gst_mikey_payload_rand_copy (const GstMIKEYPayloadRAND * payload)
+{
+  GstMIKEYPayloadRAND *copy = g_slice_dup (GstMIKEYPayloadRAND, payload);
+  gst_mikey_payload_rand_set (&copy->pt, payload->len, payload->rand);
+  return copy;
+}
+
+
+
+/* Error payload (ERR) */
+/* Key data sub-payload */
+
+/**
+ * gst_mikey_payload_key_data_set_key:
+ * @payload: a #GstMIKEYPayload
+ * @key_type: a #GstMIKEYKeyDataType
+ * @key_len: the length of @key_data
+ * @key_data: the key of type @key_type
+ *
+ * Set @key_len bytes of @key_data of type @key_type as the key for the
+ * #GST_MIKEY_PT_KEY_DATA @payload.
+ *
+ * Returns: %TRUE on success
+ */
+gboolean
+gst_mikey_payload_key_data_set_key (GstMIKEYPayload * payload,
+    GstMIKEYKeyDataType key_type, guint16 key_len, const guint8 * key_data)
+{
+  GstMIKEYPayloadKeyData *p = (GstMIKEYPayloadKeyData *) payload;
+
+  g_return_val_if_fail (payload != NULL, FALSE);
+  g_return_val_if_fail (payload->type == GST_MIKEY_PT_KEY_DATA, FALSE);
+  g_return_val_if_fail (key_len > 0 && key_data != NULL, FALSE);
+
+  p->key_type = key_type;
+  p->key_len = key_len;
+  INIT_MEMDUP (p->key_data, key_data, key_len);
+
+  return TRUE;
+}
+
+/**
+ * gst_mikey_payload_key_data_set_salt:
+ * @payload: a #GstMIKEYPayload
+ * @salt_len: the length of @salt_data
+ * @salt_data: the salt
+ *
+ * Set the salt key data. If @salt_len is 0 and @salt_data is %NULL, the
+ * salt data will be removed.
+ *
+ * Returns: %TRUE on success
+ */
+gboolean
+gst_mikey_payload_key_data_set_salt (GstMIKEYPayload * payload,
+    guint16 salt_len, const guint8 * salt_data)
+{
+  GstMIKEYPayloadKeyData *p = (GstMIKEYPayloadKeyData *) payload;
+
+  g_return_val_if_fail (payload != NULL, FALSE);
+  g_return_val_if_fail (payload->type == GST_MIKEY_PT_KEY_DATA, FALSE);
+  g_return_val_if_fail ((salt_len == 0 && salt_data == NULL) ||
+      (salt_len > 0 && salt_data != NULL), FALSE);
+
+  p->salt_len = salt_len;
+  INIT_MEMDUP (p->salt_data, salt_data, salt_len);
+
+  return TRUE;
+}
+
+/* Key validity data */
+
+/**
+ * gst_mikey_payload_key_data_set_spi:
+ * @payload: a #GstMIKEYPayload
+ * @spi_len: the length of @spi_data
+ * @spi_data: the SPI/MKI data
+ *
+ * Set the SPI/MKI validity in the #GST_MIKEY_PT_KEY_DATA @payload.
+ *
+ * Returns: %TRUE on success
+ */
+gboolean
+gst_mikey_payload_key_data_set_spi (GstMIKEYPayload * payload,
+    guint8 spi_len, const guint8 * spi_data)
+{
+  GstMIKEYPayloadKeyData *p = (GstMIKEYPayloadKeyData *) payload;
+
+  g_return_val_if_fail (payload != NULL, FALSE);
+  g_return_val_if_fail (payload->type == GST_MIKEY_PT_KEY_DATA, FALSE);
+  g_return_val_if_fail ((spi_len == 0 && spi_data == NULL) ||
+      (spi_len > 0 && spi_data != NULL), FALSE);
+
+  p->kv_type = GST_MIKEY_KV_SPI;
+  p->kv_len[0] = spi_len;
+  INIT_MEMDUP (p->kv_data[0], spi_data, spi_len);
+  p->kv_len[1] = 0;
+  FREE_MEMDUP (p->kv_data[1]);
+
+  return TRUE;
+}
+
+/**
+ * gst_mikey_payload_key_data_set_interval:
+ * @payload: a #GstMIKEYPayload
+ * @vf_len: the length of @vf_data
+ * @vf_data: the Valid From data
+ * @vt_len: the length of @vt_data
+ * @vt_data: the Valid To data
+ *
+ * Set the key validity period in the #GST_MIKEY_PT_KEY_DATA @payload.
+ *
+ * Returns: %TRUE on success
+ */
+gboolean
+gst_mikey_payload_key_data_set_interval (GstMIKEYPayload * payload,
+    guint8 vf_len, const guint8 * vf_data, guint8 vt_len,
+    const guint8 * vt_data)
+{
+  GstMIKEYPayloadKeyData *p = (GstMIKEYPayloadKeyData *) payload;
+
+  g_return_val_if_fail (payload != NULL, FALSE);
+  g_return_val_if_fail (payload->type == GST_MIKEY_PT_KEY_DATA, FALSE);
+  g_return_val_if_fail ((vf_len == 0 && vf_data == NULL) ||
+      (vf_len > 0 && vf_data != NULL), FALSE);
+  g_return_val_if_fail ((vt_len == 0 && vt_data == NULL) ||
+      (vt_len > 0 && vt_data != NULL), FALSE);
+
+  p->kv_type = GST_MIKEY_KV_INTERVAL;
+  p->kv_len[0] = vf_len;
+  INIT_MEMDUP (p->kv_data[0], vf_data, vf_len);
+  p->kv_len[1] = vt_len;
+  INIT_MEMDUP (p->kv_data[1], vt_data, vt_len);
+
+  return TRUE;
+}
+
+static void
+gst_mikey_payload_key_data_clear (GstMIKEYPayloadKeyData * payload)
+{
+  FREE_MEMDUP (payload->key_data);
+  FREE_MEMDUP (payload->salt_data);
+  FREE_MEMDUP (payload->kv_data[0]);
+  FREE_MEMDUP (payload->kv_data[1]);
+}
+
+static GstMIKEYPayloadKeyData *
+gst_mikey_payload_key_data_copy (const GstMIKEYPayloadKeyData * payload)
+{
+  GstMIKEYPayloadKeyData *copy = g_slice_dup (GstMIKEYPayloadKeyData, payload);
+  gst_mikey_payload_key_data_set_key (&copy->pt, payload->key_type,
+      payload->key_len, payload->key_data);
+  gst_mikey_payload_key_data_set_salt (&copy->pt, payload->salt_len,
+      payload->salt_data);
+  if (payload->kv_type == GST_MIKEY_KV_SPI)
+    gst_mikey_payload_key_data_set_spi (&copy->pt, payload->kv_len[0],
+        payload->kv_data[0]);
+  else if (payload->kv_type == GST_MIKEY_KV_INTERVAL)
+    gst_mikey_payload_key_data_set_interval (&copy->pt, payload->kv_len[0],
+        payload->kv_data[0], payload->kv_len[1], payload->kv_data[1]);
+  else {
+    FREE_MEMDUP (copy->kv_data[0]);
+    FREE_MEMDUP (copy->kv_data[1]);
+  }
+  return copy;
+}
+
+/* General Extension Payload */
+
+/**
+ * gst_mikey_payload_new:
+ * @type: a #GstMIKEYPayloadType
+ *
+ * Make a new #GstMIKEYPayload with @type.
+ *
+ * Returns: a new #GstMIKEYPayload or %NULL on failure.
+ */
+GstMIKEYPayload *
+gst_mikey_payload_new (GstMIKEYPayloadType type)
+{
+  guint len = 0;
+  GstMIKEYPayloadClearFunc clear;
+  GstMIKEYPayloadCopyFunc copy;
+  GstMIKEYPayload *result;
+
+  switch (type) {
+    case GST_MIKEY_PT_KEMAC:
+      len = sizeof (GstMIKEYPayloadKEMAC);
+      clear = (GstMIKEYPayloadClearFunc) gst_mikey_payload_kemac_clear;
+      copy = (GstMIKEYPayloadCopyFunc) gst_mikey_payload_kemac_copy;
+      break;
+    case GST_MIKEY_PT_T:
+      len = sizeof (GstMIKEYPayloadT);
+      clear = (GstMIKEYPayloadClearFunc) gst_mikey_payload_t_clear;
+      copy = (GstMIKEYPayloadCopyFunc) gst_mikey_payload_t_copy;
+      break;
+    case GST_MIKEY_PT_PKE:
+      len = sizeof (GstMIKEYPayloadPKE);
+      clear = (GstMIKEYPayloadClearFunc) gst_mikey_payload_pke_clear;
+      copy = (GstMIKEYPayloadCopyFunc) gst_mikey_payload_pke_copy;
+      break;
+    case GST_MIKEY_PT_DH:
+    case GST_MIKEY_PT_SIGN:
+    case GST_MIKEY_PT_ID:
+    case GST_MIKEY_PT_CERT:
+    case GST_MIKEY_PT_CHASH:
+    case GST_MIKEY_PT_V:
+    case GST_MIKEY_PT_SP:
+      len = sizeof (GstMIKEYPayloadSP);
+      clear = (GstMIKEYPayloadClearFunc) gst_mikey_payload_sp_clear;
+      copy = (GstMIKEYPayloadCopyFunc) gst_mikey_payload_sp_copy;
+      break;
+    case GST_MIKEY_PT_RAND:
+      len = sizeof (GstMIKEYPayloadRAND);
+      clear = (GstMIKEYPayloadClearFunc) gst_mikey_payload_rand_clear;
+      copy = (GstMIKEYPayloadCopyFunc) gst_mikey_payload_rand_copy;
+      break;
+    case GST_MIKEY_PT_ERR:
+      break;
+    case GST_MIKEY_PT_KEY_DATA:
+      len = sizeof (GstMIKEYPayloadKeyData);
+      clear = (GstMIKEYPayloadClearFunc) gst_mikey_payload_key_data_clear;
+      copy = (GstMIKEYPayloadCopyFunc) gst_mikey_payload_key_data_copy;
+      break;
+    case GST_MIKEY_PT_GEN_EXT:
+    case GST_MIKEY_PT_LAST:
+      break;
+  }
+  if (len == 0)
+    return NULL;
+
+  result = g_slice_alloc0 (len);
+  result->type = type;
+  result->len = len;
+  result->clear_func = clear;
+  result->copy_func = copy;
+
+  return result;
+}
+
+/**
+ * gst_mikey_payload_copy:
+ * @payload: a #GstMIKEYPayload
+ *
+ * Copy @payload.
+ *
+ * Returns: a new #GstMIKEYPayload that is a copy of @payload
+ */
+GstMIKEYPayload *
+gst_mikey_payload_copy (const GstMIKEYPayload * payload)
+{
+  g_return_val_if_fail (payload != NULL, NULL);
+  g_return_val_if_fail (payload->copy_func != NULL, NULL);
+
+  return payload->copy_func (payload);
+}
+
+/**
+ * gst_mikey_payload_free:
+ * @payload: a #GstMIKEYPayload
+ *
+ * Free @payload
+ *
+ * Returns: %TRUE on success
+ */
+gboolean
+gst_mikey_payload_free (GstMIKEYPayload * payload)
+{
+  g_return_val_if_fail (payload != NULL, FALSE);
+
+  if (payload->clear_func)
+    payload->clear_func (payload);
+  g_slice_free1 (payload->len, payload);
+
+  return TRUE;
+}
+
+static void
+payload_destroy (GstMIKEYPayload ** payload)
+{
+  gst_mikey_payload_free (*payload);
+}
+
+/**
+ * gst_mikey_message_new:
+ *
+ * Make a new MIKEY message.
+ *
+ * Returns: a new #GstMIKEYMessage on success
+ */
+GstMIKEYMessage *
+gst_mikey_message_new (void)
+{
+  GstMIKEYMessage *result;
+
+  result = g_slice_new0 (GstMIKEYMessage);
+
+  INIT_ARRAY (result->map_info, GstMIKEYMapSRTP, NULL);
+  INIT_ARRAY (result->payloads, GstMIKEYPayload *, payload_destroy);
+
+  return result;
+}
+
+/**
+ * gst_mikey_message_new_from_bytes:
+ * @bytes: a #GBytes
+ * @info: a #GstMIKEYDecryptInfo
+ * @error: a #GError
+ *
+ * Make a new #GstMIKEYMessage from @bytes.
+ *
+ * Returns: a new #GstMIKEYMessage
+ */
+GstMIKEYMessage *
+gst_mikey_message_new_from_bytes (GBytes * bytes, GstMIKEYDecryptInfo * info,
+    GError ** error)
+{
+  gconstpointer data;
+  gsize size;
+
+  g_return_val_if_fail (bytes != NULL, NULL);
+
+  data = g_bytes_get_data (bytes, &size);
+  return gst_mikey_message_new_from_data (data, size, info, error);
+}
+
+/**
+ * gst_mikey_message_free:
+ * @msg: a #GstMIKEYMessage
+ *
+ * Free all resources allocated in @msg.
+ */
+void
+gst_mikey_message_free (GstMIKEYMessage * msg)
+{
+  g_return_if_fail (msg != NULL);
+
+  FREE_ARRAY (msg->map_info);
+  FREE_ARRAY (msg->payloads);
+
+  g_slice_free (GstMIKEYMessage, msg);
+}
+
+/**
+ * gst_mikey_message_set_info:
+ * @msg: a #GstMIKEYMessage
+ * @version: a version
+ * @type: a #GstMIKEYType
+ * @V: verify flag
+ * @prf_func: the #GstMIKEYPRFFunc function to use
+ * @CSB_id: the Crypto Session Bundle id
+ * @map_type: the #GstMIKEYCSIDMapType
+ *
+ * Set the information in @msg.
+ *
+ * Returns: %TRUE on success
+ */
+gboolean
+gst_mikey_message_set_info (GstMIKEYMessage * msg, guint8 version,
+    GstMIKEYType type, gboolean V, GstMIKEYPRFFunc prf_func, guint32 CSB_id,
+    GstMIKEYMapType map_type)
+{
+  g_return_val_if_fail (msg != NULL, FALSE);
+
+  msg->version = version;
+  msg->type = type;
+  msg->V = V;
+  msg->prf_func = prf_func;
+  msg->CSB_id = CSB_id;
+  msg->map_type = map_type;
+
+  return TRUE;
+}
+
+/**
+ * gst_mikey_message_get_n_cs:
+ * @msg: a #GstMIKEYMessage
+ *
+ * Get the number of crypto sessions in @msg.
+ *
+ * Returns: the number of crypto sessions
+ */
+guint
+gst_mikey_message_get_n_cs (const GstMIKEYMessage * msg)
+{
+  g_return_val_if_fail (msg != NULL, 0);
+
+  return msg->map_info->len;
+}
+
+/**
+ * gst_mikey_message_get_cs_srtp:
+ * @msg: a #GstMIKEYMessage
+ * @idx: an index
+ *
+ * Get the policy information of @msg at @idx.
+ *
+ * Returns: a #GstMIKEYMapSRTP
+ */
+const GstMIKEYMapSRTP *
+gst_mikey_message_get_cs_srtp (const GstMIKEYMessage * msg, guint idx)
+{
+  g_return_val_if_fail (msg != NULL, NULL);
+  g_return_val_if_fail (msg->map_type == GST_MIKEY_MAP_TYPE_SRTP, NULL);
+
+  if (msg->map_info->len <= idx)
+    return NULL;
+
+  return &g_array_index (msg->map_info, GstMIKEYMapSRTP, idx);
+}
+
+/**
+ * gst_mikey_message_insert_cs_srtp:
+ * @msg: a #GstMIKEYMessage
+ * @idx: the index to insert at
+ * @map: the map info
+ *
+ * Insert a Crypto Session map for SRTP in @msg at @idx
+ *
+ * When @idx is -1, the policy will be appended.
+ *
+ * Returns: %TRUE on success
+ */
+gboolean
+gst_mikey_message_insert_cs_srtp (GstMIKEYMessage * msg, gint idx,
+    const GstMIKEYMapSRTP * map)
+{
+  g_return_val_if_fail (msg != NULL, FALSE);
+  g_return_val_if_fail (msg->map_type == GST_MIKEY_MAP_TYPE_SRTP, FALSE);
+  g_return_val_if_fail (map != NULL, FALSE);
+  g_return_val_if_fail (idx == -1 || msg->map_info->len > idx, FALSE);
+
+  if (idx == -1)
+    g_array_append_val (msg->map_info, *map);
+  else
+    g_array_insert_val (msg->map_info, idx, *map);
+
+  return TRUE;
+}
+
+/**
+ * gst_mikey_message_replace_cs_srtp:
+ * @msg: a #GstMIKEYMessage
+ * @idx: the index to insert at
+ * @map: the map info
+ *
+ * Replace a Crypto Session map for SRTP in @msg at @idx with @map.
+ *
+ * Returns: %TRUE on success
+ */
+gboolean
+gst_mikey_message_replace_cs_srtp (GstMIKEYMessage * msg, gint idx,
+    const GstMIKEYMapSRTP * map)
+{
+  g_return_val_if_fail (msg != NULL, FALSE);
+  g_return_val_if_fail (msg->map_type == GST_MIKEY_MAP_TYPE_SRTP, FALSE);
+  g_return_val_if_fail (map != NULL, FALSE);
+  g_return_val_if_fail (msg->map_info->len > idx, FALSE);
+
+  g_array_index (msg->map_info, GstMIKEYMapSRTP, idx) = *map;
+
+  return TRUE;
+}
+
+/**
+ * gst_mikey_message_remove_cs_srtp:
+ * @msg: a #GstMIKEYMessage
+ * @idx: the index to remove
+ *
+ * Remove the SRTP policy at @idx.
+ *
+ * Returns: %TRUE on success
+ */
+gboolean
+gst_mikey_message_remove_cs_srtp (GstMIKEYMessage * msg, gint idx)
+{
+  g_return_val_if_fail (msg != NULL, FALSE);
+  g_return_val_if_fail (msg->map_type == GST_MIKEY_MAP_TYPE_SRTP, FALSE);
+  g_return_val_if_fail (msg->map_info->len > idx, FALSE);
+
+  g_array_remove_index (msg->map_info, idx);
+
+  return TRUE;
+}
+
+/**
+ * gst_mikey_message_add_cs_srtp:
+ * @msg: a #GstMIKEYMessage
+ * @policy: The security policy applied for the stream with @ssrc
+ * @ssrc: the SSRC that must be used for the stream
+ * @roc: current rollover counter
+ *
+ * Add a Crypto policy for SRTP to @msg.
+ *
+ * Returns: %TRUE on success
+ */
+gboolean
+gst_mikey_message_add_cs_srtp (GstMIKEYMessage * msg, guint8 policy,
+    guint32 ssrc, guint32 roc)
+{
+  GstMIKEYMapSRTP val;
+
+  g_return_val_if_fail (msg != NULL, FALSE);
+  g_return_val_if_fail (msg->map_type == GST_MIKEY_MAP_TYPE_SRTP, FALSE);
+
+  val.policy = policy;
+  val.ssrc = ssrc;
+  val.roc = roc;
+
+  return gst_mikey_message_insert_cs_srtp (msg, -1, &val);
+}
+
+/* adding/retrieving payloads */
+/**
+ * gst_mikey_message_get_n_payloads:
+ * @msg: a #GstMIKEYMessage
+ *
+ * Get the number of payloads in @msg.
+ *
+ * Returns: the number of payloads in @msg
+ */
+guint
+gst_mikey_message_get_n_payloads (const GstMIKEYMessage * msg)
+{
+  g_return_val_if_fail (msg != NULL, 0);
+
+  return msg->payloads->len;
+}
+
+/**
+ * gst_mikey_message_get_payload:
+ * @msg: a #GstMIKEYMessage
+ * @idx: an index
+ *
+ * Get the #GstMIKEYPayload at @idx in @msg
+ *
+ * Returns: the #GstMIKEYPayload at @idx
+ */
+const GstMIKEYPayload *
+gst_mikey_message_get_payload (const GstMIKEYMessage * msg, guint idx)
+{
+  g_return_val_if_fail (msg != NULL, NULL);
+
+  if (idx >= msg->payloads->len)
+    return NULL;
+
+  return g_array_index (msg->payloads, GstMIKEYPayload *, idx);
+}
+
+/**
+ * gst_mikey_message_find_payload:
+ * @msg: a #GstMIKEYMessage
+ * @type: a #GstMIKEYPayloadType
+ * @nth: payload to find
+ *
+ * Find the @nth occurence of the payload with @type in @msg.
+ *
+ * Returns: the @nth #GstMIKEYPayload of @type.
+ */
+const GstMIKEYPayload *
+gst_mikey_message_find_payload (const GstMIKEYMessage * msg,
+    GstMIKEYPayloadType type, guint idx)
+{
+  guint i, len, count;
+
+  count = 0;
+  len = msg->payloads->len;
+  for (i = 0; i < len; i++) {
+    GstMIKEYPayload *payload =
+        g_array_index (msg->payloads, GstMIKEYPayload *, i);
+
+    if (payload->type == type) {
+      if (count == idx)
+        return payload;
+
+      count++;
+    }
+  }
+  return NULL;
+}
+
+/**
+ * gst_mikey_message_remove_payload:
+ * @msg: a #GstMIKEYMessage
+ * @idx: an index
+ *
+ * Remove the payload in @msg at @idx
+ *
+ * Returns: %TRUE on success
+ */
+gboolean
+gst_mikey_message_remove_payload (GstMIKEYMessage * msg, guint idx)
+{
+  g_return_val_if_fail (msg != NULL, FALSE);
+  g_return_val_if_fail (msg->payloads->len > idx, FALSE);
+
+  g_array_remove_index (msg->payloads, idx);
+
+  return TRUE;
+}
+
+/**
+ * gst_mikey_message_insert_payload:
+ * @msg: a #GstMIKEYMessage
+ * @idx: an index
+ * @payload: a #GstMIKEYPayload
+ *
+ * Insert the @payload at index @idx in @msg. If @idx is -1, the payload
+ * will be appended to @msg.
+ *
+ * Returns: %TRUE on success
+ */
+gboolean
+gst_mikey_message_insert_payload (GstMIKEYMessage * msg, guint idx,
+    GstMIKEYPayload * payload)
+{
+  g_return_val_if_fail (msg != NULL, FALSE);
+  g_return_val_if_fail (payload != NULL, FALSE);
+  g_return_val_if_fail (idx == -1 || msg->payloads->len > idx, FALSE);
+
+  if (idx == -1)
+    g_array_append_val (msg->payloads, payload);
+  else
+    g_array_insert_val (msg->payloads, idx, payload);
+
+  return TRUE;
+}
+
+/**
+ * gst_mikey_message_add_payload:
+ * @msg: a #GstMIKEYMessage
+ * @payload: a #GstMIKEYPayload
+ *
+ * Add a new payload to @msg.
+ *
+ * Returns: %TRUE on success
+ */
+gboolean
+gst_mikey_message_add_payload (GstMIKEYMessage * msg, GstMIKEYPayload * payload)
+{
+  return gst_mikey_message_insert_payload (msg, -1, payload);
+}
+
+/**
+ * gst_mikey_message_replace_payload:
+ * @msg: a #GstMIKEYMessage
+ * @idx: an index
+ * @payload: a #GstMIKEYPayload
+ *
+ * Replace the payload at @idx in @msg with @payload.
+ *
+ * Returns: %TRUE on success
+ */
+gboolean
+gst_mikey_message_replace_payload (GstMIKEYMessage * msg, guint idx,
+    GstMIKEYPayload * payload)
+{
+  GstMIKEYPayload *p;
+
+  g_return_val_if_fail (msg != NULL, FALSE);
+  g_return_val_if_fail (payload != NULL, FALSE);
+  g_return_val_if_fail (msg->payloads->len > idx, FALSE);
+
+  p = g_array_index (msg->payloads, GstMIKEYPayload *, idx);
+  gst_mikey_payload_free (p);
+  g_array_index (msg->payloads, GstMIKEYPayload *, idx) = p;
+
+  return TRUE;
+}
+
+/**
+ * gst_mikey_message_add_pke:
+ * @msg: a #GstMIKEYMessage
+ * @C: envelope key cache indicator
+ * @data_len: the length of @data
+ * @data: the encrypted envelope key
+ *
+ * Add a new PKE payload to @msg with the given parameters.
+ *
+ * Returns: %TRUE on success
+ */
+gboolean
+gst_mikey_message_add_pke (GstMIKEYMessage * msg, GstMIKEYCacheType C,
+    guint16 data_len, const guint8 * data)
+{
+  GstMIKEYPayload *p;
+
+  g_return_val_if_fail (msg != NULL, FALSE);
+
+  p = gst_mikey_payload_new (GST_MIKEY_PT_PKE);
+  if (!gst_mikey_payload_pke_set (p, C, data_len, data))
+    return FALSE;
+
+  return gst_mikey_message_insert_payload (msg, -1, p);
+}
+
+/**
+ * gst_mikey_message_add_t:
+ * @msg: a #GstMIKEYMessage
+ * @type: specifies the timestamp type used
+ * @ts_value: The timestamp value of the specified @type
+ *
+ * Add a new T payload to @msg with the given parameters.
+ *
+ * Returns: %TRUE on success
+ */
+gboolean
+gst_mikey_message_add_t (GstMIKEYMessage * msg, GstMIKEYTSType type,
+    const guint8 * ts_value)
+{
+  GstMIKEYPayload *p;
+
+  g_return_val_if_fail (msg != NULL, FALSE);
+
+  p = gst_mikey_payload_new (GST_MIKEY_PT_T);
+  if (!gst_mikey_payload_t_set (p, type, ts_value))
+    return FALSE;
+
+  return gst_mikey_message_insert_payload (msg, -1, p);
+}
+
+/**
+ * gst_mikey_message_add_t_now_ntp_utc:
+ * @msg: a #GstMIKEYMessage
+ *
+ * Add a new T payload to @msg that contains the current time
+ * in NTP-UTC format.
+ *
+ * Returns: %TRUE on success
+ */
+gboolean
+gst_mikey_message_add_t_now_ntp_utc (GstMIKEYMessage * msg)
+{
+  gint64 now;
+  guint64 ntptime;
+  guint8 bytes[8];
+
+  now = g_get_real_time ();
+
+  /* convert clock time to NTP time. upper 32 bits should contain the seconds
+   * and the lower 32 bits, the fractions of a second. */
+  ntptime = gst_util_uint64_scale (now, (G_GINT64_CONSTANT (1) << 32),
+      GST_USECOND);
+  /* conversion from UNIX timestamp (seconds since 1970) to NTP (seconds
+   * since 1900). */
+  ntptime += (G_GUINT64_CONSTANT (2208988800) << 32);
+  GST_WRITE_UINT64_BE (bytes, ntptime);
+
+  return gst_mikey_message_add_t (msg, GST_MIKEY_TS_TYPE_NTP_UTC, bytes);
+}
+
+/**
+ * gst_mikey_message_add_rand:
+ * @msg: a #GstMIKEYMessage
+ * @len: the length of @rand
+ * @rand: random data
+ *
+ * Add a new RAND payload to @msg with the given parameters.
+ *
+ * Returns: %TRUE on success
+ */
+gboolean
+gst_mikey_message_add_rand (GstMIKEYMessage * msg, guint8 len,
+    const guint8 * rand)
+{
+  GstMIKEYPayload *p;
+
+  g_return_val_if_fail (msg != NULL, FALSE);
+  g_return_val_if_fail (len != 0 && rand != NULL, FALSE);
+
+  p = gst_mikey_payload_new (GST_MIKEY_PT_RAND);
+  if (!gst_mikey_payload_rand_set (p, len, rand))
+    return FALSE;
+
+  return gst_mikey_message_insert_payload (msg, -1, p);
+}
+
+/**
+ * gst_mikey_message_add_rand_len:
+ * @msg: a #GstMIKEYMessage
+ * @len: length
+ *
+ * Add a new RAND payload to @msg with @len random bytes.
+ *
+ * Returns: %TRUE on success
+ */
+gboolean
+gst_mikey_message_add_rand_len (GstMIKEYMessage * msg, guint8 len)
+{
+  GstMIKEYPayloadRAND *p;
+  guint i;
+
+  p = (GstMIKEYPayloadRAND *) gst_mikey_payload_new (GST_MIKEY_PT_RAND);
+  p->len = len;
+  p->rand = g_malloc (len);
+  for (i = 0; i < len; i++)
+    p->rand[i] = g_random_int_range (0, 256);
+
+  return gst_mikey_message_add_payload (msg, &p->pt);
+}
+
+#define ENSURE_SIZE(n)                          \
+G_STMT_START {                                  \
+  guint offset = data - arr->data;              \
+  g_byte_array_set_size (arr, offset + n);      \
+  data = arr->data + offset;                    \
+} G_STMT_END
+static guint
+payloads_to_bytes (GArray * payloads, GByteArray * arr, guint8 ** ptr,
+    guint offset, GstMIKEYEncryptInfo * info, GError ** error)
+{
+  guint i, n_payloads, len, start, size;
+  guint8 *data;
+  GstMIKEYPayload *next_payload;
+
+  len = arr->len;
+  start = *ptr - arr->data;
+  data = *ptr + offset;
+
+  n_payloads = payloads->len;
+
+  for (i = 0; i < n_payloads; i++) {
+    GstMIKEYPayload *payload = g_array_index (payloads, GstMIKEYPayload *, i);
+
+    if (i + 1 < n_payloads)
+      next_payload = g_array_index (payloads, GstMIKEYPayload *, i + 1);
+    else
+      next_payload = NULL;
+
+    switch (payload->type) {
+      case GST_MIKEY_PT_KEMAC:
+      {
+        GstMIKEYPayloadKEMAC *p = (GstMIKEYPayloadKEMAC *) payload;
+        guint enc_len;
+        guint mac_len;
+
+        if ((mac_len = get_mac_len (p->mac_alg)) == -1)
+          break;
+
+        /*                  1                   2                   3
+         *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         * ! Next payload  ! Encr alg      ! Encr data len                 !
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         * !                        Encr data                              ~
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         * ! Mac alg       !        MAC                                    ~
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         */
+        ENSURE_SIZE (4);
+        data[0] = next_payload ? next_payload->type : GST_MIKEY_PT_LAST;
+        data[1] = p->enc_alg;
+        enc_len =
+            payloads_to_bytes (p->subpayloads, arr, &data, 4, info, error);
+        /* FIXME, encrypt data here */
+        GST_WRITE_UINT16_BE (&data[2], enc_len);
+        data += enc_len;
+        ENSURE_SIZE (5 + mac_len);
+        data[4] = p->mac_alg;
+        /* FIXME, do mac here */
+        data += 5 + mac_len;
+        break;
+      }
+      case GST_MIKEY_PT_T:
+      {
+        GstMIKEYPayloadT *p = (GstMIKEYPayloadT *) payload;
+        guint ts_len;
+
+        if ((ts_len = get_ts_len (p->type)) == -1)
+          break;
+
+        /*                      1                   2                   3
+         *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         * ! Next Payload  !   TS type     ! TS value                      ~
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         */
+        ENSURE_SIZE (2 + ts_len);
+        data[0] = next_payload ? next_payload->type : GST_MIKEY_PT_LAST;
+        data[1] = p->type;
+        memcpy (&data[2], p->ts_value, ts_len);
+        data += 2 + ts_len;
+        break;
+      }
+      case GST_MIKEY_PT_PKE:
+      {
+        guint16 clen;
+        GstMIKEYPayloadPKE *p = (GstMIKEYPayloadPKE *) payload;
+        /*                      1                   2                   3
+         *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         * ! Next Payload  ! C ! Data len                  ! Data          ~
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         */
+        ENSURE_SIZE (3 + p->data_len);
+        data[0] = next_payload ? next_payload->type : GST_MIKEY_PT_LAST;
+        clen = (p->C << 14) || (p->data_len & 0x3fff);
+        GST_WRITE_UINT16_BE (&data[1], clen);
+        memcpy (&data[3], p->data, p->data_len);
+        data += 3 + p->data_len;
+        break;
+      }
+      case GST_MIKEY_PT_DH:
+      case GST_MIKEY_PT_SIGN:
+      case GST_MIKEY_PT_ID:
+      case GST_MIKEY_PT_CERT:
+      case GST_MIKEY_PT_CHASH:
+      case GST_MIKEY_PT_V:
+        break;
+      case GST_MIKEY_PT_SP:
+      {
+        GstMIKEYPayloadSP *p = (GstMIKEYPayloadSP *) payload;
+        guint len, plen, i;
+
+        plen = 0;
+        len = p->params->len;
+        for (i = 0; i < len; i++) {
+          GstMIKEYPayloadSPParam *param = &g_array_index (p->params,
+              GstMIKEYPayloadSPParam, i);
+          plen += 2 + param->len;
+        }
+        /*                      1                   2                   3
+         *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         * ! Next payload  ! Policy no     ! Prot type     ! Policy param  ~
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         * ~ length (cont) ! Policy param                                  ~
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         */
+        ENSURE_SIZE (5 + plen);
+        data[0] = next_payload ? next_payload->type : GST_MIKEY_PT_LAST;
+        data[1] = p->policy;
+        data[2] = p->proto;
+        GST_WRITE_UINT16_BE (&data[3], plen);
+        data += 5;
+        for (i = 0; i < len; i++) {
+          GstMIKEYPayloadSPParam *param = &g_array_index (p->params,
+              GstMIKEYPayloadSPParam, i);
+          /*                     1                   2                   3
+           * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+           * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+           * ! Type          ! Length        ! Value                         ~
+           * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+           */
+          data[0] = param->type;
+          data[1] = param->len;
+          memcpy (&data[2], param->val, param->len);
+          data += 2 + param->len;
+        }
+        break;
+      }
+      case GST_MIKEY_PT_RAND:
+      {
+        GstMIKEYPayloadRAND *p = (GstMIKEYPayloadRAND *) payload;
+        /*                      1                   2                   3
+         *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         * ! Next payload  ! RAND len      ! RAND                          ~
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         */
+        ENSURE_SIZE (2 + p->len);
+        data[0] = next_payload ? next_payload->type : GST_MIKEY_PT_LAST;
+        data[1] = p->len;
+        memcpy (&data[2], p->rand, p->len);
+        data += 2 + p->len;
+        break;
+      }
+      case GST_MIKEY_PT_ERR:
+        break;
+      case GST_MIKEY_PT_KEY_DATA:
+      {
+        GstMIKEYPayloadKeyData *p = (GstMIKEYPayloadKeyData *) payload;
+        /*                        1                   2                   3
+         *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         * !  Next Payload ! Type  ! KV    ! Key data len                  !
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         * !                         Key data                              ~
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         * ! Salt len (optional)           ! Salt data (optional)          ~
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         * !                        KV data (optional)                     ~
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         */
+        ENSURE_SIZE (4 + p->key_len);
+        data[0] = next_payload ? next_payload->type : GST_MIKEY_PT_LAST;
+        data[1] =
+            ((p->key_type | (p->salt_len ? 1 : 0)) << 4) | (p->kv_type & 0xf);
+        GST_WRITE_UINT16_BE (&data[2], p->key_len);
+        memcpy (&data[4], p->key_data, p->key_len);
+        data += 4 + p->key_len;
+
+        if (p->salt_len > 0) {
+          ENSURE_SIZE (2 + p->salt_len);
+          GST_WRITE_UINT16_BE (&data[0], p->salt_len);
+          memcpy (&data[2], p->salt_data, p->salt_len);
+          data += 2 + p->salt_len;
+        }
+        if (p->kv_type == GST_MIKEY_KV_SPI) {
+          /*
+           *                      1                   2                   3
+           *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+           * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+           * ! SPI Length    ! SPI                                           ~
+           * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+           */
+          ENSURE_SIZE (1 + p->kv_len[0]);
+          data[0] = p->kv_len[0];
+          memcpy (&data[1], p->kv_data[0], p->kv_len[0]);
+          data += 1 + p->kv_len[0];
+        } else if (p->kv_type == GST_MIKEY_KV_INTERVAL) {
+          /*
+           *                      1                   2                   3
+           *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+           * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+           * ! VF Length     ! Valid From                                    ~
+           * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+           * ! VT Length     ! Valid To (expires)                            ~
+           * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+           */
+          ENSURE_SIZE (1 + p->kv_len[0]);
+          data[0] = p->kv_len[0];
+          memcpy (&data[1], p->kv_data[0], p->kv_len[0]);
+          data += 1 + p->kv_len[0];
+          ENSURE_SIZE (1 + p->kv_len[1]);
+          data[0] = p->kv_len[1];
+          memcpy (&data[1], p->kv_data[1], p->kv_len[1]);
+          data += 1 + p->kv_len[1];
+        }
+        break;
+      }
+      case GST_MIKEY_PT_GEN_EXT:
+      case GST_MIKEY_PT_LAST:
+        break;
+    }
+  }
+  *ptr = arr->data + start;
+  size = arr->len - len;
+
+  return size;
+}
+
+/**
+ * gst_mikey_message_to_bytes:
+ * @msg: a #GstMIKEYMessage
+ * @info: a #GstMIKEYEncryptInfo
+ * @error: a #GError
+ *
+ * Convert @msg to a #GBytes.
+ *
+ * Returns: a new #GBytes for @msg.
+ */
+GBytes *
+gst_mikey_message_to_bytes (GstMIKEYMessage * msg, GstMIKEYEncryptInfo * info,
+    GError ** error)
+{
+  GByteArray *arr = NULL;
+  guint8 *data;
+  GstMIKEYPayload *next_payload;
+  guint i, n_cs;
+  arr = g_byte_array_new ();
+  data = arr->data;
+
+  if (msg->payloads->len == 0)
+    next_payload = NULL;
+  else
+    next_payload = g_array_index (msg->payloads, GstMIKEYPayload *, 0);
+
+  n_cs = msg->map_info->len;
+  /*                      1                   2                   3
+   *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+   * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   * !  version      !  data type    ! next payload  !V! PRF func    !
+   * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   * !                         CSB ID                                !
+   * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   * ! #CS           ! CS ID map type! CS ID map info                ~
+   * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   */
+  ENSURE_SIZE (10 + 9 * n_cs);
+  data[0] = msg->version;
+  data[1] = msg->type;
+  data[2] = next_payload ? next_payload->type : GST_MIKEY_PT_LAST;
+  data[3] = (msg->V ? 0x80 : 0x00) | (msg->prf_func & 0x7f);
+  GST_WRITE_UINT32_BE (&data[4], msg->CSB_id);
+  data[8] = n_cs;
+  data[9] = msg->map_type;
+  data += 10;
+
+  for (i = 0; i < n_cs; i++) {
+    GstMIKEYMapSRTP *info = &g_array_index (msg->map_info, GstMIKEYMapSRTP, i);
+    /*                      1                   2                   3
+     *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+     * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+     * ! Policy_no_1   ! SSRC_1                                        !
+     * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+     * ! SSRC_1 (cont) ! ROC_1                                         !
+     * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+     * ! ROC_1 (cont)  ! Policy_no_2   ! SSRC_2                        !
+     * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+     * ! SSRC_2 (cont)                 ! ROC_2                         !
+     * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+     * ! ROC_2 (cont)                  !                               :
+     * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ...
+     */
+    data[0] = info->policy;
+    GST_WRITE_UINT32_BE (&data[1], info->ssrc);
+    GST_WRITE_UINT32_BE (&data[5], info->roc);
+    data += 9;
+  }
+
+  payloads_to_bytes (msg->payloads, arr, &data, 0, info, error);
+
+  return g_byte_array_free_to_bytes (arr);
+}
+
+#undef ENSURE_SIZE
+
+typedef enum
+{
+  STATE_PSK,
+  STATE_PK,
+  STATE_KEMAC,
+  STATE_OTHER
+} ParseState;
+
+#define CHECK_SIZE(n) if (size < (n)) goto short_data;
+#define ADVANCE(n) (d += (n), size -= (n));
+static gboolean
+payloads_from_bytes (ParseState state, GArray * payloads, const guint8 * d,
+    gsize size, guint8 next_payload, GstMIKEYDecryptInfo * info,
+    GError ** error)
+{
+  GstMIKEYPayload *p;
+
+  while (next_payload != GST_MIKEY_PT_LAST) {
+    switch (next_payload) {
+      case GST_MIKEY_PT_KEMAC:
+      {
+        guint mac_len;
+        GstMIKEYEncAlg enc_alg;
+        guint16 enc_len;
+        const guint8 *enc_data;
+        GstMIKEYMacAlg mac_alg;
+        guint8 np;
+        /*                  1                   2                   3
+         *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         * ! Next payload  ! Encr alg      ! Encr data len                 !
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         * !                        Encr data                              ~
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         * ! Mac alg       !        MAC                                    ~
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         */
+        CHECK_SIZE (5);
+        next_payload = d[0];
+        enc_alg = d[1];
+        enc_len = GST_READ_UINT16_BE (&d[2]);
+        CHECK_SIZE (5 + enc_len);
+        enc_data = &d[4];
+        /* FIXME, decrypt data */
+        ADVANCE (enc_len);
+        mac_alg = d[4];
+        if ((mac_len = get_mac_len (mac_alg)) == -1)
+          goto invalid_data;
+        CHECK_SIZE (5 + mac_len);
+        /* FIXME, check MAC */
+        ADVANCE (5 + mac_len);
+
+        p = gst_mikey_payload_new (GST_MIKEY_PT_KEMAC);
+        gst_mikey_payload_kemac_set (p, enc_alg, mac_alg);
+
+        if (state == STATE_PSK)
+          /* we expect Key data for Preshared key */
+          np = GST_MIKEY_PT_KEY_DATA;
+        else if (state == STATE_PK)
+          /* we expect ID for Public key */
+          np = GST_MIKEY_PT_ID;
+        else
+          goto invalid_data;
+
+        payloads_from_bytes (STATE_KEMAC,
+            ((GstMIKEYPayloadKEMAC *) p)->subpayloads, enc_data, enc_len, np,
+            info, error);
+        g_array_append_val (payloads, p);
+        break;
+      }
+      case GST_MIKEY_PT_T:
+      {
+        GstMIKEYTSType type;
+        guint ts_len;
+        const guint8 *ts_value;
+        /*                      1                   2                   3
+         *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         * ! Next Payload  !   TS type     ! TS value                      ~
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         */
+        CHECK_SIZE (2);
+        next_payload = d[0];
+        type = d[1];
+        if ((ts_len = get_ts_len (type)) == -1)
+          goto invalid_data;
+        CHECK_SIZE (2 + ts_len);
+        ts_value = &d[2];
+        ADVANCE (2 + ts_len);
+
+        p = gst_mikey_payload_new (GST_MIKEY_PT_T);
+        gst_mikey_payload_t_set (p, type, ts_value);
+        g_array_append_val (payloads, p);
+        break;
+      }
+      case GST_MIKEY_PT_PKE:
+      {
+        guint8 C;
+        guint16 clen, data_len;
+        const guint8 *data;
+        /*                      1                   2                   3
+         *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         * ! Next Payload  ! C ! Data len                  ! Data          ~
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         */
+        CHECK_SIZE (3);
+        next_payload = d[0];
+        clen = GST_READ_UINT16_BE (&d[1]);
+        C = clen >> 14;
+        data_len = clen & 0x3fff;
+        CHECK_SIZE (3 + data_len);
+        data = &d[3];
+        ADVANCE (3 + data_len);
+
+        p = gst_mikey_payload_new (GST_MIKEY_PT_PKE);
+        gst_mikey_payload_pke_set (p, C, data_len, data);
+        g_array_append_val (payloads, p);
+        break;
+      }
+      case GST_MIKEY_PT_DH:
+      case GST_MIKEY_PT_SIGN:
+      case GST_MIKEY_PT_ID:
+      case GST_MIKEY_PT_CERT:
+      case GST_MIKEY_PT_CHASH:
+      case GST_MIKEY_PT_V:
+        break;
+      case GST_MIKEY_PT_SP:
+      {
+        GstMIKEYPayload *p;
+        guint8 policy;
+        GstMIKEYSecProto proto;
+        guint16 plen;
+        /*                      1                   2                   3
+         *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         * ! Next payload  ! Policy no     ! Prot type     ! Policy param  ~
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         * ~ length (cont) ! Policy param                                  ~
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         */
+        CHECK_SIZE (5);
+        next_payload = d[0];
+        policy = d[1];
+        proto = d[2];
+        plen = GST_READ_UINT16_BE (&d[3]);
+        ADVANCE (5);
+
+        p = gst_mikey_payload_new (GST_MIKEY_PT_SP);
+        gst_mikey_payload_sp_set (p, policy, proto);
+
+        CHECK_SIZE (plen);
+        while (plen) {
+          guint8 type, len;
+
+          CHECK_SIZE (2);
+          /*                     1                   2                   3
+           * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+           * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+           * ! Type          ! Length        ! Value                         ~
+           * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+           */
+          type = d[0];
+          len = d[1];
+          CHECK_SIZE (2 + len);
+          gst_mikey_payload_sp_add_param (p, type, len, &d[2]);
+          ADVANCE (2 + len);
+          plen -= 2 + len;
+        }
+        g_array_append_val (payloads, p);
+        break;
+      }
+      case GST_MIKEY_PT_RAND:
+      {
+        guint8 len;
+        const guint8 *rand;
+        /*                      1                   2                   3
+         *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         * ! Next payload  ! RAND len      ! RAND                          ~
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         */
+        CHECK_SIZE (2);
+        next_payload = d[0];
+        len = d[1];
+        CHECK_SIZE (2 + len);
+        rand = &d[2];
+        ADVANCE (2 + len);
+
+        p = gst_mikey_payload_new (GST_MIKEY_PT_RAND);
+        gst_mikey_payload_rand_set (p, len, rand);
+        g_array_append_val (payloads, p);
+        break;
+      }
+      case GST_MIKEY_PT_ERR:
+        break;
+      case GST_MIKEY_PT_KEY_DATA:
+      {
+        GstMIKEYKeyDataType key_type;
+        GstMIKEYKVType kv_type;
+        guint16 key_len, salt_len = 0;
+        const guint8 *key_data, *salt_data;
+        /*                        1                   2                   3
+         *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         * !  Next Payload ! Type  ! KV    ! Key data len                  !
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         * !                         Key data                              ~
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         * ! Salt len (optional)           ! Salt data (optional)          ~
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         * !                        KV data (optional)                     ~
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         */
+        CHECK_SIZE (4);
+        next_payload = d[0];
+        key_type = d[1] >> 4;
+        kv_type = d[1] & 0xf;
+        key_len = GST_READ_UINT16_BE (&d[2]);
+        CHECK_SIZE (4 + key_len);
+        key_data = &d[4];
+        ADVANCE (4 + key_len);
+        if (key_type & 1) {
+          CHECK_SIZE (2);
+          salt_len = GST_READ_UINT16_BE (&d[0]);
+          CHECK_SIZE (2 + salt_len);
+          salt_data = &d[2];
+          ADVANCE (2 + salt_len);
+        }
+        p = gst_mikey_payload_new (GST_MIKEY_PT_KEY_DATA);
+        gst_mikey_payload_key_data_set_key (p, key_type & 2, key_len, key_data);
+        if (salt_len > 0)
+          gst_mikey_payload_key_data_set_salt (p, salt_len, salt_data);
+
+        if (kv_type == GST_MIKEY_KV_SPI) {
+          guint8 spi_len;
+          const guint8 *spi_data;
+          /*
+           *                      1                   2                   3
+           *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+           * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+           * ! SPI Length    ! SPI                                           ~
+           * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+           */
+          CHECK_SIZE (1);
+          spi_len = d[0];
+          CHECK_SIZE (1 + spi_len);
+          spi_data = &d[1];
+          ADVANCE (1 + spi_len);
+
+          gst_mikey_payload_key_data_set_spi (p, spi_len, spi_data);
+        } else if (kv_type == GST_MIKEY_KV_INTERVAL) {
+          guint8 vf_len, vt_len;
+          const guint8 *vf_data, *vt_data;
+          /*
+           *                      1                   2                   3
+           *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+           * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+           * ! VF Length     ! Valid From                                    ~
+           * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+           * ! VT Length     ! Valid To (expires)                            ~
+           * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+           */
+          CHECK_SIZE (1);
+          vf_len = d[0];
+          CHECK_SIZE (1 + vf_len);
+          vf_data = &d[1];
+          ADVANCE (1 + vf_len);
+          CHECK_SIZE (1);
+          vt_len = d[0];
+          CHECK_SIZE (1 + vt_len);
+          vt_data = &d[1];
+          ADVANCE (1 + vt_len);
+
+          gst_mikey_payload_key_data_set_interval (p, vf_len, vf_data, vt_len,
+              vt_data);
+        } else if (kv_type != GST_MIKEY_KV_NULL)
+          goto invalid_data;
+
+        g_array_append_val (payloads, p);
+        break;
+      }
+      case GST_MIKEY_PT_GEN_EXT:
+      case GST_MIKEY_PT_LAST:
+        break;
+    }
+  }
+  return TRUE;
+
+  /* ERRORS */
+short_data:
+  {
+    GST_DEBUG ("not enough data");
+    return FALSE;
+  }
+invalid_data:
+  {
+    GST_DEBUG ("invalid data");
+    return FALSE;
+  }
+}
+
+/**
+ * gst_mikey_message_new_from_data:
+ * @data: bytes to read
+ * @size: length of @data
+ * @info: #GstMIKEYDecryptInfo
+ * @error: a #GError
+ *
+ * Parse @size bytes from @data into a #GstMIKEYMessage. @info contains the
+ * parameters to decrypt and verify the data.
+ *
+ * Returns: a #GstMIKEYMessage on success or %NULL when parsing failed and
+ * @error will be set.
+ */
+GstMIKEYMessage *
+gst_mikey_message_new_from_data (gconstpointer data, gsize size,
+    GstMIKEYDecryptInfo * info, GError ** error)
+{
+  GstMIKEYMessage *msg;
+  guint n_cs, i;
+  const guint8 *d = data;
+  guint8 next_payload;
+  ParseState state;
+
+  g_return_val_if_fail (data != NULL, NULL);
+
+  msg = gst_mikey_message_new ();
+  /*                      1                   2                   3
+   *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+   * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   * !  version      !  data type    ! next payload  !V! PRF func    !
+   * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   * !                         CSB ID                                !
+   * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   * ! #CS           ! CS ID map type! CS ID map info                ~
+   * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   */
+  CHECK_SIZE (10);
+  msg->version = d[0];
+  if (msg->version != GST_MIKEY_VERSION)
+    goto unknown_version;
+
+  msg->type = d[1];
+  next_payload = d[2];
+  msg->V = d[3] & 0x80 ? TRUE : FALSE;
+  msg->prf_func = d[3] & 0x7f;
+  msg->CSB_id = GST_READ_UINT32_BE (&d[4]);
+  n_cs = d[8];
+  msg->map_type = d[9];
+  ADVANCE (10);
+
+  CHECK_SIZE (n_cs * 9);
+  for (i = 0; i < n_cs; i++) {
+    GstMIKEYMapSRTP map;
+
+    /*                      1                   2                   3
+     *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+     * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+     * ! Policy_no_1   ! SSRC_1                                        !
+     * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+     * ! SSRC_1 (cont) ! ROC_1                                         !
+     * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+     * ! ROC_1 (cont)  ! Policy_no_2   ! SSRC_2                        ~
+     * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+     */
+    map.policy = d[0];
+    map.ssrc = GST_READ_UINT32_BE (&d[1]);
+    map.roc = GST_READ_UINT32_BE (&d[5]);
+    gst_mikey_message_insert_cs_srtp (msg, -1, &map);
+    ADVANCE (9);
+  }
+  if (msg->type == GST_MIKEY_TYPE_PSK_INIT)
+    state = STATE_PSK;
+  else if (msg->type == GST_MIKEY_TYPE_PK_INIT)
+    state = STATE_PK;
+  else
+    state = STATE_OTHER;
+
+  if (!payloads_from_bytes (state, msg->payloads, d, size, next_payload, info,
+          error))
+    goto parse_error;
+
+  return msg;
+
+  /* ERRORS */
+short_data:
+  {
+    GST_DEBUG ("not enough data");
+    gst_mikey_message_free (msg);
+    return NULL;
+  }
+unknown_version:
+  {
+    GST_DEBUG ("unknown version");
+    gst_mikey_message_free (msg);
+    return NULL;
+  }
+parse_error:
+  {
+    GST_DEBUG ("failed to parse");
+    gst_mikey_message_free (msg);
+    return NULL;
+  }
+}
diff --git a/gst-libs/gst/sdp/gstmikey.h b/gst-libs/gst/sdp/gstmikey.h
new file mode 100644
index 0000000..0ffeb2f
--- /dev/null
+++ b/gst-libs/gst/sdp/gstmikey.h
@@ -0,0 +1,574 @@
+/* GStreamer
+ * Copyright (C) <2014> Wim Taymans <wim.taymans@gmail.com>
+ *
+ * gstmikey.h: various helper functions to manipulate mikey messages
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __GST_MIKEY_H__
+#define __GST_MIKEY_H__
+
+#include <gst/gst.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GstMIKEYMessage GstMIKEYMessage;
+typedef struct _GstMIKEYEncryptInfo GstMIKEYEncryptInfo;
+typedef struct _GstMIKEYDecryptInfo GstMIKEYDecryptInfo;
+
+/**
+ * GST_MIKEY_VERSION:
+ *
+ * The supported MIKEY version 1.
+ */
+#define GST_MIKEY_VERSION 1
+
+/**
+ * GstMIKEYType:
+ * @GST_MIKEY_TYPE_INVALID: Invalid type
+ * @GST_MIKEY_TYPE_PSK_INIT: Initiator's pre-shared key message
+ * @GST_MIKEY_TYPE_PSK_VERIFY: Verification message of a Pre-shared key message
+ * @GST_MIKEY_TYPE_PK_INIT: Initiator's public-key transport message
+ * @GST_MIKEY_TYPE_PK_VERIFY: Verification message of a public-key message
+ * @GST_MIKEY_TYPE_DH_INIT: Initiator's DH exchange message
+ * @GST_MIKEY_TYPE_DH_RESP: Responder's DH exchange message
+ * @GST_MIKEY_TYPE_ERROR: Error message
+ *
+ * Different MIKEY data types.
+ */
+typedef enum
+{
+  GST_MIKEY_TYPE_INVALID    = -1,
+  GST_MIKEY_TYPE_PSK_INIT   = 0,
+  GST_MIKEY_TYPE_PSK_VERIFY = 1,
+  GST_MIKEY_TYPE_PK_INIT    = 2,
+  GST_MIKEY_TYPE_PK_VERIFY  = 3,
+  GST_MIKEY_TYPE_DH_INIT    = 4,
+  GST_MIKEY_TYPE_DH_RESP    = 5,
+  GST_MIKEY_TYPE_ERROR      = 6
+} GstMIKEYType;
+
+/**
+ * GstMIKEYPayloadType:
+ * @GST_MIKEY_PT_LAST: Last payload
+ * @GST_MIKEY_PT_KEMAC: Key data transport payload
+ * @GST_MIKEY_PT_PKE: Envelope data payload
+ * @GST_MIKEY_PT_DH: DH data payload
+ * @GST_MIKEY_PT_SIGN: Signature payload
+ * @GST_MIKEY_PT_T: Timestamp payload
+ * @GST_MIKEY_PT_ID: ID payload
+ * @GST_MIKEY_PT_CERT: Certificate Payload
+ * @GST_MIKEY_PT_CHASH: Cert hash payload
+ * @GST_MIKEY_PT_V: Verfication message payload
+ * @GST_MIKEY_PT_SP: Security Policy payload
+ * @GST_MIKEY_PT_RAND: RAND payload
+ * @GST_MIKEY_PT_ERR: Error payload
+ * @GST_MIKEY_PT_KEY_DATA: Key data sub-payload
+ * @GST_MIKEY_PT_GEN_EXT: General Extension Payload
+
+ * Different MIKEY Payload types.
+ */
+typedef enum
+{
+  GST_MIKEY_PT_LAST      = 0,
+  GST_MIKEY_PT_KEMAC     = 1,
+  GST_MIKEY_PT_PKE       = 2,
+  GST_MIKEY_PT_DH        = 3,
+  GST_MIKEY_PT_SIGN      = 4,
+  GST_MIKEY_PT_T         = 5,
+  GST_MIKEY_PT_ID        = 6,
+  GST_MIKEY_PT_CERT      = 7,
+  GST_MIKEY_PT_CHASH     = 8,
+  GST_MIKEY_PT_V         = 9,
+  GST_MIKEY_PT_SP        = 10,
+  GST_MIKEY_PT_RAND      = 11,
+  GST_MIKEY_PT_ERR       = 12,
+  GST_MIKEY_PT_KEY_DATA  = 20,
+  GST_MIKEY_PT_GEN_EXT   = 21
+} GstMIKEYPayloadType;
+
+/**
+ * GstMIKEYPRFFunc:
+ * @GST_MIKEY_PRF_MIKEY_1: MIKEY-1 PRF function
+ *
+ * The PRF function that has been/will be used for key derivation
+ */
+typedef enum
+{
+  GST_MIKEY_PRF_MIKEY_1  = 0
+} GstMIKEYPRFFunc;
+
+/**
+ * GstMIKEYMapType:
+ * @GST_MIKEY_MAP_TYPE_SRTP:
+ *
+ * Specifies the method of uniquely mapping Crypto Sessions to the security
+ * protocol sessions.
+ */
+typedef enum
+{
+  GST_MIKEY_MAP_TYPE_SRTP  = 0
+} GstMIKEYMapType;
+
+/**
+ * GstMIKEYMapSRTP:
+ * @policy: The security policy applied for the stream with @ssrc
+ * @ssrc: the SSRC that must be used for the stream
+ * @roc: current rollover counter
+ *
+ * The Security policy Map item for SRTP
+ */
+typedef struct {
+  guint8  policy;
+  guint32 ssrc;
+  guint32 roc;
+} GstMIKEYMapSRTP;
+
+typedef struct _GstMIKEYPayload GstMIKEYPayload;
+
+/**
+ * GstMIKEYPayloadClearFunc:
+ * @payload: a #GstMIKEYPayload
+ *
+ * Function used to clear a payload
+ */
+typedef void (*GstMIKEYPayloadClearFunc) (GstMIKEYPayload *payload);
+
+/**
+ * GstMIKEYPayloadCopyFunc:
+ * @payload: a #GstMIKEYPayload
+ *
+ * Function used to copy a payload
+ */
+typedef GstMIKEYPayload * (*GstMIKEYPayloadCopyFunc) (const GstMIKEYPayload *payload);
+
+/**
+ * GstMIKEYPayload:
+ * @type: the payload type
+ * @len: length of the payload
+ * @clear_func: function to clear the payload
+ * @copy_func: function to copy the payload
+ *
+ * Hold the common fields for all payloads
+ */
+struct _GstMIKEYPayload {
+  GstMIKEYPayloadType type;
+  guint len;
+  GstMIKEYPayloadClearFunc clear_func;
+  GstMIKEYPayloadCopyFunc copy_func;
+};
+
+GstMIKEYPayload *   gst_mikey_payload_new      (GstMIKEYPayloadType type);
+GstMIKEYPayload *   gst_mikey_payload_copy     (const GstMIKEYPayload *payload);
+gboolean            gst_mikey_payload_free     (GstMIKEYPayload *payload);
+
+/**
+ * GstMIKEYEncAlg:
+ * @GST_MIKEY_ENC_NULL: no encryption
+ * @GST_MIKEY_ENC_AES_CM_128: AES-CM using a 128-bit key
+ * @GST_MIKEY_ENC_AES_KW_128: AES Key Wrap using a 128-bit key
+ *
+ * The encryption algorithm used to encrypt the Encr data field
+ */
+typedef enum
+{
+  GST_MIKEY_ENC_NULL        = 0,
+  GST_MIKEY_ENC_AES_CM_128  = 1,
+  GST_MIKEY_ENC_AES_KW_128  = 2
+} GstMIKEYEncAlg;
+
+/**
+ * GstMIKEYMacAlg:
+ * @GST_MIKEY_MAC_NULL: no authentication
+ * @GST_MIKEY_MAC_HMAC_SHA_1_160: HMAC-SHA-1-160
+ *
+ * Specifies the authentication algorithm used
+ */
+typedef enum
+{
+  GST_MIKEY_MAC_NULL            = 0,
+  GST_MIKEY_MAC_HMAC_SHA_1_160  = 1
+} GstMIKEYMacAlg;
+
+/**
+ * GstMIKEYPayloadKEMAC:
+ * @pt: the common #GstMIKEYPayload
+ * @enc_alg: the #GstMIKEYEncAlg
+ * @mac_alg: the #GstMIKEYMacAlg
+ * @subpayload: the subpayloads
+ *
+ * A structure holding the KEMAC payload
+ */
+typedef struct {
+  GstMIKEYPayload pt;
+
+  GstMIKEYEncAlg  enc_alg;
+  GstMIKEYMacAlg  mac_alg;
+  GArray *subpayloads;
+} GstMIKEYPayloadKEMAC;
+
+gboolean                gst_mikey_payload_kemac_set        (GstMIKEYPayload *payload,
+                                                            GstMIKEYEncAlg enc_alg,
+                                                            GstMIKEYMacAlg mac_alg);
+guint                   gst_mikey_payload_kemac_get_n_sub  (const GstMIKEYPayload *payload);
+const GstMIKEYPayload * gst_mikey_payload_kemac_get_sub    (const GstMIKEYPayload *payload, guint idx);
+gboolean                gst_mikey_payload_kemac_remove_sub (GstMIKEYPayload *payload, guint idx);
+gboolean                gst_mikey_payload_kemac_add_sub    (GstMIKEYPayload *payload,
+                                                            GstMIKEYPayload *newpay);
+
+/**
+ * GstMIKEYCacheType:
+ * @GST_MIKEY_CACHE_NONE: The envelope key MUST NOT be cached
+ * @GST_MIKEY_CACHE_ALWAYS: The envelope key MUST be cached
+ * @GST_MIKEY_CACHE_FOR_CSB: The envelope key MUST be cached, but only
+ *                           to be used for the specific CSB.
+ *
+ * The different cache types
+ */
+typedef enum
+{
+  GST_MIKEY_CACHE_NONE       = 0,
+  GST_MIKEY_CACHE_ALWAYS     = 1,
+  GST_MIKEY_CACHE_FOR_CSB    = 2
+} GstMIKEYCacheType;
+
+/**
+ * GstMIKEYPayloadPKE:
+ * @pt: the common #GstMIKEYPayload
+ * @C: envelope key cache indicator
+ * @data_len: length of @data
+ * @data: the encrypted envelope key
+ *
+ * The Envelope data payload contains the encrypted envelope key that is
+ * used in the public-key transport to protect the data in the Key data
+ * transport payload.  The encryption algorithm used is implicit from
+ * the certificate/public key used.
+ */
+typedef struct {
+  GstMIKEYPayload pt;
+
+  GstMIKEYCacheType C;
+  guint16           data_len;
+  guint8           *data;
+} GstMIKEYPayloadPKE;
+
+gboolean               gst_mikey_payload_pke_set     (GstMIKEYPayload *payload,
+                                                      GstMIKEYCacheType C,
+                                                      guint16 data_len, const guint8 *data);
+
+
+/**
+ * GstMIKEYTSType:
+ * @GST_MIKEY_TS_TYPE_NTP_UTC: an NTP time in UTC timezone
+ * @GST_MIKEY_TS_TYPE_NTP: an NTP time
+ * @GST_MIKEY_TS_TYPE_COUNTER: a counter
+ *
+ * Specifies the timestamp type.
+ */
+typedef enum
+{
+  GST_MIKEY_TS_TYPE_NTP_UTC  = 0,
+  GST_MIKEY_TS_TYPE_NTP      = 1,
+  GST_MIKEY_TS_TYPE_COUNTER  = 2
+} GstMIKEYTSType;
+
+/**
+ * GstMIKEYPayloadT:
+ * @pt: the payload header
+ * @type: a #GstMIKEYTSType
+ * @ts_value: the timestamp value
+ *
+ * The timestamp payload carries the timestamp information
+ */
+typedef struct {
+  GstMIKEYPayload pt;
+
+  GstMIKEYTSType  type;
+  guint8         *ts_value;
+} GstMIKEYPayloadT;
+
+gboolean   gst_mikey_payload_t_set   (GstMIKEYPayload *payload,
+                                      GstMIKEYTSType type, const guint8 *ts_value);
+
+/**
+ * GstMIKEYPayloadSPParam:
+ * @type: specifies the type of the parameter
+ * @len: specifies the length of @val
+ * @val: specifies the value of the parameter
+ *
+ * A Type/Length/Value field for security paramaters
+ */
+typedef struct {
+  guint8  type;
+  guint8  len;
+  guint8 *val;
+} GstMIKEYPayloadSPParam;
+
+/**
+ * GstMIKEYSecProto:
+ * @GST_MIKEY_SEC_PROTO_SRTP:
+ *
+ * Specifies the security protocol
+ */
+typedef enum
+{
+  GST_MIKEY_SEC_PROTO_SRTP  = 0
+} GstMIKEYSecProto;
+
+/**
+ * GstMIKEYSecSRTP:
+ * @GST_MIKEY_SP_SRTP_ENC_ALG: Encryption algorithm
+ * @GST_MIKEY_SP_SRTP_ENC_KEY_LEN: Session Encr. key length
+ * @GST_MIKEY_SP_SRTP_AUTH_ALG: Authentication algorithm
+ * @GST_MIKEY_SP_SRTP_AUTH_KEY_LEN: Session Auth. key length
+ * @GST_MIKEY_SP_SRTP_SALT_KEY_LEN: Session Salt key length
+ * @GST_MIKEY_SP_SRTP_PRF: SRTP Pseudo Random Function
+ * @GST_MIKEY_SP_SRTP_KEY_DERIV_RATE: Key derivation rate
+ * @GST_MIKEY_SP_SRTP_SRTP_ENC: SRTP encryption off/on, 0 if off, 1 if on
+ * @GST_MIKEY_SP_SRTP_SRTCP_ENC: SRTCP encryption off/on, 0 if off, 1 if on
+ * @GST_MIKEY_SP_SRTP_FEC_ORDER: sender's FEC order
+ * @GST_MIKEY_SP_SRTP_SRTP_AUTH: SRTP authentication off/on, 0 if off, 1 if on
+ * @GST_MIKEY_SP_SRTP_AUTH_TAG_LEN: Authentication tag length
+ * @GST_MIKEY_SP_SRTP_SRTP_PREFIX_LEN: SRTP prefix length
+ *
+ * This policy specifies the parameters for SRTP and SRTCP
+ */
+typedef enum
+{
+  GST_MIKEY_SP_SRTP_ENC_ALG         =    0,
+  GST_MIKEY_SP_SRTP_ENC_KEY_LEN     =    1,
+  GST_MIKEY_SP_SRTP_AUTH_ALG        =    2,
+  GST_MIKEY_SP_SRTP_AUTH_KEY_LEN    =    3,
+  GST_MIKEY_SP_SRTP_SALT_KEY_LEN    =    4,
+  GST_MIKEY_SP_SRTP_PRF             =    5,
+  GST_MIKEY_SP_SRTP_KEY_DERIV_RATE  =    6,
+  GST_MIKEY_SP_SRTP_SRTP_ENC        =    7,
+  GST_MIKEY_SP_SRTP_SRTCP_ENC       =    8,
+  GST_MIKEY_SP_SRTP_FEC_ORDER       =    9,
+  GST_MIKEY_SP_SRTP_SRTP_AUTH       =   10,
+  GST_MIKEY_SP_SRTP_AUTH_TAG_LEN    =   11,
+  GST_MIKEY_SP_SRTP_SRTP_PREFIX_LEN =   12
+} GstMIKEYSecSRTP;
+
+/**
+ * GstMIKEYPayloadSP:
+ * @pt: the payload header
+ * @policy: the policy number
+ * @proto: the security protocol
+ * @params: array of #GstMIKEYPayloadPSParam
+ *
+ * The Security Policy payload defines a set of policies that apply to a
+ * specific security protocol
+ */
+typedef struct {
+  GstMIKEYPayload pt;
+
+  guint policy;
+  GstMIKEYSecProto proto;
+  GArray *params;
+} GstMIKEYPayloadSP;
+
+gboolean            gst_mikey_payload_sp_set          (GstMIKEYPayload *payload,
+                                                       guint policy, GstMIKEYSecProto proto);
+guint               gst_mikey_payload_sp_get_n_params (const GstMIKEYPayload *payload);
+const GstMIKEYPayloadSPParam *
+                    gst_mikey_payload_sp_get_param    (const GstMIKEYPayload *payload, guint idx);
+gboolean            gst_mikey_payload_sp_remove_param (GstMIKEYPayload *payload, guint idx);
+gboolean            gst_mikey_payload_sp_add_param    (GstMIKEYPayload *payload,
+                                                       guint8 type, guint8 len, const guint8 *val);
+
+/**
+ * GstMIKEYPayloadRAND:
+ * @pt: the payload header
+ * @len: the length of @rand
+ * @rand: random values
+ *
+ * The RAND payload consists of a (pseudo-)random bit-string
+ */
+typedef struct {
+  GstMIKEYPayload pt;
+
+  guint8  len;
+  guint8 *rand;
+} GstMIKEYPayloadRAND;
+
+gboolean   gst_mikey_payload_rand_set     (GstMIKEYPayload *payload,
+                                           guint8 len, const guint8 *rand);
+
+/**
+ * GstMIKEYKeyDataType:
+ * @GST_MIKEY_KD_TGK: a TEK Generation Key
+ * @GST_MIKEY_KD_TEK: Traffic-Encrypting Key
+ *
+ * The type of key.
+ */
+typedef enum
+{
+  GST_MIKEY_KD_TGK      = 0,
+  GST_MIKEY_KD_TEK      = 2,
+} GstMIKEYKeyDataType;
+
+/**
+ * GstMIKEYKVType:
+ * @GST_MIKEY_KV_NULL: No specific usage rule
+ * @GST_MIKEY_KV_SPI: The key is associated with the SPI/MKI
+ * @GST_MIKEY_KV_INTERVAL: The key has a start and expiration time
+ *
+ * The key validity type
+ */
+typedef enum
+{
+  GST_MIKEY_KV_NULL      = 0,
+  GST_MIKEY_KV_SPI       = 1,
+  GST_MIKEY_KV_INTERVAL  = 2,
+} GstMIKEYKVType;
+
+/**
+ * GstMIKEYPayloadKeyData:
+ * @pt: the payload header
+ * @type: the #GstMIKEYKeyDataType of @key_data
+ * @key_len: length of @key_data
+ * @key_dat: the key data
+ * @salt_len: the length of @salt_data, can be 0
+ * @salt_data: salt data
+ * @kv_type: the Key Validity type
+ * @kv_len: length of @kv_data
+ * @kv_data: key validity data
+ *
+ * The Key data payload contains key material. It should be added as sub
+ * payload to the KEMAC.
+ */
+typedef struct {
+  GstMIKEYPayload pt;
+
+  GstMIKEYKeyDataType key_type;
+  guint16  key_len;
+  guint8  *key_data;
+  guint16  salt_len;
+  guint8  *salt_data;
+  GstMIKEYKVType kv_type;
+  guint8   kv_len[2];
+  guint8  *kv_data[2];
+} GstMIKEYPayloadKeyData;
+
+gboolean   gst_mikey_payload_key_data_set_key      (GstMIKEYPayload *payload,
+                                                    GstMIKEYKeyDataType key_type,
+                                                    guint16 key_len, const guint8 *key_data);
+gboolean   gst_mikey_payload_key_data_set_salt     (GstMIKEYPayload *payload,
+                                                    guint16 salt_len, const guint8 *salt_data);
+gboolean   gst_mikey_payload_key_data_set_spi      (GstMIKEYPayload *payload,
+                                                    guint8 spi_len, const guint8 *spi_data);
+gboolean   gst_mikey_payload_key_data_set_interval (GstMIKEYPayload *payload,
+                                                    guint8 vf_len, const guint8 *vf_data,
+                                                    guint8 vt_len, const guint8 *vt_data);
+
+/**
+ * GstMIKEYMessage:
+ * @version: the version
+ * @type: the #GstMIKEYType message type
+ * @V: verify flag
+ * @prf_func: a #GstMIKEYPRFFunc
+ * @CSB_id: Identifies the Crypto Session Bundle
+ * @map_type: a #GstMIKEYMapType
+ * @map_info: map info array of type depending on @map_type
+ * @payloads: the payload array of #GstMIKEYPayload
+ *
+ * Structure holding the information of the MIKEY message
+ */
+struct _GstMIKEYMessage
+{
+  guint8 version;
+  GstMIKEYType type;
+  gboolean V;
+  GstMIKEYPRFFunc prf_func;
+  guint32 CSB_id;
+  GstMIKEYMapType map_type;
+  GArray *map_info;
+  GArray *payloads;
+};
+
+
+GstMIKEYMessage *           gst_mikey_message_new               (void);
+GstMIKEYMessage *           gst_mikey_message_new_from_data     (gconstpointer data, gsize size,
+                                                                 GstMIKEYDecryptInfo *info, GError **error);
+GstMIKEYMessage *           gst_mikey_message_new_from_bytes    (GBytes *bytes, GstMIKEYDecryptInfo *info,
+                                                                 GError **error);
+GBytes *                    gst_mikey_message_to_bytes          (GstMIKEYMessage *msg, GstMIKEYEncryptInfo *info,
+                                                                 GError **error);
+void                        gst_mikey_message_free              (GstMIKEYMessage *msg);
+
+gboolean                    gst_mikey_message_set_info          (GstMIKEYMessage *msg,
+                                                                 guint8 version, GstMIKEYType type, gboolean V,
+                                                                 GstMIKEYPRFFunc prf_func, guint32 CSB_id,
+                                                                 GstMIKEYMapType map_type);
+guint                       gst_mikey_message_get_n_cs          (const GstMIKEYMessage *msg);
+
+/* SRTP crypto sessions */
+const GstMIKEYMapSRTP *     gst_mikey_message_get_cs_srtp       (const GstMIKEYMessage *msg, guint idx);
+gboolean                    gst_mikey_message_insert_cs_srtp    (GstMIKEYMessage *msg, gint idx,
+                                                                 const GstMIKEYMapSRTP *map);
+gboolean                    gst_mikey_message_replace_cs_srtp   (GstMIKEYMessage *msg, gint idx,
+                                                                 const GstMIKEYMapSRTP *map);
+gboolean                    gst_mikey_message_remove_cs_srtp    (GstMIKEYMessage *msg, gint idx);
+gboolean                    gst_mikey_message_add_cs_srtp       (GstMIKEYMessage *msg,
+                                                                 guint8 policy, guint32 ssrc, guint32 roc);
+
+/* adding/retrieving payloads */
+guint                       gst_mikey_message_get_n_payloads    (const GstMIKEYMessage *msg);
+const GstMIKEYPayload *     gst_mikey_message_get_payload       (const GstMIKEYMessage *msg, guint idx);
+const GstMIKEYPayload *     gst_mikey_message_find_payload      (const GstMIKEYMessage *msg,
+                                                                 GstMIKEYPayloadType type, guint nth);
+gboolean                    gst_mikey_message_remove_payload    (GstMIKEYMessage *msg, guint idx);
+gboolean                    gst_mikey_message_insert_payload    (GstMIKEYMessage *msg, guint idx,
+                                                                 GstMIKEYPayload *payload);
+gboolean                    gst_mikey_message_add_payload       (GstMIKEYMessage *msg,
+                                                                 GstMIKEYPayload *payload);
+gboolean                    gst_mikey_message_replace_payload   (GstMIKEYMessage *msg, guint idx,
+                                                                 GstMIKEYPayload *payload);
+
+
+/* Key data transport payload (KEMAC) */
+/* Envelope data payload (PKE) */
+gboolean                    gst_mikey_message_add_pke           (GstMIKEYMessage *msg,
+                                                                 GstMIKEYCacheType C,
+                                                                 guint16 data_len, const guint8 *data);
+/* DH data payload (DH) */
+/* Signature payload (SIGN) */
+
+/* Timestamp payload (T) */
+gboolean                    gst_mikey_message_add_t             (GstMIKEYMessage *msg,
+                                                                 GstMIKEYTSType type, const guint8 *ts_value);
+gboolean                    gst_mikey_message_add_t_now_ntp_utc (GstMIKEYMessage *msg);
+/* ID payload (ID) */
+/* Certificate Payload (CERT) */
+/* Cert hash payload (CHASH)*/
+/* Ver msg payload (V) */
+/* Security Policy payload (SP)*/
+/* RAND payload (RAND) */
+gboolean                    gst_mikey_message_add_rand          (GstMIKEYMessage *msg,
+                                                                 guint8 len, const guint8 *rand);
+gboolean                    gst_mikey_message_add_rand_len      (GstMIKEYMessage *msg, guint8 len);
+
+/* Error payload (ERR) */
+/* Key data sub-payload */
+/* General Extension Payload */
+
+
+G_END_DECLS
+
+#endif /* __GST_MIKEY_H__ */
+
diff --git a/gst-libs/gst/sdp/gstsdpmessage.c b/gst-libs/gst/sdp/gstsdpmessage.c
index 7fed5c0..d2e02f0 100644
--- a/gst-libs/gst/sdp/gstsdpmessage.c
+++ b/gst-libs/gst/sdp/gstsdpmessage.c
@@ -50,8 +50,6 @@
  * messages.
  * </para>
  * </refsect2>
- *
- * Last reviewed on 2007-07-24 (0.10.14)
  */
 
 #ifdef HAVE_CONFIG_H
@@ -695,7 +693,7 @@
  *
  * Creates a uri from @msg with the given @scheme. The uri has the format:
  *
- *  @scheme:///[#type=value *[&type=value]]
+ *  \@scheme:///[#type=value *[&type=value]]
  *
  *  Where each value is url encoded.
  *
@@ -1190,7 +1188,7 @@
  * @t: a #GstSDPTime
  * @start: the start time
  * @stop: the stop time
- * @repeat: (array): the repeat times
+ * @repeat: (array zero-terminated=1): the repeat times
  *
  * Set time information @start, @stop and @repeat in @t.
  *
@@ -1311,7 +1309,7 @@
  * @msg: a #GstSDPMessage
  * @start: the start time
  * @stop: the stop time
- * @repeat: (array): the repeat times
+ * @repeat: (array zero-terminated=1): the repeat times
  *
  * Add time information @start and @stop to @msg.
  *
@@ -1386,7 +1384,7 @@
  *
  * Returns: a #GstSDPZone.
  */
-DEFINE_ARRAY_GETTER (zone, zones, const GstSDPZone);
+DEFINE_ARRAY_GETTER (zone, zones, GstSDPZone);
 
 #define DUP_ZONE(v, val) memcpy (v, val, sizeof (GstSDPZone))
 #define FREE_ZONE(v) gst_sdp_zone_clear(v)
@@ -1549,7 +1547,7 @@
  *
  * Returns: the #GstSDPAttribute at position @idx.
  */
-DEFINE_ARRAY_GETTER (attribute, attributes, const GstSDPAttribute);
+DEFINE_ARRAY_GETTER (attribute, attributes, GstSDPAttribute);
 
 /**
  * gst_sdp_message_get_attribute_val_n:
@@ -1684,7 +1682,7 @@
  *
  * Returns: a #GstSDPMedia.
  */
-DEFINE_ARRAY_GETTER (media, medias, const GstSDPMedia);
+DEFINE_ARRAY_GETTER (media, medias, GstSDPMedia);
 
 /**
  * gst_sdp_message_add_media:
@@ -1717,7 +1715,7 @@
 
 /**
  * gst_sdp_media_new:
- * @media: (out): pointer to new #GstSDPMedia
+ * @media: (out) (transfer full): pointer to new #GstSDPMedia
  *
  * Allocate a new GstSDPMedia and store the result in @media.
  *
@@ -2796,8 +2794,10 @@
   gchar str[8192];
   gchar *p = buffer;
 
-#define READ_STRING(field) read_string (str, sizeof (str), &p); REPLACE_STRING (field, str)
-#define READ_UINT(field) read_string (str, sizeof (str), &p); field = strtoul (str, NULL, 10)
+#define READ_STRING(field) \
+  do { read_string (str, sizeof (str), &p); REPLACE_STRING (field, str); } while (0)
+#define READ_UINT(field) \
+  do { read_string (str, sizeof (str), &p); field = strtoul (str, NULL, 10); } while (0)
 
   switch (type) {
     case 'v':
@@ -2877,6 +2877,13 @@
     case 't':
       break;
     case 'k':
+      read_string_del (str, sizeof (str), ':', &p);
+      if (*p != '\0')
+        p++;
+      if (c->state == SDP_SESSION)
+        gst_sdp_message_set_key (c->msg, str, p);
+      else
+        gst_sdp_media_set_key (c->media, str, p);
       break;
     case 'a':
       read_string_del (str, sizeof (str), ':', &p);
@@ -2927,7 +2934,7 @@
 
 /**
  * gst_sdp_message_parse_buffer:
- * @data: the start of the buffer
+ * @data: (array length=size): the start of the buffer
  * @size: the size of the buffer
  * @msg: the result #GstSDPMessage
  *
diff --git a/gst-libs/gst/tag/Makefile.in b/gst-libs/gst/tag/Makefile.in
index a8bfd00..7ec7503 100644
--- a/gst-libs/gst/tag/Makefile.in
+++ b/gst-libs/gst/tag/Makefile.in
@@ -91,7 +91,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -461,9 +460,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/gst-libs/gst/tag/gstexiftag.c b/gst-libs/gst/tag/gstexiftag.c
index 0d4a478..8200a9f 100644
--- a/gst-libs/gst/tag/gstexiftag.c
+++ b/gst-libs/gst/tag/gstexiftag.c
@@ -920,9 +920,12 @@
       if (G_VALUE_TYPE (value) == GST_TYPE_SAMPLE) {
         sample = gst_value_get_sample (value);
         buf = gst_sample_get_buffer (sample);
-        gst_buffer_map (buf, &info, GST_MAP_READ);
-        data = info.data;
-        size = info.size;
+        if (gst_buffer_map (buf, &info, GST_MAP_READ)) {
+          data = info.data;
+          size = info.size;
+        } else {
+          GST_WARNING ("Failed to map buffer for reading");
+        }
       } else {
         GST_WARNING ("Conversion from %s to raw data not supported",
             G_VALUE_TYPE_NAME (value));
@@ -1230,7 +1233,10 @@
 
     real_offset = offset - reader->base_offset;
 
-    gst_buffer_map (reader->buffer, &info, GST_MAP_READ);
+    if (!gst_buffer_map (reader->buffer, &info, GST_MAP_READ)) {
+      GST_WARNING ("Failed to map buffer for reading");
+      return;
+    }
     if (real_offset >= info.size) {
       GST_WARNING ("Invalid offset %u for buffer of size %" G_GSIZE_FORMAT
           ", not adding tag %s", real_offset, info.size, tag->gst_tag);
@@ -1279,8 +1285,9 @@
       GST_WARNING ("Failed to parse %s into a datetime tag", utfstr);
     }
   } else if (tagtype == G_TYPE_STRING) {
-    gst_tag_list_add (reader->taglist, GST_TAG_MERGE_REPLACE, tag->gst_tag,
-        utfstr, NULL);
+    if (utfstr[0] != '\0')
+      gst_tag_list_add (reader->taglist, GST_TAG_MERGE_REPLACE, tag->gst_tag,
+          utfstr, NULL);
   } else {
     GST_WARNING ("No parsing function associated to %x(%s)", tag->exif_tag,
         tag->gst_tag);
@@ -1329,7 +1336,10 @@
 
     real_offset = offset - reader->base_offset;
 
-    gst_buffer_map (reader->buffer, &info, GST_MAP_READ);
+    if (!gst_buffer_map (reader->buffer, &info, GST_MAP_READ)) {
+      GST_WARNING ("Failed to map buffer for reading");
+      return;
+    }
 
     if (real_offset >= info.size) {
       GST_WARNING ("Invalid offset %u for buffer of size %" G_GSIZE_FORMAT
@@ -1364,8 +1374,9 @@
     gst_sample_unref (sample);
     gst_buffer_unref (buf);
   } else if (tagtype == G_TYPE_STRING) {
-    gst_tag_list_add (reader->taglist, GST_TAG_MERGE_REPLACE, tag->gst_tag,
-        data, NULL);
+    if (data[0] != '\0')
+      gst_tag_list_add (reader->taglist, GST_TAG_MERGE_REPLACE, tag->gst_tag,
+          data, NULL);
   } else {
     GST_WARNING ("No parsing function associated to %x(%s)", tag->exif_tag,
         tag->gst_tag);
@@ -1395,7 +1406,10 @@
 
   real_offset = offset - exif_reader->base_offset;
 
-  gst_buffer_map (exif_reader->buffer, &info, GST_MAP_READ);
+  if (!gst_buffer_map (exif_reader->buffer, &info, GST_MAP_READ)) {
+    GST_WARNING ("Failed to map buffer for reading");
+    return FALSE;
+  }
 
   if (real_offset >= info.size) {
     GST_WARNING ("Invalid offset %u for buffer of size %" G_GSIZE_FORMAT,
@@ -1551,10 +1565,15 @@
             EXIF_TYPE_LONG, 1,
             gst_byte_writer_get_size (&writer.datawriter), NULL);
 
-        gst_buffer_map (inner_ifd, &info, GST_MAP_READ);
-        handled &=
-            gst_byte_writer_put_data (&writer.datawriter, info.data, info.size);
-        gst_buffer_unmap (inner_ifd, &info);
+        if (gst_buffer_map (inner_ifd, &info, GST_MAP_READ)) {
+          handled &=
+              gst_byte_writer_put_data (&writer.datawriter, info.data,
+              info.size);
+          gst_buffer_unmap (inner_ifd, &info);
+        } else {
+          GST_WARNING ("Failed to map buffer for reading");
+          handled = FALSE;
+        }
         gst_buffer_unref (inner_ifd);
       }
       continue;
@@ -1637,7 +1656,10 @@
   g_return_val_if_fail (exif_reader->byte_order == G_LITTLE_ENDIAN
       || exif_reader->byte_order == G_BIG_ENDIAN, FALSE);
 
-  gst_buffer_map (exif_reader->buffer, &info, GST_MAP_READ);
+  if (!gst_buffer_map (exif_reader->buffer, &info, GST_MAP_READ)) {
+    GST_WARNING ("Failed to map buffer for reading");
+    return FALSE;
+  }
 
   gst_byte_reader_init (&reader, info.data, info.size);
   if (!gst_byte_reader_set_pos (&reader, buf_offset))
@@ -1811,7 +1833,11 @@
     return NULL;
   }
 
-  gst_buffer_map (ifd, &info, GST_MAP_READ);
+  if (!gst_buffer_map (ifd, &info, GST_MAP_READ)) {
+    GST_WARNING ("Failed to map buffer for reading");
+    gst_buffer_unref (ifd);
+    return NULL;
+  }
 
   /* TODO what is the correct endianness here? */
   gst_byte_writer_init_with_size (&writer, info.size + TIFF_HEADER_SIZE, FALSE);
@@ -1904,7 +1930,10 @@
   GstBuffer *subbuffer;
   GstMapInfo info, sinfo;
 
-  gst_buffer_map (buffer, &info, GST_MAP_READ);
+  if (!gst_buffer_map (buffer, &info, GST_MAP_READ)) {
+    GST_WARNING ("Failed to map buffer for reading");
+    return NULL;
+  }
 
   GST_LOG ("Parsing exif tags with tiff header of size %" G_GSIZE_FORMAT,
       info.size);
@@ -1932,7 +1961,9 @@
 
   subbuffer = gst_buffer_new_and_alloc (info.size - (TIFF_HEADER_SIZE - 2));
 
-  gst_buffer_map (subbuffer, &sinfo, GST_MAP_WRITE);
+  if (!gst_buffer_map (subbuffer, &sinfo, GST_MAP_WRITE))
+    goto map_failed;
+
   memcpy (sinfo.data, info.data + TIFF_HEADER_SIZE,
       info.size - TIFF_HEADER_SIZE);
   gst_buffer_unmap (subbuffer, &sinfo);
@@ -1947,6 +1978,12 @@
 
   return taglist;
 
+map_failed:
+  {
+    GST_WARNING ("Failed to map buffer for writing");
+    gst_buffer_unref (subbuffer);
+    goto done;
+  }
 byte_reader_fail:
   {
     GST_WARNING ("Failed to read values from buffer");
@@ -2117,7 +2154,10 @@
     return ret;
   }
 
-  gst_buffer_map (exif_reader->buffer, &info, GST_MAP_READ);
+  if (!gst_buffer_map (exif_reader->buffer, &info, GST_MAP_READ)) {
+    GST_WARNING ("Failed to map buffer for reading");
+    return ret;
+  }
 
   /* now parse the fractions */
   gst_byte_reader_init (&fractions_reader, info.data, info.size);
diff --git a/gst-libs/gst/tag/gsttagdemux.c b/gst-libs/gst/tag/gsttagdemux.c
index dc17aec..c36a75d 100644
--- a/gst-libs/gst/tag/gsttagdemux.c
+++ b/gst-libs/gst/tag/gsttagdemux.c
@@ -75,6 +75,7 @@
 #include "gsttagdemux.h"
 
 #include <gst/base/gsttypefindhelper.h>
+#include <gst/base/gstadapter.h>
 #include <gst/gst-i18n-plugin.h>
 #include <string.h>
 
@@ -101,8 +102,10 @@
   gint64 upstream_size;
 
   GstTagDemuxState state;
+  GstAdapter *adapter;
   GstBuffer *collect;
   gsize collect_size;
+  guint tagsize;
   GstCaps *src_caps;
 
   GstTagList *event_tags;
@@ -266,6 +269,8 @@
 
   gst_buffer_replace (buffer_p, NULL);
   tagdemux->priv->collect_size = 0;
+  tagdemux->priv->tagsize = 0;
+  gst_adapter_clear (tagdemux->priv->adapter);
   gst_caps_replace (caps_p, NULL);
 
   if (tagdemux->priv->event_tags) {
@@ -328,6 +333,7 @@
   gst_pad_use_fixed_caps (demux->priv->srcpad);
   gst_element_add_pad (GST_ELEMENT (demux), demux->priv->srcpad);
 
+  demux->priv->adapter = gst_adapter_new ();
   gst_tag_demux_reset (demux);
 }
 
@@ -337,6 +343,10 @@
   GstTagDemux *tagdemux = GST_TAG_DEMUX (object);
 
   gst_tag_demux_reset (tagdemux);
+  if (tagdemux->priv->adapter) {
+    g_object_unref (tagdemux->priv->adapter);
+    tagdemux->priv->adapter = NULL;
+  }
 
   G_OBJECT_CLASS (parent_class)->dispose (object);
 }
@@ -487,17 +497,58 @@
 }
 
 static void
-gst_tag_demux_chain_parse_tag (GstTagDemux * demux, GstBuffer * collect)
+update_collected (GstTagDemux * demux)
 {
+  guint avail;
+  GstBuffer *buf;
+
+  avail = gst_adapter_available (demux->priv->adapter);
+  if (avail == 0)
+    return;
+
+  buf = gst_adapter_take_buffer (demux->priv->adapter, avail);
+
+  if (demux->priv->collect == NULL) {
+    demux->priv->collect = buf;
+  } else {
+    demux->priv->collect = gst_buffer_append (demux->priv->collect, buf);
+  }
+  demux->priv->collect_size += avail;
+}
+
+static void
+gst_tag_demux_chain_parse_tag (GstTagDemux * demux)
+{
+  GstBuffer *collect;
   GstTagDemuxResult parse_ret;
   GstTagDemuxClass *klass;
   guint tagsize = 0;
   guint available;
 
-  g_assert (gst_buffer_is_writable (collect));
+  available =
+      demux->priv->collect_size + gst_adapter_available (demux->priv->adapter);
 
   klass = GST_TAG_DEMUX_CLASS (G_OBJECT_GET_CLASS (demux));
 
+  if (available < klass->min_start_size) {
+    GST_DEBUG_OBJECT (demux, "Only %u bytes available, but %u needed "
+        "to identify tag", available, klass->min_start_size);
+    return;                     /* wait for more data */
+  }
+
+  if (available < demux->priv->tagsize) {
+    GST_DEBUG_OBJECT (demux, "Only %u bytes available, but %u needed "
+        "to parse tag", available, demux->priv->tagsize);
+    return;                     /* wait for more data */
+  }
+
+  update_collected (demux);
+  demux->priv->collect = gst_buffer_make_writable (demux->priv->collect);
+  collect = demux->priv->collect;
+
+  g_assert (gst_buffer_is_writable (collect));
+
+
   /* If we receive a buffer that's from the middle of the file, 
    * we can't read tags so move to typefinding */
   if (GST_BUFFER_OFFSET_IS_VALID (collect) && GST_BUFFER_OFFSET (collect) != 0) {
@@ -510,20 +561,14 @@
   g_assert (klass->identify_tag != NULL);
   g_assert (klass->parse_tag != NULL);
 
-  available = gst_buffer_get_size (collect);
-
-  if (available < klass->min_start_size) {
-    GST_DEBUG_OBJECT (demux, "Only %u bytes available, but %u needed "
-        "to identify tag", available, klass->min_start_size);
-    return;                     /* wait for more data */
-  }
-
   if (!klass->identify_tag (demux, collect, TRUE, &tagsize)) {
     GST_DEBUG_OBJECT (demux, "Could not identify start tag");
     demux->priv->state = GST_TAG_DEMUX_TYPEFINDING;
     return;
   }
 
+  demux->priv->tagsize = tagsize;
+
   /* need to set offset of first buffer to 0 or trimming won't work */
   if (!GST_BUFFER_OFFSET_IS_VALID (collect)) {
     GST_WARNING_OBJECT (demux, "Fixing up first buffer without offset");
@@ -599,18 +644,12 @@
       demux->priv->segment.position += GST_BUFFER_DURATION (buf);
   }
 
-  if (demux->priv->collect == NULL) {
-    demux->priv->collect = buf;
-  } else {
-    demux->priv->collect = gst_buffer_append (demux->priv->collect, buf);
-  }
-  demux->priv->collect_size += size;
+  gst_adapter_push (demux->priv->adapter, buf);
   buf = NULL;
 
   switch (demux->priv->state) {
     case GST_TAG_DEMUX_READ_START_TAG:
-      demux->priv->collect = gst_buffer_make_writable (demux->priv->collect);
-      gst_tag_demux_chain_parse_tag (demux, demux->priv->collect);
+      gst_tag_demux_chain_parse_tag (demux);
       if (demux->priv->state != GST_TAG_DEMUX_TYPEFINDING)
         break;
       /* Fall-through */
@@ -620,6 +659,8 @@
       gsize typefind_size;
       GstCaps *caps;
 
+      update_collected (demux);
+
       if (demux->priv->collect_size <
           TYPE_FIND_MIN_SIZE + demux->priv->strip_start)
         break;                  /* Go get more data first */
@@ -672,6 +713,8 @@
       GstBuffer *outbuf = NULL;
       gsize outbuf_size;
 
+      update_collected (demux);
+
       /* Trim the buffer and adjust offset */
       if (demux->priv->collect) {
         outbuf = demux->priv->collect;
diff --git a/gst-libs/gst/video/Makefile.am b/gst-libs/gst/video/Makefile.am
index 292415e..3932947 100644
--- a/gst-libs/gst/video/Makefile.am
+++ b/gst-libs/gst/video/Makefile.am
@@ -3,7 +3,7 @@
 include $(top_srcdir)/common/orc.mak
 
 glib_enum_headers = video.h video-format.h video-color.h video-info.h \
-			colorbalance.h navigation.h video-chroma.h
+			colorbalance.h navigation.h video-chroma.h video-tile.h
 glib_enum_define = GST_VIDEO
 glib_gen_prefix = gst_video
 glib_gen_basename = video
@@ -27,6 +27,7 @@
 	video-color.c         	\
 	video-info.c         	\
 	video-frame.c         	\
+	video-tile.c         	\
 	gstvideosink.c   	\
 	gstvideofilter.c 	\
 	convertframe.c   	\
@@ -54,6 +55,7 @@
 	video-color.h         	\
 	video-info.h         	\
 	video-frame.h         	\
+	video-tile.h         	\
 	gstvideosink.h 		\
 	gstvideofilter.h	\
 	gstvideometa.h		\
diff --git a/gst-libs/gst/video/Makefile.in b/gst-libs/gst/video/Makefile.in
index ada989f..d757852 100644
--- a/gst-libs/gst/video/Makefile.in
+++ b/gst-libs/gst/video/Makefile.in
@@ -122,7 +122,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -205,6 +204,7 @@
 	libgstvideo_@GST_API_VERSION@_la-video-color.lo \
 	libgstvideo_@GST_API_VERSION@_la-video-info.lo \
 	libgstvideo_@GST_API_VERSION@_la-video-frame.lo \
+	libgstvideo_@GST_API_VERSION@_la-video-tile.lo \
 	libgstvideo_@GST_API_VERSION@_la-gstvideosink.lo \
 	libgstvideo_@GST_API_VERSION@_la-gstvideofilter.lo \
 	libgstvideo_@GST_API_VERSION@_la-convertframe.lo \
@@ -475,9 +475,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -582,7 +583,7 @@
 cp_v_gen_ = $(cp_v_gen_$(AM_DEFAULT_VERBOSITY))
 cp_v_gen_0 = @echo "  CP     $@";
 glib_enum_headers = video.h video-format.h video-color.h video-info.h \
-			colorbalance.h navigation.h video-chroma.h
+			colorbalance.h navigation.h video-chroma.h video-tile.h
 
 glib_enum_define = GST_VIDEO
 glib_gen_prefix = gst_video
@@ -602,6 +603,7 @@
 	video-color.c         	\
 	video-info.c         	\
 	video-frame.c         	\
+	video-tile.c         	\
 	gstvideosink.c   	\
 	gstvideofilter.c 	\
 	convertframe.c   	\
@@ -628,6 +630,7 @@
 	video-color.h         	\
 	video-info.h         	\
 	video-frame.h         	\
+	video-tile.h         	\
 	gstvideosink.h 		\
 	gstvideofilter.h	\
 	gstvideometa.h		\
@@ -765,6 +768,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideo_@GST_API_VERSION@_la-video-frame.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideo_@GST_API_VERSION@_la-video-info.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideo_@GST_API_VERSION@_la-video-overlay-composition.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideo_@GST_API_VERSION@_la-video-tile.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideo_@GST_API_VERSION@_la-video.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideo_@GST_API_VERSION@_la-videoorientation.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideo_@GST_API_VERSION@_la-videooverlay.Plo@am__quote@
@@ -863,6 +867,13 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideo_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libgstvideo_@GST_API_VERSION@_la-video-frame.lo `test -f 'video-frame.c' || echo '$(srcdir)/'`video-frame.c
 
+libgstvideo_@GST_API_VERSION@_la-video-tile.lo: video-tile.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideo_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -MT libgstvideo_@GST_API_VERSION@_la-video-tile.lo -MD -MP -MF $(DEPDIR)/libgstvideo_@GST_API_VERSION@_la-video-tile.Tpo -c -o libgstvideo_@GST_API_VERSION@_la-video-tile.lo `test -f 'video-tile.c' || echo '$(srcdir)/'`video-tile.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstvideo_@GST_API_VERSION@_la-video-tile.Tpo $(DEPDIR)/libgstvideo_@GST_API_VERSION@_la-video-tile.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='video-tile.c' object='libgstvideo_@GST_API_VERSION@_la-video-tile.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideo_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libgstvideo_@GST_API_VERSION@_la-video-tile.lo `test -f 'video-tile.c' || echo '$(srcdir)/'`video-tile.c
+
 libgstvideo_@GST_API_VERSION@_la-gstvideosink.lo: gstvideosink.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideo_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -MT libgstvideo_@GST_API_VERSION@_la-gstvideosink.lo -MD -MP -MF $(DEPDIR)/libgstvideo_@GST_API_VERSION@_la-gstvideosink.Tpo -c -o libgstvideo_@GST_API_VERSION@_la-gstvideosink.lo `test -f 'gstvideosink.c' || echo '$(srcdir)/'`gstvideosink.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstvideo_@GST_API_VERSION@_la-gstvideosink.Tpo $(DEPDIR)/libgstvideo_@GST_API_VERSION@_la-gstvideosink.Plo
diff --git a/gst-libs/gst/video/colorbalance.c b/gst-libs/gst/video/colorbalance.c
index ebae5a1..b149a7f 100644
--- a/gst-libs/gst/video/colorbalance.c
+++ b/gst-libs/gst/video/colorbalance.c
@@ -114,12 +114,13 @@
 /**
  * gst_color_balance_list_channels:
  * @balance: A #GstColorBalance instance
- * 
+ *
  * Retrieve a list of the available channels.
  *
- * Returns: A GList containing pointers to #GstColorBalanceChannel objects.
- *          The list is owned by the #GstColorBalance instance and must not
- *          be freed.
+ * Returns: (element-type GstColorBalanceChannel) (transfer none): A
+ *          GList containing pointers to #GstColorBalanceChannel
+ *          objects. The list is owned by the #GstColorBalance
+ *          instance and must not be freed.
  */
 const GList *
 gst_color_balance_list_channels (GstColorBalance * balance)
diff --git a/gst-libs/gst/video/gstvideodecoder.c b/gst-libs/gst/video/gstvideodecoder.c
index dd8abe3..fce2ea7 100644
--- a/gst-libs/gst/video/gstvideodecoder.c
+++ b/gst-libs/gst/video/gstvideodecoder.c
@@ -333,7 +333,10 @@
   /* Error handling */
   gint max_errors;
   gint error_count;
+  gboolean had_output_data;
+  gboolean had_input_data;
 
+  gboolean needs_format;
   gboolean do_caps;
 
   /* ... being tracked here;
@@ -458,6 +461,10 @@
     gboolean at_eos, gboolean new_buffer);
 static gboolean gst_video_decoder_negotiate_unlocked (GstVideoDecoder *
     decoder);
+static gboolean gst_video_decoder_sink_query_default (GstVideoDecoder * decoder,
+    GstQuery * query);
+static gboolean gst_video_decoder_src_query_default (GstVideoDecoder * decoder,
+    GstQuery * query);
 
 /* we can't use G_DEFINE_ABSTRACT_TYPE because we need the klass in the _init
  * method to get to the padtemplates */
@@ -512,6 +519,8 @@
   klass->decide_allocation = gst_video_decoder_decide_allocation_default;
   klass->propose_allocation = gst_video_decoder_propose_allocation_default;
   klass->negotiate = gst_video_decoder_negotiate_default;
+  klass->sink_query = gst_video_decoder_sink_query_default;
+  klass->src_query = gst_video_decoder_src_query_default;
 }
 
 static void
@@ -558,6 +567,7 @@
   decoder->priv->input_adapter = gst_adapter_new ();
   decoder->priv->output_adapter = gst_adapter_new ();
   decoder->priv->packetized = TRUE;
+  decoder->priv->needs_format = FALSE;
 
   gst_video_decoder_reset (decoder, TRUE, TRUE);
 }
@@ -722,9 +732,10 @@
     /* Copy over extra fields from reference state */
     tgt->interlace_mode = ref->interlace_mode;
     tgt->flags = ref->flags;
-    tgt->chroma_site = ref->chroma_site;
     /* only copy values that are not unknown so that we don't override the
      * defaults. subclasses should really fill these in when they know. */
+    if (ref->chroma_site)
+      tgt->chroma_site = ref->chroma_site;
     if (ref->colorimetry.range)
       tgt->colorimetry.range = ref->colorimetry.range;
     if (ref->colorimetry.matrix)
@@ -902,6 +913,9 @@
       break;
   }
 
+  GST_DEBUG_OBJECT (decoder, "pushing event %s",
+      gst_event_type_get_name (GST_EVENT_TYPE (event)));
+
   return gst_pad_push_event (decoder->srcpad, event);
 }
 
@@ -949,16 +963,16 @@
     if (!priv->packetized) {
       ret = gst_video_decoder_parse_available (dec, TRUE, FALSE);
     }
+
+    if (at_eos) {
+      if (decoder_class->finish)
+        ret = decoder_class->finish (dec);
+    }
   } else {
     /* Reverse playback mode */
     ret = gst_video_decoder_flush_parse (dec, TRUE);
   }
 
-  if (at_eos) {
-    if (decoder_class->finish)
-      ret = decoder_class->finish (dec);
-  }
-
   GST_VIDEO_DECODER_STREAM_UNLOCK (dec);
 
   return ret;
@@ -1000,9 +1014,6 @@
     }
     case GST_EVENT_CAPS:
     {
-      GstCaps *caps;
-
-      gst_event_parse_caps (event, &caps);
       ret = TRUE;
       decoder->priv->do_caps = TRUE;
       gst_event_unref (event);
@@ -1015,6 +1026,14 @@
 
       flow_ret = gst_video_decoder_drain_out (decoder, TRUE);
       ret = (flow_ret == GST_FLOW_OK);
+
+      /* Error out even if EOS was ok when we had input, but no output */
+      if (ret && priv->had_input_data && !priv->had_output_data) {
+        GST_ELEMENT_ERROR (decoder, STREAM, DECODE,
+            ("No valid frames decoded before end of stream"),
+            ("no valid frames found"));
+      }
+
       /* Forward EOS immediately. This is required because no
        * buffer or serialized event will come after EOS and
        * nothing could trigger another _finish_frame() call.
@@ -1372,13 +1391,11 @@
 }
 
 static gboolean
-gst_video_decoder_src_query (GstPad * pad, GstObject * parent, GstQuery * query)
+gst_video_decoder_src_query_default (GstVideoDecoder * dec, GstQuery * query)
 {
-  GstVideoDecoder *dec;
+  GstPad *pad = GST_VIDEO_DECODER_SRC_PAD (dec);
   gboolean res = TRUE;
 
-  dec = GST_VIDEO_DECODER (parent);
-
   GST_LOG_OBJECT (dec, "handling query: %" GST_PTR_FORMAT, query);
 
   switch (GST_QUERY_TYPE (query)) {
@@ -1420,7 +1437,7 @@
       GstFormat format;
 
       /* upstream in any case */
-      if ((res = gst_pad_query_default (pad, parent, query)))
+      if ((res = gst_pad_query_default (pad, GST_OBJECT (dec), query)))
         break;
 
       gst_query_parse_duration (query, &format, NULL);
@@ -1486,7 +1503,7 @@
     }
       break;
     default:
-      res = gst_pad_query_default (pad, parent, query);
+      res = gst_pad_query_default (pad, GST_OBJECT (dec), query);
   }
   return res;
 
@@ -1496,14 +1513,32 @@
 }
 
 static gboolean
-gst_video_decoder_sink_query (GstPad * pad, GstObject * parent,
-    GstQuery * query)
+gst_video_decoder_src_query (GstPad * pad, GstObject * parent, GstQuery * query)
 {
   GstVideoDecoder *decoder;
+  GstVideoDecoderClass *decoder_class;
+  gboolean ret = FALSE;
+
+  decoder = GST_VIDEO_DECODER (parent);
+  decoder_class = GST_VIDEO_DECODER_GET_CLASS (decoder);
+
+  GST_DEBUG_OBJECT (decoder, "received query %d, %s", GST_QUERY_TYPE (query),
+      GST_QUERY_TYPE_NAME (query));
+
+  if (decoder_class->src_query)
+    ret = decoder_class->src_query (decoder, query);
+
+  return ret;
+}
+
+static gboolean
+gst_video_decoder_sink_query_default (GstVideoDecoder * decoder,
+    GstQuery * query)
+{
+  GstPad *pad = GST_VIDEO_DECODER_SINK_PAD (decoder);
   GstVideoDecoderPrivate *priv;
   gboolean res = FALSE;
 
-  decoder = GST_VIDEO_DECODER (parent);
   priv = decoder->priv;
 
   GST_LOG_OBJECT (decoder, "handling query: %" GST_PTR_FORMAT, query);
@@ -1531,7 +1566,7 @@
       break;
     }
     default:
-      res = gst_pad_query_default (pad, parent, query);
+      res = gst_pad_query_default (pad, GST_OBJECT (decoder), query);
       break;
   }
 done:
@@ -1540,6 +1575,27 @@
 error:
   GST_DEBUG_OBJECT (decoder, "query failed");
   goto done;
+
+}
+
+static gboolean
+gst_video_decoder_sink_query (GstPad * pad, GstObject * parent,
+    GstQuery * query)
+{
+  GstVideoDecoder *decoder;
+  GstVideoDecoderClass *decoder_class;
+  gboolean ret = FALSE;
+
+  decoder = GST_VIDEO_DECODER (parent);
+  decoder_class = GST_VIDEO_DECODER_GET_CLASS (decoder);
+
+  GST_DEBUG_OBJECT (decoder, "received query %d, %s", GST_QUERY_TYPE (query),
+      GST_QUERY_TYPE_NAME (query));
+
+  if (decoder_class->sink_query)
+    ret = decoder_class->sink_query (decoder, query);
+
+  return ret;
 }
 
 typedef struct _Timestamp Timestamp;
@@ -1668,6 +1724,8 @@
 
     priv->error_count = 0;
     priv->max_errors = GST_VIDEO_DECODER_MAX_ERRORS;
+    priv->had_output_data = FALSE;
+    priv->had_input_data = FALSE;
 
     GST_OBJECT_LOCK (decoder);
     priv->earliest_time = GST_CLOCK_TIME_NONE;
@@ -1701,6 +1759,17 @@
 
     priv->decode_frame_number = 0;
     priv->base_picture_number = 0;
+
+    if (priv->pool) {
+      gst_buffer_pool_set_active (priv->pool, FALSE);
+      gst_object_unref (priv->pool);
+      priv->pool = NULL;
+    }
+
+    if (priv->allocator) {
+      gst_object_unref (priv->allocator);
+      priv->allocator = NULL;
+    }
   }
 
   priv->discont = TRUE;
@@ -1778,9 +1847,6 @@
 
   GST_DEBUG_OBJECT (dec, "flushing buffers to decode");
 
-  /* clear buffer and decoder state */
-  gst_video_decoder_flush (dec, FALSE);
-
   walk = priv->decode;
   while (walk) {
     GList *next;
@@ -1819,6 +1885,9 @@
   GstVideoDecoderPrivate *priv = dec->priv;
   GstFlowReturn res = GST_FLOW_OK;
   GList *walk;
+  GstVideoDecoderClass *decoder_class;
+
+  decoder_class = GST_VIDEO_DECODER_GET_CLASS (dec);
 
   GST_DEBUG_OBJECT (dec, "flushing buffers to parsing");
 
@@ -1856,19 +1925,10 @@
     walk = next;
   }
 
-  /* now we can process frames. Start by moving each frame from the parse_gather
-   * to the decode list, reverse the order as we go, and stopping when/if we
-   * copy a keyframe. */
-  GST_DEBUG_OBJECT (dec, "checking parsed frames for a keyframe to decode");
   walk = priv->parse_gather;
   while (walk) {
     GstVideoCodecFrame *frame = (GstVideoCodecFrame *) (walk->data);
-
-    /* remove from the gather list */
-    priv->parse_gather = g_list_remove_link (priv->parse_gather, walk);
-
-    /* move it to the front of the decode queue */
-    priv->decode = g_list_concat (walk, priv->decode);
+    GList *walk2;
 
     /* this is reverse playback, check if we need to apply some segment
      * to the output before decoding, as during decoding the segment.rate
@@ -1880,11 +1940,11 @@
      * pushing a segment before caps event. Negotiation only happens
      * when finish_frame is called.
      */
-    for (walk = frame->events; walk;) {
-      GList *cur = walk;
-      GstEvent *event = walk->data;
+    for (walk2 = frame->events; walk2;) {
+      GList *cur = walk2;
+      GstEvent *event = walk2->data;
 
-      walk = g_list_next (walk);
+      walk2 = g_list_next (walk2);
       if (GST_EVENT_TYPE (event) <= GST_EVENT_SEGMENT) {
 
         if (GST_EVENT_TYPE (event) == GST_EVENT_SEGMENT) {
@@ -1903,6 +1963,23 @@
       }
     }
 
+    walk = walk->next;
+  }
+
+  /* now we can process frames. Start by moving each frame from the parse_gather
+   * to the decode list, reverse the order as we go, and stopping when/if we
+   * copy a keyframe. */
+  GST_DEBUG_OBJECT (dec, "checking parsed frames for a keyframe to decode");
+  walk = priv->parse_gather;
+  while (walk) {
+    GstVideoCodecFrame *frame = (GstVideoCodecFrame *) (walk->data);
+
+    /* remove from the gather list */
+    priv->parse_gather = g_list_remove_link (priv->parse_gather, walk);
+
+    /* move it to the front of the decode queue */
+    priv->decode = g_list_concat (walk, priv->decode);
+
     /* if we copied a keyframe, flush and decode the decode queue */
     if (GST_VIDEO_CODEC_FRAME_IS_SYNC_POINT (frame)) {
       GST_DEBUG_OBJECT (dec, "found keyframe %p with PTS %" GST_TIME_FORMAT
@@ -1917,6 +1994,14 @@
     walk = priv->parse_gather;
   }
 
+  /* We need to tell the subclass to drain now */
+  GST_DEBUG_OBJECT (dec, "Finishing");
+  if (decoder_class->finish)
+    res = decoder_class->finish (dec);
+
+  if (res != GST_FLOW_OK)
+    goto done;
+
   /* now send queued data downstream */
   walk = priv->output_queued;
   while (walk) {
@@ -2004,6 +2089,9 @@
     decoder->priv->do_caps = FALSE;
   }
 
+  if (G_UNLIKELY (!decoder->priv->input_state && decoder->priv->needs_format))
+    goto not_negotiated;
+
   GST_LOG_OBJECT (decoder,
       "chain PTS %" GST_TIME_FORMAT ", DTS %" GST_TIME_FORMAT " duration %"
       GST_TIME_FORMAT " size %" G_GSIZE_FORMAT,
@@ -2033,6 +2121,8 @@
         g_list_prepend (decoder->priv->current_frame_events, event);
   }
 
+  decoder->priv->had_input_data = TRUE;
+
   if (decoder->input_segment.rate > 0.0)
     ret = gst_video_decoder_chain_forward (decoder, buf, FALSE);
   else
@@ -2168,6 +2258,7 @@
   frame->duration = GST_CLOCK_TIME_NONE;
   frame->events = priv->current_frame_events;
   priv->current_frame_events = NULL;
+
   GST_VIDEO_DECODER_STREAM_UNLOCK (decoder);
 
   GST_LOG_OBJECT (decoder, "Created new frame %p (sfn:%d)",
@@ -2595,6 +2686,9 @@
   start = GST_BUFFER_PTS (buf);
   duration = GST_BUFFER_DURATION (buf);
 
+  /* store that we have valid decoded data */
+  priv->had_output_data = TRUE;
+
   stop = GST_CLOCK_TIME_NONE;
 
   if (GST_CLOCK_TIME_IS_VALID (start) && GST_CLOCK_TIME_IS_VALID (duration)) {
@@ -2689,6 +2783,33 @@
   GST_VIDEO_DECODER_STREAM_UNLOCK (decoder);
 }
 
+/**
+ * gst_video_decoder_get_pending_frame_size:
+ * @decoder: a #GstVideoDecoder
+ *
+ * Returns the number of bytes previously added to the current frame
+ * by calling gst_video_decoder_add_to_frame().
+ *
+ * Returns: The number of bytes pending for the current frame
+ *
+ * Since: 1.4
+ */
+gsize
+gst_video_decoder_get_pending_frame_size (GstVideoDecoder * decoder)
+{
+  GstVideoDecoderPrivate *priv = decoder->priv;
+  gsize ret;
+
+  GST_VIDEO_DECODER_STREAM_LOCK (decoder);
+  ret = gst_adapter_available (priv->output_adapter);
+  GST_VIDEO_DECODER_STREAM_UNLOCK (decoder);
+
+  GST_LOG_OBJECT (decoder, "Current pending frame has %" G_GSIZE_FORMAT "bytes",
+      ret);
+
+  return ret;
+}
+
 static guint64
 gst_video_decoder_get_frame_duration (GstVideoDecoder * decoder,
     GstVideoCodecFrame * frame)
@@ -3000,7 +3121,7 @@
 gst_video_decoder_decide_allocation_default (GstVideoDecoder * decoder,
     GstQuery * query)
 {
-  GstCaps *outcaps;
+  GstCaps *outcaps = NULL;
   GstBufferPool *pool = NULL;
   guint size, min, max;
   GstAllocator *allocator = NULL;
@@ -3011,7 +3132,8 @@
 
   gst_query_parse_allocation (query, &outcaps, NULL);
   gst_video_info_init (&vinfo);
-  gst_video_info_from_caps (&vinfo, outcaps);
+  if (outcaps)
+    gst_video_info_from_caps (&vinfo, outcaps);
 
   /* we got configuration from our peer or the decide_allocation method,
    * parse them */
@@ -3075,24 +3197,101 @@
 }
 
 static gboolean
-gst_video_decoder_negotiate_default (GstVideoDecoder * decoder)
+gst_video_decoder_negotiate_pool (GstVideoDecoder * decoder, GstCaps * caps)
 {
-  GstVideoCodecState *state = decoder->priv->output_state;
   GstVideoDecoderClass *klass;
   GstQuery *query = NULL;
   GstBufferPool *pool = NULL;
   GstAllocator *allocator;
   GstAllocationParams params;
   gboolean ret = TRUE;
+
+  klass = GST_VIDEO_DECODER_GET_CLASS (decoder);
+
+  query = gst_query_new_allocation (caps, TRUE);
+
+  if (!gst_pad_peer_query (decoder->srcpad, query)) {
+    GST_DEBUG_OBJECT (decoder, "didn't get downstream ALLOCATION hints");
+  }
+
+  g_assert (klass->decide_allocation != NULL);
+  ret = klass->decide_allocation (decoder, query);
+
+  GST_DEBUG_OBJECT (decoder, "ALLOCATION (%d) params: %" GST_PTR_FORMAT, ret,
+      query);
+
+  if (!ret)
+    goto no_decide_allocation;
+
+  /* we got configuration from our peer or the decide_allocation method,
+   * parse them */
+  if (gst_query_get_n_allocation_params (query) > 0) {
+    gst_query_parse_nth_allocation_param (query, 0, &allocator, &params);
+  } else {
+    allocator = NULL;
+    gst_allocation_params_init (&params);
+  }
+
+  if (gst_query_get_n_allocation_pools (query) > 0)
+    gst_query_parse_nth_allocation_pool (query, 0, &pool, NULL, NULL, NULL);
+  if (!pool) {
+    if (allocator)
+      gst_object_unref (allocator);
+    ret = FALSE;
+    goto no_decide_allocation;
+  }
+
+  if (decoder->priv->allocator)
+    gst_object_unref (decoder->priv->allocator);
+  decoder->priv->allocator = allocator;
+  decoder->priv->params = params;
+
+  if (decoder->priv->pool) {
+    /* do not set the bufferpool to inactive here, it will be done
+     * on its finalize function. As videodecoder do late renegotiation
+     * it might happen that some element downstream is already using this
+     * same bufferpool and deactivating it will make it fail.
+     * Happens when a downstream element changes from passthrough to
+     * non-passthrough and gets this same bufferpool to use */
+    gst_object_unref (decoder->priv->pool);
+  }
+  decoder->priv->pool = pool;
+
+  /* and activate */
+  gst_buffer_pool_set_active (pool, TRUE);
+
+done:
+  if (query)
+    gst_query_unref (query);
+
+  return ret;
+
+  /* Errors */
+no_decide_allocation:
+  {
+    GST_WARNING_OBJECT (decoder, "Subclass failed to decide allocation");
+    goto done;
+  }
+}
+
+static gboolean
+gst_video_decoder_negotiate_default (GstVideoDecoder * decoder)
+{
+  GstVideoCodecState *state = decoder->priv->output_state;
+  gboolean ret = TRUE;
   GstVideoCodecFrame *frame;
   GstCaps *prevcaps;
 
-  g_return_val_if_fail (state, FALSE);
+  if (!state) {
+    GST_DEBUG_OBJECT (decoder,
+        "Trying to negotiate the pool with out setting the o/p format");
+    ret = gst_video_decoder_negotiate_pool (decoder, NULL);
+    goto done;
+  }
+
   g_return_val_if_fail (GST_VIDEO_INFO_WIDTH (&state->info) != 0, FALSE);
   g_return_val_if_fail (GST_VIDEO_INFO_HEIGHT (&state->info) != 0, FALSE);
 
-  klass = GST_VIDEO_DECODER_GET_CLASS (decoder);
-
   GST_DEBUG_OBJECT (decoder, "output_state par %d/%d fps %d/%d",
       state->info.par_n, state->info.par_d,
       state->info.fps_n, state->info.fps_d);
@@ -3140,67 +3339,11 @@
   if (!ret)
     goto done;
   decoder->priv->output_state_changed = FALSE;
-
   /* Negotiate pool */
-  query = gst_query_new_allocation (state->caps, TRUE);
-
-  if (!gst_pad_peer_query (decoder->srcpad, query)) {
-    GST_DEBUG_OBJECT (decoder, "didn't get downstream ALLOCATION hints");
-  }
-
-  g_assert (klass->decide_allocation != NULL);
-  ret = klass->decide_allocation (decoder, query);
-
-  GST_DEBUG_OBJECT (decoder, "ALLOCATION (%d) params: %" GST_PTR_FORMAT, ret,
-      query);
-
-  if (!ret)
-    goto no_decide_allocation;
-
-  /* we got configuration from our peer or the decide_allocation method,
-   * parse them */
-  if (gst_query_get_n_allocation_params (query) > 0) {
-    gst_query_parse_nth_allocation_param (query, 0, &allocator, &params);
-  } else {
-    allocator = NULL;
-    gst_allocation_params_init (&params);
-  }
-
-  if (gst_query_get_n_allocation_pools (query) > 0)
-    gst_query_parse_nth_allocation_pool (query, 0, &pool, NULL, NULL, NULL);
-  if (!pool) {
-    if (allocator)
-      gst_object_unref (allocator);
-    ret = FALSE;
-    goto no_decide_allocation;
-  }
-
-  if (decoder->priv->allocator)
-    gst_object_unref (decoder->priv->allocator);
-  decoder->priv->allocator = allocator;
-  decoder->priv->params = params;
-
-  if (decoder->priv->pool) {
-    gst_buffer_pool_set_active (decoder->priv->pool, FALSE);
-    gst_object_unref (decoder->priv->pool);
-  }
-  decoder->priv->pool = pool;
-
-  /* and activate */
-  gst_buffer_pool_set_active (pool, TRUE);
+  ret = gst_video_decoder_negotiate_pool (decoder, state->caps);
 
 done:
-  if (query)
-    gst_query_unref (query);
-
   return ret;
-
-  /* Errors */
-no_decide_allocation:
-  {
-    GST_WARNING_OBJECT (decoder, "Subclass failed to decide allocation");
-    goto done;
-  }
 }
 
 static gboolean
@@ -3445,7 +3588,8 @@
     GST_WARNING_OBJECT (dec, "error: %s", dbg);
   dec->priv->error_count += weight;
   dec->priv->discont = TRUE;
-  if (dec->priv->max_errors < dec->priv->error_count) {
+  if (dec->priv->max_errors >= 0 &&
+      dec->priv->error_count > dec->priv->max_errors) {
     gst_element_message_full (GST_ELEMENT (dec), GST_MESSAGE_ERROR,
         domain, code, txt, dbg, file, function, line);
     return GST_FLOW_ERROR;
@@ -3462,8 +3606,11 @@
  * @num: max tolerated errors
  *
  * Sets numbers of tolerated decoder errors, where a tolerated one is then only
- * warned about, but more than tolerated will lead to fatal error.  Default
- * is set to GST_VIDEO_DECODER_MAX_ERRORS.
+ * warned about, but more than tolerated will lead to fatal error.  You can set
+ * -1 for never returning fatal errors. Default is set to
+ * GST_VIDEO_DECODER_MAX_ERRORS.
+ *
+ * The '-1' option was added in 1.4
  */
 void
 gst_video_decoder_set_max_errors (GstVideoDecoder * dec, gint num)
@@ -3488,6 +3635,50 @@
 }
 
 /**
+ * gst_video_decoder_set_needs_format:
+ * @dec: a #GstVideoDecoder
+ * @enabled: new state
+ *
+ * Configures decoder format needs.  If enabled, subclass needs to be
+ * negotiated with format caps before it can process any data.  It will then
+ * never be handed any data before it has been configured.
+ * Otherwise, it might be handed data without having been configured and
+ * is then expected being able to do so either by default
+ * or based on the input data.
+ *
+ * Since: 1.4
+ */
+void
+gst_video_decoder_set_needs_format (GstVideoDecoder * dec, gboolean enabled)
+{
+  g_return_if_fail (GST_IS_VIDEO_DECODER (dec));
+
+  dec->priv->needs_format = enabled;
+}
+
+/**
+ * gst_video_decoder_get_needs_format:
+ * @dec: a #GstVideoDecoder
+ *
+ * Queries decoder required format handling.
+ *
+ * Returns: TRUE if required format handling is enabled.
+ *
+ * Since: 1.4
+ */
+gboolean
+gst_video_decoder_get_needs_format (GstVideoDecoder * dec)
+{
+  gboolean result;
+
+  g_return_val_if_fail (GST_IS_VIDEO_DECODER (dec), FALSE);
+
+  result = dec->priv->needs_format;
+
+  return result;
+}
+
+/**
  * gst_video_decoder_set_packetized:
  * @decoder: a #GstVideoDecoder
  * @packetized: whether the input data should be considered as packetized.
diff --git a/gst-libs/gst/video/gstvideodecoder.h b/gst-libs/gst/video/gstvideodecoder.h
index abe2fbb..b41ca30 100644
--- a/gst-libs/gst/video/gstvideodecoder.h
+++ b/gst-libs/gst/video/gstvideodecoder.h
@@ -244,6 +244,16 @@
  * @flush:              Optional.
  *                      Flush all remaining data from the decoder without
  *                      pushing it downstream. Since: 1.2
+ * @sink_query:     Optional.
+ *                  Query handler on the sink pad. This function should
+ *                  return TRUE if the query could be performed. Subclasses
+ *                  should chain up to the parent implementation to invoke the
+ *                  default handler. Since 1.4
+ * @src_query:      Optional.
+ *                  Query handler on the source pad. This function should
+ *                  return TRUE if the query could be performed. Subclasses
+ *                  should chain up to the parent implementation to invoke the
+ *                  default handler. Since 1.4
  *
  * Subclasses can override any of the available virtual methods or not, as
  * needed. At minimum @handle_frame needs to be overridden, and @set_format
@@ -294,8 +304,15 @@
 
   gboolean      (*flush)              (GstVideoDecoder *decoder);
 
+  gboolean      (*sink_query)     (GstVideoDecoder *decoder,
+				   GstQuery *query);
+
+  gboolean      (*src_query)      (GstVideoDecoder *decoder,
+				   GstQuery *query);
+
+
   /*< private >*/
-  void         *padding[GST_PADDING_LARGE-1];
+  void         *padding[GST_PADDING_LARGE-3];
 };
 
 GType    gst_video_decoder_get_type (void);
@@ -316,6 +333,11 @@
 
 gint     gst_video_decoder_get_max_errors (GstVideoDecoder * dec);
 
+void     gst_video_decoder_set_needs_format (GstVideoDecoder * dec,
+                                             gboolean enabled);
+
+gboolean gst_video_decoder_get_needs_format (GstVideoDecoder * dec);
+
 void     gst_video_decoder_set_latency (GstVideoDecoder *decoder,
 					GstClockTime min_latency,
 					GstClockTime max_latency);
@@ -341,6 +363,7 @@
 void           gst_video_decoder_add_to_frame     (GstVideoDecoder *decoder,
 						   int n_bytes);
 GstFlowReturn  gst_video_decoder_have_frame       (GstVideoDecoder *decoder);
+gsize          gst_video_decoder_get_pending_frame_size (GstVideoDecoder *decoder);
 
 GstBuffer     *gst_video_decoder_allocate_output_buffer (GstVideoDecoder * decoder);
 
@@ -369,7 +392,7 @@
 void             gst_video_decoder_release_frame (GstVideoDecoder * dec,
 						  GstVideoCodecFrame * frame);
 
-void             gst_video_decoder_merge_tags (GstVideoDecoder *dec,
+void             gst_video_decoder_merge_tags (GstVideoDecoder *decoder,
                                                const GstTagList *tags,
                                                GstTagMergeMode mode);
 
diff --git a/gst-libs/gst/video/gstvideoencoder.c b/gst-libs/gst/video/gstvideoencoder.c
index 8b72168..09f09eb 100644
--- a/gst-libs/gst/video/gstvideoencoder.c
+++ b/gst-libs/gst/video/gstvideoencoder.c
@@ -235,6 +235,11 @@
 static gboolean gst_video_encoder_negotiate_unlocked (GstVideoEncoder *
     encoder);
 
+static gboolean gst_video_encoder_sink_query_default (GstVideoEncoder * encoder,
+    GstQuery * query);
+static gboolean gst_video_encoder_src_query_default (GstVideoEncoder * encoder,
+    GstQuery * query);
+
 /* we can't use G_DEFINE_ABSTRACT_TYPE because we need the klass in the _init
  * method to get to the padtemplates */
 GType
@@ -296,6 +301,8 @@
   klass->propose_allocation = gst_video_encoder_propose_allocation_default;
   klass->decide_allocation = gst_video_encoder_decide_allocation_default;
   klass->negotiate = gst_video_encoder_negotiate_default;
+  klass->sink_query = gst_video_encoder_sink_query_default;
+  klass->src_query = gst_video_encoder_src_query_default;
 }
 
 static gboolean
@@ -350,6 +357,11 @@
     g_list_free (priv->headers);
     priv->headers = NULL;
     priv->new_headers = FALSE;
+
+    if (priv->allocator) {
+      gst_object_unref (priv->allocator);
+      priv->allocator = NULL;
+    }
   }
 
   GST_VIDEO_ENCODER_STREAM_UNLOCK (encoder);
@@ -812,14 +824,12 @@
 }
 
 static gboolean
-gst_video_encoder_sink_query (GstPad * pad, GstObject * parent,
+gst_video_encoder_sink_query_default (GstVideoEncoder * encoder,
     GstQuery * query)
 {
-  GstVideoEncoder *encoder;
+  GstPad *pad = GST_VIDEO_ENCODER_SINK_PAD (encoder);
   gboolean res = FALSE;
 
-  encoder = GST_VIDEO_ENCODER (parent);
-
   switch (GST_QUERY_TYPE (query)) {
     case GST_QUERY_CAPS:
     {
@@ -841,12 +851,32 @@
       break;
     }
     default:
-      res = gst_pad_query_default (pad, parent, query);
+      res = gst_pad_query_default (pad, GST_OBJECT (encoder), query);
       break;
   }
   return res;
 }
 
+static gboolean
+gst_video_encoder_sink_query (GstPad * pad, GstObject * parent,
+    GstQuery * query)
+{
+  GstVideoEncoder *encoder;
+  GstVideoEncoderClass *encoder_class;
+  gboolean ret = FALSE;
+
+  encoder = GST_VIDEO_ENCODER (parent);
+  encoder_class = GST_VIDEO_ENCODER_GET_CLASS (encoder);
+
+  GST_DEBUG_OBJECT (encoder, "received query %d, %s", GST_QUERY_TYPE (query),
+      GST_QUERY_TYPE_NAME (query));
+
+  if (encoder_class->sink_query)
+    ret = encoder_class->sink_query (encoder, query);
+
+  return ret;
+}
+
 static void
 gst_video_encoder_finalize (GObject * object)
 {
@@ -896,6 +926,16 @@
   return gst_pad_push_event (encoder->srcpad, event);
 }
 
+static inline void
+gst_video_encoder_check_and_push_tags (GstVideoEncoder * encoder)
+{
+  if (encoder->priv->tags && encoder->priv->tags_changed) {
+    gst_video_encoder_push_event (encoder,
+        gst_event_new_tag (gst_tag_list_ref (encoder->priv->tags)));
+    encoder->priv->tags_changed = FALSE;
+  }
+}
+
 static gboolean
 gst_video_encoder_sink_event_default (GstVideoEncoder * encoder,
     GstEvent * event)
@@ -930,6 +970,21 @@
         flow_ret = GST_FLOW_OK;
       }
 
+      if (encoder->priv->current_frame_events) {
+        GList *l;
+
+        for (l = g_list_last (encoder->priv->current_frame_events); l;
+            l = g_list_previous (l)) {
+          GstEvent *event = GST_EVENT (l->data);
+
+          gst_video_encoder_push_event (encoder, event);
+        }
+      }
+      g_list_free (encoder->priv->current_frame_events);
+      encoder->priv->current_frame_events = NULL;
+
+      gst_video_encoder_check_and_push_tags (encoder);
+
       ret = (flow_ret == GST_FLOW_OK);
       GST_VIDEO_ENCODER_STREAM_UNLOCK (encoder);
       break;
@@ -1141,13 +1196,12 @@
 }
 
 static gboolean
-gst_video_encoder_src_query (GstPad * pad, GstObject * parent, GstQuery * query)
+gst_video_encoder_src_query_default (GstVideoEncoder * enc, GstQuery * query)
 {
+  GstPad *pad = GST_VIDEO_ENCODER_SRC_PAD (enc);
   GstVideoEncoderPrivate *priv;
-  GstVideoEncoder *enc;
   gboolean res;
 
-  enc = GST_VIDEO_ENCODER (parent);
   priv = enc->priv;
 
   GST_LOG_OBJECT (enc, "handling query: %" GST_PTR_FORMAT, query);
@@ -1193,7 +1247,7 @@
     }
       break;
     default:
-      res = gst_pad_query_default (pad, parent, query);
+      res = gst_pad_query_default (pad, GST_OBJECT (enc), query);
   }
   return res;
 
@@ -1202,6 +1256,25 @@
   return res;
 }
 
+static gboolean
+gst_video_encoder_src_query (GstPad * pad, GstObject * parent, GstQuery * query)
+{
+  GstVideoEncoder *encoder;
+  GstVideoEncoderClass *encoder_class;
+  gboolean ret = FALSE;
+
+  encoder = GST_VIDEO_ENCODER (parent);
+  encoder_class = GST_VIDEO_ENCODER_GET_CLASS (encoder);
+
+  GST_DEBUG_OBJECT (encoder, "received query %d, %s", GST_QUERY_TYPE (query),
+      GST_QUERY_TYPE_NAME (query));
+
+  if (encoder_class->src_query)
+    ret = encoder_class->src_query (encoder, query);
+
+  return ret;
+}
+
 static GstVideoCodecFrame *
 gst_video_encoder_new_frame (GstVideoEncoder * encoder, GstBuffer * buf,
     GstClockTime pts, GstClockTime dts, GstClockTime duration)
@@ -1262,6 +1335,9 @@
     encoder->priv->do_caps = FALSE;
   }
 
+  if (!encoder->priv->input_state)
+    goto not_negotiated;
+
   GST_VIDEO_ENCODER_STREAM_LOCK (encoder);
 
   pts = GST_BUFFER_PTS (buf);
@@ -1459,16 +1535,13 @@
   GstAllocationParams params;
   gboolean ret = TRUE;
   GstVideoCodecState *state = encoder->priv->output_state;
-  GstVideoInfo *info = NULL;
+  GstVideoInfo *info = &state->info;
   GstQuery *query = NULL;
   GstVideoCodecFrame *frame;
   GstCaps *prevcaps;
 
-  g_return_val_if_fail (state, FALSE);
   g_return_val_if_fail (state->caps != NULL, FALSE);
 
-  info = &state->info;
-
   if (encoder->priv->output_state_changed) {
     state->caps = gst_caps_make_writable (state->caps);
 
@@ -1601,6 +1674,7 @@
   gboolean ret = TRUE;
 
   g_return_val_if_fail (GST_IS_VIDEO_ENCODER (encoder), FALSE);
+  g_return_val_if_fail (encoder->priv->output_state, FALSE);
 
   klass = GST_VIDEO_ENCODER_GET_CLASS (encoder);
 
@@ -1801,11 +1875,7 @@
       break;
   }
 
-  if (priv->tags && priv->tags_changed) {
-    gst_video_encoder_push_event (encoder,
-        gst_event_new_tag (gst_tag_list_ref (priv->tags)));
-    priv->tags_changed = FALSE;
-  }
+  gst_video_encoder_check_and_push_tags (encoder);
 
   /* no buffer data means this frame is skipped/dropped */
   if (!frame->output_buffer) {
diff --git a/gst-libs/gst/video/gstvideoencoder.h b/gst-libs/gst/video/gstvideoencoder.h
index 7d49173..aea119d 100644
--- a/gst-libs/gst/video/gstvideoencoder.h
+++ b/gst-libs/gst/video/gstvideoencoder.h
@@ -214,6 +214,16 @@
  * @flush:              Optional.
  *                      Flush all remaining data from the encoder without
  *                      pushing it downstream. Since: 1.2
+ * @sink_query:     Optional.
+ *                  Query handler on the sink pad. This function should
+ *                  return TRUE if the query could be performed. Subclasses
+ *                  should chain up to the parent implementation to invoke the
+ *                  default handler. Since 1.4
+ * @src_query:      Optional.
+ *                  Query handler on the source pad. This function should
+ *                  return TRUE if the query could be performed. Subclasses
+ *                  should chain up to the parent implementation to invoke the
+ *                  default handler. Since 1.4
  *
  * Subclasses can override any of the available virtual methods or not, as
  * needed. At minimum @handle_frame needs to be overridden, and @set_format
@@ -265,8 +275,14 @@
                                        GstQuery * query);
   gboolean      (*flush)              (GstVideoEncoder *encoder);
 
+  gboolean      (*sink_query)     (GstVideoEncoder *encoder,
+				   GstQuery *query);
+
+  gboolean      (*src_query)      (GstVideoEncoder *encoder,
+				   GstQuery *query);
+
   /*< private >*/
-  gpointer       _gst_reserved[GST_PADDING_LARGE-1];
+  gpointer       _gst_reserved[GST_PADDING_LARGE-3];
 };
 
 GType                gst_video_encoder_get_type (void);
@@ -298,8 +314,6 @@
 GstCaps *            gst_video_encoder_proxy_getcaps (GstVideoEncoder * enc,
 						      GstCaps         * caps,
                                                       GstCaps         * filter);
-void                 gst_video_encoder_set_discont (GstVideoEncoder *encoder);
-gboolean             gst_video_encoder_get_discont (GstVideoEncoder *encoder);
 
 void                 gst_video_encoder_set_latency (GstVideoEncoder *encoder,
 						    GstClockTime min_latency,
diff --git a/gst-libs/gst/video/gstvideometa.h b/gst-libs/gst/video/gstvideometa.h
index b62f1dd..e693659 100644
--- a/gst-libs/gst/video/gstvideometa.h
+++ b/gst-libs/gst/video/gstvideometa.h
@@ -189,6 +189,19 @@
 #define GST_CAPS_FEATURE_META_GST_VIDEO_GL_TEXTURE_UPLOAD_META "meta:GstVideoGLTextureUploadMeta"
 
 /**
+ * GST_BUFFER_POOL_OPTION_VIDEO_GL_TEXTURE_UPLOAD_META:
+ *
+ * An option that can be activated on a bufferpool to request gl texture upload
+ * meta on buffers from the pool.
+ *
+ * When this option is enabled on the bufferpool,
+ * @GST_BUFFER_POOL_OPTION_VIDEO_META should also be enabled.
+ *
+ * Since: 1.2.2
+ */
+#define GST_BUFFER_POOL_OPTION_VIDEO_GL_TEXTURE_UPLOAD_META "GstBufferPoolOptionVideoGLTextureUploadMeta"
+
+/**
  * GstVideoGLTextureUploadMeta:
  * @meta: parent #GstMeta
  * @texture_orientation: Orientation of the textures
diff --git a/gst-libs/gst/video/gstvideopool.c b/gst-libs/gst/video/gstvideopool.c
index 63d2a2c..4475f45 100644
--- a/gst-libs/gst/video/gstvideopool.c
+++ b/gst-libs/gst/video/gstvideopool.c
@@ -21,6 +21,18 @@
 #include "gst/video/gstvideopool.h"
 
 /**
+ * SECTION:gstvideopool
+ * @short_description: GstBufferPool for raw video buffers
+ * @see_also: #GstBufferPool
+ *
+ * Special GstBufferPool subclass for raw video buffers.
+ *
+ * Allows configuration of video-specific requirements such as
+ * stride alignments or pixel padding, and can also be configured
+ * to automatically add #GstVideoMeta to the buffers.
+ */
+
+/**
  * gst_buffer_pool_config_set_video_alignment:
  * @config: a #GstStructure
  * @align: a #GstVideoAlignment
diff --git a/gst-libs/gst/video/gstvideoutils.c b/gst-libs/gst/video/gstvideoutils.c
index b4bf009..b3decaf 100644
--- a/gst-libs/gst/video/gstvideoutils.c
+++ b/gst-libs/gst/video/gstvideoutils.c
@@ -107,6 +107,8 @@
 {
   g_return_val_if_fail (frame != NULL, NULL);
 
+  GST_TRACE ("%p ref %d->%d", frame, frame->ref_count, frame->ref_count + 1);
+
   g_atomic_int_inc (&frame->ref_count);
 
   return frame;
@@ -125,6 +127,8 @@
   g_return_if_fail (frame != NULL);
   g_return_if_fail (frame->ref_count > 0);
 
+  GST_TRACE ("%p unref %d->%d", frame, frame->ref_count, frame->ref_count - 1);
+
   if (g_atomic_int_dec_and_test (&frame->ref_count)) {
     _gst_video_codec_frame_free (frame);
   }
@@ -144,6 +148,8 @@
 {
   g_return_val_if_fail (state != NULL, NULL);
 
+  GST_TRACE ("%p ref %d->%d", state, state->ref_count, state->ref_count + 1);
+
   g_atomic_int_inc (&state->ref_count);
 
   return state;
@@ -152,6 +158,8 @@
 static void
 _gst_video_codec_state_free (GstVideoCodecState * state)
 {
+  GST_DEBUG ("free state %p", state);
+
   if (state->caps)
     gst_caps_unref (state->caps);
   if (state->codec_data)
@@ -172,6 +180,8 @@
   g_return_if_fail (state != NULL);
   g_return_if_fail (state->ref_count > 0);
 
+  GST_TRACE ("%p unref %d->%d", state, state->ref_count, state->ref_count - 1);
+
   if (g_atomic_int_dec_and_test (&state->ref_count)) {
     _gst_video_codec_state_free (state);
   }
diff --git a/gst-libs/gst/video/gstvideoutils.h b/gst-libs/gst/video/gstvideoutils.h
index 29a2c9a..6349b87 100644
--- a/gst-libs/gst/video/gstvideoutils.h
+++ b/gst-libs/gst/video/gstvideoutils.h
@@ -42,8 +42,8 @@
  * GstVideoCodecState:
  * @info: The #GstVideoInfo describing the stream
  * @caps: The #GstCaps
- * @codec_data: (optional) a #GstBuffer corresponding to the
- *     'codec_data' field of a stream.
+ * @codec_data: a #GstBuffer corresponding to the
+ *     'codec_data' field of a stream, or NULL.
  *
  * Structure representing the state of an incoming or outgoing video
  * stream for encoders and decoders.
@@ -207,10 +207,11 @@
  * @input_buffer: the input #GstBuffer that created this frame. The buffer is owned
  *           by the frame and references to the frame instead of the buffer should
  * @output_buffer: the output #GstBuffer. Implementations should set this either
- *           directly, or by using the @gst_video_decoder_alloc_output_frame() or
- *           @gst_video_decoder_alloc_output_buffer() methods. The buffer is owned
- *           by the frame and references to the frame instead of the buffer should
- *           be kept.
+ *           directly, or by using the
+ *           @gst_video_decoder_allocate_output_frame() or
+ *           @gst_video_decoder_allocate_output_buffer() methods. The buffer is
+ *           owned by the frame and references to the frame instead of the
+ *           buffer should be kept.
  * @deadline: Running time when the frame will be used.
  * @events: Events that will be pushed downstream before this frame is pushed.
  *
diff --git a/gst-libs/gst/video/navigation.c b/gst-libs/gst/video/navigation.c
index 90c4ce7..2fc8836 100644
--- a/gst-libs/gst/video/navigation.c
+++ b/gst-libs/gst/video/navigation.c
@@ -311,7 +311,7 @@
 /**
  * gst_navigation_query_parse_commands_length:
  * @query: a #GstQuery
- * @n_cmds: (out) the number of commands in this query.
+ * @n_cmds: (out): the number of commands in this query.
  *
  * Parse the number of commands in the #GstNavigation commands @query.
  *
@@ -342,7 +342,7 @@
  * gst_navigation_query_parse_commands_nth:
  * @query: a #GstQuery
  * @nth: the nth command to retrieve.
- * @cmd: (out) a pointer to store the nth command into.
+ * @cmd: (out): a pointer to store the nth command into.
  *
  * Parse the #GstNavigation command query and retrieve the @nth command from
  * it into @cmd. If the list contains less elements than @nth, @cmd will be
diff --git a/gst-libs/gst/video/video-color.c b/gst-libs/gst/video/video-color.c
index 17272c5..7a576d5 100644
--- a/gst-libs/gst/video/video-color.c
+++ b/gst-libs/gst/video/video-color.c
@@ -132,7 +132,7 @@
 
 /**
  * gst_video_colorimetry_matches:
- * @info: a #GstVideoInfo
+ * @cinfo: a #GstVideoInfo
  * @color: a colorimetry string
  *
  * Check if the colorimetry information in @info matches that of the
@@ -156,7 +156,7 @@
  * gst_video_color_range_offsets:
  * @range: a #GstVideoColorRange
  * @info: a #GstVideoFormatInfo
- * @offsets: (out): output offsets
+ * @offset: (out): output offsets
  * @scale: (out): output scale
  *
  * Compute the offset and scale values for each component of @info. For each
diff --git a/gst-libs/gst/video/video-event.c b/gst-libs/gst/video/video-event.c
index 88d56f3..2776365 100644
--- a/gst-libs/gst/video/video-event.c
+++ b/gst-libs/gst/video/video-event.c
@@ -202,6 +202,8 @@
  * key unit event. See gst_video_event_new_downstream_force_key_unit() for a
  * full description of the downstream force key unit event.
  *
+ * @running_time will be adjusted for any pad offsets of pads it was passing through.
+ *
  * Returns: %TRUE if the event is a valid downstream force key unit event.
  */
 gboolean
@@ -241,8 +243,16 @@
   if (stream_time)
     *stream_time = ev_stream_time;
 
-  if (running_time)
+  if (running_time) {
+    gint64 offset = gst_event_get_running_time_offset (event);
+
     *running_time = ev_running_time;
+    /* Catch underflows */
+    if (*running_time > -offset)
+      *running_time += offset;
+    else
+      *running_time = 0;
+  }
 
   if (all_headers)
     *all_headers = ev_all_headers;
@@ -266,6 +276,8 @@
  *
  * Create an upstream force key unit event using  gst_video_event_new_upstream_force_key_unit()
  *
+ * @running_time will be adjusted for any pad offsets of pads it was passing through.
+ *
  * Returns: %TRUE if the event is a valid upstream force-key-unit event. %FALSE if not
  */
 gboolean
@@ -294,8 +306,17 @@
   if (!gst_structure_get_uint (s, "count", &ev_count))
     ev_count = 0;
 
-  if (running_time)
+
+  if (running_time) {
+    gint64 offset = gst_event_get_running_time_offset (event);
+
     *running_time = ev_running_time;
+    /* Catch underflows */
+    if (*running_time > -offset)
+      *running_time += offset;
+    else
+      *running_time = 0;
+  }
 
   if (all_headers)
     *all_headers = ev_all_headers;
diff --git a/gst-libs/gst/video/video-format.c b/gst-libs/gst/video/video-format.c
index 2b3f4b0..fed5314 100644
--- a/gst-libs/gst/video/video-format.c
+++ b/gst-libs/gst/video/video-format.c
@@ -27,19 +27,6 @@
 #include <stdio.h>
 
 #include "video-format.h"
-
-/**
- * SECTION:gstvideo
- * @short_description: Support library for video operations
- *
- * <refsect2>
- * <para>
- * This library contains some helper functions and includes the
- * videosink and videofilter base classes.
- * </para>
- * </refsect2>
- */
-
 #include "video-orc.h"
 
 /* Line conversion to AYUV */
@@ -2082,6 +2069,140 @@
   }
 }
 
+static void
+get_tile_NV12 (gint tile_width, gint ts, gint tx, gint ty,
+    const gpointer data[GST_VIDEO_MAX_PLANES],
+    const gint stride[GST_VIDEO_MAX_PLANES],
+    gpointer tile_data[GST_VIDEO_MAX_PLANES],
+    gint tile_stride[GST_VIDEO_MAX_PLANES])
+{
+  gsize offset;
+
+  /* index of Y tile */
+  offset = gst_video_tile_get_index (GST_VIDEO_TILE_MODE_ZFLIPZ_2X2,
+      tx, ty, GST_VIDEO_TILE_X_TILES (stride[0]),
+      GST_VIDEO_TILE_Y_TILES (stride[0]));
+  offset <<= ts;
+  tile_data[0] = ((guint8 *) data[0]) + offset;
+
+  /* index of UV tile */
+  offset = gst_video_tile_get_index (GST_VIDEO_TILE_MODE_ZFLIPZ_2X2,
+      tx, ty >> 1, GST_VIDEO_TILE_X_TILES (stride[1]),
+      GST_VIDEO_TILE_Y_TILES (stride[1]));
+  offset <<= ts;
+  /* On odd rows we return the second part of the UV tile */
+  offset |= (ty & 1) << (ts - 1);
+  tile_data[1] = ((guint8 *) data[1]) + offset;
+
+  tile_stride[0] = tile_stride[1] = tile_width;
+}
+
+#define PACK_NV12_64Z32 GST_VIDEO_FORMAT_AYUV, unpack_NV12_64Z32, 1, pack_NV12_64Z32
+static void
+unpack_NV12_64Z32 (const GstVideoFormatInfo * info, GstVideoPackFlags flags,
+    gpointer dest, const gpointer data[GST_VIDEO_MAX_PLANES],
+    const gint stride[GST_VIDEO_MAX_PLANES], gint x, gint y, gint width)
+{
+  const GstVideoFormatInfo *unpack_info, *finfo;
+  guint8 *line = dest;
+  gint ws, hs, ts, tile_width;
+  gint ntx, tx, ty;
+  gint unpack_pstride;
+
+  ws = GST_VIDEO_FORMAT_INFO_TILE_WS (info);
+  hs = GST_VIDEO_FORMAT_INFO_TILE_HS (info);
+  ts = ws + hs;
+
+  tile_width = 1 << ws;
+
+  /* we reuse these unpack functions */
+  finfo = gst_video_format_get_info (GST_VIDEO_FORMAT_NV12);
+
+  /* get pstride of unpacked format */
+  unpack_info = gst_video_format_get_info (info->unpack_format);
+  unpack_pstride = GST_VIDEO_FORMAT_INFO_PSTRIDE (unpack_info, 0);
+
+  /* first x tile to convert */
+  tx = x >> ws;
+  /* Last tile to convert */
+  ntx = ((x + width - 1) >> ws) + 1;
+  /* The row we are going to convert */
+  ty = y >> hs;
+
+  /* y position in a tile */
+  y = y & ((1 << hs) - 1);
+  /* x position in a tile */
+  x = x & (tile_width - 1);
+
+  for (; tx < ntx; tx++) {
+    gpointer tdata[GST_VIDEO_MAX_PLANES];
+    gint tstride[GST_VIDEO_MAX_PLANES];
+    gint unpack_width;
+
+    get_tile_NV12 (tile_width, ts, tx, ty, data, stride, tdata, tstride);
+
+    /* the number of bytes left to unpack */
+    unpack_width = MIN (width - x, tile_width - x);
+
+    finfo->unpack_func (finfo, flags, line, tdata, tstride, x, y, unpack_width);
+
+    x = 0;
+    width -= unpack_width;
+    line += unpack_width * unpack_pstride;
+  }
+}
+
+static void
+pack_NV12_64Z32 (const GstVideoFormatInfo * info, GstVideoPackFlags flags,
+    const gpointer src, gint sstride, gpointer data[GST_VIDEO_MAX_PLANES],
+    const gint stride[GST_VIDEO_MAX_PLANES], GstVideoChromaSite chroma_site,
+    gint y, gint width)
+{
+  const GstVideoFormatInfo *pack_info, *finfo;
+  guint8 *line = src;
+  gint ws, hs, ts, tile_width;
+  gint ntx, tx, ty;
+  gint pack_pstride;
+
+  ws = GST_VIDEO_FORMAT_INFO_TILE_WS (info);
+  hs = GST_VIDEO_FORMAT_INFO_TILE_HS (info);
+  ts = ws + hs;
+
+  tile_width = 1 << ws;
+
+  /* we reuse these pack functions */
+  finfo = gst_video_format_get_info (GST_VIDEO_FORMAT_NV12);
+
+  /* get pstride of packed format */
+  pack_info = gst_video_format_get_info (info->unpack_format);
+  pack_pstride = GST_VIDEO_FORMAT_INFO_PSTRIDE (pack_info, 0);
+
+  /* Last tile to convert */
+  ntx = ((width - 1) >> ws) + 1;
+  /* The row we are going to convert */
+  ty = y >> hs;
+
+  /* y position in a tile */
+  y = y & ((1 << hs) - 1);
+
+  for (tx = 0; tx < ntx; tx++) {
+    gpointer tdata[GST_VIDEO_MAX_PLANES];
+    gint tstride[GST_VIDEO_MAX_PLANES];
+    gint pack_width;
+
+    get_tile_NV12 (tile_width, ts, tx, ty, data, stride, tdata, tstride);
+
+    /* the number of bytes left to pack */
+    pack_width = MIN (width, tile_width);
+
+    finfo->pack_func (finfo, flags, line, sstride, tdata, tstride,
+        chroma_site, y, pack_width);
+
+    width -= pack_width;
+    line += pack_width * pack_pstride;
+  }
+}
+
 typedef struct
 {
   guint32 fourcc;
@@ -2094,6 +2215,7 @@
 #define DPTH8_32         8, 2, { 0, 0, 0, 0 }, { 8, 32, 0, 0 }
 #define DPTH888          8, 3, { 0, 0, 0, 0 }, { 8, 8, 8, 0 }
 #define DPTH8888         8, 4, { 0, 0, 0, 0 }, { 8, 8, 8, 8 }
+#define DPTH8880         8, 4, { 0, 0, 0, 0 }, { 8, 8, 8, 0 }
 #define DPTH10_10_10     10, 3, { 0, 0, 0, 0 }, { 10, 10, 10, 0 }
 #define DPTH16           16, 1, { 0, 0, 0, 0 }, { 16, 0, 0, 0 }
 #define DPTH16_16_16     16, 3, { 0, 0, 0, 0 }, { 16, 16, 16, 0 }
@@ -2157,6 +2279,9 @@
 #define SUB4444           { 0, 0, 0, 0 }, { 0, 0, 0, 0 }
 #define SUB4204           { 0, 1, 1, 0 }, { 0, 1, 1, 0 }
 
+/* tile_mode, tile_width, tile_height */
+#define TILE_64x32(mode) GST_VIDEO_TILE_MODE_ ##mode, 6, 5
+
 #define MAKE_YUV_FORMAT(name, desc, fourcc, depth, pstride, plane, offs, sub, pack ) \
  { fourcc, {GST_VIDEO_FORMAT_ ##name, G_STRINGIFY(name), desc, GST_VIDEO_FORMAT_FLAG_YUV, depth, pstride, plane, offs, sub, pack } }
 #define MAKE_YUV_LE_FORMAT(name, desc, fourcc, depth, pstride, plane, offs, sub, pack ) \
@@ -2169,6 +2294,8 @@
  { fourcc, {GST_VIDEO_FORMAT_ ##name, G_STRINGIFY(name), desc, GST_VIDEO_FORMAT_FLAG_YUV | GST_VIDEO_FORMAT_FLAG_ALPHA | GST_VIDEO_FORMAT_FLAG_UNPACK | GST_VIDEO_FORMAT_FLAG_LE, depth, pstride, plane, offs, sub, pack } }
 #define MAKE_YUV_C_FORMAT(name, desc, fourcc, depth, pstride, plane, offs, sub, pack) \
  { fourcc, {GST_VIDEO_FORMAT_ ##name, G_STRINGIFY(name), desc, GST_VIDEO_FORMAT_FLAG_YUV | GST_VIDEO_FORMAT_FLAG_COMPLEX, depth, pstride, plane, offs, sub, pack } }
+#define MAKE_YUV_T_FORMAT(name, desc, fourcc, depth, pstride, plane, offs, sub, pack, tile) \
+ { fourcc, {GST_VIDEO_FORMAT_ ##name, G_STRINGIFY(name), desc, GST_VIDEO_FORMAT_FLAG_YUV | GST_VIDEO_FORMAT_FLAG_COMPLEX | GST_VIDEO_FORMAT_FLAG_TILED, depth, pstride, plane, offs, sub, pack, tile } }
 
 #define MAKE_RGB_FORMAT(name, desc, depth, pstride, plane, offs, sub, pack) \
  { 0x00000000, {GST_VIDEO_FORMAT_ ##name, G_STRINGIFY(name), desc, GST_VIDEO_FORMAT_FLAG_RGB, depth, pstride, plane, offs, sub, pack } }
@@ -2322,6 +2449,9 @@
       DPTH888, PSTR111, PLANE011, OFFS001, SUB422, PACK_NV16),
   MAKE_YUV_FORMAT (NV24, "raw video", GST_MAKE_FOURCC ('N', 'V', '2', '4'),
       DPTH888, PSTR111, PLANE011, OFFS001, SUB444, PACK_NV24),
+  MAKE_YUV_T_FORMAT (NV12_64Z32, "raw video",
+      GST_MAKE_FOURCC ('T', 'M', '1', '2'), DPTH8880, PSTR122, PLANE011,
+      OFFS001, SUB420, PACK_NV12_64Z32, TILE_64x32 (ZFLIPZ_2X2)),
 };
 
 static GstVideoFormat
@@ -2633,8 +2763,8 @@
  * Get the default palette of @format. This the palette used in the pack
  * function for paletted formats.
  *
- * Returns: the default palette of @format or %NULL when @format does not have a
- * palette.
+ * Returns: (transfer none): the default palette of @format or %NULL when
+ * @format does not have a palette.
  *
  * Since: 1.2
  */
diff --git a/gst-libs/gst/video/video-format.h b/gst-libs/gst/video/video-format.h
index f60c380..e51c70d 100644
--- a/gst-libs/gst/video/video-format.h
+++ b/gst-libs/gst/video/video-format.h
@@ -25,11 +25,15 @@
 G_BEGIN_DECLS
 
 #include <gst/video/video-enumtypes.h>
+#include <gst/video/video-tile.h>
 
 /**
  * GstVideoFormat:
  * @GST_VIDEO_FORMAT_UNKNOWN: Unknown or unset video format id
- * @GST_VIDEO_FORMAT_ENCODED: Encoded video format
+ * @GST_VIDEO_FORMAT_ENCODED: Encoded video format. Only ever use that in caps for
+ *                            special video formats in combination with non-system
+ *                            memory GstCapsFeatures where it does not make sense
+ *                            to specify a real video format.
  * @GST_VIDEO_FORMAT_I420: planar 4:2:0 YUV
  * @GST_VIDEO_FORMAT_YV12: planar 4:2:0 YVU (like I420 but UV planes swapped)
  * @GST_VIDEO_FORMAT_YUY2: packed 4:2:2 YUV (Y0-U0-Y1-V0 Y2-U2-Y3-V2 Y4 ...)
@@ -81,6 +85,7 @@
  * @GST_VIDEO_FORMAT_GBR_10LE: planar 4:4:4 RGB, 10 bits per channel
  * @GST_VIDEO_FORMAT_NV16: planar 4:2:2 YUV with interleaved UV plane
  * @GST_VIDEO_FORMAT_NV24: planar 4:4:4 YUV with interleaved UV plane
+ * @GST_VIDEO_FORMAT_NV12_64Z32: NV12 with 64x32 tiling in zigzag pattern
  *
  * Enum value describing the most common video formats.
  */
@@ -138,6 +143,7 @@
   GST_VIDEO_FORMAT_GBR_10LE,
   GST_VIDEO_FORMAT_NV16,
   GST_VIDEO_FORMAT_NV24,
+  GST_VIDEO_FORMAT_NV12_64Z32,
 } GstVideoFormat;
 
 #define GST_VIDEO_MAX_PLANES 4
@@ -163,6 +169,8 @@
  *   can't be described with the usual information in the #GstVideoFormatInfo.
  * @GST_VIDEO_FORMAT_FLAG_UNPACK: This format can be used in a
  *   #GstVideoFormatUnpack and #GstVideoFormatPack function.
+ * @GST_VIDEO_FORMAT_FLAG_TILED: The format is tiled, there is tiling information
+ *   in the last plane.
  *
  * The different video flags that a format info can have.
  */
@@ -175,7 +183,8 @@
   GST_VIDEO_FORMAT_FLAG_LE       = (1 << 4),
   GST_VIDEO_FORMAT_FLAG_PALETTE  = (1 << 5),
   GST_VIDEO_FORMAT_FLAG_COMPLEX  = (1 << 6),
-  GST_VIDEO_FORMAT_FLAG_UNPACK   = (1 << 7)
+  GST_VIDEO_FORMAT_FLAG_UNPACK   = (1 << 7),
+  GST_VIDEO_FORMAT_FLAG_TILED    = (1 << 8)
 } GstVideoFormatFlags;
 
 /* YUV components */
@@ -265,6 +274,11 @@
  *
  * Subsampled formats will use the horizontally cosited component in the
  * destination. Subsampling should be performed before packing.
+ *
+ * Because tis function does not have a x coordinate, it is not possible to
+ * pack pixels starting from an unaligned position. For tiled images this
+ * means that packing should start from a tile coordinate. For subsampled
+ * formats this means that a complete pixel need to be packed.
  */
 typedef void (*GstVideoFormatPack)           (const GstVideoFormatInfo *info,
                                               GstVideoPackFlags flags,
@@ -306,6 +320,9 @@
  * @unpack_func: an unpack function for this format
  * @pack_lines: the amount of lines that will be packed
  * @pack_func: an pack function for this format
+ * @tile_mode: The tiling mode
+ * @tile_ws The width of a tile, in bytes, represented as a shift
+ * @tile_hs The height of a tile, in bytes, represented as a shift
  *
  * Information for a video format.
  */
@@ -330,6 +347,10 @@
   gint pack_lines;
   GstVideoFormatPack pack_func;
 
+  GstVideoTileMode tile_mode;
+  guint tile_ws;
+  guint tile_hs;
+
   gpointer _gst_reserved[GST_PADDING];
 };
 
@@ -344,6 +365,7 @@
 #define GST_VIDEO_FORMAT_INFO_IS_LE(info)        ((info)->flags & GST_VIDEO_FORMAT_FLAG_LE)
 #define GST_VIDEO_FORMAT_INFO_HAS_PALETTE(info)  ((info)->flags & GST_VIDEO_FORMAT_FLAG_PALETTE)
 #define GST_VIDEO_FORMAT_INFO_IS_COMPLEX(info)   ((info)->flags & GST_VIDEO_FORMAT_FLAG_COMPLEX)
+#define GST_VIDEO_FORMAT_INFO_IS_TILED(info)     ((info)->flags & GST_VIDEO_FORMAT_FLAG_TILED)
 
 #define GST_VIDEO_FORMAT_INFO_BITS(info)         ((info)->bits)
 #define GST_VIDEO_FORMAT_INFO_N_COMPONENTS(info) ((info)->n_components)
@@ -405,6 +427,10 @@
 #define GST_VIDEO_FORMAT_INFO_OFFSET(info,offsets,comp) \
   (((offsets)[(info)->plane[comp]]) + (info)->poffset[comp])
 
+#define GST_VIDEO_FORMAT_INFO_TILE_MODE(info) ((info)->tile_mode)
+#define GST_VIDEO_FORMAT_INFO_TILE_WS(info) ((info)->tile_ws)
+#define GST_VIDEO_FORMAT_INFO_TILE_HS(info) ((info)->tile_hs)
+
 /* format properties */
 GstVideoFormat gst_video_format_from_masks           (gint depth, gint bpp, gint endianness,
                                                       guint red_mask, guint green_mask,
@@ -437,7 +463,7 @@
     "YVYU, Y444, v210, v216, NV12, NV21, NV16, NV24, GRAY8, GRAY16_BE, GRAY16_LE, " \
     "v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, " \
     "IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, " \
-    " Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE }"
+    " Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32 }"
 
 /**
  * GST_VIDEO_CAPS_MAKE:
diff --git a/gst-libs/gst/video/video-frame.c b/gst-libs/gst/video/video-frame.c
index ddfa90d..537cf70 100644
--- a/gst-libs/gst/video/video-frame.c
+++ b/gst-libs/gst/video/video-frame.c
@@ -28,6 +28,7 @@
 
 #include <gst/video/video.h>
 #include "video-frame.h"
+#include "video-tile.h"
 #include "gstvideometa.h"
 
 GST_DEBUG_CATEGORY_EXTERN (GST_CAT_PERFORMANCE);
@@ -129,6 +130,7 @@
 no_metadata:
   {
     GST_ERROR ("no GstVideoMeta for id %d", id);
+    memset (frame, 0, sizeof (GstVideoFrame));
     return FALSE;
   }
 frame_map_failed:
@@ -136,6 +138,7 @@
     GST_ERROR ("failed to map video frame plane %d", i);
     while (--i >= 0)
       gst_video_meta_unmap (meta, i, &frame->map[i]);
+    memset (frame, 0, sizeof (GstVideoFrame));
     return FALSE;
   }
 map_failed:
@@ -148,6 +151,7 @@
     GST_ERROR ("invalid buffer size %" G_GSIZE_FORMAT " < %" G_GSIZE_FORMAT,
         frame->map[0].size, info->size);
     gst_buffer_unmap (buffer, &frame->map[0]);
+    memset (frame, 0, sizeof (GstVideoFrame));
     return FALSE;
   }
 }
@@ -217,8 +221,9 @@
 {
   const GstVideoInfo *sinfo;
   GstVideoInfo *dinfo;
-  guint w, h, j;
+  const GstVideoFormatInfo *finfo;
   guint8 *sp, *dp;
+  guint w, h;
   gint ss, ds;
 
   g_return_val_if_fail (dest != NULL, FALSE);
@@ -228,15 +233,21 @@
   dinfo = &dest->info;
 
   g_return_val_if_fail (dinfo->finfo->format == sinfo->finfo->format, FALSE);
+
+  finfo = dinfo->finfo;
+
   g_return_val_if_fail (dinfo->width == sinfo->width
       && dinfo->height == sinfo->height, FALSE);
-  g_return_val_if_fail (dinfo->finfo->n_planes > plane, FALSE);
+  g_return_val_if_fail (finfo->n_planes > plane, FALSE);
 
   sp = src->data[plane];
   dp = dest->data[plane];
 
-  ss = sinfo->stride[plane];
-  ds = dinfo->stride[plane];
+  if (GST_VIDEO_FORMAT_INFO_HAS_PALETTE (finfo) && plane == 1) {
+    /* copy the palette and we're done */
+    memcpy (dp, sp, 256 * 4);
+    return TRUE;
+  }
 
   /* FIXME. assumes subsampling of component N is the same as plane N, which is
    * currently true for all formats we have but it might not be in the future. */
@@ -244,13 +255,58 @@
       plane) * GST_VIDEO_FRAME_COMP_PSTRIDE (dest, plane);
   h = GST_VIDEO_FRAME_COMP_HEIGHT (dest, plane);
 
-  GST_CAT_DEBUG (GST_CAT_PERFORMANCE, "copy plane %d, w:%d h:%d ", plane, w, h);
+  ss = GST_VIDEO_INFO_PLANE_STRIDE (sinfo, plane);
+  ds = GST_VIDEO_INFO_PLANE_STRIDE (dinfo, plane);
 
-  for (j = 0; j < h; j++) {
-    memcpy (dp, sp, w);
-    dp += ds;
-    sp += ss;
+  if (GST_VIDEO_FORMAT_INFO_IS_TILED (finfo)) {
+    gint tile_size;
+    gint sx_tiles, sy_tiles, dx_tiles, dy_tiles;
+    guint i, j, ws, hs, ts;
+    GstVideoTileMode mode;
+
+    ws = GST_VIDEO_FORMAT_INFO_TILE_WS (finfo);
+    hs = GST_VIDEO_FORMAT_INFO_TILE_HS (finfo);
+    ts = ws + hs;
+
+    tile_size = 1 << ts;
+
+    mode = GST_VIDEO_FORMAT_INFO_TILE_MODE (finfo);
+
+    sx_tiles = GST_VIDEO_TILE_X_TILES (ss);
+    sy_tiles = GST_VIDEO_TILE_Y_TILES (ss);
+
+    dx_tiles = GST_VIDEO_TILE_X_TILES (ds);
+    dy_tiles = GST_VIDEO_TILE_Y_TILES (ds);
+
+    /* this is the amount of tiles to copy */
+    w = ((w - 1) >> ws) + 1;
+    h = ((h - 1) >> hs) + 1;
+
+    /* FIXME can possibly do better when no retiling is needed, it depends on
+     * the stride and the tile_size */
+    for (j = 0; j < h; j++) {
+      for (i = 0; i < w; i++) {
+        guint si, di;
+
+        si = gst_video_tile_get_index (mode, i, j, sx_tiles, sy_tiles);
+        di = gst_video_tile_get_index (mode, i, j, dx_tiles, dy_tiles);
+
+        memcpy (dp + (di << ts), sp + (si << ts), tile_size);
+      }
+    }
+  } else {
+    guint j;
+
+    GST_CAT_DEBUG (GST_CAT_PERFORMANCE, "copy plane %d, w:%d h:%d ", plane, w,
+        h);
+
+    for (j = 0; j < h; j++) {
+      memcpy (dp, sp, w);
+      dp += ds;
+      sp += ss;
+    }
   }
+
   return TRUE;
 }
 
@@ -281,10 +337,6 @@
       && dinfo->height == sinfo->height, FALSE);
 
   n_planes = dinfo->finfo->n_planes;
-  if (GST_VIDEO_FORMAT_INFO_HAS_PALETTE (sinfo->finfo)) {
-    memcpy (dest->data[1], src->data[1], 256 * 4);
-    n_planes = 1;
-  }
 
   for (i = 0; i < n_planes; i++)
     gst_video_frame_copy_plane (dest, src, i);
diff --git a/gst-libs/gst/video/video-info.c b/gst-libs/gst/video/video-info.c
index 6db2f66..907bb69 100644
--- a/gst-libs/gst/video/video-info.c
+++ b/gst-libs/gst/video/video-info.c
@@ -27,6 +27,7 @@
 #include <stdio.h>
 
 #include "video-info.h"
+#include "video-tile.h"
 
 static int fill_planes (GstVideoInfo * info);
 
@@ -79,6 +80,8 @@
  * @height: a height
  *
  * Set the default info for a video frame of @format and @width and @height.
+ *
+ * Note: This initializes @info first, no values are preserved.
  */
 void
 gst_video_info_set_format (GstVideoInfo * info, GstVideoFormat format,
@@ -89,6 +92,8 @@
   g_return_if_fail (info != NULL);
   g_return_if_fail (format != GST_VIDEO_FORMAT_UNKNOWN);
 
+  gst_video_info_init (info);
+
   finfo = gst_video_format_get_info (format);
 
   info->flags = 0;
@@ -569,6 +574,18 @@
       info->offset[2] = info->offset[1] * 2;
       info->size = info->stride[0] * height * 3;
       break;
+    case GST_VIDEO_FORMAT_NV12_64Z32:
+      info->stride[0] =
+          GST_VIDEO_TILE_MAKE_STRIDE (GST_ROUND_UP_128 (width) / 64,
+          GST_ROUND_UP_32 (height) / 32);
+      info->stride[1] =
+          GST_VIDEO_TILE_MAKE_STRIDE (GST_ROUND_UP_128 (width) / 64,
+          GST_ROUND_UP_64 (height) / 64);
+      info->offset[0] = 0;
+      info->offset[1] = GST_ROUND_UP_128 (width) * GST_ROUND_UP_32 (height);
+      info->size = info->offset[1] +
+          GST_ROUND_UP_128 (width) * GST_ROUND_UP_64 (height) / 2;
+      break;
     case GST_VIDEO_FORMAT_ENCODED:
       break;
     case GST_VIDEO_FORMAT_UNKNOWN:
@@ -765,8 +782,9 @@
   do {
     GST_LOG ("padded dimension %u-%u", padded_width, padded_height);
 
-    gst_video_info_set_format (info, GST_VIDEO_INFO_FORMAT (info),
-        padded_width, padded_height);
+    info->width = padded_width;
+    info->height = padded_height;
+    fill_planes (info);
 
     /* check alignment */
     aligned = TRUE;
diff --git a/gst-libs/gst/video/video-orc-dist.c b/gst-libs/gst/video/video-orc-dist.c
index 8983322..fad5d6a 100644
--- a/gst-libs/gst/video/video-orc-dist.c
+++ b/gst-libs/gst/video/video-orc-dist.c
@@ -193,8 +193,8 @@
 #define ORC_CLAMP_UW(x) ORC_CLAMP(x,ORC_UW_MIN,ORC_UW_MAX)
 #define ORC_CLAMP_SL(x) ORC_CLAMP(x,ORC_SL_MIN,ORC_SL_MAX)
 #define ORC_CLAMP_UL(x) ORC_CLAMP(x,ORC_UL_MIN,ORC_UL_MAX)
-#define ORC_SWAP_W(x) ((((x)&0xff)<<8) | (((x)&0xff00)>>8))
-#define ORC_SWAP_L(x) ((((x)&0xff)<<24) | (((x)&0xff00)<<8) | (((x)&0xff0000)>>8) | (((x)&0xff000000)>>24))
+#define ORC_SWAP_W(x) ((((x)&0xffU)<<8) | (((x)&0xff00U)>>8))
+#define ORC_SWAP_L(x) ((((x)&0xffU)<<24) | (((x)&0xff00U)<<8) | (((x)&0xff0000U)>>8) | (((x)&0xff000000U)>>24))
 #define ORC_SWAP_Q(x) ((((x)&ORC_UINT64_C(0xff))<<56) | (((x)&ORC_UINT64_C(0xff00))<<40) | (((x)&ORC_UINT64_C(0xff0000))<<24) | (((x)&ORC_UINT64_C(0xff000000))<<8) | (((x)&ORC_UINT64_C(0xff00000000))>>8) | (((x)&ORC_UINT64_C(0xff0000000000))>>24) | (((x)&ORC_UINT64_C(0xff000000000000))>>40) | (((x)&ORC_UINT64_C(0xff00000000000000))>>56))
 #define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset)))
 #define ORC_DENORMAL(x) ((x) & ((((x)&0x7f800000) == 0) ? 0xff800000 : 0xffffffff))
diff --git a/gst-libs/gst/video/video-overlay-composition.c b/gst-libs/gst/video/video-overlay-composition.c
index 6f22877..2f8815c 100644
--- a/gst-libs/gst/video/video-overlay-composition.c
+++ b/gst-libs/gst/video/video-overlay-composition.c
@@ -961,10 +961,14 @@
   GstVideoFrame frame;
   gint i, j, w, h, stride;
   gint argb_a, argb_r, argb_g, argb_b;
+  gint alpha_offset;
 
   g_assert (!(rect->applied_global_alpha != 1.0
           && rect->initial_alpha == NULL));
 
+  alpha_offset = GST_VIDEO_INFO_COMP_POFFSET (&rect->info, 3);
+  g_return_if_fail (alpha_offset == 0 || alpha_offset == 3);
+
   if (global_alpha == rect->applied_global_alpha)
     return;
 
diff --git a/gst-libs/gst/video/video-overlay-composition.h b/gst-libs/gst/video/video-overlay-composition.h
index 6dfa556..ac787ea 100644
--- a/gst-libs/gst/video/video-overlay-composition.h
+++ b/gst-libs/gst/video/video-overlay-composition.h
@@ -101,6 +101,8 @@
   GST_VIDEO_OVERLAY_FORMAT_FLAG_GLOBAL_ALPHA = 2
 } GstVideoOverlayFormatFlags;
 
+#define GST_CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION "meta:GstVideoOverlayComposition"
+
 /**
   * GST_VIDEO_OVERLAY_COMPOSITION_FORMAT_RGB:
   *
diff --git a/gst-libs/gst/video/video-tile.c b/gst-libs/gst/video/video-tile.c
new file mode 100644
index 0000000..10954a5
--- /dev/null
+++ b/gst-libs/gst/video/video-tile.c
@@ -0,0 +1,102 @@
+/* GStreamer
+ * Copyright (C) <2013> Wim Taymans <wim.taymans@gmail.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include <gst/video/video-tile.h>
+
+/**
+ * gst_video_tile_get_index:
+ * @mode: a #GstVideoTileMode
+ * @x: x coordinate
+ * @y: y coordinate
+ * @x_tiles: number of horizintal tiles
+ * @y_tiles: number of vertical tiles
+ *
+ * Get the tile index of the tile at coordinates @x and @y in the tiled
+ * image of @x_tiles by @y_tiles.
+ *
+ * Use this method when @mode is of type #GST_VIDEO_TILE_MODE_INDEXED.
+ *
+ * Returns: the index of the tile at @x and @y in the tiled image of
+ *   @x_tiles by @y_tiles.
+ */
+guint
+gst_video_tile_get_index (GstVideoTileMode mode, gint x, gint y,
+    gint x_tiles, gint y_tiles)
+{
+  gsize offset;
+
+  g_return_val_if_fail (GST_VIDEO_TILE_MODE_IS_INDEXED (mode), 0);
+
+  switch (mode) {
+    case GST_VIDEO_TILE_MODE_ZFLIPZ_2X2:
+      /* Due to the zigzag pattern we know that tiles are numbered like:
+       * (see http://linuxtv.org/downloads/v4l-dvb-apis/re31.html)
+       *
+       *         |             Column (x)
+       *         |   0    1    2    3    4    5    6    7
+       *  -------|---------------------------------------
+       *       0 |   0    1    6    7    8    9   14   15
+       *    R  1 |   2    3    4    5   10   11   12   13
+       *    o  2 |  16   17   22   23   24   25   30   31
+       *    w  3 |  18   19   20   21   26   27   28   29
+       *       4 |  32   33   38   39   40   41   46   47
+       *   (y) 5 |  34   35   36   37   42   43   44   45
+       *       6 |  48   49   50   51   52   53   54   55
+       *
+       * From this we can see that:
+       *
+       * For even rows:
+       * - The first block in a row is always mapped to memory block 'y * width'.
+       * - For all even rows, except for the last one when 'y' is odd, from the first
+       *   block number an offset is then added to obtain the block number for
+       *   the other blocks in the row. The offset is 'x' plus the corresponding
+       *   number in the series [0, 0, 4, 4, 4, 4, 8, 8, 8, 8, 12, ...], which can be
+       *   expressed as 'GST_ROUND_DOWN_4 (x + 2)'.
+       *       f(x,y,width,height) = y * width + x + GST_ROUND_DOWN_4 (x + 2)
+       *
+       * - For the last row when 'y' is odd the offset is simply 'x'.
+       *       f(x,y,width,height) = y * width + x
+       * - Note that 'y' is even, so 'GST_ROUNDOWN_2 (y) == y' in this case
+       *
+       *  For odd rows:
+       * - The first block in the row is always mapped to memory block
+       *   'GST_ROUND_DOWN_2(y) * width + 2'.
+       * - From the first block number an offset is then added to obtain the block
+       *   number for the other blocks in the row. The offset is 'x' plus the
+       *   corresponding number in the series [0, 0, 0, 0, 4, 4, 4, 4, 8, 8, 8, 8, 12, ...],
+       *   which can be  expressed as GST_ROUND_DOWN_4 (x).
+       *       f(x,y,width,height) = GST_ROUND_DOWN_2 (y) * width + bx 2 + GST_ROUND_DOWN_4 (x)
+       */
+      /* Common to all cases */
+      offset = GST_ROUND_DOWN_2 (y) * x_tiles + x;
+
+      if (y & 1) {
+        /* For odd row */
+        offset += 2 + GST_ROUND_DOWN_4 (x);
+      } else if ((y_tiles & 1) == 0 || y != (y_tiles - 1)) {
+        /* For even row except for the last row when odd height */
+        offset += GST_ROUND_DOWN_4 (x + 2);
+      }
+      break;
+    default:
+      offset = 0;
+      break;
+  }
+  return offset;
+}
diff --git a/gst-libs/gst/video/video-tile.h b/gst-libs/gst/video/video-tile.h
new file mode 100644
index 0000000..4924427
--- /dev/null
+++ b/gst-libs/gst/video/video-tile.h
@@ -0,0 +1,121 @@
+/* GStreamer
+ * Copyright (C) <2013> Wim Taymans <wim.taymans@gmail.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __GST_VIDEO_TILE_H__
+#define __GST_VIDEO_TILE_H__
+
+#include <gst/gst.h>
+
+G_BEGIN_DECLS
+
+/**
+ * GstVideoTileType:
+ * @GST_VIDEO_TILE_TYPE_INDEXED: Tiles are indexed. Use
+ *   gst_video_tile_get_index () to retrieve the tile at the requested
+ *   coordinates.
+ *
+ * Enum value describing the most common tiling types.
+ */
+typedef enum
+{
+  GST_VIDEO_TILE_TYPE_INDEXED = 0
+} GstVideoTileType;
+
+#define GST_VIDEO_TILE_TYPE_SHIFT     (16)
+#define GST_VIDEO_TILE_TYPE_MASK      ((1 << GST_VIDEO_TILE_TYPE_SHIFT) - 1)
+
+/**
+ * GST_VIDEO_TILE_MAKE_MODE:
+ * @num: the mode number to create
+ * @type: the tile mode type
+ *
+ * use this macro to create new tile modes.
+ */
+#define GST_VIDEO_TILE_MAKE_MODE(num, type) \
+    (((num) << GST_VIDEO_TILE_TYPE_SHIFT) | (GST_VIDEO_TILE_TYPE_ ##type))
+
+/**
+ * GST_VIDEO_TILE_MODE_TYPE:
+ * @mode: the tile mode
+ *
+ * Get the tile mode type of @mode
+ */
+#define GST_VIDEO_TILE_MODE_TYPE(mode)       ((mode) & GST_VIDEO_TILE_TYPE_MASK)
+
+/**
+ * GST_VIDEO_TILE_MODE_IS_INDEXED:
+ * @mode: a tile mode
+ *
+ * Check if @mode is an indexed tile type
+ */
+#define GST_VIDEO_TILE_MODE_IS_INDEXED(mode) (GST_VIDEO_TILE_MODE_TYPE(mode) == GST_VIDEO_TILE_TYPE_INDEXED)
+
+
+#define GST_VIDEO_TILE_Y_TILES_SHIFT     (16)
+#define GST_VIDEO_TILE_X_TILES_MASK      ((1 << GST_VIDEO_TILE_Y_TILES_SHIFT) - 1)
+
+/**
+ * GST_VIDEO_TILE_MAKE_STRIDE:
+ * @x_tiles: number of tiles in X
+ * @y_tiles: number of tiles in Y
+ *
+ * Encode the number of tile in X and Y into the stride.
+ */
+#define GST_VIDEO_TILE_MAKE_STRIDE(x_tiles, y_tiles) \
+    (((y_tiles) << GST_VIDEO_TILE_Y_TILES_SHIFT) | (x_tiles))
+
+/**
+ * GST_VIDEO_TILE_X_TILES:
+ * @stride: plane stride
+ *
+ * Extract the number of tiles in X from the stride value.
+ */
+#define GST_VIDEO_TILE_X_TILES(stride) ((stride) & GST_VIDEO_TILE_X_TILES_MASK)
+
+/**
+ * GST_VIDEO_TILE_Y_TILES:
+ * @stride: plane stride
+ *
+ * Extract the number of tiles in Y from the stride value.
+ */
+#define GST_VIDEO_TILE_Y_TILES(stride) ((stride) >> GST_VIDEO_TILE_Y_TILES_SHIFT)
+
+/**
+ * GstVideoTileMode:
+ * @GST_VIDEO_TILE_MODE_UNKNOWN: Unknown or unset tile mode
+ * @GST_VIDEO_TILE_MODE_ZFLIPZ_2X2: Every four adjacent blocks - two
+ *    horizontally and two vertically are grouped together and are located
+ *    in memory in Z or flipped Z order. In case of odd rows, the last row
+ *    of blocks is arranged in linear order.
+ *
+ * Enum value describing the available tiling modes.
+ */
+typedef enum
+{
+  GST_VIDEO_TILE_MODE_UNKNOWN = 0,
+  GST_VIDEO_TILE_MODE_ZFLIPZ_2X2 = GST_VIDEO_TILE_MAKE_MODE (1, INDEXED),
+} GstVideoTileMode;
+
+guint           gst_video_tile_get_index                (GstVideoTileMode mode, gint x, gint y,
+                                                         gint x_tiles, gint y_tiles);
+
+
+G_END_DECLS
+
+#endif /* __GST_VIDEO_TILE_H__ */
diff --git a/gst-libs/gst/video/videooverlay.c b/gst-libs/gst/video/videooverlay.c
index a560822..ad7da93 100644
--- a/gst-libs/gst/video/videooverlay.c
+++ b/gst-libs/gst/video/videooverlay.c
@@ -99,18 +99,22 @@
  * <title>Two basic usage scenarios</title>
  * <para>
  * There are two basic usage scenarios: in the simplest case, the application
- * knows exactly what particular element is used for video output, which is
- * usually the case when the application creates the videosink to use
- * (e.g. #xvimagesink, #ximagesink, etc.) itself; in this case, the application
- * can just create the videosink element, create and realize the window to
- * render the video on and then call gst_video_overlay_set_window_handle() directly
- * with the XID or native window handle, before starting up the pipeline.
+ * uses #playbin or #plasink or knows exactly what particular element is used
+ * for video output, which is usually the case when the application creates
+ * the videosink to use (e.g. #xvimagesink, #ximagesink, etc.) itself; in this
+ * case, the application can just create the videosink element, create and
+ * realize the window to render the video on and then
+ * call gst_video_overlay_set_window_handle() directly with the XID or native
+ * window handle, before starting up the pipeline.
+ * As #playbin and #playsink implement the video overlay interface and proxy
+ * it transparently to the actual video sink even if it is created later, this
+ * case also applies when using these elements.
  * </para>
  * <para>
  * In the other and more common case, the application does not know in advance
  * what GStreamer video sink element will be used for video output. This is
- * usually the case when an element such as #autovideosink or #gconfvideosink
- * is used. In this case, the video sink element itself is created
+ * usually the case when an element such as #autovideosink is used.
+ * In this case, the video sink element itself is created
  * asynchronously from a GStreamer streaming thread some time after the
  * pipeline has been started up. When that happens, however, the video sink
  * will need to know right then whether to render onto an already existing
diff --git a/gst-plugins-base.doap b/gst-plugins-base.doap
index 28067bd..8ab9386 100644
--- a/gst-plugins-base.doap
+++ b/gst-plugins-base.doap
@@ -36,41 +36,11 @@
 
  <release>
   <Version>
-   <revision>1.2.4</revision>
-   <branch>1.2</branch>
+   <revision>1.3.1</revision>
+   <branch>1.3</branch>
    <name></name>
-   <created>2014-04-18</created>
-   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-1.2.4.tar.xz" />
-  </Version>
- </release>
-
- <release>
-  <Version>
-   <revision>1.2.3</revision>
-   <branch>1.2</branch>
-   <name></name>
-   <created>2014-02-08</created>
-   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-1.2.3.tar.xz" />
-  </Version>
- </release>
-
- <release>
-  <Version>
-   <revision>1.2.2</revision>
-   <branch>1.2</branch>
-   <name></name>
-   <created>2013-12-26</created>
-   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-1.2.2.tar.xz" />
-  </Version>
- </release>
-
- <release>
-  <Version>
-   <revision>1.2.1</revision>
-   <branch>1.2</branch>
-   <name></name>
-   <created>2013-11-09</created>
-   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-1.2.1.tar.xz" />
+   <created>2014-05-03</created>
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-1.3.1.tar.xz" />
   </Version>
  </release>
 
diff --git a/gst-plugins-base.spec b/gst-plugins-base.spec
index d43d03b..67655ee 100644
--- a/gst-plugins-base.spec
+++ b/gst-plugins-base.spec
@@ -4,7 +4,7 @@
 %define gst_minver  0.11.0
 
 Name: 		%{gstreamer}-plugins-base
-Version: 	1.2.4
+Version: 	1.3.1
 Release: 	1.gst
 Summary: 	GStreamer streaming media framework plug-ins
 
@@ -149,6 +149,7 @@
 %{_includedir}/gstreamer-%{majorminor}/gst/video/gstvideodecoder.h
 %{_includedir}/gstreamer-%{majorminor}/gst/video/gstvideoencoder.h
 %{_includedir}/gstreamer-%{majorminor}/gst/video/gstvideoutils.h
+%{_includedir}/gstreamer-%{majorminor}/gst/video/video-tile.h
 %{_includedir}/gstreamer-%{majorminor}/gst/video/navigation.h
 %{_includedir}/gstreamer-%{majorminor}/gst/video/video-blend.h
 %{_includedir}/gstreamer-%{majorminor}/gst/video/video-color.h
@@ -233,6 +234,7 @@
 %{_includedir}/gstreamer-%{majorminor}/gst/allocators/allocators.h
 %{_includedir}/gstreamer-%{majorminor}/gst/allocators/gstdmabuf.h
 %{_includedir}/gstreamer-%{majorminor}/gst/video/video-chroma.h
+%{_includedir}/gstreamer-%{majorminor}/gst/sdp/gstmikey.h
 %{_libdir}/girepository-1.0/GstAllocators-1.0.typelib
 %{_libdir}/libgstallocators-1.0.so
 %{_libdir}/pkgconfig/gstreamer-allocators-1.0.pc
diff --git a/gst-plugins-base.spec.in b/gst-plugins-base.spec.in
index 05c02c1..45990c9 100644
--- a/gst-plugins-base.spec.in
+++ b/gst-plugins-base.spec.in
@@ -149,6 +149,7 @@
 %{_includedir}/gstreamer-%{majorminor}/gst/video/gstvideodecoder.h
 %{_includedir}/gstreamer-%{majorminor}/gst/video/gstvideoencoder.h
 %{_includedir}/gstreamer-%{majorminor}/gst/video/gstvideoutils.h
+%{_includedir}/gstreamer-%{majorminor}/gst/video/video-tile.h
 %{_includedir}/gstreamer-%{majorminor}/gst/video/navigation.h
 %{_includedir}/gstreamer-%{majorminor}/gst/video/video-blend.h
 %{_includedir}/gstreamer-%{majorminor}/gst/video/video-color.h
@@ -233,6 +234,7 @@
 %{_includedir}/gstreamer-%{majorminor}/gst/allocators/allocators.h
 %{_includedir}/gstreamer-%{majorminor}/gst/allocators/gstdmabuf.h
 %{_includedir}/gstreamer-%{majorminor}/gst/video/video-chroma.h
+%{_includedir}/gstreamer-%{majorminor}/gst/sdp/gstmikey.h
 %{_libdir}/girepository-1.0/GstAllocators-1.0.typelib
 %{_libdir}/libgstallocators-1.0.so
 %{_libdir}/pkgconfig/gstreamer-allocators-1.0.pc
diff --git a/gst/Makefile.in b/gst/Makefile.in
index b48feb0..b9b0cde 100644
--- a/gst/Makefile.in
+++ b/gst/Makefile.in
@@ -91,7 +91,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -403,9 +402,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/gst/adder/Makefile.in b/gst/adder/Makefile.in
index 2b0a914..b08386b 100644
--- a/gst/adder/Makefile.in
+++ b/gst/adder/Makefile.in
@@ -110,7 +110,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -450,9 +449,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/gst/adder/gstadder.c b/gst/adder/gstadder.c
index bc619a5..6e9298e 100644
--- a/gst/adder/gstadder.c
+++ b/gst/adder/gstadder.c
@@ -35,8 +35,6 @@
  * gst-launch audiotestsrc freq=100 ! adder name=mix ! audioconvert ! alsasink audiotestsrc freq=500 ! mix.
  * ]| This pipeline produces two sine waves mixed together.
  * </refsect2>
- *
- * Last reviewed on 2006-05-09 (0.10.7)
  */
 /* Element-Checklist-Version: 5 */
 
@@ -223,6 +221,8 @@
 {
   GstAdder *adder;
   GstCaps *result, *peercaps, *current_caps, *filter_caps;
+  GstStructure *s;
+  gint i, n;
 
   adder = GST_ADDER (GST_PAD_PARENT (pad));
 
@@ -283,6 +283,22 @@
     }
   }
 
+  result = gst_caps_make_writable (result);
+
+  n = gst_caps_get_size (result);
+  for (i = 0; i < n; i++) {
+    GstStructure *sref;
+
+    s = gst_caps_get_structure (result, i);
+    sref = gst_structure_copy (s);
+    gst_structure_set (sref, "channels", GST_TYPE_INT_RANGE, 0, 2, NULL);
+    if (gst_structure_is_subset (s, sref)) {
+      /* This field is irrelevant when in mono or stereo */
+      gst_structure_remove_field (s, "channel-mask");
+    }
+    gst_structure_free (sref);
+  }
+
   if (filter_caps)
     gst_caps_unref (filter_caps);
 
@@ -322,9 +338,19 @@
  * the other sinkpads because we can only mix streams with the same caps.
  */
 static gboolean
-gst_adder_setcaps (GstAdder * adder, GstPad * pad, GstCaps * caps)
+gst_adder_setcaps (GstAdder * adder, GstPad * pad, GstCaps * orig_caps)
 {
+  GstCaps *caps;
   GstAudioInfo info;
+  GstStructure *s;
+  gint channels;
+
+  caps = gst_caps_copy (orig_caps);
+
+  s = gst_caps_get_structure (caps, 0);
+  if (gst_structure_get_int (s, "channels", &channels))
+    if (channels <= 2)
+      gst_structure_remove_field (s, "channel-mask");
 
   if (!gst_audio_info_from_caps (&info, caps))
     goto invalid_format;
@@ -337,12 +363,14 @@
   if (adder->current_caps != NULL) {
     if (gst_audio_info_is_equal (&info, &adder->info)) {
       GST_OBJECT_UNLOCK (adder);
+      gst_caps_unref (caps);
       return TRUE;
     } else {
       GST_DEBUG_OBJECT (pad, "got input caps %" GST_PTR_FORMAT ", but "
           "current caps are %" GST_PTR_FORMAT, caps, adder->current_caps);
       GST_OBJECT_UNLOCK (adder);
       gst_pad_push_event (pad, gst_event_new_reconfigure ());
+      gst_caps_unref (caps);
       return FALSE;
     }
   }
@@ -356,11 +384,14 @@
 
   GST_INFO_OBJECT (pad, "handle caps change to %" GST_PTR_FORMAT, caps);
 
+  gst_caps_unref (caps);
+
   return TRUE;
 
   /* ERRORS */
 invalid_format:
   {
+    gst_caps_unref (caps);
     GST_WARNING_OBJECT (adder, "invalid format set as caps");
     return FALSE;
   }
@@ -1162,11 +1193,17 @@
 
   if (adder->send_stream_start) {
     gchar s_id[32];
+    GstEvent *event;
 
     GST_INFO_OBJECT (adder->srcpad, "send pending stream start event");
-    /* stream-start (FIXME: create id based on input ids) */
+    /* FIXME: create id based on input ids, we can't use 
+     * gst_pad_create_stream_id() though as that only handles 0..1 sink-pad
+     */
     g_snprintf (s_id, sizeof (s_id), "adder-%08x", g_random_int ());
-    if (!gst_pad_push_event (adder->srcpad, gst_event_new_stream_start (s_id))) {
+    event = gst_event_new_stream_start (s_id);
+    gst_event_set_group_id (event, gst_util_group_id_next ());
+
+    if (!gst_pad_push_event (adder->srcpad, event)) {
       GST_WARNING_OBJECT (adder->srcpad, "Sending stream start event failed");
     }
     adder->send_stream_start = FALSE;
diff --git a/gst/adder/gstadderorc-dist.c b/gst/adder/gstadderorc-dist.c
index d0077a1..7d6e502 100644
--- a/gst/adder/gstadderorc-dist.c
+++ b/gst/adder/gstadderorc-dist.c
@@ -160,8 +160,8 @@
 #define ORC_CLAMP_UW(x) ORC_CLAMP(x,ORC_UW_MIN,ORC_UW_MAX)
 #define ORC_CLAMP_SL(x) ORC_CLAMP(x,ORC_SL_MIN,ORC_SL_MAX)
 #define ORC_CLAMP_UL(x) ORC_CLAMP(x,ORC_UL_MIN,ORC_UL_MAX)
-#define ORC_SWAP_W(x) ((((x)&0xff)<<8) | (((x)&0xff00)>>8))
-#define ORC_SWAP_L(x) ((((x)&0xff)<<24) | (((x)&0xff00)<<8) | (((x)&0xff0000)>>8) | (((x)&0xff000000)>>24))
+#define ORC_SWAP_W(x) ((((x)&0xffU)<<8) | (((x)&0xff00U)>>8))
+#define ORC_SWAP_L(x) ((((x)&0xffU)<<24) | (((x)&0xff00U)<<8) | (((x)&0xff0000U)>>8) | (((x)&0xff000000U)>>24))
 #define ORC_SWAP_Q(x) ((((x)&ORC_UINT64_C(0xff))<<56) | (((x)&ORC_UINT64_C(0xff00))<<40) | (((x)&ORC_UINT64_C(0xff0000))<<24) | (((x)&ORC_UINT64_C(0xff000000))<<8) | (((x)&ORC_UINT64_C(0xff00000000))>>8) | (((x)&ORC_UINT64_C(0xff0000000000))>>24) | (((x)&ORC_UINT64_C(0xff000000000000))>>40) | (((x)&ORC_UINT64_C(0xff00000000000000))>>56))
 #define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset)))
 #define ORC_DENORMAL(x) ((x) & ((((x)&0x7f800000) == 0) ? 0xff800000 : 0xffffffff))
diff --git a/gst/app/Makefile.in b/gst/app/Makefile.in
index dd51287..42c7d52 100644
--- a/gst/app/Makefile.in
+++ b/gst/app/Makefile.in
@@ -87,7 +87,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -422,9 +421,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/gst/app/gstapp.c b/gst/app/gstapp.c
index 0b9ce60..0fb9e78 100644
--- a/gst/app/gstapp.c
+++ b/gst/app/gstapp.c
@@ -26,8 +26,6 @@
  * For the documentation of the API, please see the
  * <link linkend="gst-plugins-base-libs-appsrc">libgstapp</link> section in the
  * GStreamer Plugins Base Libraries documentation.
- *
- * Since: 0.10.22
  */
 /**
  * SECTION:element-appsink
@@ -39,8 +37,6 @@
  * For the documentation of the API, please see the
  * <link linkend="gst-plugins-base-libs-appsink">libgstapp</link> section in
  * the GStreamer Plugins Base Libraries documentation.
- *
- * Since: 0.10.22
  */
 
 #ifdef HAVE_CONFIG_H
diff --git a/gst/audioconvert/Makefile.in b/gst/audioconvert/Makefile.in
index 92b1cec..998372b 100644
--- a/gst/audioconvert/Makefile.in
+++ b/gst/audioconvert/Makefile.in
@@ -110,7 +110,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -456,9 +455,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/gst/audioconvert/gstaudioconvert.c b/gst/audioconvert/gstaudioconvert.c
index 01dc950..21510fa 100644
--- a/gst/audioconvert/gstaudioconvert.c
+++ b/gst/audioconvert/gstaudioconvert.c
@@ -39,8 +39,6 @@
  * ]| The vorbis encoder takes float audio data instead of the integer data
  * generated by audiotestsrc.
  * </refsect2>
- *
- * Last reviewed on 2006-03-02 (0.10.4)
  */
 
 /*
diff --git a/gst/audioconvert/gstaudioconvertorc-dist.c b/gst/audioconvert/gstaudioconvertorc-dist.c
index 46fdffa..ee3a539 100644
--- a/gst/audioconvert/gstaudioconvertorc-dist.c
+++ b/gst/audioconvert/gstaudioconvertorc-dist.c
@@ -228,8 +228,8 @@
 #define ORC_CLAMP_UW(x) ORC_CLAMP(x,ORC_UW_MIN,ORC_UW_MAX)
 #define ORC_CLAMP_SL(x) ORC_CLAMP(x,ORC_SL_MIN,ORC_SL_MAX)
 #define ORC_CLAMP_UL(x) ORC_CLAMP(x,ORC_UL_MIN,ORC_UL_MAX)
-#define ORC_SWAP_W(x) ((((x)&0xff)<<8) | (((x)&0xff00)>>8))
-#define ORC_SWAP_L(x) ((((x)&0xff)<<24) | (((x)&0xff00)<<8) | (((x)&0xff0000)>>8) | (((x)&0xff000000)>>24))
+#define ORC_SWAP_W(x) ((((x)&0xffU)<<8) | (((x)&0xff00U)>>8))
+#define ORC_SWAP_L(x) ((((x)&0xffU)<<24) | (((x)&0xff00U)<<8) | (((x)&0xff0000U)>>8) | (((x)&0xff000000U)>>24))
 #define ORC_SWAP_Q(x) ((((x)&ORC_UINT64_C(0xff))<<56) | (((x)&ORC_UINT64_C(0xff00))<<40) | (((x)&ORC_UINT64_C(0xff0000))<<24) | (((x)&ORC_UINT64_C(0xff000000))<<8) | (((x)&ORC_UINT64_C(0xff00000000))>>8) | (((x)&ORC_UINT64_C(0xff0000000000))>>24) | (((x)&ORC_UINT64_C(0xff000000000000))>>40) | (((x)&ORC_UINT64_C(0xff00000000000000))>>56))
 #define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset)))
 #define ORC_DENORMAL(x) ((x) & ((((x)&0x7f800000) == 0) ? 0xff800000 : 0xffffffff))
diff --git a/gst/audioconvert/gstchannelmix.c b/gst/audioconvert/gstchannelmix.c
index 06db4ea..f5f5e0d 100644
--- a/gst/audioconvert/gstchannelmix.c
+++ b/gst/audioconvert/gstchannelmix.c
@@ -654,6 +654,10 @@
   if (this->in.channels != this->out.channels)
     return FALSE;
 
+  /* passthrough for 1->1 channels (MONO and NONE position are the same here) */
+  if (this->in.channels == 1 && this->out.channels == 1)
+    return TRUE;
+
   /* passthrough if both channel masks are the same */
   in_mask = out_mask = 0;
   for (i = 0; i < this->in.channels; i++) {
diff --git a/gst/audiorate/Makefile.in b/gst/audiorate/Makefile.in
index a9a2236..6f63842 100644
--- a/gst/audiorate/Makefile.in
+++ b/gst/audiorate/Makefile.in
@@ -88,7 +88,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -424,9 +423,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/gst/audiorate/gstaudiorate.c b/gst/audiorate/gstaudiorate.c
index 23999d1..a0818c9 100644
--- a/gst/audiorate/gstaudiorate.c
+++ b/gst/audiorate/gstaudiorate.c
@@ -158,13 +158,11 @@
           "Don't emit notify for dropped and duplicated frames", DEFAULT_SILENT,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
   /**
-   * GstAudioRate:tolerance
+   * GstAudioRate:tolerance:
    *
    * The difference between incoming timestamp and next timestamp must exceed
    * the given value for audiorate to add or drop samples.
-   *
-   * Since: 0.10.26
-   **/
+   */
   g_object_class_install_property (object_class, ARG_TOLERANCE,
       g_param_spec_uint64 ("tolerance", "tolerance",
           "Only act if timestamp jitter/imperfection exceeds indicated tolerance (ns)",
@@ -175,9 +173,7 @@
    * GstAudioRate:skip-to-first:
    *
    * Don't produce buffers before the first one we receive.
-   *
-   * Since: 0.10.33
-   **/
+   */
   g_object_class_install_property (object_class, ARG_SKIP_TO_FIRST,
       g_param_spec_boolean ("skip-to-first", "Skip to first buffer",
           "Don't produce buffers before the first one we receive",
diff --git a/gst/audioresample/Makefile.in b/gst/audioresample/Makefile.in
index 2045de3..83b91fa 100644
--- a/gst/audioresample/Makefile.in
+++ b/gst/audioresample/Makefile.in
@@ -88,7 +88,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -430,9 +429,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/gst/audioresample/gstaudioresample.c b/gst/audioresample/gstaudioresample.c
index e2a52ee..94981bc 100644
--- a/gst/audioresample/gstaudioresample.c
+++ b/gst/audioresample/gstaudioresample.c
@@ -116,8 +116,7 @@
 static void gst_audio_resample_get_property (GObject * object,
     guint prop_id, GValue * value, GParamSpec * pspec);
 
-static GType
-speex_resampler_sinc_filter_mode_get_type (void);
+static GType speex_resampler_sinc_filter_mode_get_type (void);
 
 /* vmethods */
 static gboolean gst_audio_resample_get_unit_size (GstBaseTransform * base,
@@ -166,12 +165,13 @@
           SPEEX_RESAMPLER_SINC_FILTER_DEFAULT,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
-  g_object_class_install_property (gobject_class, PROP_SINC_FILTER_AUTO_THRESHOLD,
-      g_param_spec_uint ("sinc-filter-auto-threshold", "Sinc filter auto mode threshold",
+  g_object_class_install_property (gobject_class,
+      PROP_SINC_FILTER_AUTO_THRESHOLD,
+      g_param_spec_uint ("sinc-filter-auto-threshold",
+          "Sinc filter auto mode threshold",
           "Memory usage threshold to use if sinc filter mode is AUTO, given in bytes",
-          0, G_MAXUINT,
-          SPEEX_RESAMPLER_SINC_FILTER_AUTO_THRESHOLD_DEFAULT,
-           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+          0, G_MAXUINT, SPEEX_RESAMPLER_SINC_FILTER_AUTO_THRESHOLD_DEFAULT,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
   gst_element_class_add_pad_template (gstelement_class,
       gst_static_pad_template_get (&gst_audio_resample_src_template));
@@ -211,7 +211,8 @@
 
   resample->quality = SPEEX_RESAMPLER_QUALITY_DEFAULT;
   resample->sinc_filter_mode = SPEEX_RESAMPLER_SINC_FILTER_DEFAULT;
-  resample->sinc_filter_auto_threshold = SPEEX_RESAMPLER_SINC_FILTER_AUTO_THRESHOLD_DEFAULT;
+  resample->sinc_filter_auto_threshold =
+      SPEEX_RESAMPLER_SINC_FILTER_AUTO_THRESHOLD_DEFAULT;
 
   gst_base_transform_set_gap_aware (trans, TRUE);
   gst_pad_set_query_function (trans->srcpad, gst_audio_resample_query);
@@ -389,7 +390,7 @@
   const SpeexResampleFuncs *funcs = gst_audio_resample_get_funcs (width, fp);
 
   ret = funcs->init (channels, inrate, outrate, quality,
-        sinc_filter_mode, sinc_filter_auto_threshold, &err);
+      sinc_filter_mode, sinc_filter_auto_threshold, &err);
 
   if (G_UNLIKELY (err != RESAMPLER_ERR_SUCCESS)) {
     GST_ERROR_OBJECT (resample, "Failed to create resampler state: %s",
@@ -399,7 +400,7 @@
 
   if (sinc_filter_mode == SPEEX_RESAMPLER_SINC_FILTER_AUTO) {
     GST_INFO_OBJECT (resample, "Using the %s sinc filter table",
-        funcs->get_sinc_filter_mode(ret) ? "full" : "interpolated");
+        funcs->get_sinc_filter_mode (ret) ? "full" : "interpolated");
   }
 
   funcs->skip_zeros (ret);
@@ -422,7 +423,8 @@
   if (resample->state == NULL) {
     ret = TRUE;
   } else if (resample->channels != channels || fp != resample->fp
-      || width != resample->width || sinc_filter_mode != resample->sinc_filter_mode
+      || width != resample->width
+      || sinc_filter_mode != resample->sinc_filter_mode
       || sinc_filter_auto_threshold != resample->sinc_filter_auto_threshold) {
     resample->funcs->destroy (resample->state);
     resample->state =
@@ -1328,7 +1330,7 @@
           quality, resample->fp, resample->sinc_filter_mode,
           resample->sinc_filter_auto_threshold);
       break;
-    case PROP_SINC_FILTER_MODE: {
+    case PROP_SINC_FILTER_MODE:{
       /* FIXME locking! */
       SpeexResamplerSincFilterMode sinc_filter_mode = g_value_get_enum (value);
 
@@ -1339,7 +1341,7 @@
 
       break;
     }
-    case PROP_SINC_FILTER_AUTO_THRESHOLD: {
+    case PROP_SINC_FILTER_AUTO_THRESHOLD:{
       /* FIXME locking! */
       guint32 sinc_filter_auto_threshold = g_value_get_uint (value);
 
@@ -1369,10 +1371,10 @@
       g_value_set_int (value, resample->quality);
       break;
     case PROP_SINC_FILTER_MODE:
-      g_value_set_enum(value, resample->sinc_filter_mode);
+      g_value_set_enum (value, resample->sinc_filter_mode);
       break;
     case PROP_SINC_FILTER_AUTO_THRESHOLD:
-      g_value_set_uint(value, resample->sinc_filter_auto_threshold);
+      g_value_set_uint (value, resample->sinc_filter_auto_threshold);
       break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -1387,15 +1389,17 @@
 
   if (!speex_resampler_sinc_filter_mode_type) {
     static GEnumValue sinc_filter_modes[] = {
-      { SPEEX_RESAMPLER_SINC_FILTER_INTERPOLATED, "Use interpolated sinc table",                  "interpolated" },
-      { SPEEX_RESAMPLER_SINC_FILTER_FULL,         "Use full sinc table",                          "full"         },
-      { SPEEX_RESAMPLER_SINC_FILTER_AUTO,         "Use full table if table size below threshold", "auto"         },
-      { 0, NULL, NULL },
+      {SPEEX_RESAMPLER_SINC_FILTER_INTERPOLATED, "Use interpolated sinc table",
+          "interpolated"},
+      {SPEEX_RESAMPLER_SINC_FILTER_FULL, "Use full sinc table", "full"},
+      {SPEEX_RESAMPLER_SINC_FILTER_AUTO,
+          "Use full table if table size below threshold", "auto"},
+      {0, NULL, NULL},
     };
 
-    speex_resampler_sinc_filter_mode_type = g_enum_register_static (
-                                            "SpeexResamplerSincFilterMode",
-                                            sinc_filter_modes);
+    speex_resampler_sinc_filter_mode_type =
+        g_enum_register_static ("SpeexResamplerSincFilterMode",
+        sinc_filter_modes);
   }
 
   return speex_resampler_sinc_filter_mode_type;
@@ -1464,18 +1468,16 @@
   orc_profile_init (&b);
 
   sta = resample_float_resampler_init (1, 48000, 24000, 4,
-        SPEEX_RESAMPLER_SINC_FILTER_INTERPOLATED,
-        SPEEX_RESAMPLER_SINC_FILTER_AUTO_THRESHOLD_DEFAULT,
-        NULL);
+      SPEEX_RESAMPLER_SINC_FILTER_INTERPOLATED,
+      SPEEX_RESAMPLER_SINC_FILTER_AUTO_THRESHOLD_DEFAULT, NULL);
   if (sta == NULL) {
     GST_ERROR ("Failed to create float resampler state");
     return FALSE;
   }
 
   stb = resample_int_resampler_init (1, 48000, 24000, 4,
-        SPEEX_RESAMPLER_SINC_FILTER_INTERPOLATED,
-        SPEEX_RESAMPLER_SINC_FILTER_AUTO_THRESHOLD_DEFAULT,
-        NULL);
+      SPEEX_RESAMPLER_SINC_FILTER_INTERPOLATED,
+      SPEEX_RESAMPLER_SINC_FILTER_AUTO_THRESHOLD_DEFAULT, NULL);
   if (stb == NULL) {
     resample_float_resampler_destroy (sta);
     GST_ERROR ("Failed to create int resampler state");
diff --git a/gst/audioresample/resample.c b/gst/audioresample/resample.c
index 98d006c..d4df979 100644
--- a/gst/audioresample/resample.c
+++ b/gst/audioresample/resample.c
@@ -77,13 +77,13 @@
 #define EXPORT G_GNUC_INTERNAL
 
 #ifdef _USE_SSE
-#ifndef HAVE_XMMINTRIN_H
+#if !defined(__SSE__) || !defined(HAVE_XMMINTRIN_H)
 #undef _USE_SSE
 #endif
 #endif
 
 #ifdef _USE_SSE2
-#ifndef HAVE_EMMINTRIN_H
+#if !defined(__SSE2__) || !defined(HAVE_EMMINTRIN_H)
 #undef _USE_SSE2
 #endif
 #endif
@@ -478,7 +478,7 @@
     const spx_word16_t *iptr = &in[last_sample];
 
     SSE_FALLBACK (INNER_PRODUCT_SINGLE)
-    NEON_FALLBACK (INNER_PRODUCT_SINGLE)
+        NEON_FALLBACK (INNER_PRODUCT_SINGLE)
         sum = 0;
     for (j = 0; j < N; j++)
       sum += MULT16_16 (sinc[j], iptr[j]);
@@ -497,14 +497,14 @@
 */
 #if defined(OVERRIDE_INNER_PRODUCT_SINGLE) && defined(_USE_NEON)
     NEON_IMPLEMENTATION (INNER_PRODUCT_SINGLE)
-    sum = inner_product_single (sinc, iptr, N);
-    NEON_END(INNER_PRODUCT_SINGLE)
+        sum = inner_product_single (sinc, iptr, N);
+    NEON_END (INNER_PRODUCT_SINGLE)
 #elif defined(OVERRIDE_INNER_PRODUCT_SINGLE) && defined(_USE_SSE)
     SSE_IMPLEMENTATION (INNER_PRODUCT_SINGLE)
         sum = inner_product_single (sinc, iptr, N);
     SSE_END (INNER_PRODUCT_SINGLE)
 #endif
-    out[out_stride * out_sample++] = SATURATE32PSHR(sum, 15, 32767);
+        out[out_stride * out_sample++] = SATURATE32PSHR (sum, 15, 32767);
     last_sample += int_advance;
     samp_frac_num += frac_advance;
     if (samp_frac_num >= den_rate) {
@@ -642,7 +642,7 @@
         interp);
     SSE_END (INTERPOLATE_PRODUCT_SINGLE)
 #endif
-    out[out_stride * out_sample++] = SATURATE32PSHR(sum, 14, 32767);
+        out[out_stride * out_sample++] = SATURATE32PSHR (sum, 14, 32767);
     last_sample += int_advance;
     samp_frac_num += frac_advance;
     if (samp_frac_num >= den_rate) {
@@ -946,7 +946,8 @@
 
 EXPORT SpeexResamplerState *
 speex_resampler_init (spx_uint32_t nb_channels, spx_uint32_t in_rate,
-    spx_uint32_t out_rate, int quality, SpeexResamplerSincFilterMode sinc_filter_mode,
+    spx_uint32_t out_rate, int quality,
+    SpeexResamplerSincFilterMode sinc_filter_mode,
     spx_uint32_t sinc_filter_auto_threshold, int *err)
 {
   return speex_resampler_init_frac (nb_channels, in_rate, out_rate, in_rate,
@@ -988,6 +989,11 @@
       *err = RESAMPLER_ERR_INVALID_ARG;
     return NULL;
   }
+  if (ratio_den == 0) {
+    if (err)
+      *err = RESAMPLER_ERR_INVALID_ARG;
+    return NULL;
+  }
   switch (sinc_filter_mode) {
     case RESAMPLER_SINC_FILTER_INTERPOLATED:
       use_full_sinc_table = 0;
@@ -1040,7 +1046,7 @@
       unsigned int flags = orc_target_get_default_flags (target);
       check_insn_set (st, orc_target_get_name (target));
       for (i = 0; i < 32; ++i) {
-        if (flags & (1 << i)) {
+        if (flags & (1U << i)) {
           check_insn_set (st, orc_target_get_flag_name (target, i));
         }
       }
@@ -1063,13 +1069,16 @@
 
   if (sinc_filter_mode == RESAMPLER_SINC_FILTER_AUTO) {
     /*
-    Estimate how big the filter table would become if the full mode were to be used
-    calculations used correspond to the ones in update_filter()
-    if the size is bigger than the threshold, use interpolated sinc instead
-    */
-    spx_uint32_t base_filter_length = st->filt_len = quality_map[st->quality].base_length;
-    spx_uint32_t filter_table_size = base_filter_length * st->den_rate * sizeof(spx_uint16_t);
-    st->use_full_sinc_table = (filter_table_size > sinc_filter_auto_threshold) ? 0 : 1;
+       Estimate how big the filter table would become if the full mode were to be used
+       calculations used correspond to the ones in update_filter()
+       if the size is bigger than the threshold, use interpolated sinc instead
+     */
+    spx_uint32_t base_filter_length = st->filt_len =
+        quality_map[st->quality].base_length;
+    spx_uint32_t filter_table_size =
+        base_filter_length * st->den_rate * sizeof (spx_uint16_t);
+    st->use_full_sinc_table =
+        (filter_table_size > sinc_filter_auto_threshold) ? 0 : 1;
   }
 
   update_filter (st);
diff --git a/gst/audioresample/resample_sse.h b/gst/audioresample/resample_sse.h
index 36522a3..e60de23 100644
--- a/gst/audioresample/resample_sse.h
+++ b/gst/audioresample/resample_sse.h
@@ -41,36 +41,53 @@
 #define OVERRIDE_INNER_PRODUCT_SINGLE
 static inline float inner_product_single(const float *a, const float *b, unsigned int len)
 {
-   int i;
-   float ret;
+   int i = 0;
+   float ret = 0;
    __m128 sum = _mm_setzero_ps();
-   for (i=0;i<len;i+=8)
+
+   if (len > 7)
    {
-      sum = _mm_add_ps(sum, _mm_mul_ps(_mm_loadu_ps(a+i), _mm_loadu_ps(b+i)));
-      sum = _mm_add_ps(sum, _mm_mul_ps(_mm_loadu_ps(a+i+4), _mm_loadu_ps(b+i+4)));
+      for (;i<len-7;i+=8)
+      {
+         sum = _mm_add_ps(sum, _mm_mul_ps(_mm_loadu_ps(a+i), _mm_loadu_ps(b+i)));
+         sum = _mm_add_ps(sum, _mm_mul_ps(_mm_loadu_ps(a+i+4), _mm_loadu_ps(b+i+4)));
+      }
+      sum = _mm_add_ps(sum, _mm_movehl_ps(sum, sum));
+      sum = _mm_add_ss(sum, _mm_shuffle_ps(sum, sum, 0x55));
+      _mm_store_ss(&ret, sum);
    }
-   sum = _mm_add_ps(sum, _mm_movehl_ps(sum, sum));
-   sum = _mm_add_ss(sum, _mm_shuffle_ps(sum, sum, 0x55));
-   _mm_store_ss(&ret, sum);
+
+   for (; i < len; i++)
+     ret += a[i] * b[i];
+
    return ret;
 }
 
 #define OVERRIDE_INTERPOLATE_PRODUCT_SINGLE
 static inline float interpolate_product_single(const float *a, const float *b, unsigned int len, const spx_uint32_t oversample, float *frac) {
-  int i;
-  float ret;
+  int i = 0;
+  float ret = 0;
   __m128 sum = _mm_setzero_ps();
   __m128 f = _mm_loadu_ps(frac);
-  for(i=0;i<len;i+=2)
+
+  if (len > 1)
   {
-    sum = _mm_add_ps(sum, _mm_mul_ps(_mm_load1_ps(a+i), _mm_loadu_ps(b+i*oversample)));
-    sum = _mm_add_ps(sum, _mm_mul_ps(_mm_load1_ps(a+i+1), _mm_loadu_ps(b+(i+1)*oversample)));
+     for(;i<len-1;i+=2)
+     {
+        sum = _mm_add_ps(sum, _mm_mul_ps(_mm_load1_ps(a+i), _mm_loadu_ps(b+i*oversample)));
+        sum = _mm_add_ps(sum, _mm_mul_ps(_mm_load1_ps(a+i+1), _mm_loadu_ps(b+(i+1)*oversample)));
+     }
+
+     sum = _mm_mul_ps(f, sum);
+     sum = _mm_add_ps(sum, _mm_movehl_ps(sum, sum));
+     sum = _mm_add_ss(sum, _mm_shuffle_ps(sum, sum, 0x55));
+     _mm_store_ss(&ret, sum);
   }
-   sum = _mm_mul_ps(f, sum);
-   sum = _mm_add_ps(sum, _mm_movehl_ps(sum, sum));
-   sum = _mm_add_ss(sum, _mm_shuffle_ps(sum, sum, 0x55));
-   _mm_store_ss(&ret, sum);
-   return ret;
+
+  if (i == len-1)
+    ret += a[i] * (frac[0]*b[i*oversample] + frac[1]*b[i*oversample + 1] + frac[2]*b[i*oversample + 2] + frac[3]*b[i*oversample + 3]);
+
+  return ret;
 }
 
 #ifdef _USE_SSE2
@@ -82,37 +99,53 @@
 #ifdef DOUBLE_PRECISION
 static inline double inner_product_double(const double *a, const double *b, unsigned int len)
 {
-   int i;
-   double ret;
+   int i = 0;
+   double ret = 0;
    __m128d sum = _mm_setzero_pd();
-   for (i=0;i<len;i+=4)
+
+   if (len > 3)
    {
-      sum = _mm_add_pd(sum, _mm_mul_pd(_mm_loadu_pd(a+i), _mm_loadu_pd(b+i)));
-      sum = _mm_add_pd(sum, _mm_mul_pd(_mm_loadu_pd(a+i+2), _mm_loadu_pd(b+i+2)));
+      for (;i<len-3;i+=4)
+      {
+         sum = _mm_add_pd(sum, _mm_mul_pd(_mm_loadu_pd(a+i), _mm_loadu_pd(b+i)));
+         sum = _mm_add_pd(sum, _mm_mul_pd(_mm_loadu_pd(a+i+2), _mm_loadu_pd(b+i+2)));
+      }
+      sum = _mm_add_sd(sum, _mm_unpackhi_pd(sum, sum));
+      _mm_store_sd(&ret, sum);
    }
-   sum = _mm_add_sd(sum, _mm_unpackhi_pd(sum, sum));
-   _mm_store_sd(&ret, sum);
+
+   for (; i < len; i++)
+     ret += a[i] * b[i];
+
    return ret;
 }
 #else
 static inline double inner_product_double(const float *a, const float *b, unsigned int len)
 {
-   int i;
-   double ret;
+   int i = 0;
+   double ret = 0;
    __m128d sum = _mm_setzero_pd();
    __m128 t;
-   for (i=0;i<len;i+=8)
-   {
-      t = _mm_mul_ps(_mm_loadu_ps(a+i), _mm_loadu_ps(b+i));
-      sum = _mm_add_pd(sum, _mm_cvtps_pd(t));
-      sum = _mm_add_pd(sum, _mm_cvtps_pd(_mm_movehl_ps(t, t)));
 
-      t = _mm_mul_ps(_mm_loadu_ps(a+i+4), _mm_loadu_ps(b+i+4));
-      sum = _mm_add_pd(sum, _mm_cvtps_pd(t));
-      sum = _mm_add_pd(sum, _mm_cvtps_pd(_mm_movehl_ps(t, t)));
+   if (len > 7)
+   {
+      for (;i<len-7;i+=8)
+      {
+         t = _mm_mul_ps(_mm_loadu_ps(a+i), _mm_loadu_ps(b+i));
+         sum = _mm_add_pd(sum, _mm_cvtps_pd(t));
+         sum = _mm_add_pd(sum, _mm_cvtps_pd(_mm_movehl_ps(t, t)));
+
+         t = _mm_mul_ps(_mm_loadu_ps(a+i+4), _mm_loadu_ps(b+i+4));
+         sum = _mm_add_pd(sum, _mm_cvtps_pd(t));
+         sum = _mm_add_pd(sum, _mm_cvtps_pd(_mm_movehl_ps(t, t)));
+      }
+      sum = _mm_add_sd(sum, _mm_unpackhi_pd(sum, sum));
+      _mm_store_sd(&ret, sum);
    }
-   sum = _mm_add_sd(sum, _mm_unpackhi_pd(sum, sum));
-   _mm_store_sd(&ret, sum);
+
+   for (; i < len; i++)
+     ret += a[i] * b[i];
+
    return ret;
 }
 #endif
@@ -122,35 +155,43 @@
 
 #ifdef DOUBLE_PRECISION
 static inline double interpolate_product_double(const double *a, const double *b, unsigned int len, const spx_uint32_t oversample, double *frac) {
-  int i;
-  double ret;
+  int i = 0;
+  double ret = 0;
   __m128d sum;
   __m128d sum1 = _mm_setzero_pd();
   __m128d sum2 = _mm_setzero_pd();
   __m128d f1 = _mm_loadu_pd(frac);
   __m128d f2 = _mm_loadu_pd(frac+2);
   __m128d t;
-  for(i=0;i<len;i+=2)
+  
+  if (len > 1)
   {
-    t = _mm_mul_pd(_mm_load1_pd(a+i), _mm_loadu_pd(b+i*oversample));
-    sum1 = _mm_add_pd(sum1, t);
-    sum2 = _mm_add_pd(sum2, _mm_unpackhi_pd(t, t));
+     for(;i<len-1;i+=2)
+     {
+       t = _mm_mul_pd(_mm_load1_pd(a+i), _mm_loadu_pd(b+i*oversample));
+       sum1 = _mm_add_pd(sum1, t);
+       sum2 = _mm_add_pd(sum2, _mm_unpackhi_pd(t, t));
 
-    t = _mm_mul_pd(_mm_load1_pd(a+i+1), _mm_loadu_pd(b+(i+1)*oversample));
-    sum1 = _mm_add_pd(sum1, t);
-    sum2 = _mm_add_pd(sum2, _mm_unpackhi_pd(t, t));
+       t = _mm_mul_pd(_mm_load1_pd(a+i+1), _mm_loadu_pd(b+(i+1)*oversample));
+       sum1 = _mm_add_pd(sum1, t);
+       sum2 = _mm_add_pd(sum2, _mm_unpackhi_pd(t, t));
+     }
+     sum1 = _mm_mul_pd(f1, sum1);
+     sum2 = _mm_mul_pd(f2, sum2);
+     sum = _mm_add_pd(sum1, sum2);
+     sum = _mm_add_sd(sum, _mm_unpackhi_pd(sum, sum));
+     _mm_store_sd(&ret, sum);
   }
-  sum1 = _mm_mul_pd(f1, sum1);
-  sum2 = _mm_mul_pd(f2, sum2);
-  sum = _mm_add_pd(sum1, sum2);
-  sum = _mm_add_sd(sum, _mm_unpackhi_pd(sum, sum));
-  _mm_store_sd(&ret, sum);
+
+  if (i == len-1)
+    ret += a[i] * (frac[0]*b[i*oversample] + frac[1]*b[i*oversample + 1] + frac[2]*b[i*oversample + 2] + frac[3]*b[i*oversample + 3]);
+
   return ret;
 }
 #else
 static inline double interpolate_product_double(const float *a, const float *b, unsigned int len, const spx_uint32_t oversample, float *frac) {
-  int i;
-  double ret;
+  int i = 0;
+  double ret = 0;
   __m128d sum;
   __m128d sum1 = _mm_setzero_pd();
   __m128d sum2 = _mm_setzero_pd();
@@ -158,21 +199,29 @@
   __m128d f1 = _mm_cvtps_pd(f);
   __m128d f2 = _mm_cvtps_pd(_mm_movehl_ps(f,f));
   __m128 t;
-  for(i=0;i<len;i+=2)
-  {
-    t = _mm_mul_ps(_mm_load1_ps(a+i), _mm_loadu_ps(b+i*oversample));
-    sum1 = _mm_add_pd(sum1, _mm_cvtps_pd(t));
-    sum2 = _mm_add_pd(sum2, _mm_cvtps_pd(_mm_movehl_ps(t, t)));
 
-    t = _mm_mul_ps(_mm_load1_ps(a+i+1), _mm_loadu_ps(b+(i+1)*oversample));
-    sum1 = _mm_add_pd(sum1, _mm_cvtps_pd(t));
-    sum2 = _mm_add_pd(sum2, _mm_cvtps_pd(_mm_movehl_ps(t, t)));
+  if (len > 1)
+  {
+     for(;i<len-1;i+=2)
+     {
+        t = _mm_mul_ps(_mm_load1_ps(a+i), _mm_loadu_ps(b+i*oversample));
+        sum1 = _mm_add_pd(sum1, _mm_cvtps_pd(t));
+        sum2 = _mm_add_pd(sum2, _mm_cvtps_pd(_mm_movehl_ps(t, t)));
+
+        t = _mm_mul_ps(_mm_load1_ps(a+i+1), _mm_loadu_ps(b+(i+1)*oversample));
+        sum1 = _mm_add_pd(sum1, _mm_cvtps_pd(t));
+        sum2 = _mm_add_pd(sum2, _mm_cvtps_pd(_mm_movehl_ps(t, t)));
+     }
+     sum1 = _mm_mul_pd(f1, sum1);
+     sum2 = _mm_mul_pd(f2, sum2);
+     sum = _mm_add_pd(sum1, sum2);
+     sum = _mm_add_sd(sum, _mm_unpackhi_pd(sum, sum));
+     _mm_store_sd(&ret, sum);
   }
-  sum1 = _mm_mul_pd(f1, sum1);
-  sum2 = _mm_mul_pd(f2, sum2);
-  sum = _mm_add_pd(sum1, sum2);
-  sum = _mm_add_sd(sum, _mm_unpackhi_pd(sum, sum));
-  _mm_store_sd(&ret, sum);
+
+  if (i == len-1)
+    ret += a[i] * (frac[0]*b[i*oversample] + frac[1]*b[i*oversample + 1] + frac[2]*b[i*oversample + 2] + frac[3]*b[i*oversample + 3]);
+
   return ret;
 }
 #endif
diff --git a/gst/audiotestsrc/Makefile.in b/gst/audiotestsrc/Makefile.in
index 4a36638..b52d071 100644
--- a/gst/audiotestsrc/Makefile.in
+++ b/gst/audiotestsrc/Makefile.in
@@ -88,7 +88,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -426,9 +425,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/gst/encoding/Makefile.in b/gst/encoding/Makefile.in
index 37cee02..f7fada4 100644
--- a/gst/encoding/Makefile.in
+++ b/gst/encoding/Makefile.in
@@ -97,7 +97,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -436,9 +435,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/gst/encoding/gstencodebin.c b/gst/encoding/gstencodebin.c
index b567fc2..6728e58 100644
--- a/gst/encoding/gstencodebin.c
+++ b/gst/encoding/gstencodebin.c
@@ -221,6 +221,7 @@
   GstElement *outfilter;        /* Output capsfilter (streamprofile.format) */
   GstElement *formatter;
   GstElement *outqueue;         /* Queue just before the muxer */
+  gulong restriction_sid;
 };
 
 /* Default for queues (same defaults as queue element) */
@@ -1060,10 +1061,21 @@
 
   klass = GST_ELEMENT_GET_CLASS (element);
   value = gst_element_class_get_metadata (klass, GST_ELEMENT_METADATA_KLASS);
+  if (!value)
+    return FALSE;
 
   return strstr (value, classname) != NULL;
 }
 
+static void
+_profile_restriction_caps_cb (GstEncodingProfile * profile,
+    GParamSpec * arg G_GNUC_UNUSED, StreamGroup * group)
+{
+  GstCaps *restriction = gst_encoding_profile_get_restriction (profile);
+
+  g_object_set (group->capsfilter, "caps", restriction, NULL);
+}
+
 /* FIXME : Add handling of streams that don't need encoding  */
 /* FIXME : Add handling of streams that don't require conversion elements */
 /*
@@ -1292,16 +1304,17 @@
 
   /* 3. Create the conversion/restriction elements */
   /* 3.1. capsfilter */
-  if (restriction && !gst_caps_is_any (restriction)) {
-    GST_LOG ("Adding capsfilter for restriction caps : %" GST_PTR_FORMAT,
-        restriction);
+  GST_LOG ("Adding capsfilter for restriction caps : %" GST_PTR_FORMAT,
+      restriction);
 
-    last = sgroup->capsfilter = gst_element_factory_make ("capsfilter", NULL);
+  last = sgroup->capsfilter = gst_element_factory_make ("capsfilter", NULL);
+  if (restriction && !gst_caps_is_any (restriction))
     g_object_set (sgroup->capsfilter, "caps", restriction, NULL);
-    gst_bin_add ((GstBin *) ebin, sgroup->capsfilter);
-    tosync = g_list_append (tosync, sgroup->capsfilter);
-    fast_element_link (sgroup->capsfilter, sgroup->encoder);
-  }
+  gst_bin_add ((GstBin *) ebin, sgroup->capsfilter);
+  tosync = g_list_append (tosync, sgroup->capsfilter);
+  fast_element_link (sgroup->capsfilter, sgroup->encoder);
+  sgroup->restriction_sid = g_signal_connect (sprof, "notify::restriction-caps",
+      G_CALLBACK (_profile_restriction_caps_cb), sgroup);
 
   /* 3.2. restriction elements */
   /* FIXME : Once we have properties for specific converters, use those */
@@ -1870,18 +1883,22 @@
 
   GST_DEBUG_OBJECT (ebin, "Freeing StreamGroup %p", sgroup);
 
+  g_signal_handler_disconnect (sgroup->profile, sgroup->restriction_sid);
+
   if (ebin->muxer) {
     /* outqueue - Muxer */
     tmppad = gst_element_get_static_pad (sgroup->outqueue, "src");
     pad = gst_pad_get_peer (tmppad);
 
-    /* Remove muxer request sink pad */
-    gst_pad_unlink (tmppad, pad);
-    if (GST_PAD_TEMPLATE_PRESENCE (GST_PAD_PAD_TEMPLATE (pad)) ==
-        GST_PAD_REQUEST)
-      gst_element_release_request_pad (ebin->muxer, pad);
+    if (pad) {
+      /* Remove muxer request sink pad */
+      gst_pad_unlink (tmppad, pad);
+      if (GST_PAD_TEMPLATE_PRESENCE (GST_PAD_PAD_TEMPLATE (pad)) ==
+          GST_PAD_REQUEST)
+        gst_element_release_request_pad (ebin->muxer, pad);
+      gst_object_unref (pad);
+    }
     gst_object_unref (tmppad);
-    gst_object_unref (pad);
   }
   if (sgroup->outqueue)
     gst_element_set_state (sgroup->outqueue, GST_STATE_NULL);
diff --git a/gst/encoding/gststreamsplitter.c b/gst/encoding/gststreamsplitter.c
index 7223777..661f504 100644
--- a/gst/encoding/gststreamsplitter.c
+++ b/gst/encoding/gststreamsplitter.c
@@ -105,6 +105,21 @@
   G_OBJECT_CLASS (gst_stream_splitter_parent_class)->finalize (object);
 }
 
+static void
+gst_stream_splitter_push_pending_events (GstStreamSplitter * splitter,
+    GstPad * srcpad)
+{
+  GList *tmp;
+  GST_DEBUG_OBJECT (srcpad, "Pushing out pending events");
+
+  for (tmp = splitter->pending_events; tmp; tmp = tmp->next) {
+    GstEvent *event = (GstEvent *) tmp->data;
+    gst_pad_push_event (srcpad, event);
+  }
+  g_list_free (splitter->pending_events);
+  splitter->pending_events = NULL;
+}
+
 static GstFlowReturn
 gst_stream_splitter_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
 {
@@ -120,17 +135,8 @@
   if (G_UNLIKELY (srcpad == NULL))
     goto nopad;
 
-  if (G_UNLIKELY (stream_splitter->pending_events)) {
-    GList *tmp;
-    GST_DEBUG_OBJECT (srcpad, "Pushing out pending events");
-
-    for (tmp = stream_splitter->pending_events; tmp; tmp = tmp->next) {
-      GstEvent *event = (GstEvent *) tmp->data;
-      gst_pad_push_event (srcpad, event);
-    }
-    g_list_free (stream_splitter->pending_events);
-    stream_splitter->pending_events = NULL;
-  }
+  if (G_UNLIKELY (stream_splitter->pending_events))
+    gst_stream_splitter_push_pending_events (stream_splitter, srcpad);
 
   /* Forward to currently activated stream */
   res = gst_pad_push (srcpad, buf);
@@ -180,6 +186,21 @@
       toall = TRUE;
       break;
     case GST_EVENT_EOS:
+
+      if (G_UNLIKELY (stream_splitter->pending_events)) {
+        GstPad *srcpad = NULL;
+
+        STREAMS_LOCK (stream_splitter);
+        if (stream_splitter->current)
+          srcpad = gst_object_ref (stream_splitter->current);
+        STREAMS_UNLOCK (stream_splitter);
+
+        if (srcpad) {
+          gst_stream_splitter_push_pending_events (stream_splitter, srcpad);
+          gst_object_unref (srcpad);
+        }
+      }
+
       toall = TRUE;
       break;
     default:
@@ -298,6 +319,53 @@
 }
 
 static gboolean
+gst_stream_splitter_sink_acceptcaps (GstPad * pad, GstCaps * caps)
+{
+  GstStreamSplitter *stream_splitter =
+      (GstStreamSplitter *) GST_PAD_PARENT (pad);
+  guint32 cookie;
+  GList *tmp;
+  gboolean res = FALSE;
+
+  /* check if one of the downstream elements accepts the caps */
+  STREAMS_LOCK (stream_splitter);
+
+resync:
+  res = FALSE;
+
+  if (G_UNLIKELY (stream_splitter->srcpads == NULL))
+    goto beach;
+
+  cookie = stream_splitter->cookie;
+  tmp = stream_splitter->srcpads;
+
+  while (tmp) {
+    GstPad *srcpad = (GstPad *) tmp->data;
+
+    /* Ensure srcpad doesn't get destroyed while we query peer */
+    gst_object_ref (srcpad);
+    STREAMS_UNLOCK (stream_splitter);
+
+    res = gst_pad_peer_query_accept_caps (srcpad, caps);
+
+    STREAMS_LOCK (stream_splitter);
+    gst_object_unref (srcpad);
+
+    if (G_UNLIKELY (cookie != stream_splitter->cookie))
+      goto resync;
+
+    if (res)
+      break;
+
+    tmp = tmp->next;
+  }
+
+beach:
+  STREAMS_UNLOCK (stream_splitter);
+  return res;
+}
+
+static gboolean
 gst_stream_splitter_sink_query (GstPad * pad, GstObject * parent,
     GstQuery * query)
 {
@@ -315,6 +383,17 @@
       res = TRUE;
       break;
     }
+    case GST_QUERY_ACCEPT_CAPS:
+    {
+      GstCaps *caps;
+      gboolean result;
+
+      gst_query_parse_accept_caps (query, &caps);
+      result = gst_stream_splitter_sink_acceptcaps (pad, caps);
+      gst_query_set_accept_caps_result (query, result);
+      res = TRUE;
+      break;
+    }
     default:
       res = gst_pad_query_default (pad, parent, query);
       break;
diff --git a/gst/gio/Makefile.in b/gst/gio/Makefile.in
index ca72f84..16b1f07 100644
--- a/gst/gio/Makefile.in
+++ b/gst/gio/Makefile.in
@@ -90,7 +90,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -430,9 +429,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/gst/gio/gstgiobasesink.c b/gst/gio/gstgiobasesink.c
index 71e67f2..d50e8aa 100644
--- a/gst/gio/gstgiobasesink.c
+++ b/gst/gio/gstgiobasesink.c
@@ -325,7 +325,7 @@
       switch (format) {
         case GST_FORMAT_BYTES:
         case GST_FORMAT_DEFAULT:
-          gst_query_set_position (query, GST_FORMAT_BYTES, sink->position);
+          gst_query_set_position (query, format, sink->position);
           return TRUE;
         default:
           return FALSE;
@@ -343,6 +343,15 @@
         return TRUE;
       }
       return FALSE;
+    case GST_QUERY_SEEKING:
+      gst_query_parse_seeking (query, &format, NULL, NULL, NULL);
+      if (format == GST_FORMAT_BYTES || format == GST_FORMAT_DEFAULT) {
+        gst_query_set_seeking (query, format,
+            GST_GIO_STREAM_IS_SEEKABLE (sink->stream), 0, -1);
+      } else {
+        gst_query_set_seeking (query, format, FALSE, 0, -1);
+      }
+      return TRUE;
     default:
       return GST_BASE_SINK_CLASS (parent_class)->query (bsink, query);
   }
diff --git a/gst/gio/gstgiosink.c b/gst/gio/gstgiosink.c
index 66919cb..3f985b8 100644
--- a/gst/gio/gstgiosink.c
+++ b/gst/gio/gstgiosink.c
@@ -121,12 +121,10 @@
           NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
   /**
-   * GstGioSink:file
+   * GstGioSink:file:
    *
    * %GFile to write to.
-   * 
-   * Since: 0.10.20
-   **/
+   */
   g_object_class_install_property (gobject_class, PROP_FILE,
       g_param_spec_object ("file", "File", "GFile to write to",
           G_TYPE_FILE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
diff --git a/gst/gio/gstgiosrc.c b/gst/gio/gstgiosrc.c
index d0a24d9..d214905 100644
--- a/gst/gio/gstgiosrc.c
+++ b/gst/gio/gstgiosrc.c
@@ -117,12 +117,10 @@
           NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
   /**
-   * GstGioSrc:file
+   * GstGioSrc:file:
    * 
    * %GFile to read from.
-   * 
-   * Since: 0.10.20
-   **/
+   */
   g_object_class_install_property (gobject_class, PROP_FILE,
       g_param_spec_object ("file", "File", "GFile to read from",
           G_TYPE_FILE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
diff --git a/gst/playback/Makefile.in b/gst/playback/Makefile.in
index de91a8e..865fe29 100644
--- a/gst/playback/Makefile.in
+++ b/gst/playback/Makefile.in
@@ -88,7 +88,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -439,9 +438,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/gst/playback/gstdecodebin2.c b/gst/playback/gstdecodebin2.c
index ea8908d..2789a14 100644
--- a/gst/playback/gstdecodebin2.c
+++ b/gst/playback/gstdecodebin2.c
@@ -233,10 +233,11 @@
 #define AUTO_PREROLL_NOT_SEEKABLE_SIZE_TIME      10 * GST_SECOND
 #define AUTO_PREROLL_SEEKABLE_SIZE_TIME          0
 
-/* whan playing, keep a max of 2MB of data but try to keep the number of buffers
+/* when playing, keep a max of 2MB of data but try to keep the number of buffers
  * as low as possible (try to aim for 5 buffers) */
 #define AUTO_PLAY_SIZE_BYTES        2 * 1024 * 1024
 #define AUTO_PLAY_SIZE_BUFFERS      5
+#define AUTO_PLAY_ADAPTIVE_SIZE_BUFFERS 2
 #define AUTO_PLAY_SIZE_TIME         0
 
 #define DEFAULT_SUBTITLE_ENCODING NULL
@@ -282,7 +283,8 @@
     GstCaps * caps, GstDecodeBin * decode_bin);
 
 static void decodebin_set_queue_size (GstDecodeBin * dbin,
-    GstElement * multiqueue, gboolean preroll, gboolean seekable);
+    GstElement * multiqueue, gboolean preroll, gboolean seekable,
+    gboolean adaptive_streaming);
 
 static gboolean gst_decode_bin_autoplug_continue (GstElement * element,
     GstPad * pad, GstCaps * caps);
@@ -416,6 +418,7 @@
 
   gboolean drained;             /* TRUE if the all children are drained */
   gboolean demuxer;             /* TRUE if elements->data is a demuxer */
+  gboolean adaptive_demuxer;    /* TRUE if elements->data is an adaptive streaming demuxer */
   gboolean seekable;            /* TRUE if this chain ends on a demuxer and is seekable */
   GList *elements;              /* All elements in this group, first
                                    is the latest and most downstream element */
@@ -611,6 +614,13 @@
   if (!(ihint->run_type & G_SIGNAL_RUN_CLEANUP))
     g_value_set_enum (return_accu, res);
 
+  /* Call the next handler in the chain (if any) when the current callback
+   * returns TRY. This makes it possible to register separate autoplug-select
+   * handlers that implement different TRY/EXPOSE/SKIP strategies.
+   */
+  if (res == GST_AUTOPLUG_SELECT_TRY)
+    return TRUE;
+
   return FALSE;
 }
 
@@ -778,9 +788,11 @@
    * next factory.
    *
    * <note>
-   *   Only the signal handler that is connected first will ever by invoked.
-   *   Don't connect signal handlers with the #G_CONNECT_AFTER flag to this
-   *   signal, they will never be invoked!
+   *   The signal handler will not be invoked if any of the previously
+   *   registered signal handlers (if any) return a value other than
+   *   GST_AUTOPLUG_SELECT_TRY. Which also means that if you return
+   *   GST_AUTOPLUG_SELECT_TRY from one signal handler, handlers that get
+   *   registered next (again, if any) can override that decision.
    * </note>
    *
    * Returns: a #GST_TYPE_AUTOPLUG_SELECT_RESULT that indicates the required
@@ -822,8 +834,6 @@
    * @bin: The decodebin
    *
    * This signal is emitted once decodebin has finished decoding all the data.
-   *
-   * Since: 0.10.16
    */
   gst_decode_bin_signals[SIGNAL_DRAINED] =
       g_signal_new ("drained", G_TYPE_FROM_CLASS (klass),
@@ -852,8 +862,6 @@
    *
    * Activate buffering in decodebin. This will instruct the multiqueues behind
    * decoders to emit BUFFERING messages.
-
-   * Since: 0.10.26
    */
   g_object_class_install_property (gobject_klass, PROP_USE_BUFFERING,
       g_param_spec_boolean ("use-buffering", "Use Buffering",
@@ -864,8 +872,6 @@
    * GstDecodeBin:low-percent
    *
    * Low threshold percent for buffering to start.
-   *
-   * Since: 0.10.26
    */
   g_object_class_install_property (gobject_klass, PROP_LOW_PERCENT,
       g_param_spec_int ("low-percent", "Low percent",
@@ -875,8 +881,6 @@
    * GstDecodeBin:high-percent
    *
    * High threshold percent for buffering to finish.
-   *
-   * Since: 0.10.26
    */
   g_object_class_install_property (gobject_klass, PROP_HIGH_PERCENT,
       g_param_spec_int ("high-percent", "High percent",
@@ -887,8 +891,6 @@
    * GstDecodeBin:max-size-bytes
    *
    * Max amount of bytes in the queue (0=automatic).
-   *
-   * Since: 0.10.26
    */
   g_object_class_install_property (gobject_klass, PROP_MAX_SIZE_BYTES,
       g_param_spec_uint ("max-size-bytes", "Max. size (bytes)",
@@ -899,8 +901,6 @@
    * GstDecodeBin:max-size-buffers
    *
    * Max amount of buffers in the queue (0=automatic).
-   *
-   * Since: 0.10.26
    */
   g_object_class_install_property (gobject_klass, PROP_MAX_SIZE_BUFFERS,
       g_param_spec_uint ("max-size-buffers", "Max. size (buffers)",
@@ -911,8 +911,6 @@
    * GstDecodeBin:max-size-time
    *
    * Max amount of time in the queue (in ns, 0=automatic).
-   *
-   * Since: 0.10.26
    */
   g_object_class_install_property (gobject_klass, PROP_MAX_SIZE_TIME,
       g_param_spec_uint64 ("max-size-time", "Max. size (ns)",
@@ -924,8 +922,6 @@
    * GstDecodeBin::post-stream-topology
    *
    * Post stream-topology messages on the bus every time the topology changes.
-   *
-   * Since: 0.10.26
    */
   g_object_class_install_property (gobject_klass, PROP_POST_STREAM_TOPOLOGY,
       g_param_spec_boolean ("post-stream-topology", "Post Stream Topology",
@@ -942,8 +938,6 @@
    * caps (see 'caps' property) will have a pad exposed. Streams that do not
    * match those caps but could have been decoded will not have decoder plugged
    * in internally and will not have a pad exposed.
-   *
-   * Since: 0.10.30
    */
   g_object_class_install_property (gobject_klass, PROP_EXPOSE_ALL_STREAMS,
       g_param_spec_boolean ("expose-all-streams", "Expose All Streams",
@@ -955,8 +949,6 @@
    * GstDecodeBin2::connection-speed
    *
    * Network connection speed in kbps (0 = unknownw)
-   *
-   * Since: 0.10.XX
    */
   g_object_class_install_property (gobject_klass, PROP_CONNECTION_SPEED,
       g_param_spec_uint64 ("connection-speed", "Connection Speed",
@@ -1421,6 +1413,7 @@
 
 static gboolean are_final_caps (GstDecodeBin * dbin, GstCaps * caps);
 static gboolean is_demuxer_element (GstElement * srcelement);
+static gboolean is_adaptive_demuxer_element (GstElement * srcelement);
 
 static gboolean connect_pad (GstDecodeBin * dbin, GstElement * src,
     GstDecodePad * dpad, GstPad * pad, GstCaps * caps, GValueArray * factories,
@@ -1512,6 +1505,7 @@
   if (chain->demuxer) {
     GstDecodeGroup *group;
     GstDecodeChain *oldchain = chain;
+    GstDecodeElement *demux = (chain->elements ? chain->elements->data : NULL);
 
     if (chain->current_pad)
       gst_object_unref (chain->current_pad);
@@ -1530,6 +1524,12 @@
       GST_WARNING_OBJECT (dbin, "No current group");
       return;
     }
+
+    /* If this is not a dynamic pad demuxer, we're no-more-pads
+     * already before anything else happens
+     */
+    if (demux == NULL || !demux->no_more_pads_id)
+      group->no_more_pads = TRUE;
   }
 
   if ((caps == NULL) || gst_caps_is_empty (caps))
@@ -2003,6 +2003,15 @@
           break;
         }
       }
+
+      if (!skip && chain->parent && chain->parent->parent) {
+        GstDecodeChain *parent_chain = chain->parent->parent;
+        GstDecodeElement *pelem =
+            parent_chain->elements ? parent_chain->elements->data : NULL;
+
+        if (pelem && gst_element_get_factory (pelem->element) == factory)
+          skip = TRUE;
+      }
       CHAIN_MUTEX_UNLOCK (chain);
       if (skip) {
         GST_DEBUG_OBJECT (dbin,
@@ -2114,6 +2123,27 @@
     delem->capsfilter = NULL;
     chain->elements = g_list_prepend (chain->elements, delem);
     chain->demuxer = is_demuxer_element (element);
+    chain->adaptive_demuxer = is_adaptive_demuxer_element (element);
+
+    /* For adaptive streaming demuxer we insert a multiqueue after
+     * this demuxer. This multiqueue will get one fragment per buffer.
+     * Now for the case where we have a container stream inside these
+     * buffers, another demuxer will be plugged and after this second
+     * demuxer there will be a second multiqueue. This second multiqueue
+     * will get smaller buffers and will be the one emitting buffering
+     * messages.
+     * If we don't have a container stream inside the fragment buffers,
+     * we'll insert a multiqueue below right after the next element after
+     * the adaptive streaming demuxer. This is going to be a parser or
+     * decoder, and will output smaller buffers.
+     */
+    if (chain->parent && chain->parent->parent) {
+      GstDecodeChain *parent_chain = chain->parent->parent;
+
+      if (parent_chain->adaptive_demuxer)
+        chain->demuxer = TRUE;
+    }
+
     CHAIN_MUTEX_UNLOCK (chain);
 
     /* Set connection-speed property if needed */
@@ -2628,12 +2658,6 @@
   GST_DEBUG_OBJECT (element, "Setting group %p to complete", group);
 
   group->no_more_pads = TRUE;
-  /* this group has prerolled enough to not need more pads,
-   * we can probably set its buffering state to playing now */
-  GST_DEBUG_OBJECT (group->dbin, "Setting group %p multiqueue to "
-      "'playing' buffering mode", group);
-  decodebin_set_queue_size (group->dbin, group->multiqueue, FALSE,
-      (group->parent ? group->parent->seekable : TRUE));
   CHAIN_MUTEX_UNLOCK (chain);
 
   EXPOSE_LOCK (chain->dbin);
@@ -2722,6 +2746,23 @@
   return TRUE;
 }
 
+static gboolean
+is_adaptive_demuxer_element (GstElement * srcelement)
+{
+  GstElementFactory *srcfactory;
+  const gchar *klass;
+
+  srcfactory = gst_element_get_factory (srcelement);
+  klass =
+      gst_element_factory_get_metadata (srcfactory, GST_ELEMENT_METADATA_KLASS);
+
+  /* Can't be a demuxer unless it has Demux in the klass name */
+  if (!strstr (klass, "Demux") || !strstr (klass, "Adaptive"))
+    return FALSE;
+
+  return TRUE;
+}
+
 /* Returns TRUE if the caps are compatible with the caps specified in the 'caps'
  * property (which by default are the raw caps)
  *
@@ -3030,12 +3071,6 @@
       queue);
 
   group->overrun = TRUE;
-  /* this group has prerolled enough to not need more pads,
-   * we can probably set its buffering state to playing now */
-  GST_DEBUG_OBJECT (group->dbin, "Setting group %p multiqueue to "
-      "'playing' buffering mode", group);
-  decodebin_set_queue_size (group->dbin, group->multiqueue, FALSE,
-      (group->parent ? group->parent->seekable : TRUE));
 
   /* FIXME: We should make sure that everything gets exposed now
    * even if child chains are not complete because the will never
@@ -3141,7 +3176,7 @@
  * playing or prerolling. */
 static void
 decodebin_set_queue_size (GstDecodeBin * dbin, GstElement * multiqueue,
-    gboolean preroll, gboolean seekable)
+    gboolean preroll, gboolean seekable, gboolean adaptive_streaming)
 {
   guint max_bytes, max_buffers;
   guint64 max_time;
@@ -3155,13 +3190,25 @@
   if (preroll || use_buffering) {
     /* takes queue limits, initially we only queue up up to the max bytes limit,
      * with a default of 2MB. we use the same values for buffering mode. */
-    if ((max_bytes = dbin->max_size_bytes) == 0)
+    if (preroll || (max_bytes = dbin->max_size_bytes) == 0)
       max_bytes = AUTO_PREROLL_SIZE_BYTES;
-    if ((max_buffers = dbin->max_size_buffers) == 0)
+    if (preroll || (max_buffers = dbin->max_size_buffers) == 0)
       max_buffers = AUTO_PREROLL_SIZE_BUFFERS;
-    if ((max_time = dbin->max_size_time) == 0)
-      max_time = seekable ? AUTO_PREROLL_SEEKABLE_SIZE_TIME :
-          AUTO_PREROLL_NOT_SEEKABLE_SIZE_TIME;
+    if (preroll || (max_time = dbin->max_size_time) == 0) {
+      if (dbin->use_buffering && !preroll)
+        max_time = 5 * GST_SECOND;
+      else
+        max_time = seekable ? AUTO_PREROLL_SEEKABLE_SIZE_TIME :
+            AUTO_PREROLL_NOT_SEEKABLE_SIZE_TIME;
+    }
+  } else if (adaptive_streaming && dbin->use_buffering) {
+    /* If we're doing adaptive streaming and this is *not*
+     * the multiqueue doing the buffering messages, we only
+     * want a buffers limit here
+     */
+    max_buffers = AUTO_PLAY_ADAPTIVE_SIZE_BUFFERS;
+    max_time = 0;
+    max_bytes = 0;
   } else {
     /* update runtime limits. At runtime, we try to keep the amount of buffers
      * in the queues as low as possible (but at least 5 buffers). */
@@ -3169,6 +3216,9 @@
       max_bytes = 0;
     else if ((max_bytes = dbin->max_size_bytes) == 0)
       max_bytes = AUTO_PLAY_SIZE_BYTES;
+    /* if we're after an adaptive streaming demuxer keep
+     * a lower number of buffers as they are usually very
+     * large */
     if ((max_buffers = dbin->max_size_buffers) == 0)
       max_buffers = AUTO_PLAY_SIZE_BUFFERS;
     /* this is a multiqueue with disabled buffering, don't limit max_time */
@@ -3209,14 +3259,6 @@
   if (G_UNLIKELY (!group->multiqueue))
     goto missing_multiqueue;
 
-  /* default is for use-buffering is FALSE */
-  if (dbin->use_buffering) {
-    g_object_set (mq,
-        "use-buffering", TRUE,
-        "low-percent", dbin->low_percent,
-        "high-percent", dbin->high_percent, NULL);
-  }
-
   /* configure queue sizes for preroll */
   seekable = FALSE;
   if (parent && parent->demuxer) {
@@ -3228,7 +3270,8 @@
       gst_object_unref (pad);
     }
   }
-  decodebin_set_queue_size (dbin, mq, TRUE, seekable);
+  decodebin_set_queue_size (dbin, mq, TRUE, seekable,
+      (parent ? parent->adaptive_demuxer : FALSE));
 
   group->overrunsig = g_signal_connect (mq, "overrun",
       G_CALLBACK (multi_queue_overrun_cb), group);
@@ -3638,9 +3681,13 @@
     /* all chains are buffering already, no need to do it here */
     g_object_set (group->multiqueue, "use-buffering", FALSE, NULL);
   } else {
-    g_object_set (group->multiqueue, "use-buffering", TRUE, NULL);
+    g_object_set (group->multiqueue, "use-buffering", TRUE,
+        "low-percent", group->dbin->low_percent,
+        "high-percent", group->dbin->high_percent, NULL);
   }
-  decodebin_set_queue_size (group->dbin, group->multiqueue, FALSE, FALSE);
+  decodebin_set_queue_size (group->dbin, group->multiqueue, FALSE,
+      (group->parent ? group->parent->seekable : TRUE),
+      (group->parent ? group->parent->adaptive_demuxer : FALSE));
 
   GST_DEBUG_OBJECT (group->dbin, "Setting %s buffering to %d",
       GST_ELEMENT_NAME (group->multiqueue), !ret);
@@ -4063,9 +4110,6 @@
 
   dbin = group->dbin;
 
-  /* configure queues for playback */
-  decodebin_set_queue_size (dbin, group->multiqueue, FALSE, TRUE);
-
   /* we can now disconnect any overrun signal, which is used to expose the
    * group. */
   if (group->overrunsig) {
diff --git a/gst/playback/gstplay-enum.c b/gst/playback/gstplay-enum.c
index 4c4861f..dd8afd7 100644
--- a/gst/playback/gstplay-enum.c
+++ b/gst/playback/gstplay-enum.c
@@ -67,6 +67,8 @@
         "deinterlace"},
     {C_FLAGS (GST_PLAY_FLAG_SOFT_COLORBALANCE), "Use software color balance",
         "soft-colorbalance"},
+    {C_FLAGS (GST_PLAY_FLAG_FORCE_FILTERS),
+        "Force audio/video filter(s) to be applied", "force-filters"},
     {0, NULL, NULL}
   };
   static volatile GType id = 0;
diff --git a/gst/playback/gstplay-enum.h b/gst/playback/gstplay-enum.h
index f6ab5d9..0c75b53 100644
--- a/gst/playback/gstplay-enum.h
+++ b/gst/playback/gstplay-enum.h
@@ -57,6 +57,8 @@
  *   formats.
  * @GST_PLAY_FLAG_BUFFERING: enable buffering of the demuxed or parsed data.
  * @GST_PLAY_FLAG_DEINTERLACE: deinterlace raw video (if native not forced).
+ * @GST_PLAY_FLAG_FORCE_FILTERS: force audio/video filters to be applied if
+ *   set.
  *
  * Extra flags to configure the behaviour of the sinks.
  */
@@ -71,7 +73,8 @@
   GST_PLAY_FLAG_DOWNLOAD      = (1 << 7),
   GST_PLAY_FLAG_BUFFERING     = (1 << 8),
   GST_PLAY_FLAG_DEINTERLACE   = (1 << 9),
-  GST_PLAY_FLAG_SOFT_COLORBALANCE = (1 << 10)
+  GST_PLAY_FLAG_SOFT_COLORBALANCE = (1 << 10),
+  GST_PLAY_FLAG_FORCE_FILTERS = (1 << 11),
 } GstPlayFlags;
 
 #define GST_TYPE_PLAY_FLAGS (gst_play_flags_get_type())
diff --git a/gst/playback/gstplaybin2.c b/gst/playback/gstplaybin2.c
index b617d39..8fed37f 100644
--- a/gst/playback/gstplaybin2.c
+++ b/gst/playback/gstplaybin2.c
@@ -149,8 +149,7 @@
  * value that shows the progress of the buffering process. Applications need
  * to set playbin to PLAYING or PAUSED state in response to these messages.
  * They may also want to convey the buffering progress to the user in some
- * way. Here is how to extract the percentage information from the message
- * (requires GStreamer >= 0.10.11):
+ * way. Here is how to extract the percentage information from the message:
  * |[
  * switch (GST_MESSAGE_TYPE (msg)) {
  *   case GST_MESSAGE_BUFFERING: {
@@ -566,6 +565,8 @@
   PROP_AV_OFFSET,
   PROP_RING_BUFFER_MAX_SIZE,
   PROP_FORCE_ASPECT_RATIO,
+  PROP_AUDIO_FILTER,
+  PROP_VIDEO_FILTER,
   PROP_LAST
 };
 
@@ -590,8 +591,8 @@
   LAST_SIGNAL
 };
 
-static GstStaticCaps raw_audio_caps = GST_STATIC_CAPS ("audio/x-raw");
-static GstStaticCaps raw_video_caps = GST_STATIC_CAPS ("video/x-raw");
+static GstStaticCaps raw_audio_caps = GST_STATIC_CAPS ("audio/x-raw(ANY)");
+static GstStaticCaps raw_video_caps = GST_STATIC_CAPS ("video/x-raw(ANY)");
 
 static void gst_play_bin_class_init (GstPlayBinClass * klass);
 static void gst_play_bin_init (GstPlayBin * playbin);
@@ -838,6 +839,14 @@
           "ISO-8859-15 will be assumed.", NULL,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
+  g_object_class_install_property (gobject_klass, PROP_VIDEO_FILTER,
+      g_param_spec_object ("video-filter", "Video filter",
+          "the video filter(s) to apply, if possible",
+          GST_TYPE_ELEMENT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_klass, PROP_AUDIO_FILTER,
+      g_param_spec_object ("audio-filter", "Audio filter",
+          "the audio filter(s) to apply, if possible",
+          GST_TYPE_ELEMENT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
   g_object_class_install_property (gobject_klass, PROP_VIDEO_SINK,
       g_param_spec_object ("video-sink", "Video Sink",
           "the video output element to use (NULL = default sink)",
@@ -942,8 +951,6 @@
    * Control the synchronisation offset between the audio and video streams.
    * Positive values make the audio ahead of the video and negative values make
    * the audio go behind the video.
-   *
-   * Since: 0.10.30
    */
   g_object_class_install_property (gobject_klass, PROP_AV_OFFSET,
       g_param_spec_int64 ("av-offset", "AV Offset",
@@ -956,8 +963,6 @@
    *
    * The maximum size of the ring buffer in bytes. If set to 0, the ring
    * buffer is disabled. Default 0.
-   *
-   * Since: 0.10.31
    */
   g_object_class_install_property (gobject_klass, PROP_RING_BUFFER_MAX_SIZE,
       g_param_spec_uint64 ("ring-buffer-max-size",
@@ -970,8 +975,6 @@
    * GstPlayBin::force-aspect-ratio:
    *
    * Requests the video sink to enforce the video display aspect ratio.
-   *
-   * Since: 0.10.37
    */
   g_object_class_install_property (gobject_klass, PROP_FORCE_ASPECT_RATIO,
       g_param_spec_boolean ("force-aspect-ratio", "Force Aspect Ratio",
@@ -1059,8 +1062,6 @@
    * This signal may be emitted from the context of a GStreamer streaming thread.
    * You can use gst_message_new_application() and gst_element_post_message()
    * to notify your application's main thread.
-   *
-   * Since: 0.10.24
    */
   gst_play_bin_signals[SIGNAL_VIDEO_TAGS_CHANGED] =
       g_signal_new ("video-tags-changed", G_TYPE_FROM_CLASS (klass),
@@ -1079,8 +1080,6 @@
    * This signal may be emitted from the context of a GStreamer streaming thread.
    * You can use gst_message_new_application() and gst_element_post_message()
    * to notify your application's main thread.
-   *
-   * Since: 0.10.24
    */
   gst_play_bin_signals[SIGNAL_AUDIO_TAGS_CHANGED] =
       g_signal_new ("audio-tags-changed", G_TYPE_FROM_CLASS (klass),
@@ -1099,8 +1098,6 @@
    * This signal may be emitted from the context of a GStreamer streaming thread.
    * You can use gst_message_new_application() and gst_element_post_message()
    * to notify your application's main thread.
-   *
-   * Since: 0.10.24
    */
   gst_play_bin_signals[SIGNAL_TEXT_TAGS_CHANGED] =
       g_signal_new ("text-tags-changed", G_TYPE_FROM_CLASS (klass),
@@ -1121,8 +1118,6 @@
    *
    * This signal is usually emitted from the context of a GStreamer streaming
    * thread.
-   *
-   * Since: 0.10.33
    */
   gst_play_bin_signals[SIGNAL_SOURCE_SETUP] =
       g_signal_new ("source-setup", G_TYPE_FROM_CLASS (klass),
@@ -2023,6 +2018,20 @@
     gst_iterator_free (it);
 }
 
+
+static GstPadProbeReturn
+block_serialized_data_cb (GstPad * pad, GstPadProbeInfo * info,
+    gpointer user_data)
+{
+  if (GST_IS_EVENT (info->data) && !GST_EVENT_IS_SERIALIZED (info->data)) {
+    GST_DEBUG_OBJECT (pad, "Letting non-serialized event %s pass",
+        GST_EVENT_TYPE_NAME (info->data));
+    return GST_PAD_PROBE_PASS;
+  }
+
+  return GST_PAD_PROBE_OK;
+}
+
 static void
 gst_play_bin_suburidecodebin_block (GstSourceGroup * group,
     GstElement * suburidecodebin, gboolean block)
@@ -2044,7 +2053,7 @@
         if (block) {
           group->block_id =
               gst_pad_add_probe (sinkpad, GST_PAD_PROBE_TYPE_BLOCK_DOWNSTREAM,
-              NULL, NULL, NULL);
+              block_serialized_data_cb, NULL, NULL);
         } else if (group->block_id) {
           gst_pad_remove_probe (sinkpad, group->block_id);
           group->block_id = 0;
@@ -2267,6 +2276,14 @@
     case PROP_SUBTITLE_ENCODING:
       gst_play_bin_set_encoding (playbin, g_value_get_string (value));
       break;
+    case PROP_VIDEO_FILTER:
+      gst_play_sink_set_filter (playbin->playsink, GST_PLAY_SINK_TYPE_VIDEO,
+          GST_ELEMENT (g_value_get_object (value)));
+      break;
+    case PROP_AUDIO_FILTER:
+      gst_play_sink_set_filter (playbin->playsink, GST_PLAY_SINK_TYPE_AUDIO,
+          GST_ELEMENT (g_value_get_object (value)));
+      break;
     case PROP_VIDEO_SINK:
       gst_play_bin_set_sink (playbin, GST_PLAY_SINK_TYPE_VIDEO, "video",
           &playbin->video_sink, g_value_get_object (value));
@@ -2484,6 +2501,16 @@
           gst_play_sink_get_subtitle_encoding (playbin->playsink));
       GST_PLAY_BIN_UNLOCK (playbin);
       break;
+    case PROP_VIDEO_FILTER:
+      g_value_take_object (value,
+          gst_play_sink_get_filter (playbin->playsink,
+              GST_PLAY_SINK_TYPE_VIDEO));
+      break;
+    case PROP_AUDIO_FILTER:
+      g_value_take_object (value,
+          gst_play_sink_get_filter (playbin->playsink,
+              GST_PLAY_SINK_TYPE_AUDIO));
+      break;
     case PROP_VIDEO_SINK:
       g_value_take_object (value,
           gst_play_bin_get_current_sink (playbin, &playbin->video_sink,
@@ -2702,7 +2729,7 @@
     /* Ignore async state changes from the uridecodebin children,
      * see bug #602000. */
     group = playbin->curr_group;
-    if (src && (group = playbin->curr_group) &&
+    if (src && group &&
         ((group->uridecodebin && src == GST_OBJECT_CAST (group->uridecodebin))
             || (group->suburidecodebin
                 && src == GST_OBJECT_CAST (group->suburidecodebin)))) {
@@ -3113,7 +3140,7 @@
     GST_DEBUG_OBJECT (playbin, "blocking %" GST_PTR_FORMAT, combine->srcpad);
     combine->block_id =
         gst_pad_add_probe (combine->srcpad, GST_PAD_PROBE_TYPE_BLOCK_DOWNSTREAM,
-        NULL, NULL, NULL);
+        block_serialized_data_cb, NULL, NULL);
   }
 
   /* get sinkpad for the new stream */
@@ -3777,7 +3804,7 @@
   }
 
   /* create a list of audio/video elements. Each element in the list
-   * is holding an audio/video decoder and an auido/video sink in which
+   * is holding an audio/video decoder and an audio/video sink in which
    * the decoders srcpad template caps and sink element's sinkpad template
    * caps are compatible */
   dl = dec_list;
@@ -4580,6 +4607,15 @@
   return GST_AUTOPLUG_SELECT_EXPOSE;
 }
 
+#define GST_PLAY_BIN_FILTER_CAPS(filter,caps) G_STMT_START {                  \
+  if ((filter)) {                                                             \
+    GstCaps *intersection =                                                   \
+        gst_caps_intersect_full ((filter), (caps), GST_CAPS_INTERSECT_FIRST); \
+    gst_caps_unref ((caps));                                                  \
+    (caps) = intersection;                                                    \
+  }                                                                           \
+} G_STMT_END
+
 static gboolean
 autoplug_query_caps (GstElement * uridecodebin, GstPad * pad,
     GstElement * element, GstQuery * query, GstSourceGroup * group)
@@ -4684,6 +4720,7 @@
       have_sink = TRUE;
     } else {
       GstCaps *subcaps = gst_subtitle_overlay_create_factory_caps ();
+      GST_PLAY_BIN_FILTER_CAPS (filter, subcaps);
       if (!result)
         result = subcaps;
       else
@@ -4715,6 +4752,7 @@
         templ_caps = gst_static_pad_template_get_caps (l->data);
 
         if (!gst_caps_is_any (templ_caps)) {
+          GST_PLAY_BIN_FILTER_CAPS (filter, templ_caps);
           if (!result)
             result = templ_caps;
           else
@@ -4742,17 +4780,13 @@
     GstPad *target = gst_ghost_pad_get_target (GST_GHOST_PAD (pad));
 
     if (target) {
-      result = gst_caps_merge (result, gst_pad_get_pad_template_caps (target));
+      GstCaps *target_caps = gst_pad_get_pad_template_caps (target);
+      GST_PLAY_BIN_FILTER_CAPS (filter, target_caps);
+      result = gst_caps_merge (result, target_caps);
       gst_object_unref (target);
     }
   }
 
-  if (filter) {
-    GstCaps *intersection =
-        gst_caps_intersect_full (filter, result, GST_CAPS_INTERSECT_FIRST);
-    gst_caps_unref (result);
-    result = intersection;
-  }
 
   gst_query_set_caps_result (query, result);
   gst_caps_unref (result);
diff --git a/gst/playback/gstplaysink.c b/gst/playback/gstplaysink.c
index 2dc13a2..c032a58 100644
--- a/gst/playback/gstplaysink.c
+++ b/gst/playback/gstplaysink.c
@@ -99,6 +99,7 @@
   GstPlayChain chain;
   GstPad *sinkpad;
   GstElement *queue;
+  GstElement *filter;
   GstElement *conv;
   GstElement *volume;           /* element with the volume property */
   gboolean sink_volume;         /* if the volume was provided by the sink */
@@ -122,6 +123,7 @@
   GstPlayChain chain;
   GstPad *sinkpad;
   GstElement *queue;
+  GstElement *filter;
   GstElement *conv;
   GstElement *sink;
   gboolean async;
@@ -237,6 +239,8 @@
   /* properties */
   GstElement *audio_sink;
   GstElement *video_sink;
+  GstElement *audio_filter;
+  GstElement *video_filter;
   GstElement *visualisation;
   GstElement *text_sink;
   gdouble volume;
@@ -338,6 +342,8 @@
   PROP_TEXT_SINK,
   PROP_SEND_EVENT_MODE,
   PROP_FORCE_ASPECT_RATIO,
+  PROP_VIDEO_FILTER,
+  PROP_AUDIO_FILTER,
   PROP_LAST
 };
 
@@ -503,8 +509,6 @@
    * Control the synchronisation offset between the audio and video streams.
    * Positive values make the audio ahead of the video and negative values make
    * the audio go behind the video.
-   *
-   * Since: 0.10.30
    */
   g_object_class_install_property (gobject_klass, PROP_AV_OFFSET,
       g_param_spec_int64 ("av-offset", "AV Offset",
@@ -513,12 +517,33 @@
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
   /**
+   * GstPlaySink:video-filter:
+   *
+   * Set the video filter element/bin to use. Will apply on a best-effort basis
+   * unless GST_PLAY_FLAG_FORCE_FILTERS is set. playsink must be in
+   * %GST_STATE_NULL
+   */
+  g_object_class_install_property (gobject_klass, PROP_VIDEO_SINK,
+      g_param_spec_object ("video-filter", "Video filter",
+          "the video filter(s) to apply, if possible",
+          GST_TYPE_ELEMENT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  /**
+   * GstPlaySink:audio-filter:
+   *
+   * Set the audio filter element/bin to use. Will apply on a best-effort basis
+   * unless GST_PLAY_FLAG_FORCE_FILTERS is set. playsink must be in
+   * %GST_STATE_NULL
+   */
+  g_object_class_install_property (gobject_klass, PROP_AUDIO_FILTER,
+      g_param_spec_object ("audio-filter", "Audio filter",
+          "the audio filter(s) to apply, if possible",
+          GST_TYPE_ELEMENT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  /**
    * GstPlaySink:video-sink:
    *
    * Set the used video sink element. NULL will use the default sink. playsink
    * must be in %GST_STATE_NULL
-   *
-   * Since: 0.10.36
    */
   g_object_class_install_property (gobject_klass, PROP_VIDEO_SINK,
       g_param_spec_object ("video-sink", "Video Sink",
@@ -529,8 +554,6 @@
    *
    * Set the used audio sink element. NULL will use the default sink. playsink
    * must be in %GST_STATE_NULL
-   *
-   * Since: 0.10.36
    */
   g_object_class_install_property (gobject_klass, PROP_AUDIO_SINK,
       g_param_spec_object ("audio-sink", "Audio Sink",
@@ -542,8 +565,6 @@
    *
    * Set the used text sink element. NULL will use the default sink. playsink
    * must be in %GST_STATE_NULL
-   *
-   * Since: 0.10.36
    */
   g_object_class_install_property (gobject_klass, PROP_TEXT_SINK,
       g_param_spec_object ("text-sink", "Text sink",
@@ -556,8 +577,6 @@
    * Sets the handling method used for events received from send_event
    * function. The default is %MODE_DEFAULT, that uses %GstBin's default
    * handling (push the event to all internal sinks).
-   *
-   * Since: 0.10.37
    */
   g_object_class_install_property (gobject_klass, PROP_SEND_EVENT_MODE,
       g_param_spec_enum ("send-event-mode", "Send event mode",
@@ -569,8 +588,6 @@
    * GstPlaySink::force-aspect-ratio:
    *
    * Requests the video sink to enforce the video display aspect ratio.
-   *
-   * Since: 0.10.37
    */
   g_object_class_install_property (gobject_klass, PROP_FORCE_ASPECT_RATIO,
       g_param_spec_boolean ("force-aspect-ratio", "Force Aspect Ratio",
@@ -732,6 +749,16 @@
 
   playsink = GST_PLAY_SINK (object);
 
+  if (playsink->audio_filter != NULL) {
+    gst_element_set_state (playsink->audio_filter, GST_STATE_NULL);
+    gst_object_unref (playsink->audio_filter);
+    playsink->audio_filter = NULL;
+  }
+  if (playsink->video_filter != NULL) {
+    gst_element_set_state (playsink->video_filter, GST_STATE_NULL);
+    gst_object_unref (playsink->video_filter);
+    playsink->video_filter = NULL;
+  }
   if (playsink->audio_sink != NULL) {
     gst_element_set_state (playsink->audio_sink, GST_STATE_NULL);
     gst_object_unref (playsink->audio_sink);
@@ -900,6 +927,83 @@
   return result;
 }
 
+void
+gst_play_sink_set_filter (GstPlaySink * playsink, GstPlaySinkType type,
+    GstElement * filter)
+{
+  GstElement **elem = NULL, *old = NULL;
+
+  GST_LOG_OBJECT (playsink,
+      "Setting filter %" GST_PTR_FORMAT " as filter type %d", filter, type);
+
+  GST_PLAY_SINK_LOCK (playsink);
+  switch (type) {
+    case GST_PLAY_SINK_TYPE_AUDIO:
+    case GST_PLAY_SINK_TYPE_AUDIO_RAW:
+      elem = &playsink->audio_filter;
+      break;
+    case GST_PLAY_SINK_TYPE_VIDEO:
+    case GST_PLAY_SINK_TYPE_VIDEO_RAW:
+      elem = &playsink->video_filter;
+      break;
+    default:
+      break;
+  }
+  if (elem) {
+    old = *elem;
+    if (filter)
+      gst_object_ref_sink (filter);
+    *elem = filter;
+  }
+  GST_PLAY_SINK_UNLOCK (playsink);
+
+  if (old) {
+    /* Set the old filter to NULL if it is not used any longer */
+    if (old != filter && !GST_OBJECT_PARENT (old))
+      gst_element_set_state (old, GST_STATE_NULL);
+    gst_object_unref (old);
+  }
+}
+
+GstElement *
+gst_play_sink_get_filter (GstPlaySink * playsink, GstPlaySinkType type)
+{
+  GstElement *result = NULL;
+  GstElement *elem = NULL, *chainp = NULL;
+
+  GST_PLAY_SINK_LOCK (playsink);
+  switch (type) {
+    case GST_PLAY_SINK_TYPE_AUDIO_RAW:
+    {
+      GstPlayAudioChain *chain;
+      if ((chain = (GstPlayAudioChain *) playsink->audiochain))
+        chainp = chain->filter;
+      elem = playsink->audio_filter;
+      break;
+    }
+    case GST_PLAY_SINK_TYPE_VIDEO_RAW:
+    {
+      GstPlayVideoChain *chain;
+      if ((chain = (GstPlayVideoChain *) playsink->videochain))
+        chainp = chain->filter;
+      elem = playsink->video_filter;
+      break;
+    }
+    default:
+      break;
+  }
+  if (chainp) {
+    /* we have an active chain with a filter, get the filter */
+    result = gst_object_ref (chainp);
+  }
+  /* nothing found, return last configured filter */
+  if (result == NULL && elem)
+    result = gst_object_ref (elem);
+  GST_PLAY_SINK_UNLOCK (playsink);
+
+  return result;
+}
+
 static GstPadProbeReturn
 gst_play_sink_vis_blocked (GstPad * tee_pad, GstPadProbeInfo * info,
     gpointer user_data)
@@ -909,6 +1013,12 @@
 
   playsink = GST_PLAY_SINK (user_data);
 
+  if (GST_IS_EVENT (info->data) && !GST_EVENT_IS_SERIALIZED (info->data)) {
+    GST_DEBUG_OBJECT (playsink, "Letting non-serialized event %s pass",
+        GST_EVENT_TYPE_NAME (info->data));
+    return GST_PAD_PROBE_PASS;
+  }
+
   GST_PLAY_SINK_LOCK (playsink);
   GST_DEBUG_OBJECT (playsink, "vis pad blocked");
   /* now try to change the plugin in the running vis chain */
@@ -1583,14 +1693,14 @@
 /* make the element (bin) that contains the elements needed to perform
  * video display.
  *
- *  +------------------------------------------------------------+
- *  | vbin                                                       |
- *  |      +-------+   +----------+   +----------+   +---------+ |
- *  |      | queue |   |colorspace|   |videoscale|   |videosink| |
- *  |   +-sink    src-sink       src-sink       src-sink       | |
- *  |   |  +-------+   +----------+   +----------+   +---------+ |
- * sink-+                                                        |
- *  +------------------------------------------------------------+
+ *  +------------------------------------------------------------------------+
+ *  | vbin                                                                   |
+ *  |      +--------+  +-------+   +----------+   +----------+   +---------+ |
+ *  |      | filter |  | queue |   |colorspace|   |videoscale|   |videosink| |
+ *  |   +-sink    src-sink    src-sink       src-sink       src-sink       | |
+ *  |   |  +--------+  +-------+   +----------+   +----------+   +---------+ |
+ * sink-+                                                                    |
+ *  +------------------------------------------------------------------------+
  *
  */
 static GstPlayVideoChain *
@@ -1695,6 +1805,28 @@
     }
   }
 
+  head = chain->sink;
+  prev = NULL;
+
+  /* add the video filter first, so everything is working with post-filter
+   * samples */
+  chain->filter = gst_play_sink_get_filter (playsink,
+      GST_PLAY_SINK_TYPE_VIDEO_RAW);
+  if (chain->filter) {
+    if (!raw) {
+      if (playsink->flags & GST_PLAY_FLAG_FORCE_FILTERS) {
+        goto filter_with_nonraw;
+      } else {
+        GST_DEBUG_OBJECT (playsink,
+            "skipping video filter since we're not raw");
+      }
+    } else {
+      GST_DEBUG_OBJECT (playsink, "adding video filter");
+      gst_bin_add (bin, chain->filter);
+      head = prev = chain->filter;
+    }
+  }
+
   /* decouple decoder from sink, this improves playback quite a lot since the
    * decoder can continue while the sink blocks for synchronisation. We don't
    * need a lot of buffers as this consumes a lot of memory and we don't want
@@ -1705,13 +1837,18 @@
     GST_ELEMENT_WARNING (playsink, CORE, MISSING_PLUGIN,
         (_("Missing element '%s' - check your GStreamer installation."),
             "queue"), ("video rendering might be suboptimal"));
-    head = chain->sink;
-    prev = NULL;
   } else {
     g_object_set (G_OBJECT (chain->queue), "max-size-buffers", 3,
         "max-size-bytes", 0, "max-size-time", (gint64) 0, "silent", TRUE, NULL);
     gst_bin_add (bin, chain->queue);
-    head = prev = chain->queue;
+    if (prev) {
+      if (!gst_element_link_pads_full (prev, "src", chain->queue, "sink",
+              GST_PAD_LINK_CHECK_TEMPLATE_CAPS))
+        goto link_failed;
+    } else {
+      head = chain->queue;
+    }
+    prev = chain->queue;
   }
 
   GST_OBJECT_LOCK (playsink);
@@ -1825,13 +1962,21 @@
   {
     GST_ELEMENT_ERROR (playsink, CORE, PAD,
         (NULL), ("Failed to configure the video sink."));
-    /* checking sink made it READY */
-    gst_element_set_state (chain->sink, GST_STATE_NULL);
-    /* Remove chain from the bin to allow reuse later */
-    gst_bin_remove (bin, chain->sink);
-    free_chain ((GstPlayChain *) chain);
-    return NULL;
+    goto cleanup;
   }
+filter_with_nonraw:
+  {
+    GST_ELEMENT_ERROR (playsink, CORE, NEGOTIATION,
+        (NULL), ("Cannot apply video-filter on non-raw stream"));
+    goto cleanup;
+  }
+cleanup:
+  /* checking sink made it READY */
+  gst_element_set_state (chain->sink, GST_STATE_NULL);
+  /* Remove chain from the bin to allow reuse later */
+  gst_bin_remove (bin, chain->sink);
+  free_chain ((GstPlayChain *) chain);
+  return NULL;
 }
 
 static gboolean
@@ -1843,6 +1988,10 @@
 
   chain = playsink->videochain;
 
+  /* if we have a filter, and raw-ness changed, we have to force a rebuild */
+  if (chain->filter && chain->chain.raw != raw)
+    return FALSE;
+
   chain->chain.raw = raw;
 
   /* if the chain was active we don't do anything */
@@ -2456,14 +2605,14 @@
  * We add a tee as the first element so that we can link the visualisation chain
  * to it when requested.
  *
- *  +-------------------------------------------------------------+
- *  | abin                                                        |
- *  |      +---------+   +----------+   +---------+   +---------+ |
- *  |      |audioconv|   |audioscale|   | volume  |   |audiosink| |
- *  |   +-srck      src-sink       src-sink      src-sink       | |
- *  |   |  +---------+   +----------+   +---------+   +---------+ |
- * sink-+                                                         |
- *  +-------------------------------------------------------------+
+ *  +--------------------------------------------------------------+
+ *  | abin                                                         |
+ *  |      +----------+   +--------+   +---------+   +-----------+ |
+ *  |      |  filter  |   | queue  |   | convbin |   | audiosink | |
+ *  |   +-sink       src-sink     src-sink      src-sink         | |
+ *  |   |  +----------+   +--------+   +---------+   +-----------+ |
+ * sink-+                                                          |
+ *  +--------------------------------------------------------------+
  */
 static GstPlayAudioChain *
 gen_audio_chain (GstPlaySink * playsink, gboolean raw)
@@ -2510,6 +2659,28 @@
   gst_object_ref_sink (bin);
   gst_bin_add (bin, chain->sink);
 
+  head = chain->sink;
+  prev = NULL;
+
+  /* add the audio filter first, so everything is working with post-filter
+   * samples */
+  chain->filter = gst_play_sink_get_filter (playsink,
+      GST_PLAY_SINK_TYPE_AUDIO_RAW);
+  if (chain->filter) {
+    if (!raw) {
+      if (playsink->flags & GST_PLAY_FLAG_FORCE_FILTERS) {
+        goto filter_with_nonraw;
+      } else {
+        GST_DEBUG_OBJECT (playsink,
+            "skipping video filter since we're not raw");
+      }
+    } else {
+      GST_DEBUG_OBJECT (playsink, "adding video filter");
+      gst_bin_add (bin, chain->filter);
+      head = prev = chain->filter;
+    }
+  }
+
   /* we have to add a queue when we need to decouple for the video sink in
    * visualisations and for streamsynchronizer */
   GST_DEBUG_OBJECT (playsink, "adding audio queue");
@@ -2519,12 +2690,17 @@
     GST_ELEMENT_WARNING (playsink, CORE, MISSING_PLUGIN,
         (_("Missing element '%s' - check your GStreamer installation."),
             "queue"), ("audio playback and visualizations might not work"));
-    head = chain->sink;
-    prev = NULL;
   } else {
     g_object_set (chain->queue, "silent", TRUE, NULL);
     gst_bin_add (bin, chain->queue);
-    prev = head = chain->queue;
+    if (prev) {
+      if (!gst_element_link_pads_full (prev, "src", chain->queue, "sink",
+              GST_PAD_LINK_CHECK_TEMPLATE_CAPS))
+        goto link_failed;
+    } else {
+      head = chain->queue;
+    }
+    prev = chain->queue;
   }
 
   /* find ts-offset element */
@@ -2694,13 +2870,21 @@
   {
     GST_ELEMENT_ERROR (playsink, CORE, PAD,
         (NULL), ("Failed to configure the audio sink."));
-    /* checking sink made it READY */
-    gst_element_set_state (chain->sink, GST_STATE_NULL);
-    /* Remove chain from the bin to allow reuse later */
-    gst_bin_remove (bin, chain->sink);
-    free_chain ((GstPlayChain *) chain);
-    return NULL;
+    goto cleanup;
   }
+filter_with_nonraw:
+  {
+    GST_ELEMENT_ERROR (playsink, CORE, NEGOTIATION,
+        (NULL), ("Cannot apply video-filter on non-raw stream"));
+    goto cleanup;
+  }
+cleanup:
+  /* checking sink made it READY */
+  gst_element_set_state (chain->sink, GST_STATE_NULL);
+  /* Remove chain from the bin to allow reuse later */
+  gst_bin_remove (bin, chain->sink);
+  free_chain ((GstPlayChain *) chain);
+  return NULL;
 }
 
 static gboolean
@@ -2714,6 +2898,10 @@
   chain = playsink->audiochain;
   conv = GST_PLAY_SINK_AUDIO_CONVERT_CAST (chain->conv);
 
+  /* if we have a filter, and raw-ness changed, we have to force a rebuild */
+  if (chain->filter && chain->chain.raw != raw)
+    return FALSE;
+
   chain->chain.raw = raw;
 
   /* if the chain was active we don't do anything */
@@ -3354,8 +3542,8 @@
         /* unlink the old plugin and unghost the pad */
         gst_pad_unlink (playsink->vischain->vispeerpad,
             playsink->vischain->vissinkpad);
-        gst_ghost_pad_set_target (GST_GHOST_PAD_CAST (playsink->
-                vischain->srcpad), NULL);
+        gst_ghost_pad_set_target (GST_GHOST_PAD_CAST (playsink->vischain->
+                srcpad), NULL);
 
         /* set the old plugin to NULL and remove */
         gst_element_set_state (playsink->vischain->vis, GST_STATE_NULL);
@@ -3377,8 +3565,8 @@
         /* link pads */
         gst_pad_link_full (playsink->vischain->vispeerpad,
             playsink->vischain->vissinkpad, GST_PAD_LINK_CHECK_NOTHING);
-        gst_ghost_pad_set_target (GST_GHOST_PAD_CAST (playsink->
-                vischain->srcpad), playsink->vischain->vissrcpad);
+        gst_ghost_pad_set_target (GST_GHOST_PAD_CAST (playsink->vischain->
+                srcpad), playsink->vischain->vissrcpad);
       } else {
         srcpad =
             gst_element_get_static_pad (playsink->vischain->chain.bin, "src");
@@ -3848,8 +4036,8 @@
             (playsink->video_pad)));
     if (blocked && playsink->video_block_id == 0) {
       if (playsink->vis_pad_block_id)
-        gst_pad_remove_probe (((GstPlayVisChain *) playsink->
-                vischain)->blockpad, playsink->vis_pad_block_id);
+        gst_pad_remove_probe (((GstPlayVisChain *) playsink->vischain)->
+            blockpad, playsink->vis_pad_block_id);
       playsink->vis_pad_block_id = 0;
 
       playsink->video_block_id =
@@ -3875,8 +4063,8 @@
             (playsink->audio_pad)));
     if (blocked && playsink->audio_block_id == 0) {
       if (playsink->vis_pad_block_id)
-        gst_pad_remove_probe (((GstPlayVisChain *) playsink->
-                vischain)->blockpad, playsink->vis_pad_block_id);
+        gst_pad_remove_probe (((GstPlayVisChain *) playsink->vischain)->
+            blockpad, playsink->vis_pad_block_id);
       playsink->vis_pad_block_id = 0;
 
       playsink->audio_block_id =
@@ -3884,8 +4072,8 @@
           sinkpad_blocked_cb, playsink, NULL);
     } else if (!blocked && playsink->audio_block_id) {
       if (playsink->vis_pad_block_id)
-        gst_pad_remove_probe (((GstPlayVisChain *) playsink->
-                vischain)->blockpad, playsink->vis_pad_block_id);
+        gst_pad_remove_probe (((GstPlayVisChain *) playsink->vischain)->
+            blockpad, playsink->vis_pad_block_id);
       playsink->vis_pad_block_id = 0;
 
       gst_pad_remove_probe (opad, playsink->audio_block_id);
@@ -3907,8 +4095,8 @@
             (playsink->text_pad)));
     if (blocked && playsink->text_block_id == 0) {
       if (playsink->vis_pad_block_id)
-        gst_pad_remove_probe (((GstPlayVisChain *) playsink->
-                vischain)->blockpad, playsink->vis_pad_block_id);
+        gst_pad_remove_probe (((GstPlayVisChain *) playsink->vischain)->
+            blockpad, playsink->vis_pad_block_id);
       playsink->vis_pad_block_id = 0;
 
       playsink->text_block_id =
@@ -3945,6 +4133,12 @@
   GstPlaySink *playsink = (GstPlaySink *) user_data;
   GstPad *pad;
 
+  if (GST_IS_EVENT (info->data) && !GST_EVENT_IS_SERIALIZED (info->data)) {
+    GST_DEBUG_OBJECT (playsink, "Letting non-serialized event %s pass",
+        GST_EVENT_TYPE_NAME (info->data));
+    return GST_PAD_PROBE_PASS;
+  }
+
   GST_PLAY_SINK_LOCK (playsink);
 
   pad = GST_PAD_CAST (gst_proxy_pad_get_internal (GST_PROXY_PAD (blockedpad)));
@@ -4199,8 +4393,8 @@
           GST_PAD_CAST (gst_proxy_pad_get_internal (GST_PROXY_PAD (res)));
 
       if (playsink->vis_pad_block_id)
-        gst_pad_remove_probe (((GstPlayVisChain *) playsink->
-                vischain)->blockpad, playsink->vis_pad_block_id);
+        gst_pad_remove_probe (((GstPlayVisChain *) playsink->vischain)->
+            blockpad, playsink->vis_pad_block_id);
       playsink->vis_pad_block_id = 0;
 
       *block_id =
@@ -4509,8 +4703,8 @@
       audio_set_blocked (playsink, FALSE);
       text_set_blocked (playsink, FALSE);
       if (playsink->vis_pad_block_id)
-        gst_pad_remove_probe (((GstPlayVisChain *) playsink->
-                vischain)->blockpad, playsink->vis_pad_block_id);
+        gst_pad_remove_probe (((GstPlayVisChain *) playsink->vischain)->
+            blockpad, playsink->vis_pad_block_id);
       playsink->vis_pad_block_id = 0;
 
       GST_PLAY_SINK_UNLOCK (playsink);
@@ -4718,6 +4912,14 @@
     case PROP_AV_OFFSET:
       gst_play_sink_set_av_offset (playsink, g_value_get_int64 (value));
       break;
+    case PROP_VIDEO_FILTER:
+      gst_play_sink_set_filter (playsink, GST_PLAY_SINK_TYPE_VIDEO,
+          g_value_get_object (value));
+      break;
+    case PROP_AUDIO_FILTER:
+      gst_play_sink_set_filter (playsink, GST_PLAY_SINK_TYPE_AUDIO,
+          g_value_get_object (value));
+      break;
     case PROP_VIDEO_SINK:
       gst_play_sink_set_sink (playsink, GST_PLAY_SINK_TYPE_VIDEO,
           g_value_get_object (value));
@@ -4793,6 +4995,14 @@
     case PROP_AV_OFFSET:
       g_value_set_int64 (value, gst_play_sink_get_av_offset (playsink));
       break;
+    case PROP_VIDEO_FILTER:
+      g_value_take_object (value, gst_play_sink_get_filter (playsink,
+              GST_PLAY_SINK_TYPE_VIDEO));
+      break;
+    case PROP_AUDIO_FILTER:
+      g_value_take_object (value, gst_play_sink_get_filter (playsink,
+              GST_PLAY_SINK_TYPE_AUDIO));
+      break;
     case PROP_VIDEO_SINK:
       g_value_take_object (value, gst_play_sink_get_sink (playsink,
               GST_PLAY_SINK_TYPE_VIDEO));
diff --git a/gst/playback/gstplaysink.h b/gst/playback/gstplaysink.h
index ff47a19..f102583 100644
--- a/gst/playback/gstplaysink.h
+++ b/gst/playback/gstplaysink.h
@@ -72,6 +72,9 @@
 void             gst_play_sink_release_pad    (GstPlaySink *playsink, GstPad *pad);
 void             gst_play_sink_refresh_pad    (GstPlaySink *playsink, GstPad *pad, GstPlaySinkType type);
 
+void             gst_play_sink_set_filter     (GstPlaySink * playsink, GstPlaySinkType type, GstElement * filter);
+GstElement *     gst_play_sink_get_filter     (GstPlaySink * playsink, GstPlaySinkType type);
+
 void             gst_play_sink_set_sink       (GstPlaySink * playsink, GstPlaySinkType type, GstElement * sink);
 GstElement *     gst_play_sink_get_sink       (GstPlaySink * playsink, GstPlaySinkType type);
 
diff --git a/gst/playback/gstplaysinkconvertbin.c b/gst/playback/gstplaysinkconvertbin.c
index d4f299c..4eb998d 100644
--- a/gst/playback/gstplaysinkconvertbin.c
+++ b/gst/playback/gstplaysinkconvertbin.c
@@ -188,6 +188,12 @@
   GstCaps *caps;
   gboolean raw;
 
+  if (GST_IS_EVENT (info->data) && !GST_EVENT_IS_SERIALIZED (info->data)) {
+    GST_DEBUG_OBJECT (self, "Letting non-serialized event %s pass",
+        GST_EVENT_TYPE_NAME (info->data));
+    return GST_PAD_PROBE_PASS;
+  }
+
   GST_PLAY_SINK_CONVERT_BIN_LOCK (self);
   GST_DEBUG_OBJECT (self, "Pad blocked");
 
@@ -338,6 +344,15 @@
   return TRUE;
 }
 
+#define GST_PLAY_SINK_CONVERT_BIN_FILTER_CAPS(filter,caps) G_STMT_START {     \
+  if ((filter)) {                                                             \
+    GstCaps *intersection =                                                   \
+        gst_caps_intersect_full ((filter), (caps), GST_CAPS_INTERSECT_FIRST); \
+    gst_caps_unref ((caps));                                                  \
+    (caps) = intersection;                                                    \
+  }                                                                           \
+} G_STMT_END
+
 static GstCaps *
 gst_play_sink_convert_bin_getcaps (GstPad * pad, GstCaps * filter)
 {
@@ -378,27 +393,24 @@
         gst_caps_unref (downstream_filter);
       gst_object_unref (peer);
       if (self->converter_caps && is_raw_caps (peer_caps, self->audio)) {
-        ret = gst_caps_merge (peer_caps, gst_caps_ref (self->converter_caps));
+        GstCaps *converter_caps = gst_caps_ref (self->converter_caps);
+        GST_PLAY_SINK_CONVERT_BIN_FILTER_CAPS (filter, converter_caps);
+        ret = gst_caps_merge (peer_caps, converter_caps);
       } else {
         ret = peer_caps;
+        GST_PLAY_SINK_CONVERT_BIN_FILTER_CAPS (filter, ret);
       }
     } else {
       ret = gst_caps_ref (self->converter_caps);
+      GST_PLAY_SINK_CONVERT_BIN_FILTER_CAPS (filter, ret);
     }
   } else {
-    ret = gst_caps_new_any ();
+    ret = filter ? gst_caps_ref (filter) : gst_caps_new_any ();
   }
   GST_PLAY_SINK_CONVERT_BIN_UNLOCK (self);
 
   gst_object_unref (self);
 
-  if (filter) {
-    GstCaps *intersection =
-        gst_caps_intersect_full (filter, ret, GST_CAPS_INTERSECT_FIRST);
-    gst_caps_unref (ret);
-    ret = intersection;
-  }
-
   GST_DEBUG_OBJECT (pad, "Returning caps %" GST_PTR_FORMAT, ret);
 
   return ret;
diff --git a/gst/playback/gstrawcaps.h b/gst/playback/gstrawcaps.h
index 65e1514..278c907 100644
--- a/gst/playback/gstrawcaps.h
+++ b/gst/playback/gstrawcaps.h
@@ -26,8 +26,8 @@
 G_BEGIN_DECLS
 
 #define DEFAULT_RAW_CAPS \
-    "video/x-raw; " \
-    "audio/x-raw; " \
+    "video/x-raw(ANY); " \
+    "audio/x-raw(ANY); " \
     "text/x-raw; " \
     "subpicture/x-dvd; " \
     "subpicture/x-dvb; " \
diff --git a/gst/playback/gstsubtitleoverlay.c b/gst/playback/gstsubtitleoverlay.c
index 76ff345..e5b2fea 100644
--- a/gst/playback/gstsubtitleoverlay.c
+++ b/gst/playback/gstsubtitleoverlay.c
@@ -220,25 +220,14 @@
   "subtitle_sink", "subtitle"
 };
 
-static inline gboolean
-_is_raw_video (GstStructure * s)
-{
-  const gchar *name;
-
-  name = gst_structure_get_name (s);
-
-  if (g_str_equal (name, "video/x-raw"))
-    return TRUE;
-  return FALSE;
-}
-
 static gboolean
 _is_video_pad (GstPad * pad, gboolean * hw_accelerated)
 {
   GstPad *peer = gst_pad_get_peer (pad);
   GstCaps *caps;
-  gboolean ret;
+  gboolean ret = FALSE;
   const gchar *name;
+  guint i;
 
   if (peer) {
     caps = gst_pad_get_current_caps (peer);
@@ -250,21 +239,23 @@
     caps = gst_pad_query_caps (pad, NULL);
   }
 
-  name = gst_structure_get_name (gst_caps_get_structure (caps, 0));
-  if (g_str_equal (name, "video/x-raw")) {
-    ret = TRUE;
-    if (hw_accelerated)
-      *hw_accelerated = FALSE;
+  for (i = 0; i < gst_caps_get_size (caps) && ret == FALSE; i++) {
+    name = gst_structure_get_name (gst_caps_get_structure (caps, i));
+    if (g_str_equal (name, "video/x-raw")) {
+      ret = TRUE;
+      if (hw_accelerated)
+        *hw_accelerated = FALSE;
 
-  } else if (g_str_has_prefix (name, "video/x-surface")) {
-    ret = TRUE;
-    if (hw_accelerated)
-      *hw_accelerated = TRUE;
-  } else {
+    } else if (g_str_has_prefix (name, "video/x-surface")) {
+      ret = TRUE;
+      if (hw_accelerated)
+        *hw_accelerated = TRUE;
+    } else {
 
-    ret = FALSE;
-    if (hw_accelerated)
-      *hw_accelerated = FALSE;
+      ret = FALSE;
+      if (hw_accelerated)
+        *hw_accelerated = FALSE;
+    }
   }
 
   gst_caps_unref (caps);
@@ -1013,6 +1004,12 @@
   GstCaps *subcaps;
   GList *l, *factories = NULL;
 
+  if (GST_IS_EVENT (info->data) && !GST_EVENT_IS_SERIALIZED (info->data)) {
+    GST_DEBUG_OBJECT (pad, "Letting non-serialized event %s pass",
+        GST_EVENT_TYPE_NAME (info->data));
+    return GST_PAD_PROBE_PASS;
+  }
+
   GST_DEBUG_OBJECT (pad, "Pad blocked");
 
   GST_SUBTITLE_OVERLAY_LOCK (self);
diff --git a/gst/playback/gsturidecodebin.c b/gst/playback/gsturidecodebin.c
index cb053f0..cd89766 100644
--- a/gst/playback/gsturidecodebin.c
+++ b/gst/playback/gsturidecodebin.c
@@ -90,7 +90,7 @@
   gchar *encoding;
 
   gboolean is_stream;
-  gboolean is_download;
+  gboolean is_adaptive;
   gboolean need_queue;
   guint64 buffer_duration;      /* When buffering, buffer duration (ns) */
   guint buffer_size;            /* When buffering, buffer size (bytes) */
@@ -273,6 +273,13 @@
   if (!(ihint->run_type & G_SIGNAL_RUN_CLEANUP))
     g_value_set_enum (return_accu, res);
 
+  /* Call the next handler in the chain (if any) when the current callback
+   * returns TRY. This makes it possible to register separate autoplug-select
+   * handlers that implement different TRY/EXPOSE/SKIP strategies.
+   */
+  if (res == GST_AUTOPLUG_SELECT_TRY)
+    return TRUE;
+
   return FALSE;
 }
 
@@ -623,9 +630,11 @@
    * next factory.
    *
    * <note>
-   *   Only the signal handler that is connected first will ever by invoked.
-   *   Don't connect signal handlers with the #G_CONNECT_AFTER flag to this
-   *   signal, they will never be invoked!
+   *   The signal handler will not be invoked if any of the previously
+   *   registered signal handlers (if any) return a value other than
+   *   GST_AUTOPLUG_SELECT_TRY. Which also means that if you return
+   *   GST_AUTOPLUG_SELECT_TRY from one signal handler, handlers that get
+   *   registered next (again, if any) can override that decision.
    * </note>
    *
    * Returns: a #GST_TYPE_AUTOPLUG_SELECT_RESULT that indicates the required
@@ -1246,16 +1255,16 @@
 /* blacklisted URIs, we know they will always fail. */
 static const gchar *blacklisted_uris[] = { NULL };
 
-/* media types we can download */
-static const gchar *download_media[] = {
-  "video/quicktime", "video/mj2", "audio/x-m4a", "application/x-3gp",
-  "video/x-flv", "video/x-msvideo", "video/webm", NULL
+/* media types that use adaptive streaming */
+static const gchar *adaptive_media[] = {
+  "application/x-hls", "application/x-smoothstreaming-manifest",
+  "application/dash+xml", NULL
 };
 
 #define IS_STREAM_URI(uri)          (array_has_uri_value (stream_uris, uri))
 #define IS_QUEUE_URI(uri)           (array_has_uri_value (queue_uris, uri))
 #define IS_BLACKLISTED_URI(uri)     (array_has_uri_value (blacklisted_uris, uri))
-#define IS_DOWNLOAD_MEDIA(media)    (array_has_value (download_media, media))
+#define IS_ADAPTIVE_MEDIA(media)    (array_has_value (adaptive_media, media))
 
 /*
  * Generate and configure a source element.
@@ -1519,12 +1528,13 @@
         gst_iterator_resync (pads_iter);
         break;
       case GST_ITERATOR_OK:
-        pad = g_value_get_object (&item);
+        pad = g_value_dup_object (&item);
         /* we now officially have an ouput pad */
         *have_out = TRUE;
 
         /* if FALSE, this pad has no caps and we continue with the next pad. */
         if (!has_all_raw_caps (pad, rawcaps, is_raw)) {
+          gst_object_unref (pad);
           g_value_reset (&item);
           break;
         }
@@ -1551,12 +1561,14 @@
             decoder->queue = outelem;
 
             /* get the new raw srcpad */
+            gst_object_unref (pad);
             pad = gst_element_get_static_pad (outelem, "src");
           } else {
             outelem = decoder->source;
           }
           expose_decoded_pad (outelem, pad, decoder);
         }
+        gst_object_unref (pad);
         g_value_reset (&item);
         break;
     }
@@ -1592,6 +1604,7 @@
   {
     post_missing_plugin_error (GST_ELEMENT_CAST (decoder), "queue2");
 
+    gst_object_unref (pad);
     g_value_unset (&item);
     gst_iterator_free (pads_iter);
     gst_caps_unref (rawcaps);
@@ -1809,13 +1822,14 @@
   g_object_set (decodebin, "expose-all-streams", decoder->expose_allstreams,
       "connection-speed", decoder->connection_speed / 1000, NULL);
 
-  if (!decoder->is_stream) {
+  if (!decoder->is_stream || decoder->is_adaptive) {
     /* propagate the use-buffering property but only when we are not already
      * doing stream buffering with queue2. FIXME, we might want to do stream
      * buffering with the multiqueue buffering instead of queue2. */
-    g_object_set (decodebin, "use-buffering", decoder->use_buffering, NULL);
+    g_object_set (decodebin, "use-buffering", decoder->use_buffering
+        || decoder->is_adaptive, NULL);
 
-    if (decoder->use_buffering) {
+    if (decoder->use_buffering || decoder->is_adaptive) {
       guint max_bytes;
       guint64 max_time;
 
@@ -1823,7 +1837,7 @@
       if ((max_bytes = decoder->buffer_size) == -1)
         max_bytes = 2 * 1024 * 1024;
       if ((max_time = decoder->buffer_duration) == -1)
-        max_time = 2 * GST_SECOND;
+        max_time = 5 * GST_SECOND;
 
       g_object_set (decodebin, "max-size-bytes", max_bytes, "max-size-buffers",
           (guint) 0, "max-size-time", max_time, NULL);
@@ -1864,23 +1878,23 @@
 type_found (GstElement * typefind, guint probability,
     GstCaps * caps, GstURIDecodeBin * decoder)
 {
-  GstElement *dec_elem, *queue;
+  GstElement *src_elem, *dec_elem, *queue = NULL;
   GstStructure *s;
   const gchar *media_type;
+  gboolean do_download = FALSE;
 
   GST_DEBUG_OBJECT (decoder, "typefind found caps %" GST_PTR_FORMAT, caps);
 
   s = gst_caps_get_structure (caps, 0);
   media_type = gst_structure_get_name (s);
 
-  /* remember if we need download buffering */
-  decoder->is_download = IS_DOWNLOAD_MEDIA (media_type) && decoder->download;
+  decoder->is_adaptive = IS_ADAPTIVE_MEDIA (media_type);
+
   /* only enable download buffering if the upstream duration is known */
-  if (decoder->is_download) {
+  if (decoder->download) {
     gint64 dur;
 
-    decoder->is_download =
-        (gst_element_query_duration (typefind, GST_FORMAT_BYTES, &dur)
+    do_download = (gst_element_query_duration (typefind, GST_FORMAT_BYTES, &dur)
         && dur != -1);
   }
 
@@ -1888,68 +1902,74 @@
   if (!dec_elem)
     goto no_decodebin;
 
-  queue = gst_element_factory_make ("queue2", NULL);
-  if (!queue)
-    goto no_queue2;
+  if (decoder->is_adaptive) {
+    src_elem = typefind;
+  } else {
+    queue = gst_element_factory_make ("queue2", NULL);
+    if (!queue)
+      goto no_queue2;
 
-  g_object_set (queue, "use-buffering", TRUE, NULL);
-  g_object_set (queue, "ring-buffer-max-size", decoder->ring_buffer_max_size,
-      NULL);
-  decoder->queue = queue;
+    g_object_set (queue, "use-buffering", TRUE, NULL);
+    g_object_set (queue, "ring-buffer-max-size", decoder->ring_buffer_max_size,
+        NULL);
+    decoder->queue = queue;
 
-  GST_DEBUG_OBJECT (decoder, "check media-type %s, %d", media_type,
-      decoder->download);
+    GST_DEBUG_OBJECT (decoder, "check media-type %s, %d", media_type,
+        do_download);
 
-  if (decoder->is_download) {
-    gchar *temp_template, *filename;
-    const gchar *tmp_dir, *prgname;
+    if (do_download) {
+      gchar *temp_template, *filename;
+      const gchar *tmp_dir, *prgname;
 
-    tmp_dir = g_get_user_cache_dir ();
-    prgname = g_get_prgname ();
-    if (prgname == NULL)
-      prgname = "GStreamer";
+      tmp_dir = g_get_user_cache_dir ();
+      prgname = g_get_prgname ();
+      if (prgname == NULL)
+        prgname = "GStreamer";
 
-    filename = g_strdup_printf ("%s-XXXXXX", prgname);
+      filename = g_strdup_printf ("%s-XXXXXX", prgname);
 
-    /* build our filename */
-    temp_template = g_build_filename (tmp_dir, filename, NULL);
+      /* build our filename */
+      temp_template = g_build_filename (tmp_dir, filename, NULL);
 
-    GST_DEBUG_OBJECT (decoder, "enable download buffering in %s (%s, %s, %s)",
-        temp_template, tmp_dir, prgname, filename);
+      GST_DEBUG_OBJECT (decoder, "enable download buffering in %s (%s, %s, %s)",
+          temp_template, tmp_dir, prgname, filename);
 
-    /* configure progressive download for selected media types */
-    g_object_set (queue, "temp-template", temp_template, NULL);
+      /* configure progressive download for selected media types */
+      g_object_set (queue, "temp-template", temp_template, NULL);
 
-    g_free (filename);
-    g_free (temp_template);
+      g_free (filename);
+      g_free (temp_template);
+    }
+
+    /* Disable max-size-buffers */
+    g_object_set (queue, "max-size-buffers", 0, NULL);
+
+    /* If buffer size or duration are set, set them on the queue2 element */
+    if (decoder->buffer_size != -1)
+      g_object_set (queue, "max-size-bytes", decoder->buffer_size, NULL);
+    if (decoder->buffer_duration != -1)
+      g_object_set (queue, "max-size-time", decoder->buffer_duration, NULL);
+
+    gst_bin_add (GST_BIN_CAST (decoder), queue);
+
+    if (!gst_element_link_pads (typefind, "src", queue, "sink"))
+      goto could_not_link;
+    src_elem = queue;
   }
 
-  /* Disable max-size-buffers */
-  g_object_set (queue, "max-size-buffers", 0, NULL);
-
-  /* If buffer size or duration are set, set them on the queue2 element */
-  if (decoder->buffer_size != -1)
-    g_object_set (queue, "max-size-bytes", decoder->buffer_size, NULL);
-  if (decoder->buffer_duration != -1)
-    g_object_set (queue, "max-size-time", decoder->buffer_duration, NULL);
-
-  gst_bin_add (GST_BIN_CAST (decoder), queue);
-
-  if (!gst_element_link_pads (typefind, "src", queue, "sink"))
-    goto could_not_link;
-
   /* to force caps on the decodebin element and avoid reparsing stuff by
    * typefind. It also avoids a deadlock in the way typefind activates pads in
    * the state change */
   g_object_set (dec_elem, "sink-caps", caps, NULL);
 
-  if (!gst_element_link_pads (queue, "src", dec_elem, "sink"))
+  if (!gst_element_link_pads (src_elem, "src", dec_elem, "sink"))
     goto could_not_link;
 
   /* PLAYING in one go might fail (see bug #632782) */
   gst_element_set_state (dec_elem, GST_STATE_PAUSED);
   gst_element_set_state (dec_elem, GST_STATE_PLAYING);
-  gst_element_set_state (queue, GST_STATE_PLAYING);
+  if (queue)
+    gst_element_set_state (queue, GST_STATE_PLAYING);
 
   do_async_done (decoder);
 
diff --git a/gst/subparse/Makefile.in b/gst/subparse/Makefile.in
index c9686af..2a925ae 100644
--- a/gst/subparse/Makefile.in
+++ b/gst/subparse/Makefile.in
@@ -88,7 +88,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -429,9 +428,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/gst/subparse/gstsubparse.c b/gst/subparse/gstsubparse.c
index a8b8b1f..b565e93 100644
--- a/gst/subparse/gstsubparse.c
+++ b/gst/subparse/gstsubparse.c
@@ -60,7 +60,8 @@
     GST_PAD_ALWAYS,
     GST_STATIC_CAPS ("application/x-subtitle; application/x-subtitle-sami; "
         "application/x-subtitle-tmplayer; application/x-subtitle-mpl2; "
-        "application/x-subtitle-dks; application/x-subtitle-qttext")
+        "application/x-subtitle-dks; application/x-subtitle-qttext;"
+        "application/x-subtitle-lrc;")
     );
 
 static GstStaticPadTemplate src_templ = GST_STATIC_PAD_TEMPLATE ("src",
@@ -373,6 +374,8 @@
       return "DKS";
     case GST_SUB_PARSE_FORMAT_QTTEXT:
       return "QTtext";
+    case GST_SUB_PARSE_FORMAT_LRC:
+      return "LRC";
     default:
     case GST_SUB_PARSE_FORMAT_UNKNOWN:
       break;
@@ -917,6 +920,34 @@
   }
 }
 
+static gchar *
+parse_lrc (ParserState * state, const gchar * line)
+{
+  gint m, s, c;
+  const gchar *start;
+  gint milli;
+
+  if (line[0] != '[')
+    return NULL;
+
+  if (sscanf (line, "[%u:%02u.%03u]", &m, &s, &c) != 3 &&
+      sscanf (line, "[%u:%02u.%02u]", &m, &s, &c) != 3)
+    return NULL;
+
+  start = strchr (line, ']');
+  if (start - line == 9)
+    milli = 10;
+  else
+    milli = 1;
+
+  state->start_time = gst_util_uint64_scale (m, 60 * GST_SECOND, 1)
+      + gst_util_uint64_scale (s, GST_SECOND, 1)
+      + gst_util_uint64_scale (c, milli * GST_MSECOND, 1);
+  state->duration = GST_CLOCK_TIME_NONE;
+
+  return g_strdup (start + 1);
+}
+
 static void
 unescape_newlines_br (gchar * read)
 {
@@ -1287,6 +1318,34 @@
     GST_LOG ("QTtext (time based) format detected");
     return GST_SUB_PARSE_FORMAT_QTTEXT;
   }
+  /* We assume the LRC file starts immediately */
+  if (match_str[0] == '[') {
+    gboolean all_lines_good = TRUE;
+    gchar **split;
+    gchar **ptr;
+
+    ptr = split = g_strsplit (match_str, "\n", -1);
+    while (*ptr && *(ptr + 1)) {
+      gchar *str = *ptr;
+      gint len = strlen (str);
+
+      if (sscanf (str, "[%u:%02u.%02u]", &n1, &n2, &n3) == 3 ||
+          sscanf (str, "[%u:%02u.%03u]", &n1, &n2, &n3) == 3) {
+        all_lines_good = TRUE;
+      } else if (str[len - 1] == ']' && strchr (str, ':') != NULL) {
+        all_lines_good = TRUE;
+      } else {
+        all_lines_good = FALSE;
+        break;
+      }
+
+      ptr++;
+    }
+    g_strfreev (split);
+
+    if (all_lines_good)
+      return GST_SUB_PARSE_FORMAT_LRC;
+  }
 
   GST_DEBUG ("no subtitle format detected");
   return GST_SUB_PARSE_FORMAT_UNKNOWN;
@@ -1351,6 +1410,10 @@
       qttext_context_init (&self->state);
       return gst_caps_new_simple ("text/x-raw",
           "format", G_TYPE_STRING, "pango-markup", NULL);
+    case GST_SUB_PARSE_FORMAT_LRC:
+      self->parse_line = parse_lrc;
+      return gst_caps_new_simple ("text/x-raw",
+          "format", G_TYPE_STRING, "utf8", NULL);
     case GST_SUB_PARSE_FORMAT_UNKNOWN:
     default:
       GST_DEBUG ("no subtitle format detected");
@@ -1672,6 +1735,9 @@
 GST_STATIC_CAPS ("application/x-subtitle-qttext");
 #define QTTEXT_CAPS (gst_static_caps_get (&qttext_caps))
 
+static GstStaticCaps lrc_caps = GST_STATIC_CAPS ("application/x-subtitle-lrc");
+#define LRC_CAPS (gst_static_caps_get (&lrc_caps))
+
 static void
 gst_subparse_type_find (GstTypeFind * tf, gpointer private)
 {
@@ -1772,6 +1838,10 @@
       GST_DEBUG ("QTtext format detected");
       caps = QTTEXT_CAPS;
       break;
+    case GST_SUB_PARSE_FORMAT_LRC:
+      GST_DEBUG ("LRC format detected");
+      caps = LRC_CAPS;
+      break;
     default:
     case GST_SUB_PARSE_FORMAT_UNKNOWN:
       GST_DEBUG ("no subtitle format detected");
diff --git a/gst/subparse/gstsubparse.h b/gst/subparse/gstsubparse.h
index 5b5fd0d..012aee6 100644
--- a/gst/subparse/gstsubparse.h
+++ b/gst/subparse/gstsubparse.h
@@ -55,7 +55,8 @@
   GST_SUB_PARSE_FORMAT_MPL2 = 6,
   GST_SUB_PARSE_FORMAT_SUBVIEWER = 7,
   GST_SUB_PARSE_FORMAT_DKS = 8,
-  GST_SUB_PARSE_FORMAT_QTTEXT = 9
+  GST_SUB_PARSE_FORMAT_QTTEXT = 9,
+  GST_SUB_PARSE_FORMAT_LRC = 10
 } GstSubParseFormat;
 
 typedef struct {
diff --git a/gst/tcp/Makefile.in b/gst/tcp/Makefile.in
index a48ae70..b7ada9b 100644
--- a/gst/tcp/Makefile.in
+++ b/gst/tcp/Makefile.in
@@ -88,7 +88,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -435,9 +434,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/gst/tcp/gstmultifdsink.c b/gst/tcp/gstmultifdsink.c
index 5f5f884..ab95985 100644
--- a/gst/tcp/gstmultifdsink.c
+++ b/gst/tcp/gstmultifdsink.c
@@ -30,7 +30,7 @@
  * The multifdsink element needs to be set into READY, PAUSED or PLAYING state
  * before operations such as adding clients are possible.
  *
- * As of version 0.10.8, a client can also be added with the #GstMultiFdSink::add-full signal
+ * A client can also be added with the #GstMultiFdSink::add-full signal
  * that allows for more control over what and how much data a client 
  * initially receives.
  *
@@ -62,7 +62,7 @@
  * Multifdsink will always keep at least one keyframe in its internal buffers
  * when the sync-mode is set to latest-keyframe.
  *
- * As of version 0.10.8, there are additional values for the #GstMultiFdSink:sync-method 
+ * There are additional values for the #GstMultiFdSink:sync-method
  * property to allow finer control over burst-on-connect behaviour. By selecting
  * the 'burst' method a minimum burst size can be chosen, 'burst-keyframe'
  * additionally requires that the burst begin with a keyframe, and 
@@ -97,8 +97,6 @@
  * buffers to the clients. This behaviour can be disabled by setting the sync 
  * property to FALSE. Multifdsink will by default not do QoS and will never
  * drop late buffers.
- *
- * Last reviewed on 2006-09-12 (0.10.10)
  */
 
 #ifdef HAVE_CONFIG_H
@@ -221,8 +219,6 @@
    * GstMultiFdSink::handle-read
    *
    * Handle read requests from clients and discard the data.
-   *
-   * Since: 0.10.23
    */
   g_object_class_install_property (gobject_class, PROP_HANDLE_READ,
       g_param_spec_boolean ("handle-read", "Handle Read",
@@ -354,8 +350,6 @@
    * In this callback, @gstmultifdsink has removed all the information
    * associated with @fd and it is therefore not possible to call get-stats
    * with @fd. It is however safe to close() and reuse @fd in the callback.
-   *
-   * Since: 0.10.7
    */
   gst_multi_fd_sink_signals[SIGNAL_CLIENT_FD_REMOVED] =
       g_signal_new ("client-fd-removed", G_TYPE_FROM_CLASS (klass),
diff --git a/gst/tcp/gstmultihandlesink.c b/gst/tcp/gstmultihandlesink.c
index 5f1c469..b9ba36b 100644
--- a/gst/tcp/gstmultihandlesink.c
+++ b/gst/tcp/gstmultihandlesink.c
@@ -29,7 +29,7 @@
  * file descriptors can be added to multihandlesink by emitting the #GstMultiHandleSink::add signal. 
  * For each descriptor added, the #GstMultiHandleSink::client-added signal will be called.
  *
- * As of version 0.10.8, a client can also be added with the #GstMultiHandleSink::add-full signal
+ * A client can also be added with the #GstMultiHandleSink::add-full signal
  * that allows for more control over what and how much data a client 
  * initially receives.
  *
@@ -61,7 +61,7 @@
  * Multisocketsink will always keep at least one keyframe in its internal buffers
  * when the sync-mode is set to latest-keyframe.
  *
- * As of version 0.10.8, there are additional values for the #GstMultiHandleSink:sync-method 
+ * There are additional values for the #GstMultiHandleSink:sync-method
  * property to allow finer control over burst-on-connect behaviour. By selecting
  * the 'burst' method a minimum burst size can be chosen, 'burst-keyframe'
  * additionally requires that the burst begin with a keyframe, and 
@@ -96,8 +96,6 @@
  * buffers to the clients. This behaviour can be disabled by setting the sync 
  * property to FALSE. Multisocketsink will by default not do QoS and will never
  * drop late buffers.
- *
- * Last reviewed on 2006-09-12 (0.10.10)
  */
 
 #ifdef HAVE_CONFIG_H
@@ -432,8 +430,6 @@
    * GstMultiHandleSink::resend-streamheader
    *
    * Resend the streamheaders to existing clients when they change.
-   *
-   * Since: 0.10.23
    */
   g_object_class_install_property (gobject_class, PROP_RESEND_STREAMHEADER,
       g_param_spec_boolean ("resend-streamheader", "Resend streamheader",
diff --git a/gst/tcp/gstmultisocketsink.c b/gst/tcp/gstmultisocketsink.c
index ee28065..01647b1 100644
--- a/gst/tcp/gstmultisocketsink.c
+++ b/gst/tcp/gstmultisocketsink.c
@@ -29,7 +29,7 @@
  * file descriptors can be added to multisocketsink by emitting the #GstMultiSocketSink::add signal. 
  * For each descriptor added, the #GstMultiSocketSink::client-added signal will be called.
  *
- * As of version 0.10.8, a client can also be added with the #GstMultiSocketSink::add-full signal
+ * A client can also be added with the #GstMultiSocketSink::add-full signal
  * that allows for more control over what and how much data a client 
  * initially receives.
  *
@@ -61,7 +61,7 @@
  * Multisocketsink will always keep at least one keyframe in its internal buffers
  * when the sync-mode is set to latest-keyframe.
  *
- * As of version 0.10.8, there are additional values for the #GstMultiSocketSink:sync-method 
+ * There are additional values for the #GstMultiSocketSink:sync-method
  * property to allow finer control over burst-on-connect behaviour. By selecting
  * the 'burst' method a minimum burst size can be chosen, 'burst-keyframe'
  * additionally requires that the burst begin with a keyframe, and 
@@ -96,8 +96,6 @@
  * buffers to the clients. This behaviour can be disabled by setting the sync 
  * property to FALSE. Multisocketsink will by default not do QoS and will never
  * drop late buffers.
- *
- * Last reviewed on 2006-09-12 (0.10.10)
  */
 
 #ifdef HAVE_CONFIG_H
@@ -340,8 +338,6 @@
    * In this callback, @gstmultisocketsink has removed all the information
    * associated with @socket and it is therefore not possible to call get-stats
    * with @socket. It is however safe to close() and reuse @fd in the callback.
-   *
-   * Since: 0.10.7
    */
   gst_multi_socket_sink_signals[SIGNAL_CLIENT_SOCKET_REMOVED] =
       g_signal_new ("client-socket-removed", G_TYPE_FROM_CLASS (klass),
diff --git a/gst/typefind/Makefile.in b/gst/typefind/Makefile.in
index 26a53a7..3769923 100644
--- a/gst/typefind/Makefile.in
+++ b/gst/typefind/Makefile.in
@@ -87,7 +87,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -426,9 +425,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/gst/typefind/gsttypefindfunctions.c b/gst/typefind/gsttypefindfunctions.c
index 88836b8..031d3d7 100644
--- a/gst/typefind/gsttypefindfunctions.c
+++ b/gst/typefind/gsttypefindfunctions.c
@@ -517,7 +517,7 @@
 
   /* look for the first element, it has to be the requested element. Bail
    * out if it is not within the first 4kB. */
-  while (data && pos < MIN (4096, length)) {
+  while (pos < MIN (4096, length)) {
     while (*data != '<' && pos < MIN (4096, length)) {
       XML_INC_BUFFER_DATA;
     }
@@ -533,7 +533,7 @@
     /* the first normal element, check if it's the one asked for */
     if (pos + elen + 1 >= length)
       return FALSE;
-    return (data && element && strncmp ((char *) data, element, elen) == 0);
+    return (element && strncmp ((const char *) data, element, elen) == 0);
   }
 
   return FALSE;
@@ -2688,6 +2688,99 @@
   }
 }
 
+/*** video/x-h265 H265 elementary video stream ***/
+
+static GstStaticCaps h265_video_caps =
+GST_STATIC_CAPS ("video/x-h265,stream-format=byte-stream");
+
+#define H265_VIDEO_CAPS gst_static_caps_get(&h265_video_caps)
+
+#define H265_MAX_PROBE_LENGTH (128 * 1024)      /* 128kB for HD should be enough. */
+
+static void
+h265_video_type_find (GstTypeFind * tf, gpointer unused)
+{
+  DataScanCtx c = { 0, NULL, 0 };
+
+  /* Stream consists of: a series of sync codes (00 00 00 01) followed
+   * by NALs
+   */
+  gboolean seen_irap = FALSE;
+  gboolean seen_vps = FALSE;
+  gboolean seen_sps = FALSE;
+  gboolean seen_pps = FALSE;
+  int nut;
+  int good = 0;
+  int bad = 0;
+
+  while (c.offset < H265_MAX_PROBE_LENGTH) {
+    if (G_UNLIKELY (!data_scan_ctx_ensure_data (tf, &c, 5)))
+      break;
+
+    if (IS_MPEG_HEADER (c.data)) {
+      /* forbiden_zero_bit | nal_unit_type */
+      nut = c.data[3] & 0xfe;
+
+      /* if forbidden bit is different to 0 won't be h265 */
+      if (nut > 0x7e) {
+        bad++;
+        break;
+      }
+      nut = nut >> 1;
+
+      /* if nuh_layer_id is not zero or nuh_temporal_id_plus1 is zero then
+       * it won't be h265 */
+      if ((c.data[3] & 0x01) || (c.data[4] & 0xf8) || !(c.data[4] & 0x07)) {
+        bad++;
+        break;
+      }
+
+      /* collect statistics about the NAL types */
+      if ((nut >= 0 && nut <= 9) || (nut >= 16 && nut <= 21) || (nut >= 32
+              && nut <= 40)) {
+        if (nut == 32)
+          seen_vps = TRUE;
+        else if (nut == 33)
+          seen_sps = TRUE;
+        else if (nut == 34)
+          seen_pps = TRUE;
+        else if (nut >= 16 || nut <= 21) {
+          /* BLA, IDR and CRA pictures are belongs to be IRAP picture */
+          /* we are not counting the reserved IRAP pictures (22 and 23) to good */
+          seen_irap = TRUE;
+        }
+
+        good++;
+      } else if ((nut >= 10 && nut <= 15) || (nut >= 22 && nut <= 31)
+          || (nut >= 41 && nut <= 47)) {
+        /* reserved values are counting as bad */
+        bad++;
+      } else {
+        /* unspecified (48..63), application specific */
+        /* don't consider these as bad */
+      }
+
+      GST_LOG ("good:%d, bad:%d, pps:%d, sps:%d, vps:%d, irap:%d", good, bad,
+          seen_pps, seen_sps, seen_vps, seen_irap);
+
+      if (seen_sps && seen_pps && seen_irap && good >= 10 && bad < 4) {
+        gst_type_find_suggest (tf, GST_TYPE_FIND_LIKELY, H265_VIDEO_CAPS);
+        return;
+      }
+
+      data_scan_ctx_advance (tf, &c, 5);
+    }
+    data_scan_ctx_advance (tf, &c, 1);
+  }
+
+  GST_LOG ("good:%d, bad:%d, pps:%d, sps:%d, vps:%d, irap:%d", good, bad,
+      seen_pps, seen_sps, seen_vps, seen_irap);
+
+  if (good >= 2 && bad == 0) {
+    gst_type_find_suggest (tf, GST_TYPE_FIND_POSSIBLE, H265_VIDEO_CAPS);
+  }
+}
+
 /*** video/mpeg video stream ***/
 
 static GstStaticCaps mpeg_video_caps = GST_STATIC_CAPS ("video/mpeg, "
@@ -3713,6 +3806,33 @@
   }
 }
 
+/*** image/x-exr ***/
+static GstStaticCaps exr_caps = GST_STATIC_CAPS ("image/x-exr");
+#define EXR_CAPS (gst_static_caps_get(&exr_caps))
+static void
+exr_type_find (GstTypeFind * tf, gpointer ununsed)
+{
+  const guint8 *data = gst_type_find_peek (tf, 0, 8);
+
+  if (data) {
+    guint32 flags;
+
+    if (GST_READ_UINT32_LE (data) != 0x01312f76)
+      return;
+
+    flags = GST_READ_UINT32_LE (data + 4);
+    if ((flags & 0xff) != 1 && (flags & 0xff) != 2)
+      return;
+
+    /* If bit 9 is set, bit 11 and 12 must be 0 */
+    if ((flags & 0x200) && (flags & 0x1800))
+      return;
+
+    gst_type_find_suggest (tf, GST_TYPE_FIND_MAXIMUM, EXR_CAPS);
+  }
+}
+
+
 /*** PNM ***/
 
 static GstStaticCaps pnm_caps = GST_STATIC_CAPS ("image/x-portable-bitmap; "
@@ -5368,6 +5488,8 @@
       h263_video_type_find, "h263,263", H263_VIDEO_CAPS, NULL, NULL);
   TYPE_FIND_REGISTER (plugin, "video/x-h264", GST_RANK_PRIMARY,
       h264_video_type_find, "h264,x264,264", H264_VIDEO_CAPS, NULL, NULL);
+  TYPE_FIND_REGISTER (plugin, "video/x-h265", GST_RANK_PRIMARY,
+      h265_video_type_find, "h265,x265,265", H265_VIDEO_CAPS, NULL, NULL);
   TYPE_FIND_REGISTER (plugin, "video/x-nuv", GST_RANK_SECONDARY, nuv_type_find,
       "nuv", NUV_CAPS, NULL, NULL);
 
@@ -5433,6 +5555,8 @@
       ircam_type_find, "sf", IRCAM_CAPS, NULL, NULL);
   TYPE_FIND_REGISTER_START_WITH (plugin, "audio/x-w64", GST_RANK_SECONDARY,
       "w64", "riff", 4, GST_TYPE_FIND_MAXIMUM);
+  TYPE_FIND_REGISTER_START_WITH (plugin, "audio/x-rf64", GST_RANK_PRIMARY,
+      "rf64", "RF64", 4, GST_TYPE_FIND_MAXIMUM);
   TYPE_FIND_REGISTER (plugin, "audio/x-shorten", GST_RANK_SECONDARY,
       shn_type_find, "shn", SHN_CAPS, NULL, NULL);
   TYPE_FIND_REGISTER (plugin, "application/x-ape", GST_RANK_SECONDARY,
@@ -5449,6 +5573,8 @@
       "tif,tiff", TIFF_CAPS, NULL, NULL);
   TYPE_FIND_REGISTER_RIFF (plugin, "image/webp", GST_RANK_PRIMARY,
       "webp", "WEBP");
+  TYPE_FIND_REGISTER (plugin, "image/x-exr", GST_RANK_PRIMARY, exr_type_find,
+      "exr", EXR_CAPS, NULL, NULL);
   TYPE_FIND_REGISTER (plugin, "image/x-portable-pixmap", GST_RANK_SECONDARY,
       pnm_type_find, "pnm,ppm,pgm,pbm", PNM_CAPS, NULL, NULL);
   TYPE_FIND_REGISTER (plugin, "video/x-matroska", GST_RANK_PRIMARY,
@@ -5592,6 +5718,9 @@
   TYPE_FIND_REGISTER (plugin, "video/x-pva", GST_RANK_SECONDARY,
       pva_type_find, "pva", PVA_CAPS, NULL, NULL);
 
+  TYPE_FIND_REGISTER_START_WITH (plugin, "audio/x-xi", GST_RANK_SECONDARY,
+      "xi", "Extended Instrument: ", 21, GST_TYPE_FIND_MAXIMUM);
+
   return TRUE;
 }
 
diff --git a/gst/videoconvert/Makefile.in b/gst/videoconvert/Makefile.in
index e540c26..aef3662 100644
--- a/gst/videoconvert/Makefile.in
+++ b/gst/videoconvert/Makefile.in
@@ -110,7 +110,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -454,9 +453,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/gst/videoconvert/gstvideoconvertorc-dist.c b/gst/videoconvert/gstvideoconvertorc-dist.c
index 4ba952e..362f527 100644
--- a/gst/videoconvert/gstvideoconvertorc-dist.c
+++ b/gst/videoconvert/gstvideoconvertorc-dist.c
@@ -197,83 +197,21 @@
     const guint8 * ORC_RESTRICT s2, int s2_stride,
     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m);
 void video_convert_orc_convert_AYUV_ARGB (guint8 * ORC_RESTRICT d1,
-    int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
+    int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1,
+    int p2, int p3, int p4, int p5, int n, int m);
 void video_convert_orc_convert_AYUV_BGRA (guint8 * ORC_RESTRICT d1,
-    int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
+    int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1,
+    int p2, int p3, int p4, int p5, int n, int m);
 void video_convert_orc_convert_AYUV_ABGR (guint8 * ORC_RESTRICT d1,
-    int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
+    int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1,
+    int p2, int p3, int p4, int p5, int n, int m);
 void video_convert_orc_convert_AYUV_RGBA (guint8 * ORC_RESTRICT d1,
-    int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
+    int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1,
+    int p2, int p3, int p4, int p5, int n, int m);
 void video_convert_orc_convert_I420_BGRA (guint8 * ORC_RESTRICT d1,
     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
-    const guint8 * ORC_RESTRICT s3, int n);
-void video_convert_orc_getline_I420 (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
-    const guint8 * ORC_RESTRICT s3, int n);
-void video_convert_orc_getline_YUV9 (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
-    const guint8 * ORC_RESTRICT s3, int n);
-void video_convert_orc_getline_YUY2 (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n);
-void video_convert_orc_getline_UYVY (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n);
-void video_convert_orc_getline_YVYU (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n);
-void video_convert_orc_getline_Y42B (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
-    const guint8 * ORC_RESTRICT s3, int n);
-void video_convert_orc_getline_Y444 (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
-    const guint8 * ORC_RESTRICT s3, int n);
-void video_convert_orc_getline_Y800 (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n);
-void video_convert_orc_getline_Y16 (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n);
-void video_convert_orc_getline_BGRA (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n);
-void video_convert_orc_getline_ABGR (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n);
-void video_convert_orc_getline_RGBA (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n);
-void video_convert_orc_getline_NV12 (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n);
-void video_convert_orc_getline_NV21 (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n);
-void video_convert_orc_getline_A420 (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
-    const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n);
-void video_convert_orc_putline_I420 (guint8 * ORC_RESTRICT d1,
-    guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3,
-    const guint8 * ORC_RESTRICT s1, int n);
-void video_convert_orc_putline_YUY2 (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n);
-void video_convert_orc_putline_YVYU (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n);
-void video_convert_orc_putline_UYVY (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n);
-void video_convert_orc_putline_Y42B (guint8 * ORC_RESTRICT d1,
-    guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3,
-    const guint8 * ORC_RESTRICT s1, int n);
-void video_convert_orc_putline_Y444 (guint8 * ORC_RESTRICT d1,
-    guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3,
-    const guint8 * ORC_RESTRICT s1, int n);
-void video_convert_orc_putline_Y800 (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n);
-void video_convert_orc_putline_Y16 (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n);
-void video_convert_orc_putline_BGRA (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n);
-void video_convert_orc_putline_ABGR (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n);
-void video_convert_orc_putline_RGBA (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n);
-void video_convert_orc_putline_NV12 (guint8 * ORC_RESTRICT d1,
-    guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, int n);
-void video_convert_orc_putline_NV21 (guint8 * ORC_RESTRICT d1,
-    guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, int n);
-void video_convert_orc_putline_A420 (guint8 * ORC_RESTRICT d1,
-    guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3,
-    guint8 * ORC_RESTRICT d4, const guint8 * ORC_RESTRICT s1, int n);
+    const guint8 * ORC_RESTRICT s3, int p1, int p2, int p3, int p4, int p5,
+    int n);
 
 
 /* begin Orc C target preamble */
@@ -299,8 +237,8 @@
 #define ORC_CLAMP_UW(x) ORC_CLAMP(x,ORC_UW_MIN,ORC_UW_MAX)
 #define ORC_CLAMP_SL(x) ORC_CLAMP(x,ORC_SL_MIN,ORC_SL_MAX)
 #define ORC_CLAMP_UL(x) ORC_CLAMP(x,ORC_UL_MIN,ORC_UL_MAX)
-#define ORC_SWAP_W(x) ((((x)&0xff)<<8) | (((x)&0xff00)>>8))
-#define ORC_SWAP_L(x) ((((x)&0xff)<<24) | (((x)&0xff00)<<8) | (((x)&0xff0000)>>8) | (((x)&0xff000000)>>24))
+#define ORC_SWAP_W(x) ((((x)&0xffU)<<8) | (((x)&0xff00U)>>8))
+#define ORC_SWAP_L(x) ((((x)&0xffU)<<24) | (((x)&0xff00U)<<8) | (((x)&0xff0000U)>>8) | (((x)&0xff000000U)>>24))
 #define ORC_SWAP_Q(x) ((((x)&ORC_UINT64_C(0xff))<<56) | (((x)&ORC_UINT64_C(0xff00))<<40) | (((x)&ORC_UINT64_C(0xff0000))<<24) | (((x)&ORC_UINT64_C(0xff000000))<<8) | (((x)&ORC_UINT64_C(0xff00000000))>>8) | (((x)&ORC_UINT64_C(0xff0000000000))>>24) | (((x)&ORC_UINT64_C(0xff000000000000))>>40) | (((x)&ORC_UINT64_C(0xff00000000000000))>>56))
 #define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset)))
 #define ORC_DENORMAL(x) ((x) & ((((x)&0x7f800000) == 0) ? 0xff800000 : 0xffffffff))
@@ -6627,56 +6565,39 @@
 #ifdef DISABLE_ORC
 void
 video_convert_orc_convert_AYUV_ARGB (guint8 * ORC_RESTRICT d1, int d1_stride,
-    const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
+    const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3,
+    int p4, int p5, int n, int m)
 {
   int i;
   int j;
   orc_union32 *ORC_RESTRICT ptr0;
   const orc_union32 *ORC_RESTRICT ptr4;
-  orc_union32 var48;
+  orc_union32 var46;
 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union32 var49;
+  volatile orc_union32 var47;
 #else
-  orc_union32 var49;
+  orc_union32 var47;
 #endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var50;
-#else
+  orc_union16 var48;
+  orc_union16 var49;
   orc_union16 var50;
-#endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var51;
-#else
   orc_union16 var51;
-#endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var52;
-#else
   orc_union16 var52;
-#endif
 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var53;
+  volatile orc_union32 var53;
 #else
-  orc_union16 var53;
+  orc_union32 var53;
 #endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var54;
-#else
-  orc_union16 var54;
-#endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union32 var55;
-#else
+  orc_union32 var54;
   orc_union32 var55;
-#endif
-  orc_union32 var56;
-  orc_union32 var57;
-  orc_union16 var58;
-  orc_union16 var59;
+  orc_union16 var56;
+  orc_union16 var57;
+  orc_int8 var58;
+  orc_int8 var59;
   orc_int8 var60;
   orc_int8 var61;
-  orc_int8 var62;
-  orc_int8 var63;
+  orc_union16 var62;
+  orc_union16 var63;
   orc_union16 var64;
   orc_union16 var65;
   orc_union16 var66;
@@ -6687,160 +6608,125 @@
   orc_union16 var71;
   orc_union16 var72;
   orc_union16 var73;
-  orc_union16 var74;
-  orc_union16 var75;
-  orc_union16 var76;
+  orc_int8 var74;
+  orc_int8 var75;
+  orc_int8 var76;
   orc_union16 var77;
   orc_union16 var78;
-  orc_union16 var79;
-  orc_union16 var80;
-  orc_union16 var81;
-  orc_union16 var82;
-  orc_union16 var83;
-  orc_union16 var84;
-  orc_union16 var85;
-  orc_union16 var86;
-  orc_int8 var87;
-  orc_int8 var88;
-  orc_int8 var89;
-  orc_union16 var90;
-  orc_union16 var91;
-  orc_union32 var92;
+  orc_union32 var79;
 
   for (j = 0; j < m; j++) {
     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
 
     /* 1: loadpb */
-    var49.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var49.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var49.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var49.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var47.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var47.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var47.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var47.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
     /* 9: loadpw */
-    var50.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */
+    var48.i = p1;
+    /* 11: loadpw */
+    var49.i = p2;
     /* 14: loadpw */
-    var51.i = (int) 0x00000067; /* 103 or 5.08888e-322f */
-    /* 21: loadpw */
-    var52.i = (int) 0x00000004; /* 4 or 1.97626e-323f */
-    /* 25: loadpw */
-    var53.i = (int) 0x00000064; /* 100 or 4.94066e-322f */
-    /* 29: loadpw */
-    var54.i = (int) 0x00000068; /* 104 or 5.13828e-322f */
-    /* 40: loadpb */
-    var55.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var55.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var55.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var55.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var50.i = p3;
+    /* 17: loadpw */
+    var51.i = p4;
+    /* 20: loadpw */
+    var52.i = p5;
+    /* 29: loadpb */
+    var53.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var53.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var53.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var53.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
 
     for (i = 0; i < n; i++) {
       /* 0: loadl */
-      var48 = ptr4[i];
+      var46 = ptr4[i];
       /* 2: subb */
-      var57.x4[0] = var48.x4[0] - var49.x4[0];
-      var57.x4[1] = var48.x4[1] - var49.x4[1];
-      var57.x4[2] = var48.x4[2] - var49.x4[2];
-      var57.x4[3] = var48.x4[3] - var49.x4[3];
+      var55.x4[0] = var46.x4[0] - var47.x4[0];
+      var55.x4[1] = var46.x4[1] - var47.x4[1];
+      var55.x4[2] = var46.x4[2] - var47.x4[2];
+      var55.x4[3] = var46.x4[3] - var47.x4[3];
       /* 3: splitlw */
       {
         orc_union32 _src;
-        _src.i = var57.i;
-        var58.i = _src.x2[1];
-        var59.i = _src.x2[0];
+        _src.i = var55.i;
+        var56.i = _src.x2[1];
+        var57.i = _src.x2[0];
       }
       /* 4: splitwb */
       {
         orc_union16 _src;
-        _src.i = var59.i;
-        var60 = _src.x2[1];
-        var61 = _src.x2[0];
+        _src.i = var57.i;
+        var58 = _src.x2[1];
+        var59 = _src.x2[0];
       }
       /* 5: splitwb */
       {
         orc_union16 _src;
-        _src.i = var58.i;
-        var62 = _src.x2[1];
-        var63 = _src.x2[0];
+        _src.i = var56.i;
+        var60 = _src.x2[1];
+        var61 = _src.x2[0];
       }
-      /* 6: convsbw */
-      var64.i = var60;
-      /* 7: convsbw */
-      var65.i = var63;
-      /* 8: convsbw */
-      var66.i = var62;
-      /* 10: mullw */
-      var67.i = (var64.i * var50.i) & 0xffff;
-      /* 11: shrsw */
-      var68.i = var67.i >> 8;
-      /* 12: addssw */
-      var69.i = ORC_CLAMP_SW (var64.i + var68.i);
+      /* 6: splatbw */
+      var62.i = ((var58 & 0xff) << 8) | (var58 & 0xff);
+      /* 7: splatbw */
+      var63.i = ((var61 & 0xff) << 8) | (var61 & 0xff);
+      /* 8: splatbw */
+      var64.i = ((var60 & 0xff) << 8) | (var60 & 0xff);
+      /* 10: mulhsw */
+      var65.i = (var62.i * var48.i) >> 16;
+      /* 12: mulhsw */
+      var66.i = (var64.i * var49.i) >> 16;
       /* 13: addssw */
-      var70.i = ORC_CLAMP_SW (var69.i + var66.i);
-      /* 15: mullw */
-      var71.i = (var66.i * var51.i) & 0xffff;
-      /* 16: shrsw */
-      var72.i = var71.i >> 8;
-      /* 17: subssw */
-      var73.i = ORC_CLAMP_SW (var70.i - var72.i);
-      /* 18: addssw */
-      var74.i = ORC_CLAMP_SW (var73.i + var66.i);
+      var67.i = ORC_CLAMP_SW (var65.i + var66.i);
+      /* 15: mulhsw */
+      var68.i = (var63.i * var50.i) >> 16;
+      /* 16: addssw */
+      var69.i = ORC_CLAMP_SW (var65.i + var68.i);
+      /* 18: mulhsw */
+      var70.i = (var63.i * var51.i) >> 16;
       /* 19: addssw */
-      var75.i = ORC_CLAMP_SW (var69.i + var65.i);
-      /* 20: addssw */
-      var76.i = ORC_CLAMP_SW (var75.i + var65.i);
-      /* 22: mullw */
-      var77.i = (var65.i * var52.i) & 0xffff;
-      /* 23: shrsw */
-      var78.i = var77.i >> 8;
-      /* 24: addssw */
-      var79.i = ORC_CLAMP_SW (var76.i + var78.i);
-      /* 26: mullw */
-      var80.i = (var65.i * var53.i) & 0xffff;
-      /* 27: shrsw */
-      var81.i = var80.i >> 8;
-      /* 28: subssw */
-      var82.i = ORC_CLAMP_SW (var69.i - var81.i);
-      /* 30: mullw */
-      var83.i = (var66.i * var54.i) & 0xffff;
-      /* 31: shrsw */
-      var84.i = var83.i >> 8;
-      /* 32: subssw */
-      var85.i = ORC_CLAMP_SW (var82.i - var84.i);
-      /* 33: subssw */
-      var86.i = ORC_CLAMP_SW (var85.i - var84.i);
-      /* 34: convssswb */
-      var87 = ORC_CLAMP_SB (var74.i);
-      /* 35: convssswb */
-      var88 = ORC_CLAMP_SB (var86.i);
-      /* 36: convssswb */
-      var89 = ORC_CLAMP_SB (var79.i);
-      /* 37: mergebw */
+      var71.i = ORC_CLAMP_SW (var65.i + var70.i);
+      /* 21: mulhsw */
+      var72.i = (var64.i * var52.i) >> 16;
+      /* 22: addssw */
+      var73.i = ORC_CLAMP_SW (var71.i + var72.i);
+      /* 23: convssswb */
+      var74 = ORC_CLAMP_SB (var67.i);
+      /* 24: convssswb */
+      var75 = ORC_CLAMP_SB (var73.i);
+      /* 25: convssswb */
+      var76 = ORC_CLAMP_SB (var69.i);
+      /* 26: mergebw */
       {
         orc_union16 _dest;
-        _dest.x2[0] = var61;
-        _dest.x2[1] = var87;
-        var90.i = _dest.i;
+        _dest.x2[0] = var59;
+        _dest.x2[1] = var74;
+        var77.i = _dest.i;
       }
-      /* 38: mergebw */
+      /* 27: mergebw */
       {
         orc_union16 _dest;
-        _dest.x2[0] = var88;
-        _dest.x2[1] = var89;
-        var91.i = _dest.i;
+        _dest.x2[0] = var75;
+        _dest.x2[1] = var76;
+        var78.i = _dest.i;
       }
-      /* 39: mergewl */
+      /* 28: mergewl */
       {
         orc_union32 _dest;
-        _dest.x2[0] = var90.i;
-        _dest.x2[1] = var91.i;
-        var92.i = _dest.i;
+        _dest.x2[0] = var77.i;
+        _dest.x2[1] = var78.i;
+        var79.i = _dest.i;
       }
-      /* 41: addb */
-      var56.x4[0] = var92.x4[0] + var55.x4[0];
-      var56.x4[1] = var92.x4[1] + var55.x4[1];
-      var56.x4[2] = var92.x4[2] + var55.x4[2];
-      var56.x4[3] = var92.x4[3] + var55.x4[3];
-      /* 42: storel */
-      ptr0[i] = var56;
+      /* 30: addb */
+      var54.x4[0] = var79.x4[0] + var53.x4[0];
+      var54.x4[1] = var79.x4[1] + var53.x4[1];
+      var54.x4[2] = var79.x4[2] + var53.x4[2];
+      var54.x4[3] = var79.x4[3] + var53.x4[3];
+      /* 31: storel */
+      ptr0[i] = var54;
     }
   }
 
@@ -6856,50 +6742,32 @@
   int m = ex->params[ORC_VAR_A1];
   orc_union32 *ORC_RESTRICT ptr0;
   const orc_union32 *ORC_RESTRICT ptr4;
-  orc_union32 var48;
+  orc_union32 var46;
 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union32 var49;
+  volatile orc_union32 var47;
 #else
-  orc_union32 var49;
+  orc_union32 var47;
 #endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var50;
-#else
+  orc_union16 var48;
+  orc_union16 var49;
   orc_union16 var50;
-#endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var51;
-#else
   orc_union16 var51;
-#endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var52;
-#else
   orc_union16 var52;
-#endif
 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var53;
+  volatile orc_union32 var53;
 #else
-  orc_union16 var53;
+  orc_union32 var53;
 #endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var54;
-#else
-  orc_union16 var54;
-#endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union32 var55;
-#else
+  orc_union32 var54;
   orc_union32 var55;
-#endif
-  orc_union32 var56;
-  orc_union32 var57;
-  orc_union16 var58;
-  orc_union16 var59;
+  orc_union16 var56;
+  orc_union16 var57;
+  orc_int8 var58;
+  orc_int8 var59;
   orc_int8 var60;
   orc_int8 var61;
-  orc_int8 var62;
-  orc_int8 var63;
+  orc_union16 var62;
+  orc_union16 var63;
   orc_union16 var64;
   orc_union16 var65;
   orc_union16 var66;
@@ -6910,160 +6778,125 @@
   orc_union16 var71;
   orc_union16 var72;
   orc_union16 var73;
-  orc_union16 var74;
-  orc_union16 var75;
-  orc_union16 var76;
+  orc_int8 var74;
+  orc_int8 var75;
+  orc_int8 var76;
   orc_union16 var77;
   orc_union16 var78;
-  orc_union16 var79;
-  orc_union16 var80;
-  orc_union16 var81;
-  orc_union16 var82;
-  orc_union16 var83;
-  orc_union16 var84;
-  orc_union16 var85;
-  orc_union16 var86;
-  orc_int8 var87;
-  orc_int8 var88;
-  orc_int8 var89;
-  orc_union16 var90;
-  orc_union16 var91;
-  orc_union32 var92;
+  orc_union32 var79;
 
   for (j = 0; j < m; j++) {
     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
 
     /* 1: loadpb */
-    var49.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var49.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var49.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var49.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var47.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var47.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var47.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var47.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
     /* 9: loadpw */
-    var50.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */
+    var48.i = ex->params[24];
+    /* 11: loadpw */
+    var49.i = ex->params[25];
     /* 14: loadpw */
-    var51.i = (int) 0x00000067; /* 103 or 5.08888e-322f */
-    /* 21: loadpw */
-    var52.i = (int) 0x00000004; /* 4 or 1.97626e-323f */
-    /* 25: loadpw */
-    var53.i = (int) 0x00000064; /* 100 or 4.94066e-322f */
-    /* 29: loadpw */
-    var54.i = (int) 0x00000068; /* 104 or 5.13828e-322f */
-    /* 40: loadpb */
-    var55.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var55.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var55.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var55.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var50.i = ex->params[26];
+    /* 17: loadpw */
+    var51.i = ex->params[27];
+    /* 20: loadpw */
+    var52.i = ex->params[28];
+    /* 29: loadpb */
+    var53.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var53.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var53.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var53.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
 
     for (i = 0; i < n; i++) {
       /* 0: loadl */
-      var48 = ptr4[i];
+      var46 = ptr4[i];
       /* 2: subb */
-      var57.x4[0] = var48.x4[0] - var49.x4[0];
-      var57.x4[1] = var48.x4[1] - var49.x4[1];
-      var57.x4[2] = var48.x4[2] - var49.x4[2];
-      var57.x4[3] = var48.x4[3] - var49.x4[3];
+      var55.x4[0] = var46.x4[0] - var47.x4[0];
+      var55.x4[1] = var46.x4[1] - var47.x4[1];
+      var55.x4[2] = var46.x4[2] - var47.x4[2];
+      var55.x4[3] = var46.x4[3] - var47.x4[3];
       /* 3: splitlw */
       {
         orc_union32 _src;
-        _src.i = var57.i;
-        var58.i = _src.x2[1];
-        var59.i = _src.x2[0];
+        _src.i = var55.i;
+        var56.i = _src.x2[1];
+        var57.i = _src.x2[0];
       }
       /* 4: splitwb */
       {
         orc_union16 _src;
-        _src.i = var59.i;
-        var60 = _src.x2[1];
-        var61 = _src.x2[0];
+        _src.i = var57.i;
+        var58 = _src.x2[1];
+        var59 = _src.x2[0];
       }
       /* 5: splitwb */
       {
         orc_union16 _src;
-        _src.i = var58.i;
-        var62 = _src.x2[1];
-        var63 = _src.x2[0];
+        _src.i = var56.i;
+        var60 = _src.x2[1];
+        var61 = _src.x2[0];
       }
-      /* 6: convsbw */
-      var64.i = var60;
-      /* 7: convsbw */
-      var65.i = var63;
-      /* 8: convsbw */
-      var66.i = var62;
-      /* 10: mullw */
-      var67.i = (var64.i * var50.i) & 0xffff;
-      /* 11: shrsw */
-      var68.i = var67.i >> 8;
-      /* 12: addssw */
-      var69.i = ORC_CLAMP_SW (var64.i + var68.i);
+      /* 6: splatbw */
+      var62.i = ((var58 & 0xff) << 8) | (var58 & 0xff);
+      /* 7: splatbw */
+      var63.i = ((var61 & 0xff) << 8) | (var61 & 0xff);
+      /* 8: splatbw */
+      var64.i = ((var60 & 0xff) << 8) | (var60 & 0xff);
+      /* 10: mulhsw */
+      var65.i = (var62.i * var48.i) >> 16;
+      /* 12: mulhsw */
+      var66.i = (var64.i * var49.i) >> 16;
       /* 13: addssw */
-      var70.i = ORC_CLAMP_SW (var69.i + var66.i);
-      /* 15: mullw */
-      var71.i = (var66.i * var51.i) & 0xffff;
-      /* 16: shrsw */
-      var72.i = var71.i >> 8;
-      /* 17: subssw */
-      var73.i = ORC_CLAMP_SW (var70.i - var72.i);
-      /* 18: addssw */
-      var74.i = ORC_CLAMP_SW (var73.i + var66.i);
+      var67.i = ORC_CLAMP_SW (var65.i + var66.i);
+      /* 15: mulhsw */
+      var68.i = (var63.i * var50.i) >> 16;
+      /* 16: addssw */
+      var69.i = ORC_CLAMP_SW (var65.i + var68.i);
+      /* 18: mulhsw */
+      var70.i = (var63.i * var51.i) >> 16;
       /* 19: addssw */
-      var75.i = ORC_CLAMP_SW (var69.i + var65.i);
-      /* 20: addssw */
-      var76.i = ORC_CLAMP_SW (var75.i + var65.i);
-      /* 22: mullw */
-      var77.i = (var65.i * var52.i) & 0xffff;
-      /* 23: shrsw */
-      var78.i = var77.i >> 8;
-      /* 24: addssw */
-      var79.i = ORC_CLAMP_SW (var76.i + var78.i);
-      /* 26: mullw */
-      var80.i = (var65.i * var53.i) & 0xffff;
-      /* 27: shrsw */
-      var81.i = var80.i >> 8;
-      /* 28: subssw */
-      var82.i = ORC_CLAMP_SW (var69.i - var81.i);
-      /* 30: mullw */
-      var83.i = (var66.i * var54.i) & 0xffff;
-      /* 31: shrsw */
-      var84.i = var83.i >> 8;
-      /* 32: subssw */
-      var85.i = ORC_CLAMP_SW (var82.i - var84.i);
-      /* 33: subssw */
-      var86.i = ORC_CLAMP_SW (var85.i - var84.i);
-      /* 34: convssswb */
-      var87 = ORC_CLAMP_SB (var74.i);
-      /* 35: convssswb */
-      var88 = ORC_CLAMP_SB (var86.i);
-      /* 36: convssswb */
-      var89 = ORC_CLAMP_SB (var79.i);
-      /* 37: mergebw */
+      var71.i = ORC_CLAMP_SW (var65.i + var70.i);
+      /* 21: mulhsw */
+      var72.i = (var64.i * var52.i) >> 16;
+      /* 22: addssw */
+      var73.i = ORC_CLAMP_SW (var71.i + var72.i);
+      /* 23: convssswb */
+      var74 = ORC_CLAMP_SB (var67.i);
+      /* 24: convssswb */
+      var75 = ORC_CLAMP_SB (var73.i);
+      /* 25: convssswb */
+      var76 = ORC_CLAMP_SB (var69.i);
+      /* 26: mergebw */
       {
         orc_union16 _dest;
-        _dest.x2[0] = var61;
-        _dest.x2[1] = var87;
-        var90.i = _dest.i;
+        _dest.x2[0] = var59;
+        _dest.x2[1] = var74;
+        var77.i = _dest.i;
       }
-      /* 38: mergebw */
+      /* 27: mergebw */
       {
         orc_union16 _dest;
-        _dest.x2[0] = var88;
-        _dest.x2[1] = var89;
-        var91.i = _dest.i;
+        _dest.x2[0] = var75;
+        _dest.x2[1] = var76;
+        var78.i = _dest.i;
       }
-      /* 39: mergewl */
+      /* 28: mergewl */
       {
         orc_union32 _dest;
-        _dest.x2[0] = var90.i;
-        _dest.x2[1] = var91.i;
-        var92.i = _dest.i;
+        _dest.x2[0] = var77.i;
+        _dest.x2[1] = var78.i;
+        var79.i = _dest.i;
       }
-      /* 41: addb */
-      var56.x4[0] = var92.x4[0] + var55.x4[0];
-      var56.x4[1] = var92.x4[1] + var55.x4[1];
-      var56.x4[2] = var92.x4[2] + var55.x4[2];
-      var56.x4[3] = var92.x4[3] + var55.x4[3];
-      /* 42: storel */
-      ptr0[i] = var56;
+      /* 30: addb */
+      var54.x4[0] = var79.x4[0] + var53.x4[0];
+      var54.x4[1] = var79.x4[1] + var53.x4[1];
+      var54.x4[2] = var79.x4[2] + var53.x4[2];
+      var54.x4[3] = var79.x4[3] + var53.x4[3];
+      /* 31: storel */
+      ptr0[i] = var54;
     }
   }
 
@@ -7071,7 +6904,8 @@
 
 void
 video_convert_orc_convert_AYUV_ARGB (guint8 * ORC_RESTRICT d1, int d1_stride,
-    const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
+    const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3,
+    int p4, int p5, int n, int m)
 {
   OrcExecutor _ex, *ex = &_ex;
   static volatile int p_inited = 0;
@@ -7087,20 +6921,16 @@
       static const orc_uint8 bc[] = {
         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 65, 89,
-        85, 86, 95, 65, 82, 71, 66, 11, 4, 4, 12, 4, 4, 14, 1, 8,
-        0, 0, 0, 14, 4, 128, 0, 0, 0, 14, 4, 42, 0, 0, 0, 14,
-        4, 103, 0, 0, 0, 14, 4, 4, 0, 0, 0, 14, 4, 100, 0, 0,
-        0, 14, 4, 104, 0, 0, 0, 20, 2, 20, 2, 20, 1, 20, 1, 20,
-        1, 20, 1, 20, 2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 2, 20,
-        1, 20, 1, 20, 1, 20, 4, 21, 2, 65, 47, 4, 17, 198, 32, 33,
-        47, 199, 35, 34, 33, 199, 37, 36, 32, 149, 38, 35, 149, 39, 36, 149,
-        40, 37, 89, 32, 38, 18, 94, 32, 32, 16, 71, 38, 38, 32, 71, 41,
-        38, 40, 89, 32, 40, 19, 94, 32, 32, 16, 99, 41, 41, 32, 71, 41,
-        41, 40, 71, 43, 38, 39, 71, 43, 43, 39, 89, 32, 39, 20, 94, 32,
-        32, 16, 71, 43, 43, 32, 89, 32, 39, 21, 94, 32, 32, 16, 99, 42,
-        38, 32, 89, 32, 40, 22, 94, 32, 32, 16, 99, 42, 42, 32, 99, 42,
-        42, 32, 159, 44, 41, 159, 45, 42, 159, 46, 43, 196, 32, 34, 44, 196,
-        33, 45, 46, 195, 47, 32, 33, 21, 2, 33, 0, 47, 17, 2, 0,
+        85, 86, 95, 65, 82, 71, 66, 11, 4, 4, 12, 4, 4, 14, 1, 128,
+        0, 0, 0, 16, 2, 16, 2, 16, 2, 16, 2, 16, 2, 20, 1, 20,
+        1, 20, 1, 20, 1, 20, 2, 20, 2, 20, 2, 20, 2, 20, 2, 20,
+        2, 20, 1, 20, 1, 20, 1, 20, 4, 21, 2, 65, 45, 4, 16, 198,
+        38, 36, 45, 199, 33, 32, 36, 199, 35, 34, 38, 151, 36, 33, 151, 37,
+        34, 151, 38, 35, 90, 36, 36, 24, 90, 39, 38, 25, 71, 39, 36, 39,
+        90, 41, 37, 26, 71, 41, 36, 41, 90, 40, 37, 27, 71, 40, 36, 40,
+        90, 36, 38, 28, 71, 40, 40, 36, 159, 42, 39, 159, 43, 40, 159, 44,
+        41, 196, 39, 32, 42, 196, 41, 43, 44, 195, 45, 39, 41, 21, 2, 33,
+        0, 45, 16, 2, 0,
       };
       p = orc_program_new_from_static_bytecode (bc);
       orc_program_set_backup_function (p,
@@ -7113,97 +6943,72 @@
           _backup_video_convert_orc_convert_AYUV_ARGB);
       orc_program_add_destination (p, 4, "d1");
       orc_program_add_source (p, 4, "s1");
-      orc_program_add_constant (p, 1, 0x00000008, "c1");
-      orc_program_add_constant (p, 4, 0x00000080, "c2");
-      orc_program_add_constant (p, 4, 0x0000002a, "c3");
-      orc_program_add_constant (p, 4, 0x00000067, "c4");
-      orc_program_add_constant (p, 4, 0x00000004, "c5");
-      orc_program_add_constant (p, 4, 0x00000064, "c6");
-      orc_program_add_constant (p, 4, 0x00000068, "c7");
-      orc_program_add_temporary (p, 2, "t1");
-      orc_program_add_temporary (p, 2, "t2");
+      orc_program_add_constant (p, 1, 0x00000080, "c1");
+      orc_program_add_parameter (p, 2, "p1");
+      orc_program_add_parameter (p, 2, "p2");
+      orc_program_add_parameter (p, 2, "p3");
+      orc_program_add_parameter (p, 2, "p4");
+      orc_program_add_parameter (p, 2, "p5");
+      orc_program_add_temporary (p, 1, "t1");
+      orc_program_add_temporary (p, 1, "t2");
       orc_program_add_temporary (p, 1, "t3");
       orc_program_add_temporary (p, 1, "t4");
-      orc_program_add_temporary (p, 1, "t5");
-      orc_program_add_temporary (p, 1, "t6");
+      orc_program_add_temporary (p, 2, "t5");
+      orc_program_add_temporary (p, 2, "t6");
       orc_program_add_temporary (p, 2, "t7");
       orc_program_add_temporary (p, 2, "t8");
       orc_program_add_temporary (p, 2, "t9");
       orc_program_add_temporary (p, 2, "t10");
-      orc_program_add_temporary (p, 2, "t11");
-      orc_program_add_temporary (p, 2, "t12");
+      orc_program_add_temporary (p, 1, "t11");
+      orc_program_add_temporary (p, 1, "t12");
       orc_program_add_temporary (p, 1, "t13");
-      orc_program_add_temporary (p, 1, "t14");
-      orc_program_add_temporary (p, 1, "t15");
-      orc_program_add_temporary (p, 4, "t16");
+      orc_program_add_temporary (p, 4, "t14");
 
-      orc_program_append_2 (p, "subb", 2, 47, ORC_VAR_S1, ORC_VAR_C2,
+      orc_program_append_2 (p, "subb", 2, ORC_VAR_T14, ORC_VAR_S1, ORC_VAR_C1,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T1, ORC_VAR_T2, 47,
+      orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T7, ORC_VAR_T5,
+          ORC_VAR_T14, ORC_VAR_D1);
+      orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T5,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T2,
+      orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T7,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_T1,
+      orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_D1,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1,
+      orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_D1,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_D1,
+      orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_D1,
+      orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_P1,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T7, ORC_VAR_C3,
+      orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_P2,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
+      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_T8,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T1,
+      orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T10, ORC_VAR_T6, ORC_VAR_P3,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T7, ORC_VAR_T9,
+      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T5,
+          ORC_VAR_T10, ORC_VAR_D1);
+      orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_P4,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_C4,
+      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T9, ORC_VAR_T5, ORC_VAR_T9,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
+      orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T7, ORC_VAR_P5,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "subssw", 0, ORC_VAR_T10, ORC_VAR_T10,
-          ORC_VAR_T1, ORC_VAR_D1);
-      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T10,
-          ORC_VAR_T9, ORC_VAR_D1);
-      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T7, ORC_VAR_T8,
+      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T5,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T12,
-          ORC_VAR_T8, ORC_VAR_D1);
-      orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_C5,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T12,
-          ORC_VAR_T1, ORC_VAR_D1);
-      orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_C6,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T7, ORC_VAR_T1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_C7,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T11,
-          ORC_VAR_T1, ORC_VAR_D1);
-      orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T11,
-          ORC_VAR_T1, ORC_VAR_D1);
+      orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T11, ORC_VAR_T8,
+          ORC_VAR_D1, ORC_VAR_D1);
+      orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T12, ORC_VAR_T9,
+          ORC_VAR_D1, ORC_VAR_D1);
       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T13, ORC_VAR_T10,
           ORC_VAR_D1, ORC_VAR_D1);
-      orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T14, ORC_VAR_T11,
-          ORC_VAR_D1, ORC_VAR_D1);
-      orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T15, ORC_VAR_T12,
-          ORC_VAR_D1, ORC_VAR_D1);
-      orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T3,
+      orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T8, ORC_VAR_T1,
+          ORC_VAR_T11, ORC_VAR_D1);
+      orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T10, ORC_VAR_T12,
           ORC_VAR_T13, ORC_VAR_D1);
-      orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_T14,
-          ORC_VAR_T15, ORC_VAR_D1);
-      orc_program_append_2 (p, "mergewl", 0, 47, ORC_VAR_T1, ORC_VAR_T2,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, 47, ORC_VAR_C2,
+      orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T14, ORC_VAR_T8,
+          ORC_VAR_T10, ORC_VAR_D1);
+      orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T14, ORC_VAR_C1,
           ORC_VAR_D1);
 #endif
 
@@ -7223,6 +7028,11 @@
   ex->params[ORC_VAR_D1] = d1_stride;
   ex->arrays[ORC_VAR_S1] = (void *) s1;
   ex->params[ORC_VAR_S1] = s1_stride;
+  ex->params[ORC_VAR_P1] = p1;
+  ex->params[ORC_VAR_P2] = p2;
+  ex->params[ORC_VAR_P3] = p3;
+  ex->params[ORC_VAR_P4] = p4;
+  ex->params[ORC_VAR_P5] = p5;
 
   func = c->exec;
   func (ex);
@@ -7234,56 +7044,39 @@
 #ifdef DISABLE_ORC
 void
 video_convert_orc_convert_AYUV_BGRA (guint8 * ORC_RESTRICT d1, int d1_stride,
-    const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
+    const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3,
+    int p4, int p5, int n, int m)
 {
   int i;
   int j;
   orc_union32 *ORC_RESTRICT ptr0;
   const orc_union32 *ORC_RESTRICT ptr4;
-  orc_union32 var48;
+  orc_union32 var46;
 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union32 var49;
+  volatile orc_union32 var47;
 #else
-  orc_union32 var49;
+  orc_union32 var47;
 #endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var50;
-#else
+  orc_union16 var48;
+  orc_union16 var49;
   orc_union16 var50;
-#endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var51;
-#else
   orc_union16 var51;
-#endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var52;
-#else
   orc_union16 var52;
-#endif
 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var53;
+  volatile orc_union32 var53;
 #else
-  orc_union16 var53;
+  orc_union32 var53;
 #endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var54;
-#else
-  orc_union16 var54;
-#endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union32 var55;
-#else
+  orc_union32 var54;
   orc_union32 var55;
-#endif
-  orc_union32 var56;
-  orc_union32 var57;
-  orc_union16 var58;
-  orc_union16 var59;
+  orc_union16 var56;
+  orc_union16 var57;
+  orc_int8 var58;
+  orc_int8 var59;
   orc_int8 var60;
   orc_int8 var61;
-  orc_int8 var62;
-  orc_int8 var63;
+  orc_union16 var62;
+  orc_union16 var63;
   orc_union16 var64;
   orc_union16 var65;
   orc_union16 var66;
@@ -7294,160 +7087,125 @@
   orc_union16 var71;
   orc_union16 var72;
   orc_union16 var73;
-  orc_union16 var74;
-  orc_union16 var75;
-  orc_union16 var76;
+  orc_int8 var74;
+  orc_int8 var75;
+  orc_int8 var76;
   orc_union16 var77;
   orc_union16 var78;
-  orc_union16 var79;
-  orc_union16 var80;
-  orc_union16 var81;
-  orc_union16 var82;
-  orc_union16 var83;
-  orc_union16 var84;
-  orc_union16 var85;
-  orc_union16 var86;
-  orc_int8 var87;
-  orc_int8 var88;
-  orc_int8 var89;
-  orc_union16 var90;
-  orc_union16 var91;
-  orc_union32 var92;
+  orc_union32 var79;
 
   for (j = 0; j < m; j++) {
     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
 
     /* 1: loadpb */
-    var49.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var49.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var49.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var49.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var47.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var47.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var47.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var47.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
     /* 9: loadpw */
-    var50.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */
+    var48.i = p1;
+    /* 11: loadpw */
+    var49.i = p2;
     /* 14: loadpw */
-    var51.i = (int) 0x00000067; /* 103 or 5.08888e-322f */
-    /* 21: loadpw */
-    var52.i = (int) 0x00000004; /* 4 or 1.97626e-323f */
-    /* 25: loadpw */
-    var53.i = (int) 0x00000064; /* 100 or 4.94066e-322f */
-    /* 29: loadpw */
-    var54.i = (int) 0x00000068; /* 104 or 5.13828e-322f */
-    /* 40: loadpb */
-    var55.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var55.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var55.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var55.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var50.i = p3;
+    /* 17: loadpw */
+    var51.i = p4;
+    /* 20: loadpw */
+    var52.i = p5;
+    /* 29: loadpb */
+    var53.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var53.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var53.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var53.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
 
     for (i = 0; i < n; i++) {
       /* 0: loadl */
-      var48 = ptr4[i];
+      var46 = ptr4[i];
       /* 2: subb */
-      var57.x4[0] = var48.x4[0] - var49.x4[0];
-      var57.x4[1] = var48.x4[1] - var49.x4[1];
-      var57.x4[2] = var48.x4[2] - var49.x4[2];
-      var57.x4[3] = var48.x4[3] - var49.x4[3];
+      var55.x4[0] = var46.x4[0] - var47.x4[0];
+      var55.x4[1] = var46.x4[1] - var47.x4[1];
+      var55.x4[2] = var46.x4[2] - var47.x4[2];
+      var55.x4[3] = var46.x4[3] - var47.x4[3];
       /* 3: splitlw */
       {
         orc_union32 _src;
-        _src.i = var57.i;
-        var58.i = _src.x2[1];
-        var59.i = _src.x2[0];
+        _src.i = var55.i;
+        var56.i = _src.x2[1];
+        var57.i = _src.x2[0];
       }
       /* 4: splitwb */
       {
         orc_union16 _src;
-        _src.i = var59.i;
-        var60 = _src.x2[1];
-        var61 = _src.x2[0];
+        _src.i = var57.i;
+        var58 = _src.x2[1];
+        var59 = _src.x2[0];
       }
       /* 5: splitwb */
       {
         orc_union16 _src;
-        _src.i = var58.i;
-        var62 = _src.x2[1];
-        var63 = _src.x2[0];
+        _src.i = var56.i;
+        var60 = _src.x2[1];
+        var61 = _src.x2[0];
       }
-      /* 6: convsbw */
-      var64.i = var60;
-      /* 7: convsbw */
-      var65.i = var63;
-      /* 8: convsbw */
-      var66.i = var62;
-      /* 10: mullw */
-      var67.i = (var64.i * var50.i) & 0xffff;
-      /* 11: shrsw */
-      var68.i = var67.i >> 8;
-      /* 12: addssw */
-      var69.i = ORC_CLAMP_SW (var64.i + var68.i);
+      /* 6: splatbw */
+      var62.i = ((var58 & 0xff) << 8) | (var58 & 0xff);
+      /* 7: splatbw */
+      var63.i = ((var61 & 0xff) << 8) | (var61 & 0xff);
+      /* 8: splatbw */
+      var64.i = ((var60 & 0xff) << 8) | (var60 & 0xff);
+      /* 10: mulhsw */
+      var65.i = (var62.i * var48.i) >> 16;
+      /* 12: mulhsw */
+      var66.i = (var64.i * var49.i) >> 16;
       /* 13: addssw */
-      var70.i = ORC_CLAMP_SW (var69.i + var66.i);
-      /* 15: mullw */
-      var71.i = (var66.i * var51.i) & 0xffff;
-      /* 16: shrsw */
-      var72.i = var71.i >> 8;
-      /* 17: subssw */
-      var73.i = ORC_CLAMP_SW (var70.i - var72.i);
-      /* 18: addssw */
-      var74.i = ORC_CLAMP_SW (var73.i + var66.i);
+      var67.i = ORC_CLAMP_SW (var65.i + var66.i);
+      /* 15: mulhsw */
+      var68.i = (var63.i * var50.i) >> 16;
+      /* 16: addssw */
+      var69.i = ORC_CLAMP_SW (var65.i + var68.i);
+      /* 18: mulhsw */
+      var70.i = (var63.i * var51.i) >> 16;
       /* 19: addssw */
-      var75.i = ORC_CLAMP_SW (var69.i + var65.i);
-      /* 20: addssw */
-      var76.i = ORC_CLAMP_SW (var75.i + var65.i);
-      /* 22: mullw */
-      var77.i = (var65.i * var52.i) & 0xffff;
-      /* 23: shrsw */
-      var78.i = var77.i >> 8;
-      /* 24: addssw */
-      var79.i = ORC_CLAMP_SW (var76.i + var78.i);
-      /* 26: mullw */
-      var80.i = (var65.i * var53.i) & 0xffff;
-      /* 27: shrsw */
-      var81.i = var80.i >> 8;
-      /* 28: subssw */
-      var82.i = ORC_CLAMP_SW (var69.i - var81.i);
-      /* 30: mullw */
-      var83.i = (var66.i * var54.i) & 0xffff;
-      /* 31: shrsw */
-      var84.i = var83.i >> 8;
-      /* 32: subssw */
-      var85.i = ORC_CLAMP_SW (var82.i - var84.i);
-      /* 33: subssw */
-      var86.i = ORC_CLAMP_SW (var85.i - var84.i);
-      /* 34: convssswb */
-      var87 = ORC_CLAMP_SB (var74.i);
-      /* 35: convssswb */
-      var88 = ORC_CLAMP_SB (var86.i);
-      /* 36: convssswb */
-      var89 = ORC_CLAMP_SB (var79.i);
-      /* 37: mergebw */
+      var71.i = ORC_CLAMP_SW (var65.i + var70.i);
+      /* 21: mulhsw */
+      var72.i = (var64.i * var52.i) >> 16;
+      /* 22: addssw */
+      var73.i = ORC_CLAMP_SW (var71.i + var72.i);
+      /* 23: convssswb */
+      var74 = ORC_CLAMP_SB (var67.i);
+      /* 24: convssswb */
+      var75 = ORC_CLAMP_SB (var73.i);
+      /* 25: convssswb */
+      var76 = ORC_CLAMP_SB (var69.i);
+      /* 26: mergebw */
       {
         orc_union16 _dest;
-        _dest.x2[0] = var89;
-        _dest.x2[1] = var88;
-        var90.i = _dest.i;
+        _dest.x2[0] = var76;
+        _dest.x2[1] = var75;
+        var77.i = _dest.i;
       }
-      /* 38: mergebw */
+      /* 27: mergebw */
       {
         orc_union16 _dest;
-        _dest.x2[0] = var87;
-        _dest.x2[1] = var61;
-        var91.i = _dest.i;
+        _dest.x2[0] = var74;
+        _dest.x2[1] = var59;
+        var78.i = _dest.i;
       }
-      /* 39: mergewl */
+      /* 28: mergewl */
       {
         orc_union32 _dest;
-        _dest.x2[0] = var90.i;
-        _dest.x2[1] = var91.i;
-        var92.i = _dest.i;
+        _dest.x2[0] = var77.i;
+        _dest.x2[1] = var78.i;
+        var79.i = _dest.i;
       }
-      /* 41: addb */
-      var56.x4[0] = var92.x4[0] + var55.x4[0];
-      var56.x4[1] = var92.x4[1] + var55.x4[1];
-      var56.x4[2] = var92.x4[2] + var55.x4[2];
-      var56.x4[3] = var92.x4[3] + var55.x4[3];
-      /* 42: storel */
-      ptr0[i] = var56;
+      /* 30: addb */
+      var54.x4[0] = var79.x4[0] + var53.x4[0];
+      var54.x4[1] = var79.x4[1] + var53.x4[1];
+      var54.x4[2] = var79.x4[2] + var53.x4[2];
+      var54.x4[3] = var79.x4[3] + var53.x4[3];
+      /* 31: storel */
+      ptr0[i] = var54;
     }
   }
 
@@ -7463,50 +7221,32 @@
   int m = ex->params[ORC_VAR_A1];
   orc_union32 *ORC_RESTRICT ptr0;
   const orc_union32 *ORC_RESTRICT ptr4;
-  orc_union32 var48;
+  orc_union32 var46;
 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union32 var49;
+  volatile orc_union32 var47;
 #else
-  orc_union32 var49;
+  orc_union32 var47;
 #endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var50;
-#else
+  orc_union16 var48;
+  orc_union16 var49;
   orc_union16 var50;
-#endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var51;
-#else
   orc_union16 var51;
-#endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var52;
-#else
   orc_union16 var52;
-#endif
 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var53;
+  volatile orc_union32 var53;
 #else
-  orc_union16 var53;
+  orc_union32 var53;
 #endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var54;
-#else
-  orc_union16 var54;
-#endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union32 var55;
-#else
+  orc_union32 var54;
   orc_union32 var55;
-#endif
-  orc_union32 var56;
-  orc_union32 var57;
-  orc_union16 var58;
-  orc_union16 var59;
+  orc_union16 var56;
+  orc_union16 var57;
+  orc_int8 var58;
+  orc_int8 var59;
   orc_int8 var60;
   orc_int8 var61;
-  orc_int8 var62;
-  orc_int8 var63;
+  orc_union16 var62;
+  orc_union16 var63;
   orc_union16 var64;
   orc_union16 var65;
   orc_union16 var66;
@@ -7517,160 +7257,125 @@
   orc_union16 var71;
   orc_union16 var72;
   orc_union16 var73;
-  orc_union16 var74;
-  orc_union16 var75;
-  orc_union16 var76;
+  orc_int8 var74;
+  orc_int8 var75;
+  orc_int8 var76;
   orc_union16 var77;
   orc_union16 var78;
-  orc_union16 var79;
-  orc_union16 var80;
-  orc_union16 var81;
-  orc_union16 var82;
-  orc_union16 var83;
-  orc_union16 var84;
-  orc_union16 var85;
-  orc_union16 var86;
-  orc_int8 var87;
-  orc_int8 var88;
-  orc_int8 var89;
-  orc_union16 var90;
-  orc_union16 var91;
-  orc_union32 var92;
+  orc_union32 var79;
 
   for (j = 0; j < m; j++) {
     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
 
     /* 1: loadpb */
-    var49.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var49.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var49.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var49.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var47.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var47.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var47.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var47.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
     /* 9: loadpw */
-    var50.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */
+    var48.i = ex->params[24];
+    /* 11: loadpw */
+    var49.i = ex->params[25];
     /* 14: loadpw */
-    var51.i = (int) 0x00000067; /* 103 or 5.08888e-322f */
-    /* 21: loadpw */
-    var52.i = (int) 0x00000004; /* 4 or 1.97626e-323f */
-    /* 25: loadpw */
-    var53.i = (int) 0x00000064; /* 100 or 4.94066e-322f */
-    /* 29: loadpw */
-    var54.i = (int) 0x00000068; /* 104 or 5.13828e-322f */
-    /* 40: loadpb */
-    var55.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var55.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var55.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var55.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var50.i = ex->params[26];
+    /* 17: loadpw */
+    var51.i = ex->params[27];
+    /* 20: loadpw */
+    var52.i = ex->params[28];
+    /* 29: loadpb */
+    var53.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var53.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var53.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var53.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
 
     for (i = 0; i < n; i++) {
       /* 0: loadl */
-      var48 = ptr4[i];
+      var46 = ptr4[i];
       /* 2: subb */
-      var57.x4[0] = var48.x4[0] - var49.x4[0];
-      var57.x4[1] = var48.x4[1] - var49.x4[1];
-      var57.x4[2] = var48.x4[2] - var49.x4[2];
-      var57.x4[3] = var48.x4[3] - var49.x4[3];
+      var55.x4[0] = var46.x4[0] - var47.x4[0];
+      var55.x4[1] = var46.x4[1] - var47.x4[1];
+      var55.x4[2] = var46.x4[2] - var47.x4[2];
+      var55.x4[3] = var46.x4[3] - var47.x4[3];
       /* 3: splitlw */
       {
         orc_union32 _src;
-        _src.i = var57.i;
-        var58.i = _src.x2[1];
-        var59.i = _src.x2[0];
+        _src.i = var55.i;
+        var56.i = _src.x2[1];
+        var57.i = _src.x2[0];
       }
       /* 4: splitwb */
       {
         orc_union16 _src;
-        _src.i = var59.i;
-        var60 = _src.x2[1];
-        var61 = _src.x2[0];
+        _src.i = var57.i;
+        var58 = _src.x2[1];
+        var59 = _src.x2[0];
       }
       /* 5: splitwb */
       {
         orc_union16 _src;
-        _src.i = var58.i;
-        var62 = _src.x2[1];
-        var63 = _src.x2[0];
+        _src.i = var56.i;
+        var60 = _src.x2[1];
+        var61 = _src.x2[0];
       }
-      /* 6: convsbw */
-      var64.i = var60;
-      /* 7: convsbw */
-      var65.i = var63;
-      /* 8: convsbw */
-      var66.i = var62;
-      /* 10: mullw */
-      var67.i = (var64.i * var50.i) & 0xffff;
-      /* 11: shrsw */
-      var68.i = var67.i >> 8;
-      /* 12: addssw */
-      var69.i = ORC_CLAMP_SW (var64.i + var68.i);
+      /* 6: splatbw */
+      var62.i = ((var58 & 0xff) << 8) | (var58 & 0xff);
+      /* 7: splatbw */
+      var63.i = ((var61 & 0xff) << 8) | (var61 & 0xff);
+      /* 8: splatbw */
+      var64.i = ((var60 & 0xff) << 8) | (var60 & 0xff);
+      /* 10: mulhsw */
+      var65.i = (var62.i * var48.i) >> 16;
+      /* 12: mulhsw */
+      var66.i = (var64.i * var49.i) >> 16;
       /* 13: addssw */
-      var70.i = ORC_CLAMP_SW (var69.i + var66.i);
-      /* 15: mullw */
-      var71.i = (var66.i * var51.i) & 0xffff;
-      /* 16: shrsw */
-      var72.i = var71.i >> 8;
-      /* 17: subssw */
-      var73.i = ORC_CLAMP_SW (var70.i - var72.i);
-      /* 18: addssw */
-      var74.i = ORC_CLAMP_SW (var73.i + var66.i);
+      var67.i = ORC_CLAMP_SW (var65.i + var66.i);
+      /* 15: mulhsw */
+      var68.i = (var63.i * var50.i) >> 16;
+      /* 16: addssw */
+      var69.i = ORC_CLAMP_SW (var65.i + var68.i);
+      /* 18: mulhsw */
+      var70.i = (var63.i * var51.i) >> 16;
       /* 19: addssw */
-      var75.i = ORC_CLAMP_SW (var69.i + var65.i);
-      /* 20: addssw */
-      var76.i = ORC_CLAMP_SW (var75.i + var65.i);
-      /* 22: mullw */
-      var77.i = (var65.i * var52.i) & 0xffff;
-      /* 23: shrsw */
-      var78.i = var77.i >> 8;
-      /* 24: addssw */
-      var79.i = ORC_CLAMP_SW (var76.i + var78.i);
-      /* 26: mullw */
-      var80.i = (var65.i * var53.i) & 0xffff;
-      /* 27: shrsw */
-      var81.i = var80.i >> 8;
-      /* 28: subssw */
-      var82.i = ORC_CLAMP_SW (var69.i - var81.i);
-      /* 30: mullw */
-      var83.i = (var66.i * var54.i) & 0xffff;
-      /* 31: shrsw */
-      var84.i = var83.i >> 8;
-      /* 32: subssw */
-      var85.i = ORC_CLAMP_SW (var82.i - var84.i);
-      /* 33: subssw */
-      var86.i = ORC_CLAMP_SW (var85.i - var84.i);
-      /* 34: convssswb */
-      var87 = ORC_CLAMP_SB (var74.i);
-      /* 35: convssswb */
-      var88 = ORC_CLAMP_SB (var86.i);
-      /* 36: convssswb */
-      var89 = ORC_CLAMP_SB (var79.i);
-      /* 37: mergebw */
+      var71.i = ORC_CLAMP_SW (var65.i + var70.i);
+      /* 21: mulhsw */
+      var72.i = (var64.i * var52.i) >> 16;
+      /* 22: addssw */
+      var73.i = ORC_CLAMP_SW (var71.i + var72.i);
+      /* 23: convssswb */
+      var74 = ORC_CLAMP_SB (var67.i);
+      /* 24: convssswb */
+      var75 = ORC_CLAMP_SB (var73.i);
+      /* 25: convssswb */
+      var76 = ORC_CLAMP_SB (var69.i);
+      /* 26: mergebw */
       {
         orc_union16 _dest;
-        _dest.x2[0] = var89;
-        _dest.x2[1] = var88;
-        var90.i = _dest.i;
+        _dest.x2[0] = var76;
+        _dest.x2[1] = var75;
+        var77.i = _dest.i;
       }
-      /* 38: mergebw */
+      /* 27: mergebw */
       {
         orc_union16 _dest;
-        _dest.x2[0] = var87;
-        _dest.x2[1] = var61;
-        var91.i = _dest.i;
+        _dest.x2[0] = var74;
+        _dest.x2[1] = var59;
+        var78.i = _dest.i;
       }
-      /* 39: mergewl */
+      /* 28: mergewl */
       {
         orc_union32 _dest;
-        _dest.x2[0] = var90.i;
-        _dest.x2[1] = var91.i;
-        var92.i = _dest.i;
+        _dest.x2[0] = var77.i;
+        _dest.x2[1] = var78.i;
+        var79.i = _dest.i;
       }
-      /* 41: addb */
-      var56.x4[0] = var92.x4[0] + var55.x4[0];
-      var56.x4[1] = var92.x4[1] + var55.x4[1];
-      var56.x4[2] = var92.x4[2] + var55.x4[2];
-      var56.x4[3] = var92.x4[3] + var55.x4[3];
-      /* 42: storel */
-      ptr0[i] = var56;
+      /* 30: addb */
+      var54.x4[0] = var79.x4[0] + var53.x4[0];
+      var54.x4[1] = var79.x4[1] + var53.x4[1];
+      var54.x4[2] = var79.x4[2] + var53.x4[2];
+      var54.x4[3] = var79.x4[3] + var53.x4[3];
+      /* 31: storel */
+      ptr0[i] = var54;
     }
   }
 
@@ -7678,7 +7383,8 @@
 
 void
 video_convert_orc_convert_AYUV_BGRA (guint8 * ORC_RESTRICT d1, int d1_stride,
-    const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
+    const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3,
+    int p4, int p5, int n, int m)
 {
   OrcExecutor _ex, *ex = &_ex;
   static volatile int p_inited = 0;
@@ -7694,20 +7400,16 @@
       static const orc_uint8 bc[] = {
         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 65, 89,
-        85, 86, 95, 66, 71, 82, 65, 11, 4, 4, 12, 4, 4, 14, 1, 8,
-        0, 0, 0, 14, 4, 128, 0, 0, 0, 14, 4, 42, 0, 0, 0, 14,
-        4, 103, 0, 0, 0, 14, 4, 4, 0, 0, 0, 14, 4, 100, 0, 0,
-        0, 14, 4, 104, 0, 0, 0, 20, 2, 20, 2, 20, 1, 20, 1, 20,
-        1, 20, 1, 20, 2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 2, 20,
-        1, 20, 1, 20, 1, 20, 4, 21, 2, 65, 47, 4, 17, 198, 32, 33,
-        47, 199, 35, 34, 33, 199, 37, 36, 32, 149, 38, 35, 149, 39, 36, 149,
-        40, 37, 89, 32, 38, 18, 94, 32, 32, 16, 71, 38, 38, 32, 71, 41,
-        38, 40, 89, 32, 40, 19, 94, 32, 32, 16, 99, 41, 41, 32, 71, 41,
-        41, 40, 71, 43, 38, 39, 71, 43, 43, 39, 89, 32, 39, 20, 94, 32,
-        32, 16, 71, 43, 43, 32, 89, 32, 39, 21, 94, 32, 32, 16, 99, 42,
-        38, 32, 89, 32, 40, 22, 94, 32, 32, 16, 99, 42, 42, 32, 99, 42,
-        42, 32, 159, 44, 41, 159, 45, 42, 159, 46, 43, 196, 32, 46, 45, 196,
-        33, 44, 34, 195, 47, 32, 33, 21, 2, 33, 0, 47, 17, 2, 0,
+        85, 86, 95, 66, 71, 82, 65, 11, 4, 4, 12, 4, 4, 14, 1, 128,
+        0, 0, 0, 16, 2, 16, 2, 16, 2, 16, 2, 16, 2, 20, 1, 20,
+        1, 20, 1, 20, 1, 20, 2, 20, 2, 20, 2, 20, 2, 20, 2, 20,
+        2, 20, 1, 20, 1, 20, 1, 20, 4, 21, 2, 65, 45, 4, 16, 198,
+        38, 36, 45, 199, 33, 32, 36, 199, 35, 34, 38, 151, 36, 33, 151, 37,
+        34, 151, 38, 35, 90, 36, 36, 24, 90, 39, 38, 25, 71, 39, 36, 39,
+        90, 41, 37, 26, 71, 41, 36, 41, 90, 40, 37, 27, 71, 40, 36, 40,
+        90, 36, 38, 28, 71, 40, 40, 36, 159, 42, 39, 159, 43, 40, 159, 44,
+        41, 196, 41, 44, 43, 196, 39, 42, 32, 195, 45, 41, 39, 21, 2, 33,
+        0, 45, 16, 2, 0,
       };
       p = orc_program_new_from_static_bytecode (bc);
       orc_program_set_backup_function (p,
@@ -7720,97 +7422,72 @@
           _backup_video_convert_orc_convert_AYUV_BGRA);
       orc_program_add_destination (p, 4, "d1");
       orc_program_add_source (p, 4, "s1");
-      orc_program_add_constant (p, 1, 0x00000008, "c1");
-      orc_program_add_constant (p, 4, 0x00000080, "c2");
-      orc_program_add_constant (p, 4, 0x0000002a, "c3");
-      orc_program_add_constant (p, 4, 0x00000067, "c4");
-      orc_program_add_constant (p, 4, 0x00000004, "c5");
-      orc_program_add_constant (p, 4, 0x00000064, "c6");
-      orc_program_add_constant (p, 4, 0x00000068, "c7");
-      orc_program_add_temporary (p, 2, "t1");
-      orc_program_add_temporary (p, 2, "t2");
+      orc_program_add_constant (p, 1, 0x00000080, "c1");
+      orc_program_add_parameter (p, 2, "p1");
+      orc_program_add_parameter (p, 2, "p2");
+      orc_program_add_parameter (p, 2, "p3");
+      orc_program_add_parameter (p, 2, "p4");
+      orc_program_add_parameter (p, 2, "p5");
+      orc_program_add_temporary (p, 1, "t1");
+      orc_program_add_temporary (p, 1, "t2");
       orc_program_add_temporary (p, 1, "t3");
       orc_program_add_temporary (p, 1, "t4");
-      orc_program_add_temporary (p, 1, "t5");
-      orc_program_add_temporary (p, 1, "t6");
+      orc_program_add_temporary (p, 2, "t5");
+      orc_program_add_temporary (p, 2, "t6");
       orc_program_add_temporary (p, 2, "t7");
       orc_program_add_temporary (p, 2, "t8");
       orc_program_add_temporary (p, 2, "t9");
       orc_program_add_temporary (p, 2, "t10");
-      orc_program_add_temporary (p, 2, "t11");
-      orc_program_add_temporary (p, 2, "t12");
+      orc_program_add_temporary (p, 1, "t11");
+      orc_program_add_temporary (p, 1, "t12");
       orc_program_add_temporary (p, 1, "t13");
-      orc_program_add_temporary (p, 1, "t14");
-      orc_program_add_temporary (p, 1, "t15");
-      orc_program_add_temporary (p, 4, "t16");
+      orc_program_add_temporary (p, 4, "t14");
 
-      orc_program_append_2 (p, "subb", 2, 47, ORC_VAR_S1, ORC_VAR_C2,
+      orc_program_append_2 (p, "subb", 2, ORC_VAR_T14, ORC_VAR_S1, ORC_VAR_C1,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T1, ORC_VAR_T2, 47,
+      orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T7, ORC_VAR_T5,
+          ORC_VAR_T14, ORC_VAR_D1);
+      orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T5,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T2,
+      orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T7,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_T1,
+      orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_D1,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1,
+      orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_D1,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_D1,
+      orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_D1,
+      orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_P1,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T7, ORC_VAR_C3,
+      orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_P2,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
+      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_T8,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T1,
+      orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T10, ORC_VAR_T6, ORC_VAR_P3,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T7, ORC_VAR_T9,
+      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T5,
+          ORC_VAR_T10, ORC_VAR_D1);
+      orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_P4,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_C4,
+      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T9, ORC_VAR_T5, ORC_VAR_T9,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
+      orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T7, ORC_VAR_P5,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "subssw", 0, ORC_VAR_T10, ORC_VAR_T10,
-          ORC_VAR_T1, ORC_VAR_D1);
-      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T10,
-          ORC_VAR_T9, ORC_VAR_D1);
-      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T7, ORC_VAR_T8,
+      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T5,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T12,
-          ORC_VAR_T8, ORC_VAR_D1);
-      orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_C5,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T12,
-          ORC_VAR_T1, ORC_VAR_D1);
-      orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_C6,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T7, ORC_VAR_T1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_C7,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T11,
-          ORC_VAR_T1, ORC_VAR_D1);
-      orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T11,
-          ORC_VAR_T1, ORC_VAR_D1);
+      orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T11, ORC_VAR_T8,
+          ORC_VAR_D1, ORC_VAR_D1);
+      orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T12, ORC_VAR_T9,
+          ORC_VAR_D1, ORC_VAR_D1);
       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T13, ORC_VAR_T10,
           ORC_VAR_D1, ORC_VAR_D1);
-      orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T14, ORC_VAR_T11,
-          ORC_VAR_D1, ORC_VAR_D1);
-      orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T15, ORC_VAR_T12,
-          ORC_VAR_D1, ORC_VAR_D1);
-      orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T15,
-          ORC_VAR_T14, ORC_VAR_D1);
-      orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_T13,
-          ORC_VAR_T3, ORC_VAR_D1);
-      orc_program_append_2 (p, "mergewl", 0, 47, ORC_VAR_T1, ORC_VAR_T2,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, 47, ORC_VAR_C2,
+      orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T10, ORC_VAR_T13,
+          ORC_VAR_T12, ORC_VAR_D1);
+      orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T8, ORC_VAR_T11,
+          ORC_VAR_T1, ORC_VAR_D1);
+      orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T14, ORC_VAR_T10,
+          ORC_VAR_T8, ORC_VAR_D1);
+      orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T14, ORC_VAR_C1,
           ORC_VAR_D1);
 #endif
 
@@ -7830,6 +7507,11 @@
   ex->params[ORC_VAR_D1] = d1_stride;
   ex->arrays[ORC_VAR_S1] = (void *) s1;
   ex->params[ORC_VAR_S1] = s1_stride;
+  ex->params[ORC_VAR_P1] = p1;
+  ex->params[ORC_VAR_P2] = p2;
+  ex->params[ORC_VAR_P3] = p3;
+  ex->params[ORC_VAR_P4] = p4;
+  ex->params[ORC_VAR_P5] = p5;
 
   func = c->exec;
   func (ex);
@@ -7841,56 +7523,39 @@
 #ifdef DISABLE_ORC
 void
 video_convert_orc_convert_AYUV_ABGR (guint8 * ORC_RESTRICT d1, int d1_stride,
-    const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
+    const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3,
+    int p4, int p5, int n, int m)
 {
   int i;
   int j;
   orc_union32 *ORC_RESTRICT ptr0;
   const orc_union32 *ORC_RESTRICT ptr4;
-  orc_union32 var48;
+  orc_union32 var46;
 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union32 var49;
+  volatile orc_union32 var47;
 #else
-  orc_union32 var49;
+  orc_union32 var47;
 #endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var50;
-#else
+  orc_union16 var48;
+  orc_union16 var49;
   orc_union16 var50;
-#endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var51;
-#else
   orc_union16 var51;
-#endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var52;
-#else
   orc_union16 var52;
-#endif
 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var53;
+  volatile orc_union32 var53;
 #else
-  orc_union16 var53;
+  orc_union32 var53;
 #endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var54;
-#else
-  orc_union16 var54;
-#endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union32 var55;
-#else
+  orc_union32 var54;
   orc_union32 var55;
-#endif
-  orc_union32 var56;
-  orc_union32 var57;
-  orc_union16 var58;
-  orc_union16 var59;
+  orc_union16 var56;
+  orc_union16 var57;
+  orc_int8 var58;
+  orc_int8 var59;
   orc_int8 var60;
   orc_int8 var61;
-  orc_int8 var62;
-  orc_int8 var63;
+  orc_union16 var62;
+  orc_union16 var63;
   orc_union16 var64;
   orc_union16 var65;
   orc_union16 var66;
@@ -7901,160 +7566,125 @@
   orc_union16 var71;
   orc_union16 var72;
   orc_union16 var73;
-  orc_union16 var74;
-  orc_union16 var75;
-  orc_union16 var76;
+  orc_int8 var74;
+  orc_int8 var75;
+  orc_int8 var76;
   orc_union16 var77;
   orc_union16 var78;
-  orc_union16 var79;
-  orc_union16 var80;
-  orc_union16 var81;
-  orc_union16 var82;
-  orc_union16 var83;
-  orc_union16 var84;
-  orc_union16 var85;
-  orc_union16 var86;
-  orc_int8 var87;
-  orc_int8 var88;
-  orc_int8 var89;
-  orc_union16 var90;
-  orc_union16 var91;
-  orc_union32 var92;
+  orc_union32 var79;
 
   for (j = 0; j < m; j++) {
     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
 
     /* 1: loadpb */
-    var49.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var49.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var49.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var49.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var47.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var47.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var47.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var47.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
     /* 9: loadpw */
-    var50.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */
+    var48.i = p1;
+    /* 11: loadpw */
+    var49.i = p2;
     /* 14: loadpw */
-    var51.i = (int) 0x00000067; /* 103 or 5.08888e-322f */
-    /* 21: loadpw */
-    var52.i = (int) 0x00000004; /* 4 or 1.97626e-323f */
-    /* 25: loadpw */
-    var53.i = (int) 0x00000064; /* 100 or 4.94066e-322f */
-    /* 29: loadpw */
-    var54.i = (int) 0x00000068; /* 104 or 5.13828e-322f */
-    /* 40: loadpb */
-    var55.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var55.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var55.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var55.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var50.i = p3;
+    /* 17: loadpw */
+    var51.i = p4;
+    /* 20: loadpw */
+    var52.i = p5;
+    /* 29: loadpb */
+    var53.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var53.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var53.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var53.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
 
     for (i = 0; i < n; i++) {
       /* 0: loadl */
-      var48 = ptr4[i];
+      var46 = ptr4[i];
       /* 2: subb */
-      var57.x4[0] = var48.x4[0] - var49.x4[0];
-      var57.x4[1] = var48.x4[1] - var49.x4[1];
-      var57.x4[2] = var48.x4[2] - var49.x4[2];
-      var57.x4[3] = var48.x4[3] - var49.x4[3];
+      var55.x4[0] = var46.x4[0] - var47.x4[0];
+      var55.x4[1] = var46.x4[1] - var47.x4[1];
+      var55.x4[2] = var46.x4[2] - var47.x4[2];
+      var55.x4[3] = var46.x4[3] - var47.x4[3];
       /* 3: splitlw */
       {
         orc_union32 _src;
-        _src.i = var57.i;
-        var58.i = _src.x2[1];
-        var59.i = _src.x2[0];
+        _src.i = var55.i;
+        var56.i = _src.x2[1];
+        var57.i = _src.x2[0];
       }
       /* 4: splitwb */
       {
         orc_union16 _src;
-        _src.i = var59.i;
-        var60 = _src.x2[1];
-        var61 = _src.x2[0];
+        _src.i = var57.i;
+        var58 = _src.x2[1];
+        var59 = _src.x2[0];
       }
       /* 5: splitwb */
       {
         orc_union16 _src;
-        _src.i = var58.i;
-        var62 = _src.x2[1];
-        var63 = _src.x2[0];
+        _src.i = var56.i;
+        var60 = _src.x2[1];
+        var61 = _src.x2[0];
       }
-      /* 6: convsbw */
-      var64.i = var60;
-      /* 7: convsbw */
-      var65.i = var63;
-      /* 8: convsbw */
-      var66.i = var62;
-      /* 10: mullw */
-      var67.i = (var64.i * var50.i) & 0xffff;
-      /* 11: shrsw */
-      var68.i = var67.i >> 8;
-      /* 12: addssw */
-      var69.i = ORC_CLAMP_SW (var64.i + var68.i);
+      /* 6: splatbw */
+      var62.i = ((var58 & 0xff) << 8) | (var58 & 0xff);
+      /* 7: splatbw */
+      var63.i = ((var61 & 0xff) << 8) | (var61 & 0xff);
+      /* 8: splatbw */
+      var64.i = ((var60 & 0xff) << 8) | (var60 & 0xff);
+      /* 10: mulhsw */
+      var65.i = (var62.i * var48.i) >> 16;
+      /* 12: mulhsw */
+      var66.i = (var64.i * var49.i) >> 16;
       /* 13: addssw */
-      var70.i = ORC_CLAMP_SW (var69.i + var66.i);
-      /* 15: mullw */
-      var71.i = (var66.i * var51.i) & 0xffff;
-      /* 16: shrsw */
-      var72.i = var71.i >> 8;
-      /* 17: subssw */
-      var73.i = ORC_CLAMP_SW (var70.i - var72.i);
-      /* 18: addssw */
-      var74.i = ORC_CLAMP_SW (var73.i + var66.i);
+      var67.i = ORC_CLAMP_SW (var65.i + var66.i);
+      /* 15: mulhsw */
+      var68.i = (var63.i * var50.i) >> 16;
+      /* 16: addssw */
+      var69.i = ORC_CLAMP_SW (var65.i + var68.i);
+      /* 18: mulhsw */
+      var70.i = (var63.i * var51.i) >> 16;
       /* 19: addssw */
-      var75.i = ORC_CLAMP_SW (var69.i + var65.i);
-      /* 20: addssw */
-      var76.i = ORC_CLAMP_SW (var75.i + var65.i);
-      /* 22: mullw */
-      var77.i = (var65.i * var52.i) & 0xffff;
-      /* 23: shrsw */
-      var78.i = var77.i >> 8;
-      /* 24: addssw */
-      var79.i = ORC_CLAMP_SW (var76.i + var78.i);
-      /* 26: mullw */
-      var80.i = (var65.i * var53.i) & 0xffff;
-      /* 27: shrsw */
-      var81.i = var80.i >> 8;
-      /* 28: subssw */
-      var82.i = ORC_CLAMP_SW (var69.i - var81.i);
-      /* 30: mullw */
-      var83.i = (var66.i * var54.i) & 0xffff;
-      /* 31: shrsw */
-      var84.i = var83.i >> 8;
-      /* 32: subssw */
-      var85.i = ORC_CLAMP_SW (var82.i - var84.i);
-      /* 33: subssw */
-      var86.i = ORC_CLAMP_SW (var85.i - var84.i);
-      /* 34: convssswb */
-      var87 = ORC_CLAMP_SB (var74.i);
-      /* 35: convssswb */
-      var88 = ORC_CLAMP_SB (var86.i);
-      /* 36: convssswb */
-      var89 = ORC_CLAMP_SB (var79.i);
-      /* 37: mergebw */
+      var71.i = ORC_CLAMP_SW (var65.i + var70.i);
+      /* 21: mulhsw */
+      var72.i = (var64.i * var52.i) >> 16;
+      /* 22: addssw */
+      var73.i = ORC_CLAMP_SW (var71.i + var72.i);
+      /* 23: convssswb */
+      var74 = ORC_CLAMP_SB (var67.i);
+      /* 24: convssswb */
+      var75 = ORC_CLAMP_SB (var73.i);
+      /* 25: convssswb */
+      var76 = ORC_CLAMP_SB (var69.i);
+      /* 26: mergebw */
       {
         orc_union16 _dest;
-        _dest.x2[0] = var61;
-        _dest.x2[1] = var89;
-        var90.i = _dest.i;
+        _dest.x2[0] = var59;
+        _dest.x2[1] = var76;
+        var77.i = _dest.i;
       }
-      /* 38: mergebw */
+      /* 27: mergebw */
       {
         orc_union16 _dest;
-        _dest.x2[0] = var88;
-        _dest.x2[1] = var87;
-        var91.i = _dest.i;
+        _dest.x2[0] = var75;
+        _dest.x2[1] = var74;
+        var78.i = _dest.i;
       }
-      /* 39: mergewl */
+      /* 28: mergewl */
       {
         orc_union32 _dest;
-        _dest.x2[0] = var90.i;
-        _dest.x2[1] = var91.i;
-        var92.i = _dest.i;
+        _dest.x2[0] = var77.i;
+        _dest.x2[1] = var78.i;
+        var79.i = _dest.i;
       }
-      /* 41: addb */
-      var56.x4[0] = var92.x4[0] + var55.x4[0];
-      var56.x4[1] = var92.x4[1] + var55.x4[1];
-      var56.x4[2] = var92.x4[2] + var55.x4[2];
-      var56.x4[3] = var92.x4[3] + var55.x4[3];
-      /* 42: storel */
-      ptr0[i] = var56;
+      /* 30: addb */
+      var54.x4[0] = var79.x4[0] + var53.x4[0];
+      var54.x4[1] = var79.x4[1] + var53.x4[1];
+      var54.x4[2] = var79.x4[2] + var53.x4[2];
+      var54.x4[3] = var79.x4[3] + var53.x4[3];
+      /* 31: storel */
+      ptr0[i] = var54;
     }
   }
 
@@ -8070,50 +7700,32 @@
   int m = ex->params[ORC_VAR_A1];
   orc_union32 *ORC_RESTRICT ptr0;
   const orc_union32 *ORC_RESTRICT ptr4;
-  orc_union32 var48;
+  orc_union32 var46;
 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union32 var49;
+  volatile orc_union32 var47;
 #else
-  orc_union32 var49;
+  orc_union32 var47;
 #endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var50;
-#else
+  orc_union16 var48;
+  orc_union16 var49;
   orc_union16 var50;
-#endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var51;
-#else
   orc_union16 var51;
-#endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var52;
-#else
   orc_union16 var52;
-#endif
 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var53;
+  volatile orc_union32 var53;
 #else
-  orc_union16 var53;
+  orc_union32 var53;
 #endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var54;
-#else
-  orc_union16 var54;
-#endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union32 var55;
-#else
+  orc_union32 var54;
   orc_union32 var55;
-#endif
-  orc_union32 var56;
-  orc_union32 var57;
-  orc_union16 var58;
-  orc_union16 var59;
+  orc_union16 var56;
+  orc_union16 var57;
+  orc_int8 var58;
+  orc_int8 var59;
   orc_int8 var60;
   orc_int8 var61;
-  orc_int8 var62;
-  orc_int8 var63;
+  orc_union16 var62;
+  orc_union16 var63;
   orc_union16 var64;
   orc_union16 var65;
   orc_union16 var66;
@@ -8124,160 +7736,125 @@
   orc_union16 var71;
   orc_union16 var72;
   orc_union16 var73;
-  orc_union16 var74;
-  orc_union16 var75;
-  orc_union16 var76;
+  orc_int8 var74;
+  orc_int8 var75;
+  orc_int8 var76;
   orc_union16 var77;
   orc_union16 var78;
-  orc_union16 var79;
-  orc_union16 var80;
-  orc_union16 var81;
-  orc_union16 var82;
-  orc_union16 var83;
-  orc_union16 var84;
-  orc_union16 var85;
-  orc_union16 var86;
-  orc_int8 var87;
-  orc_int8 var88;
-  orc_int8 var89;
-  orc_union16 var90;
-  orc_union16 var91;
-  orc_union32 var92;
+  orc_union32 var79;
 
   for (j = 0; j < m; j++) {
     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
 
     /* 1: loadpb */
-    var49.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var49.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var49.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var49.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var47.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var47.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var47.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var47.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
     /* 9: loadpw */
-    var50.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */
+    var48.i = ex->params[24];
+    /* 11: loadpw */
+    var49.i = ex->params[25];
     /* 14: loadpw */
-    var51.i = (int) 0x00000067; /* 103 or 5.08888e-322f */
-    /* 21: loadpw */
-    var52.i = (int) 0x00000004; /* 4 or 1.97626e-323f */
-    /* 25: loadpw */
-    var53.i = (int) 0x00000064; /* 100 or 4.94066e-322f */
-    /* 29: loadpw */
-    var54.i = (int) 0x00000068; /* 104 or 5.13828e-322f */
-    /* 40: loadpb */
-    var55.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var55.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var55.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var55.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var50.i = ex->params[26];
+    /* 17: loadpw */
+    var51.i = ex->params[27];
+    /* 20: loadpw */
+    var52.i = ex->params[28];
+    /* 29: loadpb */
+    var53.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var53.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var53.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var53.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
 
     for (i = 0; i < n; i++) {
       /* 0: loadl */
-      var48 = ptr4[i];
+      var46 = ptr4[i];
       /* 2: subb */
-      var57.x4[0] = var48.x4[0] - var49.x4[0];
-      var57.x4[1] = var48.x4[1] - var49.x4[1];
-      var57.x4[2] = var48.x4[2] - var49.x4[2];
-      var57.x4[3] = var48.x4[3] - var49.x4[3];
+      var55.x4[0] = var46.x4[0] - var47.x4[0];
+      var55.x4[1] = var46.x4[1] - var47.x4[1];
+      var55.x4[2] = var46.x4[2] - var47.x4[2];
+      var55.x4[3] = var46.x4[3] - var47.x4[3];
       /* 3: splitlw */
       {
         orc_union32 _src;
-        _src.i = var57.i;
-        var58.i = _src.x2[1];
-        var59.i = _src.x2[0];
+        _src.i = var55.i;
+        var56.i = _src.x2[1];
+        var57.i = _src.x2[0];
       }
       /* 4: splitwb */
       {
         orc_union16 _src;
-        _src.i = var59.i;
-        var60 = _src.x2[1];
-        var61 = _src.x2[0];
+        _src.i = var57.i;
+        var58 = _src.x2[1];
+        var59 = _src.x2[0];
       }
       /* 5: splitwb */
       {
         orc_union16 _src;
-        _src.i = var58.i;
-        var62 = _src.x2[1];
-        var63 = _src.x2[0];
+        _src.i = var56.i;
+        var60 = _src.x2[1];
+        var61 = _src.x2[0];
       }
-      /* 6: convsbw */
-      var64.i = var60;
-      /* 7: convsbw */
-      var65.i = var63;
-      /* 8: convsbw */
-      var66.i = var62;
-      /* 10: mullw */
-      var67.i = (var64.i * var50.i) & 0xffff;
-      /* 11: shrsw */
-      var68.i = var67.i >> 8;
-      /* 12: addssw */
-      var69.i = ORC_CLAMP_SW (var64.i + var68.i);
+      /* 6: splatbw */
+      var62.i = ((var58 & 0xff) << 8) | (var58 & 0xff);
+      /* 7: splatbw */
+      var63.i = ((var61 & 0xff) << 8) | (var61 & 0xff);
+      /* 8: splatbw */
+      var64.i = ((var60 & 0xff) << 8) | (var60 & 0xff);
+      /* 10: mulhsw */
+      var65.i = (var62.i * var48.i) >> 16;
+      /* 12: mulhsw */
+      var66.i = (var64.i * var49.i) >> 16;
       /* 13: addssw */
-      var70.i = ORC_CLAMP_SW (var69.i + var66.i);
-      /* 15: mullw */
-      var71.i = (var66.i * var51.i) & 0xffff;
-      /* 16: shrsw */
-      var72.i = var71.i >> 8;
-      /* 17: subssw */
-      var73.i = ORC_CLAMP_SW (var70.i - var72.i);
-      /* 18: addssw */
-      var74.i = ORC_CLAMP_SW (var73.i + var66.i);
+      var67.i = ORC_CLAMP_SW (var65.i + var66.i);
+      /* 15: mulhsw */
+      var68.i = (var63.i * var50.i) >> 16;
+      /* 16: addssw */
+      var69.i = ORC_CLAMP_SW (var65.i + var68.i);
+      /* 18: mulhsw */
+      var70.i = (var63.i * var51.i) >> 16;
       /* 19: addssw */
-      var75.i = ORC_CLAMP_SW (var69.i + var65.i);
-      /* 20: addssw */
-      var76.i = ORC_CLAMP_SW (var75.i + var65.i);
-      /* 22: mullw */
-      var77.i = (var65.i * var52.i) & 0xffff;
-      /* 23: shrsw */
-      var78.i = var77.i >> 8;
-      /* 24: addssw */
-      var79.i = ORC_CLAMP_SW (var76.i + var78.i);
-      /* 26: mullw */
-      var80.i = (var65.i * var53.i) & 0xffff;
-      /* 27: shrsw */
-      var81.i = var80.i >> 8;
-      /* 28: subssw */
-      var82.i = ORC_CLAMP_SW (var69.i - var81.i);
-      /* 30: mullw */
-      var83.i = (var66.i * var54.i) & 0xffff;
-      /* 31: shrsw */
-      var84.i = var83.i >> 8;
-      /* 32: subssw */
-      var85.i = ORC_CLAMP_SW (var82.i - var84.i);
-      /* 33: subssw */
-      var86.i = ORC_CLAMP_SW (var85.i - var84.i);
-      /* 34: convssswb */
-      var87 = ORC_CLAMP_SB (var74.i);
-      /* 35: convssswb */
-      var88 = ORC_CLAMP_SB (var86.i);
-      /* 36: convssswb */
-      var89 = ORC_CLAMP_SB (var79.i);
-      /* 37: mergebw */
+      var71.i = ORC_CLAMP_SW (var65.i + var70.i);
+      /* 21: mulhsw */
+      var72.i = (var64.i * var52.i) >> 16;
+      /* 22: addssw */
+      var73.i = ORC_CLAMP_SW (var71.i + var72.i);
+      /* 23: convssswb */
+      var74 = ORC_CLAMP_SB (var67.i);
+      /* 24: convssswb */
+      var75 = ORC_CLAMP_SB (var73.i);
+      /* 25: convssswb */
+      var76 = ORC_CLAMP_SB (var69.i);
+      /* 26: mergebw */
       {
         orc_union16 _dest;
-        _dest.x2[0] = var61;
-        _dest.x2[1] = var89;
-        var90.i = _dest.i;
+        _dest.x2[0] = var59;
+        _dest.x2[1] = var76;
+        var77.i = _dest.i;
       }
-      /* 38: mergebw */
+      /* 27: mergebw */
       {
         orc_union16 _dest;
-        _dest.x2[0] = var88;
-        _dest.x2[1] = var87;
-        var91.i = _dest.i;
+        _dest.x2[0] = var75;
+        _dest.x2[1] = var74;
+        var78.i = _dest.i;
       }
-      /* 39: mergewl */
+      /* 28: mergewl */
       {
         orc_union32 _dest;
-        _dest.x2[0] = var90.i;
-        _dest.x2[1] = var91.i;
-        var92.i = _dest.i;
+        _dest.x2[0] = var77.i;
+        _dest.x2[1] = var78.i;
+        var79.i = _dest.i;
       }
-      /* 41: addb */
-      var56.x4[0] = var92.x4[0] + var55.x4[0];
-      var56.x4[1] = var92.x4[1] + var55.x4[1];
-      var56.x4[2] = var92.x4[2] + var55.x4[2];
-      var56.x4[3] = var92.x4[3] + var55.x4[3];
-      /* 42: storel */
-      ptr0[i] = var56;
+      /* 30: addb */
+      var54.x4[0] = var79.x4[0] + var53.x4[0];
+      var54.x4[1] = var79.x4[1] + var53.x4[1];
+      var54.x4[2] = var79.x4[2] + var53.x4[2];
+      var54.x4[3] = var79.x4[3] + var53.x4[3];
+      /* 31: storel */
+      ptr0[i] = var54;
     }
   }
 
@@ -8285,7 +7862,8 @@
 
 void
 video_convert_orc_convert_AYUV_ABGR (guint8 * ORC_RESTRICT d1, int d1_stride,
-    const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
+    const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3,
+    int p4, int p5, int n, int m)
 {
   OrcExecutor _ex, *ex = &_ex;
   static volatile int p_inited = 0;
@@ -8301,20 +7879,16 @@
       static const orc_uint8 bc[] = {
         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 65, 89,
-        85, 86, 95, 65, 66, 71, 82, 11, 4, 4, 12, 4, 4, 14, 1, 8,
-        0, 0, 0, 14, 4, 128, 0, 0, 0, 14, 4, 42, 0, 0, 0, 14,
-        4, 103, 0, 0, 0, 14, 4, 4, 0, 0, 0, 14, 4, 100, 0, 0,
-        0, 14, 4, 104, 0, 0, 0, 20, 2, 20, 2, 20, 1, 20, 1, 20,
-        1, 20, 1, 20, 2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 2, 20,
-        1, 20, 1, 20, 1, 20, 4, 21, 2, 65, 47, 4, 17, 198, 32, 33,
-        47, 199, 35, 34, 33, 199, 37, 36, 32, 149, 38, 35, 149, 39, 36, 149,
-        40, 37, 89, 32, 38, 18, 94, 32, 32, 16, 71, 38, 38, 32, 71, 41,
-        38, 40, 89, 32, 40, 19, 94, 32, 32, 16, 99, 41, 41, 32, 71, 41,
-        41, 40, 71, 43, 38, 39, 71, 43, 43, 39, 89, 32, 39, 20, 94, 32,
-        32, 16, 71, 43, 43, 32, 89, 32, 39, 21, 94, 32, 32, 16, 99, 42,
-        38, 32, 89, 32, 40, 22, 94, 32, 32, 16, 99, 42, 42, 32, 99, 42,
-        42, 32, 159, 44, 41, 159, 45, 42, 159, 46, 43, 196, 32, 34, 46, 196,
-        33, 45, 44, 195, 47, 32, 33, 21, 2, 33, 0, 47, 17, 2, 0,
+        85, 86, 95, 65, 66, 71, 82, 11, 4, 4, 12, 4, 4, 14, 1, 128,
+        0, 0, 0, 16, 2, 16, 2, 16, 2, 16, 2, 16, 2, 20, 1, 20,
+        1, 20, 1, 20, 1, 20, 2, 20, 2, 20, 2, 20, 2, 20, 2, 20,
+        2, 20, 1, 20, 1, 20, 1, 20, 4, 21, 2, 65, 45, 4, 16, 198,
+        38, 36, 45, 199, 33, 32, 36, 199, 35, 34, 38, 151, 36, 33, 151, 37,
+        34, 151, 38, 35, 90, 36, 36, 24, 90, 39, 38, 25, 71, 39, 36, 39,
+        90, 41, 37, 26, 71, 41, 36, 41, 90, 40, 37, 27, 71, 40, 36, 40,
+        90, 36, 38, 28, 71, 40, 40, 36, 159, 42, 39, 159, 43, 40, 159, 44,
+        41, 196, 41, 32, 44, 196, 39, 43, 42, 195, 45, 41, 39, 21, 2, 33,
+        0, 45, 16, 2, 0,
       };
       p = orc_program_new_from_static_bytecode (bc);
       orc_program_set_backup_function (p,
@@ -8327,97 +7901,72 @@
           _backup_video_convert_orc_convert_AYUV_ABGR);
       orc_program_add_destination (p, 4, "d1");
       orc_program_add_source (p, 4, "s1");
-      orc_program_add_constant (p, 1, 0x00000008, "c1");
-      orc_program_add_constant (p, 4, 0x00000080, "c2");
-      orc_program_add_constant (p, 4, 0x0000002a, "c3");
-      orc_program_add_constant (p, 4, 0x00000067, "c4");
-      orc_program_add_constant (p, 4, 0x00000004, "c5");
-      orc_program_add_constant (p, 4, 0x00000064, "c6");
-      orc_program_add_constant (p, 4, 0x00000068, "c7");
-      orc_program_add_temporary (p, 2, "t1");
-      orc_program_add_temporary (p, 2, "t2");
+      orc_program_add_constant (p, 1, 0x00000080, "c1");
+      orc_program_add_parameter (p, 2, "p1");
+      orc_program_add_parameter (p, 2, "p2");
+      orc_program_add_parameter (p, 2, "p3");
+      orc_program_add_parameter (p, 2, "p4");
+      orc_program_add_parameter (p, 2, "p5");
+      orc_program_add_temporary (p, 1, "t1");
+      orc_program_add_temporary (p, 1, "t2");
       orc_program_add_temporary (p, 1, "t3");
       orc_program_add_temporary (p, 1, "t4");
-      orc_program_add_temporary (p, 1, "t5");
-      orc_program_add_temporary (p, 1, "t6");
+      orc_program_add_temporary (p, 2, "t5");
+      orc_program_add_temporary (p, 2, "t6");
       orc_program_add_temporary (p, 2, "t7");
       orc_program_add_temporary (p, 2, "t8");
       orc_program_add_temporary (p, 2, "t9");
       orc_program_add_temporary (p, 2, "t10");
-      orc_program_add_temporary (p, 2, "t11");
-      orc_program_add_temporary (p, 2, "t12");
+      orc_program_add_temporary (p, 1, "t11");
+      orc_program_add_temporary (p, 1, "t12");
       orc_program_add_temporary (p, 1, "t13");
-      orc_program_add_temporary (p, 1, "t14");
-      orc_program_add_temporary (p, 1, "t15");
-      orc_program_add_temporary (p, 4, "t16");
+      orc_program_add_temporary (p, 4, "t14");
 
-      orc_program_append_2 (p, "subb", 2, 47, ORC_VAR_S1, ORC_VAR_C2,
+      orc_program_append_2 (p, "subb", 2, ORC_VAR_T14, ORC_VAR_S1, ORC_VAR_C1,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T1, ORC_VAR_T2, 47,
+      orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T7, ORC_VAR_T5,
+          ORC_VAR_T14, ORC_VAR_D1);
+      orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T5,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T2,
+      orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T7,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_T1,
+      orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_D1,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1,
+      orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_D1,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_D1,
+      orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_D1,
+      orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_P1,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T7, ORC_VAR_C3,
+      orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_P2,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
+      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_T8,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T1,
+      orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T10, ORC_VAR_T6, ORC_VAR_P3,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T7, ORC_VAR_T9,
+      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T5,
+          ORC_VAR_T10, ORC_VAR_D1);
+      orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_P4,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_C4,
+      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T9, ORC_VAR_T5, ORC_VAR_T9,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
+      orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T7, ORC_VAR_P5,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "subssw", 0, ORC_VAR_T10, ORC_VAR_T10,
-          ORC_VAR_T1, ORC_VAR_D1);
-      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T10,
-          ORC_VAR_T9, ORC_VAR_D1);
-      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T7, ORC_VAR_T8,
+      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T5,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T12,
-          ORC_VAR_T8, ORC_VAR_D1);
-      orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_C5,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T12,
-          ORC_VAR_T1, ORC_VAR_D1);
-      orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_C6,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T7, ORC_VAR_T1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_C7,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T11,
-          ORC_VAR_T1, ORC_VAR_D1);
-      orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T11,
-          ORC_VAR_T1, ORC_VAR_D1);
+      orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T11, ORC_VAR_T8,
+          ORC_VAR_D1, ORC_VAR_D1);
+      orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T12, ORC_VAR_T9,
+          ORC_VAR_D1, ORC_VAR_D1);
       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T13, ORC_VAR_T10,
           ORC_VAR_D1, ORC_VAR_D1);
-      orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T14, ORC_VAR_T11,
-          ORC_VAR_D1, ORC_VAR_D1);
-      orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T15, ORC_VAR_T12,
-          ORC_VAR_D1, ORC_VAR_D1);
-      orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T3,
-          ORC_VAR_T15, ORC_VAR_D1);
-      orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_T14,
+      orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T10, ORC_VAR_T1,
           ORC_VAR_T13, ORC_VAR_D1);
-      orc_program_append_2 (p, "mergewl", 0, 47, ORC_VAR_T1, ORC_VAR_T2,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, 47, ORC_VAR_C2,
+      orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T8, ORC_VAR_T12,
+          ORC_VAR_T11, ORC_VAR_D1);
+      orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T14, ORC_VAR_T10,
+          ORC_VAR_T8, ORC_VAR_D1);
+      orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T14, ORC_VAR_C1,
           ORC_VAR_D1);
 #endif
 
@@ -8437,6 +7986,11 @@
   ex->params[ORC_VAR_D1] = d1_stride;
   ex->arrays[ORC_VAR_S1] = (void *) s1;
   ex->params[ORC_VAR_S1] = s1_stride;
+  ex->params[ORC_VAR_P1] = p1;
+  ex->params[ORC_VAR_P2] = p2;
+  ex->params[ORC_VAR_P3] = p3;
+  ex->params[ORC_VAR_P4] = p4;
+  ex->params[ORC_VAR_P5] = p5;
 
   func = c->exec;
   func (ex);
@@ -8448,56 +8002,39 @@
 #ifdef DISABLE_ORC
 void
 video_convert_orc_convert_AYUV_RGBA (guint8 * ORC_RESTRICT d1, int d1_stride,
-    const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
+    const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3,
+    int p4, int p5, int n, int m)
 {
   int i;
   int j;
   orc_union32 *ORC_RESTRICT ptr0;
   const orc_union32 *ORC_RESTRICT ptr4;
-  orc_union32 var48;
+  orc_union32 var46;
 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union32 var49;
+  volatile orc_union32 var47;
 #else
-  orc_union32 var49;
+  orc_union32 var47;
 #endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var50;
-#else
+  orc_union16 var48;
+  orc_union16 var49;
   orc_union16 var50;
-#endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var51;
-#else
   orc_union16 var51;
-#endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var52;
-#else
   orc_union16 var52;
-#endif
 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var53;
+  volatile orc_union32 var53;
 #else
-  orc_union16 var53;
+  orc_union32 var53;
 #endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var54;
-#else
-  orc_union16 var54;
-#endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union32 var55;
-#else
+  orc_union32 var54;
   orc_union32 var55;
-#endif
-  orc_union32 var56;
-  orc_union32 var57;
-  orc_union16 var58;
-  orc_union16 var59;
+  orc_union16 var56;
+  orc_union16 var57;
+  orc_int8 var58;
+  orc_int8 var59;
   orc_int8 var60;
   orc_int8 var61;
-  orc_int8 var62;
-  orc_int8 var63;
+  orc_union16 var62;
+  orc_union16 var63;
   orc_union16 var64;
   orc_union16 var65;
   orc_union16 var66;
@@ -8508,160 +8045,125 @@
   orc_union16 var71;
   orc_union16 var72;
   orc_union16 var73;
-  orc_union16 var74;
-  orc_union16 var75;
-  orc_union16 var76;
+  orc_int8 var74;
+  orc_int8 var75;
+  orc_int8 var76;
   orc_union16 var77;
   orc_union16 var78;
-  orc_union16 var79;
-  orc_union16 var80;
-  orc_union16 var81;
-  orc_union16 var82;
-  orc_union16 var83;
-  orc_union16 var84;
-  orc_union16 var85;
-  orc_union16 var86;
-  orc_int8 var87;
-  orc_int8 var88;
-  orc_int8 var89;
-  orc_union16 var90;
-  orc_union16 var91;
-  orc_union32 var92;
+  orc_union32 var79;
 
   for (j = 0; j < m; j++) {
     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
 
     /* 1: loadpb */
-    var49.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var49.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var49.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var49.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var47.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var47.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var47.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var47.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
     /* 9: loadpw */
-    var50.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */
+    var48.i = p1;
+    /* 11: loadpw */
+    var49.i = p2;
     /* 14: loadpw */
-    var51.i = (int) 0x00000067; /* 103 or 5.08888e-322f */
-    /* 21: loadpw */
-    var52.i = (int) 0x00000004; /* 4 or 1.97626e-323f */
-    /* 25: loadpw */
-    var53.i = (int) 0x00000064; /* 100 or 4.94066e-322f */
-    /* 29: loadpw */
-    var54.i = (int) 0x00000068; /* 104 or 5.13828e-322f */
-    /* 40: loadpb */
-    var55.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var55.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var55.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var55.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var50.i = p3;
+    /* 17: loadpw */
+    var51.i = p4;
+    /* 20: loadpw */
+    var52.i = p5;
+    /* 29: loadpb */
+    var53.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var53.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var53.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var53.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
 
     for (i = 0; i < n; i++) {
       /* 0: loadl */
-      var48 = ptr4[i];
+      var46 = ptr4[i];
       /* 2: subb */
-      var57.x4[0] = var48.x4[0] - var49.x4[0];
-      var57.x4[1] = var48.x4[1] - var49.x4[1];
-      var57.x4[2] = var48.x4[2] - var49.x4[2];
-      var57.x4[3] = var48.x4[3] - var49.x4[3];
+      var55.x4[0] = var46.x4[0] - var47.x4[0];
+      var55.x4[1] = var46.x4[1] - var47.x4[1];
+      var55.x4[2] = var46.x4[2] - var47.x4[2];
+      var55.x4[3] = var46.x4[3] - var47.x4[3];
       /* 3: splitlw */
       {
         orc_union32 _src;
-        _src.i = var57.i;
-        var58.i = _src.x2[1];
-        var59.i = _src.x2[0];
+        _src.i = var55.i;
+        var56.i = _src.x2[1];
+        var57.i = _src.x2[0];
       }
       /* 4: splitwb */
       {
         orc_union16 _src;
-        _src.i = var59.i;
-        var60 = _src.x2[1];
-        var61 = _src.x2[0];
+        _src.i = var57.i;
+        var58 = _src.x2[1];
+        var59 = _src.x2[0];
       }
       /* 5: splitwb */
       {
         orc_union16 _src;
-        _src.i = var58.i;
-        var62 = _src.x2[1];
-        var63 = _src.x2[0];
+        _src.i = var56.i;
+        var60 = _src.x2[1];
+        var61 = _src.x2[0];
       }
-      /* 6: convsbw */
-      var64.i = var60;
-      /* 7: convsbw */
-      var65.i = var63;
-      /* 8: convsbw */
-      var66.i = var62;
-      /* 10: mullw */
-      var67.i = (var64.i * var50.i) & 0xffff;
-      /* 11: shrsw */
-      var68.i = var67.i >> 8;
-      /* 12: addssw */
-      var69.i = ORC_CLAMP_SW (var64.i + var68.i);
+      /* 6: splatbw */
+      var62.i = ((var58 & 0xff) << 8) | (var58 & 0xff);
+      /* 7: splatbw */
+      var63.i = ((var61 & 0xff) << 8) | (var61 & 0xff);
+      /* 8: splatbw */
+      var64.i = ((var60 & 0xff) << 8) | (var60 & 0xff);
+      /* 10: mulhsw */
+      var65.i = (var62.i * var48.i) >> 16;
+      /* 12: mulhsw */
+      var66.i = (var64.i * var49.i) >> 16;
       /* 13: addssw */
-      var70.i = ORC_CLAMP_SW (var69.i + var66.i);
-      /* 15: mullw */
-      var71.i = (var66.i * var51.i) & 0xffff;
-      /* 16: shrsw */
-      var72.i = var71.i >> 8;
-      /* 17: subssw */
-      var73.i = ORC_CLAMP_SW (var70.i - var72.i);
-      /* 18: addssw */
-      var74.i = ORC_CLAMP_SW (var73.i + var66.i);
+      var67.i = ORC_CLAMP_SW (var65.i + var66.i);
+      /* 15: mulhsw */
+      var68.i = (var63.i * var50.i) >> 16;
+      /* 16: addssw */
+      var69.i = ORC_CLAMP_SW (var65.i + var68.i);
+      /* 18: mulhsw */
+      var70.i = (var63.i * var51.i) >> 16;
       /* 19: addssw */
-      var75.i = ORC_CLAMP_SW (var69.i + var65.i);
-      /* 20: addssw */
-      var76.i = ORC_CLAMP_SW (var75.i + var65.i);
-      /* 22: mullw */
-      var77.i = (var65.i * var52.i) & 0xffff;
-      /* 23: shrsw */
-      var78.i = var77.i >> 8;
-      /* 24: addssw */
-      var79.i = ORC_CLAMP_SW (var76.i + var78.i);
-      /* 26: mullw */
-      var80.i = (var65.i * var53.i) & 0xffff;
-      /* 27: shrsw */
-      var81.i = var80.i >> 8;
-      /* 28: subssw */
-      var82.i = ORC_CLAMP_SW (var69.i - var81.i);
-      /* 30: mullw */
-      var83.i = (var66.i * var54.i) & 0xffff;
-      /* 31: shrsw */
-      var84.i = var83.i >> 8;
-      /* 32: subssw */
-      var85.i = ORC_CLAMP_SW (var82.i - var84.i);
-      /* 33: subssw */
-      var86.i = ORC_CLAMP_SW (var85.i - var84.i);
-      /* 34: convssswb */
-      var87 = ORC_CLAMP_SB (var74.i);
-      /* 35: convssswb */
-      var88 = ORC_CLAMP_SB (var86.i);
-      /* 36: convssswb */
-      var89 = ORC_CLAMP_SB (var79.i);
-      /* 37: mergebw */
+      var71.i = ORC_CLAMP_SW (var65.i + var70.i);
+      /* 21: mulhsw */
+      var72.i = (var64.i * var52.i) >> 16;
+      /* 22: addssw */
+      var73.i = ORC_CLAMP_SW (var71.i + var72.i);
+      /* 23: convssswb */
+      var74 = ORC_CLAMP_SB (var67.i);
+      /* 24: convssswb */
+      var75 = ORC_CLAMP_SB (var73.i);
+      /* 25: convssswb */
+      var76 = ORC_CLAMP_SB (var69.i);
+      /* 26: mergebw */
       {
         orc_union16 _dest;
-        _dest.x2[0] = var87;
-        _dest.x2[1] = var88;
-        var90.i = _dest.i;
+        _dest.x2[0] = var74;
+        _dest.x2[1] = var75;
+        var77.i = _dest.i;
       }
-      /* 38: mergebw */
+      /* 27: mergebw */
       {
         orc_union16 _dest;
-        _dest.x2[0] = var89;
-        _dest.x2[1] = var61;
-        var91.i = _dest.i;
+        _dest.x2[0] = var76;
+        _dest.x2[1] = var59;
+        var78.i = _dest.i;
       }
-      /* 39: mergewl */
+      /* 28: mergewl */
       {
         orc_union32 _dest;
-        _dest.x2[0] = var90.i;
-        _dest.x2[1] = var91.i;
-        var92.i = _dest.i;
+        _dest.x2[0] = var77.i;
+        _dest.x2[1] = var78.i;
+        var79.i = _dest.i;
       }
-      /* 41: addb */
-      var56.x4[0] = var92.x4[0] + var55.x4[0];
-      var56.x4[1] = var92.x4[1] + var55.x4[1];
-      var56.x4[2] = var92.x4[2] + var55.x4[2];
-      var56.x4[3] = var92.x4[3] + var55.x4[3];
-      /* 42: storel */
-      ptr0[i] = var56;
+      /* 30: addb */
+      var54.x4[0] = var79.x4[0] + var53.x4[0];
+      var54.x4[1] = var79.x4[1] + var53.x4[1];
+      var54.x4[2] = var79.x4[2] + var53.x4[2];
+      var54.x4[3] = var79.x4[3] + var53.x4[3];
+      /* 31: storel */
+      ptr0[i] = var54;
     }
   }
 
@@ -8677,50 +8179,32 @@
   int m = ex->params[ORC_VAR_A1];
   orc_union32 *ORC_RESTRICT ptr0;
   const orc_union32 *ORC_RESTRICT ptr4;
-  orc_union32 var48;
+  orc_union32 var46;
 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union32 var49;
+  volatile orc_union32 var47;
 #else
-  orc_union32 var49;
+  orc_union32 var47;
 #endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var50;
-#else
+  orc_union16 var48;
+  orc_union16 var49;
   orc_union16 var50;
-#endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var51;
-#else
   orc_union16 var51;
-#endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var52;
-#else
   orc_union16 var52;
-#endif
 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var53;
+  volatile orc_union32 var53;
 #else
-  orc_union16 var53;
+  orc_union32 var53;
 #endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var54;
-#else
-  orc_union16 var54;
-#endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union32 var55;
-#else
+  orc_union32 var54;
   orc_union32 var55;
-#endif
-  orc_union32 var56;
-  orc_union32 var57;
-  orc_union16 var58;
-  orc_union16 var59;
+  orc_union16 var56;
+  orc_union16 var57;
+  orc_int8 var58;
+  orc_int8 var59;
   orc_int8 var60;
   orc_int8 var61;
-  orc_int8 var62;
-  orc_int8 var63;
+  orc_union16 var62;
+  orc_union16 var63;
   orc_union16 var64;
   orc_union16 var65;
   orc_union16 var66;
@@ -8731,160 +8215,125 @@
   orc_union16 var71;
   orc_union16 var72;
   orc_union16 var73;
-  orc_union16 var74;
-  orc_union16 var75;
-  orc_union16 var76;
+  orc_int8 var74;
+  orc_int8 var75;
+  orc_int8 var76;
   orc_union16 var77;
   orc_union16 var78;
-  orc_union16 var79;
-  orc_union16 var80;
-  orc_union16 var81;
-  orc_union16 var82;
-  orc_union16 var83;
-  orc_union16 var84;
-  orc_union16 var85;
-  orc_union16 var86;
-  orc_int8 var87;
-  orc_int8 var88;
-  orc_int8 var89;
-  orc_union16 var90;
-  orc_union16 var91;
-  orc_union32 var92;
+  orc_union32 var79;
 
   for (j = 0; j < m; j++) {
     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
 
     /* 1: loadpb */
-    var49.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var49.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var49.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var49.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var47.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var47.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var47.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var47.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
     /* 9: loadpw */
-    var50.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */
+    var48.i = ex->params[24];
+    /* 11: loadpw */
+    var49.i = ex->params[25];
     /* 14: loadpw */
-    var51.i = (int) 0x00000067; /* 103 or 5.08888e-322f */
-    /* 21: loadpw */
-    var52.i = (int) 0x00000004; /* 4 or 1.97626e-323f */
-    /* 25: loadpw */
-    var53.i = (int) 0x00000064; /* 100 or 4.94066e-322f */
-    /* 29: loadpw */
-    var54.i = (int) 0x00000068; /* 104 or 5.13828e-322f */
-    /* 40: loadpb */
-    var55.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var55.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var55.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-    var55.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var50.i = ex->params[26];
+    /* 17: loadpw */
+    var51.i = ex->params[27];
+    /* 20: loadpw */
+    var52.i = ex->params[28];
+    /* 29: loadpb */
+    var53.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var53.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var53.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+    var53.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
 
     for (i = 0; i < n; i++) {
       /* 0: loadl */
-      var48 = ptr4[i];
+      var46 = ptr4[i];
       /* 2: subb */
-      var57.x4[0] = var48.x4[0] - var49.x4[0];
-      var57.x4[1] = var48.x4[1] - var49.x4[1];
-      var57.x4[2] = var48.x4[2] - var49.x4[2];
-      var57.x4[3] = var48.x4[3] - var49.x4[3];
+      var55.x4[0] = var46.x4[0] - var47.x4[0];
+      var55.x4[1] = var46.x4[1] - var47.x4[1];
+      var55.x4[2] = var46.x4[2] - var47.x4[2];
+      var55.x4[3] = var46.x4[3] - var47.x4[3];
       /* 3: splitlw */
       {
         orc_union32 _src;
-        _src.i = var57.i;
-        var58.i = _src.x2[1];
-        var59.i = _src.x2[0];
+        _src.i = var55.i;
+        var56.i = _src.x2[1];
+        var57.i = _src.x2[0];
       }
       /* 4: splitwb */
       {
         orc_union16 _src;
-        _src.i = var59.i;
-        var60 = _src.x2[1];
-        var61 = _src.x2[0];
+        _src.i = var57.i;
+        var58 = _src.x2[1];
+        var59 = _src.x2[0];
       }
       /* 5: splitwb */
       {
         orc_union16 _src;
-        _src.i = var58.i;
-        var62 = _src.x2[1];
-        var63 = _src.x2[0];
+        _src.i = var56.i;
+        var60 = _src.x2[1];
+        var61 = _src.x2[0];
       }
-      /* 6: convsbw */
-      var64.i = var60;
-      /* 7: convsbw */
-      var65.i = var63;
-      /* 8: convsbw */
-      var66.i = var62;
-      /* 10: mullw */
-      var67.i = (var64.i * var50.i) & 0xffff;
-      /* 11: shrsw */
-      var68.i = var67.i >> 8;
-      /* 12: addssw */
-      var69.i = ORC_CLAMP_SW (var64.i + var68.i);
+      /* 6: splatbw */
+      var62.i = ((var58 & 0xff) << 8) | (var58 & 0xff);
+      /* 7: splatbw */
+      var63.i = ((var61 & 0xff) << 8) | (var61 & 0xff);
+      /* 8: splatbw */
+      var64.i = ((var60 & 0xff) << 8) | (var60 & 0xff);
+      /* 10: mulhsw */
+      var65.i = (var62.i * var48.i) >> 16;
+      /* 12: mulhsw */
+      var66.i = (var64.i * var49.i) >> 16;
       /* 13: addssw */
-      var70.i = ORC_CLAMP_SW (var69.i + var66.i);
-      /* 15: mullw */
-      var71.i = (var66.i * var51.i) & 0xffff;
-      /* 16: shrsw */
-      var72.i = var71.i >> 8;
-      /* 17: subssw */
-      var73.i = ORC_CLAMP_SW (var70.i - var72.i);
-      /* 18: addssw */
-      var74.i = ORC_CLAMP_SW (var73.i + var66.i);
+      var67.i = ORC_CLAMP_SW (var65.i + var66.i);
+      /* 15: mulhsw */
+      var68.i = (var63.i * var50.i) >> 16;
+      /* 16: addssw */
+      var69.i = ORC_CLAMP_SW (var65.i + var68.i);
+      /* 18: mulhsw */
+      var70.i = (var63.i * var51.i) >> 16;
       /* 19: addssw */
-      var75.i = ORC_CLAMP_SW (var69.i + var65.i);
-      /* 20: addssw */
-      var76.i = ORC_CLAMP_SW (var75.i + var65.i);
-      /* 22: mullw */
-      var77.i = (var65.i * var52.i) & 0xffff;
-      /* 23: shrsw */
-      var78.i = var77.i >> 8;
-      /* 24: addssw */
-      var79.i = ORC_CLAMP_SW (var76.i + var78.i);
-      /* 26: mullw */
-      var80.i = (var65.i * var53.i) & 0xffff;
-      /* 27: shrsw */
-      var81.i = var80.i >> 8;
-      /* 28: subssw */
-      var82.i = ORC_CLAMP_SW (var69.i - var81.i);
-      /* 30: mullw */
-      var83.i = (var66.i * var54.i) & 0xffff;
-      /* 31: shrsw */
-      var84.i = var83.i >> 8;
-      /* 32: subssw */
-      var85.i = ORC_CLAMP_SW (var82.i - var84.i);
-      /* 33: subssw */
-      var86.i = ORC_CLAMP_SW (var85.i - var84.i);
-      /* 34: convssswb */
-      var87 = ORC_CLAMP_SB (var74.i);
-      /* 35: convssswb */
-      var88 = ORC_CLAMP_SB (var86.i);
-      /* 36: convssswb */
-      var89 = ORC_CLAMP_SB (var79.i);
-      /* 37: mergebw */
+      var71.i = ORC_CLAMP_SW (var65.i + var70.i);
+      /* 21: mulhsw */
+      var72.i = (var64.i * var52.i) >> 16;
+      /* 22: addssw */
+      var73.i = ORC_CLAMP_SW (var71.i + var72.i);
+      /* 23: convssswb */
+      var74 = ORC_CLAMP_SB (var67.i);
+      /* 24: convssswb */
+      var75 = ORC_CLAMP_SB (var73.i);
+      /* 25: convssswb */
+      var76 = ORC_CLAMP_SB (var69.i);
+      /* 26: mergebw */
       {
         orc_union16 _dest;
-        _dest.x2[0] = var87;
-        _dest.x2[1] = var88;
-        var90.i = _dest.i;
+        _dest.x2[0] = var74;
+        _dest.x2[1] = var75;
+        var77.i = _dest.i;
       }
-      /* 38: mergebw */
+      /* 27: mergebw */
       {
         orc_union16 _dest;
-        _dest.x2[0] = var89;
-        _dest.x2[1] = var61;
-        var91.i = _dest.i;
+        _dest.x2[0] = var76;
+        _dest.x2[1] = var59;
+        var78.i = _dest.i;
       }
-      /* 39: mergewl */
+      /* 28: mergewl */
       {
         orc_union32 _dest;
-        _dest.x2[0] = var90.i;
-        _dest.x2[1] = var91.i;
-        var92.i = _dest.i;
+        _dest.x2[0] = var77.i;
+        _dest.x2[1] = var78.i;
+        var79.i = _dest.i;
       }
-      /* 41: addb */
-      var56.x4[0] = var92.x4[0] + var55.x4[0];
-      var56.x4[1] = var92.x4[1] + var55.x4[1];
-      var56.x4[2] = var92.x4[2] + var55.x4[2];
-      var56.x4[3] = var92.x4[3] + var55.x4[3];
-      /* 42: storel */
-      ptr0[i] = var56;
+      /* 30: addb */
+      var54.x4[0] = var79.x4[0] + var53.x4[0];
+      var54.x4[1] = var79.x4[1] + var53.x4[1];
+      var54.x4[2] = var79.x4[2] + var53.x4[2];
+      var54.x4[3] = var79.x4[3] + var53.x4[3];
+      /* 31: storel */
+      ptr0[i] = var54;
     }
   }
 
@@ -8892,7 +8341,8 @@
 
 void
 video_convert_orc_convert_AYUV_RGBA (guint8 * ORC_RESTRICT d1, int d1_stride,
-    const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
+    const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3,
+    int p4, int p5, int n, int m)
 {
   OrcExecutor _ex, *ex = &_ex;
   static volatile int p_inited = 0;
@@ -8908,20 +8358,16 @@
       static const orc_uint8 bc[] = {
         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 65, 89,
-        85, 86, 95, 82, 71, 66, 65, 11, 4, 4, 12, 4, 4, 14, 1, 8,
-        0, 0, 0, 14, 4, 128, 0, 0, 0, 14, 4, 42, 0, 0, 0, 14,
-        4, 103, 0, 0, 0, 14, 4, 4, 0, 0, 0, 14, 4, 100, 0, 0,
-        0, 14, 4, 104, 0, 0, 0, 20, 2, 20, 2, 20, 1, 20, 1, 20,
-        1, 20, 1, 20, 2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 2, 20,
-        1, 20, 1, 20, 1, 20, 4, 21, 2, 65, 47, 4, 17, 198, 32, 33,
-        47, 199, 35, 34, 33, 199, 37, 36, 32, 149, 38, 35, 149, 39, 36, 149,
-        40, 37, 89, 32, 38, 18, 94, 32, 32, 16, 71, 38, 38, 32, 71, 41,
-        38, 40, 89, 32, 40, 19, 94, 32, 32, 16, 99, 41, 41, 32, 71, 41,
-        41, 40, 71, 43, 38, 39, 71, 43, 43, 39, 89, 32, 39, 20, 94, 32,
-        32, 16, 71, 43, 43, 32, 89, 32, 39, 21, 94, 32, 32, 16, 99, 42,
-        38, 32, 89, 32, 40, 22, 94, 32, 32, 16, 99, 42, 42, 32, 99, 42,
-        42, 32, 159, 44, 41, 159, 45, 42, 159, 46, 43, 196, 32, 44, 45, 196,
-        33, 46, 34, 195, 47, 32, 33, 21, 2, 33, 0, 47, 17, 2, 0,
+        85, 86, 95, 82, 71, 66, 65, 11, 4, 4, 12, 4, 4, 14, 1, 128,
+        0, 0, 0, 16, 2, 16, 2, 16, 2, 16, 2, 16, 2, 20, 1, 20,
+        1, 20, 1, 20, 1, 20, 2, 20, 2, 20, 2, 20, 2, 20, 2, 20,
+        2, 20, 1, 20, 1, 20, 1, 20, 4, 21, 2, 65, 45, 4, 16, 198,
+        38, 36, 45, 199, 33, 32, 36, 199, 35, 34, 38, 151, 36, 33, 151, 37,
+        34, 151, 38, 35, 90, 36, 36, 24, 90, 39, 38, 25, 71, 39, 36, 39,
+        90, 41, 37, 26, 71, 41, 36, 41, 90, 40, 37, 27, 71, 40, 36, 40,
+        90, 36, 38, 28, 71, 40, 40, 36, 159, 42, 39, 159, 43, 40, 159, 44,
+        41, 196, 39, 42, 43, 196, 41, 44, 32, 195, 45, 39, 41, 21, 2, 33,
+        0, 45, 16, 2, 0,
       };
       p = orc_program_new_from_static_bytecode (bc);
       orc_program_set_backup_function (p,
@@ -8934,97 +8380,72 @@
           _backup_video_convert_orc_convert_AYUV_RGBA);
       orc_program_add_destination (p, 4, "d1");
       orc_program_add_source (p, 4, "s1");
-      orc_program_add_constant (p, 1, 0x00000008, "c1");
-      orc_program_add_constant (p, 4, 0x00000080, "c2");
-      orc_program_add_constant (p, 4, 0x0000002a, "c3");
-      orc_program_add_constant (p, 4, 0x00000067, "c4");
-      orc_program_add_constant (p, 4, 0x00000004, "c5");
-      orc_program_add_constant (p, 4, 0x00000064, "c6");
-      orc_program_add_constant (p, 4, 0x00000068, "c7");
-      orc_program_add_temporary (p, 2, "t1");
-      orc_program_add_temporary (p, 2, "t2");
+      orc_program_add_constant (p, 1, 0x00000080, "c1");
+      orc_program_add_parameter (p, 2, "p1");
+      orc_program_add_parameter (p, 2, "p2");
+      orc_program_add_parameter (p, 2, "p3");
+      orc_program_add_parameter (p, 2, "p4");
+      orc_program_add_parameter (p, 2, "p5");
+      orc_program_add_temporary (p, 1, "t1");
+      orc_program_add_temporary (p, 1, "t2");
       orc_program_add_temporary (p, 1, "t3");
       orc_program_add_temporary (p, 1, "t4");
-      orc_program_add_temporary (p, 1, "t5");
-      orc_program_add_temporary (p, 1, "t6");
+      orc_program_add_temporary (p, 2, "t5");
+      orc_program_add_temporary (p, 2, "t6");
       orc_program_add_temporary (p, 2, "t7");
       orc_program_add_temporary (p, 2, "t8");
       orc_program_add_temporary (p, 2, "t9");
       orc_program_add_temporary (p, 2, "t10");
-      orc_program_add_temporary (p, 2, "t11");
-      orc_program_add_temporary (p, 2, "t12");
+      orc_program_add_temporary (p, 1, "t11");
+      orc_program_add_temporary (p, 1, "t12");
       orc_program_add_temporary (p, 1, "t13");
-      orc_program_add_temporary (p, 1, "t14");
-      orc_program_add_temporary (p, 1, "t15");
-      orc_program_add_temporary (p, 4, "t16");
+      orc_program_add_temporary (p, 4, "t14");
 
-      orc_program_append_2 (p, "subb", 2, 47, ORC_VAR_S1, ORC_VAR_C2,
+      orc_program_append_2 (p, "subb", 2, ORC_VAR_T14, ORC_VAR_S1, ORC_VAR_C1,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T1, ORC_VAR_T2, 47,
+      orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T7, ORC_VAR_T5,
+          ORC_VAR_T14, ORC_VAR_D1);
+      orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T5,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T2,
+      orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T7,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_T1,
+      orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_D1,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1,
+      orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_D1,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_D1,
+      orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_D1,
+      orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_P1,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T7, ORC_VAR_C3,
+      orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_P2,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
+      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_T8,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T1,
+      orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T10, ORC_VAR_T6, ORC_VAR_P3,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T7, ORC_VAR_T9,
+      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T5,
+          ORC_VAR_T10, ORC_VAR_D1);
+      orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_P4,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_C4,
+      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T9, ORC_VAR_T5, ORC_VAR_T9,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
+      orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T7, ORC_VAR_P5,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "subssw", 0, ORC_VAR_T10, ORC_VAR_T10,
-          ORC_VAR_T1, ORC_VAR_D1);
-      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T10,
-          ORC_VAR_T9, ORC_VAR_D1);
-      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T7, ORC_VAR_T8,
+      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T5,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T12,
-          ORC_VAR_T8, ORC_VAR_D1);
-      orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_C5,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T12,
-          ORC_VAR_T1, ORC_VAR_D1);
-      orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_C6,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T7, ORC_VAR_T1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_C7,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T11,
-          ORC_VAR_T1, ORC_VAR_D1);
-      orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T11,
-          ORC_VAR_T1, ORC_VAR_D1);
+      orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T11, ORC_VAR_T8,
+          ORC_VAR_D1, ORC_VAR_D1);
+      orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T12, ORC_VAR_T9,
+          ORC_VAR_D1, ORC_VAR_D1);
       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T13, ORC_VAR_T10,
           ORC_VAR_D1, ORC_VAR_D1);
-      orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T14, ORC_VAR_T11,
-          ORC_VAR_D1, ORC_VAR_D1);
-      orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T15, ORC_VAR_T12,
-          ORC_VAR_D1, ORC_VAR_D1);
-      orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T13,
-          ORC_VAR_T14, ORC_VAR_D1);
-      orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_T15,
-          ORC_VAR_T3, ORC_VAR_D1);
-      orc_program_append_2 (p, "mergewl", 0, 47, ORC_VAR_T1, ORC_VAR_T2,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, 47, ORC_VAR_C2,
+      orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T8, ORC_VAR_T11,
+          ORC_VAR_T12, ORC_VAR_D1);
+      orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T10, ORC_VAR_T13,
+          ORC_VAR_T1, ORC_VAR_D1);
+      orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T14, ORC_VAR_T8,
+          ORC_VAR_T10, ORC_VAR_D1);
+      orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T14, ORC_VAR_C1,
           ORC_VAR_D1);
 #endif
 
@@ -9044,6 +8465,11 @@
   ex->params[ORC_VAR_D1] = d1_stride;
   ex->arrays[ORC_VAR_S1] = (void *) s1;
   ex->params[ORC_VAR_S1] = s1_stride;
+  ex->params[ORC_VAR_P1] = p1;
+  ex->params[ORC_VAR_P2] = p2;
+  ex->params[ORC_VAR_P3] = p3;
+  ex->params[ORC_VAR_P4] = p4;
+  ex->params[ORC_VAR_P5] = p5;
 
   func = c->exec;
   func (ex);
@@ -9056,77 +8482,56 @@
 void
 video_convert_orc_convert_I420_BGRA (guint8 * ORC_RESTRICT d1,
     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
-    const guint8 * ORC_RESTRICT s3, int n)
+    const guint8 * ORC_RESTRICT s3, int p1, int p2, int p3, int p4, int p5,
+    int n)
 {
   int i;
   orc_union32 *ORC_RESTRICT ptr0;
   const orc_int8 *ORC_RESTRICT ptr4;
   const orc_int8 *ORC_RESTRICT ptr5;
   const orc_int8 *ORC_RESTRICT ptr6;
+  orc_int8 var42;
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+  volatile orc_int8 var43;
+#else
+  orc_int8 var43;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+  volatile orc_int8 var44;
+#else
   orc_int8 var44;
+#endif
 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
   volatile orc_int8 var45;
 #else
   orc_int8 var45;
 #endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_int8 var46;
-#else
-  orc_int8 var46;
-#endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_int8 var47;
-#else
-  orc_int8 var47;
-#endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var48;
-#else
+  orc_union16 var46;
+  orc_union16 var47;
   orc_union16 var48;
-#endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var49;
-#else
   orc_union16 var49;
-#endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var50;
-#else
   orc_union16 var50;
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+  volatile orc_int8 var51;
+#else
+  orc_int8 var51;
 #endif
 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var51;
+  volatile orc_union32 var52;
 #else
-  orc_union16 var51;
+  orc_union32 var52;
 #endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var52;
-#else
-  orc_union16 var52;
-#endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var53;
-#else
-  orc_union16 var53;
-#endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_int8 var54;
-#else
+  orc_union32 var53;
   orc_int8 var54;
-#endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_int8 var55;
-#else
-  orc_int8 var55;
-#endif
-  orc_union32 var56;
+  orc_union16 var55;
+  orc_int8 var56;
   orc_int8 var57;
   orc_union16 var58;
   orc_int8 var59;
   orc_int8 var60;
   orc_union16 var61;
-  orc_int8 var62;
-  orc_int8 var63;
+  orc_union16 var62;
+  orc_union16 var63;
   orc_union16 var64;
   orc_union16 var65;
   orc_union16 var66;
@@ -9134,27 +8539,12 @@
   orc_union16 var68;
   orc_union16 var69;
   orc_union16 var70;
-  orc_union16 var71;
-  orc_union16 var72;
-  orc_union16 var73;
+  orc_int8 var71;
+  orc_int8 var72;
+  orc_int8 var73;
   orc_union16 var74;
   orc_union16 var75;
-  orc_union16 var76;
-  orc_union16 var77;
-  orc_union16 var78;
-  orc_union16 var79;
-  orc_union16 var80;
-  orc_union16 var81;
-  orc_union16 var82;
-  orc_union16 var83;
-  orc_union16 var84;
-  orc_int8 var85;
-  orc_int8 var86;
-  orc_int8 var87;
-  orc_union16 var88;
-  orc_union16 var89;
-  orc_int8 var90;
-  orc_union16 var91;
+  orc_union32 var76;
 
   ptr0 = (orc_union32 *) d1;
   ptr4 = (orc_int8 *) s1;
@@ -9162,126 +8552,100 @@
   ptr6 = (orc_int8 *) s3;
 
   /* 1: loadpb */
-  var45 = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+  var43 = (int) 0x00000080;     /* 128 or 6.32404e-322f */
   /* 5: loadpb */
-  var46 = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+  var44 = (int) 0x00000080;     /* 128 or 6.32404e-322f */
   /* 9: loadpb */
-  var47 = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+  var45 = (int) 0x00000080;     /* 128 or 6.32404e-322f */
   /* 12: loadpw */
-  var48.i = (int) 0x0000002a;   /* 42 or 2.07508e-322f */
+  var46.i = p1;
+  /* 14: loadpw */
+  var47.i = p2;
   /* 17: loadpw */
-  var49.i = (int) 0x00000067;   /* 103 or 5.08888e-322f */
-  /* 24: loadpw */
-  var50.i = (int) 0x00000004;   /* 4 or 1.97626e-323f */
-  /* 28: loadpw */
-  var51.i = (int) 0x00000064;   /* 100 or 4.94066e-322f */
-  /* 32: loadpw */
-  var52.i = (int) 0x00000068;   /* 104 or 5.13828e-322f */
-  /* 41: loadpb */
-  var53.x2[0] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
-  var53.x2[1] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
-  /* 43: loadpb */
-  var54 = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-  /* 45: loadpb */
-  var55 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
+  var48.i = p3;
+  /* 20: loadpw */
+  var49.i = p4;
+  /* 23: loadpw */
+  var50.i = p5;
+  /* 30: loadpb */
+  var51 = (int) 0x0000007f;     /* 127 or 6.27463e-322f */
+  /* 33: loadpb */
+  var52.x4[0] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
+  var52.x4[1] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
+  var52.x4[2] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
+  var52.x4[3] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
 
   for (i = 0; i < n; i++) {
     /* 0: loadb */
-    var44 = ptr4[i];
+    var42 = ptr4[i];
     /* 2: subb */
-    var57 = var44 - var45;
-    /* 3: convsbw */
-    var58.i = var57;
-    /* 4: loadupib */
-    var59 =
-        (i & 1) ? ((orc_uint8) ptr5[i >> 1] + (orc_uint8) ptr5[(i >> 1) + 1] +
-        1) >> 1 : ptr5[i >> 1];
+    var54 = var42 - var43;
+    /* 3: splatbw */
+    var55.i = ((var54 & 0xff) << 8) | (var54 & 0xff);
+    /* 4: loadupdb */
+    var56 = ptr5[i >> 1];
     /* 6: subb */
-    var60 = var59 - var46;
-    /* 7: convsbw */
-    var61.i = var60;
-    /* 8: loadupib */
-    var62 =
-        (i & 1) ? ((orc_uint8) ptr6[i >> 1] + (orc_uint8) ptr6[(i >> 1) + 1] +
-        1) >> 1 : ptr6[i >> 1];
+    var57 = var56 - var44;
+    /* 7: splatbw */
+    var58.i = ((var57 & 0xff) << 8) | (var57 & 0xff);
+    /* 8: loadupdb */
+    var59 = ptr6[i >> 1];
     /* 10: subb */
-    var63 = var62 - var47;
-    /* 11: convsbw */
-    var64.i = var63;
-    /* 13: mullw */
-    var65.i = (var58.i * var48.i) & 0xffff;
-    /* 14: shrsw */
-    var66.i = var65.i >> 8;
-    /* 15: addssw */
-    var67.i = ORC_CLAMP_SW (var58.i + var66.i);
+    var60 = var59 - var45;
+    /* 11: splatbw */
+    var61.i = ((var60 & 0xff) << 8) | (var60 & 0xff);
+    /* 13: mulhsw */
+    var62.i = (var55.i * var46.i) >> 16;
+    /* 15: mulhsw */
+    var63.i = (var61.i * var47.i) >> 16;
     /* 16: addssw */
-    var68.i = ORC_CLAMP_SW (var67.i + var64.i);
-    /* 18: mullw */
-    var69.i = (var64.i * var49.i) & 0xffff;
-    /* 19: shrsw */
-    var70.i = var69.i >> 8;
-    /* 20: subssw */
-    var71.i = ORC_CLAMP_SW (var68.i - var70.i);
-    /* 21: addssw */
-    var72.i = ORC_CLAMP_SW (var71.i + var64.i);
+    var64.i = ORC_CLAMP_SW (var62.i + var63.i);
+    /* 18: mulhsw */
+    var65.i = (var58.i * var48.i) >> 16;
+    /* 19: addssw */
+    var66.i = ORC_CLAMP_SW (var62.i + var65.i);
+    /* 21: mulhsw */
+    var67.i = (var58.i * var49.i) >> 16;
     /* 22: addssw */
-    var73.i = ORC_CLAMP_SW (var67.i + var61.i);
-    /* 23: addssw */
-    var74.i = ORC_CLAMP_SW (var73.i + var61.i);
-    /* 25: mullw */
-    var75.i = (var61.i * var50.i) & 0xffff;
-    /* 26: shrsw */
-    var76.i = var75.i >> 8;
-    /* 27: addssw */
-    var77.i = ORC_CLAMP_SW (var74.i + var76.i);
-    /* 29: mullw */
-    var78.i = (var61.i * var51.i) & 0xffff;
-    /* 30: shrsw */
-    var79.i = var78.i >> 8;
-    /* 31: subssw */
-    var80.i = ORC_CLAMP_SW (var67.i - var79.i);
-    /* 33: mullw */
-    var81.i = (var64.i * var52.i) & 0xffff;
-    /* 34: shrsw */
-    var82.i = var81.i >> 8;
-    /* 35: subssw */
-    var83.i = ORC_CLAMP_SW (var80.i - var82.i);
-    /* 36: subssw */
-    var84.i = ORC_CLAMP_SW (var83.i - var82.i);
-    /* 37: convssswb */
-    var85 = ORC_CLAMP_SB (var72.i);
-    /* 38: convssswb */
-    var86 = ORC_CLAMP_SB (var84.i);
-    /* 39: convssswb */
-    var87 = ORC_CLAMP_SB (var77.i);
-    /* 40: mergebw */
+    var68.i = ORC_CLAMP_SW (var62.i + var67.i);
+    /* 24: mulhsw */
+    var69.i = (var61.i * var50.i) >> 16;
+    /* 25: addssw */
+    var70.i = ORC_CLAMP_SW (var68.i + var69.i);
+    /* 26: convssswb */
+    var71 = ORC_CLAMP_SB (var64.i);
+    /* 27: convssswb */
+    var72 = ORC_CLAMP_SB (var70.i);
+    /* 28: convssswb */
+    var73 = ORC_CLAMP_SB (var66.i);
+    /* 29: mergebw */
     {
       orc_union16 _dest;
-      _dest.x2[0] = var87;
-      _dest.x2[1] = var86;
-      var88.i = _dest.i;
+      _dest.x2[0] = var73;
+      _dest.x2[1] = var72;
+      var74.i = _dest.i;
     }
-    /* 42: subb */
-    var89.x2[0] = var88.x2[0] - var53.x2[0];
-    var89.x2[1] = var88.x2[1] - var53.x2[1];
-    /* 44: subb */
-    var90 = var85 - var54;
-    /* 46: mergebw */
+    /* 31: mergebw */
     {
       orc_union16 _dest;
-      _dest.x2[0] = var90;
-      _dest.x2[1] = var55;
-      var91.i = _dest.i;
+      _dest.x2[0] = var71;
+      _dest.x2[1] = var51;
+      var75.i = _dest.i;
     }
-    /* 47: mergewl */
+    /* 32: mergewl */
     {
       orc_union32 _dest;
-      _dest.x2[0] = var89.i;
-      _dest.x2[1] = var91.i;
-      var56.i = _dest.i;
+      _dest.x2[0] = var74.i;
+      _dest.x2[1] = var75.i;
+      var76.i = _dest.i;
     }
-    /* 48: storel */
-    ptr0[i] = var56;
+    /* 34: addb */
+    var53.x4[0] = var76.x4[0] + var52.x4[0];
+    var53.x4[1] = var76.x4[1] + var52.x4[1];
+    var53.x4[2] = var76.x4[2] + var52.x4[2];
+    var53.x4[3] = var76.x4[3] + var52.x4[3];
+    /* 35: storel */
+    ptr0[i] = var53;
   }
 
 }
@@ -9296,70 +8660,48 @@
   const orc_int8 *ORC_RESTRICT ptr4;
   const orc_int8 *ORC_RESTRICT ptr5;
   const orc_int8 *ORC_RESTRICT ptr6;
+  orc_int8 var42;
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+  volatile orc_int8 var43;
+#else
+  orc_int8 var43;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+  volatile orc_int8 var44;
+#else
   orc_int8 var44;
+#endif
 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
   volatile orc_int8 var45;
 #else
   orc_int8 var45;
 #endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_int8 var46;
-#else
-  orc_int8 var46;
-#endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_int8 var47;
-#else
-  orc_int8 var47;
-#endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var48;
-#else
+  orc_union16 var46;
+  orc_union16 var47;
   orc_union16 var48;
-#endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var49;
-#else
   orc_union16 var49;
-#endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var50;
-#else
   orc_union16 var50;
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+  volatile orc_int8 var51;
+#else
+  orc_int8 var51;
 #endif
 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var51;
+  volatile orc_union32 var52;
 #else
-  orc_union16 var51;
+  orc_union32 var52;
 #endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var52;
-#else
-  orc_union16 var52;
-#endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var53;
-#else
-  orc_union16 var53;
-#endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_int8 var54;
-#else
+  orc_union32 var53;
   orc_int8 var54;
-#endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_int8 var55;
-#else
-  orc_int8 var55;
-#endif
-  orc_union32 var56;
+  orc_union16 var55;
+  orc_int8 var56;
   orc_int8 var57;
   orc_union16 var58;
   orc_int8 var59;
   orc_int8 var60;
   orc_union16 var61;
-  orc_int8 var62;
-  orc_int8 var63;
+  orc_union16 var62;
+  orc_union16 var63;
   orc_union16 var64;
   orc_union16 var65;
   orc_union16 var66;
@@ -9367,27 +8709,12 @@
   orc_union16 var68;
   orc_union16 var69;
   orc_union16 var70;
-  orc_union16 var71;
-  orc_union16 var72;
-  orc_union16 var73;
+  orc_int8 var71;
+  orc_int8 var72;
+  orc_int8 var73;
   orc_union16 var74;
   orc_union16 var75;
-  orc_union16 var76;
-  orc_union16 var77;
-  orc_union16 var78;
-  orc_union16 var79;
-  orc_union16 var80;
-  orc_union16 var81;
-  orc_union16 var82;
-  orc_union16 var83;
-  orc_union16 var84;
-  orc_int8 var85;
-  orc_int8 var86;
-  orc_int8 var87;
-  orc_union16 var88;
-  orc_union16 var89;
-  orc_int8 var90;
-  orc_union16 var91;
+  orc_union32 var76;
 
   ptr0 = (orc_union32 *) ex->arrays[0];
   ptr4 = (orc_int8 *) ex->arrays[4];
@@ -9395,126 +8722,100 @@
   ptr6 = (orc_int8 *) ex->arrays[6];
 
   /* 1: loadpb */
-  var45 = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+  var43 = (int) 0x00000080;     /* 128 or 6.32404e-322f */
   /* 5: loadpb */
-  var46 = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+  var44 = (int) 0x00000080;     /* 128 or 6.32404e-322f */
   /* 9: loadpb */
-  var47 = (int) 0x00000080;     /* 128 or 6.32404e-322f */
+  var45 = (int) 0x00000080;     /* 128 or 6.32404e-322f */
   /* 12: loadpw */
-  var48.i = (int) 0x0000002a;   /* 42 or 2.07508e-322f */
+  var46.i = ex->params[24];
+  /* 14: loadpw */
+  var47.i = ex->params[25];
   /* 17: loadpw */
-  var49.i = (int) 0x00000067;   /* 103 or 5.08888e-322f */
-  /* 24: loadpw */
-  var50.i = (int) 0x00000004;   /* 4 or 1.97626e-323f */
-  /* 28: loadpw */
-  var51.i = (int) 0x00000064;   /* 100 or 4.94066e-322f */
-  /* 32: loadpw */
-  var52.i = (int) 0x00000068;   /* 104 or 5.13828e-322f */
-  /* 41: loadpb */
-  var53.x2[0] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
-  var53.x2[1] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
-  /* 43: loadpb */
-  var54 = (int) 0x00000080;     /* 128 or 6.32404e-322f */
-  /* 45: loadpb */
-  var55 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
+  var48.i = ex->params[26];
+  /* 20: loadpw */
+  var49.i = ex->params[27];
+  /* 23: loadpw */
+  var50.i = ex->params[28];
+  /* 30: loadpb */
+  var51 = (int) 0x0000007f;     /* 127 or 6.27463e-322f */
+  /* 33: loadpb */
+  var52.x4[0] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
+  var52.x4[1] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
+  var52.x4[2] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
+  var52.x4[3] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
 
   for (i = 0; i < n; i++) {
     /* 0: loadb */
-    var44 = ptr4[i];
+    var42 = ptr4[i];
     /* 2: subb */
-    var57 = var44 - var45;
-    /* 3: convsbw */
-    var58.i = var57;
-    /* 4: loadupib */
-    var59 =
-        (i & 1) ? ((orc_uint8) ptr5[i >> 1] + (orc_uint8) ptr5[(i >> 1) + 1] +
-        1) >> 1 : ptr5[i >> 1];
+    var54 = var42 - var43;
+    /* 3: splatbw */
+    var55.i = ((var54 & 0xff) << 8) | (var54 & 0xff);
+    /* 4: loadupdb */
+    var56 = ptr5[i >> 1];
     /* 6: subb */
-    var60 = var59 - var46;
-    /* 7: convsbw */
-    var61.i = var60;
-    /* 8: loadupib */
-    var62 =
-        (i & 1) ? ((orc_uint8) ptr6[i >> 1] + (orc_uint8) ptr6[(i >> 1) + 1] +
-        1) >> 1 : ptr6[i >> 1];
+    var57 = var56 - var44;
+    /* 7: splatbw */
+    var58.i = ((var57 & 0xff) << 8) | (var57 & 0xff);
+    /* 8: loadupdb */
+    var59 = ptr6[i >> 1];
     /* 10: subb */
-    var63 = var62 - var47;
-    /* 11: convsbw */
-    var64.i = var63;
-    /* 13: mullw */
-    var65.i = (var58.i * var48.i) & 0xffff;
-    /* 14: shrsw */
-    var66.i = var65.i >> 8;
-    /* 15: addssw */
-    var67.i = ORC_CLAMP_SW (var58.i + var66.i);
+    var60 = var59 - var45;
+    /* 11: splatbw */
+    var61.i = ((var60 & 0xff) << 8) | (var60 & 0xff);
+    /* 13: mulhsw */
+    var62.i = (var55.i * var46.i) >> 16;
+    /* 15: mulhsw */
+    var63.i = (var61.i * var47.i) >> 16;
     /* 16: addssw */
-    var68.i = ORC_CLAMP_SW (var67.i + var64.i);
-    /* 18: mullw */
-    var69.i = (var64.i * var49.i) & 0xffff;
-    /* 19: shrsw */
-    var70.i = var69.i >> 8;
-    /* 20: subssw */
-    var71.i = ORC_CLAMP_SW (var68.i - var70.i);
-    /* 21: addssw */
-    var72.i = ORC_CLAMP_SW (var71.i + var64.i);
+    var64.i = ORC_CLAMP_SW (var62.i + var63.i);
+    /* 18: mulhsw */
+    var65.i = (var58.i * var48.i) >> 16;
+    /* 19: addssw */
+    var66.i = ORC_CLAMP_SW (var62.i + var65.i);
+    /* 21: mulhsw */
+    var67.i = (var58.i * var49.i) >> 16;
     /* 22: addssw */
-    var73.i = ORC_CLAMP_SW (var67.i + var61.i);
-    /* 23: addssw */
-    var74.i = ORC_CLAMP_SW (var73.i + var61.i);
-    /* 25: mullw */
-    var75.i = (var61.i * var50.i) & 0xffff;
-    /* 26: shrsw */
-    var76.i = var75.i >> 8;
-    /* 27: addssw */
-    var77.i = ORC_CLAMP_SW (var74.i + var76.i);
-    /* 29: mullw */
-    var78.i = (var61.i * var51.i) & 0xffff;
-    /* 30: shrsw */
-    var79.i = var78.i >> 8;
-    /* 31: subssw */
-    var80.i = ORC_CLAMP_SW (var67.i - var79.i);
-    /* 33: mullw */
-    var81.i = (var64.i * var52.i) & 0xffff;
-    /* 34: shrsw */
-    var82.i = var81.i >> 8;
-    /* 35: subssw */
-    var83.i = ORC_CLAMP_SW (var80.i - var82.i);
-    /* 36: subssw */
-    var84.i = ORC_CLAMP_SW (var83.i - var82.i);
-    /* 37: convssswb */
-    var85 = ORC_CLAMP_SB (var72.i);
-    /* 38: convssswb */
-    var86 = ORC_CLAMP_SB (var84.i);
-    /* 39: convssswb */
-    var87 = ORC_CLAMP_SB (var77.i);
-    /* 40: mergebw */
+    var68.i = ORC_CLAMP_SW (var62.i + var67.i);
+    /* 24: mulhsw */
+    var69.i = (var61.i * var50.i) >> 16;
+    /* 25: addssw */
+    var70.i = ORC_CLAMP_SW (var68.i + var69.i);
+    /* 26: convssswb */
+    var71 = ORC_CLAMP_SB (var64.i);
+    /* 27: convssswb */
+    var72 = ORC_CLAMP_SB (var70.i);
+    /* 28: convssswb */
+    var73 = ORC_CLAMP_SB (var66.i);
+    /* 29: mergebw */
     {
       orc_union16 _dest;
-      _dest.x2[0] = var87;
-      _dest.x2[1] = var86;
-      var88.i = _dest.i;
+      _dest.x2[0] = var73;
+      _dest.x2[1] = var72;
+      var74.i = _dest.i;
     }
-    /* 42: subb */
-    var89.x2[0] = var88.x2[0] - var53.x2[0];
-    var89.x2[1] = var88.x2[1] - var53.x2[1];
-    /* 44: subb */
-    var90 = var85 - var54;
-    /* 46: mergebw */
+    /* 31: mergebw */
     {
       orc_union16 _dest;
-      _dest.x2[0] = var90;
-      _dest.x2[1] = var55;
-      var91.i = _dest.i;
+      _dest.x2[0] = var71;
+      _dest.x2[1] = var51;
+      var75.i = _dest.i;
     }
-    /* 47: mergewl */
+    /* 32: mergewl */
     {
       orc_union32 _dest;
-      _dest.x2[0] = var89.i;
-      _dest.x2[1] = var91.i;
-      var56.i = _dest.i;
+      _dest.x2[0] = var74.i;
+      _dest.x2[1] = var75.i;
+      var76.i = _dest.i;
     }
-    /* 48: storel */
-    ptr0[i] = var56;
+    /* 34: addb */
+    var53.x4[0] = var76.x4[0] + var52.x4[0];
+    var53.x4[1] = var76.x4[1] + var52.x4[1];
+    var53.x4[2] = var76.x4[2] + var52.x4[2];
+    var53.x4[3] = var76.x4[3] + var52.x4[3];
+    /* 35: storel */
+    ptr0[i] = var53;
   }
 
 }
@@ -9522,7 +8823,8 @@
 void
 video_convert_orc_convert_I420_BGRA (guint8 * ORC_RESTRICT d1,
     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
-    const guint8 * ORC_RESTRICT s3, int n)
+    const guint8 * ORC_RESTRICT s3, int p1, int p2, int p3, int p4, int p5,
+    int n)
 {
   OrcExecutor _ex, *ex = &_ex;
   static volatile int p_inited = 0;
@@ -9539,20 +8841,15 @@
         1, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
         95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 73, 52, 50,
         48, 95, 66, 71, 82, 65, 11, 4, 4, 12, 1, 1, 12, 1, 1, 12,
-        1, 1, 14, 1, 8, 0, 0, 0, 14, 1, 128, 0, 0, 0, 14, 4,
-        42, 0, 0, 0, 14, 4, 103, 0, 0, 0, 14, 4, 4, 0, 0, 0,
-        14, 4, 100, 0, 0, 0, 14, 4, 104, 0, 0, 0, 14, 4, 255, 0,
-        0, 0, 20, 2, 20, 2, 20, 1, 20, 2, 20, 2, 20, 2, 20, 2,
-        20, 2, 20, 2, 20, 1, 20, 1, 20, 1, 65, 34, 4, 17, 149, 35,
-        34, 46, 34, 5, 65, 34, 34, 17, 149, 36, 34, 46, 34, 6, 65, 34,
-        34, 17, 149, 37, 34, 89, 32, 35, 18, 94, 32, 32, 16, 71, 35, 35,
-        32, 71, 38, 35, 37, 89, 32, 37, 19, 94, 32, 32, 16, 99, 38, 38,
-        32, 71, 38, 38, 37, 71, 40, 35, 36, 71, 40, 40, 36, 89, 32, 36,
-        20, 94, 32, 32, 16, 71, 40, 40, 32, 89, 32, 36, 21, 94, 32, 32,
-        16, 99, 39, 35, 32, 89, 32, 37, 22, 94, 32, 32, 16, 99, 39, 39,
-        32, 99, 39, 39, 32, 159, 41, 38, 159, 42, 39, 159, 43, 40, 196, 32,
-        43, 42, 21, 1, 65, 32, 32, 17, 65, 41, 41, 17, 196, 33, 41, 23,
-        195, 0, 32, 33, 2, 0,
+        1, 1, 14, 1, 128, 0, 0, 0, 14, 4, 127, 0, 0, 0, 16, 2,
+        16, 2, 16, 2, 16, 2, 16, 2, 20, 2, 20, 2, 20, 2, 20, 2,
+        20, 2, 20, 2, 20, 1, 20, 1, 20, 1, 20, 4, 65, 38, 4, 16,
+        151, 32, 38, 45, 38, 5, 65, 38, 38, 16, 151, 33, 38, 45, 38, 6,
+        65, 38, 38, 16, 151, 34, 38, 90, 32, 32, 24, 90, 35, 34, 25, 71,
+        35, 32, 35, 90, 37, 33, 26, 71, 37, 32, 37, 90, 36, 33, 27, 71,
+        36, 32, 36, 90, 32, 34, 28, 71, 36, 36, 32, 159, 38, 35, 159, 39,
+        36, 159, 40, 37, 196, 37, 40, 39, 196, 35, 38, 17, 195, 41, 37, 35,
+        21, 2, 33, 0, 41, 16, 2, 0,
       };
       p = orc_program_new_from_static_bytecode (bc);
       orc_program_set_backup_function (p,
@@ -9566,98 +8863,71 @@
       orc_program_add_source (p, 1, "s1");
       orc_program_add_source (p, 1, "s2");
       orc_program_add_source (p, 1, "s3");
-      orc_program_add_constant (p, 1, 0x00000008, "c1");
-      orc_program_add_constant (p, 1, 0x00000080, "c2");
-      orc_program_add_constant (p, 4, 0x0000002a, "c3");
-      orc_program_add_constant (p, 4, 0x00000067, "c4");
-      orc_program_add_constant (p, 4, 0x00000004, "c5");
-      orc_program_add_constant (p, 4, 0x00000064, "c6");
-      orc_program_add_constant (p, 4, 0x00000068, "c7");
-      orc_program_add_constant (p, 4, 0x000000ff, "c8");
+      orc_program_add_constant (p, 1, 0x00000080, "c1");
+      orc_program_add_constant (p, 4, 0x0000007f, "c2");
+      orc_program_add_parameter (p, 2, "p1");
+      orc_program_add_parameter (p, 2, "p2");
+      orc_program_add_parameter (p, 2, "p3");
+      orc_program_add_parameter (p, 2, "p4");
+      orc_program_add_parameter (p, 2, "p5");
       orc_program_add_temporary (p, 2, "t1");
       orc_program_add_temporary (p, 2, "t2");
-      orc_program_add_temporary (p, 1, "t3");
+      orc_program_add_temporary (p, 2, "t3");
       orc_program_add_temporary (p, 2, "t4");
       orc_program_add_temporary (p, 2, "t5");
       orc_program_add_temporary (p, 2, "t6");
-      orc_program_add_temporary (p, 2, "t7");
-      orc_program_add_temporary (p, 2, "t8");
-      orc_program_add_temporary (p, 2, "t9");
-      orc_program_add_temporary (p, 1, "t10");
-      orc_program_add_temporary (p, 1, "t11");
-      orc_program_add_temporary (p, 1, "t12");
+      orc_program_add_temporary (p, 1, "t7");
+      orc_program_add_temporary (p, 1, "t8");
+      orc_program_add_temporary (p, 1, "t9");
+      orc_program_add_temporary (p, 4, "t10");
 
-      orc_program_append_2 (p, "subb", 0, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_C2,
+      orc_program_append_2 (p, "subb", 0, ORC_VAR_T7, ORC_VAR_S1, ORC_VAR_C1,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1,
+      orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T1, ORC_VAR_T7, ORC_VAR_D1,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "loadupib", 0, ORC_VAR_T3, ORC_VAR_S2,
+      orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T7, ORC_VAR_S2,
           ORC_VAR_D1, ORC_VAR_D1);
-      orc_program_append_2 (p, "subb", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2,
+      orc_program_append_2 (p, "subb", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C1,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_D1,
+      orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T2, ORC_VAR_T7, ORC_VAR_D1,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "loadupib", 0, ORC_VAR_T3, ORC_VAR_S3,
+      orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T7, ORC_VAR_S3,
           ORC_VAR_D1, ORC_VAR_D1);
-      orc_program_append_2 (p, "subb", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2,
+      orc_program_append_2 (p, "subb", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C1,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_D1,
+      orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T3, ORC_VAR_T7, ORC_VAR_D1,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T4, ORC_VAR_C3,
+      orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
+      orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_P2,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T1,
+      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_T4,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_T6,
+      orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_P3,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T6, ORC_VAR_C4,
+      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_T6,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
+      orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_P4,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "subssw", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T1,
+      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_T5,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T6,
+      orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_P5,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T9, ORC_VAR_T4, ORC_VAR_T5,
+      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T1,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T5,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T5, ORC_VAR_C5,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "addssw", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T5, ORC_VAR_C6,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "subssw", 0, ORC_VAR_T8, ORC_VAR_T4, ORC_VAR_T1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T6, ORC_VAR_C7,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "subssw", 0, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "subssw", 0, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T10, ORC_VAR_T7,
+      orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T7, ORC_VAR_T4,
           ORC_VAR_D1, ORC_VAR_D1);
-      orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T11, ORC_VAR_T8,
+      orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T8, ORC_VAR_T5,
           ORC_VAR_D1, ORC_VAR_D1);
-      orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T12, ORC_VAR_T9,
+      orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T9, ORC_VAR_T6,
           ORC_VAR_D1, ORC_VAR_D1);
-      orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T12,
-          ORC_VAR_T11, ORC_VAR_D1);
-      orc_program_append_2 (p, "subb", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2,
+      orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T6, ORC_VAR_T9, ORC_VAR_T8,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "subb", 0, ORC_VAR_T10, ORC_VAR_T10, ORC_VAR_C2,
+      orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T4, ORC_VAR_T7, ORC_VAR_C2,
           ORC_VAR_D1);
-      orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_T10,
-          ORC_VAR_C8, ORC_VAR_D1);
-      orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
+      orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T10, ORC_VAR_T6,
+          ORC_VAR_T4, ORC_VAR_D1);
+      orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T10, ORC_VAR_C1,
           ORC_VAR_D1);
 #endif
 
@@ -9676,6112 +8946,11 @@
   ex->arrays[ORC_VAR_S1] = (void *) s1;
   ex->arrays[ORC_VAR_S2] = (void *) s2;
   ex->arrays[ORC_VAR_S3] = (void *) s3;
-
-  func = c->exec;
-  func (ex);
-}
-#endif
-
-
-/* video_convert_orc_getline_I420 */
-#ifdef DISABLE_ORC
-void
-video_convert_orc_getline_I420 (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
-    const guint8 * ORC_RESTRICT s3, int n)
-{
-  int i;
-  orc_union32 *ORC_RESTRICT ptr0;
-  const orc_int8 *ORC_RESTRICT ptr4;
-  const orc_int8 *ORC_RESTRICT ptr5;
-  const orc_int8 *ORC_RESTRICT ptr6;
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_int8 var36;
-#else
-  orc_int8 var36;
-#endif
-  orc_int8 var37;
-  orc_union32 var38;
-  orc_int8 var39;
-  orc_int8 var40;
-  orc_union16 var41;
-  orc_union16 var42;
-
-  ptr0 = (orc_union32 *) d1;
-  ptr4 = (orc_int8 *) s1;
-  ptr5 = (orc_int8 *) s2;
-  ptr6 = (orc_int8 *) s3;
-
-  /* 3: loadpb */
-  var36 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadupdb */
-    var39 = ptr5[i >> 1];
-    /* 1: loadupdb */
-    var40 = ptr6[i >> 1];
-    /* 2: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var39;
-      _dest.x2[1] = var40;
-      var41.i = _dest.i;
-    }
-    /* 4: loadb */
-    var37 = ptr4[i];
-    /* 5: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var36;
-      _dest.x2[1] = var37;
-      var42.i = _dest.i;
-    }
-    /* 6: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var42.i;
-      _dest.x2[1] = var41.i;
-      var38.i = _dest.i;
-    }
-    /* 7: storel */
-    ptr0[i] = var38;
-  }
-
-}
-
-#else
-static void
-_backup_video_convert_orc_getline_I420 (OrcExecutor * ORC_RESTRICT ex)
-{
-  int i;
-  int n = ex->n;
-  orc_union32 *ORC_RESTRICT ptr0;
-  const orc_int8 *ORC_RESTRICT ptr4;
-  const orc_int8 *ORC_RESTRICT ptr5;
-  const orc_int8 *ORC_RESTRICT ptr6;
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_int8 var36;
-#else
-  orc_int8 var36;
-#endif
-  orc_int8 var37;
-  orc_union32 var38;
-  orc_int8 var39;
-  orc_int8 var40;
-  orc_union16 var41;
-  orc_union16 var42;
-
-  ptr0 = (orc_union32 *) ex->arrays[0];
-  ptr4 = (orc_int8 *) ex->arrays[4];
-  ptr5 = (orc_int8 *) ex->arrays[5];
-  ptr6 = (orc_int8 *) ex->arrays[6];
-
-  /* 3: loadpb */
-  var36 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadupdb */
-    var39 = ptr5[i >> 1];
-    /* 1: loadupdb */
-    var40 = ptr6[i >> 1];
-    /* 2: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var39;
-      _dest.x2[1] = var40;
-      var41.i = _dest.i;
-    }
-    /* 4: loadb */
-    var37 = ptr4[i];
-    /* 5: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var36;
-      _dest.x2[1] = var37;
-      var42.i = _dest.i;
-    }
-    /* 6: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var42.i;
-      _dest.x2[1] = var41.i;
-      var38.i = _dest.i;
-    }
-    /* 7: storel */
-    ptr0[i] = var38;
-  }
-
-}
-
-void
-video_convert_orc_getline_I420 (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
-    const guint8 * ORC_RESTRICT s3, int n)
-{
-  OrcExecutor _ex, *ex = &_ex;
-  static volatile int p_inited = 0;
-  static OrcCode *c = 0;
-  void (*func) (OrcExecutor *);
-
-  if (!p_inited) {
-    orc_once_mutex_lock ();
-    if (!p_inited) {
-      OrcProgram *p;
-
-#if 1
-      static const orc_uint8 bc[] = {
-        1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
-        95, 111, 114, 99, 95, 103, 101, 116, 108, 105, 110, 101, 95, 73, 52, 50,
-        48, 11, 4, 4, 12, 1, 1, 12, 1, 1, 12, 1, 1, 14, 1, 255,
-        0, 0, 0, 20, 2, 20, 2, 20, 1, 20, 1, 45, 34, 5, 45, 35,
-        6, 196, 32, 34, 35, 196, 33, 16, 4, 195, 0, 33, 32, 2, 0,
-      };
-      p = orc_program_new_from_static_bytecode (bc);
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_getline_I420);
-#else
-      p = orc_program_new ();
-      orc_program_set_name (p, "video_convert_orc_getline_I420");
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_getline_I420);
-      orc_program_add_destination (p, 4, "d1");
-      orc_program_add_source (p, 1, "s1");
-      orc_program_add_source (p, 1, "s2");
-      orc_program_add_source (p, 1, "s3");
-      orc_program_add_constant (p, 1, 0x000000ff, "c1");
-      orc_program_add_temporary (p, 2, "t1");
-      orc_program_add_temporary (p, 2, "t2");
-      orc_program_add_temporary (p, 1, "t3");
-      orc_program_add_temporary (p, 1, "t4");
-
-      orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T3, ORC_VAR_S2,
-          ORC_VAR_D1, ORC_VAR_D1);
-      orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T4, ORC_VAR_S3,
-          ORC_VAR_D1, ORC_VAR_D1);
-      orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
-          ORC_VAR_D1);
-#endif
-
-      orc_program_compile (p);
-      c = orc_program_take_code (p);
-      orc_program_free (p);
-    }
-    p_inited = TRUE;
-    orc_once_mutex_unlock ();
-  }
-  ex->arrays[ORC_VAR_A2] = c;
-  ex->program = 0;
-
-  ex->n = n;
-  ex->arrays[ORC_VAR_D1] = d1;
-  ex->arrays[ORC_VAR_S1] = (void *) s1;
-  ex->arrays[ORC_VAR_S2] = (void *) s2;
-  ex->arrays[ORC_VAR_S3] = (void *) s3;
-
-  func = c->exec;
-  func (ex);
-}
-#endif
-
-
-/* video_convert_orc_getline_YUV9 */
-#ifdef DISABLE_ORC
-void
-video_convert_orc_getline_YUV9 (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
-    const guint8 * ORC_RESTRICT s3, int n)
-{
-  int i;
-  orc_union64 *ORC_RESTRICT ptr0;
-  const orc_union16 *ORC_RESTRICT ptr4;
-  const orc_int8 *ORC_RESTRICT ptr5;
-  const orc_int8 *ORC_RESTRICT ptr6;
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var37;
-#else
-  orc_union16 var37;
-#endif
-  orc_union16 var38;
-  orc_union64 var39;
-  orc_int8 var40;
-  orc_int8 var41;
-  orc_union16 var42;
-  orc_union32 var43;
-  orc_union32 var44;
-
-  ptr0 = (orc_union64 *) d1;
-  ptr4 = (orc_union16 *) s1;
-  ptr5 = (orc_int8 *) s2;
-  ptr6 = (orc_int8 *) s3;
-
-  /* 4: loadpb */
-  var37.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
-  var37.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadupdb */
-    var40 = ptr5[i >> 1];
-    /* 1: loadupdb */
-    var41 = ptr6[i >> 1];
-    /* 2: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var40;
-      _dest.x2[1] = var41;
-      var42.i = _dest.i;
-    }
-    /* 3: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var42.i;
-      _dest.x2[1] = var42.i;
-      var43.i = _dest.i;
-    }
-    /* 5: loadw */
-    var38 = ptr4[i];
-    /* 6: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var37.x2[0];
-      _dest.x2[1] = var38.x2[0];
-      var44.x2[0] = _dest.i;
-    }
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var37.x2[1];
-      _dest.x2[1] = var38.x2[1];
-      var44.x2[1] = _dest.i;
-    }
-    /* 7: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var44.x2[0];
-      _dest.x2[1] = var43.x2[0];
-      var39.x2[0] = _dest.i;
-    }
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var44.x2[1];
-      _dest.x2[1] = var43.x2[1];
-      var39.x2[1] = _dest.i;
-    }
-    /* 8: storeq */
-    ptr0[i] = var39;
-  }
-
-}
-
-#else
-static void
-_backup_video_convert_orc_getline_YUV9 (OrcExecutor * ORC_RESTRICT ex)
-{
-  int i;
-  int n = ex->n;
-  orc_union64 *ORC_RESTRICT ptr0;
-  const orc_union16 *ORC_RESTRICT ptr4;
-  const orc_int8 *ORC_RESTRICT ptr5;
-  const orc_int8 *ORC_RESTRICT ptr6;
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var37;
-#else
-  orc_union16 var37;
-#endif
-  orc_union16 var38;
-  orc_union64 var39;
-  orc_int8 var40;
-  orc_int8 var41;
-  orc_union16 var42;
-  orc_union32 var43;
-  orc_union32 var44;
-
-  ptr0 = (orc_union64 *) ex->arrays[0];
-  ptr4 = (orc_union16 *) ex->arrays[4];
-  ptr5 = (orc_int8 *) ex->arrays[5];
-  ptr6 = (orc_int8 *) ex->arrays[6];
-
-  /* 4: loadpb */
-  var37.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
-  var37.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadupdb */
-    var40 = ptr5[i >> 1];
-    /* 1: loadupdb */
-    var41 = ptr6[i >> 1];
-    /* 2: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var40;
-      _dest.x2[1] = var41;
-      var42.i = _dest.i;
-    }
-    /* 3: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var42.i;
-      _dest.x2[1] = var42.i;
-      var43.i = _dest.i;
-    }
-    /* 5: loadw */
-    var38 = ptr4[i];
-    /* 6: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var37.x2[0];
-      _dest.x2[1] = var38.x2[0];
-      var44.x2[0] = _dest.i;
-    }
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var37.x2[1];
-      _dest.x2[1] = var38.x2[1];
-      var44.x2[1] = _dest.i;
-    }
-    /* 7: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var44.x2[0];
-      _dest.x2[1] = var43.x2[0];
-      var39.x2[0] = _dest.i;
-    }
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var44.x2[1];
-      _dest.x2[1] = var43.x2[1];
-      var39.x2[1] = _dest.i;
-    }
-    /* 8: storeq */
-    ptr0[i] = var39;
-  }
-
-}
-
-void
-video_convert_orc_getline_YUV9 (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
-    const guint8 * ORC_RESTRICT s3, int n)
-{
-  OrcExecutor _ex, *ex = &_ex;
-  static volatile int p_inited = 0;
-  static OrcCode *c = 0;
-  void (*func) (OrcExecutor *);
-
-  if (!p_inited) {
-    orc_once_mutex_lock ();
-    if (!p_inited) {
-      OrcProgram *p;
-
-#if 1
-      static const orc_uint8 bc[] = {
-        1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
-        95, 111, 114, 99, 95, 103, 101, 116, 108, 105, 110, 101, 95, 89, 85, 86,
-        57, 11, 8, 8, 12, 2, 2, 12, 1, 1, 12, 1, 1, 14, 1, 255,
-        0, 0, 0, 20, 2, 20, 4, 20, 4, 20, 1, 20, 1, 45, 35, 5,
-        45, 36, 6, 196, 32, 35, 36, 195, 34, 32, 32, 21, 1, 196, 33, 16,
-        4, 21, 1, 195, 0, 33, 34, 2, 0,
-      };
-      p = orc_program_new_from_static_bytecode (bc);
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_getline_YUV9);
-#else
-      p = orc_program_new ();
-      orc_program_set_name (p, "video_convert_orc_getline_YUV9");
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_getline_YUV9);
-      orc_program_add_destination (p, 8, "d1");
-      orc_program_add_source (p, 2, "s1");
-      orc_program_add_source (p, 1, "s2");
-      orc_program_add_source (p, 1, "s3");
-      orc_program_add_constant (p, 1, 0x000000ff, "c1");
-      orc_program_add_temporary (p, 2, "t1");
-      orc_program_add_temporary (p, 4, "t2");
-      orc_program_add_temporary (p, 4, "t3");
-      orc_program_add_temporary (p, 1, "t4");
-      orc_program_add_temporary (p, 1, "t5");
-
-      orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T4, ORC_VAR_S2,
-          ORC_VAR_D1, ORC_VAR_D1);
-      orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T5, ORC_VAR_S3,
-          ORC_VAR_D1, ORC_VAR_D1);
-      orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T4, ORC_VAR_T5,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_T1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T3,
-          ORC_VAR_D1);
-#endif
-
-      orc_program_compile (p);
-      c = orc_program_take_code (p);
-      orc_program_free (p);
-    }
-    p_inited = TRUE;
-    orc_once_mutex_unlock ();
-  }
-  ex->arrays[ORC_VAR_A2] = c;
-  ex->program = 0;
-
-  ex->n = n;
-  ex->arrays[ORC_VAR_D1] = d1;
-  ex->arrays[ORC_VAR_S1] = (void *) s1;
-  ex->arrays[ORC_VAR_S2] = (void *) s2;
-  ex->arrays[ORC_VAR_S3] = (void *) s3;
-
-  func = c->exec;
-  func (ex);
-}
-#endif
-
-
-/* video_convert_orc_getline_YUY2 */
-#ifdef DISABLE_ORC
-void
-video_convert_orc_getline_YUY2 (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n)
-{
-  int i;
-  orc_union64 *ORC_RESTRICT ptr0;
-  const orc_union32 *ORC_RESTRICT ptr4;
-  orc_union32 var36;
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var37;
-#else
-  orc_union16 var37;
-#endif
-  orc_union64 var38;
-  orc_union16 var39;
-  orc_union16 var40;
-  orc_union32 var41;
-  orc_union32 var42;
-
-  ptr0 = (orc_union64 *) d1;
-  ptr4 = (orc_union32 *) s1;
-
-  /* 2: loadpb */
-  var37.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
-  var37.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadl */
-    var36 = ptr4[i];
-    /* 1: splitwb */
-    {
-      orc_union16 _src;
-      _src.i = var36.x2[0];
-      var39.x2[0] = _src.x2[1];
-      var40.x2[0] = _src.x2[0];
-    }
-    {
-      orc_union16 _src;
-      _src.i = var36.x2[1];
-      var39.x2[1] = _src.x2[1];
-      var40.x2[1] = _src.x2[0];
-    }
-    /* 3: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var37.x2[0];
-      _dest.x2[1] = var40.x2[0];
-      var41.x2[0] = _dest.i;
-    }
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var37.x2[1];
-      _dest.x2[1] = var40.x2[1];
-      var41.x2[1] = _dest.i;
-    }
-    /* 4: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var39.i;
-      _dest.x2[1] = var39.i;
-      var42.i = _dest.i;
-    }
-    /* 5: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var41.x2[0];
-      _dest.x2[1] = var42.x2[0];
-      var38.x2[0] = _dest.i;
-    }
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var41.x2[1];
-      _dest.x2[1] = var42.x2[1];
-      var38.x2[1] = _dest.i;
-    }
-    /* 6: storeq */
-    ptr0[i] = var38;
-  }
-
-}
-
-#else
-static void
-_backup_video_convert_orc_getline_YUY2 (OrcExecutor * ORC_RESTRICT ex)
-{
-  int i;
-  int n = ex->n;
-  orc_union64 *ORC_RESTRICT ptr0;
-  const orc_union32 *ORC_RESTRICT ptr4;
-  orc_union32 var36;
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var37;
-#else
-  orc_union16 var37;
-#endif
-  orc_union64 var38;
-  orc_union16 var39;
-  orc_union16 var40;
-  orc_union32 var41;
-  orc_union32 var42;
-
-  ptr0 = (orc_union64 *) ex->arrays[0];
-  ptr4 = (orc_union32 *) ex->arrays[4];
-
-  /* 2: loadpb */
-  var37.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
-  var37.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadl */
-    var36 = ptr4[i];
-    /* 1: splitwb */
-    {
-      orc_union16 _src;
-      _src.i = var36.x2[0];
-      var39.x2[0] = _src.x2[1];
-      var40.x2[0] = _src.x2[0];
-    }
-    {
-      orc_union16 _src;
-      _src.i = var36.x2[1];
-      var39.x2[1] = _src.x2[1];
-      var40.x2[1] = _src.x2[0];
-    }
-    /* 3: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var37.x2[0];
-      _dest.x2[1] = var40.x2[0];
-      var41.x2[0] = _dest.i;
-    }
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var37.x2[1];
-      _dest.x2[1] = var40.x2[1];
-      var41.x2[1] = _dest.i;
-    }
-    /* 4: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var39.i;
-      _dest.x2[1] = var39.i;
-      var42.i = _dest.i;
-    }
-    /* 5: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var41.x2[0];
-      _dest.x2[1] = var42.x2[0];
-      var38.x2[0] = _dest.i;
-    }
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var41.x2[1];
-      _dest.x2[1] = var42.x2[1];
-      var38.x2[1] = _dest.i;
-    }
-    /* 6: storeq */
-    ptr0[i] = var38;
-  }
-
-}
-
-void
-video_convert_orc_getline_YUY2 (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n)
-{
-  OrcExecutor _ex, *ex = &_ex;
-  static volatile int p_inited = 0;
-  static OrcCode *c = 0;
-  void (*func) (OrcExecutor *);
-
-  if (!p_inited) {
-    orc_once_mutex_lock ();
-    if (!p_inited) {
-      OrcProgram *p;
-
-#if 1
-      static const orc_uint8 bc[] = {
-        1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
-        95, 111, 114, 99, 95, 103, 101, 116, 108, 105, 110, 101, 95, 89, 85, 89,
-        50, 11, 8, 8, 12, 4, 4, 14, 2, 255, 0, 0, 0, 20, 2, 20,
-        2, 20, 4, 20, 4, 21, 1, 199, 33, 32, 4, 21, 1, 196, 34, 16,
-        32, 195, 35, 33, 33, 21, 1, 195, 0, 34, 35, 2, 0,
-      };
-      p = orc_program_new_from_static_bytecode (bc);
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_getline_YUY2);
-#else
-      p = orc_program_new ();
-      orc_program_set_name (p, "video_convert_orc_getline_YUY2");
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_getline_YUY2);
-      orc_program_add_destination (p, 8, "d1");
-      orc_program_add_source (p, 4, "s1");
-      orc_program_add_constant (p, 2, 0x000000ff, "c1");
-      orc_program_add_temporary (p, 2, "t1");
-      orc_program_add_temporary (p, 2, "t2");
-      orc_program_add_temporary (p, 4, "t3");
-      orc_program_add_temporary (p, 4, "t4");
-
-      orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_C1, ORC_VAR_T1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4,
-          ORC_VAR_D1);
-#endif
-
-      orc_program_compile (p);
-      c = orc_program_take_code (p);
-      orc_program_free (p);
-    }
-    p_inited = TRUE;
-    orc_once_mutex_unlock ();
-  }
-  ex->arrays[ORC_VAR_A2] = c;
-  ex->program = 0;
-
-  ex->n = n;
-  ex->arrays[ORC_VAR_D1] = d1;
-  ex->arrays[ORC_VAR_S1] = (void *) s1;
-
-  func = c->exec;
-  func (ex);
-}
-#endif
-
-
-/* video_convert_orc_getline_UYVY */
-#ifdef DISABLE_ORC
-void
-video_convert_orc_getline_UYVY (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n)
-{
-  int i;
-  orc_union64 *ORC_RESTRICT ptr0;
-  const orc_union32 *ORC_RESTRICT ptr4;
-  orc_union32 var36;
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var37;
-#else
-  orc_union16 var37;
-#endif
-  orc_union64 var38;
-  orc_union16 var39;
-  orc_union16 var40;
-  orc_union32 var41;
-  orc_union32 var42;
-
-  ptr0 = (orc_union64 *) d1;
-  ptr4 = (orc_union32 *) s1;
-
-  /* 2: loadpb */
-  var37.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
-  var37.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadl */
-    var36 = ptr4[i];
-    /* 1: splitwb */
-    {
-      orc_union16 _src;
-      _src.i = var36.x2[0];
-      var39.x2[0] = _src.x2[1];
-      var40.x2[0] = _src.x2[0];
-    }
-    {
-      orc_union16 _src;
-      _src.i = var36.x2[1];
-      var39.x2[1] = _src.x2[1];
-      var40.x2[1] = _src.x2[0];
-    }
-    /* 3: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var37.x2[0];
-      _dest.x2[1] = var39.x2[0];
-      var41.x2[0] = _dest.i;
-    }
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var37.x2[1];
-      _dest.x2[1] = var39.x2[1];
-      var41.x2[1] = _dest.i;
-    }
-    /* 4: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var40.i;
-      _dest.x2[1] = var40.i;
-      var42.i = _dest.i;
-    }
-    /* 5: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var41.x2[0];
-      _dest.x2[1] = var42.x2[0];
-      var38.x2[0] = _dest.i;
-    }
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var41.x2[1];
-      _dest.x2[1] = var42.x2[1];
-      var38.x2[1] = _dest.i;
-    }
-    /* 6: storeq */
-    ptr0[i] = var38;
-  }
-
-}
-
-#else
-static void
-_backup_video_convert_orc_getline_UYVY (OrcExecutor * ORC_RESTRICT ex)
-{
-  int i;
-  int n = ex->n;
-  orc_union64 *ORC_RESTRICT ptr0;
-  const orc_union32 *ORC_RESTRICT ptr4;
-  orc_union32 var36;
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var37;
-#else
-  orc_union16 var37;
-#endif
-  orc_union64 var38;
-  orc_union16 var39;
-  orc_union16 var40;
-  orc_union32 var41;
-  orc_union32 var42;
-
-  ptr0 = (orc_union64 *) ex->arrays[0];
-  ptr4 = (orc_union32 *) ex->arrays[4];
-
-  /* 2: loadpb */
-  var37.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
-  var37.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadl */
-    var36 = ptr4[i];
-    /* 1: splitwb */
-    {
-      orc_union16 _src;
-      _src.i = var36.x2[0];
-      var39.x2[0] = _src.x2[1];
-      var40.x2[0] = _src.x2[0];
-    }
-    {
-      orc_union16 _src;
-      _src.i = var36.x2[1];
-      var39.x2[1] = _src.x2[1];
-      var40.x2[1] = _src.x2[0];
-    }
-    /* 3: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var37.x2[0];
-      _dest.x2[1] = var39.x2[0];
-      var41.x2[0] = _dest.i;
-    }
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var37.x2[1];
-      _dest.x2[1] = var39.x2[1];
-      var41.x2[1] = _dest.i;
-    }
-    /* 4: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var40.i;
-      _dest.x2[1] = var40.i;
-      var42.i = _dest.i;
-    }
-    /* 5: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var41.x2[0];
-      _dest.x2[1] = var42.x2[0];
-      var38.x2[0] = _dest.i;
-    }
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var41.x2[1];
-      _dest.x2[1] = var42.x2[1];
-      var38.x2[1] = _dest.i;
-    }
-    /* 6: storeq */
-    ptr0[i] = var38;
-  }
-
-}
-
-void
-video_convert_orc_getline_UYVY (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n)
-{
-  OrcExecutor _ex, *ex = &_ex;
-  static volatile int p_inited = 0;
-  static OrcCode *c = 0;
-  void (*func) (OrcExecutor *);
-
-  if (!p_inited) {
-    orc_once_mutex_lock ();
-    if (!p_inited) {
-      OrcProgram *p;
-
-#if 1
-      static const orc_uint8 bc[] = {
-        1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
-        95, 111, 114, 99, 95, 103, 101, 116, 108, 105, 110, 101, 95, 85, 89, 86,
-        89, 11, 8, 8, 12, 4, 4, 14, 2, 255, 0, 0, 0, 20, 2, 20,
-        2, 20, 4, 20, 4, 21, 1, 199, 32, 33, 4, 21, 1, 196, 34, 16,
-        32, 195, 35, 33, 33, 21, 1, 195, 0, 34, 35, 2, 0,
-      };
-      p = orc_program_new_from_static_bytecode (bc);
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_getline_UYVY);
-#else
-      p = orc_program_new ();
-      orc_program_set_name (p, "video_convert_orc_getline_UYVY");
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_getline_UYVY);
-      orc_program_add_destination (p, 8, "d1");
-      orc_program_add_source (p, 4, "s1");
-      orc_program_add_constant (p, 2, 0x000000ff, "c1");
-      orc_program_add_temporary (p, 2, "t1");
-      orc_program_add_temporary (p, 2, "t2");
-      orc_program_add_temporary (p, 4, "t3");
-      orc_program_add_temporary (p, 4, "t4");
-
-      orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_S1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_C1, ORC_VAR_T1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4,
-          ORC_VAR_D1);
-#endif
-
-      orc_program_compile (p);
-      c = orc_program_take_code (p);
-      orc_program_free (p);
-    }
-    p_inited = TRUE;
-    orc_once_mutex_unlock ();
-  }
-  ex->arrays[ORC_VAR_A2] = c;
-  ex->program = 0;
-
-  ex->n = n;
-  ex->arrays[ORC_VAR_D1] = d1;
-  ex->arrays[ORC_VAR_S1] = (void *) s1;
-
-  func = c->exec;
-  func (ex);
-}
-#endif
-
-
-/* video_convert_orc_getline_YVYU */
-#ifdef DISABLE_ORC
-void
-video_convert_orc_getline_YVYU (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n)
-{
-  int i;
-  orc_union64 *ORC_RESTRICT ptr0;
-  const orc_union32 *ORC_RESTRICT ptr4;
-  orc_union32 var36;
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var37;
-#else
-  orc_union16 var37;
-#endif
-  orc_union64 var38;
-  orc_union16 var39;
-  orc_union16 var40;
-  orc_union16 var41;
-  orc_union32 var42;
-  orc_union32 var43;
-
-  ptr0 = (orc_union64 *) d1;
-  ptr4 = (orc_union32 *) s1;
-
-  /* 3: loadpb */
-  var37.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
-  var37.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadl */
-    var36 = ptr4[i];
-    /* 1: splitwb */
-    {
-      orc_union16 _src;
-      _src.i = var36.x2[0];
-      var39.x2[0] = _src.x2[1];
-      var40.x2[0] = _src.x2[0];
-    }
-    {
-      orc_union16 _src;
-      _src.i = var36.x2[1];
-      var39.x2[1] = _src.x2[1];
-      var40.x2[1] = _src.x2[0];
-    }
-    /* 2: swapw */
-    var41.i = ORC_SWAP_W (var39.i);
-    /* 4: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var37.x2[0];
-      _dest.x2[1] = var40.x2[0];
-      var42.x2[0] = _dest.i;
-    }
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var37.x2[1];
-      _dest.x2[1] = var40.x2[1];
-      var42.x2[1] = _dest.i;
-    }
-    /* 5: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var41.i;
-      _dest.x2[1] = var41.i;
-      var43.i = _dest.i;
-    }
-    /* 6: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var42.x2[0];
-      _dest.x2[1] = var43.x2[0];
-      var38.x2[0] = _dest.i;
-    }
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var42.x2[1];
-      _dest.x2[1] = var43.x2[1];
-      var38.x2[1] = _dest.i;
-    }
-    /* 7: storeq */
-    ptr0[i] = var38;
-  }
-
-}
-
-#else
-static void
-_backup_video_convert_orc_getline_YVYU (OrcExecutor * ORC_RESTRICT ex)
-{
-  int i;
-  int n = ex->n;
-  orc_union64 *ORC_RESTRICT ptr0;
-  const orc_union32 *ORC_RESTRICT ptr4;
-  orc_union32 var36;
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var37;
-#else
-  orc_union16 var37;
-#endif
-  orc_union64 var38;
-  orc_union16 var39;
-  orc_union16 var40;
-  orc_union16 var41;
-  orc_union32 var42;
-  orc_union32 var43;
-
-  ptr0 = (orc_union64 *) ex->arrays[0];
-  ptr4 = (orc_union32 *) ex->arrays[4];
-
-  /* 3: loadpb */
-  var37.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
-  var37.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadl */
-    var36 = ptr4[i];
-    /* 1: splitwb */
-    {
-      orc_union16 _src;
-      _src.i = var36.x2[0];
-      var39.x2[0] = _src.x2[1];
-      var40.x2[0] = _src.x2[0];
-    }
-    {
-      orc_union16 _src;
-      _src.i = var36.x2[1];
-      var39.x2[1] = _src.x2[1];
-      var40.x2[1] = _src.x2[0];
-    }
-    /* 2: swapw */
-    var41.i = ORC_SWAP_W (var39.i);
-    /* 4: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var37.x2[0];
-      _dest.x2[1] = var40.x2[0];
-      var42.x2[0] = _dest.i;
-    }
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var37.x2[1];
-      _dest.x2[1] = var40.x2[1];
-      var42.x2[1] = _dest.i;
-    }
-    /* 5: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var41.i;
-      _dest.x2[1] = var41.i;
-      var43.i = _dest.i;
-    }
-    /* 6: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var42.x2[0];
-      _dest.x2[1] = var43.x2[0];
-      var38.x2[0] = _dest.i;
-    }
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var42.x2[1];
-      _dest.x2[1] = var43.x2[1];
-      var38.x2[1] = _dest.i;
-    }
-    /* 7: storeq */
-    ptr0[i] = var38;
-  }
-
-}
-
-void
-video_convert_orc_getline_YVYU (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n)
-{
-  OrcExecutor _ex, *ex = &_ex;
-  static volatile int p_inited = 0;
-  static OrcCode *c = 0;
-  void (*func) (OrcExecutor *);
-
-  if (!p_inited) {
-    orc_once_mutex_lock ();
-    if (!p_inited) {
-      OrcProgram *p;
-
-#if 1
-      static const orc_uint8 bc[] = {
-        1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
-        95, 111, 114, 99, 95, 103, 101, 116, 108, 105, 110, 101, 95, 89, 86, 89,
-        85, 11, 8, 8, 12, 4, 4, 14, 2, 255, 0, 0, 0, 20, 2, 20,
-        2, 20, 4, 20, 4, 21, 1, 199, 33, 32, 4, 183, 33, 33, 21, 1,
-        196, 34, 16, 32, 195, 35, 33, 33, 21, 1, 195, 0, 34, 35, 2, 0,
-
-      };
-      p = orc_program_new_from_static_bytecode (bc);
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_getline_YVYU);
-#else
-      p = orc_program_new ();
-      orc_program_set_name (p, "video_convert_orc_getline_YVYU");
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_getline_YVYU);
-      orc_program_add_destination (p, 8, "d1");
-      orc_program_add_source (p, 4, "s1");
-      orc_program_add_constant (p, 2, 0x000000ff, "c1");
-      orc_program_add_temporary (p, 2, "t1");
-      orc_program_add_temporary (p, 2, "t2");
-      orc_program_add_temporary (p, 4, "t3");
-      orc_program_add_temporary (p, 4, "t4");
-
-      orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "swapw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_C1, ORC_VAR_T1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4,
-          ORC_VAR_D1);
-#endif
-
-      orc_program_compile (p);
-      c = orc_program_take_code (p);
-      orc_program_free (p);
-    }
-    p_inited = TRUE;
-    orc_once_mutex_unlock ();
-  }
-  ex->arrays[ORC_VAR_A2] = c;
-  ex->program = 0;
-
-  ex->n = n;
-  ex->arrays[ORC_VAR_D1] = d1;
-  ex->arrays[ORC_VAR_S1] = (void *) s1;
-
-  func = c->exec;
-  func (ex);
-}
-#endif
-
-
-/* video_convert_orc_getline_Y42B */
-#ifdef DISABLE_ORC
-void
-video_convert_orc_getline_Y42B (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
-    const guint8 * ORC_RESTRICT s3, int n)
-{
-  int i;
-  orc_union64 *ORC_RESTRICT ptr0;
-  const orc_union16 *ORC_RESTRICT ptr4;
-  const orc_int8 *ORC_RESTRICT ptr5;
-  const orc_int8 *ORC_RESTRICT ptr6;
-  orc_int8 var36;
-  orc_int8 var37;
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var38;
-#else
-  orc_union16 var38;
-#endif
-  orc_union16 var39;
-  orc_union64 var40;
-  orc_union16 var41;
-  orc_union32 var42;
-  orc_union32 var43;
-
-  ptr0 = (orc_union64 *) d1;
-  ptr4 = (orc_union16 *) s1;
-  ptr5 = (orc_int8 *) s2;
-  ptr6 = (orc_int8 *) s3;
-
-  /* 3: loadpb */
-  var38.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
-  var38.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadb */
-    var36 = ptr5[i];
-    /* 1: loadb */
-    var37 = ptr6[i];
-    /* 2: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var36;
-      _dest.x2[1] = var37;
-      var41.i = _dest.i;
-    }
-    /* 4: loadw */
-    var39 = ptr4[i];
-    /* 5: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var38.x2[0];
-      _dest.x2[1] = var39.x2[0];
-      var42.x2[0] = _dest.i;
-    }
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var38.x2[1];
-      _dest.x2[1] = var39.x2[1];
-      var42.x2[1] = _dest.i;
-    }
-    /* 6: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var41.i;
-      _dest.x2[1] = var41.i;
-      var43.i = _dest.i;
-    }
-    /* 7: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var42.x2[0];
-      _dest.x2[1] = var43.x2[0];
-      var40.x2[0] = _dest.i;
-    }
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var42.x2[1];
-      _dest.x2[1] = var43.x2[1];
-      var40.x2[1] = _dest.i;
-    }
-    /* 8: storeq */
-    ptr0[i] = var40;
-  }
-
-}
-
-#else
-static void
-_backup_video_convert_orc_getline_Y42B (OrcExecutor * ORC_RESTRICT ex)
-{
-  int i;
-  int n = ex->n;
-  orc_union64 *ORC_RESTRICT ptr0;
-  const orc_union16 *ORC_RESTRICT ptr4;
-  const orc_int8 *ORC_RESTRICT ptr5;
-  const orc_int8 *ORC_RESTRICT ptr6;
-  orc_int8 var36;
-  orc_int8 var37;
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var38;
-#else
-  orc_union16 var38;
-#endif
-  orc_union16 var39;
-  orc_union64 var40;
-  orc_union16 var41;
-  orc_union32 var42;
-  orc_union32 var43;
-
-  ptr0 = (orc_union64 *) ex->arrays[0];
-  ptr4 = (orc_union16 *) ex->arrays[4];
-  ptr5 = (orc_int8 *) ex->arrays[5];
-  ptr6 = (orc_int8 *) ex->arrays[6];
-
-  /* 3: loadpb */
-  var38.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
-  var38.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadb */
-    var36 = ptr5[i];
-    /* 1: loadb */
-    var37 = ptr6[i];
-    /* 2: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var36;
-      _dest.x2[1] = var37;
-      var41.i = _dest.i;
-    }
-    /* 4: loadw */
-    var39 = ptr4[i];
-    /* 5: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var38.x2[0];
-      _dest.x2[1] = var39.x2[0];
-      var42.x2[0] = _dest.i;
-    }
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var38.x2[1];
-      _dest.x2[1] = var39.x2[1];
-      var42.x2[1] = _dest.i;
-    }
-    /* 6: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var41.i;
-      _dest.x2[1] = var41.i;
-      var43.i = _dest.i;
-    }
-    /* 7: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var42.x2[0];
-      _dest.x2[1] = var43.x2[0];
-      var40.x2[0] = _dest.i;
-    }
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var42.x2[1];
-      _dest.x2[1] = var43.x2[1];
-      var40.x2[1] = _dest.i;
-    }
-    /* 8: storeq */
-    ptr0[i] = var40;
-  }
-
-}
-
-void
-video_convert_orc_getline_Y42B (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
-    const guint8 * ORC_RESTRICT s3, int n)
-{
-  OrcExecutor _ex, *ex = &_ex;
-  static volatile int p_inited = 0;
-  static OrcCode *c = 0;
-  void (*func) (OrcExecutor *);
-
-  if (!p_inited) {
-    orc_once_mutex_lock ();
-    if (!p_inited) {
-      OrcProgram *p;
-
-#if 1
-      static const orc_uint8 bc[] = {
-        1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
-        95, 111, 114, 99, 95, 103, 101, 116, 108, 105, 110, 101, 95, 89, 52, 50,
-        66, 11, 8, 8, 12, 2, 2, 12, 1, 1, 12, 1, 1, 14, 1, 255,
-        0, 0, 0, 20, 2, 20, 2, 20, 4, 20, 4, 196, 32, 5, 6, 21,
-        1, 196, 35, 16, 4, 195, 34, 32, 32, 21, 1, 195, 0, 35, 34, 2,
-        0,
-      };
-      p = orc_program_new_from_static_bytecode (bc);
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_getline_Y42B);
-#else
-      p = orc_program_new ();
-      orc_program_set_name (p, "video_convert_orc_getline_Y42B");
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_getline_Y42B);
-      orc_program_add_destination (p, 8, "d1");
-      orc_program_add_source (p, 2, "s1");
-      orc_program_add_source (p, 1, "s2");
-      orc_program_add_source (p, 1, "s3");
-      orc_program_add_constant (p, 1, 0x000000ff, "c1");
-      orc_program_add_temporary (p, 2, "t1");
-      orc_program_add_temporary (p, 2, "t2");
-      orc_program_add_temporary (p, 4, "t3");
-      orc_program_add_temporary (p, 4, "t4");
-
-      orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T4, ORC_VAR_C1, ORC_VAR_S1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_T1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T4, ORC_VAR_T3,
-          ORC_VAR_D1);
-#endif
-
-      orc_program_compile (p);
-      c = orc_program_take_code (p);
-      orc_program_free (p);
-    }
-    p_inited = TRUE;
-    orc_once_mutex_unlock ();
-  }
-  ex->arrays[ORC_VAR_A2] = c;
-  ex->program = 0;
-
-  ex->n = n;
-  ex->arrays[ORC_VAR_D1] = d1;
-  ex->arrays[ORC_VAR_S1] = (void *) s1;
-  ex->arrays[ORC_VAR_S2] = (void *) s2;
-  ex->arrays[ORC_VAR_S3] = (void *) s3;
-
-  func = c->exec;
-  func (ex);
-}
-#endif
-
-
-/* video_convert_orc_getline_Y444 */
-#ifdef DISABLE_ORC
-void
-video_convert_orc_getline_Y444 (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
-    const guint8 * ORC_RESTRICT s3, int n)
-{
-  int i;
-  orc_union32 *ORC_RESTRICT ptr0;
-  const orc_int8 *ORC_RESTRICT ptr4;
-  const orc_int8 *ORC_RESTRICT ptr5;
-  const orc_int8 *ORC_RESTRICT ptr6;
-  orc_int8 var34;
-  orc_int8 var35;
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_int8 var36;
-#else
-  orc_int8 var36;
-#endif
-  orc_int8 var37;
-  orc_union32 var38;
-  orc_union16 var39;
-  orc_union16 var40;
-
-  ptr0 = (orc_union32 *) d1;
-  ptr4 = (orc_int8 *) s1;
-  ptr5 = (orc_int8 *) s2;
-  ptr6 = (orc_int8 *) s3;
-
-  /* 3: loadpb */
-  var36 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadb */
-    var34 = ptr5[i];
-    /* 1: loadb */
-    var35 = ptr6[i];
-    /* 2: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var34;
-      _dest.x2[1] = var35;
-      var39.i = _dest.i;
-    }
-    /* 4: loadb */
-    var37 = ptr4[i];
-    /* 5: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var36;
-      _dest.x2[1] = var37;
-      var40.i = _dest.i;
-    }
-    /* 6: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var40.i;
-      _dest.x2[1] = var39.i;
-      var38.i = _dest.i;
-    }
-    /* 7: storel */
-    ptr0[i] = var38;
-  }
-
-}
-
-#else
-static void
-_backup_video_convert_orc_getline_Y444 (OrcExecutor * ORC_RESTRICT ex)
-{
-  int i;
-  int n = ex->n;
-  orc_union32 *ORC_RESTRICT ptr0;
-  const orc_int8 *ORC_RESTRICT ptr4;
-  const orc_int8 *ORC_RESTRICT ptr5;
-  const orc_int8 *ORC_RESTRICT ptr6;
-  orc_int8 var34;
-  orc_int8 var35;
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_int8 var36;
-#else
-  orc_int8 var36;
-#endif
-  orc_int8 var37;
-  orc_union32 var38;
-  orc_union16 var39;
-  orc_union16 var40;
-
-  ptr0 = (orc_union32 *) ex->arrays[0];
-  ptr4 = (orc_int8 *) ex->arrays[4];
-  ptr5 = (orc_int8 *) ex->arrays[5];
-  ptr6 = (orc_int8 *) ex->arrays[6];
-
-  /* 3: loadpb */
-  var36 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadb */
-    var34 = ptr5[i];
-    /* 1: loadb */
-    var35 = ptr6[i];
-    /* 2: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var34;
-      _dest.x2[1] = var35;
-      var39.i = _dest.i;
-    }
-    /* 4: loadb */
-    var37 = ptr4[i];
-    /* 5: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var36;
-      _dest.x2[1] = var37;
-      var40.i = _dest.i;
-    }
-    /* 6: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var40.i;
-      _dest.x2[1] = var39.i;
-      var38.i = _dest.i;
-    }
-    /* 7: storel */
-    ptr0[i] = var38;
-  }
-
-}
-
-void
-video_convert_orc_getline_Y444 (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
-    const guint8 * ORC_RESTRICT s3, int n)
-{
-  OrcExecutor _ex, *ex = &_ex;
-  static volatile int p_inited = 0;
-  static OrcCode *c = 0;
-  void (*func) (OrcExecutor *);
-
-  if (!p_inited) {
-    orc_once_mutex_lock ();
-    if (!p_inited) {
-      OrcProgram *p;
-
-#if 1
-      static const orc_uint8 bc[] = {
-        1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
-        95, 111, 114, 99, 95, 103, 101, 116, 108, 105, 110, 101, 95, 89, 52, 52,
-        52, 11, 4, 4, 12, 1, 1, 12, 1, 1, 12, 1, 1, 14, 1, 255,
-        0, 0, 0, 20, 2, 20, 2, 196, 32, 5, 6, 196, 33, 16, 4, 195,
-        0, 33, 32, 2, 0,
-      };
-      p = orc_program_new_from_static_bytecode (bc);
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_getline_Y444);
-#else
-      p = orc_program_new ();
-      orc_program_set_name (p, "video_convert_orc_getline_Y444");
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_getline_Y444);
-      orc_program_add_destination (p, 4, "d1");
-      orc_program_add_source (p, 1, "s1");
-      orc_program_add_source (p, 1, "s2");
-      orc_program_add_source (p, 1, "s3");
-      orc_program_add_constant (p, 1, 0x000000ff, "c1");
-      orc_program_add_temporary (p, 2, "t1");
-      orc_program_add_temporary (p, 2, "t2");
-
-      orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
-          ORC_VAR_D1);
-#endif
-
-      orc_program_compile (p);
-      c = orc_program_take_code (p);
-      orc_program_free (p);
-    }
-    p_inited = TRUE;
-    orc_once_mutex_unlock ();
-  }
-  ex->arrays[ORC_VAR_A2] = c;
-  ex->program = 0;
-
-  ex->n = n;
-  ex->arrays[ORC_VAR_D1] = d1;
-  ex->arrays[ORC_VAR_S1] = (void *) s1;
-  ex->arrays[ORC_VAR_S2] = (void *) s2;
-  ex->arrays[ORC_VAR_S3] = (void *) s3;
-
-  func = c->exec;
-  func (ex);
-}
-#endif
-
-
-/* video_convert_orc_getline_Y800 */
-#ifdef DISABLE_ORC
-void
-video_convert_orc_getline_Y800 (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n)
-{
-  int i;
-  orc_union32 *ORC_RESTRICT ptr0;
-  const orc_int8 *ORC_RESTRICT ptr4;
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_int8 var33;
-#else
-  orc_int8 var33;
-#endif
-  orc_int8 var34;
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var35;
-#else
-  orc_union16 var35;
-#endif
-  orc_union32 var36;
-  orc_union16 var37;
-
-  ptr0 = (orc_union32 *) d1;
-  ptr4 = (orc_int8 *) s1;
-
-  /* 0: loadpb */
-  var33 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
-  /* 3: loadpw */
-  var35.i = (int) 0x00008080;   /* 32896 or 1.62528e-319f */
-
-  for (i = 0; i < n; i++) {
-    /* 1: loadb */
-    var34 = ptr4[i];
-    /* 2: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var33;
-      _dest.x2[1] = var34;
-      var37.i = _dest.i;
-    }
-    /* 4: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var37.i;
-      _dest.x2[1] = var35.i;
-      var36.i = _dest.i;
-    }
-    /* 5: storel */
-    ptr0[i] = var36;
-  }
-
-}
-
-#else
-static void
-_backup_video_convert_orc_getline_Y800 (OrcExecutor * ORC_RESTRICT ex)
-{
-  int i;
-  int n = ex->n;
-  orc_union32 *ORC_RESTRICT ptr0;
-  const orc_int8 *ORC_RESTRICT ptr4;
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_int8 var33;
-#else
-  orc_int8 var33;
-#endif
-  orc_int8 var34;
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var35;
-#else
-  orc_union16 var35;
-#endif
-  orc_union32 var36;
-  orc_union16 var37;
-
-  ptr0 = (orc_union32 *) ex->arrays[0];
-  ptr4 = (orc_int8 *) ex->arrays[4];
-
-  /* 0: loadpb */
-  var33 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
-  /* 3: loadpw */
-  var35.i = (int) 0x00008080;   /* 32896 or 1.62528e-319f */
-
-  for (i = 0; i < n; i++) {
-    /* 1: loadb */
-    var34 = ptr4[i];
-    /* 2: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var33;
-      _dest.x2[1] = var34;
-      var37.i = _dest.i;
-    }
-    /* 4: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var37.i;
-      _dest.x2[1] = var35.i;
-      var36.i = _dest.i;
-    }
-    /* 5: storel */
-    ptr0[i] = var36;
-  }
-
-}
-
-void
-video_convert_orc_getline_Y800 (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n)
-{
-  OrcExecutor _ex, *ex = &_ex;
-  static volatile int p_inited = 0;
-  static OrcCode *c = 0;
-  void (*func) (OrcExecutor *);
-
-  if (!p_inited) {
-    orc_once_mutex_lock ();
-    if (!p_inited) {
-      OrcProgram *p;
-
-#if 1
-      static const orc_uint8 bc[] = {
-        1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
-        95, 111, 114, 99, 95, 103, 101, 116, 108, 105, 110, 101, 95, 89, 56, 48,
-        48, 11, 4, 4, 12, 1, 1, 14, 1, 255, 0, 0, 0, 14, 2, 128,
-        128, 0, 0, 20, 2, 196, 32, 16, 4, 195, 0, 32, 17, 2, 0,
-      };
-      p = orc_program_new_from_static_bytecode (bc);
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_getline_Y800);
-#else
-      p = orc_program_new ();
-      orc_program_set_name (p, "video_convert_orc_getline_Y800");
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_getline_Y800);
-      orc_program_add_destination (p, 4, "d1");
-      orc_program_add_source (p, 1, "s1");
-      orc_program_add_constant (p, 1, 0x000000ff, "c1");
-      orc_program_add_constant (p, 2, 0x00008080, "c2");
-      orc_program_add_temporary (p, 2, "t1");
-
-      orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_S1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C2,
-          ORC_VAR_D1);
-#endif
-
-      orc_program_compile (p);
-      c = orc_program_take_code (p);
-      orc_program_free (p);
-    }
-    p_inited = TRUE;
-    orc_once_mutex_unlock ();
-  }
-  ex->arrays[ORC_VAR_A2] = c;
-  ex->program = 0;
-
-  ex->n = n;
-  ex->arrays[ORC_VAR_D1] = d1;
-  ex->arrays[ORC_VAR_S1] = (void *) s1;
-
-  func = c->exec;
-  func (ex);
-}
-#endif
-
-
-/* video_convert_orc_getline_Y16 */
-#ifdef DISABLE_ORC
-void
-video_convert_orc_getline_Y16 (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n)
-{
-  int i;
-  orc_union32 *ORC_RESTRICT ptr0;
-  const orc_union16 *ORC_RESTRICT ptr4;
-  orc_union16 var34;
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_int8 var35;
-#else
-  orc_int8 var35;
-#endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var36;
-#else
-  orc_union16 var36;
-#endif
-  orc_union32 var37;
-  orc_int8 var38;
-  orc_union16 var39;
-
-  ptr0 = (orc_union32 *) d1;
-  ptr4 = (orc_union16 *) s1;
-
-  /* 2: loadpb */
-  var35 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
-  /* 4: loadpw */
-  var36.i = (int) 0x00008080;   /* 32896 or 1.62528e-319f */
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadw */
-    var34 = ptr4[i];
-    /* 1: convhwb */
-    var38 = ((orc_uint16) var34.i) >> 8;
-    /* 3: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var35;
-      _dest.x2[1] = var38;
-      var39.i = _dest.i;
-    }
-    /* 5: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var39.i;
-      _dest.x2[1] = var36.i;
-      var37.i = _dest.i;
-    }
-    /* 6: storel */
-    ptr0[i] = var37;
-  }
-
-}
-
-#else
-static void
-_backup_video_convert_orc_getline_Y16 (OrcExecutor * ORC_RESTRICT ex)
-{
-  int i;
-  int n = ex->n;
-  orc_union32 *ORC_RESTRICT ptr0;
-  const orc_union16 *ORC_RESTRICT ptr4;
-  orc_union16 var34;
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_int8 var35;
-#else
-  orc_int8 var35;
-#endif
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var36;
-#else
-  orc_union16 var36;
-#endif
-  orc_union32 var37;
-  orc_int8 var38;
-  orc_union16 var39;
-
-  ptr0 = (orc_union32 *) ex->arrays[0];
-  ptr4 = (orc_union16 *) ex->arrays[4];
-
-  /* 2: loadpb */
-  var35 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
-  /* 4: loadpw */
-  var36.i = (int) 0x00008080;   /* 32896 or 1.62528e-319f */
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadw */
-    var34 = ptr4[i];
-    /* 1: convhwb */
-    var38 = ((orc_uint16) var34.i) >> 8;
-    /* 3: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var35;
-      _dest.x2[1] = var38;
-      var39.i = _dest.i;
-    }
-    /* 5: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var39.i;
-      _dest.x2[1] = var36.i;
-      var37.i = _dest.i;
-    }
-    /* 6: storel */
-    ptr0[i] = var37;
-  }
-
-}
-
-void
-video_convert_orc_getline_Y16 (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n)
-{
-  OrcExecutor _ex, *ex = &_ex;
-  static volatile int p_inited = 0;
-  static OrcCode *c = 0;
-  void (*func) (OrcExecutor *);
-
-  if (!p_inited) {
-    orc_once_mutex_lock ();
-    if (!p_inited) {
-      OrcProgram *p;
-
-#if 1
-      static const orc_uint8 bc[] = {
-        1, 9, 29, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
-        95, 111, 114, 99, 95, 103, 101, 116, 108, 105, 110, 101, 95, 89, 49, 54,
-        11, 4, 4, 12, 2, 2, 14, 1, 255, 0, 0, 0, 14, 2, 128, 128,
-        0, 0, 20, 2, 20, 1, 158, 33, 4, 196, 32, 16, 33, 195, 0, 32,
-        17, 2, 0,
-      };
-      p = orc_program_new_from_static_bytecode (bc);
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_getline_Y16);
-#else
-      p = orc_program_new ();
-      orc_program_set_name (p, "video_convert_orc_getline_Y16");
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_getline_Y16);
-      orc_program_add_destination (p, 4, "d1");
-      orc_program_add_source (p, 2, "s1");
-      orc_program_add_constant (p, 1, 0x000000ff, "c1");
-      orc_program_add_constant (p, 2, 0x00008080, "c2");
-      orc_program_add_temporary (p, 2, "t1");
-      orc_program_add_temporary (p, 1, "t2");
-
-      orc_program_append_2 (p, "convhwb", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_T2,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C2,
-          ORC_VAR_D1);
-#endif
-
-      orc_program_compile (p);
-      c = orc_program_take_code (p);
-      orc_program_free (p);
-    }
-    p_inited = TRUE;
-    orc_once_mutex_unlock ();
-  }
-  ex->arrays[ORC_VAR_A2] = c;
-  ex->program = 0;
-
-  ex->n = n;
-  ex->arrays[ORC_VAR_D1] = d1;
-  ex->arrays[ORC_VAR_S1] = (void *) s1;
-
-  func = c->exec;
-  func (ex);
-}
-#endif
-
-
-/* video_convert_orc_getline_BGRA */
-#ifdef DISABLE_ORC
-void
-video_convert_orc_getline_BGRA (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n)
-{
-  int i;
-  orc_union32 *ORC_RESTRICT ptr0;
-  const orc_union32 *ORC_RESTRICT ptr4;
-  orc_union32 var32;
-  orc_union32 var33;
-
-  ptr0 = (orc_union32 *) d1;
-  ptr4 = (orc_union32 *) s1;
-
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadl */
-    var32 = ptr4[i];
-    /* 1: swapl */
-    var33.i = ORC_SWAP_L (var32.i);
-    /* 2: storel */
-    ptr0[i] = var33;
-  }
-
-}
-
-#else
-static void
-_backup_video_convert_orc_getline_BGRA (OrcExecutor * ORC_RESTRICT ex)
-{
-  int i;
-  int n = ex->n;
-  orc_union32 *ORC_RESTRICT ptr0;
-  const orc_union32 *ORC_RESTRICT ptr4;
-  orc_union32 var32;
-  orc_union32 var33;
-
-  ptr0 = (orc_union32 *) ex->arrays[0];
-  ptr4 = (orc_union32 *) ex->arrays[4];
-
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadl */
-    var32 = ptr4[i];
-    /* 1: swapl */
-    var33.i = ORC_SWAP_L (var32.i);
-    /* 2: storel */
-    ptr0[i] = var33;
-  }
-
-}
-
-void
-video_convert_orc_getline_BGRA (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n)
-{
-  OrcExecutor _ex, *ex = &_ex;
-  static volatile int p_inited = 0;
-  static OrcCode *c = 0;
-  void (*func) (OrcExecutor *);
-
-  if (!p_inited) {
-    orc_once_mutex_lock ();
-    if (!p_inited) {
-      OrcProgram *p;
-
-#if 1
-      static const orc_uint8 bc[] = {
-        1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
-        95, 111, 114, 99, 95, 103, 101, 116, 108, 105, 110, 101, 95, 66, 71, 82,
-        65, 11, 4, 4, 12, 4, 4, 184, 0, 4, 2, 0,
-      };
-      p = orc_program_new_from_static_bytecode (bc);
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_getline_BGRA);
-#else
-      p = orc_program_new ();
-      orc_program_set_name (p, "video_convert_orc_getline_BGRA");
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_getline_BGRA);
-      orc_program_add_destination (p, 4, "d1");
-      orc_program_add_source (p, 4, "s1");
-
-      orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1,
-          ORC_VAR_D1);
-#endif
-
-      orc_program_compile (p);
-      c = orc_program_take_code (p);
-      orc_program_free (p);
-    }
-    p_inited = TRUE;
-    orc_once_mutex_unlock ();
-  }
-  ex->arrays[ORC_VAR_A2] = c;
-  ex->program = 0;
-
-  ex->n = n;
-  ex->arrays[ORC_VAR_D1] = d1;
-  ex->arrays[ORC_VAR_S1] = (void *) s1;
-
-  func = c->exec;
-  func (ex);
-}
-#endif
-
-
-/* video_convert_orc_getline_ABGR */
-#ifdef DISABLE_ORC
-void
-video_convert_orc_getline_ABGR (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n)
-{
-  int i;
-  orc_union32 *ORC_RESTRICT ptr0;
-  const orc_union32 *ORC_RESTRICT ptr4;
-  orc_union32 var40;
-  orc_union32 var41;
-  orc_union16 var42;
-  orc_union16 var43;
-  orc_int8 var44;
-  orc_int8 var45;
-  orc_int8 var46;
-  orc_int8 var47;
-  orc_union16 var48;
-  orc_union16 var49;
-
-  ptr0 = (orc_union32 *) d1;
-  ptr4 = (orc_union32 *) s1;
-
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadl */
-    var40 = ptr4[i];
-    /* 1: splitlw */
-    {
-      orc_union32 _src;
-      _src.i = var40.i;
-      var42.i = _src.x2[1];
-      var43.i = _src.x2[0];
-    }
-    /* 2: splitwb */
-    {
-      orc_union16 _src;
-      _src.i = var42.i;
-      var44 = _src.x2[1];
-      var45 = _src.x2[0];
-    }
-    /* 3: splitwb */
-    {
-      orc_union16 _src;
-      _src.i = var43.i;
-      var46 = _src.x2[1];
-      var47 = _src.x2[0];
-    }
-    /* 4: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var47;
-      _dest.x2[1] = var44;
-      var48.i = _dest.i;
-    }
-    /* 5: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var45;
-      _dest.x2[1] = var46;
-      var49.i = _dest.i;
-    }
-    /* 6: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var48.i;
-      _dest.x2[1] = var49.i;
-      var41.i = _dest.i;
-    }
-    /* 7: storel */
-    ptr0[i] = var41;
-  }
-
-}
-
-#else
-static void
-_backup_video_convert_orc_getline_ABGR (OrcExecutor * ORC_RESTRICT ex)
-{
-  int i;
-  int n = ex->n;
-  orc_union32 *ORC_RESTRICT ptr0;
-  const orc_union32 *ORC_RESTRICT ptr4;
-  orc_union32 var40;
-  orc_union32 var41;
-  orc_union16 var42;
-  orc_union16 var43;
-  orc_int8 var44;
-  orc_int8 var45;
-  orc_int8 var46;
-  orc_int8 var47;
-  orc_union16 var48;
-  orc_union16 var49;
-
-  ptr0 = (orc_union32 *) ex->arrays[0];
-  ptr4 = (orc_union32 *) ex->arrays[4];
-
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadl */
-    var40 = ptr4[i];
-    /* 1: splitlw */
-    {
-      orc_union32 _src;
-      _src.i = var40.i;
-      var42.i = _src.x2[1];
-      var43.i = _src.x2[0];
-    }
-    /* 2: splitwb */
-    {
-      orc_union16 _src;
-      _src.i = var42.i;
-      var44 = _src.x2[1];
-      var45 = _src.x2[0];
-    }
-    /* 3: splitwb */
-    {
-      orc_union16 _src;
-      _src.i = var43.i;
-      var46 = _src.x2[1];
-      var47 = _src.x2[0];
-    }
-    /* 4: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var47;
-      _dest.x2[1] = var44;
-      var48.i = _dest.i;
-    }
-    /* 5: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var45;
-      _dest.x2[1] = var46;
-      var49.i = _dest.i;
-    }
-    /* 6: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var48.i;
-      _dest.x2[1] = var49.i;
-      var41.i = _dest.i;
-    }
-    /* 7: storel */
-    ptr0[i] = var41;
-  }
-
-}
-
-void
-video_convert_orc_getline_ABGR (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n)
-{
-  OrcExecutor _ex, *ex = &_ex;
-  static volatile int p_inited = 0;
-  static OrcCode *c = 0;
-  void (*func) (OrcExecutor *);
-
-  if (!p_inited) {
-    orc_once_mutex_lock ();
-    if (!p_inited) {
-      OrcProgram *p;
-
-#if 1
-      static const orc_uint8 bc[] = {
-        1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
-        95, 111, 114, 99, 95, 103, 101, 116, 108, 105, 110, 101, 95, 65, 66, 71,
-        82, 11, 4, 4, 12, 4, 4, 20, 1, 20, 1, 20, 1, 20, 1, 20,
-        2, 20, 2, 20, 2, 20, 2, 198, 36, 37, 4, 199, 33, 34, 36, 199,
-        35, 32, 37, 196, 38, 32, 33, 196, 39, 34, 35, 195, 0, 38, 39, 2,
-        0,
-      };
-      p = orc_program_new_from_static_bytecode (bc);
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_getline_ABGR);
-#else
-      p = orc_program_new ();
-      orc_program_set_name (p, "video_convert_orc_getline_ABGR");
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_getline_ABGR);
-      orc_program_add_destination (p, 4, "d1");
-      orc_program_add_source (p, 4, "s1");
-      orc_program_add_temporary (p, 1, "t1");
-      orc_program_add_temporary (p, 1, "t2");
-      orc_program_add_temporary (p, 1, "t3");
-      orc_program_add_temporary (p, 1, "t4");
-      orc_program_add_temporary (p, 2, "t5");
-      orc_program_add_temporary (p, 2, "t6");
-      orc_program_add_temporary (p, 2, "t7");
-      orc_program_add_temporary (p, 2, "t8");
-
-      orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T5, ORC_VAR_T6, ORC_VAR_S1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T5,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_T6,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T7, ORC_VAR_T1, ORC_VAR_T2,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T8, ORC_VAR_T3, ORC_VAR_T4,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T7, ORC_VAR_T8,
-          ORC_VAR_D1);
-#endif
-
-      orc_program_compile (p);
-      c = orc_program_take_code (p);
-      orc_program_free (p);
-    }
-    p_inited = TRUE;
-    orc_once_mutex_unlock ();
-  }
-  ex->arrays[ORC_VAR_A2] = c;
-  ex->program = 0;
-
-  ex->n = n;
-  ex->arrays[ORC_VAR_D1] = d1;
-  ex->arrays[ORC_VAR_S1] = (void *) s1;
-
-  func = c->exec;
-  func (ex);
-}
-#endif
-
-
-/* video_convert_orc_getline_RGBA */
-#ifdef DISABLE_ORC
-void
-video_convert_orc_getline_RGBA (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n)
-{
-  int i;
-  orc_union32 *ORC_RESTRICT ptr0;
-  const orc_union32 *ORC_RESTRICT ptr4;
-  orc_union32 var40;
-  orc_union32 var41;
-  orc_union16 var42;
-  orc_union16 var43;
-  orc_int8 var44;
-  orc_int8 var45;
-  orc_int8 var46;
-  orc_int8 var47;
-  orc_union16 var48;
-  orc_union16 var49;
-
-  ptr0 = (orc_union32 *) d1;
-  ptr4 = (orc_union32 *) s1;
-
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadl */
-    var40 = ptr4[i];
-    /* 1: splitlw */
-    {
-      orc_union32 _src;
-      _src.i = var40.i;
-      var42.i = _src.x2[1];
-      var43.i = _src.x2[0];
-    }
-    /* 2: splitwb */
-    {
-      orc_union16 _src;
-      _src.i = var43.i;
-      var44 = _src.x2[1];
-      var45 = _src.x2[0];
-    }
-    /* 3: splitwb */
-    {
-      orc_union16 _src;
-      _src.i = var42.i;
-      var46 = _src.x2[1];
-      var47 = _src.x2[0];
-    }
-    /* 4: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var46;
-      _dest.x2[1] = var45;
-      var48.i = _dest.i;
-    }
-    /* 5: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var44;
-      _dest.x2[1] = var47;
-      var49.i = _dest.i;
-    }
-    /* 6: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var48.i;
-      _dest.x2[1] = var49.i;
-      var41.i = _dest.i;
-    }
-    /* 7: storel */
-    ptr0[i] = var41;
-  }
-
-}
-
-#else
-static void
-_backup_video_convert_orc_getline_RGBA (OrcExecutor * ORC_RESTRICT ex)
-{
-  int i;
-  int n = ex->n;
-  orc_union32 *ORC_RESTRICT ptr0;
-  const orc_union32 *ORC_RESTRICT ptr4;
-  orc_union32 var40;
-  orc_union32 var41;
-  orc_union16 var42;
-  orc_union16 var43;
-  orc_int8 var44;
-  orc_int8 var45;
-  orc_int8 var46;
-  orc_int8 var47;
-  orc_union16 var48;
-  orc_union16 var49;
-
-  ptr0 = (orc_union32 *) ex->arrays[0];
-  ptr4 = (orc_union32 *) ex->arrays[4];
-
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadl */
-    var40 = ptr4[i];
-    /* 1: splitlw */
-    {
-      orc_union32 _src;
-      _src.i = var40.i;
-      var42.i = _src.x2[1];
-      var43.i = _src.x2[0];
-    }
-    /* 2: splitwb */
-    {
-      orc_union16 _src;
-      _src.i = var43.i;
-      var44 = _src.x2[1];
-      var45 = _src.x2[0];
-    }
-    /* 3: splitwb */
-    {
-      orc_union16 _src;
-      _src.i = var42.i;
-      var46 = _src.x2[1];
-      var47 = _src.x2[0];
-    }
-    /* 4: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var46;
-      _dest.x2[1] = var45;
-      var48.i = _dest.i;
-    }
-    /* 5: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var44;
-      _dest.x2[1] = var47;
-      var49.i = _dest.i;
-    }
-    /* 6: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var48.i;
-      _dest.x2[1] = var49.i;
-      var41.i = _dest.i;
-    }
-    /* 7: storel */
-    ptr0[i] = var41;
-  }
-
-}
-
-void
-video_convert_orc_getline_RGBA (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n)
-{
-  OrcExecutor _ex, *ex = &_ex;
-  static volatile int p_inited = 0;
-  static OrcCode *c = 0;
-  void (*func) (OrcExecutor *);
-
-  if (!p_inited) {
-    orc_once_mutex_lock ();
-    if (!p_inited) {
-      OrcProgram *p;
-
-#if 1
-      static const orc_uint8 bc[] = {
-        1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
-        95, 111, 114, 99, 95, 103, 101, 116, 108, 105, 110, 101, 95, 82, 71, 66,
-        65, 11, 4, 4, 12, 4, 4, 20, 1, 20, 1, 20, 1, 20, 1, 20,
-        2, 20, 2, 20, 2, 20, 2, 198, 37, 36, 4, 199, 34, 33, 36, 199,
-        32, 35, 37, 196, 38, 32, 33, 196, 39, 34, 35, 195, 0, 38, 39, 2,
-        0,
-      };
-      p = orc_program_new_from_static_bytecode (bc);
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_getline_RGBA);
-#else
-      p = orc_program_new ();
-      orc_program_set_name (p, "video_convert_orc_getline_RGBA");
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_getline_RGBA);
-      orc_program_add_destination (p, 4, "d1");
-      orc_program_add_source (p, 4, "s1");
-      orc_program_add_temporary (p, 1, "t1");
-      orc_program_add_temporary (p, 1, "t2");
-      orc_program_add_temporary (p, 1, "t3");
-      orc_program_add_temporary (p, 1, "t4");
-      orc_program_add_temporary (p, 2, "t5");
-      orc_program_add_temporary (p, 2, "t6");
-      orc_program_add_temporary (p, 2, "t7");
-      orc_program_add_temporary (p, 2, "t8");
-
-      orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_S1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_T5,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T1, ORC_VAR_T4, ORC_VAR_T6,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T7, ORC_VAR_T1, ORC_VAR_T2,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T8, ORC_VAR_T3, ORC_VAR_T4,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T7, ORC_VAR_T8,
-          ORC_VAR_D1);
-#endif
-
-      orc_program_compile (p);
-      c = orc_program_take_code (p);
-      orc_program_free (p);
-    }
-    p_inited = TRUE;
-    orc_once_mutex_unlock ();
-  }
-  ex->arrays[ORC_VAR_A2] = c;
-  ex->program = 0;
-
-  ex->n = n;
-  ex->arrays[ORC_VAR_D1] = d1;
-  ex->arrays[ORC_VAR_S1] = (void *) s1;
-
-  func = c->exec;
-  func (ex);
-}
-#endif
-
-
-/* video_convert_orc_getline_NV12 */
-#ifdef DISABLE_ORC
-void
-video_convert_orc_getline_NV12 (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n)
-{
-  int i;
-  orc_union64 *ORC_RESTRICT ptr0;
-  const orc_union16 *ORC_RESTRICT ptr4;
-  const orc_union16 *ORC_RESTRICT ptr5;
-  orc_union16 var34;
-  orc_union16 var35;
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var36;
-#else
-  orc_union16 var36;
-#endif
-  orc_union16 var37;
-  orc_union64 var38;
-  orc_union32 var39;
-  orc_union32 var40;
-
-  ptr0 = (orc_union64 *) d1;
-  ptr4 = (orc_union16 *) s1;
-  ptr5 = (orc_union16 *) s2;
-
-  /* 3: loadpb */
-  var36.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
-  var36.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadw */
-    var34 = ptr5[i];
-    /* 1: loadw */
-    var35 = ptr5[i];
-    /* 2: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var34.i;
-      _dest.x2[1] = var35.i;
-      var39.i = _dest.i;
-    }
-    /* 4: loadw */
-    var37 = ptr4[i];
-    /* 5: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var36.x2[0];
-      _dest.x2[1] = var37.x2[0];
-      var40.x2[0] = _dest.i;
-    }
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var36.x2[1];
-      _dest.x2[1] = var37.x2[1];
-      var40.x2[1] = _dest.i;
-    }
-    /* 6: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var40.x2[0];
-      _dest.x2[1] = var39.x2[0];
-      var38.x2[0] = _dest.i;
-    }
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var40.x2[1];
-      _dest.x2[1] = var39.x2[1];
-      var38.x2[1] = _dest.i;
-    }
-    /* 7: storeq */
-    ptr0[i] = var38;
-  }
-
-}
-
-#else
-static void
-_backup_video_convert_orc_getline_NV12 (OrcExecutor * ORC_RESTRICT ex)
-{
-  int i;
-  int n = ex->n;
-  orc_union64 *ORC_RESTRICT ptr0;
-  const orc_union16 *ORC_RESTRICT ptr4;
-  const orc_union16 *ORC_RESTRICT ptr5;
-  orc_union16 var34;
-  orc_union16 var35;
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var36;
-#else
-  orc_union16 var36;
-#endif
-  orc_union16 var37;
-  orc_union64 var38;
-  orc_union32 var39;
-  orc_union32 var40;
-
-  ptr0 = (orc_union64 *) ex->arrays[0];
-  ptr4 = (orc_union16 *) ex->arrays[4];
-  ptr5 = (orc_union16 *) ex->arrays[5];
-
-  /* 3: loadpb */
-  var36.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
-  var36.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadw */
-    var34 = ptr5[i];
-    /* 1: loadw */
-    var35 = ptr5[i];
-    /* 2: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var34.i;
-      _dest.x2[1] = var35.i;
-      var39.i = _dest.i;
-    }
-    /* 4: loadw */
-    var37 = ptr4[i];
-    /* 5: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var36.x2[0];
-      _dest.x2[1] = var37.x2[0];
-      var40.x2[0] = _dest.i;
-    }
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var36.x2[1];
-      _dest.x2[1] = var37.x2[1];
-      var40.x2[1] = _dest.i;
-    }
-    /* 6: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var40.x2[0];
-      _dest.x2[1] = var39.x2[0];
-      var38.x2[0] = _dest.i;
-    }
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var40.x2[1];
-      _dest.x2[1] = var39.x2[1];
-      var38.x2[1] = _dest.i;
-    }
-    /* 7: storeq */
-    ptr0[i] = var38;
-  }
-
-}
-
-void
-video_convert_orc_getline_NV12 (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n)
-{
-  OrcExecutor _ex, *ex = &_ex;
-  static volatile int p_inited = 0;
-  static OrcCode *c = 0;
-  void (*func) (OrcExecutor *);
-
-  if (!p_inited) {
-    orc_once_mutex_lock ();
-    if (!p_inited) {
-      OrcProgram *p;
-
-#if 1
-      static const orc_uint8 bc[] = {
-        1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
-        95, 111, 114, 99, 95, 103, 101, 116, 108, 105, 110, 101, 95, 78, 86, 49,
-        50, 11, 8, 8, 12, 2, 2, 12, 2, 2, 14, 1, 255, 0, 0, 0,
-        20, 4, 20, 4, 195, 33, 5, 5, 21, 1, 196, 32, 16, 4, 21, 1,
-        195, 0, 32, 33, 2, 0,
-      };
-      p = orc_program_new_from_static_bytecode (bc);
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_getline_NV12);
-#else
-      p = orc_program_new ();
-      orc_program_set_name (p, "video_convert_orc_getline_NV12");
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_getline_NV12);
-      orc_program_add_destination (p, 8, "d1");
-      orc_program_add_source (p, 2, "s1");
-      orc_program_add_source (p, 2, "s2");
-      orc_program_add_constant (p, 1, 0x000000ff, "c1");
-      orc_program_add_temporary (p, 4, "t1");
-      orc_program_add_temporary (p, 4, "t2");
-
-      orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_S2,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_S1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
-          ORC_VAR_D1);
-#endif
-
-      orc_program_compile (p);
-      c = orc_program_take_code (p);
-      orc_program_free (p);
-    }
-    p_inited = TRUE;
-    orc_once_mutex_unlock ();
-  }
-  ex->arrays[ORC_VAR_A2] = c;
-  ex->program = 0;
-
-  ex->n = n;
-  ex->arrays[ORC_VAR_D1] = d1;
-  ex->arrays[ORC_VAR_S1] = (void *) s1;
-  ex->arrays[ORC_VAR_S2] = (void *) s2;
-
-  func = c->exec;
-  func (ex);
-}
-#endif
-
-
-/* video_convert_orc_getline_NV21 */
-#ifdef DISABLE_ORC
-void
-video_convert_orc_getline_NV21 (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n)
-{
-  int i;
-  orc_union64 *ORC_RESTRICT ptr0;
-  const orc_union16 *ORC_RESTRICT ptr4;
-  const orc_union16 *ORC_RESTRICT ptr5;
-  orc_union16 var35;
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var36;
-#else
-  orc_union16 var36;
-#endif
-  orc_union16 var37;
-  orc_union64 var38;
-  orc_union16 var39;
-  orc_union32 var40;
-  orc_union32 var41;
-
-  ptr0 = (orc_union64 *) d1;
-  ptr4 = (orc_union16 *) s1;
-  ptr5 = (orc_union16 *) s2;
-
-  /* 3: loadpb */
-  var36.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
-  var36.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadw */
-    var35 = ptr5[i];
-    /* 1: swapw */
-    var39.i = ORC_SWAP_W (var35.i);
-    /* 2: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var39.i;
-      _dest.x2[1] = var39.i;
-      var40.i = _dest.i;
-    }
-    /* 4: loadw */
-    var37 = ptr4[i];
-    /* 5: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var36.x2[0];
-      _dest.x2[1] = var37.x2[0];
-      var41.x2[0] = _dest.i;
-    }
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var36.x2[1];
-      _dest.x2[1] = var37.x2[1];
-      var41.x2[1] = _dest.i;
-    }
-    /* 6: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var41.x2[0];
-      _dest.x2[1] = var40.x2[0];
-      var38.x2[0] = _dest.i;
-    }
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var41.x2[1];
-      _dest.x2[1] = var40.x2[1];
-      var38.x2[1] = _dest.i;
-    }
-    /* 7: storeq */
-    ptr0[i] = var38;
-  }
-
-}
-
-#else
-static void
-_backup_video_convert_orc_getline_NV21 (OrcExecutor * ORC_RESTRICT ex)
-{
-  int i;
-  int n = ex->n;
-  orc_union64 *ORC_RESTRICT ptr0;
-  const orc_union16 *ORC_RESTRICT ptr4;
-  const orc_union16 *ORC_RESTRICT ptr5;
-  orc_union16 var35;
-#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
-  volatile orc_union16 var36;
-#else
-  orc_union16 var36;
-#endif
-  orc_union16 var37;
-  orc_union64 var38;
-  orc_union16 var39;
-  orc_union32 var40;
-  orc_union32 var41;
-
-  ptr0 = (orc_union64 *) ex->arrays[0];
-  ptr4 = (orc_union16 *) ex->arrays[4];
-  ptr5 = (orc_union16 *) ex->arrays[5];
-
-  /* 3: loadpb */
-  var36.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
-  var36.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadw */
-    var35 = ptr5[i];
-    /* 1: swapw */
-    var39.i = ORC_SWAP_W (var35.i);
-    /* 2: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var39.i;
-      _dest.x2[1] = var39.i;
-      var40.i = _dest.i;
-    }
-    /* 4: loadw */
-    var37 = ptr4[i];
-    /* 5: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var36.x2[0];
-      _dest.x2[1] = var37.x2[0];
-      var41.x2[0] = _dest.i;
-    }
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var36.x2[1];
-      _dest.x2[1] = var37.x2[1];
-      var41.x2[1] = _dest.i;
-    }
-    /* 6: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var41.x2[0];
-      _dest.x2[1] = var40.x2[0];
-      var38.x2[0] = _dest.i;
-    }
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var41.x2[1];
-      _dest.x2[1] = var40.x2[1];
-      var38.x2[1] = _dest.i;
-    }
-    /* 7: storeq */
-    ptr0[i] = var38;
-  }
-
-}
-
-void
-video_convert_orc_getline_NV21 (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n)
-{
-  OrcExecutor _ex, *ex = &_ex;
-  static volatile int p_inited = 0;
-  static OrcCode *c = 0;
-  void (*func) (OrcExecutor *);
-
-  if (!p_inited) {
-    orc_once_mutex_lock ();
-    if (!p_inited) {
-      OrcProgram *p;
-
-#if 1
-      static const orc_uint8 bc[] = {
-        1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
-        95, 111, 114, 99, 95, 103, 101, 116, 108, 105, 110, 101, 95, 78, 86, 50,
-        49, 11, 8, 8, 12, 2, 2, 12, 2, 2, 14, 1, 255, 0, 0, 0,
-        20, 2, 20, 4, 20, 4, 183, 32, 5, 195, 34, 32, 32, 21, 1, 196,
-        33, 16, 4, 21, 1, 195, 0, 33, 34, 2, 0,
-      };
-      p = orc_program_new_from_static_bytecode (bc);
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_getline_NV21);
-#else
-      p = orc_program_new ();
-      orc_program_set_name (p, "video_convert_orc_getline_NV21");
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_getline_NV21);
-      orc_program_add_destination (p, 8, "d1");
-      orc_program_add_source (p, 2, "s1");
-      orc_program_add_source (p, 2, "s2");
-      orc_program_add_constant (p, 1, 0x000000ff, "c1");
-      orc_program_add_temporary (p, 2, "t1");
-      orc_program_add_temporary (p, 4, "t2");
-      orc_program_add_temporary (p, 4, "t3");
-
-      orc_program_append_2 (p, "swapw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_D1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_T1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T3,
-          ORC_VAR_D1);
-#endif
-
-      orc_program_compile (p);
-      c = orc_program_take_code (p);
-      orc_program_free (p);
-    }
-    p_inited = TRUE;
-    orc_once_mutex_unlock ();
-  }
-  ex->arrays[ORC_VAR_A2] = c;
-  ex->program = 0;
-
-  ex->n = n;
-  ex->arrays[ORC_VAR_D1] = d1;
-  ex->arrays[ORC_VAR_S1] = (void *) s1;
-  ex->arrays[ORC_VAR_S2] = (void *) s2;
-
-  func = c->exec;
-  func (ex);
-}
-#endif
-
-
-/* video_convert_orc_getline_A420 */
-#ifdef DISABLE_ORC
-void
-video_convert_orc_getline_A420 (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
-    const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n)
-{
-  int i;
-  orc_union32 *ORC_RESTRICT ptr0;
-  const orc_int8 *ORC_RESTRICT ptr4;
-  const orc_int8 *ORC_RESTRICT ptr5;
-  const orc_int8 *ORC_RESTRICT ptr6;
-  const orc_int8 *ORC_RESTRICT ptr7;
-  orc_int8 var36;
-  orc_int8 var37;
-  orc_union32 var38;
-  orc_int8 var39;
-  orc_int8 var40;
-  orc_union16 var41;
-  orc_union16 var42;
-
-  ptr0 = (orc_union32 *) d1;
-  ptr4 = (orc_int8 *) s1;
-  ptr5 = (orc_int8 *) s2;
-  ptr6 = (orc_int8 *) s3;
-  ptr7 = (orc_int8 *) s4;
-
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadupdb */
-    var39 = ptr5[i >> 1];
-    /* 1: loadupdb */
-    var40 = ptr6[i >> 1];
-    /* 2: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var39;
-      _dest.x2[1] = var40;
-      var41.i = _dest.i;
-    }
-    /* 3: loadb */
-    var36 = ptr7[i];
-    /* 4: loadb */
-    var37 = ptr4[i];
-    /* 5: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var36;
-      _dest.x2[1] = var37;
-      var42.i = _dest.i;
-    }
-    /* 6: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var42.i;
-      _dest.x2[1] = var41.i;
-      var38.i = _dest.i;
-    }
-    /* 7: storel */
-    ptr0[i] = var38;
-  }
-
-}
-
-#else
-static void
-_backup_video_convert_orc_getline_A420 (OrcExecutor * ORC_RESTRICT ex)
-{
-  int i;
-  int n = ex->n;
-  orc_union32 *ORC_RESTRICT ptr0;
-  const orc_int8 *ORC_RESTRICT ptr4;
-  const orc_int8 *ORC_RESTRICT ptr5;
-  const orc_int8 *ORC_RESTRICT ptr6;
-  const orc_int8 *ORC_RESTRICT ptr7;
-  orc_int8 var36;
-  orc_int8 var37;
-  orc_union32 var38;
-  orc_int8 var39;
-  orc_int8 var40;
-  orc_union16 var41;
-  orc_union16 var42;
-
-  ptr0 = (orc_union32 *) ex->arrays[0];
-  ptr4 = (orc_int8 *) ex->arrays[4];
-  ptr5 = (orc_int8 *) ex->arrays[5];
-  ptr6 = (orc_int8 *) ex->arrays[6];
-  ptr7 = (orc_int8 *) ex->arrays[7];
-
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadupdb */
-    var39 = ptr5[i >> 1];
-    /* 1: loadupdb */
-    var40 = ptr6[i >> 1];
-    /* 2: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var39;
-      _dest.x2[1] = var40;
-      var41.i = _dest.i;
-    }
-    /* 3: loadb */
-    var36 = ptr7[i];
-    /* 4: loadb */
-    var37 = ptr4[i];
-    /* 5: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var36;
-      _dest.x2[1] = var37;
-      var42.i = _dest.i;
-    }
-    /* 6: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var42.i;
-      _dest.x2[1] = var41.i;
-      var38.i = _dest.i;
-    }
-    /* 7: storel */
-    ptr0[i] = var38;
-  }
-
-}
-
-void
-video_convert_orc_getline_A420 (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
-    const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n)
-{
-  OrcExecutor _ex, *ex = &_ex;
-  static volatile int p_inited = 0;
-  static OrcCode *c = 0;
-  void (*func) (OrcExecutor *);
-
-  if (!p_inited) {
-    orc_once_mutex_lock ();
-    if (!p_inited) {
-      OrcProgram *p;
-
-#if 1
-      static const orc_uint8 bc[] = {
-        1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
-        95, 111, 114, 99, 95, 103, 101, 116, 108, 105, 110, 101, 95, 65, 52, 50,
-        48, 11, 4, 4, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1,
-        20, 2, 20, 2, 20, 1, 20, 1, 45, 34, 5, 45, 35, 6, 196, 32,
-        34, 35, 196, 33, 7, 4, 195, 0, 33, 32, 2, 0,
-      };
-      p = orc_program_new_from_static_bytecode (bc);
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_getline_A420);
-#else
-      p = orc_program_new ();
-      orc_program_set_name (p, "video_convert_orc_getline_A420");
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_getline_A420);
-      orc_program_add_destination (p, 4, "d1");
-      orc_program_add_source (p, 1, "s1");
-      orc_program_add_source (p, 1, "s2");
-      orc_program_add_source (p, 1, "s3");
-      orc_program_add_source (p, 1, "s4");
-      orc_program_add_temporary (p, 2, "t1");
-      orc_program_add_temporary (p, 2, "t2");
-      orc_program_add_temporary (p, 1, "t3");
-      orc_program_add_temporary (p, 1, "t4");
-
-      orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T3, ORC_VAR_S2,
-          ORC_VAR_D1, ORC_VAR_D1);
-      orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T4, ORC_VAR_S3,
-          ORC_VAR_D1, ORC_VAR_D1);
-      orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_S4, ORC_VAR_S1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
-          ORC_VAR_D1);
-#endif
-
-      orc_program_compile (p);
-      c = orc_program_take_code (p);
-      orc_program_free (p);
-    }
-    p_inited = TRUE;
-    orc_once_mutex_unlock ();
-  }
-  ex->arrays[ORC_VAR_A2] = c;
-  ex->program = 0;
-
-  ex->n = n;
-  ex->arrays[ORC_VAR_D1] = d1;
-  ex->arrays[ORC_VAR_S1] = (void *) s1;
-  ex->arrays[ORC_VAR_S2] = (void *) s2;
-  ex->arrays[ORC_VAR_S3] = (void *) s3;
-  ex->arrays[ORC_VAR_S4] = (void *) s4;
-
-  func = c->exec;
-  func (ex);
-}
-#endif
-
-
-/* video_convert_orc_putline_I420 */
-#ifdef DISABLE_ORC
-void
-video_convert_orc_putline_I420 (guint8 * ORC_RESTRICT d1,
-    guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3,
-    const guint8 * ORC_RESTRICT s1, int n)
-{
-  int i;
-  orc_union16 *ORC_RESTRICT ptr0;
-  orc_int8 *ORC_RESTRICT ptr1;
-  orc_int8 *ORC_RESTRICT ptr2;
-  const orc_union64 *ORC_RESTRICT ptr4;
-  orc_union64 var38;
-  orc_union16 var39;
-  orc_int8 var40;
-  orc_int8 var41;
-  orc_union32 var42;
-  orc_union32 var43;
-  orc_union16 var44;
-  orc_union16 var45;
-  orc_int8 var46;
-  orc_int8 var47;
-  orc_int8 var48;
-  orc_int8 var49;
-
-  ptr0 = (orc_union16 *) d1;
-  ptr1 = (orc_int8 *) d2;
-  ptr2 = (orc_int8 *) d3;
-  ptr4 = (orc_union64 *) s1;
-
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadq */
-    var38 = ptr4[i];
-    /* 1: splitlw */
-    {
-      orc_union32 _src;
-      _src.i = var38.x2[0];
-      var42.x2[0] = _src.x2[1];
-      var43.x2[0] = _src.x2[0];
-    }
-    {
-      orc_union32 _src;
-      _src.i = var38.x2[1];
-      var42.x2[1] = _src.x2[1];
-      var43.x2[1] = _src.x2[0];
-    }
-    /* 2: select1wb */
-    {
-      orc_union16 _src;
-      _src.i = var43.x2[0];
-      var39.x2[0] = _src.x2[1];
-    }
-    {
-      orc_union16 _src;
-      _src.i = var43.x2[1];
-      var39.x2[1] = _src.x2[1];
-    }
-    /* 3: storew */
-    ptr0[i] = var39;
-    /* 4: splitwb */
-    {
-      orc_union16 _src;
-      _src.i = var42.x2[0];
-      var44.x2[0] = _src.x2[1];
-      var45.x2[0] = _src.x2[0];
-    }
-    {
-      orc_union16 _src;
-      _src.i = var42.x2[1];
-      var44.x2[1] = _src.x2[1];
-      var45.x2[1] = _src.x2[0];
-    }
-    /* 5: splitwb */
-    {
-      orc_union16 _src;
-      _src.i = var45.i;
-      var46 = _src.x2[1];
-      var47 = _src.x2[0];
-    }
-    /* 6: avgub */
-    var40 = ((orc_uint8) var46 + (orc_uint8) var47 + 1) >> 1;
-    /* 7: storeb */
-    ptr1[i] = var40;
-    /* 8: splitwb */
-    {
-      orc_union16 _src;
-      _src.i = var44.i;
-      var48 = _src.x2[1];
-      var49 = _src.x2[0];
-    }
-    /* 9: avgub */
-    var41 = ((orc_uint8) var48 + (orc_uint8) var49 + 1) >> 1;
-    /* 10: storeb */
-    ptr2[i] = var41;
-  }
-
-}
-
-#else
-static void
-_backup_video_convert_orc_putline_I420 (OrcExecutor * ORC_RESTRICT ex)
-{
-  int i;
-  int n = ex->n;
-  orc_union16 *ORC_RESTRICT ptr0;
-  orc_int8 *ORC_RESTRICT ptr1;
-  orc_int8 *ORC_RESTRICT ptr2;
-  const orc_union64 *ORC_RESTRICT ptr4;
-  orc_union64 var38;
-  orc_union16 var39;
-  orc_int8 var40;
-  orc_int8 var41;
-  orc_union32 var42;
-  orc_union32 var43;
-  orc_union16 var44;
-  orc_union16 var45;
-  orc_int8 var46;
-  orc_int8 var47;
-  orc_int8 var48;
-  orc_int8 var49;
-
-  ptr0 = (orc_union16 *) ex->arrays[0];
-  ptr1 = (orc_int8 *) ex->arrays[1];
-  ptr2 = (orc_int8 *) ex->arrays[2];
-  ptr4 = (orc_union64 *) ex->arrays[4];
-
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadq */
-    var38 = ptr4[i];
-    /* 1: splitlw */
-    {
-      orc_union32 _src;
-      _src.i = var38.x2[0];
-      var42.x2[0] = _src.x2[1];
-      var43.x2[0] = _src.x2[0];
-    }
-    {
-      orc_union32 _src;
-      _src.i = var38.x2[1];
-      var42.x2[1] = _src.x2[1];
-      var43.x2[1] = _src.x2[0];
-    }
-    /* 2: select1wb */
-    {
-      orc_union16 _src;
-      _src.i = var43.x2[0];
-      var39.x2[0] = _src.x2[1];
-    }
-    {
-      orc_union16 _src;
-      _src.i = var43.x2[1];
-      var39.x2[1] = _src.x2[1];
-    }
-    /* 3: storew */
-    ptr0[i] = var39;
-    /* 4: splitwb */
-    {
-      orc_union16 _src;
-      _src.i = var42.x2[0];
-      var44.x2[0] = _src.x2[1];
-      var45.x2[0] = _src.x2[0];
-    }
-    {
-      orc_union16 _src;
-      _src.i = var42.x2[1];
-      var44.x2[1] = _src.x2[1];
-      var45.x2[1] = _src.x2[0];
-    }
-    /* 5: splitwb */
-    {
-      orc_union16 _src;
-      _src.i = var45.i;
-      var46 = _src.x2[1];
-      var47 = _src.x2[0];
-    }
-    /* 6: avgub */
-    var40 = ((orc_uint8) var46 + (orc_uint8) var47 + 1) >> 1;
-    /* 7: storeb */
-    ptr1[i] = var40;
-    /* 8: splitwb */
-    {
-      orc_union16 _src;
-      _src.i = var44.i;
-      var48 = _src.x2[1];
-      var49 = _src.x2[0];
-    }
-    /* 9: avgub */
-    var41 = ((orc_uint8) var48 + (orc_uint8) var49 + 1) >> 1;
-    /* 10: storeb */
-    ptr2[i] = var41;
-  }
-
-}
-
-void
-video_convert_orc_putline_I420 (guint8 * ORC_RESTRICT d1,
-    guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3,
-    const guint8 * ORC_RESTRICT s1, int n)
-{
-  OrcExecutor _ex, *ex = &_ex;
-  static volatile int p_inited = 0;
-  static OrcCode *c = 0;
-  void (*func) (OrcExecutor *);
-
-  if (!p_inited) {
-    orc_once_mutex_lock ();
-    if (!p_inited) {
-      OrcProgram *p;
-
-#if 1
-      static const orc_uint8 bc[] = {
-        1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
-        95, 111, 114, 99, 95, 112, 117, 116, 108, 105, 110, 101, 95, 73, 52, 50,
-        48, 11, 2, 2, 11, 1, 1, 11, 1, 1, 12, 8, 8, 20, 4, 20,
-        4, 20, 2, 20, 2, 20, 1, 20, 1, 21, 1, 198, 33, 32, 4, 21,
-        1, 189, 0, 32, 21, 1, 199, 35, 34, 33, 199, 36, 37, 34, 39, 1,
-        36, 37, 199, 36, 37, 35, 39, 2, 36, 37, 2, 0,
-      };
-      p = orc_program_new_from_static_bytecode (bc);
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_putline_I420);
-#else
-      p = orc_program_new ();
-      orc_program_set_name (p, "video_convert_orc_putline_I420");
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_putline_I420);
-      orc_program_add_destination (p, 2, "d1");
-      orc_program_add_destination (p, 1, "d2");
-      orc_program_add_destination (p, 1, "d3");
-      orc_program_add_source (p, 8, "s1");
-      orc_program_add_temporary (p, 4, "t1");
-      orc_program_add_temporary (p, 4, "t2");
-      orc_program_add_temporary (p, 2, "t3");
-      orc_program_add_temporary (p, 2, "t4");
-      orc_program_add_temporary (p, 1, "t5");
-      orc_program_add_temporary (p, 1, "t6");
-
-      orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1,
-          ORC_VAR_D1, ORC_VAR_D1);
-      orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T2,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T5, ORC_VAR_T6, ORC_VAR_T3,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "avgub", 0, ORC_VAR_D2, ORC_VAR_T5, ORC_VAR_T6,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T5, ORC_VAR_T6, ORC_VAR_T4,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "avgub", 0, ORC_VAR_D3, ORC_VAR_T5, ORC_VAR_T6,
-          ORC_VAR_D1);
-#endif
-
-      orc_program_compile (p);
-      c = orc_program_take_code (p);
-      orc_program_free (p);
-    }
-    p_inited = TRUE;
-    orc_once_mutex_unlock ();
-  }
-  ex->arrays[ORC_VAR_A2] = c;
-  ex->program = 0;
-
-  ex->n = n;
-  ex->arrays[ORC_VAR_D1] = d1;
-  ex->arrays[ORC_VAR_D2] = d2;
-  ex->arrays[ORC_VAR_D3] = d3;
-  ex->arrays[ORC_VAR_S1] = (void *) s1;
-
-  func = c->exec;
-  func (ex);
-}
-#endif
-
-
-/* video_convert_orc_putline_YUY2 */
-#ifdef DISABLE_ORC
-void
-video_convert_orc_putline_YUY2 (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n)
-{
-  int i;
-  orc_union32 *ORC_RESTRICT ptr0;
-  const orc_union64 *ORC_RESTRICT ptr4;
-  orc_union64 var37;
-  orc_union32 var38;
-  orc_union32 var39;
-  orc_union32 var40;
-  orc_union16 var41;
-  orc_union16 var42;
-  orc_union16 var43;
-  orc_union16 var44;
-
-  ptr0 = (orc_union32 *) d1;
-  ptr4 = (orc_union64 *) s1;
-
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadq */
-    var37 = ptr4[i];
-    /* 1: splitlw */
-    {
-      orc_union32 _src;
-      _src.i = var37.x2[0];
-      var39.x2[0] = _src.x2[1];
-      var40.x2[0] = _src.x2[0];
-    }
-    {
-      orc_union32 _src;
-      _src.i = var37.x2[1];
-      var39.x2[1] = _src.x2[1];
-      var40.x2[1] = _src.x2[0];
-    }
-    /* 2: splitlw */
-    {
-      orc_union32 _src;
-      _src.i = var39.i;
-      var41.i = _src.x2[1];
-      var42.i = _src.x2[0];
-    }
-    /* 3: avgub */
-    var43.x2[0] = ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
-    var43.x2[1] = ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
-    /* 4: select1wb */
-    {
-      orc_union16 _src;
-      _src.i = var40.x2[0];
-      var44.x2[0] = _src.x2[1];
-    }
-    {
-      orc_union16 _src;
-      _src.i = var40.x2[1];
-      var44.x2[1] = _src.x2[1];
-    }
-    /* 5: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var44.x2[0];
-      _dest.x2[1] = var43.x2[0];
-      var38.x2[0] = _dest.i;
-    }
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var44.x2[1];
-      _dest.x2[1] = var43.x2[1];
-      var38.x2[1] = _dest.i;
-    }
-    /* 6: storel */
-    ptr0[i] = var38;
-  }
-
-}
-
-#else
-static void
-_backup_video_convert_orc_putline_YUY2 (OrcExecutor * ORC_RESTRICT ex)
-{
-  int i;
-  int n = ex->n;
-  orc_union32 *ORC_RESTRICT ptr0;
-  const orc_union64 *ORC_RESTRICT ptr4;
-  orc_union64 var37;
-  orc_union32 var38;
-  orc_union32 var39;
-  orc_union32 var40;
-  orc_union16 var41;
-  orc_union16 var42;
-  orc_union16 var43;
-  orc_union16 var44;
-
-  ptr0 = (orc_union32 *) ex->arrays[0];
-  ptr4 = (orc_union64 *) ex->arrays[4];
-
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadq */
-    var37 = ptr4[i];
-    /* 1: splitlw */
-    {
-      orc_union32 _src;
-      _src.i = var37.x2[0];
-      var39.x2[0] = _src.x2[1];
-      var40.x2[0] = _src.x2[0];
-    }
-    {
-      orc_union32 _src;
-      _src.i = var37.x2[1];
-      var39.x2[1] = _src.x2[1];
-      var40.x2[1] = _src.x2[0];
-    }
-    /* 2: splitlw */
-    {
-      orc_union32 _src;
-      _src.i = var39.i;
-      var41.i = _src.x2[1];
-      var42.i = _src.x2[0];
-    }
-    /* 3: avgub */
-    var43.x2[0] = ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
-    var43.x2[1] = ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
-    /* 4: select1wb */
-    {
-      orc_union16 _src;
-      _src.i = var40.x2[0];
-      var44.x2[0] = _src.x2[1];
-    }
-    {
-      orc_union16 _src;
-      _src.i = var40.x2[1];
-      var44.x2[1] = _src.x2[1];
-    }
-    /* 5: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var44.x2[0];
-      _dest.x2[1] = var43.x2[0];
-      var38.x2[0] = _dest.i;
-    }
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var44.x2[1];
-      _dest.x2[1] = var43.x2[1];
-      var38.x2[1] = _dest.i;
-    }
-    /* 6: storel */
-    ptr0[i] = var38;
-  }
-
-}
-
-void
-video_convert_orc_putline_YUY2 (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n)
-{
-  OrcExecutor _ex, *ex = &_ex;
-  static volatile int p_inited = 0;
-  static OrcCode *c = 0;
-  void (*func) (OrcExecutor *);
-
-  if (!p_inited) {
-    orc_once_mutex_lock ();
-    if (!p_inited) {
-      OrcProgram *p;
-
-#if 1
-      static const orc_uint8 bc[] = {
-        1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
-        95, 111, 114, 99, 95, 112, 117, 116, 108, 105, 110, 101, 95, 89, 85, 89,
-        50, 11, 4, 4, 12, 8, 8, 20, 2, 20, 2, 20, 2, 20, 4, 20,
-        4, 21, 1, 198, 36, 35, 4, 198, 33, 34, 36, 21, 1, 39, 33, 33,
-        34, 21, 1, 189, 32, 35, 21, 1, 196, 0, 32, 33, 2, 0,
-      };
-      p = orc_program_new_from_static_bytecode (bc);
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_putline_YUY2);
-#else
-      p = orc_program_new ();
-      orc_program_set_name (p, "video_convert_orc_putline_YUY2");
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_putline_YUY2);
-      orc_program_add_destination (p, 4, "d1");
-      orc_program_add_source (p, 8, "s1");
-      orc_program_add_temporary (p, 2, "t1");
-      orc_program_add_temporary (p, 2, "t2");
-      orc_program_add_temporary (p, 2, "t3");
-      orc_program_add_temporary (p, 4, "t4");
-      orc_program_add_temporary (p, 4, "t5");
-
-      orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_S1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T5,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "avgub", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "select1wb", 1, ORC_VAR_T1, ORC_VAR_T4,
-          ORC_VAR_D1, ORC_VAR_D1);
-      orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
-          ORC_VAR_D1);
-#endif
-
-      orc_program_compile (p);
-      c = orc_program_take_code (p);
-      orc_program_free (p);
-    }
-    p_inited = TRUE;
-    orc_once_mutex_unlock ();
-  }
-  ex->arrays[ORC_VAR_A2] = c;
-  ex->program = 0;
-
-  ex->n = n;
-  ex->arrays[ORC_VAR_D1] = d1;
-  ex->arrays[ORC_VAR_S1] = (void *) s1;
-
-  func = c->exec;
-  func (ex);
-}
-#endif
-
-
-/* video_convert_orc_putline_YVYU */
-#ifdef DISABLE_ORC
-void
-video_convert_orc_putline_YVYU (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n)
-{
-  int i;
-  orc_union32 *ORC_RESTRICT ptr0;
-  const orc_union64 *ORC_RESTRICT ptr4;
-  orc_union64 var37;
-  orc_union32 var38;
-  orc_union32 var39;
-  orc_union32 var40;
-  orc_union16 var41;
-  orc_union16 var42;
-  orc_union16 var43;
-  orc_union16 var44;
-  orc_union16 var45;
-
-  ptr0 = (orc_union32 *) d1;
-  ptr4 = (orc_union64 *) s1;
-
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadq */
-    var37 = ptr4[i];
-    /* 1: splitlw */
-    {
-      orc_union32 _src;
-      _src.i = var37.x2[0];
-      var39.x2[0] = _src.x2[1];
-      var40.x2[0] = _src.x2[0];
-    }
-    {
-      orc_union32 _src;
-      _src.i = var37.x2[1];
-      var39.x2[1] = _src.x2[1];
-      var40.x2[1] = _src.x2[0];
-    }
-    /* 2: splitlw */
-    {
-      orc_union32 _src;
-      _src.i = var39.i;
-      var41.i = _src.x2[1];
-      var42.i = _src.x2[0];
-    }
-    /* 3: avgub */
-    var43.x2[0] = ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
-    var43.x2[1] = ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
-    /* 4: select1wb */
-    {
-      orc_union16 _src;
-      _src.i = var40.x2[0];
-      var44.x2[0] = _src.x2[1];
-    }
-    {
-      orc_union16 _src;
-      _src.i = var40.x2[1];
-      var44.x2[1] = _src.x2[1];
-    }
-    /* 5: swapw */
-    var45.i = ORC_SWAP_W (var43.i);
-    /* 6: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var44.x2[0];
-      _dest.x2[1] = var45.x2[0];
-      var38.x2[0] = _dest.i;
-    }
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var44.x2[1];
-      _dest.x2[1] = var45.x2[1];
-      var38.x2[1] = _dest.i;
-    }
-    /* 7: storel */
-    ptr0[i] = var38;
-  }
-
-}
-
-#else
-static void
-_backup_video_convert_orc_putline_YVYU (OrcExecutor * ORC_RESTRICT ex)
-{
-  int i;
-  int n = ex->n;
-  orc_union32 *ORC_RESTRICT ptr0;
-  const orc_union64 *ORC_RESTRICT ptr4;
-  orc_union64 var37;
-  orc_union32 var38;
-  orc_union32 var39;
-  orc_union32 var40;
-  orc_union16 var41;
-  orc_union16 var42;
-  orc_union16 var43;
-  orc_union16 var44;
-  orc_union16 var45;
-
-  ptr0 = (orc_union32 *) ex->arrays[0];
-  ptr4 = (orc_union64 *) ex->arrays[4];
-
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadq */
-    var37 = ptr4[i];
-    /* 1: splitlw */
-    {
-      orc_union32 _src;
-      _src.i = var37.x2[0];
-      var39.x2[0] = _src.x2[1];
-      var40.x2[0] = _src.x2[0];
-    }
-    {
-      orc_union32 _src;
-      _src.i = var37.x2[1];
-      var39.x2[1] = _src.x2[1];
-      var40.x2[1] = _src.x2[0];
-    }
-    /* 2: splitlw */
-    {
-      orc_union32 _src;
-      _src.i = var39.i;
-      var41.i = _src.x2[1];
-      var42.i = _src.x2[0];
-    }
-    /* 3: avgub */
-    var43.x2[0] = ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
-    var43.x2[1] = ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
-    /* 4: select1wb */
-    {
-      orc_union16 _src;
-      _src.i = var40.x2[0];
-      var44.x2[0] = _src.x2[1];
-    }
-    {
-      orc_union16 _src;
-      _src.i = var40.x2[1];
-      var44.x2[1] = _src.x2[1];
-    }
-    /* 5: swapw */
-    var45.i = ORC_SWAP_W (var43.i);
-    /* 6: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var44.x2[0];
-      _dest.x2[1] = var45.x2[0];
-      var38.x2[0] = _dest.i;
-    }
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var44.x2[1];
-      _dest.x2[1] = var45.x2[1];
-      var38.x2[1] = _dest.i;
-    }
-    /* 7: storel */
-    ptr0[i] = var38;
-  }
-
-}
-
-void
-video_convert_orc_putline_YVYU (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n)
-{
-  OrcExecutor _ex, *ex = &_ex;
-  static volatile int p_inited = 0;
-  static OrcCode *c = 0;
-  void (*func) (OrcExecutor *);
-
-  if (!p_inited) {
-    orc_once_mutex_lock ();
-    if (!p_inited) {
-      OrcProgram *p;
-
-#if 1
-      static const orc_uint8 bc[] = {
-        1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
-        95, 111, 114, 99, 95, 112, 117, 116, 108, 105, 110, 101, 95, 89, 86, 89,
-        85, 11, 4, 4, 12, 8, 8, 20, 2, 20, 2, 20, 2, 20, 4, 20,
-        4, 21, 1, 198, 36, 35, 4, 198, 33, 34, 36, 21, 1, 39, 33, 33,
-        34, 21, 1, 189, 32, 35, 183, 33, 33, 21, 1, 196, 0, 32, 33, 2,
-        0,
-      };
-      p = orc_program_new_from_static_bytecode (bc);
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_putline_YVYU);
-#else
-      p = orc_program_new ();
-      orc_program_set_name (p, "video_convert_orc_putline_YVYU");
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_putline_YVYU);
-      orc_program_add_destination (p, 4, "d1");
-      orc_program_add_source (p, 8, "s1");
-      orc_program_add_temporary (p, 2, "t1");
-      orc_program_add_temporary (p, 2, "t2");
-      orc_program_add_temporary (p, 2, "t3");
-      orc_program_add_temporary (p, 4, "t4");
-      orc_program_add_temporary (p, 4, "t5");
-
-      orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_S1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T5,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "avgub", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "select1wb", 1, ORC_VAR_T1, ORC_VAR_T4,
-          ORC_VAR_D1, ORC_VAR_D1);
-      orc_program_append_2 (p, "swapw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
-          ORC_VAR_D1);
-#endif
-
-      orc_program_compile (p);
-      c = orc_program_take_code (p);
-      orc_program_free (p);
-    }
-    p_inited = TRUE;
-    orc_once_mutex_unlock ();
-  }
-  ex->arrays[ORC_VAR_A2] = c;
-  ex->program = 0;
-
-  ex->n = n;
-  ex->arrays[ORC_VAR_D1] = d1;
-  ex->arrays[ORC_VAR_S1] = (void *) s1;
-
-  func = c->exec;
-  func (ex);
-}
-#endif
-
-
-/* video_convert_orc_putline_UYVY */
-#ifdef DISABLE_ORC
-void
-video_convert_orc_putline_UYVY (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n)
-{
-  int i;
-  orc_union32 *ORC_RESTRICT ptr0;
-  const orc_union64 *ORC_RESTRICT ptr4;
-  orc_union64 var37;
-  orc_union32 var38;
-  orc_union32 var39;
-  orc_union32 var40;
-  orc_union16 var41;
-  orc_union16 var42;
-  orc_union16 var43;
-  orc_union16 var44;
-
-  ptr0 = (orc_union32 *) d1;
-  ptr4 = (orc_union64 *) s1;
-
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadq */
-    var37 = ptr4[i];
-    /* 1: splitlw */
-    {
-      orc_union32 _src;
-      _src.i = var37.x2[0];
-      var39.x2[0] = _src.x2[1];
-      var40.x2[0] = _src.x2[0];
-    }
-    {
-      orc_union32 _src;
-      _src.i = var37.x2[1];
-      var39.x2[1] = _src.x2[1];
-      var40.x2[1] = _src.x2[0];
-    }
-    /* 2: splitlw */
-    {
-      orc_union32 _src;
-      _src.i = var39.i;
-      var41.i = _src.x2[1];
-      var42.i = _src.x2[0];
-    }
-    /* 3: avgub */
-    var43.x2[0] = ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
-    var43.x2[1] = ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
-    /* 4: select1wb */
-    {
-      orc_union16 _src;
-      _src.i = var40.x2[0];
-      var44.x2[0] = _src.x2[1];
-    }
-    {
-      orc_union16 _src;
-      _src.i = var40.x2[1];
-      var44.x2[1] = _src.x2[1];
-    }
-    /* 5: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var43.x2[0];
-      _dest.x2[1] = var44.x2[0];
-      var38.x2[0] = _dest.i;
-    }
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var43.x2[1];
-      _dest.x2[1] = var44.x2[1];
-      var38.x2[1] = _dest.i;
-    }
-    /* 6: storel */
-    ptr0[i] = var38;
-  }
-
-}
-
-#else
-static void
-_backup_video_convert_orc_putline_UYVY (OrcExecutor * ORC_RESTRICT ex)
-{
-  int i;
-  int n = ex->n;
-  orc_union32 *ORC_RESTRICT ptr0;
-  const orc_union64 *ORC_RESTRICT ptr4;
-  orc_union64 var37;
-  orc_union32 var38;
-  orc_union32 var39;
-  orc_union32 var40;
-  orc_union16 var41;
-  orc_union16 var42;
-  orc_union16 var43;
-  orc_union16 var44;
-
-  ptr0 = (orc_union32 *) ex->arrays[0];
-  ptr4 = (orc_union64 *) ex->arrays[4];
-
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadq */
-    var37 = ptr4[i];
-    /* 1: splitlw */
-    {
-      orc_union32 _src;
-      _src.i = var37.x2[0];
-      var39.x2[0] = _src.x2[1];
-      var40.x2[0] = _src.x2[0];
-    }
-    {
-      orc_union32 _src;
-      _src.i = var37.x2[1];
-      var39.x2[1] = _src.x2[1];
-      var40.x2[1] = _src.x2[0];
-    }
-    /* 2: splitlw */
-    {
-      orc_union32 _src;
-      _src.i = var39.i;
-      var41.i = _src.x2[1];
-      var42.i = _src.x2[0];
-    }
-    /* 3: avgub */
-    var43.x2[0] = ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
-    var43.x2[1] = ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
-    /* 4: select1wb */
-    {
-      orc_union16 _src;
-      _src.i = var40.x2[0];
-      var44.x2[0] = _src.x2[1];
-    }
-    {
-      orc_union16 _src;
-      _src.i = var40.x2[1];
-      var44.x2[1] = _src.x2[1];
-    }
-    /* 5: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var43.x2[0];
-      _dest.x2[1] = var44.x2[0];
-      var38.x2[0] = _dest.i;
-    }
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var43.x2[1];
-      _dest.x2[1] = var44.x2[1];
-      var38.x2[1] = _dest.i;
-    }
-    /* 6: storel */
-    ptr0[i] = var38;
-  }
-
-}
-
-void
-video_convert_orc_putline_UYVY (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n)
-{
-  OrcExecutor _ex, *ex = &_ex;
-  static volatile int p_inited = 0;
-  static OrcCode *c = 0;
-  void (*func) (OrcExecutor *);
-
-  if (!p_inited) {
-    orc_once_mutex_lock ();
-    if (!p_inited) {
-      OrcProgram *p;
-
-#if 1
-      static const orc_uint8 bc[] = {
-        1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
-        95, 111, 114, 99, 95, 112, 117, 116, 108, 105, 110, 101, 95, 85, 89, 86,
-        89, 11, 4, 4, 12, 8, 8, 20, 2, 20, 2, 20, 2, 20, 4, 20,
-        4, 21, 1, 198, 36, 35, 4, 198, 33, 34, 36, 21, 1, 39, 33, 33,
-        34, 21, 1, 189, 32, 35, 21, 1, 196, 0, 33, 32, 2, 0,
-      };
-      p = orc_program_new_from_static_bytecode (bc);
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_putline_UYVY);
-#else
-      p = orc_program_new ();
-      orc_program_set_name (p, "video_convert_orc_putline_UYVY");
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_putline_UYVY);
-      orc_program_add_destination (p, 4, "d1");
-      orc_program_add_source (p, 8, "s1");
-      orc_program_add_temporary (p, 2, "t1");
-      orc_program_add_temporary (p, 2, "t2");
-      orc_program_add_temporary (p, 2, "t3");
-      orc_program_add_temporary (p, 4, "t4");
-      orc_program_add_temporary (p, 4, "t5");
-
-      orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_S1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T5,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "avgub", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "select1wb", 1, ORC_VAR_T1, ORC_VAR_T4,
-          ORC_VAR_D1, ORC_VAR_D1);
-      orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
-          ORC_VAR_D1);
-#endif
-
-      orc_program_compile (p);
-      c = orc_program_take_code (p);
-      orc_program_free (p);
-    }
-    p_inited = TRUE;
-    orc_once_mutex_unlock ();
-  }
-  ex->arrays[ORC_VAR_A2] = c;
-  ex->program = 0;
-
-  ex->n = n;
-  ex->arrays[ORC_VAR_D1] = d1;
-  ex->arrays[ORC_VAR_S1] = (void *) s1;
-
-  func = c->exec;
-  func (ex);
-}
-#endif
-
-
-/* video_convert_orc_putline_Y42B */
-#ifdef DISABLE_ORC
-void
-video_convert_orc_putline_Y42B (guint8 * ORC_RESTRICT d1,
-    guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3,
-    const guint8 * ORC_RESTRICT s1, int n)
-{
-  int i;
-  orc_union16 *ORC_RESTRICT ptr0;
-  orc_int8 *ORC_RESTRICT ptr1;
-  orc_int8 *ORC_RESTRICT ptr2;
-  const orc_union64 *ORC_RESTRICT ptr4;
-  orc_union64 var36;
-  orc_int8 var37;
-  orc_int8 var38;
-  orc_union16 var39;
-  orc_union32 var40;
-  orc_union32 var41;
-  orc_union16 var42;
-  orc_union16 var43;
-  orc_union16 var44;
-
-  ptr0 = (orc_union16 *) d1;
-  ptr1 = (orc_int8 *) d2;
-  ptr2 = (orc_int8 *) d3;
-  ptr4 = (orc_union64 *) s1;
-
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadq */
-    var36 = ptr4[i];
-    /* 1: splitlw */
-    {
-      orc_union32 _src;
-      _src.i = var36.x2[0];
-      var40.x2[0] = _src.x2[1];
-      var41.x2[0] = _src.x2[0];
-    }
-    {
-      orc_union32 _src;
-      _src.i = var36.x2[1];
-      var40.x2[1] = _src.x2[1];
-      var41.x2[1] = _src.x2[0];
-    }
-    /* 2: splitlw */
-    {
-      orc_union32 _src;
-      _src.i = var40.i;
-      var42.i = _src.x2[1];
-      var43.i = _src.x2[0];
-    }
-    /* 3: avgub */
-    var44.x2[0] = ((orc_uint8) var42.x2[0] + (orc_uint8) var43.x2[0] + 1) >> 1;
-    var44.x2[1] = ((orc_uint8) var42.x2[1] + (orc_uint8) var43.x2[1] + 1) >> 1;
-    /* 4: splitwb */
-    {
-      orc_union16 _src;
-      _src.i = var44.i;
-      var37 = _src.x2[1];
-      var38 = _src.x2[0];
-    }
-    /* 5: storeb */
-    ptr2[i] = var37;
-    /* 6: storeb */
-    ptr1[i] = var38;
-    /* 7: select1wb */
-    {
-      orc_union16 _src;
-      _src.i = var41.x2[0];
-      var39.x2[0] = _src.x2[1];
-    }
-    {
-      orc_union16 _src;
-      _src.i = var41.x2[1];
-      var39.x2[1] = _src.x2[1];
-    }
-    /* 8: storew */
-    ptr0[i] = var39;
-  }
-
-}
-
-#else
-static void
-_backup_video_convert_orc_putline_Y42B (OrcExecutor * ORC_RESTRICT ex)
-{
-  int i;
-  int n = ex->n;
-  orc_union16 *ORC_RESTRICT ptr0;
-  orc_int8 *ORC_RESTRICT ptr1;
-  orc_int8 *ORC_RESTRICT ptr2;
-  const orc_union64 *ORC_RESTRICT ptr4;
-  orc_union64 var36;
-  orc_int8 var37;
-  orc_int8 var38;
-  orc_union16 var39;
-  orc_union32 var40;
-  orc_union32 var41;
-  orc_union16 var42;
-  orc_union16 var43;
-  orc_union16 var44;
-
-  ptr0 = (orc_union16 *) ex->arrays[0];
-  ptr1 = (orc_int8 *) ex->arrays[1];
-  ptr2 = (orc_int8 *) ex->arrays[2];
-  ptr4 = (orc_union64 *) ex->arrays[4];
-
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadq */
-    var36 = ptr4[i];
-    /* 1: splitlw */
-    {
-      orc_union32 _src;
-      _src.i = var36.x2[0];
-      var40.x2[0] = _src.x2[1];
-      var41.x2[0] = _src.x2[0];
-    }
-    {
-      orc_union32 _src;
-      _src.i = var36.x2[1];
-      var40.x2[1] = _src.x2[1];
-      var41.x2[1] = _src.x2[0];
-    }
-    /* 2: splitlw */
-    {
-      orc_union32 _src;
-      _src.i = var40.i;
-      var42.i = _src.x2[1];
-      var43.i = _src.x2[0];
-    }
-    /* 3: avgub */
-    var44.x2[0] = ((orc_uint8) var42.x2[0] + (orc_uint8) var43.x2[0] + 1) >> 1;
-    var44.x2[1] = ((orc_uint8) var42.x2[1] + (orc_uint8) var43.x2[1] + 1) >> 1;
-    /* 4: splitwb */
-    {
-      orc_union16 _src;
-      _src.i = var44.i;
-      var37 = _src.x2[1];
-      var38 = _src.x2[0];
-    }
-    /* 5: storeb */
-    ptr2[i] = var37;
-    /* 6: storeb */
-    ptr1[i] = var38;
-    /* 7: select1wb */
-    {
-      orc_union16 _src;
-      _src.i = var41.x2[0];
-      var39.x2[0] = _src.x2[1];
-    }
-    {
-      orc_union16 _src;
-      _src.i = var41.x2[1];
-      var39.x2[1] = _src.x2[1];
-    }
-    /* 8: storew */
-    ptr0[i] = var39;
-  }
-
-}
-
-void
-video_convert_orc_putline_Y42B (guint8 * ORC_RESTRICT d1,
-    guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3,
-    const guint8 * ORC_RESTRICT s1, int n)
-{
-  OrcExecutor _ex, *ex = &_ex;
-  static volatile int p_inited = 0;
-  static OrcCode *c = 0;
-  void (*func) (OrcExecutor *);
-
-  if (!p_inited) {
-    orc_once_mutex_lock ();
-    if (!p_inited) {
-      OrcProgram *p;
-
-#if 1
-      static const orc_uint8 bc[] = {
-        1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
-        95, 111, 114, 99, 95, 112, 117, 116, 108, 105, 110, 101, 95, 89, 52, 50,
-        66, 11, 2, 2, 11, 1, 1, 11, 1, 1, 12, 8, 8, 20, 4, 20,
-        4, 20, 2, 20, 2, 21, 1, 198, 33, 32, 4, 198, 34, 35, 33, 21,
-        1, 39, 34, 34, 35, 199, 2, 1, 34, 21, 1, 189, 0, 32, 2, 0,
-
-      };
-      p = orc_program_new_from_static_bytecode (bc);
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_putline_Y42B);
-#else
-      p = orc_program_new ();
-      orc_program_set_name (p, "video_convert_orc_putline_Y42B");
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_putline_Y42B);
-      orc_program_add_destination (p, 2, "d1");
-      orc_program_add_destination (p, 1, "d2");
-      orc_program_add_destination (p, 1, "d3");
-      orc_program_add_source (p, 8, "s1");
-      orc_program_add_temporary (p, 4, "t1");
-      orc_program_add_temporary (p, 4, "t2");
-      orc_program_add_temporary (p, 2, "t3");
-      orc_program_add_temporary (p, 2, "t4");
-
-      orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T2,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "avgub", 1, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T3,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1,
-          ORC_VAR_D1, ORC_VAR_D1);
-#endif
-
-      orc_program_compile (p);
-      c = orc_program_take_code (p);
-      orc_program_free (p);
-    }
-    p_inited = TRUE;
-    orc_once_mutex_unlock ();
-  }
-  ex->arrays[ORC_VAR_A2] = c;
-  ex->program = 0;
-
-  ex->n = n;
-  ex->arrays[ORC_VAR_D1] = d1;
-  ex->arrays[ORC_VAR_D2] = d2;
-  ex->arrays[ORC_VAR_D3] = d3;
-  ex->arrays[ORC_VAR_S1] = (void *) s1;
-
-  func = c->exec;
-  func (ex);
-}
-#endif
-
-
-/* video_convert_orc_putline_Y444 */
-#ifdef DISABLE_ORC
-void
-video_convert_orc_putline_Y444 (guint8 * ORC_RESTRICT d1,
-    guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3,
-    const guint8 * ORC_RESTRICT s1, int n)
-{
-  int i;
-  orc_int8 *ORC_RESTRICT ptr0;
-  orc_int8 *ORC_RESTRICT ptr1;
-  orc_int8 *ORC_RESTRICT ptr2;
-  const orc_union32 *ORC_RESTRICT ptr4;
-  orc_union32 var34;
-  orc_int8 var35;
-  orc_int8 var36;
-  orc_int8 var37;
-  orc_union16 var38;
-  orc_union16 var39;
-
-  ptr0 = (orc_int8 *) d1;
-  ptr1 = (orc_int8 *) d2;
-  ptr2 = (orc_int8 *) d3;
-  ptr4 = (orc_union32 *) s1;
-
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadl */
-    var34 = ptr4[i];
-    /* 1: splitlw */
-    {
-      orc_union32 _src;
-      _src.i = var34.i;
-      var38.i = _src.x2[1];
-      var39.i = _src.x2[0];
-    }
-    /* 2: splitwb */
-    {
-      orc_union16 _src;
-      _src.i = var38.i;
-      var35 = _src.x2[1];
-      var36 = _src.x2[0];
-    }
-    /* 3: storeb */
-    ptr2[i] = var35;
-    /* 4: storeb */
-    ptr1[i] = var36;
-    /* 5: select1wb */
-    {
-      orc_union16 _src;
-      _src.i = var39.i;
-      var37 = _src.x2[1];
-    }
-    /* 6: storeb */
-    ptr0[i] = var37;
-  }
-
-}
-
-#else
-static void
-_backup_video_convert_orc_putline_Y444 (OrcExecutor * ORC_RESTRICT ex)
-{
-  int i;
-  int n = ex->n;
-  orc_int8 *ORC_RESTRICT ptr0;
-  orc_int8 *ORC_RESTRICT ptr1;
-  orc_int8 *ORC_RESTRICT ptr2;
-  const orc_union32 *ORC_RESTRICT ptr4;
-  orc_union32 var34;
-  orc_int8 var35;
-  orc_int8 var36;
-  orc_int8 var37;
-  orc_union16 var38;
-  orc_union16 var39;
-
-  ptr0 = (orc_int8 *) ex->arrays[0];
-  ptr1 = (orc_int8 *) ex->arrays[1];
-  ptr2 = (orc_int8 *) ex->arrays[2];
-  ptr4 = (orc_union32 *) ex->arrays[4];
-
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadl */
-    var34 = ptr4[i];
-    /* 1: splitlw */
-    {
-      orc_union32 _src;
-      _src.i = var34.i;
-      var38.i = _src.x2[1];
-      var39.i = _src.x2[0];
-    }
-    /* 2: splitwb */
-    {
-      orc_union16 _src;
-      _src.i = var38.i;
-      var35 = _src.x2[1];
-      var36 = _src.x2[0];
-    }
-    /* 3: storeb */
-    ptr2[i] = var35;
-    /* 4: storeb */
-    ptr1[i] = var36;
-    /* 5: select1wb */
-    {
-      orc_union16 _src;
-      _src.i = var39.i;
-      var37 = _src.x2[1];
-    }
-    /* 6: storeb */
-    ptr0[i] = var37;
-  }
-
-}
-
-void
-video_convert_orc_putline_Y444 (guint8 * ORC_RESTRICT d1,
-    guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3,
-    const guint8 * ORC_RESTRICT s1, int n)
-{
-  OrcExecutor _ex, *ex = &_ex;
-  static volatile int p_inited = 0;
-  static OrcCode *c = 0;
-  void (*func) (OrcExecutor *);
-
-  if (!p_inited) {
-    orc_once_mutex_lock ();
-    if (!p_inited) {
-      OrcProgram *p;
-
-#if 1
-      static const orc_uint8 bc[] = {
-        1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
-        95, 111, 114, 99, 95, 112, 117, 116, 108, 105, 110, 101, 95, 89, 52, 52,
-        52, 11, 1, 1, 11, 1, 1, 11, 1, 1, 12, 4, 4, 20, 2, 20,
-        2, 198, 33, 32, 4, 199, 2, 1, 33, 189, 0, 32, 2, 0,
-      };
-      p = orc_program_new_from_static_bytecode (bc);
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_putline_Y444);
-#else
-      p = orc_program_new ();
-      orc_program_set_name (p, "video_convert_orc_putline_Y444");
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_putline_Y444);
-      orc_program_add_destination (p, 1, "d1");
-      orc_program_add_destination (p, 1, "d2");
-      orc_program_add_destination (p, 1, "d3");
-      orc_program_add_source (p, 4, "s1");
-      orc_program_add_temporary (p, 2, "t1");
-      orc_program_add_temporary (p, 2, "t2");
-
-      orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T2,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1,
-          ORC_VAR_D1, ORC_VAR_D1);
-#endif
-
-      orc_program_compile (p);
-      c = orc_program_take_code (p);
-      orc_program_free (p);
-    }
-    p_inited = TRUE;
-    orc_once_mutex_unlock ();
-  }
-  ex->arrays[ORC_VAR_A2] = c;
-  ex->program = 0;
-
-  ex->n = n;
-  ex->arrays[ORC_VAR_D1] = d1;
-  ex->arrays[ORC_VAR_D2] = d2;
-  ex->arrays[ORC_VAR_D3] = d3;
-  ex->arrays[ORC_VAR_S1] = (void *) s1;
-
-  func = c->exec;
-  func (ex);
-}
-#endif
-
-
-/* video_convert_orc_putline_Y800 */
-#ifdef DISABLE_ORC
-void
-video_convert_orc_putline_Y800 (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n)
-{
-  int i;
-  orc_int8 *ORC_RESTRICT ptr0;
-  const orc_union32 *ORC_RESTRICT ptr4;
-  orc_union32 var33;
-  orc_int8 var34;
-  orc_union16 var35;
-
-  ptr0 = (orc_int8 *) d1;
-  ptr4 = (orc_union32 *) s1;
-
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadl */
-    var33 = ptr4[i];
-    /* 1: select0lw */
-    {
-      orc_union32 _src;
-      _src.i = var33.i;
-      var35.i = _src.x2[0];
-    }
-    /* 2: select1wb */
-    {
-      orc_union16 _src;
-      _src.i = var35.i;
-      var34 = _src.x2[1];
-    }
-    /* 3: storeb */
-    ptr0[i] = var34;
-  }
-
-}
-
-#else
-static void
-_backup_video_convert_orc_putline_Y800 (OrcExecutor * ORC_RESTRICT ex)
-{
-  int i;
-  int n = ex->n;
-  orc_int8 *ORC_RESTRICT ptr0;
-  const orc_union32 *ORC_RESTRICT ptr4;
-  orc_union32 var33;
-  orc_int8 var34;
-  orc_union16 var35;
-
-  ptr0 = (orc_int8 *) ex->arrays[0];
-  ptr4 = (orc_union32 *) ex->arrays[4];
-
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadl */
-    var33 = ptr4[i];
-    /* 1: select0lw */
-    {
-      orc_union32 _src;
-      _src.i = var33.i;
-      var35.i = _src.x2[0];
-    }
-    /* 2: select1wb */
-    {
-      orc_union16 _src;
-      _src.i = var35.i;
-      var34 = _src.x2[1];
-    }
-    /* 3: storeb */
-    ptr0[i] = var34;
-  }
-
-}
-
-void
-video_convert_orc_putline_Y800 (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n)
-{
-  OrcExecutor _ex, *ex = &_ex;
-  static volatile int p_inited = 0;
-  static OrcCode *c = 0;
-  void (*func) (OrcExecutor *);
-
-  if (!p_inited) {
-    orc_once_mutex_lock ();
-    if (!p_inited) {
-      OrcProgram *p;
-
-#if 1
-      static const orc_uint8 bc[] = {
-        1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
-        95, 111, 114, 99, 95, 112, 117, 116, 108, 105, 110, 101, 95, 89, 56, 48,
-        48, 11, 1, 1, 12, 4, 4, 20, 2, 190, 32, 4, 189, 0, 32, 2,
-        0,
-      };
-      p = orc_program_new_from_static_bytecode (bc);
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_putline_Y800);
-#else
-      p = orc_program_new ();
-      orc_program_set_name (p, "video_convert_orc_putline_Y800");
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_putline_Y800);
-      orc_program_add_destination (p, 1, "d1");
-      orc_program_add_source (p, 4, "s1");
-      orc_program_add_temporary (p, 2, "t1");
-
-      orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T1, ORC_VAR_S1,
-          ORC_VAR_D1, ORC_VAR_D1);
-      orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1,
-          ORC_VAR_D1, ORC_VAR_D1);
-#endif
-
-      orc_program_compile (p);
-      c = orc_program_take_code (p);
-      orc_program_free (p);
-    }
-    p_inited = TRUE;
-    orc_once_mutex_unlock ();
-  }
-  ex->arrays[ORC_VAR_A2] = c;
-  ex->program = 0;
-
-  ex->n = n;
-  ex->arrays[ORC_VAR_D1] = d1;
-  ex->arrays[ORC_VAR_S1] = (void *) s1;
-
-  func = c->exec;
-  func (ex);
-}
-#endif
-
-
-/* video_convert_orc_putline_Y16 */
-#ifdef DISABLE_ORC
-void
-video_convert_orc_putline_Y16 (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n)
-{
-  int i;
-  orc_union16 *ORC_RESTRICT ptr0;
-  const orc_union32 *ORC_RESTRICT ptr4;
-  orc_union32 var34;
-  orc_union16 var35;
-  orc_union16 var36;
-  orc_int8 var37;
-  orc_union16 var38;
-
-  ptr0 = (orc_union16 *) d1;
-  ptr4 = (orc_union32 *) s1;
-
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadl */
-    var34 = ptr4[i];
-    /* 1: select0lw */
-    {
-      orc_union32 _src;
-      _src.i = var34.i;
-      var36.i = _src.x2[0];
-    }
-    /* 2: select1wb */
-    {
-      orc_union16 _src;
-      _src.i = var36.i;
-      var37 = _src.x2[1];
-    }
-    /* 3: convubw */
-    var38.i = (orc_uint8) var37;
-    /* 4: shlw */
-    var35.i = var38.i << 8;
-    /* 5: storew */
-    ptr0[i] = var35;
-  }
-
-}
-
-#else
-static void
-_backup_video_convert_orc_putline_Y16 (OrcExecutor * ORC_RESTRICT ex)
-{
-  int i;
-  int n = ex->n;
-  orc_union16 *ORC_RESTRICT ptr0;
-  const orc_union32 *ORC_RESTRICT ptr4;
-  orc_union32 var34;
-  orc_union16 var35;
-  orc_union16 var36;
-  orc_int8 var37;
-  orc_union16 var38;
-
-  ptr0 = (orc_union16 *) ex->arrays[0];
-  ptr4 = (orc_union32 *) ex->arrays[4];
-
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadl */
-    var34 = ptr4[i];
-    /* 1: select0lw */
-    {
-      orc_union32 _src;
-      _src.i = var34.i;
-      var36.i = _src.x2[0];
-    }
-    /* 2: select1wb */
-    {
-      orc_union16 _src;
-      _src.i = var36.i;
-      var37 = _src.x2[1];
-    }
-    /* 3: convubw */
-    var38.i = (orc_uint8) var37;
-    /* 4: shlw */
-    var35.i = var38.i << 8;
-    /* 5: storew */
-    ptr0[i] = var35;
-  }
-
-}
-
-void
-video_convert_orc_putline_Y16 (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n)
-{
-  OrcExecutor _ex, *ex = &_ex;
-  static volatile int p_inited = 0;
-  static OrcCode *c = 0;
-  void (*func) (OrcExecutor *);
-
-  if (!p_inited) {
-    orc_once_mutex_lock ();
-    if (!p_inited) {
-      OrcProgram *p;
-
-#if 1
-      static const orc_uint8 bc[] = {
-        1, 9, 29, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
-        95, 111, 114, 99, 95, 112, 117, 116, 108, 105, 110, 101, 95, 89, 49, 54,
-        11, 2, 2, 12, 4, 4, 14, 4, 8, 0, 0, 0, 20, 2, 20, 1,
-        190, 32, 4, 189, 33, 32, 150, 32, 33, 93, 0, 32, 16, 2, 0,
-      };
-      p = orc_program_new_from_static_bytecode (bc);
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_putline_Y16);
-#else
-      p = orc_program_new ();
-      orc_program_set_name (p, "video_convert_orc_putline_Y16");
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_putline_Y16);
-      orc_program_add_destination (p, 2, "d1");
-      orc_program_add_source (p, 4, "s1");
-      orc_program_add_constant (p, 4, 0x00000008, "c1");
-      orc_program_add_temporary (p, 2, "t1");
-      orc_program_add_temporary (p, 1, "t2");
-
-      orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T1, ORC_VAR_S1,
-          ORC_VAR_D1, ORC_VAR_D1);
-      orc_program_append_2 (p, "select1wb", 0, ORC_VAR_T2, ORC_VAR_T1,
-          ORC_VAR_D1, ORC_VAR_D1);
-      orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "shlw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C1,
-          ORC_VAR_D1);
-#endif
-
-      orc_program_compile (p);
-      c = orc_program_take_code (p);
-      orc_program_free (p);
-    }
-    p_inited = TRUE;
-    orc_once_mutex_unlock ();
-  }
-  ex->arrays[ORC_VAR_A2] = c;
-  ex->program = 0;
-
-  ex->n = n;
-  ex->arrays[ORC_VAR_D1] = d1;
-  ex->arrays[ORC_VAR_S1] = (void *) s1;
-
-  func = c->exec;
-  func (ex);
-}
-#endif
-
-
-/* video_convert_orc_putline_BGRA */
-#ifdef DISABLE_ORC
-void
-video_convert_orc_putline_BGRA (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n)
-{
-  int i;
-  orc_union32 *ORC_RESTRICT ptr0;
-  const orc_union32 *ORC_RESTRICT ptr4;
-  orc_union32 var32;
-  orc_union32 var33;
-
-  ptr0 = (orc_union32 *) d1;
-  ptr4 = (orc_union32 *) s1;
-
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadl */
-    var32 = ptr4[i];
-    /* 1: swapl */
-    var33.i = ORC_SWAP_L (var32.i);
-    /* 2: storel */
-    ptr0[i] = var33;
-  }
-
-}
-
-#else
-static void
-_backup_video_convert_orc_putline_BGRA (OrcExecutor * ORC_RESTRICT ex)
-{
-  int i;
-  int n = ex->n;
-  orc_union32 *ORC_RESTRICT ptr0;
-  const orc_union32 *ORC_RESTRICT ptr4;
-  orc_union32 var32;
-  orc_union32 var33;
-
-  ptr0 = (orc_union32 *) ex->arrays[0];
-  ptr4 = (orc_union32 *) ex->arrays[4];
-
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadl */
-    var32 = ptr4[i];
-    /* 1: swapl */
-    var33.i = ORC_SWAP_L (var32.i);
-    /* 2: storel */
-    ptr0[i] = var33;
-  }
-
-}
-
-void
-video_convert_orc_putline_BGRA (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n)
-{
-  OrcExecutor _ex, *ex = &_ex;
-  static volatile int p_inited = 0;
-  static OrcCode *c = 0;
-  void (*func) (OrcExecutor *);
-
-  if (!p_inited) {
-    orc_once_mutex_lock ();
-    if (!p_inited) {
-      OrcProgram *p;
-
-#if 1
-      static const orc_uint8 bc[] = {
-        1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
-        95, 111, 114, 99, 95, 112, 117, 116, 108, 105, 110, 101, 95, 66, 71, 82,
-        65, 11, 4, 4, 12, 4, 4, 184, 0, 4, 2, 0,
-      };
-      p = orc_program_new_from_static_bytecode (bc);
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_putline_BGRA);
-#else
-      p = orc_program_new ();
-      orc_program_set_name (p, "video_convert_orc_putline_BGRA");
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_putline_BGRA);
-      orc_program_add_destination (p, 4, "d1");
-      orc_program_add_source (p, 4, "s1");
-
-      orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1,
-          ORC_VAR_D1);
-#endif
-
-      orc_program_compile (p);
-      c = orc_program_take_code (p);
-      orc_program_free (p);
-    }
-    p_inited = TRUE;
-    orc_once_mutex_unlock ();
-  }
-  ex->arrays[ORC_VAR_A2] = c;
-  ex->program = 0;
-
-  ex->n = n;
-  ex->arrays[ORC_VAR_D1] = d1;
-  ex->arrays[ORC_VAR_S1] = (void *) s1;
-
-  func = c->exec;
-  func (ex);
-}
-#endif
-
-
-/* video_convert_orc_putline_ABGR */
-#ifdef DISABLE_ORC
-void
-video_convert_orc_putline_ABGR (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n)
-{
-  int i;
-  orc_union32 *ORC_RESTRICT ptr0;
-  const orc_union32 *ORC_RESTRICT ptr4;
-  orc_union32 var40;
-  orc_union32 var41;
-  orc_union16 var42;
-  orc_union16 var43;
-  orc_int8 var44;
-  orc_int8 var45;
-  orc_int8 var46;
-  orc_int8 var47;
-  orc_union16 var48;
-  orc_union16 var49;
-
-  ptr0 = (orc_union32 *) d1;
-  ptr4 = (orc_union32 *) s1;
-
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadl */
-    var40 = ptr4[i];
-    /* 1: splitlw */
-    {
-      orc_union32 _src;
-      _src.i = var40.i;
-      var42.i = _src.x2[1];
-      var43.i = _src.x2[0];
-    }
-    /* 2: splitwb */
-    {
-      orc_union16 _src;
-      _src.i = var42.i;
-      var44 = _src.x2[1];
-      var45 = _src.x2[0];
-    }
-    /* 3: splitwb */
-    {
-      orc_union16 _src;
-      _src.i = var43.i;
-      var46 = _src.x2[1];
-      var47 = _src.x2[0];
-    }
-    /* 4: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var47;
-      _dest.x2[1] = var44;
-      var48.i = _dest.i;
-    }
-    /* 5: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var45;
-      _dest.x2[1] = var46;
-      var49.i = _dest.i;
-    }
-    /* 6: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var48.i;
-      _dest.x2[1] = var49.i;
-      var41.i = _dest.i;
-    }
-    /* 7: storel */
-    ptr0[i] = var41;
-  }
-
-}
-
-#else
-static void
-_backup_video_convert_orc_putline_ABGR (OrcExecutor * ORC_RESTRICT ex)
-{
-  int i;
-  int n = ex->n;
-  orc_union32 *ORC_RESTRICT ptr0;
-  const orc_union32 *ORC_RESTRICT ptr4;
-  orc_union32 var40;
-  orc_union32 var41;
-  orc_union16 var42;
-  orc_union16 var43;
-  orc_int8 var44;
-  orc_int8 var45;
-  orc_int8 var46;
-  orc_int8 var47;
-  orc_union16 var48;
-  orc_union16 var49;
-
-  ptr0 = (orc_union32 *) ex->arrays[0];
-  ptr4 = (orc_union32 *) ex->arrays[4];
-
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadl */
-    var40 = ptr4[i];
-    /* 1: splitlw */
-    {
-      orc_union32 _src;
-      _src.i = var40.i;
-      var42.i = _src.x2[1];
-      var43.i = _src.x2[0];
-    }
-    /* 2: splitwb */
-    {
-      orc_union16 _src;
-      _src.i = var42.i;
-      var44 = _src.x2[1];
-      var45 = _src.x2[0];
-    }
-    /* 3: splitwb */
-    {
-      orc_union16 _src;
-      _src.i = var43.i;
-      var46 = _src.x2[1];
-      var47 = _src.x2[0];
-    }
-    /* 4: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var47;
-      _dest.x2[1] = var44;
-      var48.i = _dest.i;
-    }
-    /* 5: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var45;
-      _dest.x2[1] = var46;
-      var49.i = _dest.i;
-    }
-    /* 6: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var48.i;
-      _dest.x2[1] = var49.i;
-      var41.i = _dest.i;
-    }
-    /* 7: storel */
-    ptr0[i] = var41;
-  }
-
-}
-
-void
-video_convert_orc_putline_ABGR (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n)
-{
-  OrcExecutor _ex, *ex = &_ex;
-  static volatile int p_inited = 0;
-  static OrcCode *c = 0;
-  void (*func) (OrcExecutor *);
-
-  if (!p_inited) {
-    orc_once_mutex_lock ();
-    if (!p_inited) {
-      OrcProgram *p;
-
-#if 1
-      static const orc_uint8 bc[] = {
-        1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
-        95, 111, 114, 99, 95, 112, 117, 116, 108, 105, 110, 101, 95, 65, 66, 71,
-        82, 11, 4, 4, 12, 4, 4, 20, 1, 20, 1, 20, 1, 20, 1, 20,
-        2, 20, 2, 20, 2, 20, 2, 198, 39, 38, 4, 199, 35, 34, 39, 199,
-        33, 32, 38, 196, 37, 32, 35, 196, 36, 34, 33, 195, 0, 37, 36, 2,
-        0,
-      };
-      p = orc_program_new_from_static_bytecode (bc);
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_putline_ABGR);
-#else
-      p = orc_program_new ();
-      orc_program_set_name (p, "video_convert_orc_putline_ABGR");
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_putline_ABGR);
-      orc_program_add_destination (p, 4, "d1");
-      orc_program_add_source (p, 4, "s1");
-      orc_program_add_temporary (p, 1, "t1");
-      orc_program_add_temporary (p, 1, "t2");
-      orc_program_add_temporary (p, 1, "t3");
-      orc_program_add_temporary (p, 1, "t4");
-      orc_program_add_temporary (p, 2, "t5");
-      orc_program_add_temporary (p, 2, "t6");
-      orc_program_add_temporary (p, 2, "t7");
-      orc_program_add_temporary (p, 2, "t8");
-
-      orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_S1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T8,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T7,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_T4,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_T2,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T6, ORC_VAR_T5,
-          ORC_VAR_D1);
-#endif
-
-      orc_program_compile (p);
-      c = orc_program_take_code (p);
-      orc_program_free (p);
-    }
-    p_inited = TRUE;
-    orc_once_mutex_unlock ();
-  }
-  ex->arrays[ORC_VAR_A2] = c;
-  ex->program = 0;
-
-  ex->n = n;
-  ex->arrays[ORC_VAR_D1] = d1;
-  ex->arrays[ORC_VAR_S1] = (void *) s1;
-
-  func = c->exec;
-  func (ex);
-}
-#endif
-
-
-/* video_convert_orc_putline_RGBA */
-#ifdef DISABLE_ORC
-void
-video_convert_orc_putline_RGBA (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n)
-{
-  int i;
-  orc_union32 *ORC_RESTRICT ptr0;
-  const orc_union32 *ORC_RESTRICT ptr4;
-  orc_union32 var40;
-  orc_union32 var41;
-  orc_union16 var42;
-  orc_union16 var43;
-  orc_int8 var44;
-  orc_int8 var45;
-  orc_int8 var46;
-  orc_int8 var47;
-  orc_union16 var48;
-  orc_union16 var49;
-
-  ptr0 = (orc_union32 *) d1;
-  ptr4 = (orc_union32 *) s1;
-
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadl */
-    var40 = ptr4[i];
-    /* 1: splitlw */
-    {
-      orc_union32 _src;
-      _src.i = var40.i;
-      var42.i = _src.x2[1];
-      var43.i = _src.x2[0];
-    }
-    /* 2: splitwb */
-    {
-      orc_union16 _src;
-      _src.i = var42.i;
-      var44 = _src.x2[1];
-      var45 = _src.x2[0];
-    }
-    /* 3: splitwb */
-    {
-      orc_union16 _src;
-      _src.i = var43.i;
-      var46 = _src.x2[1];
-      var47 = _src.x2[0];
-    }
-    /* 4: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var44;
-      _dest.x2[1] = var47;
-      var48.i = _dest.i;
-    }
-    /* 5: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var46;
-      _dest.x2[1] = var45;
-      var49.i = _dest.i;
-    }
-    /* 6: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var49.i;
-      _dest.x2[1] = var48.i;
-      var41.i = _dest.i;
-    }
-    /* 7: storel */
-    ptr0[i] = var41;
-  }
-
-}
-
-#else
-static void
-_backup_video_convert_orc_putline_RGBA (OrcExecutor * ORC_RESTRICT ex)
-{
-  int i;
-  int n = ex->n;
-  orc_union32 *ORC_RESTRICT ptr0;
-  const orc_union32 *ORC_RESTRICT ptr4;
-  orc_union32 var40;
-  orc_union32 var41;
-  orc_union16 var42;
-  orc_union16 var43;
-  orc_int8 var44;
-  orc_int8 var45;
-  orc_int8 var46;
-  orc_int8 var47;
-  orc_union16 var48;
-  orc_union16 var49;
-
-  ptr0 = (orc_union32 *) ex->arrays[0];
-  ptr4 = (orc_union32 *) ex->arrays[4];
-
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadl */
-    var40 = ptr4[i];
-    /* 1: splitlw */
-    {
-      orc_union32 _src;
-      _src.i = var40.i;
-      var42.i = _src.x2[1];
-      var43.i = _src.x2[0];
-    }
-    /* 2: splitwb */
-    {
-      orc_union16 _src;
-      _src.i = var42.i;
-      var44 = _src.x2[1];
-      var45 = _src.x2[0];
-    }
-    /* 3: splitwb */
-    {
-      orc_union16 _src;
-      _src.i = var43.i;
-      var46 = _src.x2[1];
-      var47 = _src.x2[0];
-    }
-    /* 4: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var44;
-      _dest.x2[1] = var47;
-      var48.i = _dest.i;
-    }
-    /* 5: mergebw */
-    {
-      orc_union16 _dest;
-      _dest.x2[0] = var46;
-      _dest.x2[1] = var45;
-      var49.i = _dest.i;
-    }
-    /* 6: mergewl */
-    {
-      orc_union32 _dest;
-      _dest.x2[0] = var49.i;
-      _dest.x2[1] = var48.i;
-      var41.i = _dest.i;
-    }
-    /* 7: storel */
-    ptr0[i] = var41;
-  }
-
-}
-
-void
-video_convert_orc_putline_RGBA (guint8 * ORC_RESTRICT d1,
-    const guint8 * ORC_RESTRICT s1, int n)
-{
-  OrcExecutor _ex, *ex = &_ex;
-  static volatile int p_inited = 0;
-  static OrcCode *c = 0;
-  void (*func) (OrcExecutor *);
-
-  if (!p_inited) {
-    orc_once_mutex_lock ();
-    if (!p_inited) {
-      OrcProgram *p;
-
-#if 1
-      static const orc_uint8 bc[] = {
-        1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
-        95, 111, 114, 99, 95, 112, 117, 116, 108, 105, 110, 101, 95, 82, 71, 66,
-        65, 11, 4, 4, 12, 4, 4, 20, 1, 20, 1, 20, 1, 20, 1, 20,
-        2, 20, 2, 20, 2, 20, 2, 198, 39, 38, 4, 199, 35, 34, 39, 199,
-        33, 32, 38, 196, 37, 35, 32, 196, 36, 33, 34, 195, 0, 36, 37, 2,
-        0,
-      };
-      p = orc_program_new_from_static_bytecode (bc);
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_putline_RGBA);
-#else
-      p = orc_program_new ();
-      orc_program_set_name (p, "video_convert_orc_putline_RGBA");
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_putline_RGBA);
-      orc_program_add_destination (p, 4, "d1");
-      orc_program_add_source (p, 4, "s1");
-      orc_program_add_temporary (p, 1, "t1");
-      orc_program_add_temporary (p, 1, "t2");
-      orc_program_add_temporary (p, 1, "t3");
-      orc_program_add_temporary (p, 1, "t4");
-      orc_program_add_temporary (p, 2, "t5");
-      orc_program_add_temporary (p, 2, "t6");
-      orc_program_add_temporary (p, 2, "t7");
-      orc_program_add_temporary (p, 2, "t8");
-
-      orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_S1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T8,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T7,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T6, ORC_VAR_T4, ORC_VAR_T1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_T3,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T5, ORC_VAR_T6,
-          ORC_VAR_D1);
-#endif
-
-      orc_program_compile (p);
-      c = orc_program_take_code (p);
-      orc_program_free (p);
-    }
-    p_inited = TRUE;
-    orc_once_mutex_unlock ();
-  }
-  ex->arrays[ORC_VAR_A2] = c;
-  ex->program = 0;
-
-  ex->n = n;
-  ex->arrays[ORC_VAR_D1] = d1;
-  ex->arrays[ORC_VAR_S1] = (void *) s1;
-
-  func = c->exec;
-  func (ex);
-}
-#endif
-
-
-/* video_convert_orc_putline_NV12 */
-#ifdef DISABLE_ORC
-void
-video_convert_orc_putline_NV12 (guint8 * ORC_RESTRICT d1,
-    guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, int n)
-{
-  int i;
-  orc_union16 *ORC_RESTRICT ptr0;
-  orc_union16 *ORC_RESTRICT ptr1;
-  const orc_union64 *ORC_RESTRICT ptr4;
-  orc_union64 var36;
-  orc_union16 var37;
-  orc_union16 var38;
-  orc_union32 var39;
-  orc_union32 var40;
-  orc_union16 var41;
-  orc_union16 var42;
-
-  ptr0 = (orc_union16 *) d1;
-  ptr1 = (orc_union16 *) d2;
-  ptr4 = (orc_union64 *) s1;
-
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadq */
-    var36 = ptr4[i];
-    /* 1: splitlw */
-    {
-      orc_union32 _src;
-      _src.i = var36.x2[0];
-      var39.x2[0] = _src.x2[1];
-      var40.x2[0] = _src.x2[0];
-    }
-    {
-      orc_union32 _src;
-      _src.i = var36.x2[1];
-      var39.x2[1] = _src.x2[1];
-      var40.x2[1] = _src.x2[0];
-    }
-    /* 2: select1wb */
-    {
-      orc_union16 _src;
-      _src.i = var40.x2[0];
-      var37.x2[0] = _src.x2[1];
-    }
-    {
-      orc_union16 _src;
-      _src.i = var40.x2[1];
-      var37.x2[1] = _src.x2[1];
-    }
-    /* 3: storew */
-    ptr0[i] = var37;
-    /* 4: splitlw */
-    {
-      orc_union32 _src;
-      _src.i = var39.i;
-      var41.i = _src.x2[1];
-      var42.i = _src.x2[0];
-    }
-    /* 5: avgub */
-    var38.x2[0] = ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
-    var38.x2[1] = ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
-    /* 6: storew */
-    ptr1[i] = var38;
-  }
-
-}
-
-#else
-static void
-_backup_video_convert_orc_putline_NV12 (OrcExecutor * ORC_RESTRICT ex)
-{
-  int i;
-  int n = ex->n;
-  orc_union16 *ORC_RESTRICT ptr0;
-  orc_union16 *ORC_RESTRICT ptr1;
-  const orc_union64 *ORC_RESTRICT ptr4;
-  orc_union64 var36;
-  orc_union16 var37;
-  orc_union16 var38;
-  orc_union32 var39;
-  orc_union32 var40;
-  orc_union16 var41;
-  orc_union16 var42;
-
-  ptr0 = (orc_union16 *) ex->arrays[0];
-  ptr1 = (orc_union16 *) ex->arrays[1];
-  ptr4 = (orc_union64 *) ex->arrays[4];
-
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadq */
-    var36 = ptr4[i];
-    /* 1: splitlw */
-    {
-      orc_union32 _src;
-      _src.i = var36.x2[0];
-      var39.x2[0] = _src.x2[1];
-      var40.x2[0] = _src.x2[0];
-    }
-    {
-      orc_union32 _src;
-      _src.i = var36.x2[1];
-      var39.x2[1] = _src.x2[1];
-      var40.x2[1] = _src.x2[0];
-    }
-    /* 2: select1wb */
-    {
-      orc_union16 _src;
-      _src.i = var40.x2[0];
-      var37.x2[0] = _src.x2[1];
-    }
-    {
-      orc_union16 _src;
-      _src.i = var40.x2[1];
-      var37.x2[1] = _src.x2[1];
-    }
-    /* 3: storew */
-    ptr0[i] = var37;
-    /* 4: splitlw */
-    {
-      orc_union32 _src;
-      _src.i = var39.i;
-      var41.i = _src.x2[1];
-      var42.i = _src.x2[0];
-    }
-    /* 5: avgub */
-    var38.x2[0] = ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
-    var38.x2[1] = ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
-    /* 6: storew */
-    ptr1[i] = var38;
-  }
-
-}
-
-void
-video_convert_orc_putline_NV12 (guint8 * ORC_RESTRICT d1,
-    guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, int n)
-{
-  OrcExecutor _ex, *ex = &_ex;
-  static volatile int p_inited = 0;
-  static OrcCode *c = 0;
-  void (*func) (OrcExecutor *);
-
-  if (!p_inited) {
-    orc_once_mutex_lock ();
-    if (!p_inited) {
-      OrcProgram *p;
-
-#if 1
-      static const orc_uint8 bc[] = {
-        1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
-        95, 111, 114, 99, 95, 112, 117, 116, 108, 105, 110, 101, 95, 78, 86, 49,
-        50, 11, 2, 2, 11, 2, 2, 12, 8, 8, 20, 4, 20, 4, 20, 2,
-        20, 2, 21, 1, 198, 33, 32, 4, 21, 1, 189, 0, 32, 198, 34, 35,
-        33, 21, 1, 39, 1, 34, 35, 2, 0,
-      };
-      p = orc_program_new_from_static_bytecode (bc);
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_putline_NV12);
-#else
-      p = orc_program_new ();
-      orc_program_set_name (p, "video_convert_orc_putline_NV12");
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_putline_NV12);
-      orc_program_add_destination (p, 2, "d1");
-      orc_program_add_destination (p, 2, "d2");
-      orc_program_add_source (p, 8, "s1");
-      orc_program_add_temporary (p, 4, "t1");
-      orc_program_add_temporary (p, 4, "t2");
-      orc_program_add_temporary (p, 2, "t3");
-      orc_program_add_temporary (p, 2, "t4");
-
-      orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1,
-          ORC_VAR_D1, ORC_VAR_D1);
-      orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T2,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "avgub", 1, ORC_VAR_D2, ORC_VAR_T3, ORC_VAR_T4,
-          ORC_VAR_D1);
-#endif
-
-      orc_program_compile (p);
-      c = orc_program_take_code (p);
-      orc_program_free (p);
-    }
-    p_inited = TRUE;
-    orc_once_mutex_unlock ();
-  }
-  ex->arrays[ORC_VAR_A2] = c;
-  ex->program = 0;
-
-  ex->n = n;
-  ex->arrays[ORC_VAR_D1] = d1;
-  ex->arrays[ORC_VAR_D2] = d2;
-  ex->arrays[ORC_VAR_S1] = (void *) s1;
-
-  func = c->exec;
-  func (ex);
-}
-#endif
-
-
-/* video_convert_orc_putline_NV21 */
-#ifdef DISABLE_ORC
-void
-video_convert_orc_putline_NV21 (guint8 * ORC_RESTRICT d1,
-    guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, int n)
-{
-  int i;
-  orc_union16 *ORC_RESTRICT ptr0;
-  orc_union16 *ORC_RESTRICT ptr1;
-  const orc_union64 *ORC_RESTRICT ptr4;
-  orc_union64 var37;
-  orc_union16 var38;
-  orc_union16 var39;
-  orc_union32 var40;
-  orc_union32 var41;
-  orc_union16 var42;
-  orc_union16 var43;
-  orc_union16 var44;
-
-  ptr0 = (orc_union16 *) d1;
-  ptr1 = (orc_union16 *) d2;
-  ptr4 = (orc_union64 *) s1;
-
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadq */
-    var37 = ptr4[i];
-    /* 1: splitlw */
-    {
-      orc_union32 _src;
-      _src.i = var37.x2[0];
-      var40.x2[0] = _src.x2[1];
-      var41.x2[0] = _src.x2[0];
-    }
-    {
-      orc_union32 _src;
-      _src.i = var37.x2[1];
-      var40.x2[1] = _src.x2[1];
-      var41.x2[1] = _src.x2[0];
-    }
-    /* 2: select1wb */
-    {
-      orc_union16 _src;
-      _src.i = var41.x2[0];
-      var38.x2[0] = _src.x2[1];
-    }
-    {
-      orc_union16 _src;
-      _src.i = var41.x2[1];
-      var38.x2[1] = _src.x2[1];
-    }
-    /* 3: storew */
-    ptr0[i] = var38;
-    /* 4: splitlw */
-    {
-      orc_union32 _src;
-      _src.i = var40.i;
-      var42.i = _src.x2[1];
-      var43.i = _src.x2[0];
-    }
-    /* 5: avgub */
-    var44.x2[0] = ((orc_uint8) var42.x2[0] + (orc_uint8) var43.x2[0] + 1) >> 1;
-    var44.x2[1] = ((orc_uint8) var42.x2[1] + (orc_uint8) var43.x2[1] + 1) >> 1;
-    /* 6: swapw */
-    var39.i = ORC_SWAP_W (var44.i);
-    /* 7: storew */
-    ptr1[i] = var39;
-  }
-
-}
-
-#else
-static void
-_backup_video_convert_orc_putline_NV21 (OrcExecutor * ORC_RESTRICT ex)
-{
-  int i;
-  int n = ex->n;
-  orc_union16 *ORC_RESTRICT ptr0;
-  orc_union16 *ORC_RESTRICT ptr1;
-  const orc_union64 *ORC_RESTRICT ptr4;
-  orc_union64 var37;
-  orc_union16 var38;
-  orc_union16 var39;
-  orc_union32 var40;
-  orc_union32 var41;
-  orc_union16 var42;
-  orc_union16 var43;
-  orc_union16 var44;
-
-  ptr0 = (orc_union16 *) ex->arrays[0];
-  ptr1 = (orc_union16 *) ex->arrays[1];
-  ptr4 = (orc_union64 *) ex->arrays[4];
-
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadq */
-    var37 = ptr4[i];
-    /* 1: splitlw */
-    {
-      orc_union32 _src;
-      _src.i = var37.x2[0];
-      var40.x2[0] = _src.x2[1];
-      var41.x2[0] = _src.x2[0];
-    }
-    {
-      orc_union32 _src;
-      _src.i = var37.x2[1];
-      var40.x2[1] = _src.x2[1];
-      var41.x2[1] = _src.x2[0];
-    }
-    /* 2: select1wb */
-    {
-      orc_union16 _src;
-      _src.i = var41.x2[0];
-      var38.x2[0] = _src.x2[1];
-    }
-    {
-      orc_union16 _src;
-      _src.i = var41.x2[1];
-      var38.x2[1] = _src.x2[1];
-    }
-    /* 3: storew */
-    ptr0[i] = var38;
-    /* 4: splitlw */
-    {
-      orc_union32 _src;
-      _src.i = var40.i;
-      var42.i = _src.x2[1];
-      var43.i = _src.x2[0];
-    }
-    /* 5: avgub */
-    var44.x2[0] = ((orc_uint8) var42.x2[0] + (orc_uint8) var43.x2[0] + 1) >> 1;
-    var44.x2[1] = ((orc_uint8) var42.x2[1] + (orc_uint8) var43.x2[1] + 1) >> 1;
-    /* 6: swapw */
-    var39.i = ORC_SWAP_W (var44.i);
-    /* 7: storew */
-    ptr1[i] = var39;
-  }
-
-}
-
-void
-video_convert_orc_putline_NV21 (guint8 * ORC_RESTRICT d1,
-    guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, int n)
-{
-  OrcExecutor _ex, *ex = &_ex;
-  static volatile int p_inited = 0;
-  static OrcCode *c = 0;
-  void (*func) (OrcExecutor *);
-
-  if (!p_inited) {
-    orc_once_mutex_lock ();
-    if (!p_inited) {
-      OrcProgram *p;
-
-#if 1
-      static const orc_uint8 bc[] = {
-        1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
-        95, 111, 114, 99, 95, 112, 117, 116, 108, 105, 110, 101, 95, 78, 86, 50,
-        49, 11, 2, 2, 11, 2, 2, 12, 8, 8, 20, 4, 20, 4, 20, 2,
-        20, 2, 20, 2, 21, 1, 198, 33, 32, 4, 21, 1, 189, 0, 32, 198,
-        34, 35, 33, 21, 1, 39, 36, 34, 35, 183, 1, 36, 2, 0,
-      };
-      p = orc_program_new_from_static_bytecode (bc);
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_putline_NV21);
-#else
-      p = orc_program_new ();
-      orc_program_set_name (p, "video_convert_orc_putline_NV21");
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_putline_NV21);
-      orc_program_add_destination (p, 2, "d1");
-      orc_program_add_destination (p, 2, "d2");
-      orc_program_add_source (p, 8, "s1");
-      orc_program_add_temporary (p, 4, "t1");
-      orc_program_add_temporary (p, 4, "t2");
-      orc_program_add_temporary (p, 2, "t3");
-      orc_program_add_temporary (p, 2, "t4");
-      orc_program_add_temporary (p, 2, "t5");
-
-      orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1,
-          ORC_VAR_D1, ORC_VAR_D1);
-      orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T2,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "avgub", 1, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_T4,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "swapw", 0, ORC_VAR_D2, ORC_VAR_T5, ORC_VAR_D1,
-          ORC_VAR_D1);
-#endif
-
-      orc_program_compile (p);
-      c = orc_program_take_code (p);
-      orc_program_free (p);
-    }
-    p_inited = TRUE;
-    orc_once_mutex_unlock ();
-  }
-  ex->arrays[ORC_VAR_A2] = c;
-  ex->program = 0;
-
-  ex->n = n;
-  ex->arrays[ORC_VAR_D1] = d1;
-  ex->arrays[ORC_VAR_D2] = d2;
-  ex->arrays[ORC_VAR_S1] = (void *) s1;
-
-  func = c->exec;
-  func (ex);
-}
-#endif
-
-
-/* video_convert_orc_putline_A420 */
-#ifdef DISABLE_ORC
-void
-video_convert_orc_putline_A420 (guint8 * ORC_RESTRICT d1,
-    guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3,
-    guint8 * ORC_RESTRICT d4, const guint8 * ORC_RESTRICT s1, int n)
-{
-  int i;
-  orc_union16 *ORC_RESTRICT ptr0;
-  orc_int8 *ORC_RESTRICT ptr1;
-  orc_int8 *ORC_RESTRICT ptr2;
-  orc_union16 *ORC_RESTRICT ptr3;
-  const orc_union64 *ORC_RESTRICT ptr4;
-  orc_union64 var38;
-  orc_union16 var39;
-  orc_union16 var40;
-  orc_int8 var41;
-  orc_int8 var42;
-  orc_union32 var43;
-  orc_union32 var44;
-  orc_union16 var45;
-  orc_union16 var46;
-  orc_int8 var47;
-  orc_int8 var48;
-  orc_int8 var49;
-  orc_int8 var50;
-
-  ptr0 = (orc_union16 *) d1;
-  ptr1 = (orc_int8 *) d2;
-  ptr2 = (orc_int8 *) d3;
-  ptr3 = (orc_union16 *) d4;
-  ptr4 = (orc_union64 *) s1;
-
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadq */
-    var38 = ptr4[i];
-    /* 1: splitlw */
-    {
-      orc_union32 _src;
-      _src.i = var38.x2[0];
-      var43.x2[0] = _src.x2[1];
-      var44.x2[0] = _src.x2[0];
-    }
-    {
-      orc_union32 _src;
-      _src.i = var38.x2[1];
-      var43.x2[1] = _src.x2[1];
-      var44.x2[1] = _src.x2[0];
-    }
-    /* 2: select1wb */
-    {
-      orc_union16 _src;
-      _src.i = var44.x2[0];
-      var39.x2[0] = _src.x2[1];
-    }
-    {
-      orc_union16 _src;
-      _src.i = var44.x2[1];
-      var39.x2[1] = _src.x2[1];
-    }
-    /* 3: storew */
-    ptr0[i] = var39;
-    /* 4: select0wb */
-    {
-      orc_union16 _src;
-      _src.i = var44.x2[0];
-      var40.x2[0] = _src.x2[0];
-    }
-    {
-      orc_union16 _src;
-      _src.i = var44.x2[1];
-      var40.x2[1] = _src.x2[0];
-    }
-    /* 5: storew */
-    ptr3[i] = var40;
-    /* 6: splitwb */
-    {
-      orc_union16 _src;
-      _src.i = var43.x2[0];
-      var45.x2[0] = _src.x2[1];
-      var46.x2[0] = _src.x2[0];
-    }
-    {
-      orc_union16 _src;
-      _src.i = var43.x2[1];
-      var45.x2[1] = _src.x2[1];
-      var46.x2[1] = _src.x2[0];
-    }
-    /* 7: splitwb */
-    {
-      orc_union16 _src;
-      _src.i = var46.i;
-      var47 = _src.x2[1];
-      var48 = _src.x2[0];
-    }
-    /* 8: avgub */
-    var41 = ((orc_uint8) var47 + (orc_uint8) var48 + 1) >> 1;
-    /* 9: storeb */
-    ptr1[i] = var41;
-    /* 10: splitwb */
-    {
-      orc_union16 _src;
-      _src.i = var45.i;
-      var49 = _src.x2[1];
-      var50 = _src.x2[0];
-    }
-    /* 11: avgub */
-    var42 = ((orc_uint8) var49 + (orc_uint8) var50 + 1) >> 1;
-    /* 12: storeb */
-    ptr2[i] = var42;
-  }
-
-}
-
-#else
-static void
-_backup_video_convert_orc_putline_A420 (OrcExecutor * ORC_RESTRICT ex)
-{
-  int i;
-  int n = ex->n;
-  orc_union16 *ORC_RESTRICT ptr0;
-  orc_int8 *ORC_RESTRICT ptr1;
-  orc_int8 *ORC_RESTRICT ptr2;
-  orc_union16 *ORC_RESTRICT ptr3;
-  const orc_union64 *ORC_RESTRICT ptr4;
-  orc_union64 var38;
-  orc_union16 var39;
-  orc_union16 var40;
-  orc_int8 var41;
-  orc_int8 var42;
-  orc_union32 var43;
-  orc_union32 var44;
-  orc_union16 var45;
-  orc_union16 var46;
-  orc_int8 var47;
-  orc_int8 var48;
-  orc_int8 var49;
-  orc_int8 var50;
-
-  ptr0 = (orc_union16 *) ex->arrays[0];
-  ptr1 = (orc_int8 *) ex->arrays[1];
-  ptr2 = (orc_int8 *) ex->arrays[2];
-  ptr3 = (orc_union16 *) ex->arrays[3];
-  ptr4 = (orc_union64 *) ex->arrays[4];
-
-
-  for (i = 0; i < n; i++) {
-    /* 0: loadq */
-    var38 = ptr4[i];
-    /* 1: splitlw */
-    {
-      orc_union32 _src;
-      _src.i = var38.x2[0];
-      var43.x2[0] = _src.x2[1];
-      var44.x2[0] = _src.x2[0];
-    }
-    {
-      orc_union32 _src;
-      _src.i = var38.x2[1];
-      var43.x2[1] = _src.x2[1];
-      var44.x2[1] = _src.x2[0];
-    }
-    /* 2: select1wb */
-    {
-      orc_union16 _src;
-      _src.i = var44.x2[0];
-      var39.x2[0] = _src.x2[1];
-    }
-    {
-      orc_union16 _src;
-      _src.i = var44.x2[1];
-      var39.x2[1] = _src.x2[1];
-    }
-    /* 3: storew */
-    ptr0[i] = var39;
-    /* 4: select0wb */
-    {
-      orc_union16 _src;
-      _src.i = var44.x2[0];
-      var40.x2[0] = _src.x2[0];
-    }
-    {
-      orc_union16 _src;
-      _src.i = var44.x2[1];
-      var40.x2[1] = _src.x2[0];
-    }
-    /* 5: storew */
-    ptr3[i] = var40;
-    /* 6: splitwb */
-    {
-      orc_union16 _src;
-      _src.i = var43.x2[0];
-      var45.x2[0] = _src.x2[1];
-      var46.x2[0] = _src.x2[0];
-    }
-    {
-      orc_union16 _src;
-      _src.i = var43.x2[1];
-      var45.x2[1] = _src.x2[1];
-      var46.x2[1] = _src.x2[0];
-    }
-    /* 7: splitwb */
-    {
-      orc_union16 _src;
-      _src.i = var46.i;
-      var47 = _src.x2[1];
-      var48 = _src.x2[0];
-    }
-    /* 8: avgub */
-    var41 = ((orc_uint8) var47 + (orc_uint8) var48 + 1) >> 1;
-    /* 9: storeb */
-    ptr1[i] = var41;
-    /* 10: splitwb */
-    {
-      orc_union16 _src;
-      _src.i = var45.i;
-      var49 = _src.x2[1];
-      var50 = _src.x2[0];
-    }
-    /* 11: avgub */
-    var42 = ((orc_uint8) var49 + (orc_uint8) var50 + 1) >> 1;
-    /* 12: storeb */
-    ptr2[i] = var42;
-  }
-
-}
-
-void
-video_convert_orc_putline_A420 (guint8 * ORC_RESTRICT d1,
-    guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3,
-    guint8 * ORC_RESTRICT d4, const guint8 * ORC_RESTRICT s1, int n)
-{
-  OrcExecutor _ex, *ex = &_ex;
-  static volatile int p_inited = 0;
-  static OrcCode *c = 0;
-  void (*func) (OrcExecutor *);
-
-  if (!p_inited) {
-    orc_once_mutex_lock ();
-    if (!p_inited) {
-      OrcProgram *p;
-
-#if 1
-      static const orc_uint8 bc[] = {
-        1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
-        95, 111, 114, 99, 95, 112, 117, 116, 108, 105, 110, 101, 95, 65, 52, 50,
-        48, 11, 2, 2, 11, 1, 1, 11, 1, 1, 11, 2, 2, 12, 8, 8,
-        20, 4, 20, 4, 20, 2, 20, 2, 20, 1, 20, 1, 21, 1, 198, 33,
-        32, 4, 21, 1, 189, 0, 32, 21, 1, 188, 3, 32, 21, 1, 199, 35,
-        34, 33, 199, 36, 37, 34, 39, 1, 36, 37, 199, 36, 37, 35, 39, 2,
-        36, 37, 2, 0,
-      };
-      p = orc_program_new_from_static_bytecode (bc);
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_putline_A420);
-#else
-      p = orc_program_new ();
-      orc_program_set_name (p, "video_convert_orc_putline_A420");
-      orc_program_set_backup_function (p,
-          _backup_video_convert_orc_putline_A420);
-      orc_program_add_destination (p, 2, "d1");
-      orc_program_add_destination (p, 1, "d2");
-      orc_program_add_destination (p, 1, "d3");
-      orc_program_add_destination (p, 2, "d4");
-      orc_program_add_source (p, 8, "s1");
-      orc_program_add_temporary (p, 4, "t1");
-      orc_program_add_temporary (p, 4, "t2");
-      orc_program_add_temporary (p, 2, "t3");
-      orc_program_add_temporary (p, 2, "t4");
-      orc_program_add_temporary (p, 1, "t5");
-      orc_program_add_temporary (p, 1, "t6");
-
-      orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1,
-          ORC_VAR_D1, ORC_VAR_D1);
-      orc_program_append_2 (p, "select0wb", 1, ORC_VAR_D4, ORC_VAR_T1,
-          ORC_VAR_D1, ORC_VAR_D1);
-      orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T2,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T5, ORC_VAR_T6, ORC_VAR_T3,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "avgub", 0, ORC_VAR_D2, ORC_VAR_T5, ORC_VAR_T6,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T5, ORC_VAR_T6, ORC_VAR_T4,
-          ORC_VAR_D1);
-      orc_program_append_2 (p, "avgub", 0, ORC_VAR_D3, ORC_VAR_T5, ORC_VAR_T6,
-          ORC_VAR_D1);
-#endif
-
-      orc_program_compile (p);
-      c = orc_program_take_code (p);
-      orc_program_free (p);
-    }
-    p_inited = TRUE;
-    orc_once_mutex_unlock ();
-  }
-  ex->arrays[ORC_VAR_A2] = c;
-  ex->program = 0;
-
-  ex->n = n;
-  ex->arrays[ORC_VAR_D1] = d1;
-  ex->arrays[ORC_VAR_D2] = d2;
-  ex->arrays[ORC_VAR_D3] = d3;
-  ex->arrays[ORC_VAR_D4] = d4;
-  ex->arrays[ORC_VAR_S1] = (void *) s1;
+  ex->params[ORC_VAR_P1] = p1;
+  ex->params[ORC_VAR_P2] = p2;
+  ex->params[ORC_VAR_P3] = p3;
+  ex->params[ORC_VAR_P4] = p4;
+  ex->params[ORC_VAR_P5] = p5;
 
   func = c->exec;
   func (ex);
diff --git a/gst/videoconvert/gstvideoconvertorc-dist.h b/gst/videoconvert/gstvideoconvertorc-dist.h
index abc0c87..b4981d1 100644
--- a/gst/videoconvert/gstvideoconvertorc-dist.h
+++ b/gst/videoconvert/gstvideoconvertorc-dist.h
@@ -110,40 +110,11 @@
 void video_convert_orc_convert_Y444_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, const guint8 * ORC_RESTRICT s2, int s2_stride, const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m);
 void video_convert_orc_convert_Y444_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, const guint8 * ORC_RESTRICT s2, int s2_stride, const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m);
 void video_convert_orc_convert_Y444_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, const guint8 * ORC_RESTRICT s2, int s2_stride, const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m);
-void video_convert_orc_convert_AYUV_ARGB (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
-void video_convert_orc_convert_AYUV_BGRA (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
-void video_convert_orc_convert_AYUV_ABGR (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
-void video_convert_orc_convert_AYUV_RGBA (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
-void video_convert_orc_convert_I420_BGRA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n);
-void video_convert_orc_getline_I420 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n);
-void video_convert_orc_getline_YUV9 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n);
-void video_convert_orc_getline_YUY2 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n);
-void video_convert_orc_getline_UYVY (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n);
-void video_convert_orc_getline_YVYU (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n);
-void video_convert_orc_getline_Y42B (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n);
-void video_convert_orc_getline_Y444 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n);
-void video_convert_orc_getline_Y800 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n);
-void video_convert_orc_getline_Y16 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n);
-void video_convert_orc_getline_BGRA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n);
-void video_convert_orc_getline_ABGR (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n);
-void video_convert_orc_getline_RGBA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n);
-void video_convert_orc_getline_NV12 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n);
-void video_convert_orc_getline_NV21 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n);
-void video_convert_orc_getline_A420 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n);
-void video_convert_orc_putline_I420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n);
-void video_convert_orc_putline_YUY2 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n);
-void video_convert_orc_putline_YVYU (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n);
-void video_convert_orc_putline_UYVY (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n);
-void video_convert_orc_putline_Y42B (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n);
-void video_convert_orc_putline_Y444 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n);
-void video_convert_orc_putline_Y800 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n);
-void video_convert_orc_putline_Y16 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n);
-void video_convert_orc_putline_BGRA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n);
-void video_convert_orc_putline_ABGR (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n);
-void video_convert_orc_putline_RGBA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n);
-void video_convert_orc_putline_NV12 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, int n);
-void video_convert_orc_putline_NV21 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, int n);
-void video_convert_orc_putline_A420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, guint8 * ORC_RESTRICT d4, const guint8 * ORC_RESTRICT s1, int n);
+void video_convert_orc_convert_AYUV_ARGB (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3, int p4, int p5, int n, int m);
+void video_convert_orc_convert_AYUV_BGRA (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3, int p4, int p5, int n, int m);
+void video_convert_orc_convert_AYUV_ABGR (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3, int p4, int p5, int n, int m);
+void video_convert_orc_convert_AYUV_RGBA (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3, int p4, int p5, int n, int m);
+void video_convert_orc_convert_I420_BGRA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int p1, int p2, int p3, int p4, int p5, int n);
 
 #ifdef __cplusplus
 }
diff --git a/gst/videoconvert/gstvideoconvertorc.orc b/gst/videoconvert/gstvideoconvertorc.orc
index c055ce2..29a1998 100644
--- a/gst/videoconvert/gstvideoconvertorc.orc
+++ b/gst/videoconvert/gstvideoconvertorc.orc
@@ -451,8 +451,11 @@
 .flags 2d
 .dest 4 argb guint8
 .source 4 ayuv guint8
-.temp 2 t1
-.temp 2 t2
+.param 2 p1
+.param 2 p2
+.param 2 p3
+.param 2 p4
+.param 2 p5
 .temp 1 a
 .temp 1 y
 .temp 1 u
@@ -467,57 +470,48 @@
 .temp 1 g
 .temp 1 b
 .temp 4 x
-.const 1 c8 8
+.const 1 c128 128
 
-x4 subb x, ayuv, 128
-splitlw t1, t2, x
-splitwb y, a, t2
-splitwb v, u, t1
-convsbw wy, y
-convsbw wu, u
-convsbw wv, v
+x4 subb x, ayuv, c128 
+splitlw wv, wy, x
+splitwb y, a, wy
+splitwb v, u, wv
 
-mullw t1, wy, 42
-shrsw t1, t1, c8
-addssw wy, wy, t1
+splatbw wy, y
+splatbw wu, u
+splatbw wv, v
 
-addssw wr, wy, wv
-mullw t1, wv, 103
-shrsw t1, t1, c8
-subssw wr, wr, t1
-addssw wr, wr, wv
+mulhsw wy, wy, p1
 
-addssw wb, wy, wu
-addssw wb, wb, wu
-mullw t1, wu, 4
-shrsw t1, t1, c8
-addssw wb, wb, t1
+mulhsw wr, wv, p2
+addssw wr, wy, wr
 
-mullw t1, wu, 100
-shrsw t1, t1, c8
-subssw wg, wy, t1
-mullw t1, wv, 104
-shrsw t1, t1, c8
-subssw wg, wg, t1
-subssw wg, wg, t1
+mulhsw wb, wu, p3
+addssw wb, wy, wb
+
+mulhsw wg, wu, p4
+addssw wg, wy, wg
+mulhsw wy, wv, p5
+addssw wg, wg, wy
 
 convssswb r, wr
 convssswb g, wg
 convssswb b, wb
 
-mergebw t1, a, r
-mergebw t2, g, b
-mergewl x, t1, t2
-x4 addb argb, x, 128
-
-
+mergebw wr, a, r
+mergebw wb, g, b
+mergewl x, wr, wb
+x4 addb argb, x, c128
 
 .function video_convert_orc_convert_AYUV_BGRA
 .flags 2d
-.dest 4 argb guint8
+.dest 4 bgra guint8
 .source 4 ayuv guint8
-.temp 2 t1
-.temp 2 t2
+.param 2 p1
+.param 2 p2
+.param 2 p3
+.param 2 p4
+.param 2 p5
 .temp 1 a
 .temp 1 y
 .temp 1 u
@@ -532,58 +526,49 @@
 .temp 1 g
 .temp 1 b
 .temp 4 x
-.const 1 c8 8
+.const 1 c128 128
 
-x4 subb x, ayuv, 128
-splitlw t1, t2, x
-splitwb y, a, t2
-splitwb v, u, t1
-convsbw wy, y
-convsbw wu, u
-convsbw wv, v
+x4 subb x, ayuv, c128 
+splitlw wv, wy, x
+splitwb y, a, wy
+splitwb v, u, wv
 
-mullw t1, wy, 42
-shrsw t1, t1, c8
-addssw wy, wy, t1
+splatbw wy, y
+splatbw wu, u
+splatbw wv, v
 
-addssw wr, wy, wv
-mullw t1, wv, 103
-shrsw t1, t1, c8
-subssw wr, wr, t1
-addssw wr, wr, wv
+mulhsw wy, wy, p1
 
-addssw wb, wy, wu
-addssw wb, wb, wu
-mullw t1, wu, 4
-shrsw t1, t1, c8
-addssw wb, wb, t1
+mulhsw wr, wv, p2
+addssw wr, wy, wr
 
-mullw t1, wu, 100
-shrsw t1, t1, c8
-subssw wg, wy, t1
-mullw t1, wv, 104
-shrsw t1, t1, c8
-subssw wg, wg, t1
-subssw wg, wg, t1
+mulhsw wb, wu, p3
+addssw wb, wy, wb
+
+mulhsw wg, wu, p4
+addssw wg, wy, wg
+mulhsw wy, wv, p5
+addssw wg, wg, wy
 
 convssswb r, wr
 convssswb g, wg
 convssswb b, wb
 
-mergebw t1, b, g
-mergebw t2, r, a
-mergewl x, t1, t2
-x4 addb argb, x, 128
-
-
+mergebw wb, b, g
+mergebw wr, r, a
+mergewl x, wb, wr
+x4 addb bgra, x, c128
 
 
 .function video_convert_orc_convert_AYUV_ABGR
 .flags 2d
 .dest 4 argb guint8
 .source 4 ayuv guint8
-.temp 2 t1
-.temp 2 t2
+.param 2 p1
+.param 2 p2
+.param 2 p3
+.param 2 p4
+.param 2 p5
 .temp 1 a
 .temp 1 y
 .temp 1 u
@@ -598,57 +583,48 @@
 .temp 1 g
 .temp 1 b
 .temp 4 x
-.const 1 c8 8
+.const 1 c128 128
 
-x4 subb x, ayuv, 128
-splitlw t1, t2, x
-splitwb y, a, t2
-splitwb v, u, t1
-convsbw wy, y
-convsbw wu, u
-convsbw wv, v
+x4 subb x, ayuv, c128 
+splitlw wv, wy, x
+splitwb y, a, wy
+splitwb v, u, wv
 
-mullw t1, wy, 42
-shrsw t1, t1, c8
-addssw wy, wy, t1
+splatbw wy, y
+splatbw wu, u
+splatbw wv, v
 
-addssw wr, wy, wv
-mullw t1, wv, 103
-shrsw t1, t1, c8
-subssw wr, wr, t1
-addssw wr, wr, wv
+mulhsw wy, wy, p1
 
-addssw wb, wy, wu
-addssw wb, wb, wu
-mullw t1, wu, 4
-shrsw t1, t1, c8
-addssw wb, wb, t1
+mulhsw wr, wv, p2
+addssw wr, wy, wr
 
-mullw t1, wu, 100
-shrsw t1, t1, c8
-subssw wg, wy, t1
-mullw t1, wv, 104
-shrsw t1, t1, c8
-subssw wg, wg, t1
-subssw wg, wg, t1
+mulhsw wb, wu, p3
+addssw wb, wy, wb
+
+mulhsw wg, wu, p4
+addssw wg, wy, wg
+mulhsw wy, wv, p5
+addssw wg, wg, wy
 
 convssswb r, wr
 convssswb g, wg
 convssswb b, wb
 
-mergebw t1, a, b
-mergebw t2, g, r
-mergewl x, t1, t2
-x4 addb argb, x, 128
-
-
+mergebw wb, a, b
+mergebw wr, g, r
+mergewl x, wb, wr
+x4 addb argb, x, c128
 
 .function video_convert_orc_convert_AYUV_RGBA
 .flags 2d
 .dest 4 argb guint8
 .source 4 ayuv guint8
-.temp 2 t1
-.temp 2 t2
+.param 2 p1
+.param 2 p2
+.param 2 p3
+.param 2 p4
+.param 2 p5
 .temp 1 a
 .temp 1 y
 .temp 1 u
@@ -663,48 +639,38 @@
 .temp 1 g
 .temp 1 b
 .temp 4 x
-.const 1 c8 8
+.const 1 c128 128
 
-x4 subb x, ayuv, 128
-splitlw t1, t2, x
-splitwb y, a, t2
-splitwb v, u, t1
-convsbw wy, y
-convsbw wu, u
-convsbw wv, v
+x4 subb x, ayuv, c128 
+splitlw wv, wy, x
+splitwb y, a, wy
+splitwb v, u, wv
 
-mullw t1, wy, 42
-shrsw t1, t1, c8
-addssw wy, wy, t1
+splatbw wy, y
+splatbw wu, u
+splatbw wv, v
 
-addssw wr, wy, wv
-mullw t1, wv, 103
-shrsw t1, t1, c8
-subssw wr, wr, t1
-addssw wr, wr, wv
+mulhsw wy, wy, p1
 
-addssw wb, wy, wu
-addssw wb, wb, wu
-mullw t1, wu, 4
-shrsw t1, t1, c8
-addssw wb, wb, t1
+mulhsw wr, wv, p2
+addssw wr, wy, wr
 
-mullw t1, wu, 100
-shrsw t1, t1, c8
-subssw wg, wy, t1
-mullw t1, wv, 104
-shrsw t1, t1, c8
-subssw wg, wg, t1
-subssw wg, wg, t1
+mulhsw wb, wu, p3
+addssw wb, wy, wb
+
+mulhsw wg, wu, p4
+addssw wg, wy, wg
+mulhsw wy, wv, p5
+addssw wg, wg, wy
 
 convssswb r, wr
 convssswb g, wg
 convssswb b, wb
 
-mergebw t1, r, g
-mergebw t2, b, a
-mergewl x, t1, t2
-x4 addb argb, x, 128
+mergebw wr, r, g
+mergebw wb, b, a
+mergewl x, wr, wb
+x4 addb argb, x, c128
 
 
 
@@ -713,9 +679,11 @@
 .source 1 y guint8
 .source 1 u guint8
 .source 1 v guint8
-.temp 2 t1
-.temp 2 t2
-.temp 1 t3
+.param 2 p1
+.param 2 p2
+.param 2 p3
+.param 2 p4
+.param 2 p5
 .temp 2 wy
 .temp 2 wu
 .temp 2 wv
@@ -725,497 +693,37 @@
 .temp 1 r
 .temp 1 g
 .temp 1 b
-.const 1 c8 8
+.temp 4 x
 .const 1 c128 128
 
-subb t3, y, c128
-convsbw wy, t3
-loadupib t3, u
-subb t3, t3, c128
-convsbw wu, t3
-loadupib t3, v
-subb t3, t3, c128
-convsbw wv, t3
+subb r, y, c128
+splatbw wy, r
+loadupdb r, u
+subb r, r, c128
+splatbw wu, r
+loadupdb r, v
+subb r, r, c128
+splatbw wv, r
 
-mullw t1, wy, 42
-shrsw t1, t1, c8
-addssw wy, wy, t1
+mulhsw wy, wy, p1
 
-addssw wr, wy, wv
-mullw t1, wv, 103
-shrsw t1, t1, c8
-subssw wr, wr, t1
-addssw wr, wr, wv
+mulhsw wr, wv, p2
+addssw wr, wy, wr
 
-addssw wb, wy, wu
-addssw wb, wb, wu
-mullw t1, wu, 4
-shrsw t1, t1, c8
-addssw wb, wb, t1
+mulhsw wb, wu, p3
+addssw wb, wy, wb
 
-mullw t1, wu, 100
-shrsw t1, t1, c8
-subssw wg, wy, t1
-mullw t1, wv, 104
-shrsw t1, t1, c8
-subssw wg, wg, t1
-subssw wg, wg, t1
+mulhsw wg, wu, p4
+addssw wg, wy, wg
+mulhsw wy, wv, p5
+addssw wg, wg, wy
 
 convssswb r, wr
 convssswb g, wg
 convssswb b, wb
 
-mergebw t1, b, g
-x2 subb t1, t1, c128
-subb    r, r, c128
-mergebw t2, r, 255
-mergewl argb, t1, t2
-
-
-
-.function video_convert_orc_getline_I420
-.dest 4 d guint8
-.source 1 y guint8
-.source 1 u guint8
-.source 1 v guint8
-.const 1 c255 255
-.temp 2 uv
-.temp 2 ay
-.temp 1 tu
-.temp 1 tv
-
-loadupdb tu, u
-loadupdb tv, v
-mergebw uv, tu, tv
-mergebw ay, c255, y
-mergewl d, ay, uv
-
-.function video_convert_orc_getline_YUV9
-.dest 8 d guint8
-.source 2 y guint8
-.source 1 u guint8
-.source 1 v guint8
-.const 1 c255 255
-.temp 2 tuv
-.temp 4 ay
-.temp 4 uv
-.temp 1 tu
-.temp 1 tv
-
-loadupdb tu, u
-loadupdb tv, v
-mergebw tuv, tu, tv
-mergewl uv, tuv, tuv
-x2 mergebw ay, c255, y
-x2 mergewl d, ay, uv
-
-.function video_convert_orc_getline_YUY2
-.dest 8 ayuv guint8
-.source 4 yuy2 guint8
-.const 2 c255 0xff
-.temp 2 yy
-.temp 2 uv
-.temp 4 ayay
-.temp 4 uvuv
-
-x2 splitwb uv, yy, yuy2
-x2 mergebw ayay, c255, yy
-mergewl uvuv, uv, uv
-x2 mergewl ayuv, ayay, uvuv
-
-
-.function video_convert_orc_getline_UYVY
-.dest 8 ayuv guint8
-.source 4 uyvy guint8
-.const 2 c255 0xff
-.temp 2 yy
-.temp 2 uv
-.temp 4 ayay
-.temp 4 uvuv
-
-x2 splitwb yy, uv, uyvy
-x2 mergebw ayay, c255, yy
-mergewl uvuv, uv, uv
-x2 mergewl ayuv, ayay, uvuv
-
-
-.function video_convert_orc_getline_YVYU
-.dest 8 ayuv guint8
-.source 4 uyvy guint8
-.const 2 c255 0xff
-.temp 2 yy
-.temp 2 uv
-.temp 4 ayay
-.temp 4 uvuv
-
-x2 splitwb uv, yy, uyvy
-swapw uv, uv
-x2 mergebw ayay, c255, yy
-mergewl uvuv, uv, uv
-x2 mergewl ayuv, ayay, uvuv
-
-
-.function video_convert_orc_getline_Y42B
-.dest 8 ayuv guint8
-.source 2 yy guint8
-.source 1 u guint8
-.source 1 v guint8
-.const 1 c255 255
-.temp 2 uv
-.temp 2 ay
-.temp 4 uvuv
-.temp 4 ayay
-
-mergebw uv, u, v
-x2 mergebw ayay, c255, yy
-mergewl uvuv, uv, uv
-x2 mergewl ayuv, ayay, uvuv
-
-
-.function video_convert_orc_getline_Y444
-.dest 4 ayuv guint8
-.source 1 y guint8
-.source 1 u guint8
-.source 1 v guint8
-.const 1 c255 255
-.temp 2 uv
-.temp 2 ay
-
-mergebw uv, u, v
-mergebw ay, c255, y
-mergewl ayuv, ay, uv
-
-
-.function video_convert_orc_getline_Y800
-.dest 4 ayuv guint8
-.source 1 y guint8
-.const 1 c255 255
-.const 2 c0x8080 0x8080
-.temp 2 ay
-
-mergebw ay, c255, y
-mergewl ayuv, ay, c0x8080
-
-.function video_convert_orc_getline_Y16
-.dest 4 ayuv guint8
-.source 2 y guint8
-.const 1 c255 255
-.const 2 c0x8080 0x8080
-.temp 2 ay
-.temp 1 yb
-
-convhwb yb, y
-mergebw ay, c255, yb
-mergewl ayuv, ay, c0x8080
-
-.function video_convert_orc_getline_BGRA
-.dest 4 argb guint8
-.source 4 bgra guint8
-
-swapl argb, bgra
-
-
-.function video_convert_orc_getline_ABGR
-.dest 4 argb guint8
-.source 4 abgr guint8
-.temp 1 a
-.temp 1 r
-.temp 1 g
-.temp 1 b
-.temp 2 gr
-.temp 2 ab
-.temp 2 ar
-.temp 2 gb
-
-splitlw gr, ab, abgr
-splitwb r, g, gr
-splitwb b, a, ab
-mergebw ar, a, r
-mergebw gb, g, b
-mergewl argb, ar, gb
-
-
-.function video_convert_orc_getline_RGBA
-.dest 4 argb guint8
-.source 4 rgba guint8
-.temp 1 a
-.temp 1 r
-.temp 1 g
-.temp 1 b
-.temp 2 rg
-.temp 2 ba
-.temp 2 ar
-.temp 2 gb
-
-splitlw ba, rg, rgba
-splitwb g, r, rg
-splitwb a, b, ba
-mergebw ar, a, r
-mergebw gb, g, b
-mergewl argb, ar, gb
-
-
-.function video_convert_orc_getline_NV12
-.dest 8 d guint8
-.source 2 y guint8
-.source 2 uv guint8
-.const 1 c255 255
-.temp 4 ay
-.temp 4 uvuv
-
-mergewl uvuv, uv, uv
-x2 mergebw ay, c255, y
-x2 mergewl d, ay, uvuv
-
-
-.function video_convert_orc_getline_NV21
-.dest 8 d guint8
-.source 2 y guint8
-.source 2 vu guint8
-.const 1 c255 255
-.temp 2 uv
-.temp 4 ay
-.temp 4 uvuv
-
-swapw uv, vu
-mergewl uvuv, uv, uv
-x2 mergebw ay, c255, y
-x2 mergewl d, ay, uvuv
-
-.function video_convert_orc_getline_A420
-.dest 4 d guint8
-.source 1 y guint8
-.source 1 u guint8
-.source 1 v guint8
-.source 1 a guint8
-.temp 2 uv
-.temp 2 ay
-.temp 1 tu
-.temp 1 tv
-
-loadupdb tu, u
-loadupdb tv, v
-mergebw uv, tu, tv
-mergebw ay, a, y
-mergewl d, ay, uv
-
-.function video_convert_orc_putline_I420
-.dest 2 y guint8
-.dest 1 u guint8
-.dest 1 v guint8
-.source 8 ayuv guint8
-.temp 4 ay
-.temp 4 uv
-.temp 2 uu
-.temp 2 vv
-.temp 1 t1
-.temp 1 t2
-
-x2 splitlw uv, ay, ayuv
-x2 select1wb y, ay
-x2 splitwb vv, uu, uv
-splitwb t1, t2, uu
-avgub u, t1, t2
-splitwb t1, t2, vv
-avgub v, t1, t2
-
-
-
-.function video_convert_orc_putline_YUY2
-.dest 4 yuy2 guint8
-.source 8 ayuv guint8
-.temp 2 yy
-.temp 2 uv1
-.temp 2 uv2
-.temp 4 ayay
-.temp 4 uvuv
-
-x2 splitlw uvuv, ayay, ayuv
-splitlw uv1, uv2, uvuv
-x2 avgub uv1, uv1, uv2
-x2 select1wb yy, ayay
-x2 mergebw yuy2, yy, uv1
-
-
-.function video_convert_orc_putline_YVYU
-.dest 4 yuy2 guint8
-.source 8 ayuv guint8
-.temp 2 yy
-.temp 2 uv1
-.temp 2 uv2
-.temp 4 ayay
-.temp 4 uvuv
-
-x2 splitlw uvuv, ayay, ayuv
-splitlw uv1, uv2, uvuv
-x2 avgub uv1, uv1, uv2
-x2 select1wb yy, ayay
-swapw uv1, uv1
-x2 mergebw yuy2, yy, uv1
-
-
-.function video_convert_orc_putline_UYVY
-.dest 4 yuy2 guint8
-.source 8 ayuv guint8
-.temp 2 yy
-.temp 2 uv1
-.temp 2 uv2
-.temp 4 ayay
-.temp 4 uvuv
-
-x2 splitlw uvuv, ayay, ayuv
-splitlw uv1, uv2, uvuv
-x2 avgub uv1, uv1, uv2
-x2 select1wb yy, ayay
-x2 mergebw yuy2, uv1, yy
-
-
-
-.function video_convert_orc_putline_Y42B
-.dest 2 y guint8
-.dest 1 u guint8
-.dest 1 v guint8
-.source 8 ayuv guint8
-.temp 4 ayay
-.temp 4 uvuv
-.temp 2 uv1
-.temp 2 uv2
-
-x2 splitlw uvuv, ayay, ayuv
-splitlw uv1, uv2, uvuv
-x2 avgub uv1, uv1, uv2
-splitwb v, u, uv1
-x2 select1wb y, ayay
-
-
-.function video_convert_orc_putline_Y444
-.dest 1 y guint8
-.dest 1 u guint8
-.dest 1 v guint8
-.source 4 ayuv guint8
-.temp 2 ay
-.temp 2 uv
-
-splitlw uv, ay, ayuv
-splitwb v, u, uv
-select1wb y, ay
-
-
-.function video_convert_orc_putline_Y800
-.dest 1 y guint8
-.source 4 ayuv guint8
-.temp 2 ay
-
-select0lw ay, ayuv
-select1wb y, ay
-
-.function video_convert_orc_putline_Y16
-.dest 2 y guint8
-.source 4 ayuv guint8
-.temp 2 ay
-.temp 1 yb
-
-select0lw ay, ayuv
-select1wb yb, ay
-convubw ay, yb
-shlw y, ay, 8
-
-.function video_convert_orc_putline_BGRA
-.dest 4 bgra guint8
-.source 4 argb guint8
-
-swapl bgra, argb
-
-
-.function video_convert_orc_putline_ABGR
-.dest 4 abgr guint8
-.source 4 argb guint8
-.temp 1 a
-.temp 1 r
-.temp 1 g
-.temp 1 b
-.temp 2 gr
-.temp 2 ab
-.temp 2 ar
-.temp 2 gb
-
-splitlw gb, ar, argb
-splitwb b, g, gb
-splitwb r, a, ar
-mergebw ab, a, b
-mergebw gr, g, r
-mergewl abgr, ab, gr
-
-
-.function video_convert_orc_putline_RGBA
-.dest 4 rgba guint8
-.source 4 argb guint8
-.temp 1 a
-.temp 1 r
-.temp 1 g
-.temp 1 b
-.temp 2 rg
-.temp 2 ba
-.temp 2 ar
-.temp 2 gb
-
-splitlw gb, ar, argb
-splitwb b, g, gb
-splitwb r, a, ar
-mergebw ba, b, a
-mergebw rg, r, g
-mergewl rgba, rg, ba
-
-
-.function video_convert_orc_putline_NV12
-.dest 2 y guint8
-.dest 2 uv guint8
-.source 8 ayuv guint8
-.temp 4 ay
-.temp 4 uvuv
-.temp 2 uv1
-.temp 2 uv2
-
-x2 splitlw uvuv, ay, ayuv
-x2 select1wb y, ay
-splitlw uv1, uv2, uvuv
-x2 avgub uv, uv1, uv2
-
-
-.function video_convert_orc_putline_NV21
-.dest 2 y guint8
-.dest 2 vu guint8
-.source 8 ayuv guint8
-.temp 4 ay
-.temp 4 uvuv
-.temp 2 uv1
-.temp 2 uv2
-.temp 2 uv
-
-x2 splitlw uvuv, ay, ayuv
-x2 select1wb y, ay
-splitlw uv1, uv2, uvuv
-x2 avgub uv, uv1, uv2
-swapw vu, uv
-
-.function video_convert_orc_putline_A420
-.dest 2 y guint8
-.dest 1 u guint8
-.dest 1 v guint8
-.dest 2 a guint8
-.source 8 ayuv guint8
-.temp 4 ay
-.temp 4 uv
-.temp 2 uu
-.temp 2 vv
-.temp 1 t1
-.temp 1 t2
+mergebw wb, b, g
+mergebw wr, r, 127
+mergewl x, wb, wr
+x4 addb argb, x, c128
 
-x2 splitlw uv, ay, ayuv
-x2 select1wb y, ay
-x2 select0wb a, ay
-x2 splitwb vv, uu, uv
-splitwb t1, t2, uu
-avgub u, t1, t2
-splitwb t1, t2, vv
-avgub v, t1, t2
diff --git a/gst/videoconvert/videoconvert.c b/gst/videoconvert/videoconvert.c
index 916f632..380822d 100644
--- a/gst/videoconvert/videoconvert.c
+++ b/gst/videoconvert/videoconvert.c
@@ -276,6 +276,7 @@
   /* 1, bring color components to [0..1.0] range */
   gst_video_color_range_offsets (in_info->colorimetry.range, suinfo, offset,
       scale);
+
   color_matrix_offset_components (&dst, -offset[0], -offset[1], -offset[2]);
 
   color_matrix_scale_components (&dst, 1 / ((float) scale[0]),
@@ -300,6 +301,7 @@
   /* 8, bring color components to nominal range */
   gst_video_color_range_offsets (out_info->colorimetry.range, duinfo, offset,
       scale);
+
   color_matrix_scale_components (&dst, (float) scale[0], (float) scale[1],
       (float) scale[2]);
 
@@ -597,7 +599,7 @@
       for (j = 0; j < down_n_lines; j += lines) {
         idx = down_offset + j;
 
-        if (idx >= 0 && idx < height) {
+        if (idx < height) {
           GST_DEBUG ("packing line %d %d %d", j + start, down_offset, idx);
           /* FIXME, not correct if lines > 1 */
           PACK_FRAME (dest, out_tmplines[j + start], idx, width);
@@ -1202,7 +1204,9 @@
 
   video_convert_orc_convert_AYUV_ARGB (FRAME_GET_LINE (dest, 0),
       FRAME_GET_STRIDE (dest), FRAME_GET_LINE (src, 0),
-      FRAME_GET_STRIDE (src), width, height);
+      FRAME_GET_STRIDE (src), convert->cmatrix[0][0], convert->cmatrix[0][2],
+      convert->cmatrix[2][1], convert->cmatrix[1][1], convert->cmatrix[1][2],
+      width, height);
 }
 
 static void
@@ -1214,7 +1218,9 @@
 
   video_convert_orc_convert_AYUV_BGRA (FRAME_GET_LINE (dest, 0),
       FRAME_GET_STRIDE (dest), FRAME_GET_LINE (src, 0),
-      FRAME_GET_STRIDE (src), width, height);
+      FRAME_GET_STRIDE (src), convert->cmatrix[0][0], convert->cmatrix[0][2],
+      convert->cmatrix[2][1], convert->cmatrix[1][1], convert->cmatrix[1][2],
+      width, height);
 }
 
 static void
@@ -1226,7 +1232,9 @@
 
   video_convert_orc_convert_AYUV_ABGR (FRAME_GET_LINE (dest, 0),
       FRAME_GET_STRIDE (dest), FRAME_GET_LINE (src, 0),
-      FRAME_GET_STRIDE (src), width, height);
+      FRAME_GET_STRIDE (src), convert->cmatrix[0][0], convert->cmatrix[0][2],
+      convert->cmatrix[2][1], convert->cmatrix[1][1], convert->cmatrix[1][2],
+      width, height);
 }
 
 static void
@@ -1238,7 +1246,9 @@
 
   video_convert_orc_convert_AYUV_RGBA (FRAME_GET_LINE (dest, 0),
       FRAME_GET_STRIDE (dest), FRAME_GET_LINE (src, 0),
-      FRAME_GET_STRIDE (src), width, height);
+      FRAME_GET_STRIDE (src), convert->cmatrix[0][0], convert->cmatrix[0][2],
+      convert->cmatrix[2][1], convert->cmatrix[1][1], convert->cmatrix[1][2],
+      width, height);
 }
 
 static void
@@ -1252,7 +1262,10 @@
   for (i = 0; i < height; i++) {
     video_convert_orc_convert_I420_BGRA (FRAME_GET_LINE (dest, i),
         FRAME_GET_Y_LINE (src, i),
-        FRAME_GET_U_LINE (src, i >> 1), FRAME_GET_V_LINE (src, i >> 1), width);
+        FRAME_GET_U_LINE (src, i >> 1), FRAME_GET_V_LINE (src, i >> 1),
+        convert->cmatrix[0][0], convert->cmatrix[0][2],
+        convert->cmatrix[2][1], convert->cmatrix[1][1], convert->cmatrix[1][2],
+        width);
   }
 }
 #endif
@@ -1269,6 +1282,7 @@
   GstVideoColorMatrix out_matrix;
   gboolean keeps_color_matrix;
   gboolean keeps_interlaced;
+  gboolean needs_color_matrix;
   gint width_align, height_align;
   void (*convert) (VideoConvert * convert, GstVideoFrame * dest,
       const GstVideoFrame * src);
@@ -1276,118 +1290,165 @@
 
 static const VideoTransform transforms[] = {
   {GST_VIDEO_FORMAT_I420, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_YUY2,
-      GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_I420_YUY2},
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0,
+      convert_I420_YUY2},
   {GST_VIDEO_FORMAT_I420, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_UYVY,
-      GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_I420_UYVY},
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0,
+      convert_I420_UYVY},
   {GST_VIDEO_FORMAT_I420, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_AYUV,
-      GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_I420_AYUV},
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0,
+      convert_I420_AYUV},
   {GST_VIDEO_FORMAT_I420, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y42B,
-      GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, 0, 0, convert_I420_Y42B},
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, FALSE, 0, 0,
+      convert_I420_Y42B},
   {GST_VIDEO_FORMAT_I420, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y444,
-      GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, 0, 0, convert_I420_Y444},
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, FALSE, 0, 0,
+      convert_I420_Y444},
 
   {GST_VIDEO_FORMAT_YV12, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_YUY2,
-      GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_I420_YUY2},
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0,
+      convert_I420_YUY2},
   {GST_VIDEO_FORMAT_YV12, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_UYVY,
-      GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_I420_UYVY},
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0,
+      convert_I420_UYVY},
   {GST_VIDEO_FORMAT_YV12, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_AYUV,
-      GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_I420_AYUV},
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0,
+      convert_I420_AYUV},
   {GST_VIDEO_FORMAT_YV12, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y42B,
-      GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, 0, 0, convert_I420_Y42B},
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, FALSE, 0, 0,
+      convert_I420_Y42B},
   {GST_VIDEO_FORMAT_YV12, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y444,
-      GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, 0, 0, convert_I420_Y444},
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, FALSE, 0, 0,
+      convert_I420_Y444},
 
   {GST_VIDEO_FORMAT_YUY2, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_I420,
-      GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_YUY2_I420},
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0,
+      convert_YUY2_I420},
   {GST_VIDEO_FORMAT_YUY2, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_YV12,
-      GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_YUY2_I420},
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0,
+      convert_YUY2_I420},
   {GST_VIDEO_FORMAT_YUY2, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_UYVY,
-      GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_UYVY_YUY2},     /* alias */
+      GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0, convert_UYVY_YUY2},      /* alias */
   {GST_VIDEO_FORMAT_YUY2, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_AYUV,
-      GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_YUY2_AYUV},
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0,
+      convert_YUY2_AYUV},
   {GST_VIDEO_FORMAT_YUY2, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y42B,
-      GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_YUY2_Y42B},
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0,
+      convert_YUY2_Y42B},
   {GST_VIDEO_FORMAT_YUY2, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y444,
-      GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_YUY2_Y444},
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0,
+      convert_YUY2_Y444},
 
   {GST_VIDEO_FORMAT_UYVY, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_I420,
-      GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_UYVY_I420},
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0,
+      convert_UYVY_I420},
   {GST_VIDEO_FORMAT_UYVY, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_YV12,
-      GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_UYVY_I420},
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0,
+      convert_UYVY_I420},
   {GST_VIDEO_FORMAT_UYVY, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_YUY2,
-      GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_UYVY_YUY2},
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0,
+      convert_UYVY_YUY2},
   {GST_VIDEO_FORMAT_UYVY, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_AYUV,
-      GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_UYVY_AYUV},
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0,
+      convert_UYVY_AYUV},
   {GST_VIDEO_FORMAT_UYVY, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y42B,
-      GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_UYVY_Y42B},
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0,
+      convert_UYVY_Y42B},
   {GST_VIDEO_FORMAT_UYVY, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y444,
-      GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_UYVY_Y444},
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0,
+      convert_UYVY_Y444},
 
   {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_I420,
-      GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, 1, 1, convert_AYUV_I420},
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, FALSE, 1, 1,
+      convert_AYUV_I420},
   {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_YV12,
-      GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, 1, 1, convert_AYUV_I420},
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, FALSE, 1, 1,
+      convert_AYUV_I420},
   {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_YUY2,
-      GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 1, 0, convert_AYUV_YUY2},
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 1, 0,
+      convert_AYUV_YUY2},
   {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_UYVY,
-      GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 1, 0, convert_AYUV_UYVY},
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 1, 0,
+      convert_AYUV_UYVY},
   {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y42B,
-      GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 1, 0, convert_AYUV_Y42B},
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 1, 0,
+      convert_AYUV_Y42B},
   {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y444,
-      GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_AYUV_Y444},
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0,
+      convert_AYUV_Y444},
 
   {GST_VIDEO_FORMAT_Y42B, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_I420,
-      GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, 0, 0, convert_Y42B_I420},
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, FALSE, 0, 0,
+      convert_Y42B_I420},
   {GST_VIDEO_FORMAT_Y42B, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_YV12,
-      GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, 0, 0, convert_Y42B_I420},
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, FALSE, 0, 0,
+      convert_Y42B_I420},
   {GST_VIDEO_FORMAT_Y42B, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_YUY2,
-      GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_Y42B_YUY2},
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0,
+      convert_Y42B_YUY2},
   {GST_VIDEO_FORMAT_Y42B, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_UYVY,
-      GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_Y42B_UYVY},
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0,
+      convert_Y42B_UYVY},
   {GST_VIDEO_FORMAT_Y42B, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_AYUV,
-      GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 1, 0, convert_Y42B_AYUV},
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 1, 0,
+      convert_Y42B_AYUV},
   {GST_VIDEO_FORMAT_Y42B, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y444,
-      GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_Y42B_Y444},
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0,
+      convert_Y42B_Y444},
 
   {GST_VIDEO_FORMAT_Y444, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_I420,
-      GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, 1, 0, convert_Y444_I420},
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, FALSE, 1, 0,
+      convert_Y444_I420},
   {GST_VIDEO_FORMAT_Y444, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_YV12,
-      GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, 1, 0, convert_Y444_I420},
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, FALSE, 1, 0,
+      convert_Y444_I420},
   {GST_VIDEO_FORMAT_Y444, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_YUY2,
-      GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 1, 0, convert_Y444_YUY2},
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 1, 0,
+      convert_Y444_YUY2},
   {GST_VIDEO_FORMAT_Y444, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_UYVY,
-      GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 1, 0, convert_Y444_UYVY},
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 1, 0,
+      convert_Y444_UYVY},
   {GST_VIDEO_FORMAT_Y444, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_AYUV,
-      GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_Y444_AYUV},
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0,
+      convert_Y444_AYUV},
   {GST_VIDEO_FORMAT_Y444, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y42B,
-      GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 1, 0, convert_Y444_Y42B},
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 1, 0,
+      convert_Y444_Y42B},
 
 #if G_BYTE_ORDER == G_LITTLE_ENDIAN
-  {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_BT601, GST_VIDEO_FORMAT_ARGB,
-      GST_VIDEO_COLOR_MATRIX_RGB, FALSE, TRUE, 0, 0, convert_AYUV_ARGB},
-  {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_BT601, GST_VIDEO_FORMAT_BGRA,
-      GST_VIDEO_COLOR_MATRIX_RGB, FALSE, TRUE, 0, 0, convert_AYUV_BGRA},
-  {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_BT601, GST_VIDEO_FORMAT_xRGB,
-      GST_VIDEO_COLOR_MATRIX_RGB, FALSE, TRUE, 0, 0, convert_AYUV_ARGB},        /* alias */
-  {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_BT601, GST_VIDEO_FORMAT_BGRx,
-      GST_VIDEO_COLOR_MATRIX_RGB, FALSE, TRUE, 0, 0, convert_AYUV_BGRA},        /* alias */
-  {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_BT601, GST_VIDEO_FORMAT_ABGR,
-      GST_VIDEO_COLOR_MATRIX_RGB, FALSE, TRUE, 0, 0, convert_AYUV_ABGR},
-  {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_BT601, GST_VIDEO_FORMAT_RGBA,
-      GST_VIDEO_COLOR_MATRIX_RGB, FALSE, TRUE, 0, 0, convert_AYUV_RGBA},
-  {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_BT601, GST_VIDEO_FORMAT_xBGR,
-      GST_VIDEO_COLOR_MATRIX_RGB, FALSE, TRUE, 0, 0, convert_AYUV_ABGR},        /* alias */
-  {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_BT601, GST_VIDEO_FORMAT_RGBx,
-      GST_VIDEO_COLOR_MATRIX_RGB, FALSE, TRUE, 0, 0, convert_AYUV_RGBA},        /* alias */
+  {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_ARGB,
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, TRUE, 0, 0,
+      convert_AYUV_ARGB},
+  {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_BGRA,
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, TRUE, 0, 0,
+      convert_AYUV_BGRA},
+  {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_xRGB,
+      GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, TRUE, 0, 0, convert_AYUV_ARGB},       /* alias */
+  {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_BGRx,
+      GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, TRUE, 0, 0, convert_AYUV_BGRA},       /* alias */
+  {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_ABGR,
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, TRUE, 0, 0,
+      convert_AYUV_ABGR},
+  {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_RGBA,
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, TRUE, 0, 0,
+      convert_AYUV_RGBA},
+  {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_xBGR,
+      GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, TRUE, 0, 0, convert_AYUV_ABGR},       /* alias */
+  {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_RGBx,
+      GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, TRUE, 0, 0, convert_AYUV_RGBA},       /* alias */
 
-  {GST_VIDEO_FORMAT_I420, GST_VIDEO_COLOR_MATRIX_BT601, GST_VIDEO_FORMAT_BGRA,
-      GST_VIDEO_COLOR_MATRIX_RGB, FALSE, FALSE, 0, 0, convert_I420_BGRA},
-  {GST_VIDEO_FORMAT_I420, GST_VIDEO_COLOR_MATRIX_BT601, GST_VIDEO_FORMAT_BGRx,
-      GST_VIDEO_COLOR_MATRIX_RGB, FALSE, FALSE, 0, 0, convert_I420_BGRA},
-  {GST_VIDEO_FORMAT_YV12, GST_VIDEO_COLOR_MATRIX_BT601, GST_VIDEO_FORMAT_BGRA,
-      GST_VIDEO_COLOR_MATRIX_RGB, FALSE, FALSE, 0, 0, convert_I420_BGRA},
-  {GST_VIDEO_FORMAT_YV12, GST_VIDEO_COLOR_MATRIX_BT601, GST_VIDEO_FORMAT_BGRx,
-      GST_VIDEO_COLOR_MATRIX_RGB, FALSE, FALSE, 0, 0, convert_I420_BGRA},
+  {GST_VIDEO_FORMAT_I420, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_BGRA,
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, TRUE, 0, 0,
+      convert_I420_BGRA},
+  {GST_VIDEO_FORMAT_I420, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_BGRx,
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, TRUE, 0, 0,
+      convert_I420_BGRA},
+  {GST_VIDEO_FORMAT_YV12, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_BGRA,
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, TRUE, 0, 0,
+      convert_I420_BGRA},
+  {GST_VIDEO_FORMAT_YV12, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_BGRx,
+        GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, TRUE, 0, 0,
+      convert_I420_BGRA},
 #endif
 };
 
@@ -1422,10 +1483,20 @@
         (transforms[i].width_align & width) == 0 &&
         (transforms[i].height_align & height) == 0) {
       GST_DEBUG ("using fastpath");
+      if (transforms[i].needs_color_matrix)
+        if (!videoconvert_convert_compute_matrix (convert))
+          goto no_convert;
       convert->convert = transforms[i].convert;
       alloc_tmplines (convert, 1, GST_VIDEO_INFO_WIDTH (&convert->in_info));
       return TRUE;
     }
   }
+  GST_DEBUG ("no fastpath found");
   return FALSE;
+
+no_convert:
+  {
+    GST_DEBUG ("can't create matrix");
+    return FALSE;
+  }
 }
diff --git a/gst/videorate/Makefile.in b/gst/videorate/Makefile.in
index f6a68e7..7a787d6 100644
--- a/gst/videorate/Makefile.in
+++ b/gst/videorate/Makefile.in
@@ -88,7 +88,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -424,9 +423,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/gst/videorate/gstvideorate.c b/gst/videorate/gstvideorate.c
index de53b7a..14d628f 100644
--- a/gst/videorate/gstvideorate.c
+++ b/gst/videorate/gstvideorate.c
@@ -63,8 +63,6 @@
  * ]| Capture video from a V4L device, and adjust the stream to 12.5 fps before
  * encoding to Ogg/Theora.
  * </refsect2>
- *
- * Last reviewed on 2006-09-02 (0.10.11)
  */
 
 #ifdef HAVE_CONFIG_H
@@ -200,8 +198,6 @@
    * GstVideoRate:skip-to-first:
    * 
    * Don't produce buffers before the first one we receive.
-   *
-   * Since: 0.10.25
    */
   g_object_class_install_property (object_class, PROP_SKIP_TO_FIRST,
       g_param_spec_boolean ("skip-to-first", "Skip to first buffer",
@@ -212,8 +208,6 @@
    * GstVideoRate:drop-only:
    *
    * Only drop frames, no duplicates are produced.
-   *
-   * Since: 0.10.36
    */
   g_object_class_install_property (object_class, PROP_DROP_ONLY,
       g_param_spec_boolean ("drop-only", "Only Drop",
@@ -226,8 +220,6 @@
    * Arrange for maximum framerate by dropping frames beyond a certain framerate,
    * where the framerate is calculated using a moving average over the
    * configured.
-   *
-   * Since: 0.10.36
    */
   g_object_class_install_property (object_class, PROP_AVERAGE_PERIOD,
       g_param_spec_uint64 ("average-period", "Period over which to average",
@@ -239,8 +231,6 @@
    * GstVideoRate:max-rate:
    *
    * maximum framerate to pass through
-   *
-   * Since: 0.10.36
    */
   g_object_class_install_property (object_class, PROP_MAX_RATE,
       g_param_spec_int ("max-rate", "maximum framerate",
@@ -482,8 +472,6 @@
   gboolean ret = TRUE;
   gint rate_numerator, rate_denominator;
 
-  videorate = GST_VIDEO_RATE (trans);
-
   GST_DEBUG_OBJECT (trans, "setcaps called in: %" GST_PTR_FORMAT
       " out: %" GST_PTR_FORMAT, in_caps, out_caps);
 
diff --git a/gst/videoscale/Makefile.in b/gst/videoscale/Makefile.in
index a80ac89..890f5cb 100644
--- a/gst/videoscale/Makefile.in
+++ b/gst/videoscale/Makefile.in
@@ -111,7 +111,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -457,9 +456,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/gst/videoscale/gstvideoscale.c b/gst/videoscale/gstvideoscale.c
index e752931..97d5648 100644
--- a/gst/videoscale/gstvideoscale.c
+++ b/gst/videoscale/gstvideoscale.c
@@ -44,8 +44,6 @@
  * ]| Decode an Ogg/Theora and display the video using xvimagesink with a width
  * of 50.
  * </refsect2>
- *
- * Last reviewed on 2006-03-02 (0.10.4)
  */
 
 /* 
diff --git a/gst/videoscale/gstvideoscaleorc-dist.c b/gst/videoscale/gstvideoscaleorc-dist.c
index 0ecc1fa..85b37fd 100644
--- a/gst/videoscale/gstvideoscaleorc-dist.c
+++ b/gst/videoscale/gstvideoscaleorc-dist.c
@@ -153,8 +153,8 @@
 #define ORC_CLAMP_UW(x) ORC_CLAMP(x,ORC_UW_MIN,ORC_UW_MAX)
 #define ORC_CLAMP_SL(x) ORC_CLAMP(x,ORC_SL_MIN,ORC_SL_MAX)
 #define ORC_CLAMP_UL(x) ORC_CLAMP(x,ORC_UL_MIN,ORC_UL_MAX)
-#define ORC_SWAP_W(x) ((((x)&0xff)<<8) | (((x)&0xff00)>>8))
-#define ORC_SWAP_L(x) ((((x)&0xff)<<24) | (((x)&0xff00)<<8) | (((x)&0xff0000)>>8) | (((x)&0xff000000)>>24))
+#define ORC_SWAP_W(x) ((((x)&0xffU)<<8) | (((x)&0xff00U)>>8))
+#define ORC_SWAP_L(x) ((((x)&0xffU)<<24) | (((x)&0xff00U)<<8) | (((x)&0xff0000U)>>8) | (((x)&0xff000000U)>>24))
 #define ORC_SWAP_Q(x) ((((x)&ORC_UINT64_C(0xff))<<56) | (((x)&ORC_UINT64_C(0xff00))<<40) | (((x)&ORC_UINT64_C(0xff0000))<<24) | (((x)&ORC_UINT64_C(0xff000000))<<8) | (((x)&ORC_UINT64_C(0xff00000000))>>8) | (((x)&ORC_UINT64_C(0xff0000000000))>>24) | (((x)&ORC_UINT64_C(0xff000000000000))>>40) | (((x)&ORC_UINT64_C(0xff00000000000000))>>56))
 #define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset)))
 #define ORC_DENORMAL(x) ((x) & ((((x)&0x7f800000) == 0) ? 0xff800000 : 0xffffffff))
diff --git a/gst/videotestsrc/Makefile.in b/gst/videotestsrc/Makefile.in
index d31c8a0..273fc18 100644
--- a/gst/videotestsrc/Makefile.in
+++ b/gst/videotestsrc/Makefile.in
@@ -111,7 +111,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -465,9 +464,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/gst/videotestsrc/gstvideotestsrc.c b/gst/videotestsrc/gstvideotestsrc.c
index 88d41e7..6951b3d 100644
--- a/gst/videotestsrc/gstvideotestsrc.c
+++ b/gst/videotestsrc/gstvideotestsrc.c
@@ -624,6 +624,7 @@
   gboolean update;
   guint size, min, max;
   GstStructure *config;
+  GstCaps *caps = NULL;
 
   videotestsrc = GST_VIDEO_TEST_SRC (bsrc);
 
@@ -649,6 +650,11 @@
   }
 
   config = gst_buffer_pool_get_config (pool);
+
+  gst_query_parse_allocation (query, &caps, NULL);
+  if (caps)
+    gst_buffer_pool_config_set_params (config, caps, size, min, max);
+
   if (gst_query_find_allocation_meta (query, GST_VIDEO_META_API_TYPE, NULL)) {
     gst_buffer_pool_config_add_option (config,
         GST_BUFFER_POOL_OPTION_VIDEO_META);
@@ -702,6 +708,8 @@
     videotestsrc->bayer = TRUE;
     videotestsrc->x_invert = x_inv;
     videotestsrc->y_invert = y_inv;
+  } else {
+    goto unsupported_caps;
   }
 
   /* create chroma subsampler */
@@ -758,6 +766,11 @@
     GST_DEBUG_OBJECT (bsrc, "failed to parse caps");
     return FALSE;
   }
+unsupported_caps:
+  {
+    GST_DEBUG_OBJECT (bsrc, "unsupported caps: %" GST_PTR_FORMAT, caps);
+    return FALSE;
+  }
 }
 
 static gboolean
@@ -781,10 +794,35 @@
       gst_query_set_convert (query, src_fmt, src_val, dest_fmt, dest_val);
       break;
     }
+    case GST_QUERY_DURATION:{
+      if (bsrc->num_buffers != -1) {
+        GstFormat format;
+
+        gst_query_parse_duration (query, &format, NULL);
+        switch (format) {
+          case GST_FORMAT_TIME:{
+            gint64 dur = gst_util_uint64_scale_int_round (bsrc->num_buffers
+                * GST_SECOND, src->info.fps_d, src->info.fps_n);
+            res = TRUE;
+            gst_query_set_duration (query, GST_FORMAT_TIME, dur);
+            goto done;
+          }
+          case GST_FORMAT_BYTES:
+            res = TRUE;
+            gst_query_set_duration (query, GST_FORMAT_BYTES,
+                bsrc->num_buffers * src->info.size);
+            goto done;
+          default:
+            break;
+        }
+      }
+      /* fall through */
+    }
     default:
       res = GST_BASE_SRC_CLASS (parent_class)->query (bsrc, query);
       break;
   }
+done:
   return res;
 }
 
diff --git a/gst/videotestsrc/gstvideotestsrcorc-dist.c b/gst/videotestsrc/gstvideotestsrcorc-dist.c
index 63ca17a..c49a1ed 100644
--- a/gst/videotestsrc/gstvideotestsrcorc-dist.c
+++ b/gst/videotestsrc/gstvideotestsrcorc-dist.c
@@ -121,8 +121,8 @@
 #define ORC_CLAMP_UW(x) ORC_CLAMP(x,ORC_UW_MIN,ORC_UW_MAX)
 #define ORC_CLAMP_SL(x) ORC_CLAMP(x,ORC_SL_MIN,ORC_SL_MAX)
 #define ORC_CLAMP_UL(x) ORC_CLAMP(x,ORC_UL_MIN,ORC_UL_MAX)
-#define ORC_SWAP_W(x) ((((x)&0xff)<<8) | (((x)&0xff00)>>8))
-#define ORC_SWAP_L(x) ((((x)&0xff)<<24) | (((x)&0xff00)<<8) | (((x)&0xff0000)>>8) | (((x)&0xff000000)>>24))
+#define ORC_SWAP_W(x) ((((x)&0xffU)<<8) | (((x)&0xff00U)>>8))
+#define ORC_SWAP_L(x) ((((x)&0xffU)<<24) | (((x)&0xff00U)<<8) | (((x)&0xff0000U)>>8) | (((x)&0xff000000U)>>24))
 #define ORC_SWAP_Q(x) ((((x)&ORC_UINT64_C(0xff))<<56) | (((x)&ORC_UINT64_C(0xff00))<<40) | (((x)&ORC_UINT64_C(0xff0000))<<24) | (((x)&ORC_UINT64_C(0xff000000))<<8) | (((x)&ORC_UINT64_C(0xff00000000))>>8) | (((x)&ORC_UINT64_C(0xff0000000000))>>24) | (((x)&ORC_UINT64_C(0xff000000000000))>>40) | (((x)&ORC_UINT64_C(0xff00000000000000))>>56))
 #define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset)))
 #define ORC_DENORMAL(x) ((x) & ((((x)&0x7f800000) == 0) ? 0xff800000 : 0xffffffff))
diff --git a/gst/videotestsrc/videotestsrc.c b/gst/videotestsrc/videotestsrc.c
index 1235782..b4adf90 100644
--- a/gst/videotestsrc/videotestsrc.c
+++ b/gst/videotestsrc/videotestsrc.c
@@ -1134,9 +1134,9 @@
 
 #if G_BYTE_ORDER == G_LITTLE_ENDIAN
   value = (p->color->A << 0) | (p->color->Y << 8) |
-      (p->color->U << 16) | (p->color->V << 24);
+      (p->color->U << 16) | ((guint32) p->color->V << 24);
 #else
-  value = (p->color->A << 24) | (p->color->Y << 16) |
+  value = ((guint32) p->color->A << 24) | (p->color->Y << 16) |
       (p->color->U << 8) | (p->color->V << 0);
 #endif
 
diff --git a/gst/volume/Makefile.in b/gst/volume/Makefile.in
index e1a3815..c9b6b58 100644
--- a/gst/volume/Makefile.in
+++ b/gst/volume/Makefile.in
@@ -110,7 +110,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -450,9 +449,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/gst/volume/gstvolumeorc-dist.c b/gst/volume/gstvolumeorc-dist.c
index 1a3f519..4d37493 100644
--- a/gst/volume/gstvolumeorc-dist.c
+++ b/gst/volume/gstvolumeorc-dist.c
@@ -148,8 +148,8 @@
 #define ORC_CLAMP_UW(x) ORC_CLAMP(x,ORC_UW_MIN,ORC_UW_MAX)
 #define ORC_CLAMP_SL(x) ORC_CLAMP(x,ORC_SL_MIN,ORC_SL_MAX)
 #define ORC_CLAMP_UL(x) ORC_CLAMP(x,ORC_UL_MIN,ORC_UL_MAX)
-#define ORC_SWAP_W(x) ((((x)&0xff)<<8) | (((x)&0xff00)>>8))
-#define ORC_SWAP_L(x) ((((x)&0xff)<<24) | (((x)&0xff00)<<8) | (((x)&0xff0000)>>8) | (((x)&0xff000000)>>24))
+#define ORC_SWAP_W(x) ((((x)&0xffU)<<8) | (((x)&0xff00U)>>8))
+#define ORC_SWAP_L(x) ((((x)&0xffU)<<24) | (((x)&0xff00U)<<8) | (((x)&0xff0000U)>>8) | (((x)&0xff000000U)>>24))
 #define ORC_SWAP_Q(x) ((((x)&ORC_UINT64_C(0xff))<<56) | (((x)&ORC_UINT64_C(0xff00))<<40) | (((x)&ORC_UINT64_C(0xff0000))<<24) | (((x)&ORC_UINT64_C(0xff000000))<<8) | (((x)&ORC_UINT64_C(0xff00000000))>>8) | (((x)&ORC_UINT64_C(0xff0000000000))>>24) | (((x)&ORC_UINT64_C(0xff000000000000))>>40) | (((x)&ORC_UINT64_C(0xff00000000000000))>>56))
 #define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset)))
 #define ORC_DENORMAL(x) ((x) & ((((x)&0x7f800000) == 0) ? 0xff800000 : 0xffffffff))
diff --git a/install-sh b/install-sh
index 377bb86..a9244eb 100755
--- a/install-sh
+++ b/install-sh
@@ -1,7 +1,7 @@
 #!/bin/sh
 # install - install a program, script, or datafile
 
-scriptversion=2011-11-20.07; # UTC
+scriptversion=2011-01-19.21; # UTC
 
 # This originates from X11R5 (mit/util/scripts/install.sh), which was
 # later released in X11R6 (xc/config/util/install.sh) with the
@@ -35,7 +35,7 @@
 # FSF changes to this file are in the public domain.
 #
 # Calling this script install-sh is preferred over install.sh, to prevent
-# 'make' implicit rules from creating a file called install from it
+# `make' implicit rules from creating a file called install from it
 # when there is no Makefile.
 #
 # This script is compatible with the BSD install script, but was written
@@ -156,7 +156,7 @@
     -s) stripcmd=$stripprog;;
 
     -t) dst_arg=$2
-	# Protect names problematic for 'test' and other utilities.
+	# Protect names problematic for `test' and other utilities.
 	case $dst_arg in
 	  -* | [=\(\)!]) dst_arg=./$dst_arg;;
 	esac
@@ -190,7 +190,7 @@
     fi
     shift # arg
     dst_arg=$arg
-    # Protect names problematic for 'test' and other utilities.
+    # Protect names problematic for `test' and other utilities.
     case $dst_arg in
       -* | [=\(\)!]) dst_arg=./$dst_arg;;
     esac
@@ -202,7 +202,7 @@
     echo "$0: no input file specified." >&2
     exit 1
   fi
-  # It's OK to call 'install-sh -d' without argument.
+  # It's OK to call `install-sh -d' without argument.
   # This can happen when creating conditional directories.
   exit 0
 fi
@@ -240,7 +240,7 @@
 
 for src
 do
-  # Protect names problematic for 'test' and other utilities.
+  # Protect names problematic for `test' and other utilities.
   case $src in
     -* | [=\(\)!]) src=./$src;;
   esac
@@ -354,7 +354,7 @@
 	      if test -z "$dir_arg" || {
 		   # Check for POSIX incompatibilities with -m.
 		   # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
-		   # other-writable bit of parent directory when it shouldn't.
+		   # other-writeable bit of parent directory when it shouldn't.
 		   # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
 		   ls_ld_tmpdir=`ls -ld "$tmpdir"`
 		   case $ls_ld_tmpdir in
diff --git a/m4/Makefile.in b/m4/Makefile.in
index 308569f..5db18ae 100644
--- a/m4/Makefile.in
+++ b/m4/Makefile.in
@@ -85,7 +85,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -338,9 +337,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/missing b/missing
index cdea514..86a8fc3 100755
--- a/missing
+++ b/missing
@@ -1,10 +1,11 @@
 #! /bin/sh
-# Common wrapper for a few potentially missing GNU programs.
+# Common stub for a few missing GNU programs while installing.
 
-scriptversion=2012-06-26.16; # UTC
+scriptversion=2012-01-06.13; # UTC
 
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
-# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
+# 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
+# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
 
 # 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
@@ -25,40 +26,68 @@
 # the same distribution terms that you use for the rest of that program.
 
 if test $# -eq 0; then
-  echo 1>&2 "Try '$0 --help' for more information"
+  echo 1>&2 "Try \`$0 --help' for more information"
   exit 1
 fi
 
+run=:
+sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
+sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
+
+# In the cases where this matters, `missing' is being run in the
+# srcdir already.
+if test -f configure.ac; then
+  configure_ac=configure.ac
+else
+  configure_ac=configure.in
+fi
+
+msg="missing on your system"
+
 case $1 in
-
-  --is-lightweight)
-    # Used by our autoconf macros to check whether the available missing
-    # script is modern enough.
-    exit 0
-    ;;
-
-  --run)
-    # Back-compat with the calling convention used by older automake.
-    shift
-    ;;
+--run)
+  # Try to run requested program, and just exit if it succeeds.
+  run=
+  shift
+  "$@" && exit 0
+  # Exit code 63 means version mismatch.  This often happens
+  # when the user try to use an ancient version of a tool on
+  # a file that requires a minimum version.  In this case we
+  # we should proceed has if the program had been absent, or
+  # if --run hadn't been passed.
+  if test $? = 63; then
+    run=:
+    msg="probably too old"
+  fi
+  ;;
 
   -h|--h|--he|--hel|--help)
     echo "\
 $0 [OPTION]... PROGRAM [ARGUMENT]...
 
-Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
-to PROGRAM being missing or too old.
+Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
+error status if there is no known handling for PROGRAM.
 
 Options:
   -h, --help      display this help and exit
   -v, --version   output version information and exit
+  --run           try to run the given command, and emulate it if it fails
 
 Supported PROGRAM values:
-  aclocal   autoconf  autoheader   autom4te  automake  makeinfo
-  bison     yacc      flex         lex       help2man
+  aclocal      touch file \`aclocal.m4'
+  autoconf     touch file \`configure'
+  autoheader   touch file \`config.h.in'
+  autom4te     touch the output file, or create a stub one
+  automake     touch all \`Makefile.in' files
+  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
+  flex         create \`lex.yy.c', if possible, from existing .c
+  help2man     touch the output file
+  lex          create \`lex.yy.c', if possible, from existing .c
+  makeinfo     touch the output file
+  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
 
-Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
-'g' are ignored when checking the name.
+Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
+\`g' are ignored when checking the name.
 
 Send bug reports to <bug-automake@gnu.org>."
     exit $?
@@ -70,141 +99,228 @@
     ;;
 
   -*)
-    echo 1>&2 "$0: unknown '$1' option"
-    echo 1>&2 "Try '$0 --help' for more information"
+    echo 1>&2 "$0: Unknown \`$1' option"
+    echo 1>&2 "Try \`$0 --help' for more information"
     exit 1
     ;;
 
 esac
 
-# Run the given program, remember its exit status.
-"$@"; st=$?
+# normalize program name to check for.
+program=`echo "$1" | sed '
+  s/^gnu-//; t
+  s/^gnu//; t
+  s/^g//; t'`
 
-# If it succeeded, we are done.
-test $st -eq 0 && exit 0
-
-# Also exit now if we it failed (or wasn't found), and '--version' was
-# passed; such an option is passed most likely to detect whether the
-# program is present and works.
-case $2 in --version|--help) exit $st;; esac
-
-# Exit code 63 means version mismatch.  This often happens when the user
-# tries to use an ancient version of a tool on a file that requires a
-# minimum version.
-if test $st -eq 63; then
-  msg="probably too old"
-elif test $st -eq 127; then
-  # Program was missing.
-  msg="missing on your system"
-else
-  # Program was found and executed, but failed.  Give up.
-  exit $st
-fi
-
-perl_URL=http://www.perl.org/
-flex_URL=http://flex.sourceforge.net/
-gnu_software_URL=http://www.gnu.org/software
-
-program_details ()
-{
-  case $1 in
-    aclocal|automake)
-      echo "The '$1' program is part of the GNU Automake package:"
-      echo "<$gnu_software_URL/automake>"
-      echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
-      echo "<$gnu_software_URL/autoconf>"
-      echo "<$gnu_software_URL/m4/>"
-      echo "<$perl_URL>"
-      ;;
-    autoconf|autom4te|autoheader)
-      echo "The '$1' program is part of the GNU Autoconf package:"
-      echo "<$gnu_software_URL/autoconf/>"
-      echo "It also requires GNU m4 and Perl in order to run:"
-      echo "<$gnu_software_URL/m4/>"
-      echo "<$perl_URL>"
-      ;;
-  esac
-}
-
-give_advice ()
-{
-  # Normalize program name to check for.
-  normalized_program=`echo "$1" | sed '
-    s/^gnu-//; t
-    s/^gnu//; t
-    s/^g//; t'`
-
-  printf '%s\n' "'$1' is $msg."
-
-  configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
-  case $normalized_program in
-    autoconf*)
-      echo "You should only need it if you modified 'configure.ac',"
-      echo "or m4 files included by it."
-      program_details 'autoconf'
-      ;;
-    autoheader*)
-      echo "You should only need it if you modified 'acconfig.h' or"
-      echo "$configure_deps."
-      program_details 'autoheader'
-      ;;
-    automake*)
-      echo "You should only need it if you modified 'Makefile.am' or"
-      echo "$configure_deps."
-      program_details 'automake'
-      ;;
-    aclocal*)
-      echo "You should only need it if you modified 'acinclude.m4' or"
-      echo "$configure_deps."
-      program_details 'aclocal'
-      ;;
-   autom4te*)
-      echo "You might have modified some maintainer files that require"
-      echo "the 'automa4te' program to be rebuilt."
-      program_details 'autom4te'
-      ;;
-    bison*|yacc*)
-      echo "You should only need it if you modified a '.y' file."
-      echo "You may want to install the GNU Bison package:"
-      echo "<$gnu_software_URL/bison/>"
-      ;;
-    lex*|flex*)
-      echo "You should only need it if you modified a '.l' file."
-      echo "You may want to install the Fast Lexical Analyzer package:"
-      echo "<$flex_URL>"
-      ;;
-    help2man*)
-      echo "You should only need it if you modified a dependency" \
-           "of a man page."
-      echo "You may want to install the GNU Help2man package:"
-      echo "<$gnu_software_URL/help2man/>"
+# Now exit if we have it, but it failed.  Also exit now if we
+# don't have it and --version was passed (most likely to detect
+# the program).  This is about non-GNU programs, so use $1 not
+# $program.
+case $1 in
+  lex*|yacc*)
+    # Not GNU programs, they don't have --version.
     ;;
-    makeinfo*)
-      echo "You should only need it if you modified a '.texi' file, or"
-      echo "any other file indirectly affecting the aspect of the manual."
-      echo "You might want to install the Texinfo package:"
-      echo "<$gnu_software_URL/texinfo/>"
-      echo "The spurious makeinfo call might also be the consequence of"
-      echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
-      echo "want to install GNU make:"
-      echo "<$gnu_software_URL/make/>"
-      ;;
-    *)
-      echo "You might have modified some files without having the proper"
-      echo "tools for further handling them.  Check the 'README' file, it"
-      echo "often tells you about the needed prerequisites for installing"
-      echo "this package.  You may also peek at any GNU archive site, in"
-      echo "case some other package contains this missing '$1' program."
-      ;;
-  esac
-}
 
-give_advice "$1" | sed -e '1s/^/WARNING: /' \
-                       -e '2,$s/^/         /' >&2
+  *)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+       # Could not run --version or --help.  This is probably someone
+       # running `$TOOL --version' or `$TOOL --help' to check whether
+       # $TOOL exists and not knowing $TOOL uses missing.
+       exit 1
+    fi
+    ;;
+esac
 
-# Propagate the correct exit status (expected to be 127 for a program
-# not found, 63 for a program that failed due to version mismatch).
-exit $st
+# If it does not exist, or fails to run (possibly an outdated version),
+# try to emulate it.
+case $program in
+  aclocal*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
+         to install the \`Automake' and \`Perl' packages.  Grab them from
+         any GNU archive site."
+    touch aclocal.m4
+    ;;
+
+  autoconf*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`${configure_ac}'.  You might want to install the
+         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
+         archive site."
+    touch configure
+    ;;
+
+  autoheader*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
+         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
+         from any GNU archive site."
+    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
+    test -z "$files" && files="config.h"
+    touch_files=
+    for f in $files; do
+      case $f in
+      *:*) touch_files="$touch_files "`echo "$f" |
+				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
+      *) touch_files="$touch_files $f.in";;
+      esac
+    done
+    touch $touch_files
+    ;;
+
+  automake*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
+         You might want to install the \`Automake' and \`Perl' packages.
+         Grab them from any GNU archive site."
+    find . -type f -name Makefile.am -print |
+	   sed 's/\.am$/.in/' |
+	   while read f; do touch "$f"; done
+    ;;
+
+  autom4te*)
+    echo 1>&2 "\
+WARNING: \`$1' is needed, but is $msg.
+         You might have modified some files without having the
+         proper tools for further handling them.
+         You can get \`$1' as part of \`Autoconf' from any GNU
+         archive site."
+
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+    if test -f "$file"; then
+	touch $file
+    else
+	test -z "$file" || exec >$file
+	echo "#! /bin/sh"
+	echo "# Created by GNU Automake missing as a replacement of"
+	echo "#  $ $@"
+	echo "exit 0"
+	chmod +x $file
+	exit 1
+    fi
+    ;;
+
+  bison*|yacc*)
+    echo 1>&2 "\
+WARNING: \`$1' $msg.  You should only need it if
+         you modified a \`.y' file.  You may need the \`Bison' package
+         in order for those modifications to take effect.  You can get
+         \`Bison' from any GNU archive site."
+    rm -f y.tab.c y.tab.h
+    if test $# -ne 1; then
+        eval LASTARG=\${$#}
+	case $LASTARG in
+	*.y)
+	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
+	    if test -f "$SRCFILE"; then
+	         cp "$SRCFILE" y.tab.c
+	    fi
+	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
+	    if test -f "$SRCFILE"; then
+	         cp "$SRCFILE" y.tab.h
+	    fi
+	  ;;
+	esac
+    fi
+    if test ! -f y.tab.h; then
+	echo >y.tab.h
+    fi
+    if test ! -f y.tab.c; then
+	echo 'main() { return 0; }' >y.tab.c
+    fi
+    ;;
+
+  lex*|flex*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified a \`.l' file.  You may need the \`Flex' package
+         in order for those modifications to take effect.  You can get
+         \`Flex' from any GNU archive site."
+    rm -f lex.yy.c
+    if test $# -ne 1; then
+        eval LASTARG=\${$#}
+	case $LASTARG in
+	*.l)
+	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
+	    if test -f "$SRCFILE"; then
+	         cp "$SRCFILE" lex.yy.c
+	    fi
+	  ;;
+	esac
+    fi
+    if test ! -f lex.yy.c; then
+	echo 'main() { return 0; }' >lex.yy.c
+    fi
+    ;;
+
+  help2man*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+	 you modified a dependency of a manual page.  You may need the
+	 \`Help2man' package in order for those modifications to take
+	 effect.  You can get \`Help2man' from any GNU archive site."
+
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+    if test -f "$file"; then
+	touch $file
+    else
+	test -z "$file" || exec >$file
+	echo ".ab help2man is required to generate this page"
+	exit $?
+    fi
+    ;;
+
+  makeinfo*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified a \`.texi' or \`.texinfo' file, or any other file
+         indirectly affecting the aspect of the manual.  The spurious
+         call might also be the consequence of using a buggy \`make' (AIX,
+         DU, IRIX).  You might want to install the \`Texinfo' package or
+         the \`GNU make' package.  Grab either from any GNU archive site."
+    # The file to touch is that specified with -o ...
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+    if test -z "$file"; then
+      # ... or it is the one specified with @setfilename ...
+      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+      file=`sed -n '
+	/^@setfilename/{
+	  s/.* \([^ ]*\) *$/\1/
+	  p
+	  q
+	}' $infile`
+      # ... or it is derived from the source name (dir/f.texi becomes f.info)
+      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
+    fi
+    # If the file does not exist, the user really needs makeinfo;
+    # let's fail without touching anything.
+    test -f $file || exit 1
+    touch $file
+    ;;
+
+  *)
+    echo 1>&2 "\
+WARNING: \`$1' is needed, and is $msg.
+         You might have modified some files without having the
+         proper tools for further handling them.  Check the \`README' file,
+         it often tells you about the needed prerequisites for installing
+         this package.  You may also peek at any GNU archive site, in case
+         some other package would contain this missing \`$1' program."
+    exit 1
+    ;;
+esac
+
+exit 0
 
 # Local variables:
 # eval: (add-hook 'write-file-hooks 'time-stamp)
diff --git a/pkgconfig/Makefile.in b/pkgconfig/Makefile.in
index 190f85a..6f0eef1 100644
--- a/pkgconfig/Makefile.in
+++ b/pkgconfig/Makefile.in
@@ -110,7 +110,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -404,9 +403,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/po/Makefile.in.in b/po/Makefile.in.in
index 1283c32..fecf500 100644
--- a/po/Makefile.in.in
+++ b/po/Makefile.in.in
@@ -15,9 +15,6 @@
 VERSION = @VERSION@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 
-# thomas: add GETTEXT_PACKAGE substitution as used in Makevars
-GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
-
 SHELL = /bin/sh
 @SET_MAKE@
 
diff --git a/po/Makevars b/po/Makevars
index 10ed9f6..7c6f963 100644
--- a/po/Makevars
+++ b/po/Makevars
@@ -1,7 +1,7 @@
 # Makefile variables for PO directory in any package using GNU gettext.
 
 # Usually the message domain is the same as the package name.
-DOMAIN = $(GETTEXT_PACKAGE)
+DOMAIN = gst-plugins-base-1.0
 
 # These two variables depend on the location of this directory.
 subdir = po
diff --git a/po/af.gmo b/po/af.gmo
index cc1fcf0..b4cf6f5 100644
--- a/po/af.gmo
+++ b/po/af.gmo
Binary files differ
diff --git a/po/af.po b/po/af.po
index 8cab3c8..542019c 100644
--- a/po/af.po
+++ b/po/af.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins 0.7.6\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-04-18 11:32+0200\n"
+"POT-Creation-Date: 2014-05-03 17:46+0200\n"
 "PO-Revision-Date: 2004-03-18 14:16+0200\n"
 "Last-Translator: Petri Jooste <rkwjpj@puk.ac.za>\n"
 "Language-Team: Afrikaans <i18n@af.org.za>\n"
@@ -515,6 +515,9 @@
 msgid "Buffering..."
 msgstr ""
 
+msgid "Clock lost, selecting a new one\n"
+msgstr ""
+
 msgid "Print version information and exit"
 msgstr ""
 
@@ -527,6 +530,18 @@
 msgid "Enable gapless playback"
 msgstr ""
 
+msgid "Shuffle playlist"
+msgstr ""
+
+msgid "Interactive control via keyboard"
+msgstr ""
+
+msgid "Volume"
+msgstr "Volume"
+
+msgid "Playlist file containing input media files"
+msgstr ""
+
 #, c-format
 msgid "Usage: %s FILE1|URI1 [FILE2|URI2] [FILE3|URI3] ..."
 msgstr ""
@@ -654,9 +669,6 @@
 #~ msgid "Could not open device \"%s\" for reading."
 #~ msgstr "Kon nie toestel \"%s\" oopmaak vir lees nie."
 
-#~ msgid "Volume"
-#~ msgstr "Volume"
-
 #~ msgid "Speaker"
 #~ msgstr "Luidspreker"
 
diff --git a/po/az.gmo b/po/az.gmo
index 6b2f3db..b1e4788 100644
--- a/po/az.gmo
+++ b/po/az.gmo
Binary files differ
diff --git a/po/az.po b/po/az.po
index e3c251e..b12c722 100644
--- a/po/az.po
+++ b/po/az.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-0.8.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-04-18 11:32+0200\n"
+"POT-Creation-Date: 2014-05-03 17:46+0200\n"
 "PO-Revision-Date: 2004-03-19 18:29+0200\n"
 "Last-Translator: Metin Amiroff <metin@karegen.com>\n"
 "Language-Team: Azerbaijani <translation-team-az@lists.sourceforge.net>\n"
@@ -516,6 +516,9 @@
 msgid "Buffering..."
 msgstr ""
 
+msgid "Clock lost, selecting a new one\n"
+msgstr ""
+
 msgid "Print version information and exit"
 msgstr ""
 
@@ -528,6 +531,18 @@
 msgid "Enable gapless playback"
 msgstr ""
 
+msgid "Shuffle playlist"
+msgstr ""
+
+msgid "Interactive control via keyboard"
+msgstr ""
+
+msgid "Volume"
+msgstr "Səs"
+
+msgid "Playlist file containing input media files"
+msgstr ""
+
 #, c-format
 msgid "Usage: %s FILE1|URI1 [FILE2|URI2] [FILE3|URI3] ..."
 msgstr ""
@@ -655,9 +670,6 @@
 #~ msgid "Could not open device \"%s\" for reading."
 #~ msgstr "\"%s\" avadanlığı oxuma üçün açıla bilmədi."
 
-#~ msgid "Volume"
-#~ msgstr "Səs"
-
 #~ msgid "Speaker"
 #~ msgstr "Spiker"
 
diff --git a/po/bg.gmo b/po/bg.gmo
index 04748b9..b8dd68b 100644
--- a/po/bg.gmo
+++ b/po/bg.gmo
Binary files differ
diff --git a/po/bg.po b/po/bg.po
index ad5802b..4ef8c75 100644
--- a/po/bg.po
+++ b/po/bg.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-base 0.10.32.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-04-18 11:32+0200\n"
+"POT-Creation-Date: 2014-05-03 17:46+0200\n"
 "PO-Revision-Date: 2011-04-26 22:31+0300\n"
 "Last-Translator: Alexander Shopov <ash@kambanaria.org>\n"
 "Language-Team: Bulgarian <dict@fsa-bg.org>\n"
@@ -519,6 +519,9 @@
 msgid "Buffering..."
 msgstr ""
 
+msgid "Clock lost, selecting a new one\n"
+msgstr ""
+
 msgid "Print version information and exit"
 msgstr ""
 
@@ -531,6 +534,18 @@
 msgid "Enable gapless playback"
 msgstr ""
 
+msgid "Shuffle playlist"
+msgstr ""
+
+msgid "Interactive control via keyboard"
+msgstr ""
+
+msgid "Volume"
+msgstr ""
+
+msgid "Playlist file containing input media files"
+msgstr ""
+
 #, c-format
 msgid "Usage: %s FILE1|URI1 [FILE2|URI2] [FILE3|URI3] ..."
 msgstr ""
diff --git a/po/ca.gmo b/po/ca.gmo
index f37acce..de746d0 100644
--- a/po/ca.gmo
+++ b/po/ca.gmo
Binary files differ
diff --git a/po/ca.po b/po/ca.po
index 68176ff..373d0a3 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-base 0.10.32.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-04-18 11:32+0200\n"
+"POT-Creation-Date: 2014-05-03 17:46+0200\n"
 "PO-Revision-Date: 2012-01-01 14:19+0100\n"
 "Last-Translator: Gil Forcada <gforcada@gnome.org>\n"
 "Language-Team: Catalan <ca@dodds.net>\n"
@@ -531,6 +531,9 @@
 msgid "Buffering..."
 msgstr ""
 
+msgid "Clock lost, selecting a new one\n"
+msgstr ""
+
 msgid "Print version information and exit"
 msgstr ""
 
@@ -543,6 +546,18 @@
 msgid "Enable gapless playback"
 msgstr ""
 
+msgid "Shuffle playlist"
+msgstr ""
+
+msgid "Interactive control via keyboard"
+msgstr ""
+
+msgid "Volume"
+msgstr ""
+
+msgid "Playlist file containing input media files"
+msgstr ""
+
 #, c-format
 msgid "Usage: %s FILE1|URI1 [FILE2|URI2] [FILE3|URI3] ..."
 msgstr ""
diff --git a/po/cs.gmo b/po/cs.gmo
index ffef4e1..d5ac9a7 100644
--- a/po/cs.gmo
+++ b/po/cs.gmo
Binary files differ
diff --git a/po/cs.po b/po/cs.po
index fe07f1e..f4b7676 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -4,14 +4,14 @@
 #
 # Miloslav Trmac <mitr@volny.cz>, 2004.
 # Petr Kovar <pknbe@volny.cz>, 2007, 2008, 2009, 2010, 2011.
-# Marek Černocký <marek@manet.cz>, 2013.
+# Marek Černocký <marek@manet.cz>, 2013, 2014.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: gst-plugins-base-1.1.4\n"
+"Project-Id-Version: gst-plugins-base-1.2.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-04-18 11:32+0200\n"
-"PO-Revision-Date: 2013-09-18 09:38+0200\n"
+"POT-Creation-Date: 2014-05-03 17:46+0200\n"
+"PO-Revision-Date: 2014-03-09 12:37+0100\n"
 "Last-Translator: Marek Černocký <marek@manet.cz>\n"
 "Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n"
 "Language: cs\n"
@@ -208,7 +208,7 @@
 msgstr "RLE (Run-Length Encoding)"
 
 msgid "Timed Text"
-msgstr ""
+msgstr "Timed Text"
 
 msgid "Subtitle"
 msgstr "Titulek"
@@ -237,25 +237,25 @@
 msgid "Uncompressed gray"
 msgstr "Nekomprimované stupně šedi"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Uncompressed packed YUV %s"
-msgstr "Nekomprimovaný %s YUV %s"
+msgstr "Nekomprimovaný zabalený YUV %s"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Uncompressed semi-planar YUV %s"
-msgstr "Nekomprimovaný %s YUV %s"
+msgstr "Nekomprimovaný poloplanární YUV %s"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Uncompressed planar YUV %s"
-msgstr "Nekomprimovaný %s YUV %s"
+msgstr "Nekomprimovaný planární YUV %s"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Uncompressed palettized %d-bit %s"
-msgstr "Nekomprimovaný %s %dbitový %s"
+msgstr "Nekomprimovaný %dbitový %s s paletou"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Uncompressed %d-bit %s"
-msgstr "Nekomprimovaný %s %dbitový %s"
+msgstr "Nekomprimovaný %dbitový %s"
 
 #, c-format
 msgid "DivX MPEG-4 Version %d"
@@ -516,23 +516,38 @@
 msgstr "Počáteční klíčové místo, od kterého se má zvuk spouštět"
 
 msgid "Buffering..."
+msgstr "Ukládá se do vyrovnávací paměti…"
+
+msgid "Clock lost, selecting a new one\n"
 msgstr ""
 
 msgid "Print version information and exit"
-msgstr ""
+msgstr "Vypsat informace o verzi a skončit"
 
 msgid "Video sink to use (default is autovideosink)"
-msgstr ""
+msgstr "Spotřebič videa, který se má použít (výchozí je autovideosink)"
 
 msgid "Audio sink to use (default is autoaudiosink)"
-msgstr ""
+msgstr "Spotřebič zvuku, který se má použít (výchozí je autoaudiosink)"
 
 msgid "Enable gapless playback"
+msgstr "Zapnout přehrávání bez mezer"
+
+msgid "Shuffle playlist"
+msgstr ""
+
+msgid "Interactive control via keyboard"
+msgstr ""
+
+msgid "Volume"
+msgstr ""
+
+msgid "Playlist file containing input media files"
 msgstr ""
 
 #, c-format
 msgid "Usage: %s FILE1|URI1 [FILE2|URI2] [FILE3|URI3] ..."
-msgstr ""
+msgstr "Použítí: %s SOUBOR1|URI1 [SOUBOR2|URI2] [SOUBOR3|URI3] …"
 
 msgid "You must provide at least one filename or URI to play."
-msgstr ""
+msgstr "Musíte zadat minimálně jeden název souboru nebo adresu URI k přehrání."
diff --git a/po/da.gmo b/po/da.gmo
index 95bd1d2..331ceea 100644
--- a/po/da.gmo
+++ b/po/da.gmo
Binary files differ
diff --git a/po/da.po b/po/da.po
index a58842d..09ba60f 100644
--- a/po/da.po
+++ b/po/da.po
@@ -33,7 +33,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-base 1.2.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-04-18 11:32+0200\n"
+"POT-Creation-Date: 2014-05-03 17:46+0200\n"
 "PO-Revision-Date: 2013-12-08 16:38+0100\n"
 "Last-Translator: Joe Hansen <joedalton2@yahoo.dk>\n"
 "Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
@@ -554,6 +554,9 @@
 msgid "Buffering..."
 msgstr "Mellemlagrer ..."
 
+msgid "Clock lost, selecting a new one\n"
+msgstr ""
+
 msgid "Print version information and exit"
 msgstr "Vis versionsinformation og afslut"
 
@@ -566,6 +569,18 @@
 msgid "Enable gapless playback"
 msgstr "Aktiver afspilning uden huller"
 
+msgid "Shuffle playlist"
+msgstr ""
+
+msgid "Interactive control via keyboard"
+msgstr ""
+
+msgid "Volume"
+msgstr ""
+
+msgid "Playlist file containing input media files"
+msgstr ""
+
 #, c-format
 msgid "Usage: %s FILE1|URI1 [FILE2|URI2] [FILE3|URI3] ..."
 msgstr "Brug: %s FIL1|URI1 [FIL2|URI2] [FIL3|URI3] ..."
diff --git a/po/de.gmo b/po/de.gmo
index bd5e400..53b801c 100644
--- a/po/de.gmo
+++ b/po/de.gmo
Binary files differ
diff --git a/po/de.po b/po/de.po
index 43ba0f1..c0c2398 100644
--- a/po/de.po
+++ b/po/de.po
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-base 1.2.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-04-18 11:32+0200\n"
+"POT-Creation-Date: 2014-05-03 17:46+0200\n"
 "PO-Revision-Date: 2013-12-16 00:25+0100\n"
 "Last-Translator: Christian Kirbach <christian.kirbach@gmail.com>\n"
 "Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
@@ -521,6 +521,9 @@
 msgid "Buffering..."
 msgstr "Zwischenspeichern …"
 
+msgid "Clock lost, selecting a new one\n"
+msgstr ""
+
 msgid "Print version information and exit"
 msgstr "Versionsinformationen ausgeben und beenden"
 
@@ -533,6 +536,18 @@
 msgid "Enable gapless playback"
 msgstr "Lückenlose Wiedergabe einschalten"
 
+msgid "Shuffle playlist"
+msgstr ""
+
+msgid "Interactive control via keyboard"
+msgstr ""
+
+msgid "Volume"
+msgstr ""
+
+msgid "Playlist file containing input media files"
+msgstr ""
+
 #, c-format
 msgid "Usage: %s FILE1|URI1 [FILE2|URI2] [FILE3|URI3] ..."
 msgstr "Aufruf: %s DATEI1|URI1 [DATEI2|URI2] [DATEI3|URI3] ..."
diff --git a/po/el.gmo b/po/el.gmo
index 5bdb073..83025fb 100644
--- a/po/el.gmo
+++ b/po/el.gmo
Binary files differ
diff --git a/po/el.po b/po/el.po
index 01c0acf..7a43aa8 100644
--- a/po/el.po
+++ b/po/el.po
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-base 0.10.32.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-04-18 11:32+0200\n"
+"POT-Creation-Date: 2014-05-03 17:46+0200\n"
 "PO-Revision-Date: 2012-05-05 19:13+0100\n"
 "Last-Translator: Savvas Radevic <vicedar@gmail.com>\n"
 "Language-Team: Greek <team@lists.gnome.gr>\n"
@@ -537,6 +537,9 @@
 msgid "Buffering..."
 msgstr ""
 
+msgid "Clock lost, selecting a new one\n"
+msgstr ""
+
 msgid "Print version information and exit"
 msgstr ""
 
@@ -549,6 +552,18 @@
 msgid "Enable gapless playback"
 msgstr ""
 
+msgid "Shuffle playlist"
+msgstr ""
+
+msgid "Interactive control via keyboard"
+msgstr ""
+
+msgid "Volume"
+msgstr ""
+
+msgid "Playlist file containing input media files"
+msgstr ""
+
 #, c-format
 msgid "Usage: %s FILE1|URI1 [FILE2|URI2] [FILE3|URI3] ..."
 msgstr ""
diff --git a/po/en_GB.gmo b/po/en_GB.gmo
index d03a484..8d03b4e 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 6e8cde4..500b9b0 100644
--- a/po/en_GB.po
+++ b/po/en_GB.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins 0.8.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-04-18 11:32+0200\n"
+"POT-Creation-Date: 2014-05-03 17:46+0200\n"
 "PO-Revision-Date: 2004-04-26 10:41-0400\n"
 "Last-Translator: Gareth Owen <gowen72@yahoo.com>\n"
 "Language-Team: English (British) <en_gb@li.org>\n"
@@ -514,6 +514,9 @@
 msgid "Buffering..."
 msgstr ""
 
+msgid "Clock lost, selecting a new one\n"
+msgstr ""
+
 msgid "Print version information and exit"
 msgstr ""
 
@@ -526,6 +529,18 @@
 msgid "Enable gapless playback"
 msgstr ""
 
+msgid "Shuffle playlist"
+msgstr ""
+
+msgid "Interactive control via keyboard"
+msgstr ""
+
+msgid "Volume"
+msgstr "Volume"
+
+msgid "Playlist file containing input media files"
+msgstr ""
+
 #, c-format
 msgid "Usage: %s FILE1|URI1 [FILE2|URI2] [FILE3|URI3] ..."
 msgstr ""
@@ -660,9 +675,6 @@
 #~ msgid "Your OSS device could not be probed correctly"
 #~ msgstr "Your oss device could not be probed correctly"
 
-#~ msgid "Volume"
-#~ msgstr "Volume"
-
 #~ msgid "Speaker"
 #~ msgstr "Speaker"
 
diff --git a/po/eo.gmo b/po/eo.gmo
index 59dec39..2600869 100644
--- a/po/eo.gmo
+++ b/po/eo.gmo
Binary files differ
diff --git a/po/eo.po b/po/eo.po
index bf16e13..b332d67 100644
--- a/po/eo.po
+++ b/po/eo.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-base 0.10.32.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-04-18 11:32+0200\n"
+"POT-Creation-Date: 2014-05-03 17:46+0200\n"
 "PO-Revision-Date: 2011-06-04 21:11+0100\n"
 "Last-Translator: Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>\n"
 "Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n"
@@ -510,6 +510,9 @@
 msgid "Buffering..."
 msgstr ""
 
+msgid "Clock lost, selecting a new one\n"
+msgstr ""
+
 msgid "Print version information and exit"
 msgstr ""
 
@@ -522,6 +525,18 @@
 msgid "Enable gapless playback"
 msgstr ""
 
+msgid "Shuffle playlist"
+msgstr ""
+
+msgid "Interactive control via keyboard"
+msgstr ""
+
+msgid "Volume"
+msgstr ""
+
+msgid "Playlist file containing input media files"
+msgstr ""
+
 #, c-format
 msgid "Usage: %s FILE1|URI1 [FILE2|URI2] [FILE3|URI3] ..."
 msgstr ""
diff --git a/po/es.gmo b/po/es.gmo
index b7e97c9..6085936 100644
--- a/po/es.gmo
+++ b/po/es.gmo
Binary files differ
diff --git a/po/es.po b/po/es.po
index 1aa5eb6..0d3158c 100644
--- a/po/es.po
+++ b/po/es.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-base 0.10.32.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-04-18 11:32+0200\n"
+"POT-Creation-Date: 2014-05-03 17:46+0200\n"
 "PO-Revision-Date: 2011-10-02 15:46+0200\n"
 "Last-Translator: Jorge González González <aloriel@gmail.com>\n"
 "Language-Team: Spanish <es@li.org>\n"
@@ -520,6 +520,9 @@
 msgid "Buffering..."
 msgstr ""
 
+msgid "Clock lost, selecting a new one\n"
+msgstr ""
+
 msgid "Print version information and exit"
 msgstr ""
 
@@ -532,6 +535,18 @@
 msgid "Enable gapless playback"
 msgstr ""
 
+msgid "Shuffle playlist"
+msgstr ""
+
+msgid "Interactive control via keyboard"
+msgstr ""
+
+msgid "Volume"
+msgstr ""
+
+msgid "Playlist file containing input media files"
+msgstr ""
+
 #, c-format
 msgid "Usage: %s FILE1|URI1 [FILE2|URI2] [FILE3|URI3] ..."
 msgstr ""
diff --git a/po/eu.gmo b/po/eu.gmo
index 1a391d7..e9a77d7 100644
--- a/po/eu.gmo
+++ b/po/eu.gmo
Binary files differ
diff --git a/po/eu.po b/po/eu.po
index 52c5929..3017835 100644
--- a/po/eu.po
+++ b/po/eu.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-base-0.10.26.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-04-18 11:32+0200\n"
+"POT-Creation-Date: 2014-05-03 17:46+0200\n"
 "PO-Revision-Date: 2010-03-25 12:32+0100\n"
 "Last-Translator: Mikel Olasagasti Uranga <hey_neken@mundurat.net>\n"
 "Language-Team: Basque <translation-team-eu@lists.sourceforge.net>\n"
@@ -521,6 +521,9 @@
 msgid "Buffering..."
 msgstr ""
 
+msgid "Clock lost, selecting a new one\n"
+msgstr ""
+
 msgid "Print version information and exit"
 msgstr ""
 
@@ -533,6 +536,18 @@
 msgid "Enable gapless playback"
 msgstr ""
 
+msgid "Shuffle playlist"
+msgstr ""
+
+msgid "Interactive control via keyboard"
+msgstr ""
+
+msgid "Volume"
+msgstr ""
+
+msgid "Playlist file containing input media files"
+msgstr ""
+
 #, c-format
 msgid "Usage: %s FILE1|URI1 [FILE2|URI2] [FILE3|URI3] ..."
 msgstr ""
diff --git a/po/fi.gmo b/po/fi.gmo
index a7c7f45..b019022 100644
--- a/po/fi.gmo
+++ b/po/fi.gmo
Binary files differ
diff --git a/po/fi.po b/po/fi.po
index 0d9082f..c250735 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -12,7 +12,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-base 0.10.30.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-04-18 11:32+0200\n"
+"POT-Creation-Date: 2014-05-03 17:46+0200\n"
 "PO-Revision-Date: 2010-12-31 23:21+0200\n"
 "Last-Translator: Tommi Vainikainen <Tommi.Vainikainen@iki.fi>\n"
 "Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
@@ -523,6 +523,9 @@
 msgid "Buffering..."
 msgstr ""
 
+msgid "Clock lost, selecting a new one\n"
+msgstr ""
+
 msgid "Print version information and exit"
 msgstr ""
 
@@ -535,6 +538,18 @@
 msgid "Enable gapless playback"
 msgstr ""
 
+msgid "Shuffle playlist"
+msgstr ""
+
+msgid "Interactive control via keyboard"
+msgstr ""
+
+msgid "Volume"
+msgstr ""
+
+msgid "Playlist file containing input media files"
+msgstr ""
+
 #, c-format
 msgid "Usage: %s FILE1|URI1 [FILE2|URI2] [FILE3|URI3] ..."
 msgstr ""
diff --git a/po/fr.gmo b/po/fr.gmo
index d23af21..5f22ea6 100644
--- a/po/fr.gmo
+++ b/po/fr.gmo
Binary files differ
diff --git a/po/fr.po b/po/fr.po
index 81d1335..0544dc0 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-base 0.10.32.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-04-18 11:32+0200\n"
+"POT-Creation-Date: 2014-05-03 17:46+0200\n"
 "PO-Revision-Date: 2011-04-28 09:19+0200\n"
 "Last-Translator: Claude Paroz <claude@2xlibre.net>\n"
 "Language-Team: French <traduc@traduc.org>\n"
@@ -539,6 +539,9 @@
 msgid "Buffering..."
 msgstr ""
 
+msgid "Clock lost, selecting a new one\n"
+msgstr ""
+
 msgid "Print version information and exit"
 msgstr ""
 
@@ -551,6 +554,18 @@
 msgid "Enable gapless playback"
 msgstr ""
 
+msgid "Shuffle playlist"
+msgstr ""
+
+msgid "Interactive control via keyboard"
+msgstr ""
+
+msgid "Volume"
+msgstr ""
+
+msgid "Playlist file containing input media files"
+msgstr ""
+
 #, c-format
 msgid "Usage: %s FILE1|URI1 [FILE2|URI2] [FILE3|URI3] ..."
 msgstr ""
diff --git a/po/gl.gmo b/po/gl.gmo
index e3bad68..09ef0fd 100644
--- a/po/gl.gmo
+++ b/po/gl.gmo
Binary files differ
diff --git a/po/gl.po b/po/gl.po
index 98f3cc7..3abfb65 100644
--- a/po/gl.po
+++ b/po/gl.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-base 1.0.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-04-18 11:32+0200\n"
+"POT-Creation-Date: 2014-05-03 17:46+0200\n"
 "PO-Revision-Date: 2012-12-15 03:40+0200\n"
 "Last-Translator: Fran Dieguez <frandieguez@ubuntu.com>\n"
 "Language-Team: Galician <proxecto@trasno.net>\n"
@@ -518,6 +518,9 @@
 msgid "Buffering..."
 msgstr ""
 
+msgid "Clock lost, selecting a new one\n"
+msgstr ""
+
 msgid "Print version information and exit"
 msgstr ""
 
@@ -530,6 +533,18 @@
 msgid "Enable gapless playback"
 msgstr ""
 
+msgid "Shuffle playlist"
+msgstr ""
+
+msgid "Interactive control via keyboard"
+msgstr ""
+
+msgid "Volume"
+msgstr ""
+
+msgid "Playlist file containing input media files"
+msgstr ""
+
 #, c-format
 msgid "Usage: %s FILE1|URI1 [FILE2|URI2] [FILE3|URI3] ..."
 msgstr ""
diff --git a/po/gst-plugins-base-1.0.pot b/po/gst-plugins-base-1.0.pot
index 42bf883..ccda483 100644
--- a/po/gst-plugins-base-1.0.pot
+++ b/po/gst-plugins-base-1.0.pot
@@ -5,9 +5,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: gst-plugins-base 1.2.4\n"
+"Project-Id-Version: gst-plugins-base 1.3.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-04-18 11:32+0200\n"
+"POT-Creation-Date: 2014-05-03 17:46+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -16,87 +16,87 @@
 "Content-Type: text/plain; charset=CHARSET\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: ext/alsa/gstalsasink.c:565
+#: ext/alsa/gstalsasink.c:563
 msgid "Could not open device for playback in mono mode."
 msgstr ""
 
-#: ext/alsa/gstalsasink.c:567
+#: ext/alsa/gstalsasink.c:565
 msgid "Could not open device for playback in stereo mode."
 msgstr ""
 
-#: ext/alsa/gstalsasink.c:571
+#: ext/alsa/gstalsasink.c:569
 #, c-format
 msgid "Could not open device for playback in %d-channel mode."
 msgstr ""
 
-#: ext/alsa/gstalsasink.c:844
+#: ext/alsa/gstalsasink.c:842
 msgid ""
 "Could not open audio device for playback. Device is being used by another "
 "application."
 msgstr ""
 
-#: ext/alsa/gstalsasink.c:849
+#: ext/alsa/gstalsasink.c:847
 msgid "Could not open audio device for playback."
 msgstr ""
 
-#: ext/alsa/gstalsasink.c:1051
+#: ext/alsa/gstalsasink.c:1061
 msgid "Error outputting to audio device. The device has been disconnected."
 msgstr ""
 
-#: ext/alsa/gstalsasrc.c:438
+#: ext/alsa/gstalsasrc.c:436
 msgid "Could not open device for recording in mono mode."
 msgstr ""
 
-#: ext/alsa/gstalsasrc.c:440
+#: ext/alsa/gstalsasrc.c:438
 msgid "Could not open device for recording in stereo mode."
 msgstr ""
 
-#: ext/alsa/gstalsasrc.c:444
+#: ext/alsa/gstalsasrc.c:442
 #, c-format
 msgid "Could not open device for recording in %d-channel mode"
 msgstr ""
 
-#: ext/alsa/gstalsasrc.c:736
+#: ext/alsa/gstalsasrc.c:734
 msgid ""
 "Could not open audio device for recording. Device is being used by another "
 "application."
 msgstr ""
 
-#: ext/alsa/gstalsasrc.c:741
+#: ext/alsa/gstalsasrc.c:739
 msgid "Could not open audio device for recording."
 msgstr ""
 
-#: ext/alsa/gstalsasrc.c:983
+#: ext/alsa/gstalsasrc.c:993
 msgid "Error recording from audio device. The device has been disconnected."
 msgstr ""
 
-#: ext/cdparanoia/gstcdparanoiasrc.c:279 ext/cdparanoia/gstcdparanoiasrc.c:285
+#: ext/cdparanoia/gstcdparanoiasrc.c:277 ext/cdparanoia/gstcdparanoiasrc.c:283
 msgid "Could not open CD device for reading."
 msgstr ""
 
-#: ext/cdparanoia/gstcdparanoiasrc.c:411
+#: ext/cdparanoia/gstcdparanoiasrc.c:409
 msgid "Could not seek CD."
 msgstr ""
 
-#: ext/cdparanoia/gstcdparanoiasrc.c:419
+#: ext/cdparanoia/gstcdparanoiasrc.c:417
 msgid "Could not read CD."
 msgstr ""
 
-#: ext/ogg/gstoggdemux.c:4610
+#: ext/ogg/gstoggdemux.c:4605
 msgid "Internal data stream error."
 msgstr ""
 
-#: gst/encoding/gstencodebin.c:1474 gst/playback/gstplaybin2.c:3072
-#: gst/playback/gstplaysink.c:1369 gst/playback/gstplaysink.c:1386
-#: gst/playback/gstplaysink.c:1706 gst/playback/gstplaysink.c:2269
-#: gst/playback/gstplaysink.c:2318 gst/playback/gstplaysink.c:2333
-#: gst/playback/gstplaysink.c:2358 gst/playback/gstplaysink.c:2390
-#: gst/playback/gstplaysink.c:2520 gst/playback/gstplaysink.c:2894
-#: gst/playback/gstplaysink.c:2903 gst/playback/gstplaysink.c:2912
-#: gst/playback/gstplaysink.c:2921 gst/playback/gstplaysink.c:4121
+#: gst/encoding/gstencodebin.c:1487 gst/playback/gstplaybin2.c:3099
+#: gst/playback/gstplaysink.c:1479 gst/playback/gstplaysink.c:1496
+#: gst/playback/gstplaysink.c:1838 gst/playback/gstplaysink.c:2418
+#: gst/playback/gstplaysink.c:2467 gst/playback/gstplaysink.c:2482
+#: gst/playback/gstplaysink.c:2507 gst/playback/gstplaysink.c:2539
+#: gst/playback/gstplaysink.c:2691 gst/playback/gstplaysink.c:3082
+#: gst/playback/gstplaysink.c:3091 gst/playback/gstplaysink.c:3100
+#: gst/playback/gstplaysink.c:3109 gst/playback/gstplaysink.c:4315
 #: gst/playback/gstplaysinkconvertbin.c:97
 #: gst/playback/gstplaysinkconvertbin.c:117
-#: gst/playback/gsturidecodebin.c:1461
+#: gst/playback/gsturidecodebin.c:1470
 #, c-format
 msgid "Missing element '%s' - check your GStreamer installation."
 msgstr ""
@@ -110,96 +110,96 @@
 msgid "Could not determine type of stream"
 msgstr ""
 
-#: gst/playback/gstdecodebin2.c:2482
+#: gst/playback/gstdecodebin2.c:2512
 msgid "This appears to be a text file"
 msgstr ""
 
-#: gst/playback/gstplaybin2.c:5127
+#: gst/playback/gstplaybin2.c:5161
 msgid "Could not create \"uridecodebin\" element."
 msgstr ""
 
-#: gst/playback/gstplaysink.c:1800
+#: gst/playback/gstplaysink.c:1937
 #, c-format
 msgid "Both autovideosink and %s elements are missing."
 msgstr ""
 
-#: gst/playback/gstplaysink.c:1804
+#: gst/playback/gstplaysink.c:1941
 msgid "The autovideosink element is missing."
 msgstr ""
 
-#: gst/playback/gstplaysink.c:1809
+#: gst/playback/gstplaysink.c:1946
 #, c-format
 msgid "Configured videosink %s is not working."
 msgstr ""
 
-#: gst/playback/gstplaysink.c:1813
+#: gst/playback/gstplaysink.c:1950
 #, c-format
 msgid "Both autovideosink and %s elements are not working."
 msgstr ""
 
-#: gst/playback/gstplaysink.c:1817
+#: gst/playback/gstplaysink.c:1954
 msgid "The autovideosink element is not working."
 msgstr ""
 
-#: gst/playback/gstplaysink.c:2306
+#: gst/playback/gstplaysink.c:2455
 msgid "Custom text sink element is not usable."
 msgstr ""
 
-#: gst/playback/gstplaysink.c:2640
+#: gst/playback/gstplaysink.c:2816
 msgid "No volume control found"
 msgstr ""
 
-#: gst/playback/gstplaysink.c:2670
+#: gst/playback/gstplaysink.c:2846
 #, c-format
 msgid "Both autoaudiosink and %s elements are missing."
 msgstr ""
 
-#: gst/playback/gstplaysink.c:2674
+#: gst/playback/gstplaysink.c:2850
 msgid "The autoaudiosink element is missing."
 msgstr ""
 
-#: gst/playback/gstplaysink.c:2679
+#: gst/playback/gstplaysink.c:2855
 #, c-format
 msgid "Configured audiosink %s is not working."
 msgstr ""
 
-#: gst/playback/gstplaysink.c:2683
+#: gst/playback/gstplaysink.c:2859
 #, c-format
 msgid "Both autoaudiosink and %s elements are not working."
 msgstr ""
 
-#: gst/playback/gstplaysink.c:2687
+#: gst/playback/gstplaysink.c:2863
 msgid "The autoaudiosink element is not working."
 msgstr ""
 
-#: gst/playback/gstplaysink.c:2997 gst/playback/gstplaysink.c:3002
+#: gst/playback/gstplaysink.c:3185 gst/playback/gstplaysink.c:3190
 msgid "Can't play a text file without video or visualizations."
 msgstr ""
 
-#: gst/playback/gsturidecodebin.c:930
+#: gst/playback/gsturidecodebin.c:939
 #, c-format
 msgid "No decoder available for type '%s'."
 msgstr ""
 
-#: gst/playback/gsturidecodebin.c:1367
+#: gst/playback/gsturidecodebin.c:1376
 msgid "No URI specified to play from."
 msgstr ""
 
-#: gst/playback/gsturidecodebin.c:1373
+#: gst/playback/gsturidecodebin.c:1382
 #, c-format
 msgid "Invalid URI \"%s\"."
 msgstr ""
 
-#: gst/playback/gsturidecodebin.c:1380
+#: gst/playback/gsturidecodebin.c:1389
 msgid "This stream type cannot be played yet."
 msgstr ""
 
-#: gst/playback/gsturidecodebin.c:1398
+#: gst/playback/gsturidecodebin.c:1407
 #, c-format
 msgid "No URI handler implemented for \"%s\"."
 msgstr ""
 
-#: gst/playback/gsturidecodebin.c:2251
+#: gst/playback/gsturidecodebin.c:2271
 msgid "Source element is invalid."
 msgstr ""
 
@@ -212,7 +212,7 @@
 msgid "Can't record audio fast enough"
 msgstr ""
 
-#: gst-libs/gst/audio/gstaudiocdsrc.c:1646
+#: gst-libs/gst/audio/gstaudiocdsrc.c:1654
 msgid "This CD has no audio tracks"
 msgstr ""
 
@@ -237,184 +237,184 @@
 msgid "Free Lossless Audio Codec (FLAC)"
 msgstr ""
 
-#: gst-libs/gst/pbutils/descriptions.c:173
 #: gst-libs/gst/pbutils/descriptions.c:174
+#: gst-libs/gst/pbutils/descriptions.c:175
 msgid "Lossless True Audio (TTA)"
 msgstr ""
 
-#: gst-libs/gst/pbutils/descriptions.c:182
+#: gst-libs/gst/pbutils/descriptions.c:183
 msgid "Windows Media Speech"
 msgstr ""
 
-#: gst-libs/gst/pbutils/descriptions.c:196
+#: gst-libs/gst/pbutils/descriptions.c:198
 msgid "CYUV Lossless"
 msgstr ""
 
-#: gst-libs/gst/pbutils/descriptions.c:201
+#: gst-libs/gst/pbutils/descriptions.c:203
 msgid "FFMpeg v1"
 msgstr ""
 
-#: gst-libs/gst/pbutils/descriptions.c:215
+#: gst-libs/gst/pbutils/descriptions.c:217
 msgid "Lossless MSZH"
 msgstr ""
 
-#: gst-libs/gst/pbutils/descriptions.c:226
+#: gst-libs/gst/pbutils/descriptions.c:228
 msgid "Run-length encoding"
 msgstr ""
 
-#: gst-libs/gst/pbutils/descriptions.c:272
+#: gst-libs/gst/pbutils/descriptions.c:274
 msgid "Timed Text"
 msgstr ""
 
-#: gst-libs/gst/pbutils/descriptions.c:276
+#: gst-libs/gst/pbutils/descriptions.c:278
 msgid "Subtitle"
 msgstr ""
 
-#: gst-libs/gst/pbutils/descriptions.c:277
+#: gst-libs/gst/pbutils/descriptions.c:279
 msgid "MPL2 subtitle format"
 msgstr ""
 
-#: gst-libs/gst/pbutils/descriptions.c:278
+#: gst-libs/gst/pbutils/descriptions.c:280
 msgid "DKS subtitle format"
 msgstr ""
 
-#: gst-libs/gst/pbutils/descriptions.c:279
+#: gst-libs/gst/pbutils/descriptions.c:281
 msgid "QTtext subtitle format"
 msgstr ""
 
-#: gst-libs/gst/pbutils/descriptions.c:280
+#: gst-libs/gst/pbutils/descriptions.c:282
 msgid "Sami subtitle format"
 msgstr ""
 
-#: gst-libs/gst/pbutils/descriptions.c:281
+#: gst-libs/gst/pbutils/descriptions.c:283
 msgid "TMPlayer subtitle format"
 msgstr ""
 
-#: gst-libs/gst/pbutils/descriptions.c:285
+#: gst-libs/gst/pbutils/descriptions.c:287
 msgid "Kate subtitle format"
 msgstr ""
 
-#: gst-libs/gst/pbutils/descriptions.c:349
 #: gst-libs/gst/pbutils/descriptions.c:352
-#: gst-libs/gst/pbutils/descriptions.c:402
+#: gst-libs/gst/pbutils/descriptions.c:355
+#: gst-libs/gst/pbutils/descriptions.c:405
 msgid "Uncompressed video"
 msgstr ""
 
-#: gst-libs/gst/pbutils/descriptions.c:357
+#: gst-libs/gst/pbutils/descriptions.c:360
 msgid "Uncompressed gray"
 msgstr ""
 
-#: gst-libs/gst/pbutils/descriptions.c:380
+#: gst-libs/gst/pbutils/descriptions.c:383
 #, c-format
 msgid "Uncompressed packed YUV %s"
 msgstr ""
 
-#: gst-libs/gst/pbutils/descriptions.c:382
+#: gst-libs/gst/pbutils/descriptions.c:385
 #, c-format
 msgid "Uncompressed semi-planar YUV %s"
 msgstr ""
 
-#: gst-libs/gst/pbutils/descriptions.c:384
+#: gst-libs/gst/pbutils/descriptions.c:387
 #, c-format
 msgid "Uncompressed planar YUV %s"
 msgstr ""
 
-#: gst-libs/gst/pbutils/descriptions.c:395
+#: gst-libs/gst/pbutils/descriptions.c:398
 #, c-format
 msgid "Uncompressed palettized %d-bit %s"
 msgstr ""
 
-#: gst-libs/gst/pbutils/descriptions.c:398
+#: gst-libs/gst/pbutils/descriptions.c:401
 #, c-format
 msgid "Uncompressed %d-bit %s"
 msgstr ""
 
-#: gst-libs/gst/pbutils/descriptions.c:452
+#: gst-libs/gst/pbutils/descriptions.c:458
 #, c-format
 msgid "DivX MPEG-4 Version %d"
 msgstr ""
 
-#: gst-libs/gst/pbutils/descriptions.c:682
+#: gst-libs/gst/pbutils/descriptions.c:693
 msgid "Uncompressed audio"
 msgstr ""
 
-#: gst-libs/gst/pbutils/descriptions.c:688
+#: gst-libs/gst/pbutils/descriptions.c:699
 #, c-format
 msgid "Raw %d-bit %s audio"
 msgstr ""
 
-#: gst-libs/gst/pbutils/descriptions.c:788
+#: gst-libs/gst/pbutils/descriptions.c:799
 msgid "Audio CD source"
 msgstr ""
 
-#: gst-libs/gst/pbutils/descriptions.c:791
+#: gst-libs/gst/pbutils/descriptions.c:802
 msgid "DVD source"
 msgstr ""
 
-#: gst-libs/gst/pbutils/descriptions.c:794
+#: gst-libs/gst/pbutils/descriptions.c:805
 msgid "Real Time Streaming Protocol (RTSP) source"
 msgstr ""
 
-#: gst-libs/gst/pbutils/descriptions.c:798
+#: gst-libs/gst/pbutils/descriptions.c:809
 msgid "Microsoft Media Server (MMS) protocol source"
 msgstr ""
 
-#: gst-libs/gst/pbutils/descriptions.c:806
+#: gst-libs/gst/pbutils/descriptions.c:817
 #, c-format
 msgid "%s protocol source"
 msgstr ""
 
-#: gst-libs/gst/pbutils/descriptions.c:878
+#: gst-libs/gst/pbutils/descriptions.c:889
 #, c-format
 msgid "%s video RTP depayloader"
 msgstr ""
 
-#: gst-libs/gst/pbutils/descriptions.c:880
+#: gst-libs/gst/pbutils/descriptions.c:891
 #, c-format
 msgid "%s audio RTP depayloader"
 msgstr ""
 
-#: gst-libs/gst/pbutils/descriptions.c:882
+#: gst-libs/gst/pbutils/descriptions.c:893
 #, c-format
 msgid "%s RTP depayloader"
 msgstr ""
 
-#: gst-libs/gst/pbutils/descriptions.c:889
+#: gst-libs/gst/pbutils/descriptions.c:900
 #, c-format
 msgid "%s demuxer"
 msgstr ""
 
-#: gst-libs/gst/pbutils/descriptions.c:891
+#: gst-libs/gst/pbutils/descriptions.c:902
 #, c-format
 msgid "%s decoder"
 msgstr ""
 
-#: gst-libs/gst/pbutils/descriptions.c:929
+#: gst-libs/gst/pbutils/descriptions.c:940
 #, c-format
 msgid "%s video RTP payloader"
 msgstr ""
 
-#: gst-libs/gst/pbutils/descriptions.c:931
+#: gst-libs/gst/pbutils/descriptions.c:942
 #, c-format
 msgid "%s audio RTP payloader"
 msgstr ""
 
-#: gst-libs/gst/pbutils/descriptions.c:933
+#: gst-libs/gst/pbutils/descriptions.c:944
 #, c-format
 msgid "%s RTP payloader"
 msgstr ""
 
-#: gst-libs/gst/pbutils/descriptions.c:940
+#: gst-libs/gst/pbutils/descriptions.c:951
 #, c-format
 msgid "%s muxer"
 msgstr ""
 
-#: gst-libs/gst/pbutils/descriptions.c:942
+#: gst-libs/gst/pbutils/descriptions.c:953
 #, c-format
 msgid "%s encoder"
 msgstr ""
 
-#: gst-libs/gst/pbutils/descriptions.c:974
+#: gst-libs/gst/pbutils/descriptions.c:985
 #, c-format
 msgid "GStreamer element %s"
 msgstr ""
@@ -443,7 +443,7 @@
 msgid "Plugin or element of unknown type"
 msgstr ""
 
-#: gst-libs/gst/tag/gsttagdemux.c:1216
+#: gst-libs/gst/tag/gsttagdemux.c:1259
 msgid "Failed to read tag: not enough data"
 msgstr ""
 
@@ -664,31 +664,51 @@
 msgid "Initial key in which the sound starts"
 msgstr ""
 
-#: tools/gst-play.c:170
+#: tools/gst-play.c:218
 msgid "Buffering..."
 msgstr ""
 
-#: tools/gst-play.c:446
+#: tools/gst-play.c:239
+msgid "Clock lost, selecting a new one\n"
+msgstr ""
+
+#: tools/gst-play.c:664
 msgid "Print version information and exit"
 msgstr ""
 
-#: tools/gst-play.c:448
+#: tools/gst-play.c:666
 msgid "Video sink to use (default is autovideosink)"
 msgstr ""
 
-#: tools/gst-play.c:450
+#: tools/gst-play.c:668
 msgid "Audio sink to use (default is autoaudiosink)"
 msgstr ""
 
-#: tools/gst-play.c:452
+#: tools/gst-play.c:670
 msgid "Enable gapless playback"
 msgstr ""
 
-#: tools/gst-play.c:488
+#: tools/gst-play.c:672
+msgid "Shuffle playlist"
+msgstr ""
+
+#: tools/gst-play.c:674
+msgid "Interactive control via keyboard"
+msgstr ""
+
+#: tools/gst-play.c:676
+msgid "Volume"
+msgstr ""
+
+#: tools/gst-play.c:678
+msgid "Playlist file containing input media files"
+msgstr ""
+
+#: tools/gst-play.c:741
 #, c-format
 msgid "Usage: %s FILE1|URI1 [FILE2|URI2] [FILE3|URI3] ..."
 msgstr ""
 
-#: tools/gst-play.c:492
+#: tools/gst-play.c:745
 msgid "You must provide at least one filename or URI to play."
 msgstr ""
diff --git a/po/hr.gmo b/po/hr.gmo
index aefc456..382a481 100644
--- a/po/hr.gmo
+++ b/po/hr.gmo
Binary files differ
diff --git a/po/hr.po b/po/hr.po
index e3725a2..75acfda 100644
--- a/po/hr.po
+++ b/po/hr.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-base 0.10.32.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-04-18 11:32+0200\n"
+"POT-Creation-Date: 2014-05-03 17:46+0200\n"
 "PO-Revision-Date: 2012-04-16 04:19+0200\n"
 "Last-Translator: Tomislav Krznar <tomislav.krznar@gmail.com>\n"
 "Language-Team: Croatian <lokalizacija@linux.hr>\n"
@@ -518,6 +518,9 @@
 msgid "Buffering..."
 msgstr ""
 
+msgid "Clock lost, selecting a new one\n"
+msgstr ""
+
 msgid "Print version information and exit"
 msgstr ""
 
@@ -530,6 +533,18 @@
 msgid "Enable gapless playback"
 msgstr ""
 
+msgid "Shuffle playlist"
+msgstr ""
+
+msgid "Interactive control via keyboard"
+msgstr ""
+
+msgid "Volume"
+msgstr ""
+
+msgid "Playlist file containing input media files"
+msgstr ""
+
 #, c-format
 msgid "Usage: %s FILE1|URI1 [FILE2|URI2] [FILE3|URI3] ..."
 msgstr ""
diff --git a/po/hu.gmo b/po/hu.gmo
index 64ddff7..f1d9c99 100644
--- a/po/hu.gmo
+++ b/po/hu.gmo
Binary files differ
diff --git a/po/hu.po b/po/hu.po
index 1fbf626..04e40d5 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -4,20 +4,21 @@
 #
 # Laszlo Dvornik <dvornik@invitel.hu>, 2004.
 # Gabor Kelemen <kelemeng@gnome.hu>, 2006, 2007, 2008, 2009, 2012.
+# Balázs Úr <urbalazs@gmail.com>, 2014.
 msgid ""
 msgstr ""
-"Project-Id-Version: gst-plugins-base 1.0.3\n"
+"Project-Id-Version: gst-plugins-base 1.2.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-04-18 11:32+0200\n"
-"PO-Revision-Date: 2012-11-29 14:05+0100\n"
-"Last-Translator: Gabor Kelemen <kelemeng@gnome.hu>\n"
+"POT-Creation-Date: 2014-05-03 17:46+0200\n"
+"PO-Revision-Date: 2014-03-20 18:47+0100\n"
+"Last-Translator: Balázs Úr <urbalazs@gmail.com>\n"
 "Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n"
 "Language: hu\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "X-Rosetta-Export-Date: 2007-03-10 00:18+0000\n"
-"X-Generator: Lokalize 1.4\n"
+"X-Generator: Lokalize 1.2\n"
 "Plural-Forms:  nplurals=2; plural=(n != 1);\n"
 
 msgid "Could not open device for playback in mono mode."
@@ -41,7 +42,7 @@
 msgstr "Nem lehet lejátszásra megnyitni a hangeszközt."
 
 msgid "Error outputting to audio device. The device has been disconnected."
-msgstr ""
+msgstr "Hiba a hangeszközre való kimenetküldéskor. Az eszközt leválasztották."
 
 msgid "Could not open device for recording in mono mode."
 msgstr "Nem lehet felvételre megnyitni az eszközt mono módban."
@@ -64,7 +65,7 @@
 msgstr "Nem lehet felvételre megnyitni a hangeszközt."
 
 msgid "Error recording from audio device. The device has been disconnected."
-msgstr ""
+msgstr "Hiba a hangeszközről való felvételkor. Az eszközt leválasztották."
 
 msgid "Could not open CD device for reading."
 msgstr "Nem lehet olvasásra megnyitni a CD-eszközt."
@@ -94,9 +95,8 @@
 msgid "This appears to be a text file"
 msgstr "Ez egy szövegfájlnak tűnik"
 
-#, fuzzy
 msgid "Could not create \"uridecodebin\" element."
-msgstr "Nem hozható létre „decodebin” elem"
+msgstr "Nem hozható létre „uridecodebin” elem."
 
 #, c-format
 msgid "Both autovideosink and %s elements are missing."
@@ -208,7 +208,7 @@
 msgstr "Műsorhossz-kódolás"
 
 msgid "Timed Text"
-msgstr ""
+msgstr "Időzített szöveg"
 
 msgid "Subtitle"
 msgstr "Felirat"
@@ -237,25 +237,25 @@
 msgid "Uncompressed gray"
 msgstr "Tömörítetlen szürke"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Uncompressed packed YUV %s"
-msgstr "Tömörítetlen pakolt YUV 4:2:2"
+msgstr "Tömörítetlen csomagolt YUV %s"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Uncompressed semi-planar YUV %s"
-msgstr "Tömörítetlen síkbeli YUV 4:2:0"
+msgstr "Tömörítetlen félig síkbeli YUV %s"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Uncompressed planar YUV %s"
-msgstr "Tömörítetlen síkbeli YUV 4:2:0"
+msgstr "Tömörítetlen síkbeli YUV %s"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Uncompressed palettized %d-bit %s"
-msgstr "Tömörítetlen, %s%d bites %s"
+msgstr "Tömörítetlen, %d-bites palettázott %s"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Uncompressed %d-bit %s"
-msgstr "Tömörítetlen, %s%d bites %s"
+msgstr "Tömörítetlen, %d-bites %s"
 
 #, c-format
 msgid "DivX MPEG-4 Version %d"
@@ -507,32 +507,47 @@
 msgstr "feldolgozatlan id3v2 címke keret"
 
 msgid "musical-key"
-msgstr ""
+msgstr "zenei kulcs"
 
 msgid "Initial key in which the sound starts"
-msgstr ""
+msgstr "Kezdeti kulcs, amelyben a hang indul"
 
 msgid "Buffering..."
+msgstr "Pufferelés…"
+
+msgid "Clock lost, selecting a new one\n"
 msgstr ""
 
 msgid "Print version information and exit"
-msgstr ""
+msgstr "Verzióinformációk kiírása és kilépés"
 
 msgid "Video sink to use (default is autovideosink)"
-msgstr ""
+msgstr "Használandó videosüllyesztés (az alapértelmezett az autovideosink)"
 
 msgid "Audio sink to use (default is autoaudiosink)"
-msgstr ""
+msgstr "Használandó hangsüllyesztés (az alapértelmezett az autoaudiosink)"
 
 msgid "Enable gapless playback"
+msgstr "Szünetmentes lejátszás bekapcsolása"
+
+msgid "Shuffle playlist"
+msgstr ""
+
+msgid "Interactive control via keyboard"
+msgstr ""
+
+msgid "Volume"
+msgstr ""
+
+msgid "Playlist file containing input media files"
 msgstr ""
 
 #, c-format
 msgid "Usage: %s FILE1|URI1 [FILE2|URI2] [FILE3|URI3] ..."
-msgstr ""
+msgstr "Használat: %s FÁJL1|URI1 [FÁJL2|URI2] [FÁJL3|URI3] …"
 
 msgid "You must provide at least one filename or URI to play."
-msgstr ""
+msgstr "Meg kell adnia legalább egy fájlnevet vagy URI-t a lejátszáshoz."
 
 #~ msgid "Uncompressed %s YUV %s"
 #~ msgstr "Tömörítetlen %s YUV %s"
diff --git a/po/id.gmo b/po/id.gmo
index b7ff499..9e840ee 100644
--- a/po/id.gmo
+++ b/po/id.gmo
Binary files differ
diff --git a/po/id.po b/po/id.po
index 2ecb5d4..b2e9df1 100644
--- a/po/id.po
+++ b/po/id.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-base 1.2.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-04-18 11:32+0200\n"
+"POT-Creation-Date: 2014-05-03 17:46+0200\n"
 "PO-Revision-Date: 2014-01-28 18:53+0700\n"
 "Last-Translator: Andhika Padmawan <andhika.padmawan@gmail.com>\n"
 "Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n"
@@ -510,6 +510,9 @@
 msgid "Buffering..."
 msgstr "Menyangga..."
 
+msgid "Clock lost, selecting a new one\n"
+msgstr ""
+
 msgid "Print version information and exit"
 msgstr "Cetak informasi versi lalu keluar"
 
@@ -522,6 +525,18 @@
 msgid "Enable gapless playback"
 msgstr "Aktifkan putar balik tanpa jeda"
 
+msgid "Shuffle playlist"
+msgstr ""
+
+msgid "Interactive control via keyboard"
+msgstr ""
+
+msgid "Volume"
+msgstr ""
+
+msgid "Playlist file containing input media files"
+msgstr ""
+
 #, c-format
 msgid "Usage: %s FILE1|URI1 [FILE2|URI2] [FILE3|URI3] ..."
 msgstr "Penggunaan: %s BERKAS1|URI1 [BERKAS2|URI2] [BERKAS3|URI3] ..."
diff --git a/po/it.gmo b/po/it.gmo
index 354a89f..36edf01 100644
--- a/po/it.gmo
+++ b/po/it.gmo
Binary files differ
diff --git a/po/it.po b/po/it.po
index ebcda21..6421367 100644
--- a/po/it.po
+++ b/po/it.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-base 0.10.28.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-04-18 11:32+0200\n"
+"POT-Creation-Date: 2014-05-03 17:46+0200\n"
 "PO-Revision-Date: 2010-04-28 14:27+0200\n"
 "Last-Translator: Luca Ferretti <elle.uca@infinito.it>\n"
 "Language-Team: Italian <tp@lists.linux.it>\n"
@@ -551,6 +551,9 @@
 msgid "Buffering..."
 msgstr ""
 
+msgid "Clock lost, selecting a new one\n"
+msgstr ""
+
 msgid "Print version information and exit"
 msgstr ""
 
@@ -563,6 +566,18 @@
 msgid "Enable gapless playback"
 msgstr ""
 
+msgid "Shuffle playlist"
+msgstr ""
+
+msgid "Interactive control via keyboard"
+msgstr ""
+
+msgid "Volume"
+msgstr ""
+
+msgid "Playlist file containing input media files"
+msgstr ""
+
 #, c-format
 msgid "Usage: %s FILE1|URI1 [FILE2|URI2] [FILE3|URI3] ..."
 msgstr ""
diff --git a/po/ja.gmo b/po/ja.gmo
index f936a48..2a912c3 100644
--- a/po/ja.gmo
+++ b/po/ja.gmo
Binary files differ
diff --git a/po/ja.po b/po/ja.po
index 7ff42f7..aef61cc 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-base 0.10.30.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-04-18 11:32+0200\n"
+"POT-Creation-Date: 2014-05-03 17:46+0200\n"
 "PO-Revision-Date: 2010-10-25 10:27+0900\n"
 "Last-Translator: Makoto Kato <makoto.kt@gmail.com>\n"
 "Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
@@ -522,6 +522,9 @@
 msgid "Buffering..."
 msgstr ""
 
+msgid "Clock lost, selecting a new one\n"
+msgstr ""
+
 msgid "Print version information and exit"
 msgstr ""
 
@@ -534,6 +537,18 @@
 msgid "Enable gapless playback"
 msgstr ""
 
+msgid "Shuffle playlist"
+msgstr ""
+
+msgid "Interactive control via keyboard"
+msgstr ""
+
+msgid "Volume"
+msgstr ""
+
+msgid "Playlist file containing input media files"
+msgstr ""
+
 #, c-format
 msgid "Usage: %s FILE1|URI1 [FILE2|URI2] [FILE3|URI3] ..."
 msgstr ""
diff --git a/po/lt.gmo b/po/lt.gmo
index f0b7d9d..5f3e501 100644
--- a/po/lt.gmo
+++ b/po/lt.gmo
Binary files differ
diff --git a/po/lt.po b/po/lt.po
index aa523a3..b6ea3d6 100644
--- a/po/lt.po
+++ b/po/lt.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-base-0.10.15.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-04-18 11:32+0200\n"
+"POT-Creation-Date: 2014-05-03 17:46+0200\n"
 "PO-Revision-Date: 2008-03-07 23:43+0200\n"
 "Last-Translator: Gintautas Miliauskas <gintas@akl.lt>\n"
 "Language-Team: Lithuanian <komp_lt@konferencijos.lt>\n"
@@ -524,6 +524,9 @@
 msgid "Buffering..."
 msgstr ""
 
+msgid "Clock lost, selecting a new one\n"
+msgstr ""
+
 msgid "Print version information and exit"
 msgstr ""
 
@@ -536,6 +539,18 @@
 msgid "Enable gapless playback"
 msgstr ""
 
+msgid "Shuffle playlist"
+msgstr ""
+
+msgid "Interactive control via keyboard"
+msgstr ""
+
+msgid "Volume"
+msgstr ""
+
+msgid "Playlist file containing input media files"
+msgstr ""
+
 #, c-format
 msgid "Usage: %s FILE1|URI1 [FILE2|URI2] [FILE3|URI3] ..."
 msgstr ""
diff --git a/po/lv.gmo b/po/lv.gmo
index 93b5b9c..4c579d6 100644
--- a/po/lv.gmo
+++ b/po/lv.gmo
Binary files differ
diff --git a/po/lv.po b/po/lv.po
index 4a9a56b..74bcb84 100644
--- a/po/lv.po
+++ b/po/lv.po
@@ -4,13 +4,14 @@
 # Arvis Lācis <arvis.lacis@inbox.lv>, 2009.
 # Rihards Priedītis <rprieditis@gmail.com>, 2010.
 # Rihards Priedītis <rprieditis@gmail.com>, 2011.
+# Rūdolfs Mazurs <rudolfs.mazurs@gmail.com>, 2014.
 msgid ""
 msgstr ""
-"Project-Id-Version: gst-plugins-base 0.10.32.2\n"
+"Project-Id-Version: gst-plugins-base 1.2.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-04-18 11:32+0200\n"
-"PO-Revision-Date: 2011-09-02 12:02-0000\n"
-"Last-Translator: Rihards Priedītis <rprieditis@gmail.com>\n"
+"POT-Creation-Date: 2014-05-03 17:46+0200\n"
+"PO-Revision-Date: 2014-04-20 16:15+0300\n"
+"Last-Translator: Rihards Prieditis <rprieditis@gmail.com>\n"
 "Language-Team: Latvian <translation-team-lv@lists.sourceforge.net>\n"
 "Language: lv\n"
 "MIME-Version: 1.0\n"
@@ -20,7 +21,7 @@
 "X-Poedit-Country: LATVIA\n"
 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : "
 "2);\n"
-"X-Generator: Lokalize 1.0\n"
+"X-Generator: Lokalize 1.5\n"
 
 msgid "Could not open device for playback in mono mode."
 msgstr "Nevarēja atvērt ierīci atskaņošanai mono režīmā."
@@ -30,7 +31,7 @@
 
 #, c-format
 msgid "Could not open device for playback in %d-channel mode."
-msgstr "Nevarēja atvērt ierīci atskaņošanai %d-kanāla režīmā."
+msgstr "Nevarēja atvērt ierīci atskaņošanai %d-kanālu režīmā."
 
 msgid ""
 "Could not open audio device for playback. Device is being used by another "
@@ -43,7 +44,7 @@
 msgstr "Nevarēja atvērt audio ierīci atskaņošanai."
 
 msgid "Error outputting to audio device. The device has been disconnected."
-msgstr ""
+msgstr "Kļūda, izvadot audio ierīcē. Ierīce tika atvienota."
 
 msgid "Could not open device for recording in mono mode."
 msgstr "Nevarēja atvērt ierīci ierakstīšanai mono režīmā."
@@ -53,7 +54,7 @@
 
 #, c-format
 msgid "Could not open device for recording in %d-channel mode"
-msgstr "Nevarēja atvērt ierīci ierakstīšanai %d-kanāla režīmā"
+msgstr "Nevarēja atvērt ierīci ierakstīšanai %d-kanālu režīmā"
 
 msgid ""
 "Could not open audio device for recording. Device is being used by another "
@@ -66,7 +67,7 @@
 msgstr "Nevarēja atvērt audio ierīci ierakstīšanai."
 
 msgid "Error recording from audio device. The device has been disconnected."
-msgstr ""
+msgstr "Kļūda, rakstot audio ierīcē. Ierīce tika atvienota."
 
 msgid "Could not open CD device for reading."
 msgstr "Nevarēja atvērt CD ierīci lasīšanai."
@@ -82,7 +83,7 @@
 
 #, c-format
 msgid "Missing element '%s' - check your GStreamer installation."
-msgstr "Trūkst elements \"%s\" - pārbaudiet savu GStreamer instalāciju."
+msgstr "Trūkst elements “%s” - pārbaudiet savu GStreamer instalāciju."
 
 #, c-format
 msgid "A %s plugin is required to play this stream, but not installed."
@@ -90,14 +91,13 @@
 "Nepieciešamas %s spraudnis, lai atskaņotu šo plūsmu, bet tas nav instalēts."
 
 msgid "Could not determine type of stream"
-msgstr "Nevarēja noteikts straumes tipu"
+msgstr "Nevarēja noteikt straumes tipu"
 
 msgid "This appears to be a text file"
-msgstr "Tiek atpazīts kā teksta fails"
+msgstr "Tiek atpazīts kā teksta datne"
 
-#, fuzzy
 msgid "Could not create \"uridecodebin\" element."
-msgstr "Nevarēja izveidot \"decodebin\" elementu."
+msgstr "Nevarēja izveidot “uridecodebin” elementu."
 
 #, c-format
 msgid "Both autovideosink and %s elements are missing."
@@ -118,10 +118,10 @@
 msgstr "autovideosink elements nedarbojas."
 
 msgid "Custom text sink element is not usable."
-msgstr "Pielāgots teksta iegremdēšanas elements nav lietojams."
+msgstr "Pielāgots teksta uztveršanas elements nav lietojams."
 
 msgid "No volume control found"
-msgstr "Netika atrasta neviena skaļuma kontrole"
+msgstr "Netika atrasta neviena skaļuma vadīkla"
 
 #, c-format
 msgid "Both autoaudiosink and %s elements are missing."
@@ -142,32 +142,32 @@
 msgstr "autoaudiosink elements nedarbojas."
 
 msgid "Can't play a text file without video or visualizations."
-msgstr "Nevar atskaņot teksta failu bez video vai vizualizācijas."
+msgstr "Nevar atskaņot teksta datni bez video vai vizualizācijas."
 
 #, c-format
 msgid "No decoder available for type '%s'."
-msgstr "Nav pieejams neviens atkodētājs failu veidam \"%s\"."
+msgstr "Nav pieejams neviens atkodētājs datnes veidam “%s”."
 
 msgid "No URI specified to play from."
-msgstr "Nav norādīts neviens URI, no kā varētu spēlēt. "
+msgstr "Nav norādīts neviens URI, no kā varētu atskaņot. "
 
 #, c-format
 msgid "Invalid URI \"%s\"."
-msgstr "Nederīgs URI \"%s\"."
+msgstr "Nederīgs URI “%s”."
 
 msgid "This stream type cannot be played yet."
-msgstr "Šī plūsma pagaidām nevar tikt atskaņota."
+msgstr "Šo plūsmu pagaidām nevar atskaņot."
 
 #, c-format
 msgid "No URI handler implemented for \"%s\"."
-msgstr "Nav izstrādāts neviens URI apstrādātājs priekš \"%s\"."
+msgstr "Nav izstrādāts neviens “%s” URI apstrādātājs."
 
 msgid "Source element is invalid."
 msgstr "Avota elements ir nederīgs."
 
 #, c-format
 msgid "Error while sending data to \"%s:%d\"."
-msgstr "Radās kļūda nosūtot datus uz \"%s:%d\"."
+msgstr "Radās kļūda, nosūtot datus uz “%s:%d”."
 
 msgid "Can't record audio fast enough"
 msgstr "Nevar ierakstīt audio pietiekami ātri"
@@ -176,10 +176,10 @@
 msgstr "Šajā CD nav neviena audio celiņa"
 
 msgid "ID3 tag"
-msgstr "ID3 atzīme"
+msgstr "ID3 iezīme"
 
 msgid "APE tag"
-msgstr "APE atzīme"
+msgstr "APE iezīme"
 
 msgid "ICY internet radio"
 msgstr "ICY interneta radio"
@@ -191,40 +191,37 @@
 msgstr "Free Lossless Audio Codec (FLAC)"
 
 msgid "Lossless True Audio (TTA)"
-msgstr "Bez zudumu True Audio (TTA)"
+msgstr "Bezzudumu True Audio (TTA)"
 
 msgid "Windows Media Speech"
 msgstr "Windows mediju runa"
 
 msgid "CYUV Lossless"
-msgstr "CYUV bez zudumu"
+msgstr "CYUV bezzudumu"
 
 msgid "FFMpeg v1"
 msgstr "FFMpeg v1"
 
 msgid "Lossless MSZH"
-msgstr "Bez zudumu MSZH"
+msgstr "Bezzudumu MSZH"
 
 msgid "Run-length encoding"
-msgstr "Sērijas garuma kodēšana"
+msgstr "Secīgo atkārtojumu kodēšana"
 
 msgid "Timed Text"
-msgstr ""
+msgstr "Teksts laikā"
 
 msgid "Subtitle"
-msgstr ""
+msgstr "Subtitri"
 
-#, fuzzy
 msgid "MPL2 subtitle format"
-msgstr "TMPlayer subtitru formāts"
+msgstr "MPL2 subtitru formāts"
 
-#, fuzzy
 msgid "DKS subtitle format"
-msgstr "Sami subtitru formāts"
+msgstr "DKS subtitru formāts"
 
-#, fuzzy
 msgid "QTtext subtitle format"
-msgstr "Kate subtitru formāts"
+msgstr "QTtext subtitru formāts"
 
 msgid "Sami subtitle format"
 msgstr "Sami subtitru formāts"
@@ -235,45 +232,42 @@
 msgid "Kate subtitle format"
 msgstr "Kate subtitru formāts"
 
-#, fuzzy
 msgid "Uncompressed video"
-msgstr "Nesaspiests YUV"
+msgstr "Nesaspiests video"
 
-#, fuzzy
 msgid "Uncompressed gray"
-msgstr "Neatspiests Pelēks attēls"
+msgstr "Neatspiests pelēks"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Uncompressed packed YUV %s"
-msgstr "Nesaspiests pakots YUV 4:2:2"
+msgstr "Nesaspiests pakots YUV %s"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Uncompressed semi-planar YUV %s"
-msgstr "Nesaspiesta plakne YUV 4:2:0"
+msgstr "Nesaspiests pus-plaknes YUV %s"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Uncompressed planar YUV %s"
-msgstr "Nesaspiesta plakne YUV 4:2:0"
+msgstr "Nesaspiests plaknes YUV %s"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Uncompressed palettized %d-bit %s"
 msgstr "Nesaspiests paletizēts %d-bitu %s"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Uncompressed %d-bit %s"
-msgstr "Nesaspiests paletizēts %d-bitu %s"
+msgstr "Nesaspiests %d-bitu %s"
 
 #, c-format
 msgid "DivX MPEG-4 Version %d"
 msgstr "DivX MPEG-4 versija %d"
 
-#, fuzzy
 msgid "Uncompressed audio"
-msgstr "Nesaspiests YUV"
+msgstr "Nesaspiests audio"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Raw %d-bit %s audio"
-msgstr "Jēls %d-bitu PCM audio"
+msgstr "Jēls %d-bitu %s audio"
 
 msgid "Audio CD source"
 msgstr "Audio CD avots"
@@ -282,10 +276,10 @@
 msgstr "DVD avots"
 
 msgid "Real Time Streaming Protocol (RTSP) source"
-msgstr "Tiešās straumēšanas protokola (RTSP) avots"
+msgstr "Reālā laika straumēšanas protokola (RTSP) avots"
 
 msgid "Microsoft Media Server (MMS) protocol source"
-msgstr "Microsoft Mediju Servera (MMS) protokola avots"
+msgstr "Microsoft mediju servera (MMS) protokola avots"
 
 #, c-format
 msgid "%s protocol source"
@@ -297,7 +291,7 @@
 
 #, c-format
 msgid "%s audio RTP depayloader"
-msgstr "%s audio RTP izskrāvējs"
+msgstr "%s audio RTP izkrāvējs"
 
 #, c-format
 msgid "%s RTP depayloader"
@@ -339,7 +333,7 @@
 msgstr "Nezināms avota elements"
 
 msgid "Unknown sink element"
-msgstr "Nezināms iegremdēšanas elements"
+msgstr "Nezināms uztveršanas elements"
 
 msgid "Unknown element"
 msgstr "Nezināms elements"
@@ -354,7 +348,7 @@
 msgstr "Nezināma veida spraudnis vai elements"
 
 msgid "Failed to read tag: not enough data"
-msgstr "Neizdevās nolasīt atzīmi: nepietiek datu"
+msgstr "Neizdevās nolasīt iezīmi: nepietiek datu"
 
 msgid "track ID"
 msgstr "celiņa ID"
@@ -387,110 +381,110 @@
 msgstr "MusicBrainz TRM ID"
 
 msgid "capturing shutter speed"
-msgstr "Tveršanā aizvara ātrums"
+msgstr "tveršanas slēdža ātrums"
 
 msgid "Shutter speed used when capturing an image, in seconds"
-msgstr "Attēla tveršanā izmantotais aizvara ātrums sekundēs"
+msgstr "Attēla tveršanā izmantotais slēdža ātrums sekundēs"
 
 msgid "capturing focal ratio"
-msgstr "tveršanā fokusa attiecība"
+msgstr "tveršanas fokusa attiecība"
 
 msgid "Focal ratio (f-number) used when capturing the image"
-msgstr "Attēla tveršanā izmantotā fokusa attiecība (f-cipars)"
+msgstr "Attēla tveršanā izmantotā fokusa attiecība (f-skaitlis)"
 
 msgid "capturing focal length"
-msgstr "tveršanā fokusa attālums"
+msgstr "tveršanas fokusa attālums"
 
 msgid "Focal length of the lens used capturing the image, in mm"
 msgstr "Attēla tveršanā izmantotā lēcas fokusa attālums milimetros"
 
 msgid "capturing digital zoom ratio"
-msgstr "tveršanā digitālais tālummaiņas attiecība"
+msgstr "tveršanas digitālais mērogs"
 
 msgid "Digital zoom ratio used when capturing an image"
-msgstr "Attēla tveršanā izmantotais digitālās tālummaiņas attiecība"
+msgstr "Attēla tveršanā izmantotais digitālais mērogs"
 
 msgid "capturing iso speed"
-msgstr "tveršanā iso ātrums"
+msgstr "tveršanas iso ātrums"
 
 msgid "The ISO speed used when capturing an image"
 msgstr "Attēla tveršanā izmantotais ISO ātrums"
 
 msgid "capturing exposure program"
-msgstr "tveršanā atseguma programma"
+msgstr "tveršanas eksponēšanas programma"
 
 msgid "The exposure program used when capturing an image"
-msgstr "Attēla tveršanā izmantotā atseguma programma"
+msgstr "Attēla tveršanā izmantotā eksponēšanas programma"
 
 msgid "capturing exposure mode"
-msgstr "tveršanā atseguma režīms"
+msgstr "tveršanas eksponēšanas režīms"
 
 msgid "The exposure mode used when capturing an image"
-msgstr "Attēla tveršanā izmantotais atseguma režīms"
+msgstr "Attēla tveršanā izmantotais eksponēšanas režīms"
 
 msgid "capturing exposure compensation"
-msgstr "tveršanā atseguma kompensācija"
+msgstr "tveršanas ekspozīcijas kompensācija"
 
 msgid "The exposure compensation used when capturing an image"
-msgstr "Attēla tveršanā izmantotais atseguma kompensācija"
+msgstr "Attēla tveršanā izmantotais ekspozīcijas kompensācija"
 
 msgid "capturing scene capture type"
-msgstr "tveršanā ainas tveršanas tips"
+msgstr "tveršanas ainas tveršanas tips"
 
 msgid "The scene capture mode used when capturing an image"
 msgstr "Attēla tveršanā izmantotas ainas tveršanas režīms"
 
 msgid "capturing gain adjustment"
-msgstr "tveršanā pieaguma korekcija"
+msgstr "tveršanas pieauguma korekcija"
 
 msgid "The overall gain adjustment applied on an image"
 msgstr "Attēla tveršanā izmantotais vispārējā pieauguma korekcija"
 
 msgid "capturing white balance"
-msgstr "tveršanas baltais balanss"
+msgstr "tveršanas baltā līdzsvars"
 
 msgid "The white balance mode set when capturing an image"
-msgstr "Lietotais baltais balanss virziens attēla tveršanā"
+msgstr "Lietotais baltās krāsas līdzsvara virziens attēla tveršanā"
 
 msgid "capturing contrast"
-msgstr "tveršanā kontrasts"
+msgstr "tveršanas kontrasts"
 
 msgid "The direction of contrast processing applied when capturing an image"
-msgstr "Lietotais kontrasts virziens attēla tveršanā"
+msgstr "Lietotais kontrasta virziens attēla tveršanā"
 
 msgid "capturing saturation"
-msgstr "tveršanā piesātinājums"
+msgstr "tveršanas piesātinājums"
 
 msgid "The direction of saturation processing applied when capturing an image"
 msgstr "Lietotais piesātinājuma virziens attēla tveršanā"
 
 msgid "capturing sharpness"
-msgstr "tveršanā asumss"
+msgstr "tveršanas asums"
 
 msgid "The direction of sharpness processing applied when capturing an image"
 msgstr "Lietotais asuma virziens attēla tveršanā"
 
 msgid "capturing flash fired"
-msgstr "tveršanā zibsnis palaists"
+msgstr "tveršanas zibsnis palaists"
 
 msgid "If the flash fired while capturing an image"
 msgstr "Ja zibsnis palaists attēla tveršanā"
 
 msgid "capturing flash mode"
-msgstr "tveršanā zibšņa režīms"
+msgstr "tveršanas zibšņa režīms"
 
 msgid "The selected flash mode while capturing an image"
-msgstr "Atlasītais zibšņa režīms priekš attēla tveršanas"
+msgstr "Atlasītais zibšņa režīms attēla tveršanai"
 
 msgid "capturing metering mode"
-msgstr "tveršanā mērīšanas režīms"
+msgstr "tveršanas mērīšanas režīms"
 
 msgid ""
 "The metering mode used while determining exposure for capturing an image"
-msgstr "Mērīšanas režīms, lai noteiktu atsegumu attēla tveršanai"
+msgstr "Mērīšanas režīms, lai noteiktu ekspozīciju attēla tveršanai"
 
 msgid "capturing source"
-msgstr "tveršanā avots"
+msgstr "tveršanas avots"
 
 msgid "The source or type of device used for the capture"
 msgstr "Tveršanas avots vai iekārtas tips"
@@ -508,42 +502,53 @@
 msgstr "Medija (attēls/video) domātā vertikālā pikseļu blīvums ppi"
 
 msgid "ID3v2 frame"
-msgstr ""
+msgstr "ID3v2 kadrs"
 
 msgid "unparsed id3v2 tag frame"
-msgstr ""
+msgstr "neparsēts id3v2 iezīmes kadrs"
 
 msgid "musical-key"
-msgstr ""
+msgstr "mūzikas-kadrs"
 
 msgid "Initial key in which the sound starts"
-msgstr ""
+msgstr "Sākotnējais kadrs, kurā sākas mūzika"
 
 msgid "Buffering..."
+msgstr "Buferē..."
+
+msgid "Clock lost, selecting a new one\n"
 msgstr ""
 
 msgid "Print version information and exit"
-msgstr ""
+msgstr "Parādīt informāciju par versiju un iziet"
 
 msgid "Video sink to use (default is autovideosink)"
-msgstr ""
+msgstr "Izmantojamais video uztvērējs (pēc noklusējuma autovideosink)"
 
 msgid "Audio sink to use (default is autoaudiosink)"
-msgstr ""
+msgstr "Izmantojamais audio uztvērējs (pēc noklusējuma autoaudiosink)"
 
 msgid "Enable gapless playback"
+msgstr "Aktivēt atskaņošanu bez pauzēm"
+
+msgid "Shuffle playlist"
+msgstr ""
+
+msgid "Interactive control via keyboard"
+msgstr ""
+
+msgid "Volume"
+msgstr ""
+
+msgid "Playlist file containing input media files"
 msgstr ""
 
 #, c-format
 msgid "Usage: %s FILE1|URI1 [FILE2|URI2] [FILE3|URI3] ..."
-msgstr ""
+msgstr "Lietojums: %s DATNE1|URI1 [DATNE2|URI2] [DATNE3|URI3] ..."
 
 msgid "You must provide at least one filename or URI to play."
-msgstr ""
-
-#, fuzzy
-#~ msgid "Uncompressed %s YUV %s"
-#~ msgstr "Nesaspiests YUV"
+msgstr "Jums jānorāda vismaz viens datnes nosaukums vai atskaņojamais URI."
 
 #~ msgid "Master"
 #~ msgstr "Galvenais"
@@ -578,9 +583,6 @@
 #~ msgid "Capture"
 #~ msgstr "Tveršana"
 
-#~ msgid "Connection to %s:%d refused."
-#~ msgstr "Savienojums ar %s:%d noraidīts."
-
 #~ msgid "Could not open vfs file \"%s\" for writing: %s."
 #~ msgstr "Nevarēja atvērt vfs failu \"%s\" rakstīšanai: %s."
 
@@ -632,6 +634,9 @@
 #~ msgid "Error while sending gdp payload data to \"%s:%d\"."
 #~ msgstr "Kļūda sūtot gdp iekrāvēja datus uz \"%s:%d\""
 
+#~ msgid "Connection to %s:%d refused."
+#~ msgstr "Savienojums ar %s:%d noraidīts."
+
 #~ msgid "Uncompressed planar YVU 4:2:0"
 #~ msgstr "Nesaspiesta plakne YVU 4:2:0"
 
diff --git a/po/nb.gmo b/po/nb.gmo
index 9b2d1ed..ad61891 100644
--- a/po/nb.gmo
+++ b/po/nb.gmo
Binary files differ
diff --git a/po/nb.po b/po/nb.po
index 04d9fb8..1832bd2 100644
--- a/po/nb.po
+++ b/po/nb.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-base 1.2.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-04-18 11:32+0200\n"
+"POT-Creation-Date: 2014-05-03 17:46+0200\n"
 "PO-Revision-Date: 2014-01-22 17:42+0100\n"
 "Last-Translator: Johnny A. Solbu <johnny@solbu.net>\n"
 "Language-Team: Norwegian Bokmaal <i18n-nb@lister.ping.uio.no>\n"
@@ -513,6 +513,9 @@
 msgid "Buffering..."
 msgstr "Bufrer ..."
 
+msgid "Clock lost, selecting a new one\n"
+msgstr ""
+
 msgid "Print version information and exit"
 msgstr "Skriv ut versjonsinformasjon og avslutt"
 
@@ -525,6 +528,18 @@
 msgid "Enable gapless playback"
 msgstr "Aktiver sømløs avspilling"
 
+msgid "Shuffle playlist"
+msgstr ""
+
+msgid "Interactive control via keyboard"
+msgstr ""
+
+msgid "Volume"
+msgstr ""
+
+msgid "Playlist file containing input media files"
+msgstr ""
+
 #, c-format
 msgid "Usage: %s FILE1|URI1 [FILE2|URI2] [FILE3|URI3] ..."
 msgstr "Bruk: %s FIL1|URI1 [FILE|URI2] [FILE|URI3] ..."
diff --git a/po/nl.gmo b/po/nl.gmo
index e9e9467..90d0e3d 100644
--- a/po/nl.gmo
+++ b/po/nl.gmo
Binary files differ
diff --git a/po/nl.po b/po/nl.po
index b05237c..6ee45c9 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-base 1.2.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-04-18 11:32+0200\n"
+"POT-Creation-Date: 2014-05-03 17:46+0200\n"
 "PO-Revision-Date: 2014-01-09 13:01+0100\n"
 "Last-Translator: Freek de Kruijf <f.de.kruijf@gmail.com>\n"
 "Language-Team: Dutch <vertaling@vrijschrift.org>\n"
@@ -522,6 +522,9 @@
 msgid "Buffering..."
 msgstr "In buffer opslaan..."
 
+msgid "Clock lost, selecting a new one\n"
+msgstr ""
+
 msgid "Print version information and exit"
 msgstr "Versie-informatie afdrukken en sluiten"
 
@@ -534,6 +537,18 @@
 msgid "Enable gapless playback"
 msgstr "Afspelen activeren zonder gaten"
 
+msgid "Shuffle playlist"
+msgstr ""
+
+msgid "Interactive control via keyboard"
+msgstr ""
+
+msgid "Volume"
+msgstr ""
+
+msgid "Playlist file containing input media files"
+msgstr ""
+
 #, c-format
 msgid "Usage: %s FILE1|URI1 [FILE2|URI2] [FILE3|URI3] ..."
 msgstr "Gebruik: %s BESTAND1|URI1 [BESTAND2|URI2] [BESTAND3|URI3] ..."
diff --git a/po/or.gmo b/po/or.gmo
index e2fa653..b3e304a 100644
--- a/po/or.gmo
+++ b/po/or.gmo
Binary files differ
diff --git a/po/or.po b/po/or.po
index 2cf9dfc..32829ac 100644
--- a/po/or.po
+++ b/po/or.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-0.8.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-04-18 11:32+0200\n"
+"POT-Creation-Date: 2014-05-03 17:46+0200\n"
 "PO-Revision-Date: 2004-09-27 13:32+0530\n"
 "Last-Translator: Gora Mohanty <gora_mohanty@yahoo.co.in>\n"
 "Language-Team: Oriya <gora_mohanty@yahoo.co.in>\n"
@@ -516,6 +516,9 @@
 msgid "Buffering..."
 msgstr ""
 
+msgid "Clock lost, selecting a new one\n"
+msgstr ""
+
 msgid "Print version information and exit"
 msgstr ""
 
@@ -528,6 +531,18 @@
 msgid "Enable gapless playback"
 msgstr ""
 
+msgid "Shuffle playlist"
+msgstr ""
+
+msgid "Interactive control via keyboard"
+msgstr ""
+
+msgid "Volume"
+msgstr "ପ୍ରବଳତା"
+
+msgid "Playlist file containing input media files"
+msgstr ""
+
 #, c-format
 msgid "Usage: %s FILE1|URI1 [FILE2|URI2] [FILE3|URI3] ..."
 msgstr ""
@@ -676,9 +691,6 @@
 #~ msgid "Your OSS device could not be probed correctly"
 #~ msgstr "ଆପଣଙ୍କର ଓ.ଏସ.ଏସ. ଯନ୍ତ୍ରର ଠିକ ଭାବରେ ଅନୁସନ୍ଧାନ କରିହେଲା ନାହିଁ."
 
-#~ msgid "Volume"
-#~ msgstr "ପ୍ରବଳତା"
-
 #~ msgid "Speaker"
 #~ msgstr "ସ୍ବରବର୍ଦ୍ଧକ ୟନ୍ତ୍ର"
 
diff --git a/po/pl.gmo b/po/pl.gmo
index 20ae17e..11c38ef 100644
--- a/po/pl.gmo
+++ b/po/pl.gmo
Binary files differ
diff --git a/po/pl.po b/po/pl.po
index 44fb667..f879e83 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-base 1.2.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-04-18 11:32+0200\n"
+"POT-Creation-Date: 2014-05-03 17:46+0200\n"
 "PO-Revision-Date: 2013-12-08 08:58+0100\n"
 "Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n"
 "Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
@@ -520,6 +520,9 @@
 msgid "Buffering..."
 msgstr "Buforowanie..."
 
+msgid "Clock lost, selecting a new one\n"
+msgstr ""
+
 msgid "Print version information and exit"
 msgstr "Wypisanie informacji o wersji i zakończenie"
 
@@ -532,6 +535,18 @@
 msgid "Enable gapless playback"
 msgstr "Włączenie odtwarzania bez przerw"
 
+msgid "Shuffle playlist"
+msgstr ""
+
+msgid "Interactive control via keyboard"
+msgstr ""
+
+msgid "Volume"
+msgstr ""
+
+msgid "Playlist file containing input media files"
+msgstr ""
+
 #, c-format
 msgid "Usage: %s FILE1|URI1 [FILE2|URI2] [FILE3|URI3] ..."
 msgstr "Składnia: %s PLIK1|URI1 [PLIK2|URI2] [PLIK3|URI3] ..."
diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo
index 44cf9e9..42778b6 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 02a84ac..5acf111 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -11,7 +11,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-base-1.2.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-04-18 11:32+0200\n"
+"POT-Creation-Date: 2014-05-03 17:46+0200\n"
 "PO-Revision-Date: 2013-12-29 17:33-0300\n"
 "Last-Translator: Fabrício Godoy <skarllot@gmail.com>\n"
 "Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge."
@@ -526,6 +526,9 @@
 msgid "Buffering..."
 msgstr "Preenchendo buffer..."
 
+msgid "Clock lost, selecting a new one\n"
+msgstr ""
+
 msgid "Print version information and exit"
 msgstr "Exibe informações de versão e sai"
 
@@ -540,6 +543,18 @@
 msgid "Enable gapless playback"
 msgstr "Ativar reprodução sem intervalos"
 
+msgid "Shuffle playlist"
+msgstr ""
+
+msgid "Interactive control via keyboard"
+msgstr ""
+
+msgid "Volume"
+msgstr ""
+
+msgid "Playlist file containing input media files"
+msgstr ""
+
 #, c-format
 msgid "Usage: %s FILE1|URI1 [FILE2|URI2] [FILE3|URI3] ..."
 msgstr "Uso: %s ARQ1|URI1 [ARQ2|URI2] [ARQ3|URI3] ..."
diff --git a/po/ro.gmo b/po/ro.gmo
index bf6a567..9265eb1 100644
--- a/po/ro.gmo
+++ b/po/ro.gmo
Binary files differ
diff --git a/po/ro.po b/po/ro.po
index 1161477..91e91c3 100644
--- a/po/ro.po
+++ b/po/ro.po
@@ -5,7 +5,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-base 0.10.29.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-04-18 11:32+0200\n"
+"POT-Creation-Date: 2014-05-03 17:46+0200\n"
 "PO-Revision-Date: 2010-08-16 01:21+0300\n"
 "Last-Translator: Lucian Adrian Grijincu <lucian.grijincu@gmail.com>\n"
 "Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n"
@@ -519,6 +519,9 @@
 msgid "Buffering..."
 msgstr ""
 
+msgid "Clock lost, selecting a new one\n"
+msgstr ""
+
 msgid "Print version information and exit"
 msgstr ""
 
@@ -531,6 +534,18 @@
 msgid "Enable gapless playback"
 msgstr ""
 
+msgid "Shuffle playlist"
+msgstr ""
+
+msgid "Interactive control via keyboard"
+msgstr ""
+
+msgid "Volume"
+msgstr ""
+
+msgid "Playlist file containing input media files"
+msgstr ""
+
 #, c-format
 msgid "Usage: %s FILE1|URI1 [FILE2|URI2] [FILE3|URI3] ..."
 msgstr ""
diff --git a/po/ru.gmo b/po/ru.gmo
index 155c4a9..34f0c1a 100644
--- a/po/ru.gmo
+++ b/po/ru.gmo
Binary files differ
diff --git a/po/ru.po b/po/ru.po
index 4105c11..eb39780 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-base 1.2.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-04-18 11:32+0200\n"
+"POT-Creation-Date: 2014-05-03 17:46+0200\n"
 "PO-Revision-Date: 2013-12-08 12:52+0400\n"
 "Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n"
 "Language-Team: Russian <gnu@mx.ru>\n"
@@ -517,6 +517,9 @@
 msgid "Buffering..."
 msgstr "Буферизация…"
 
+msgid "Clock lost, selecting a new one\n"
+msgstr ""
+
 msgid "Print version information and exit"
 msgstr "Вывод информации о версии и выход из программы"
 
@@ -529,6 +532,18 @@
 msgid "Enable gapless playback"
 msgstr "Включить непрерывное воспроизведение"
 
+msgid "Shuffle playlist"
+msgstr ""
+
+msgid "Interactive control via keyboard"
+msgstr ""
+
+msgid "Volume"
+msgstr ""
+
+msgid "Playlist file containing input media files"
+msgstr ""
+
 #, c-format
 msgid "Usage: %s FILE1|URI1 [FILE2|URI2] [FILE3|URI3] ..."
 msgstr "Использование: %s ФАЙЛ1|URI1 [ФАЙЛ2|URI2] [ФАЙЛ3|URI3] …"
diff --git a/po/sk.gmo b/po/sk.gmo
index 8fabc80..57e372e 100644
--- a/po/sk.gmo
+++ b/po/sk.gmo
Binary files differ
diff --git a/po/sk.po b/po/sk.po
index 325892f..f30ea06 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-base 1.2.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-04-18 11:32+0200\n"
+"POT-Creation-Date: 2014-05-03 17:46+0200\n"
 "PO-Revision-Date: 2014-01-30 10:57+0100\n"
 "Last-Translator: Peter Tuharsky <tuharsky@misbb.sk>\n"
 "Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"
@@ -514,6 +514,9 @@
 msgid "Buffering..."
 msgstr "Napĺňam vyrovnávaciu pamäť..."
 
+msgid "Clock lost, selecting a new one\n"
+msgstr ""
+
 msgid "Print version information and exit"
 msgstr "Zobraziť informáciu o verzii a skončiť"
 
@@ -526,6 +529,18 @@
 msgid "Enable gapless playback"
 msgstr "Povoliť plynulé prehrávanie"
 
+msgid "Shuffle playlist"
+msgstr ""
+
+msgid "Interactive control via keyboard"
+msgstr ""
+
+msgid "Volume"
+msgstr ""
+
+msgid "Playlist file containing input media files"
+msgstr ""
+
 #, c-format
 msgid "Usage: %s FILE1|URI1 [FILE2|URI2] [FILE3|URI3] ..."
 msgstr "Použitie: %s FILE1|URI1 [FILE2|URI2] [FILE3|URI3] ..."
diff --git a/po/sl.gmo b/po/sl.gmo
index 0701c04..35f8647 100644
--- a/po/sl.gmo
+++ b/po/sl.gmo
Binary files differ
diff --git a/po/sl.po b/po/sl.po
index 9261708..dcdff92 100644
--- a/po/sl.po
+++ b/po/sl.po
@@ -10,7 +10,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-base-1.0.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-04-18 11:32+0200\n"
+"POT-Creation-Date: 2014-05-03 17:46+0200\n"
 "PO-Revision-Date: 2013-01-05 10:10+0100\n"
 "Last-Translator: Klemen Košir <klemen913@gmail.com>\n"
 "Language-Team: Slovenian <translation-team-sl@lists.sourceforge.net>\n"
@@ -513,6 +513,9 @@
 msgid "Buffering..."
 msgstr ""
 
+msgid "Clock lost, selecting a new one\n"
+msgstr ""
+
 msgid "Print version information and exit"
 msgstr ""
 
@@ -525,6 +528,18 @@
 msgid "Enable gapless playback"
 msgstr ""
 
+msgid "Shuffle playlist"
+msgstr ""
+
+msgid "Interactive control via keyboard"
+msgstr ""
+
+msgid "Volume"
+msgstr ""
+
+msgid "Playlist file containing input media files"
+msgstr ""
+
 #, c-format
 msgid "Usage: %s FILE1|URI1 [FILE2|URI2] [FILE3|URI3] ..."
 msgstr ""
diff --git a/po/sq.gmo b/po/sq.gmo
index 875fbb2..975520e 100644
--- a/po/sq.gmo
+++ b/po/sq.gmo
Binary files differ
diff --git a/po/sq.po b/po/sq.po
index 8907cd7..a7879c9 100644
--- a/po/sq.po
+++ b/po/sq.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins 0.8.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-04-18 11:32+0200\n"
+"POT-Creation-Date: 2014-05-03 17:46+0200\n"
 "PO-Revision-Date: 2004-08-07 20:29+0200\n"
 "Last-Translator: Laurent Dhima <laurenti@alblinux.net>\n"
 "Language-Team: Albanian <begraj@hotmail.com>\n"
@@ -514,6 +514,9 @@
 msgid "Buffering..."
 msgstr ""
 
+msgid "Clock lost, selecting a new one\n"
+msgstr ""
+
 msgid "Print version information and exit"
 msgstr ""
 
@@ -526,6 +529,18 @@
 msgid "Enable gapless playback"
 msgstr ""
 
+msgid "Shuffle playlist"
+msgstr ""
+
+msgid "Interactive control via keyboard"
+msgstr ""
+
+msgid "Volume"
+msgstr "Volumi"
+
+msgid "Playlist file containing input media files"
+msgstr ""
+
 #, c-format
 msgid "Usage: %s FILE1|URI1 [FILE2|URI2] [FILE3|URI3] ..."
 msgstr ""
@@ -676,9 +691,6 @@
 #~ msgid "Your OSS device could not be probed correctly"
 #~ msgstr "Dispozitivi juaj OSS mund të mos provohet korrektësisht"
 
-#~ msgid "Volume"
-#~ msgstr "Volumi"
-
 #~ msgid "Speaker"
 #~ msgstr "Zë folës"
 
diff --git a/po/sr.gmo b/po/sr.gmo
index 85c8a82..591be0b 100644
--- a/po/sr.gmo
+++ b/po/sr.gmo
Binary files differ
diff --git a/po/sr.po b/po/sr.po
index 5c8912f..bee8bff 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-base-1.2.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-04-18 11:32+0200\n"
+"POT-Creation-Date: 2014-05-03 17:46+0200\n"
 "PO-Revision-Date: 2014-01-13 20:16+0200\n"
 "Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
 "Language-Team: Serbian <(nothing)>\n"
@@ -511,6 +511,9 @@
 msgid "Buffering..."
 msgstr "Смештам у међумеморију..."
 
+msgid "Clock lost, selecting a new one\n"
+msgstr ""
+
 msgid "Print version information and exit"
 msgstr "Исписује податке о издању и излази"
 
@@ -523,6 +526,18 @@
 msgid "Enable gapless playback"
 msgstr "Укључује пуштање без застоја"
 
+msgid "Shuffle playlist"
+msgstr ""
+
+msgid "Interactive control via keyboard"
+msgstr ""
+
+msgid "Volume"
+msgstr ""
+
+msgid "Playlist file containing input media files"
+msgstr ""
+
 #, c-format
 msgid "Usage: %s FILE1|URI1 [FILE2|URI2] [FILE3|URI3] ..."
 msgstr ""
diff --git a/po/sv.gmo b/po/sv.gmo
index 2e2032e..77f8b51 100644
--- a/po/sv.gmo
+++ b/po/sv.gmo
Binary files differ
diff --git a/po/sv.po b/po/sv.po
index 69d99f8..7a47ec5 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-base 0.10.28.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-04-18 11:32+0200\n"
+"POT-Creation-Date: 2014-05-03 17:46+0200\n"
 "PO-Revision-Date: 2010-06-07 18:17+0100\n"
 "Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
 "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
@@ -522,6 +522,9 @@
 msgid "Buffering..."
 msgstr "Spelar in..."
 
+msgid "Clock lost, selecting a new one\n"
+msgstr ""
+
 msgid "Print version information and exit"
 msgstr ""
 
@@ -534,6 +537,18 @@
 msgid "Enable gapless playback"
 msgstr ""
 
+msgid "Shuffle playlist"
+msgstr ""
+
+msgid "Interactive control via keyboard"
+msgstr ""
+
+msgid "Volume"
+msgstr "Volym"
+
+msgid "Playlist file containing input media files"
+msgstr ""
+
 #, c-format
 msgid "Usage: %s FILE1|URI1 [FILE2|URI2] [FILE3|URI3] ..."
 msgstr ""
@@ -790,9 +805,6 @@
 #~ msgid "Your OSS device could not be probed correctly"
 #~ msgstr "Din OSS-enhet kunde inte undersökas korrekt"
 
-#~ msgid "Volume"
-#~ msgstr "Volym"
-
 #~ msgid "Speaker"
 #~ msgstr "Högtalare"
 
diff --git a/po/tr.gmo b/po/tr.gmo
index b2b5f9f..020d1f5 100644
--- a/po/tr.gmo
+++ b/po/tr.gmo
Binary files differ
diff --git a/po/tr.po b/po/tr.po
index 705bd2f..96a25a1 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-base 1.0.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-04-18 11:32+0200\n"
+"POT-Creation-Date: 2014-05-03 17:46+0200\n"
 "PO-Revision-Date: 2013-03-10 12:46+0200\n"
 "Last-Translator: Server Acim <serveracim@gmail.com>\n"
 "Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
@@ -508,6 +508,9 @@
 msgid "Buffering..."
 msgstr ""
 
+msgid "Clock lost, selecting a new one\n"
+msgstr ""
+
 msgid "Print version information and exit"
 msgstr ""
 
@@ -520,6 +523,18 @@
 msgid "Enable gapless playback"
 msgstr ""
 
+msgid "Shuffle playlist"
+msgstr ""
+
+msgid "Interactive control via keyboard"
+msgstr ""
+
+msgid "Volume"
+msgstr ""
+
+msgid "Playlist file containing input media files"
+msgstr ""
+
 #, c-format
 msgid "Usage: %s FILE1|URI1 [FILE2|URI2] [FILE3|URI3] ..."
 msgstr ""
diff --git a/po/uk.gmo b/po/uk.gmo
index 858d609..4ca6846 100644
--- a/po/uk.gmo
+++ b/po/uk.gmo
Binary files differ
diff --git a/po/uk.po b/po/uk.po
index 7827692..c007acf 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-base 1.2.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-04-18 11:32+0200\n"
+"POT-Creation-Date: 2014-05-03 17:46+0200\n"
 "PO-Revision-Date: 2013-12-07 22:59+0200\n"
 "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
 "Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>\n"
@@ -528,6 +528,9 @@
 msgid "Buffering..."
 msgstr "Буферизація…"
 
+msgid "Clock lost, selecting a new one\n"
+msgstr ""
+
 msgid "Print version information and exit"
 msgstr "Показати дані щодо версії і завершити роботу"
 
@@ -540,6 +543,18 @@
 msgid "Enable gapless playback"
 msgstr "Увімкнути неперервне відтворення"
 
+msgid "Shuffle playlist"
+msgstr ""
+
+msgid "Interactive control via keyboard"
+msgstr ""
+
+msgid "Volume"
+msgstr ""
+
+msgid "Playlist file containing input media files"
+msgstr ""
+
 #, c-format
 msgid "Usage: %s FILE1|URI1 [FILE2|URI2] [FILE3|URI3] ..."
 msgstr "Користування: %s ФАЙЛ1|АДРЕСА1 [ФАЙЛ2|АДРЕСА2] [ФАЙЛ3|АДРЕСА3] ..."
diff --git a/po/vi.gmo b/po/vi.gmo
index 3073dad..e7404e8 100644
--- a/po/vi.gmo
+++ b/po/vi.gmo
Binary files differ
diff --git a/po/vi.po b/po/vi.po
index b79306f..e123766 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-base-1.2.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-04-18 11:32+0200\n"
+"POT-Creation-Date: 2014-05-03 17:46+0200\n"
 "PO-Revision-Date: 2013-12-11 07:50+0700\n"
 "Last-Translator: Trần Ngọc Quân <vnwildman@gmail.com>\n"
 "Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n"
@@ -522,6 +522,9 @@
 msgid "Buffering..."
 msgstr "Đang đệm..."
 
+msgid "Clock lost, selecting a new one\n"
+msgstr ""
+
 msgid "Print version information and exit"
 msgstr "In ra thông tin phiên bản và thoát"
 
@@ -534,6 +537,18 @@
 msgid "Enable gapless playback"
 msgstr "Bật phát lại không khe"
 
+msgid "Shuffle playlist"
+msgstr ""
+
+msgid "Interactive control via keyboard"
+msgstr ""
+
+msgid "Volume"
+msgstr ""
+
+msgid "Playlist file containing input media files"
+msgstr ""
+
 #, c-format
 msgid "Usage: %s FILE1|URI1 [FILE2|URI2] [FILE3|URI3] ..."
 msgstr "Cách dùng: %s TẬP-TIN1|URI1 [TẬP-TIN2|URI2] [TẬP-TIN3|URI3] ..."
diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo
index ee7b6a0..35906a2 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 6b4131b..6cd447e 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-base 0.10.21.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-04-18 11:32+0200\n"
+"POT-Creation-Date: 2014-05-03 17:46+0200\n"
 "PO-Revision-Date: 2009-01-14 12:41+0800\n"
 "Last-Translator: Ji ZhengYu <zhengyuji@gmail.com>\n"
 "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
@@ -516,6 +516,9 @@
 msgid "Buffering..."
 msgstr ""
 
+msgid "Clock lost, selecting a new one\n"
+msgstr ""
+
 msgid "Print version information and exit"
 msgstr ""
 
@@ -528,6 +531,18 @@
 msgid "Enable gapless playback"
 msgstr ""
 
+msgid "Shuffle playlist"
+msgstr ""
+
+msgid "Interactive control via keyboard"
+msgstr ""
+
+msgid "Volume"
+msgstr ""
+
+msgid "Playlist file containing input media files"
+msgstr ""
+
 #, c-format
 msgid "Usage: %s FILE1|URI1 [FILE2|URI2] [FILE3|URI3] ..."
 msgstr ""
diff --git a/sys/Makefile.in b/sys/Makefile.in
index 4825f2c..e862f2c 100644
--- a/sys/Makefile.in
+++ b/sys/Makefile.in
@@ -91,7 +91,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -403,9 +402,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/sys/ximage/Makefile.in b/sys/ximage/Makefile.in
index 5f7b837..5503bd3 100644
--- a/sys/ximage/Makefile.in
+++ b/sys/ximage/Makefile.in
@@ -88,7 +88,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -424,9 +423,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/sys/ximage/ximagesink.c b/sys/ximage/ximagesink.c
index 93fe19d..ff6a9d6 100644
--- a/sys/ximage/ximagesink.c
+++ b/sys/ximage/ximagesink.c
@@ -906,9 +906,12 @@
   }
 
   /* extrapolate alpha mask */
-  alpha_mask = ~(xcontext->visual->red_mask
-      | xcontext->visual->green_mask | xcontext->visual->blue_mask);
-  alpha_mask &= 0xffffffff;
+  if (xcontext->depth == 32) {
+    alpha_mask = ~(xcontext->visual->red_mask
+        | xcontext->visual->green_mask | xcontext->visual->blue_mask);
+  } else {
+    alpha_mask = 0;
+  }
 
   vformat =
       gst_video_format_from_masks (xcontext->depth, xcontext->bpp, endianness,
@@ -1952,8 +1955,6 @@
    * GstXImageSink:window-width
    *
    * Actual width of the video window.
-   *
-   * Since: 0.10.32
    */
   g_object_class_install_property (gobject_class, PROP_WINDOW_WIDTH,
       g_param_spec_uint64 ("window-width", "window-width",
@@ -1964,8 +1965,6 @@
    * GstXImageSink:window-height
    *
    * Actual height of the video window.
-   *
-   * Since: 0.10.32
    */
   g_object_class_install_property (gobject_class, PROP_WINDOW_HEIGHT,
       g_param_spec_uint64 ("window-height", "window-height",
diff --git a/sys/xvimage/Makefile.in b/sys/xvimage/Makefile.in
index 39f0267..f55cbb1 100644
--- a/sys/xvimage/Makefile.in
+++ b/sys/xvimage/Makefile.in
@@ -88,7 +88,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -426,9 +425,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/sys/xvimage/xvcontext.c b/sys/xvimage/xvcontext.c
index d89ea48..146e4a5 100644
--- a/sys/xvimage/xvcontext.c
+++ b/sys/xvimage/xvcontext.c
@@ -738,8 +738,8 @@
 
       channel = g_object_new (GST_TYPE_COLOR_BALANCE_CHANNEL, NULL);
       channel->label = g_strdup (channels[i]);
-      channel->min_value = matching_attr ? matching_attr->min_value : -1000;
-      channel->max_value = matching_attr ? matching_attr->max_value : 1000;
+      channel->min_value = matching_attr->min_value;
+      channel->max_value = matching_attr->max_value;
 
       context->channels_list = g_list_append (context->channels_list, channel);
 
diff --git a/sys/xvimage/xvimagesink.c b/sys/xvimage/xvimagesink.c
index 11fd6ce..30e7538 100644
--- a/sys/xvimage/xvimagesink.c
+++ b/sys/xvimage/xvimagesink.c
@@ -909,7 +909,7 @@
 {
   GstFlowReturn res;
   GstXvImageSink *xvimagesink;
-  GstBuffer *to_put;
+  GstBuffer *to_put = NULL;
   GstMemory *mem;
 
   xvimagesink = GST_XVIMAGESINK (vsink);
@@ -1945,8 +1945,6 @@
    *
    * When enabled, the current frame will always be drawn in response to X
    * Expose.
-   *
-   * Since: 0.10.14
    */
   g_object_class_install_property (gobject_class, PROP_HANDLE_EXPOSE,
       g_param_spec_boolean ("handle-expose", "Handle expose",
@@ -1958,8 +1956,6 @@
    * GstXvImageSink:double-buffer
    *
    * Whether to double-buffer the output.
-   *
-   * Since: 0.10.14
    */
   g_object_class_install_property (gobject_class, PROP_DOUBLE_BUFFER,
       g_param_spec_boolean ("double-buffer", "Double-buffer",
@@ -1969,8 +1965,6 @@
    * GstXvImageSink:autopaint-colorkey
    *
    * Whether to autofill overlay with colorkey
-   *
-   * Since: 0.10.21
    */
   g_object_class_install_property (gobject_class, PROP_AUTOPAINT_COLORKEY,
       g_param_spec_boolean ("autopaint-colorkey", "Autofill with colorkey",
@@ -1980,8 +1974,6 @@
    * GstXvImageSink:colorkey
    *
    * Color to use for the overlay mask.
-   *
-   * Since: 0.10.21
    */
   g_object_class_install_property (gobject_class, PROP_COLORKEY,
       g_param_spec_int ("colorkey", "Colorkey",
@@ -1993,8 +1985,6 @@
    *
    * Draw black borders when using GstXvImageSink:force-aspect-ratio to fill
    * unused parts of the video area.
-   *
-   * Since: 0.10.21
    */
   g_object_class_install_property (gobject_class, PROP_DRAW_BORDERS,
       g_param_spec_boolean ("draw-borders", "Colorkey",
@@ -2005,8 +1995,6 @@
    * GstXvImageSink:window-width
    *
    * Actual width of the video window.
-   *
-   * Since: 0.10.32
    */
   g_object_class_install_property (gobject_class, PROP_WINDOW_WIDTH,
       g_param_spec_uint64 ("window-width", "window-width",
@@ -2017,8 +2005,6 @@
    * GstXvImageSink:window-height
    *
    * Actual height of the video window.
-   *
-   * Since: 0.10.32
    */
   g_object_class_install_property (gobject_class, PROP_WINDOW_HEIGHT,
       g_param_spec_uint64 ("window-height", "window-height",
diff --git a/tests/Makefile.in b/tests/Makefile.in
index 4c96b47..e7af4c3 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -85,7 +85,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -397,9 +396,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/tests/check/Makefile.am b/tests/check/Makefile.am
index 815fc08..77e2d01 100644
--- a/tests/check/Makefile.am
+++ b/tests/check/Makefile.am
@@ -56,6 +56,25 @@
 check_vorbis =
 endif
 
+if USE_PLUGIN_AUDIOTESTSRC
+check_audiotestsrc = elements/audiotestsrc
+else
+check_audiotestsrc =
+endif
+
+if USE_PLUGIN_AUDIOCONVERT
+check_audioconvert = elements/audioconvert
+else
+check_audioconvert =
+endif
+
+if USE_PLUGIN_PLAYBACK
+check_playback = elements/decodebin elements/playbin \
+    elements/playbin-complex elements/streamsynchronizer
+else
+check_playback =
+endif
+
 if USE_THEORA
 check_theora = pipelines/theoraenc
 else
@@ -72,18 +91,90 @@
 check_encodebin =
 endif
 
+if USE_PLUGIN_TYPEFIND
+check_typefind = gst/typefindfunctions
+else
+check_typefind =
+endif
+
 if USE_PLUGIN_SUBPARSE
 check_subparse = elements/subparse
 else
 check_subparse =
 endif
 
+if USE_PLUGIN_VIDEOCONVERT
+check_videoconvert = elements/videoconvert
+else
+check_videoconvert =
+endif
+
+if USE_PLUGIN_VIDEORATE
+check_videorate = elements/videorate
+else
+check_videorate =
+endif
+
+if USE_PLUGIN_VIDEOSCALE
+check_videoscale = elements/videoscale
+else
+check_videoscale =
+endif
+
+if USE_PLUGIN_VIDEOTESTSRC
+check_videotestsrc = elements/videotestsrc
+else
+check_videotestsrc =
+endif
+
+if USE_PLUGIN_VOLUME
+check_volume = elements/volume
+else
+check_volume =
+endif
+
+if USE_PLUGIN_ADDER
+check_adder = elements/adder
+else
+check_adder =
+endif
+
 if HAVE_ORC
 check_orc = orc/video orc/audio orc/adder orc/audioconvert orc/volume orc/videoscale orc/videotestsrc
 else
 check_orc =
 endif
 
+if USE_PLUGIN_GIO
+check_gio = pipelines/gio
+else
+check_gio =
+endif
+
+if USE_PLUGIN_APP
+check_app = elements/appsink elements/appsrc
+else
+check_app =
+endif
+
+if USE_PLUGIN_AUDIORATE
+check_audiorate = elements/audiorate
+else
+check_audiorate =
+endif
+
+if USE_PLUGIN_TCP
+check_tcp = elements/multifdsink elements/multisocketsink
+else
+check_tcp =
+endif
+
+if USE_PLUGIN_AUDIORESAMPLE
+check_audioresample = elements/audioresample
+else
+check_audioresample =
+endif
+
 if HAVE_CXX
 cxx_checks = libs/gstlibscpp
 else
@@ -91,55 +182,56 @@
 endif
 
 check_PROGRAMS = \
-	$(check_ogg) \
-	$(check_vorbis) \
-	elements/audioconvert \
-	elements/audiotestsrc \
-	elements/decodebin \
-	elements/streamsynchronizer \
-	$(check_encodebin) \
 	generic/clock-selection \
 	generic/states \
-	gst/typefindfunctions \
 	libs/libsabi \
 	libs/audio \
 	libs/audiocdsrc \
 	libs/audiodecoder \
+	libs/audioencoder \
 	libs/discoverer \
 	libs/fft \
 	libs/navigation \
 	libs/pbutils \
 	libs/profile \
+	libs/mikey \
 	libs/rtp \
+	libs/rtpbasedepayload \
+	libs/rtpbasepayload \
 	libs/rtsp \
+	libs/rtspconnection \
 	libs/sdp \
 	libs/tag \
 	libs/video \
 	libs/videodecoder \
+	libs/videoencoder \
 	libs/xmpwriter \
-	$(cxx_checks) \
-	$(check_orc) \
 	pipelines/simple-launch-lines \
 	pipelines/basetime \
 	pipelines/capsfilter-renegotiation \
-	pipelines/gio \
-	elements/appsink            \
-	elements/appsrc             \
-	elements/audiorate          \
-	elements/audioresample      \
-	elements/multifdsink        \
-	elements/multisocketsink    \
-	elements/playbin            \
-	elements/playbin-complex    \
-	$(check_pango)              \
-	$(check_subparse)           \
-	elements/videoconvert       \
-	elements/videorate          \
-	elements/videoscale         \
-	elements/videotestsrc       \
-	elements/volume             \
-	elements/adder              \
-	$(check_theora)
+	$(check_adder) \
+	$(check_app) \
+	$(check_audioconvert) \
+	$(check_audiorate) \
+	$(check_audioresample) \
+	$(check_audiotestsrc) \
+	$(check_encodebin) \
+	$(check_gio) \
+	$(check_ogg) \
+	$(check_pango) \
+	$(check_playback) \
+	$(check_subparse) \
+	$(check_tcp) \
+	$(check_theora) \
+	$(check_typefind) \
+	$(check_videoconvert) \
+	$(check_videorate) \
+	$(check_videoscale) \
+	$(check_videotestsrc) \
+	$(check_volume) \
+	$(check_vorbis) \
+	$(cxx_checks) \
+	$(check_orc)
 
 # TORTURE_TO_FIX = \
 #       elements/adder
@@ -210,6 +302,16 @@
 	$(GST_BASE_LIBS) \
 	$(LDADD)
 
+libs_audioencoder_CFLAGS = \
+	$(GST_PLUGINS_BASE_CFLAGS) \
+	$(GST_BASE_CFLAGS) \
+	$(AM_CFLAGS)
+
+libs_audioencoder_LDADD = \
+	$(top_builddir)/gst-libs/gst/audio/libgstaudio-@GST_API_VERSION@.la \
+	$(GST_BASE_LIBS) \
+	$(LDADD)
+
 libs_audiocdsrc_CFLAGS = \
 	$(GST_PLUGINS_BASE_CFLAGS) \
 	$(GST_BASE_CFLAGS) \
@@ -263,6 +365,27 @@
 	$(top_builddir)/gst-libs/gst/rtp/libgstrtp-@GST_API_VERSION@.la \
 	$(GST_BASE_LIBS) $(LDADD)
 
+libs_mikey_CFLAGS = \
+	$(GST_PLUGINS_BASE_CFLAGS) \
+	$(AM_CFLAGS)
+libs_mikey_LDADD = \
+	$(top_builddir)/gst-libs/gst/sdp/libgstsdp-@GST_API_VERSION@.la \
+	$(GST_BASE_LIBS) $(LDADD)
+
+libs_rtpbasepayload_CFLAGS = \
+	$(GST_PLUGINS_BASE_CFLAGS) \
+	$(AM_CFLAGS)
+libs_rtpbasepayload_LDADD = \
+	$(top_builddir)/gst-libs/gst/rtp/libgstrtp-@GST_API_VERSION@.la \
+	$(GST_BASE_LIBS) $(LDADD)
+
+libs_rtpbasedepayload_CFLAGS = \
+	$(GST_PLUGINS_BASE_CFLAGS) \
+	$(AM_CFLAGS)
+libs_rtpbasedepayload_LDADD = \
+	$(top_builddir)/gst-libs/gst/rtp/libgstrtp-@GST_API_VERSION@.la \
+	$(GST_BASE_LIBS) $(LDADD)
+
 libs_rtsp_CFLAGS = \
 	$(GST_PLUGINS_BASE_CFLAGS) \
 	$(AM_CFLAGS)
@@ -270,6 +393,14 @@
 	$(top_builddir)/gst-libs/gst/rtsp/libgstrtsp-@GST_API_VERSION@.la \
 	$(GST_BASE_LIBS) $(LDADD)
 
+libs_rtspconnection_CFLAGS = \
+	$(GST_PLUGINS_BASE_CFLAGS) \
+	$(GIO_CFLAGS) \
+	$(AM_CFLAGS)
+libs_rtspconnection_LDADD = \
+	$(top_builddir)/gst-libs/gst/rtsp/libgstrtsp-@GST_API_VERSION@.la \
+	$(GST_BASE_LIBS) $(GIO_LIBS) $(LDADD)
+
 libs_tag_CFLAGS = \
 	$(GST_PLUGINS_BASE_CFLAGS) \
 	$(GST_BASE_CFLAGS) \
@@ -369,7 +500,7 @@
 	$(GST_BASE_LIBS) \
 	$(LDADD)
 
-elements_textoverlay_LDADD = $(GST_BASE_LIBS) $(LDADD)
+elements_textoverlay_LDADD = $(GST_BASE_LIBS) -lgstvideo-@GST_API_VERSION@ $(LDADD)
 elements_textoverlay_CFLAGS = $(GST_BASE_CFLAGS) $(AM_CFLAGS)
 
 elements_volume_LDADD = \
@@ -445,6 +576,16 @@
 	$(GST_BASE_LIBS) \
 	$(LDADD)
 
+libs_videoencoder_CFLAGS = \
+	$(GST_PLUGINS_BASE_CFLAGS) \
+	$(GST_BASE_CFLAGS) \
+	$(AM_CFLAGS)
+
+libs_videoencoder_LDADD = \
+	$(top_builddir)/gst-libs/gst/video/libgstvideo-@GST_API_VERSION@.la \
+	$(GST_BASE_LIBS) \
+	$(LDADD)
+
 elements_multisocketsink_CFLAGS = $(GIO_CFLAGS) $(AM_CFLAGS)
 elements_multisocketsink_LDADD = $(GIO_LIBS) $(LDADD)
 
diff --git a/tests/check/Makefile.in b/tests/check/Makefile.in
index 091e19b..849143e 100644
--- a/tests/check/Makefile.in
+++ b/tests/check/Makefile.in
@@ -83,39 +83,35 @@
 DIST_COMMON = $(top_srcdir)/common/check.mak $(srcdir)/Makefile.in \
 	$(srcdir)/Makefile.am $(top_srcdir)/depcomp $(noinst_HEADERS) \
 	$(top_srcdir)/test-driver
-check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) \
-	elements/audioconvert$(EXEEXT) elements/audiotestsrc$(EXEEXT) \
-	elements/decodebin$(EXEEXT) \
-	elements/streamsynchronizer$(EXEEXT) $(am__EXEEXT_3) \
-	generic/clock-selection$(EXEEXT) generic/states$(EXEEXT) \
-	gst/typefindfunctions$(EXEEXT) libs/libsabi$(EXEEXT) \
+check_PROGRAMS = generic/clock-selection$(EXEEXT) \
+	generic/states$(EXEEXT) libs/libsabi$(EXEEXT) \
 	libs/audio$(EXEEXT) libs/audiocdsrc$(EXEEXT) \
-	libs/audiodecoder$(EXEEXT) libs/discoverer$(EXEEXT) \
-	libs/fft$(EXEEXT) libs/navigation$(EXEEXT) \
-	libs/pbutils$(EXEEXT) libs/profile$(EXEEXT) libs/rtp$(EXEEXT) \
-	libs/rtsp$(EXEEXT) libs/sdp$(EXEEXT) libs/tag$(EXEEXT) \
-	libs/video$(EXEEXT) libs/videodecoder$(EXEEXT) \
-	libs/xmpwriter$(EXEEXT) $(am__EXEEXT_4) $(am__EXEEXT_5) \
-	pipelines/simple-launch-lines$(EXEEXT) \
+	libs/audiodecoder$(EXEEXT) libs/audioencoder$(EXEEXT) \
+	libs/discoverer$(EXEEXT) libs/fft$(EXEEXT) \
+	libs/navigation$(EXEEXT) libs/pbutils$(EXEEXT) \
+	libs/profile$(EXEEXT) libs/mikey$(EXEEXT) libs/rtp$(EXEEXT) \
+	libs/rtpbasedepayload$(EXEEXT) libs/rtpbasepayload$(EXEEXT) \
+	libs/rtsp$(EXEEXT) libs/rtspconnection$(EXEEXT) \
+	libs/sdp$(EXEEXT) libs/tag$(EXEEXT) libs/video$(EXEEXT) \
+	libs/videodecoder$(EXEEXT) libs/videoencoder$(EXEEXT) \
+	libs/xmpwriter$(EXEEXT) pipelines/simple-launch-lines$(EXEEXT) \
 	pipelines/basetime$(EXEEXT) \
-	pipelines/capsfilter-renegotiation$(EXEEXT) \
-	pipelines/gio$(EXEEXT) elements/appsink$(EXEEXT) \
-	elements/appsrc$(EXEEXT) elements/audiorate$(EXEEXT) \
-	elements/audioresample$(EXEEXT) elements/multifdsink$(EXEEXT) \
-	elements/multisocketsink$(EXEEXT) elements/playbin$(EXEEXT) \
-	elements/playbin-complex$(EXEEXT) $(am__EXEEXT_6) \
-	$(am__EXEEXT_7) elements/videoconvert$(EXEEXT) \
-	elements/videorate$(EXEEXT) elements/videoscale$(EXEEXT) \
-	elements/videotestsrc$(EXEEXT) elements/volume$(EXEEXT) \
-	elements/adder$(EXEEXT) $(am__EXEEXT_8)
-noinst_PROGRAMS = $(am__EXEEXT_9)
+	pipelines/capsfilter-renegotiation$(EXEEXT) $(am__EXEEXT_1) \
+	$(am__EXEEXT_2) $(am__EXEEXT_3) $(am__EXEEXT_4) \
+	$(am__EXEEXT_5) $(am__EXEEXT_6) $(am__EXEEXT_7) \
+	$(am__EXEEXT_8) $(am__EXEEXT_9) $(am__EXEEXT_10) \
+	$(am__EXEEXT_11) $(am__EXEEXT_12) $(am__EXEEXT_13) \
+	$(am__EXEEXT_14) $(am__EXEEXT_15) $(am__EXEEXT_16) \
+	$(am__EXEEXT_17) $(am__EXEEXT_18) $(am__EXEEXT_19) \
+	$(am__EXEEXT_20) $(am__EXEEXT_21) $(am__EXEEXT_22) \
+	$(am__EXEEXT_23)
+noinst_PROGRAMS = $(am__EXEEXT_24)
 subdir = tests/check
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -152,22 +148,49 @@
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
-@USE_OGG_TRUE@am__EXEEXT_1 = pipelines/oggmux$(EXEEXT)
-@USE_VORBIS_TRUE@am__EXEEXT_2 = elements/vorbisdec$(EXEEXT) \
+@USE_PLUGIN_ADDER_TRUE@am__EXEEXT_1 = elements/adder$(EXEEXT)
+@USE_PLUGIN_APP_TRUE@am__EXEEXT_2 = elements/appsink$(EXEEXT) \
+@USE_PLUGIN_APP_TRUE@	elements/appsrc$(EXEEXT)
+@USE_PLUGIN_AUDIOCONVERT_TRUE@am__EXEEXT_3 =  \
+@USE_PLUGIN_AUDIOCONVERT_TRUE@	elements/audioconvert$(EXEEXT)
+@USE_PLUGIN_AUDIORATE_TRUE@am__EXEEXT_4 = elements/audiorate$(EXEEXT)
+@USE_PLUGIN_AUDIORESAMPLE_TRUE@am__EXEEXT_5 = elements/audioresample$(EXEEXT)
+@USE_PLUGIN_AUDIOTESTSRC_TRUE@am__EXEEXT_6 =  \
+@USE_PLUGIN_AUDIOTESTSRC_TRUE@	elements/audiotestsrc$(EXEEXT)
+@USE_THEORA_TRUE@@USE_VORBIS_TRUE@am__EXEEXT_7 =  \
+@USE_THEORA_TRUE@@USE_VORBIS_TRUE@	elements/encodebin$(EXEEXT)
+@USE_PLUGIN_GIO_TRUE@am__EXEEXT_8 = pipelines/gio$(EXEEXT)
+@USE_OGG_TRUE@am__EXEEXT_9 = pipelines/oggmux$(EXEEXT)
+@USE_PANGO_TRUE@am__EXEEXT_10 = elements/textoverlay$(EXEEXT)
+@USE_PLUGIN_PLAYBACK_TRUE@am__EXEEXT_11 = elements/decodebin$(EXEEXT) \
+@USE_PLUGIN_PLAYBACK_TRUE@	elements/playbin$(EXEEXT) \
+@USE_PLUGIN_PLAYBACK_TRUE@	elements/playbin-complex$(EXEEXT) \
+@USE_PLUGIN_PLAYBACK_TRUE@	elements/streamsynchronizer$(EXEEXT)
+@USE_PLUGIN_SUBPARSE_TRUE@am__EXEEXT_12 = elements/subparse$(EXEEXT)
+@USE_PLUGIN_TCP_TRUE@am__EXEEXT_13 = elements/multifdsink$(EXEEXT) \
+@USE_PLUGIN_TCP_TRUE@	elements/multisocketsink$(EXEEXT)
+@USE_THEORA_TRUE@am__EXEEXT_14 = pipelines/theoraenc$(EXEEXT)
+@USE_PLUGIN_TYPEFIND_TRUE@am__EXEEXT_15 =  \
+@USE_PLUGIN_TYPEFIND_TRUE@	gst/typefindfunctions$(EXEEXT)
+@USE_PLUGIN_VIDEOCONVERT_TRUE@am__EXEEXT_16 =  \
+@USE_PLUGIN_VIDEOCONVERT_TRUE@	elements/videoconvert$(EXEEXT)
+@USE_PLUGIN_VIDEORATE_TRUE@am__EXEEXT_17 =  \
+@USE_PLUGIN_VIDEORATE_TRUE@	elements/videorate$(EXEEXT)
+@USE_PLUGIN_VIDEOSCALE_TRUE@am__EXEEXT_18 =  \
+@USE_PLUGIN_VIDEOSCALE_TRUE@	elements/videoscale$(EXEEXT)
+@USE_PLUGIN_VIDEOTESTSRC_TRUE@am__EXEEXT_19 =  \
+@USE_PLUGIN_VIDEOTESTSRC_TRUE@	elements/videotestsrc$(EXEEXT)
+@USE_PLUGIN_VOLUME_TRUE@am__EXEEXT_20 = elements/volume$(EXEEXT)
+@USE_VORBIS_TRUE@am__EXEEXT_21 = elements/vorbisdec$(EXEEXT) \
 @USE_VORBIS_TRUE@	pipelines/vorbisenc$(EXEEXT) \
 @USE_VORBIS_TRUE@	pipelines/vorbisdec$(EXEEXT) \
 @USE_VORBIS_TRUE@	elements/vorbistag$(EXEEXT)
-@USE_THEORA_TRUE@@USE_VORBIS_TRUE@am__EXEEXT_3 =  \
-@USE_THEORA_TRUE@@USE_VORBIS_TRUE@	elements/encodebin$(EXEEXT)
-@HAVE_CXX_TRUE@am__EXEEXT_4 = libs/gstlibscpp$(EXEEXT)
-@HAVE_ORC_TRUE@am__EXEEXT_5 = orc/video$(EXEEXT) orc/audio$(EXEEXT) \
+@HAVE_CXX_TRUE@am__EXEEXT_22 = libs/gstlibscpp$(EXEEXT)
+@HAVE_ORC_TRUE@am__EXEEXT_23 = orc/video$(EXEEXT) orc/audio$(EXEEXT) \
 @HAVE_ORC_TRUE@	orc/adder$(EXEEXT) orc/audioconvert$(EXEEXT) \
 @HAVE_ORC_TRUE@	orc/volume$(EXEEXT) orc/videoscale$(EXEEXT) \
 @HAVE_ORC_TRUE@	orc/videotestsrc$(EXEEXT)
-@USE_PANGO_TRUE@am__EXEEXT_6 = elements/textoverlay$(EXEEXT)
-@USE_PLUGIN_SUBPARSE_TRUE@am__EXEEXT_7 = elements/subparse$(EXEEXT)
-@USE_THEORA_TRUE@am__EXEEXT_8 = pipelines/theoraenc$(EXEEXT)
-@USE_LIBVISUAL_TRUE@am__EXEEXT_9 = elements/libvisual$(EXEEXT)
+@USE_LIBVISUAL_TRUE@am__EXEEXT_24 = elements/libvisual$(EXEEXT)
 PROGRAMS = $(noinst_PROGRAMS)
 elements_adder_SOURCES = elements/adder.c
 am__dirstamp = $(am__leading_dot)dirstamp
@@ -415,6 +438,15 @@
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
 	$(libs_audiodecoder_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
 	-o $@
+libs_audioencoder_SOURCES = libs/audioencoder.c
+libs_audioencoder_OBJECTS =  \
+	libs/libs_audioencoder-audioencoder.$(OBJEXT)
+libs_audioencoder_DEPENDENCIES = $(top_builddir)/gst-libs/gst/audio/libgstaudio-@GST_API_VERSION@.la \
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+libs_audioencoder_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(libs_audioencoder_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+	-o $@
 libs_discoverer_SOURCES = libs/discoverer.c
 libs_discoverer_OBJECTS = libs/libs_discoverer-discoverer.$(OBJEXT)
 libs_discoverer_DEPENDENCIES = $(top_builddir)/gst-libs/gst/pbutils/libgstpbutils-@GST_API_VERSION@.la \
@@ -449,6 +481,13 @@
 libs_libsabi_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(libs_libsabi_CFLAGS) \
 	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+libs_mikey_SOURCES = libs/mikey.c
+libs_mikey_OBJECTS = libs/libs_mikey-mikey.$(OBJEXT)
+libs_mikey_DEPENDENCIES = $(top_builddir)/gst-libs/gst/sdp/libgstsdp-@GST_API_VERSION@.la \
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+libs_mikey_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(libs_mikey_CFLAGS) \
+	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
 libs_navigation_SOURCES = libs/navigation.c
 libs_navigation_OBJECTS = libs/libs_navigation-navigation.$(OBJEXT)
 libs_navigation_DEPENDENCIES = $(top_builddir)/gst-libs/gst/video/libgstvideo-@GST_API_VERSION@.la \
@@ -479,6 +518,24 @@
 libs_rtp_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(libs_rtp_CFLAGS) \
 	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+libs_rtpbasedepayload_SOURCES = libs/rtpbasedepayload.c
+libs_rtpbasedepayload_OBJECTS =  \
+	libs/libs_rtpbasedepayload-rtpbasedepayload.$(OBJEXT)
+libs_rtpbasedepayload_DEPENDENCIES = $(top_builddir)/gst-libs/gst/rtp/libgstrtp-@GST_API_VERSION@.la \
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+libs_rtpbasedepayload_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(libs_rtpbasedepayload_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+	$(LDFLAGS) -o $@
+libs_rtpbasepayload_SOURCES = libs/rtpbasepayload.c
+libs_rtpbasepayload_OBJECTS =  \
+	libs/libs_rtpbasepayload-rtpbasepayload.$(OBJEXT)
+libs_rtpbasepayload_DEPENDENCIES = $(top_builddir)/gst-libs/gst/rtp/libgstrtp-@GST_API_VERSION@.la \
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+libs_rtpbasepayload_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(libs_rtpbasepayload_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+	$(LDFLAGS) -o $@
 libs_rtsp_SOURCES = libs/rtsp.c
 libs_rtsp_OBJECTS = libs/libs_rtsp-rtsp.$(OBJEXT)
 libs_rtsp_DEPENDENCIES = $(top_builddir)/gst-libs/gst/rtsp/libgstrtsp-@GST_API_VERSION@.la \
@@ -486,6 +543,16 @@
 libs_rtsp_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(libs_rtsp_CFLAGS) \
 	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+libs_rtspconnection_SOURCES = libs/rtspconnection.c
+libs_rtspconnection_OBJECTS =  \
+	libs/libs_rtspconnection-rtspconnection.$(OBJEXT)
+libs_rtspconnection_DEPENDENCIES = $(top_builddir)/gst-libs/gst/rtsp/libgstrtsp-@GST_API_VERSION@.la \
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_2)
+libs_rtspconnection_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(libs_rtspconnection_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+	$(LDFLAGS) -o $@
 libs_sdp_SOURCES = libs/sdp.c
 libs_sdp_OBJECTS = libs/libs_sdp-sdp.$(OBJEXT)
 libs_sdp_DEPENDENCIES = $(top_builddir)/gst-libs/gst/sdp/libgstsdp-@GST_API_VERSION@.la \
@@ -516,6 +583,15 @@
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
 	$(libs_videodecoder_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
 	-o $@
+libs_videoencoder_SOURCES = libs/videoencoder.c
+libs_videoencoder_OBJECTS =  \
+	libs/libs_videoencoder-videoencoder.$(OBJEXT)
+libs_videoencoder_DEPENDENCIES = $(top_builddir)/gst-libs/gst/video/libgstvideo-@GST_API_VERSION@.la \
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+libs_videoencoder_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(libs_videoencoder_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+	-o $@
 libs_xmpwriter_SOURCES = libs/xmpwriter.c
 libs_xmpwriter_OBJECTS = libs/libs_xmpwriter-xmpwriter.$(OBJEXT)
 libs_xmpwriter_DEPENDENCIES = $(top_builddir)/gst-libs/gst/tag/libgsttag-@GST_API_VERSION@.la \
@@ -702,11 +778,13 @@
 	elements/videotestsrc.c elements/volume.c elements/vorbisdec.c \
 	elements/vorbistag.c generic/clock-selection.c \
 	generic/states.c gst/typefindfunctions.c libs/audio.c \
-	libs/audiocdsrc.c libs/audiodecoder.c libs/discoverer.c \
-	libs/fft.c $(libs_gstlibscpp_SOURCES) libs/libsabi.c \
-	libs/navigation.c libs/pbutils.c libs/profile.c libs/rtp.c \
-	libs/rtsp.c libs/sdp.c libs/tag.c libs/video.c \
-	libs/videodecoder.c libs/xmpwriter.c \
+	libs/audiocdsrc.c libs/audiodecoder.c libs/audioencoder.c \
+	libs/discoverer.c libs/fft.c $(libs_gstlibscpp_SOURCES) \
+	libs/libsabi.c libs/mikey.c libs/navigation.c libs/pbutils.c \
+	libs/profile.c libs/rtp.c libs/rtpbasedepayload.c \
+	libs/rtpbasepayload.c libs/rtsp.c libs/rtspconnection.c \
+	libs/sdp.c libs/tag.c libs/video.c libs/videodecoder.c \
+	libs/videoencoder.c libs/xmpwriter.c \
 	$(nodist_orc_adder_SOURCES) $(nodist_orc_audio_SOURCES) \
 	$(nodist_orc_audioconvert_SOURCES) $(nodist_orc_video_SOURCES) \
 	$(nodist_orc_videoscale_SOURCES) \
@@ -728,11 +806,13 @@
 	elements/videotestsrc.c elements/volume.c elements/vorbisdec.c \
 	elements/vorbistag.c generic/clock-selection.c \
 	generic/states.c gst/typefindfunctions.c libs/audio.c \
-	libs/audiocdsrc.c libs/audiodecoder.c libs/discoverer.c \
-	libs/fft.c $(libs_gstlibscpp_SOURCES) libs/libsabi.c \
-	libs/navigation.c libs/pbutils.c libs/profile.c libs/rtp.c \
-	libs/rtsp.c libs/sdp.c libs/tag.c libs/video.c \
-	libs/videodecoder.c libs/xmpwriter.c pipelines/basetime.c \
+	libs/audiocdsrc.c libs/audiodecoder.c libs/audioencoder.c \
+	libs/discoverer.c libs/fft.c $(libs_gstlibscpp_SOURCES) \
+	libs/libsabi.c libs/mikey.c libs/navigation.c libs/pbutils.c \
+	libs/profile.c libs/rtp.c libs/rtpbasedepayload.c \
+	libs/rtpbasepayload.c libs/rtsp.c libs/rtspconnection.c \
+	libs/sdp.c libs/tag.c libs/video.c libs/videodecoder.c \
+	libs/videoencoder.c libs/xmpwriter.c pipelines/basetime.c \
 	pipelines/capsfilter-renegotiation.c pipelines/gio.c \
 	pipelines/oggmux.c pipelines/simple-launch-lines.c \
 	pipelines/theoraenc.c pipelines/vorbisdec.c \
@@ -1162,9 +1242,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -1289,15 +1370,47 @@
 @USE_VORBIS_TRUE@check_vorbis = elements/vorbisdec pipelines/vorbisenc pipelines/vorbisdec \
 @USE_VORBIS_TRUE@	elements/vorbistag
 
+@USE_PLUGIN_AUDIOTESTSRC_FALSE@check_audiotestsrc = 
+@USE_PLUGIN_AUDIOTESTSRC_TRUE@check_audiotestsrc = elements/audiotestsrc
+@USE_PLUGIN_AUDIOCONVERT_FALSE@check_audioconvert = 
+@USE_PLUGIN_AUDIOCONVERT_TRUE@check_audioconvert = elements/audioconvert
+@USE_PLUGIN_PLAYBACK_FALSE@check_playback = 
+@USE_PLUGIN_PLAYBACK_TRUE@check_playback = elements/decodebin elements/playbin \
+@USE_PLUGIN_PLAYBACK_TRUE@    elements/playbin-complex elements/streamsynchronizer
+
 @USE_THEORA_FALSE@check_theora = 
 @USE_THEORA_TRUE@check_theora = pipelines/theoraenc
 @USE_THEORA_FALSE@@USE_VORBIS_TRUE@check_encodebin = 
 @USE_THEORA_TRUE@@USE_VORBIS_TRUE@check_encodebin = elements/encodebin
 @USE_VORBIS_FALSE@check_encodebin = 
+@USE_PLUGIN_TYPEFIND_FALSE@check_typefind = 
+@USE_PLUGIN_TYPEFIND_TRUE@check_typefind = gst/typefindfunctions
 @USE_PLUGIN_SUBPARSE_FALSE@check_subparse = 
 @USE_PLUGIN_SUBPARSE_TRUE@check_subparse = elements/subparse
+@USE_PLUGIN_VIDEOCONVERT_FALSE@check_videoconvert = 
+@USE_PLUGIN_VIDEOCONVERT_TRUE@check_videoconvert = elements/videoconvert
+@USE_PLUGIN_VIDEORATE_FALSE@check_videorate = 
+@USE_PLUGIN_VIDEORATE_TRUE@check_videorate = elements/videorate
+@USE_PLUGIN_VIDEOSCALE_FALSE@check_videoscale = 
+@USE_PLUGIN_VIDEOSCALE_TRUE@check_videoscale = elements/videoscale
+@USE_PLUGIN_VIDEOTESTSRC_FALSE@check_videotestsrc = 
+@USE_PLUGIN_VIDEOTESTSRC_TRUE@check_videotestsrc = elements/videotestsrc
+@USE_PLUGIN_VOLUME_FALSE@check_volume = 
+@USE_PLUGIN_VOLUME_TRUE@check_volume = elements/volume
+@USE_PLUGIN_ADDER_FALSE@check_adder = 
+@USE_PLUGIN_ADDER_TRUE@check_adder = elements/adder
 @HAVE_ORC_FALSE@check_orc = 
 @HAVE_ORC_TRUE@check_orc = orc/video orc/audio orc/adder orc/audioconvert orc/volume orc/videoscale orc/videotestsrc
+@USE_PLUGIN_GIO_FALSE@check_gio = 
+@USE_PLUGIN_GIO_TRUE@check_gio = pipelines/gio
+@USE_PLUGIN_APP_FALSE@check_app = 
+@USE_PLUGIN_APP_TRUE@check_app = elements/appsink elements/appsrc
+@USE_PLUGIN_AUDIORATE_FALSE@check_audiorate = 
+@USE_PLUGIN_AUDIORATE_TRUE@check_audiorate = elements/audiorate
+@USE_PLUGIN_TCP_FALSE@check_tcp = 
+@USE_PLUGIN_TCP_TRUE@check_tcp = elements/multifdsink elements/multisocketsink
+@USE_PLUGIN_AUDIORESAMPLE_FALSE@check_audioresample = 
+@USE_PLUGIN_AUDIORESAMPLE_TRUE@check_audioresample = elements/audioresample
 @HAVE_CXX_FALSE@cxx_checks = 
 @HAVE_CXX_TRUE@cxx_checks = libs/gstlibscpp
 
@@ -1367,6 +1480,16 @@
 	$(GST_BASE_LIBS) \
 	$(LDADD)
 
+libs_audioencoder_CFLAGS = \
+	$(GST_PLUGINS_BASE_CFLAGS) \
+	$(GST_BASE_CFLAGS) \
+	$(AM_CFLAGS)
+
+libs_audioencoder_LDADD = \
+	$(top_builddir)/gst-libs/gst/audio/libgstaudio-@GST_API_VERSION@.la \
+	$(GST_BASE_LIBS) \
+	$(LDADD)
+
 libs_audiocdsrc_CFLAGS = \
 	$(GST_PLUGINS_BASE_CFLAGS) \
 	$(GST_BASE_CFLAGS) \
@@ -1423,6 +1546,30 @@
 	$(top_builddir)/gst-libs/gst/rtp/libgstrtp-@GST_API_VERSION@.la \
 	$(GST_BASE_LIBS) $(LDADD)
 
+libs_mikey_CFLAGS = \
+	$(GST_PLUGINS_BASE_CFLAGS) \
+	$(AM_CFLAGS)
+
+libs_mikey_LDADD = \
+	$(top_builddir)/gst-libs/gst/sdp/libgstsdp-@GST_API_VERSION@.la \
+	$(GST_BASE_LIBS) $(LDADD)
+
+libs_rtpbasepayload_CFLAGS = \
+	$(GST_PLUGINS_BASE_CFLAGS) \
+	$(AM_CFLAGS)
+
+libs_rtpbasepayload_LDADD = \
+	$(top_builddir)/gst-libs/gst/rtp/libgstrtp-@GST_API_VERSION@.la \
+	$(GST_BASE_LIBS) $(LDADD)
+
+libs_rtpbasedepayload_CFLAGS = \
+	$(GST_PLUGINS_BASE_CFLAGS) \
+	$(AM_CFLAGS)
+
+libs_rtpbasedepayload_LDADD = \
+	$(top_builddir)/gst-libs/gst/rtp/libgstrtp-@GST_API_VERSION@.la \
+	$(GST_BASE_LIBS) $(LDADD)
+
 libs_rtsp_CFLAGS = \
 	$(GST_PLUGINS_BASE_CFLAGS) \
 	$(AM_CFLAGS)
@@ -1431,6 +1578,15 @@
 	$(top_builddir)/gst-libs/gst/rtsp/libgstrtsp-@GST_API_VERSION@.la \
 	$(GST_BASE_LIBS) $(LDADD)
 
+libs_rtspconnection_CFLAGS = \
+	$(GST_PLUGINS_BASE_CFLAGS) \
+	$(GIO_CFLAGS) \
+	$(AM_CFLAGS)
+
+libs_rtspconnection_LDADD = \
+	$(top_builddir)/gst-libs/gst/rtsp/libgstrtsp-@GST_API_VERSION@.la \
+	$(GST_BASE_LIBS) $(GIO_LIBS) $(LDADD)
+
 libs_tag_CFLAGS = \
 	$(GST_PLUGINS_BASE_CFLAGS) \
 	$(GST_BASE_CFLAGS) \
@@ -1524,7 +1680,7 @@
 	$(GST_BASE_LIBS) \
 	$(LDADD)
 
-elements_textoverlay_LDADD = $(GST_BASE_LIBS) $(LDADD)
+elements_textoverlay_LDADD = $(GST_BASE_LIBS) -lgstvideo-@GST_API_VERSION@ $(LDADD)
 elements_textoverlay_CFLAGS = $(GST_BASE_CFLAGS) $(AM_CFLAGS)
 elements_volume_LDADD = \
 	$(top_builddir)/gst-libs/gst/audio/libgstaudio-@GST_API_VERSION@.la \
@@ -1600,6 +1756,16 @@
 	$(GST_BASE_LIBS) \
 	$(LDADD)
 
+libs_videoencoder_CFLAGS = \
+	$(GST_PLUGINS_BASE_CFLAGS) \
+	$(GST_BASE_CFLAGS) \
+	$(AM_CFLAGS)
+
+libs_videoencoder_LDADD = \
+	$(top_builddir)/gst-libs/gst/video/libgstvideo-@GST_API_VERSION@.la \
+	$(GST_BASE_LIBS) \
+	$(LDADD)
+
 elements_multisocketsink_CFLAGS = $(GIO_CFLAGS) $(AM_CFLAGS)
 elements_multisocketsink_LDADD = $(GIO_LIBS) $(LDADD)
 pipelines_gio_CFLAGS = $(GIO_CFLAGS) $(AM_CFLAGS)
@@ -1905,6 +2071,12 @@
 libs/audiodecoder$(EXEEXT): $(libs_audiodecoder_OBJECTS) $(libs_audiodecoder_DEPENDENCIES) $(EXTRA_libs_audiodecoder_DEPENDENCIES) libs/$(am__dirstamp)
 	@rm -f libs/audiodecoder$(EXEEXT)
 	$(AM_V_CCLD)$(libs_audiodecoder_LINK) $(libs_audiodecoder_OBJECTS) $(libs_audiodecoder_LDADD) $(LIBS)
+libs/libs_audioencoder-audioencoder.$(OBJEXT): libs/$(am__dirstamp) \
+	libs/$(DEPDIR)/$(am__dirstamp)
+
+libs/audioencoder$(EXEEXT): $(libs_audioencoder_OBJECTS) $(libs_audioencoder_DEPENDENCIES) $(EXTRA_libs_audioencoder_DEPENDENCIES) libs/$(am__dirstamp)
+	@rm -f libs/audioencoder$(EXEEXT)
+	$(AM_V_CCLD)$(libs_audioencoder_LINK) $(libs_audioencoder_OBJECTS) $(libs_audioencoder_LDADD) $(LIBS)
 libs/libs_discoverer-discoverer.$(OBJEXT): libs/$(am__dirstamp) \
 	libs/$(DEPDIR)/$(am__dirstamp)
 
@@ -1929,6 +2101,12 @@
 libs/libsabi$(EXEEXT): $(libs_libsabi_OBJECTS) $(libs_libsabi_DEPENDENCIES) $(EXTRA_libs_libsabi_DEPENDENCIES) libs/$(am__dirstamp)
 	@rm -f libs/libsabi$(EXEEXT)
 	$(AM_V_CCLD)$(libs_libsabi_LINK) $(libs_libsabi_OBJECTS) $(libs_libsabi_LDADD) $(LIBS)
+libs/libs_mikey-mikey.$(OBJEXT): libs/$(am__dirstamp) \
+	libs/$(DEPDIR)/$(am__dirstamp)
+
+libs/mikey$(EXEEXT): $(libs_mikey_OBJECTS) $(libs_mikey_DEPENDENCIES) $(EXTRA_libs_mikey_DEPENDENCIES) libs/$(am__dirstamp)
+	@rm -f libs/mikey$(EXEEXT)
+	$(AM_V_CCLD)$(libs_mikey_LINK) $(libs_mikey_OBJECTS) $(libs_mikey_LDADD) $(LIBS)
 libs/libs_navigation-navigation.$(OBJEXT): libs/$(am__dirstamp) \
 	libs/$(DEPDIR)/$(am__dirstamp)
 
@@ -1953,12 +2131,30 @@
 libs/rtp$(EXEEXT): $(libs_rtp_OBJECTS) $(libs_rtp_DEPENDENCIES) $(EXTRA_libs_rtp_DEPENDENCIES) libs/$(am__dirstamp)
 	@rm -f libs/rtp$(EXEEXT)
 	$(AM_V_CCLD)$(libs_rtp_LINK) $(libs_rtp_OBJECTS) $(libs_rtp_LDADD) $(LIBS)
+libs/libs_rtpbasedepayload-rtpbasedepayload.$(OBJEXT):  \
+	libs/$(am__dirstamp) libs/$(DEPDIR)/$(am__dirstamp)
+
+libs/rtpbasedepayload$(EXEEXT): $(libs_rtpbasedepayload_OBJECTS) $(libs_rtpbasedepayload_DEPENDENCIES) $(EXTRA_libs_rtpbasedepayload_DEPENDENCIES) libs/$(am__dirstamp)
+	@rm -f libs/rtpbasedepayload$(EXEEXT)
+	$(AM_V_CCLD)$(libs_rtpbasedepayload_LINK) $(libs_rtpbasedepayload_OBJECTS) $(libs_rtpbasedepayload_LDADD) $(LIBS)
+libs/libs_rtpbasepayload-rtpbasepayload.$(OBJEXT):  \
+	libs/$(am__dirstamp) libs/$(DEPDIR)/$(am__dirstamp)
+
+libs/rtpbasepayload$(EXEEXT): $(libs_rtpbasepayload_OBJECTS) $(libs_rtpbasepayload_DEPENDENCIES) $(EXTRA_libs_rtpbasepayload_DEPENDENCIES) libs/$(am__dirstamp)
+	@rm -f libs/rtpbasepayload$(EXEEXT)
+	$(AM_V_CCLD)$(libs_rtpbasepayload_LINK) $(libs_rtpbasepayload_OBJECTS) $(libs_rtpbasepayload_LDADD) $(LIBS)
 libs/libs_rtsp-rtsp.$(OBJEXT): libs/$(am__dirstamp) \
 	libs/$(DEPDIR)/$(am__dirstamp)
 
 libs/rtsp$(EXEEXT): $(libs_rtsp_OBJECTS) $(libs_rtsp_DEPENDENCIES) $(EXTRA_libs_rtsp_DEPENDENCIES) libs/$(am__dirstamp)
 	@rm -f libs/rtsp$(EXEEXT)
 	$(AM_V_CCLD)$(libs_rtsp_LINK) $(libs_rtsp_OBJECTS) $(libs_rtsp_LDADD) $(LIBS)
+libs/libs_rtspconnection-rtspconnection.$(OBJEXT):  \
+	libs/$(am__dirstamp) libs/$(DEPDIR)/$(am__dirstamp)
+
+libs/rtspconnection$(EXEEXT): $(libs_rtspconnection_OBJECTS) $(libs_rtspconnection_DEPENDENCIES) $(EXTRA_libs_rtspconnection_DEPENDENCIES) libs/$(am__dirstamp)
+	@rm -f libs/rtspconnection$(EXEEXT)
+	$(AM_V_CCLD)$(libs_rtspconnection_LINK) $(libs_rtspconnection_OBJECTS) $(libs_rtspconnection_LDADD) $(LIBS)
 libs/libs_sdp-sdp.$(OBJEXT): libs/$(am__dirstamp) \
 	libs/$(DEPDIR)/$(am__dirstamp)
 
@@ -1983,6 +2179,12 @@
 libs/videodecoder$(EXEEXT): $(libs_videodecoder_OBJECTS) $(libs_videodecoder_DEPENDENCIES) $(EXTRA_libs_videodecoder_DEPENDENCIES) libs/$(am__dirstamp)
 	@rm -f libs/videodecoder$(EXEEXT)
 	$(AM_V_CCLD)$(libs_videodecoder_LINK) $(libs_videodecoder_OBJECTS) $(libs_videodecoder_LDADD) $(LIBS)
+libs/libs_videoencoder-videoencoder.$(OBJEXT): libs/$(am__dirstamp) \
+	libs/$(DEPDIR)/$(am__dirstamp)
+
+libs/videoencoder$(EXEEXT): $(libs_videoencoder_OBJECTS) $(libs_videoencoder_DEPENDENCIES) $(EXTRA_libs_videoencoder_DEPENDENCIES) libs/$(am__dirstamp)
+	@rm -f libs/videoencoder$(EXEEXT)
+	$(AM_V_CCLD)$(libs_videoencoder_LINK) $(libs_videoencoder_OBJECTS) $(libs_videoencoder_LDADD) $(LIBS)
 libs/libs_xmpwriter-xmpwriter.$(OBJEXT): libs/$(am__dirstamp) \
 	libs/$(DEPDIR)/$(am__dirstamp)
 
@@ -2135,18 +2337,24 @@
 @AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/libs_audio-audio.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/libs_audiocdsrc-audiocdsrc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/libs_audiodecoder-audiodecoder.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/libs_audioencoder-audioencoder.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/libs_discoverer-discoverer.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/libs_fft-fft.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/libs_libsabi-libsabi.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/libs_mikey-mikey.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/libs_navigation-navigation.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/libs_pbutils-pbutils.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/libs_profile-profile.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/libs_rtp-rtp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/libs_rtpbasedepayload-rtpbasedepayload.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/libs_rtpbasepayload-rtpbasepayload.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/libs_rtsp-rtsp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/libs_rtspconnection-rtspconnection.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/libs_sdp-sdp.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/libs_tag-tag.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/libs_video-video.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/libs_videodecoder-videodecoder.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/libs_videoencoder-videoencoder.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/libs_xmpwriter-xmpwriter.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@orc/$(DEPDIR)/orc_adder-adder.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@orc/$(DEPDIR)/orc_audio-audio.Po@am__quote@
@@ -2510,6 +2718,20 @@
 @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) $(libs_audiodecoder_CFLAGS) $(CFLAGS) -c -o libs/libs_audiodecoder-audiodecoder.obj `if test -f 'libs/audiodecoder.c'; then $(CYGPATH_W) 'libs/audiodecoder.c'; else $(CYGPATH_W) '$(srcdir)/libs/audiodecoder.c'; fi`
 
+libs/libs_audioencoder-audioencoder.o: libs/audioencoder.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libs_audioencoder_CFLAGS) $(CFLAGS) -MT libs/libs_audioencoder-audioencoder.o -MD -MP -MF libs/$(DEPDIR)/libs_audioencoder-audioencoder.Tpo -c -o libs/libs_audioencoder-audioencoder.o `test -f 'libs/audioencoder.c' || echo '$(srcdir)/'`libs/audioencoder.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) libs/$(DEPDIR)/libs_audioencoder-audioencoder.Tpo libs/$(DEPDIR)/libs_audioencoder-audioencoder.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='libs/audioencoder.c' object='libs/libs_audioencoder-audioencoder.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) $(libs_audioencoder_CFLAGS) $(CFLAGS) -c -o libs/libs_audioencoder-audioencoder.o `test -f 'libs/audioencoder.c' || echo '$(srcdir)/'`libs/audioencoder.c
+
+libs/libs_audioencoder-audioencoder.obj: libs/audioencoder.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libs_audioencoder_CFLAGS) $(CFLAGS) -MT libs/libs_audioencoder-audioencoder.obj -MD -MP -MF libs/$(DEPDIR)/libs_audioencoder-audioencoder.Tpo -c -o libs/libs_audioencoder-audioencoder.obj `if test -f 'libs/audioencoder.c'; then $(CYGPATH_W) 'libs/audioencoder.c'; else $(CYGPATH_W) '$(srcdir)/libs/audioencoder.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) libs/$(DEPDIR)/libs_audioencoder-audioencoder.Tpo libs/$(DEPDIR)/libs_audioencoder-audioencoder.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='libs/audioencoder.c' object='libs/libs_audioencoder-audioencoder.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) $(libs_audioencoder_CFLAGS) $(CFLAGS) -c -o libs/libs_audioencoder-audioencoder.obj `if test -f 'libs/audioencoder.c'; then $(CYGPATH_W) 'libs/audioencoder.c'; else $(CYGPATH_W) '$(srcdir)/libs/audioencoder.c'; fi`
+
 libs/libs_discoverer-discoverer.o: libs/discoverer.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libs_discoverer_CFLAGS) $(CFLAGS) -MT libs/libs_discoverer-discoverer.o -MD -MP -MF libs/$(DEPDIR)/libs_discoverer-discoverer.Tpo -c -o libs/libs_discoverer-discoverer.o `test -f 'libs/discoverer.c' || echo '$(srcdir)/'`libs/discoverer.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) libs/$(DEPDIR)/libs_discoverer-discoverer.Tpo libs/$(DEPDIR)/libs_discoverer-discoverer.Po
@@ -2552,6 +2774,20 @@
 @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) $(libs_libsabi_CFLAGS) $(CFLAGS) -c -o libs/libs_libsabi-libsabi.obj `if test -f 'libs/libsabi.c'; then $(CYGPATH_W) 'libs/libsabi.c'; else $(CYGPATH_W) '$(srcdir)/libs/libsabi.c'; fi`
 
+libs/libs_mikey-mikey.o: libs/mikey.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libs_mikey_CFLAGS) $(CFLAGS) -MT libs/libs_mikey-mikey.o -MD -MP -MF libs/$(DEPDIR)/libs_mikey-mikey.Tpo -c -o libs/libs_mikey-mikey.o `test -f 'libs/mikey.c' || echo '$(srcdir)/'`libs/mikey.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) libs/$(DEPDIR)/libs_mikey-mikey.Tpo libs/$(DEPDIR)/libs_mikey-mikey.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='libs/mikey.c' object='libs/libs_mikey-mikey.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) $(libs_mikey_CFLAGS) $(CFLAGS) -c -o libs/libs_mikey-mikey.o `test -f 'libs/mikey.c' || echo '$(srcdir)/'`libs/mikey.c
+
+libs/libs_mikey-mikey.obj: libs/mikey.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libs_mikey_CFLAGS) $(CFLAGS) -MT libs/libs_mikey-mikey.obj -MD -MP -MF libs/$(DEPDIR)/libs_mikey-mikey.Tpo -c -o libs/libs_mikey-mikey.obj `if test -f 'libs/mikey.c'; then $(CYGPATH_W) 'libs/mikey.c'; else $(CYGPATH_W) '$(srcdir)/libs/mikey.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) libs/$(DEPDIR)/libs_mikey-mikey.Tpo libs/$(DEPDIR)/libs_mikey-mikey.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='libs/mikey.c' object='libs/libs_mikey-mikey.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) $(libs_mikey_CFLAGS) $(CFLAGS) -c -o libs/libs_mikey-mikey.obj `if test -f 'libs/mikey.c'; then $(CYGPATH_W) 'libs/mikey.c'; else $(CYGPATH_W) '$(srcdir)/libs/mikey.c'; fi`
+
 libs/libs_navigation-navigation.o: libs/navigation.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libs_navigation_CFLAGS) $(CFLAGS) -MT libs/libs_navigation-navigation.o -MD -MP -MF libs/$(DEPDIR)/libs_navigation-navigation.Tpo -c -o libs/libs_navigation-navigation.o `test -f 'libs/navigation.c' || echo '$(srcdir)/'`libs/navigation.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) libs/$(DEPDIR)/libs_navigation-navigation.Tpo libs/$(DEPDIR)/libs_navigation-navigation.Po
@@ -2608,6 +2844,34 @@
 @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) $(libs_rtp_CFLAGS) $(CFLAGS) -c -o libs/libs_rtp-rtp.obj `if test -f 'libs/rtp.c'; then $(CYGPATH_W) 'libs/rtp.c'; else $(CYGPATH_W) '$(srcdir)/libs/rtp.c'; fi`
 
+libs/libs_rtpbasedepayload-rtpbasedepayload.o: libs/rtpbasedepayload.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libs_rtpbasedepayload_CFLAGS) $(CFLAGS) -MT libs/libs_rtpbasedepayload-rtpbasedepayload.o -MD -MP -MF libs/$(DEPDIR)/libs_rtpbasedepayload-rtpbasedepayload.Tpo -c -o libs/libs_rtpbasedepayload-rtpbasedepayload.o `test -f 'libs/rtpbasedepayload.c' || echo '$(srcdir)/'`libs/rtpbasedepayload.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) libs/$(DEPDIR)/libs_rtpbasedepayload-rtpbasedepayload.Tpo libs/$(DEPDIR)/libs_rtpbasedepayload-rtpbasedepayload.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='libs/rtpbasedepayload.c' object='libs/libs_rtpbasedepayload-rtpbasedepayload.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) $(libs_rtpbasedepayload_CFLAGS) $(CFLAGS) -c -o libs/libs_rtpbasedepayload-rtpbasedepayload.o `test -f 'libs/rtpbasedepayload.c' || echo '$(srcdir)/'`libs/rtpbasedepayload.c
+
+libs/libs_rtpbasedepayload-rtpbasedepayload.obj: libs/rtpbasedepayload.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libs_rtpbasedepayload_CFLAGS) $(CFLAGS) -MT libs/libs_rtpbasedepayload-rtpbasedepayload.obj -MD -MP -MF libs/$(DEPDIR)/libs_rtpbasedepayload-rtpbasedepayload.Tpo -c -o libs/libs_rtpbasedepayload-rtpbasedepayload.obj `if test -f 'libs/rtpbasedepayload.c'; then $(CYGPATH_W) 'libs/rtpbasedepayload.c'; else $(CYGPATH_W) '$(srcdir)/libs/rtpbasedepayload.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) libs/$(DEPDIR)/libs_rtpbasedepayload-rtpbasedepayload.Tpo libs/$(DEPDIR)/libs_rtpbasedepayload-rtpbasedepayload.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='libs/rtpbasedepayload.c' object='libs/libs_rtpbasedepayload-rtpbasedepayload.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) $(libs_rtpbasedepayload_CFLAGS) $(CFLAGS) -c -o libs/libs_rtpbasedepayload-rtpbasedepayload.obj `if test -f 'libs/rtpbasedepayload.c'; then $(CYGPATH_W) 'libs/rtpbasedepayload.c'; else $(CYGPATH_W) '$(srcdir)/libs/rtpbasedepayload.c'; fi`
+
+libs/libs_rtpbasepayload-rtpbasepayload.o: libs/rtpbasepayload.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libs_rtpbasepayload_CFLAGS) $(CFLAGS) -MT libs/libs_rtpbasepayload-rtpbasepayload.o -MD -MP -MF libs/$(DEPDIR)/libs_rtpbasepayload-rtpbasepayload.Tpo -c -o libs/libs_rtpbasepayload-rtpbasepayload.o `test -f 'libs/rtpbasepayload.c' || echo '$(srcdir)/'`libs/rtpbasepayload.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) libs/$(DEPDIR)/libs_rtpbasepayload-rtpbasepayload.Tpo libs/$(DEPDIR)/libs_rtpbasepayload-rtpbasepayload.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='libs/rtpbasepayload.c' object='libs/libs_rtpbasepayload-rtpbasepayload.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) $(libs_rtpbasepayload_CFLAGS) $(CFLAGS) -c -o libs/libs_rtpbasepayload-rtpbasepayload.o `test -f 'libs/rtpbasepayload.c' || echo '$(srcdir)/'`libs/rtpbasepayload.c
+
+libs/libs_rtpbasepayload-rtpbasepayload.obj: libs/rtpbasepayload.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libs_rtpbasepayload_CFLAGS) $(CFLAGS) -MT libs/libs_rtpbasepayload-rtpbasepayload.obj -MD -MP -MF libs/$(DEPDIR)/libs_rtpbasepayload-rtpbasepayload.Tpo -c -o libs/libs_rtpbasepayload-rtpbasepayload.obj `if test -f 'libs/rtpbasepayload.c'; then $(CYGPATH_W) 'libs/rtpbasepayload.c'; else $(CYGPATH_W) '$(srcdir)/libs/rtpbasepayload.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) libs/$(DEPDIR)/libs_rtpbasepayload-rtpbasepayload.Tpo libs/$(DEPDIR)/libs_rtpbasepayload-rtpbasepayload.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='libs/rtpbasepayload.c' object='libs/libs_rtpbasepayload-rtpbasepayload.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) $(libs_rtpbasepayload_CFLAGS) $(CFLAGS) -c -o libs/libs_rtpbasepayload-rtpbasepayload.obj `if test -f 'libs/rtpbasepayload.c'; then $(CYGPATH_W) 'libs/rtpbasepayload.c'; else $(CYGPATH_W) '$(srcdir)/libs/rtpbasepayload.c'; fi`
+
 libs/libs_rtsp-rtsp.o: libs/rtsp.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libs_rtsp_CFLAGS) $(CFLAGS) -MT libs/libs_rtsp-rtsp.o -MD -MP -MF libs/$(DEPDIR)/libs_rtsp-rtsp.Tpo -c -o libs/libs_rtsp-rtsp.o `test -f 'libs/rtsp.c' || echo '$(srcdir)/'`libs/rtsp.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) libs/$(DEPDIR)/libs_rtsp-rtsp.Tpo libs/$(DEPDIR)/libs_rtsp-rtsp.Po
@@ -2622,6 +2886,20 @@
 @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) $(libs_rtsp_CFLAGS) $(CFLAGS) -c -o libs/libs_rtsp-rtsp.obj `if test -f 'libs/rtsp.c'; then $(CYGPATH_W) 'libs/rtsp.c'; else $(CYGPATH_W) '$(srcdir)/libs/rtsp.c'; fi`
 
+libs/libs_rtspconnection-rtspconnection.o: libs/rtspconnection.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libs_rtspconnection_CFLAGS) $(CFLAGS) -MT libs/libs_rtspconnection-rtspconnection.o -MD -MP -MF libs/$(DEPDIR)/libs_rtspconnection-rtspconnection.Tpo -c -o libs/libs_rtspconnection-rtspconnection.o `test -f 'libs/rtspconnection.c' || echo '$(srcdir)/'`libs/rtspconnection.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) libs/$(DEPDIR)/libs_rtspconnection-rtspconnection.Tpo libs/$(DEPDIR)/libs_rtspconnection-rtspconnection.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='libs/rtspconnection.c' object='libs/libs_rtspconnection-rtspconnection.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) $(libs_rtspconnection_CFLAGS) $(CFLAGS) -c -o libs/libs_rtspconnection-rtspconnection.o `test -f 'libs/rtspconnection.c' || echo '$(srcdir)/'`libs/rtspconnection.c
+
+libs/libs_rtspconnection-rtspconnection.obj: libs/rtspconnection.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libs_rtspconnection_CFLAGS) $(CFLAGS) -MT libs/libs_rtspconnection-rtspconnection.obj -MD -MP -MF libs/$(DEPDIR)/libs_rtspconnection-rtspconnection.Tpo -c -o libs/libs_rtspconnection-rtspconnection.obj `if test -f 'libs/rtspconnection.c'; then $(CYGPATH_W) 'libs/rtspconnection.c'; else $(CYGPATH_W) '$(srcdir)/libs/rtspconnection.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) libs/$(DEPDIR)/libs_rtspconnection-rtspconnection.Tpo libs/$(DEPDIR)/libs_rtspconnection-rtspconnection.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='libs/rtspconnection.c' object='libs/libs_rtspconnection-rtspconnection.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) $(libs_rtspconnection_CFLAGS) $(CFLAGS) -c -o libs/libs_rtspconnection-rtspconnection.obj `if test -f 'libs/rtspconnection.c'; then $(CYGPATH_W) 'libs/rtspconnection.c'; else $(CYGPATH_W) '$(srcdir)/libs/rtspconnection.c'; fi`
+
 libs/libs_sdp-sdp.o: libs/sdp.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libs_sdp_CFLAGS) $(CFLAGS) -MT libs/libs_sdp-sdp.o -MD -MP -MF libs/$(DEPDIR)/libs_sdp-sdp.Tpo -c -o libs/libs_sdp-sdp.o `test -f 'libs/sdp.c' || echo '$(srcdir)/'`libs/sdp.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) libs/$(DEPDIR)/libs_sdp-sdp.Tpo libs/$(DEPDIR)/libs_sdp-sdp.Po
@@ -2678,6 +2956,20 @@
 @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) $(libs_videodecoder_CFLAGS) $(CFLAGS) -c -o libs/libs_videodecoder-videodecoder.obj `if test -f 'libs/videodecoder.c'; then $(CYGPATH_W) 'libs/videodecoder.c'; else $(CYGPATH_W) '$(srcdir)/libs/videodecoder.c'; fi`
 
+libs/libs_videoencoder-videoencoder.o: libs/videoencoder.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libs_videoencoder_CFLAGS) $(CFLAGS) -MT libs/libs_videoencoder-videoencoder.o -MD -MP -MF libs/$(DEPDIR)/libs_videoencoder-videoencoder.Tpo -c -o libs/libs_videoencoder-videoencoder.o `test -f 'libs/videoencoder.c' || echo '$(srcdir)/'`libs/videoencoder.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) libs/$(DEPDIR)/libs_videoencoder-videoencoder.Tpo libs/$(DEPDIR)/libs_videoencoder-videoencoder.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='libs/videoencoder.c' object='libs/libs_videoencoder-videoencoder.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) $(libs_videoencoder_CFLAGS) $(CFLAGS) -c -o libs/libs_videoencoder-videoencoder.o `test -f 'libs/videoencoder.c' || echo '$(srcdir)/'`libs/videoencoder.c
+
+libs/libs_videoencoder-videoencoder.obj: libs/videoencoder.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libs_videoencoder_CFLAGS) $(CFLAGS) -MT libs/libs_videoencoder-videoencoder.obj -MD -MP -MF libs/$(DEPDIR)/libs_videoencoder-videoencoder.Tpo -c -o libs/libs_videoencoder-videoencoder.obj `if test -f 'libs/videoencoder.c'; then $(CYGPATH_W) 'libs/videoencoder.c'; else $(CYGPATH_W) '$(srcdir)/libs/videoencoder.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) libs/$(DEPDIR)/libs_videoencoder-videoencoder.Tpo libs/$(DEPDIR)/libs_videoencoder-videoencoder.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='libs/videoencoder.c' object='libs/libs_videoencoder-videoencoder.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) $(libs_videoencoder_CFLAGS) $(CFLAGS) -c -o libs/libs_videoencoder-videoencoder.obj `if test -f 'libs/videoencoder.c'; then $(CYGPATH_W) 'libs/videoencoder.c'; else $(CYGPATH_W) '$(srcdir)/libs/videoencoder.c'; fi`
+
 libs/libs_xmpwriter-xmpwriter.o: libs/xmpwriter.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libs_xmpwriter_CFLAGS) $(CFLAGS) -MT libs/libs_xmpwriter-xmpwriter.o -MD -MP -MF libs/$(DEPDIR)/libs_xmpwriter-xmpwriter.Tpo -c -o libs/libs_xmpwriter-xmpwriter.o `test -f 'libs/xmpwriter.c' || echo '$(srcdir)/'`libs/xmpwriter.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) libs/$(DEPDIR)/libs_xmpwriter-xmpwriter.Tpo libs/$(DEPDIR)/libs_xmpwriter-xmpwriter.Po
@@ -3103,76 +3395,6 @@
 	        am__force_recheck=am--force-recheck \
 	        TEST_LOGS="$$log_list"; \
 	exit $$?
-pipelines/oggmux.log: pipelines/oggmux$(EXEEXT)
-	@p='pipelines/oggmux$(EXEEXT)'; \
-	b='pipelines/oggmux'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-elements/vorbisdec.log: elements/vorbisdec$(EXEEXT)
-	@p='elements/vorbisdec$(EXEEXT)'; \
-	b='elements/vorbisdec'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-pipelines/vorbisenc.log: pipelines/vorbisenc$(EXEEXT)
-	@p='pipelines/vorbisenc$(EXEEXT)'; \
-	b='pipelines/vorbisenc'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-pipelines/vorbisdec.log: pipelines/vorbisdec$(EXEEXT)
-	@p='pipelines/vorbisdec$(EXEEXT)'; \
-	b='pipelines/vorbisdec'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-elements/vorbistag.log: elements/vorbistag$(EXEEXT)
-	@p='elements/vorbistag$(EXEEXT)'; \
-	b='elements/vorbistag'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-elements/audioconvert.log: elements/audioconvert$(EXEEXT)
-	@p='elements/audioconvert$(EXEEXT)'; \
-	b='elements/audioconvert'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-elements/audiotestsrc.log: elements/audiotestsrc$(EXEEXT)
-	@p='elements/audiotestsrc$(EXEEXT)'; \
-	b='elements/audiotestsrc'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-elements/decodebin.log: elements/decodebin$(EXEEXT)
-	@p='elements/decodebin$(EXEEXT)'; \
-	b='elements/decodebin'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-elements/streamsynchronizer.log: elements/streamsynchronizer$(EXEEXT)
-	@p='elements/streamsynchronizer$(EXEEXT)'; \
-	b='elements/streamsynchronizer'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-elements/encodebin.log: elements/encodebin$(EXEEXT)
-	@p='elements/encodebin$(EXEEXT)'; \
-	b='elements/encodebin'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
 generic/clock-selection.log: generic/clock-selection$(EXEEXT)
 	@p='generic/clock-selection$(EXEEXT)'; \
 	b='generic/clock-selection'; \
@@ -3187,13 +3409,6 @@
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
-gst/typefindfunctions.log: gst/typefindfunctions$(EXEEXT)
-	@p='gst/typefindfunctions$(EXEEXT)'; \
-	b='gst/typefindfunctions'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
 libs/libsabi.log: libs/libsabi$(EXEEXT)
 	@p='libs/libsabi$(EXEEXT)'; \
 	b='libs/libsabi'; \
@@ -3222,6 +3437,13 @@
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+libs/audioencoder.log: libs/audioencoder$(EXEEXT)
+	@p='libs/audioencoder$(EXEEXT)'; \
+	b='libs/audioencoder'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 libs/discoverer.log: libs/discoverer$(EXEEXT)
 	@p='libs/discoverer$(EXEEXT)'; \
 	b='libs/discoverer'; \
@@ -3257,6 +3479,13 @@
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+libs/mikey.log: libs/mikey$(EXEEXT)
+	@p='libs/mikey$(EXEEXT)'; \
+	b='libs/mikey'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 libs/rtp.log: libs/rtp$(EXEEXT)
 	@p='libs/rtp$(EXEEXT)'; \
 	b='libs/rtp'; \
@@ -3264,6 +3493,20 @@
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+libs/rtpbasedepayload.log: libs/rtpbasedepayload$(EXEEXT)
+	@p='libs/rtpbasedepayload$(EXEEXT)'; \
+	b='libs/rtpbasedepayload'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+libs/rtpbasepayload.log: libs/rtpbasepayload$(EXEEXT)
+	@p='libs/rtpbasepayload$(EXEEXT)'; \
+	b='libs/rtpbasepayload'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 libs/rtsp.log: libs/rtsp$(EXEEXT)
 	@p='libs/rtsp$(EXEEXT)'; \
 	b='libs/rtsp'; \
@@ -3271,6 +3514,13 @@
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+libs/rtspconnection.log: libs/rtspconnection$(EXEEXT)
+	@p='libs/rtspconnection$(EXEEXT)'; \
+	b='libs/rtspconnection'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 libs/sdp.log: libs/sdp$(EXEEXT)
 	@p='libs/sdp$(EXEEXT)'; \
 	b='libs/sdp'; \
@@ -3299,6 +3549,13 @@
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+libs/videoencoder.log: libs/videoencoder$(EXEEXT)
+	@p='libs/videoencoder$(EXEEXT)'; \
+	b='libs/videoencoder'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 libs/xmpwriter.log: libs/xmpwriter$(EXEEXT)
 	@p='libs/xmpwriter$(EXEEXT)'; \
 	b='libs/xmpwriter'; \
@@ -3306,6 +3563,230 @@
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+pipelines/simple-launch-lines.log: pipelines/simple-launch-lines$(EXEEXT)
+	@p='pipelines/simple-launch-lines$(EXEEXT)'; \
+	b='pipelines/simple-launch-lines'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+pipelines/basetime.log: pipelines/basetime$(EXEEXT)
+	@p='pipelines/basetime$(EXEEXT)'; \
+	b='pipelines/basetime'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+pipelines/capsfilter-renegotiation.log: pipelines/capsfilter-renegotiation$(EXEEXT)
+	@p='pipelines/capsfilter-renegotiation$(EXEEXT)'; \
+	b='pipelines/capsfilter-renegotiation'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+elements/adder.log: elements/adder$(EXEEXT)
+	@p='elements/adder$(EXEEXT)'; \
+	b='elements/adder'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+elements/appsink.log: elements/appsink$(EXEEXT)
+	@p='elements/appsink$(EXEEXT)'; \
+	b='elements/appsink'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+elements/appsrc.log: elements/appsrc$(EXEEXT)
+	@p='elements/appsrc$(EXEEXT)'; \
+	b='elements/appsrc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+elements/audioconvert.log: elements/audioconvert$(EXEEXT)
+	@p='elements/audioconvert$(EXEEXT)'; \
+	b='elements/audioconvert'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+elements/audiorate.log: elements/audiorate$(EXEEXT)
+	@p='elements/audiorate$(EXEEXT)'; \
+	b='elements/audiorate'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+elements/audioresample.log: elements/audioresample$(EXEEXT)
+	@p='elements/audioresample$(EXEEXT)'; \
+	b='elements/audioresample'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+elements/audiotestsrc.log: elements/audiotestsrc$(EXEEXT)
+	@p='elements/audiotestsrc$(EXEEXT)'; \
+	b='elements/audiotestsrc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+elements/encodebin.log: elements/encodebin$(EXEEXT)
+	@p='elements/encodebin$(EXEEXT)'; \
+	b='elements/encodebin'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+pipelines/gio.log: pipelines/gio$(EXEEXT)
+	@p='pipelines/gio$(EXEEXT)'; \
+	b='pipelines/gio'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+pipelines/oggmux.log: pipelines/oggmux$(EXEEXT)
+	@p='pipelines/oggmux$(EXEEXT)'; \
+	b='pipelines/oggmux'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+elements/textoverlay.log: elements/textoverlay$(EXEEXT)
+	@p='elements/textoverlay$(EXEEXT)'; \
+	b='elements/textoverlay'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+elements/decodebin.log: elements/decodebin$(EXEEXT)
+	@p='elements/decodebin$(EXEEXT)'; \
+	b='elements/decodebin'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+elements/playbin.log: elements/playbin$(EXEEXT)
+	@p='elements/playbin$(EXEEXT)'; \
+	b='elements/playbin'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+elements/playbin-complex.log: elements/playbin-complex$(EXEEXT)
+	@p='elements/playbin-complex$(EXEEXT)'; \
+	b='elements/playbin-complex'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+elements/streamsynchronizer.log: elements/streamsynchronizer$(EXEEXT)
+	@p='elements/streamsynchronizer$(EXEEXT)'; \
+	b='elements/streamsynchronizer'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+elements/subparse.log: elements/subparse$(EXEEXT)
+	@p='elements/subparse$(EXEEXT)'; \
+	b='elements/subparse'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+elements/multifdsink.log: elements/multifdsink$(EXEEXT)
+	@p='elements/multifdsink$(EXEEXT)'; \
+	b='elements/multifdsink'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+elements/multisocketsink.log: elements/multisocketsink$(EXEEXT)
+	@p='elements/multisocketsink$(EXEEXT)'; \
+	b='elements/multisocketsink'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+pipelines/theoraenc.log: pipelines/theoraenc$(EXEEXT)
+	@p='pipelines/theoraenc$(EXEEXT)'; \
+	b='pipelines/theoraenc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+gst/typefindfunctions.log: gst/typefindfunctions$(EXEEXT)
+	@p='gst/typefindfunctions$(EXEEXT)'; \
+	b='gst/typefindfunctions'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+elements/videoconvert.log: elements/videoconvert$(EXEEXT)
+	@p='elements/videoconvert$(EXEEXT)'; \
+	b='elements/videoconvert'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+elements/videorate.log: elements/videorate$(EXEEXT)
+	@p='elements/videorate$(EXEEXT)'; \
+	b='elements/videorate'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+elements/videoscale.log: elements/videoscale$(EXEEXT)
+	@p='elements/videoscale$(EXEEXT)'; \
+	b='elements/videoscale'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+elements/videotestsrc.log: elements/videotestsrc$(EXEEXT)
+	@p='elements/videotestsrc$(EXEEXT)'; \
+	b='elements/videotestsrc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+elements/volume.log: elements/volume$(EXEEXT)
+	@p='elements/volume$(EXEEXT)'; \
+	b='elements/volume'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+elements/vorbisdec.log: elements/vorbisdec$(EXEEXT)
+	@p='elements/vorbisdec$(EXEEXT)'; \
+	b='elements/vorbisdec'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+pipelines/vorbisenc.log: pipelines/vorbisenc$(EXEEXT)
+	@p='pipelines/vorbisenc$(EXEEXT)'; \
+	b='pipelines/vorbisenc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+pipelines/vorbisdec.log: pipelines/vorbisdec$(EXEEXT)
+	@p='pipelines/vorbisdec$(EXEEXT)'; \
+	b='pipelines/vorbisdec'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+elements/vorbistag.log: elements/vorbistag$(EXEEXT)
+	@p='elements/vorbistag$(EXEEXT)'; \
+	b='elements/vorbistag'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 libs/gstlibscpp.log: libs/gstlibscpp$(EXEEXT)
 	@p='libs/gstlibscpp$(EXEEXT)'; \
 	b='libs/gstlibscpp'; \
@@ -3362,153 +3843,6 @@
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
-pipelines/simple-launch-lines.log: pipelines/simple-launch-lines$(EXEEXT)
-	@p='pipelines/simple-launch-lines$(EXEEXT)'; \
-	b='pipelines/simple-launch-lines'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-pipelines/basetime.log: pipelines/basetime$(EXEEXT)
-	@p='pipelines/basetime$(EXEEXT)'; \
-	b='pipelines/basetime'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-pipelines/capsfilter-renegotiation.log: pipelines/capsfilter-renegotiation$(EXEEXT)
-	@p='pipelines/capsfilter-renegotiation$(EXEEXT)'; \
-	b='pipelines/capsfilter-renegotiation'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-pipelines/gio.log: pipelines/gio$(EXEEXT)
-	@p='pipelines/gio$(EXEEXT)'; \
-	b='pipelines/gio'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-elements/appsink.log: elements/appsink$(EXEEXT)
-	@p='elements/appsink$(EXEEXT)'; \
-	b='elements/appsink'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-elements/appsrc.log: elements/appsrc$(EXEEXT)
-	@p='elements/appsrc$(EXEEXT)'; \
-	b='elements/appsrc'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-elements/audiorate.log: elements/audiorate$(EXEEXT)
-	@p='elements/audiorate$(EXEEXT)'; \
-	b='elements/audiorate'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-elements/audioresample.log: elements/audioresample$(EXEEXT)
-	@p='elements/audioresample$(EXEEXT)'; \
-	b='elements/audioresample'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-elements/multifdsink.log: elements/multifdsink$(EXEEXT)
-	@p='elements/multifdsink$(EXEEXT)'; \
-	b='elements/multifdsink'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-elements/multisocketsink.log: elements/multisocketsink$(EXEEXT)
-	@p='elements/multisocketsink$(EXEEXT)'; \
-	b='elements/multisocketsink'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-elements/playbin.log: elements/playbin$(EXEEXT)
-	@p='elements/playbin$(EXEEXT)'; \
-	b='elements/playbin'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-elements/playbin-complex.log: elements/playbin-complex$(EXEEXT)
-	@p='elements/playbin-complex$(EXEEXT)'; \
-	b='elements/playbin-complex'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-elements/textoverlay.log: elements/textoverlay$(EXEEXT)
-	@p='elements/textoverlay$(EXEEXT)'; \
-	b='elements/textoverlay'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-elements/subparse.log: elements/subparse$(EXEEXT)
-	@p='elements/subparse$(EXEEXT)'; \
-	b='elements/subparse'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-elements/videoconvert.log: elements/videoconvert$(EXEEXT)
-	@p='elements/videoconvert$(EXEEXT)'; \
-	b='elements/videoconvert'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-elements/videorate.log: elements/videorate$(EXEEXT)
-	@p='elements/videorate$(EXEEXT)'; \
-	b='elements/videorate'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-elements/videoscale.log: elements/videoscale$(EXEEXT)
-	@p='elements/videoscale$(EXEEXT)'; \
-	b='elements/videoscale'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-elements/videotestsrc.log: elements/videotestsrc$(EXEEXT)
-	@p='elements/videotestsrc$(EXEEXT)'; \
-	b='elements/videotestsrc'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-elements/volume.log: elements/volume$(EXEEXT)
-	@p='elements/volume$(EXEEXT)'; \
-	b='elements/volume'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-elements/adder.log: elements/adder$(EXEEXT)
-	@p='elements/adder$(EXEEXT)'; \
-	b='elements/adder'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-pipelines/theoraenc.log: pipelines/theoraenc$(EXEEXT)
-	@p='pipelines/theoraenc$(EXEEXT)'; \
-	b='pipelines/theoraenc'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
 .test.log:
 	@p='$<'; \
 	$(am__set_b); \
diff --git a/tests/check/elements/adder.c b/tests/check/elements/adder.c
index 3aa19ce..315bef4 100644
--- a/tests/check/elements/adder.c
+++ b/tests/check/elements/adder.c
@@ -685,6 +685,7 @@
 
   /* cleanup */
   GST_INFO ("cleaning up");
+  gst_consistency_checker_free (consist);
   if (main_loop)
     g_main_loop_unref (main_loop);
   if (play_seek_event)
@@ -974,6 +975,7 @@
   ck_assert_int_eq (ret, GST_FLOW_OK);
   fail_unless (handoff_buffer == NULL);
 
+  gst_element_release_request_pad (adder, sinkpad);
   gst_object_unref (sinkpad);
   gst_element_set_state (bin, GST_STATE_NULL);
   gst_bus_remove_signal_watch (bus);
@@ -1240,6 +1242,11 @@
   fail_if (GST_PAD_IS_FLUSHING (adder_src));
   gst_object_unref (adder_src);
 
+  gst_element_release_request_pad (adder, sinkpad1);
+  gst_object_unref (sinkpad1);
+  gst_element_release_request_pad (adder, sinkpad2);
+  gst_object_unref (sinkpad2);
+
   /* cleanup */
   gst_element_set_state (pipeline, GST_STATE_NULL);
   gst_object_unref (pipeline);
diff --git a/tests/check/elements/audioconvert.c b/tests/check/elements/audioconvert.c
index ff21d9f..5c450c4 100644
--- a/tests/check/elements/audioconvert.c
+++ b/tests/check/elements/audioconvert.c
@@ -47,28 +47,24 @@
 static GstElement *
 setup_audioconvert (GstCaps * outcaps)
 {
-  GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink",
-      GST_PAD_SINK,
-      GST_PAD_ALWAYS,
-      GST_STATIC_CAPS (CONVERT_CAPS_TEMPLATE_STRING)
-      );
-  GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
+  GstPadTemplate *sinktemplate;
+  static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
       GST_PAD_SRC,
       GST_PAD_ALWAYS,
       GST_STATIC_CAPS (CONVERT_CAPS_TEMPLATE_STRING)
       );
   GstElement *audioconvert;
-  gchar *caps_str;
 
-  caps_str = gst_caps_to_string (outcaps);
-  sinktemplate.static_caps.string = caps_str;
+  sinktemplate =
+      gst_pad_template_new ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, outcaps);
 
   GST_DEBUG ("setup_audioconvert with caps %" GST_PTR_FORMAT, outcaps);
   audioconvert = gst_check_setup_element ("audioconvert");
   g_object_set (G_OBJECT (audioconvert), "dithering", 0, NULL);
   g_object_set (G_OBJECT (audioconvert), "noise-shaping", 0, NULL);
   mysrcpad = gst_check_setup_src_pad (audioconvert, &srctemplate);
-  mysinkpad = gst_check_setup_sink_pad (audioconvert, &sinktemplate);
+  mysinkpad =
+      gst_check_setup_sink_pad_from_template (audioconvert, sinktemplate);
   /* this installs a getcaps func that will always return the caps we set
    * later */
   gst_pad_use_fixed_caps (mysinkpad);
@@ -76,7 +72,7 @@
   gst_pad_set_active (mysrcpad, TRUE);
   gst_pad_set_active (mysinkpad, TRUE);
 
-  g_free (caps_str);
+  gst_object_unref (sinktemplate);
 
   return audioconvert;
 }
@@ -413,7 +409,7 @@
   ASSERT_CAPS_REFCOUNT (incaps, "incaps", 1);
   ASSERT_CAPS_REFCOUNT (outcaps, "outcaps", 1);
   audioconvert = setup_audioconvert (outcaps);
-  ASSERT_CAPS_REFCOUNT (outcaps, "outcaps", 1);
+  ASSERT_CAPS_REFCOUNT (outcaps, "outcaps", 2);
 
   fail_unless (gst_element_set_state (audioconvert,
           GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
@@ -487,6 +483,7 @@
   cleanup_audioconvert (audioconvert);
   GST_DEBUG ("cleanup, unref incaps");
   gst_caps_unref (incaps);
+  gst_caps_unref (outcaps);
 }
 
 
@@ -1448,12 +1445,12 @@
 
 GST_START_TEST (test_preserve_width)
 {
-  GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink",
+  static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink",
       GST_PAD_SINK,
       GST_PAD_ALWAYS,
       GST_STATIC_CAPS (SIMPLE_CAPS_TEMPLATE_STRING)
       );
-  GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
+  static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
       GST_PAD_SRC,
       GST_PAD_ALWAYS,
       GST_STATIC_CAPS (CONVERT_CAPS_TEMPLATE_STRING)
diff --git a/tests/check/elements/audioresample.c b/tests/check/elements/audioresample.c
index 4882f8e..701995d 100644
--- a/tests/check/elements/audioresample.c
+++ b/tests/check/elements/audioresample.c
@@ -55,12 +55,8 @@
 setup_audioresample (int channels, guint64 mask, int inrate, int outrate,
     const gchar * format)
 {
-  GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink",
-      GST_PAD_SINK,
-      GST_PAD_ALWAYS,
-      GST_STATIC_CAPS (RESAMPLE_CAPS)
-      );
-  GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
+  GstPadTemplate *sinktemplate;
+  static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
       GST_PAD_SRC,
       GST_PAD_ALWAYS,
       GST_STATIC_CAPS (RESAMPLE_CAPS)
@@ -68,7 +64,6 @@
   GstElement *audioresample;
   GstCaps *caps;
   GstStructure *structure;
-  gchar *caps_str;
 
   GST_DEBUG ("setup_audioresample");
   audioresample = gst_check_setup_element ("audioresample");
@@ -94,17 +89,18 @@
   gst_structure_set (structure, "channels", G_TYPE_INT, channels,
       "rate", G_TYPE_INT, outrate, "format", G_TYPE_STRING, format, NULL);
   fail_unless (gst_caps_is_fixed (caps));
-  caps_str = gst_caps_to_string (caps);
-  sinktemplate.static_caps.string = caps_str;
+  sinktemplate =
+      gst_pad_template_new ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, caps);
 
-  mysinkpad = gst_check_setup_sink_pad (audioresample, &sinktemplate);
+  mysinkpad =
+      gst_check_setup_sink_pad_from_template (audioresample, sinktemplate);
   gst_pad_set_active (mysinkpad, TRUE);
   /* this installs a getcaps func that will always return the caps we set
    * later */
   gst_pad_use_fixed_caps (mysinkpad);
 
-  g_free (caps_str);
   gst_caps_unref (caps);
+  gst_object_unref (sinktemplate);
 
   return audioresample;
 }
diff --git a/tests/check/elements/decodebin.c b/tests/check/elements/decodebin.c
index 57e5eeb..049b3a9 100644
--- a/tests/check/elements/decodebin.c
+++ b/tests/check/elements/decodebin.c
@@ -355,6 +355,274 @@
 
 GST_END_TEST;
 
+/* Fake parser/decoder for parser_negotiation test */
+static GType gst_fake_h264_parser_get_type (void);
+static GType gst_fake_h264_decoder_get_type (void);
+
+#undef parent_class
+#define parent_class fake_h264_parser_parent_class
+typedef struct _GstFakeH264Parser GstFakeH264Parser;
+typedef GstElementClass GstFakeH264ParserClass;
+
+struct _GstFakeH264Parser
+{
+  GstElement parent;
+};
+
+G_DEFINE_TYPE (GstFakeH264Parser, gst_fake_h264_parser, GST_TYPE_ELEMENT);
+
+static void
+gst_fake_h264_parser_class_init (GstFakeH264ParserClass * klass)
+{
+  static GstStaticPadTemplate sink_templ = GST_STATIC_PAD_TEMPLATE ("sink",
+      GST_PAD_SINK, GST_PAD_ALWAYS,
+      GST_STATIC_CAPS ("video/x-h264"));
+  static GstStaticPadTemplate src_templ = GST_STATIC_PAD_TEMPLATE ("src",
+      GST_PAD_SRC, GST_PAD_ALWAYS,
+      GST_STATIC_CAPS ("video/x-h264, "
+          "stream-format=(string) { avc, byte-stream }"));
+  GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
+
+  gst_element_class_add_pad_template (element_class,
+      gst_static_pad_template_get (&sink_templ));
+  gst_element_class_add_pad_template (element_class,
+      gst_static_pad_template_get (&src_templ));
+  gst_element_class_set_metadata (element_class,
+      "FakeH264Parser", "Codec/Parser/Converter/Video", "yep", "me");
+}
+
+static gboolean
+gst_fake_h264_parser_sink_event (GstPad * pad, GstObject * parent,
+    GstEvent * event)
+{
+  GstElement *self = GST_ELEMENT (parent);
+  GstPad *otherpad = gst_element_get_static_pad (self, "src");
+  GstCaps *accepted_caps;
+  GstStructure *s;
+  const gchar *stream_format;
+  gboolean ret = TRUE;
+
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_CAPS:
+      accepted_caps = gst_pad_get_allowed_caps (otherpad);
+      accepted_caps = gst_caps_truncate (accepted_caps);
+
+      s = gst_caps_get_structure (accepted_caps, 0);
+      stream_format = gst_structure_get_string (s, "stream-format");
+      if (!stream_format)
+        gst_structure_set (s, "stream-format", G_TYPE_STRING, "avc", NULL);
+
+      gst_pad_set_caps (otherpad, accepted_caps);
+      gst_caps_unref (accepted_caps);
+      gst_event_unref (event);
+      event = NULL;
+      break;
+    default:
+      break;
+  }
+
+  if (event)
+    ret = gst_pad_push_event (otherpad, event);
+  gst_object_unref (otherpad);
+
+  return ret;
+}
+
+static GstFlowReturn
+gst_fake_h264_parser_sink_chain (GstPad * pad, GstObject * parent,
+    GstBuffer * buf)
+{
+  GstElement *self = GST_ELEMENT (parent);
+  GstPad *otherpad = gst_element_get_static_pad (self, "src");
+  GstFlowReturn ret = GST_FLOW_OK;
+
+  buf = gst_buffer_make_writable (buf);
+
+  ret = gst_pad_push (otherpad, buf);
+
+  gst_object_unref (otherpad);
+
+  return ret;
+}
+
+static void
+gst_fake_h264_parser_init (GstFakeH264Parser * self)
+{
+  GstPad *pad;
+
+  pad =
+      gst_pad_new_from_template (gst_element_class_get_pad_template
+      (GST_ELEMENT_GET_CLASS (self), "sink"), "sink");
+  gst_pad_set_event_function (pad, gst_fake_h264_parser_sink_event);
+  gst_pad_set_chain_function (pad, gst_fake_h264_parser_sink_chain);
+  gst_element_add_pad (GST_ELEMENT (self), pad);
+
+  pad =
+      gst_pad_new_from_template (gst_element_class_get_pad_template
+      (GST_ELEMENT_GET_CLASS (self), "src"), "src");
+  gst_element_add_pad (GST_ELEMENT (self), pad);
+}
+
+#undef parent_class
+#define parent_class fake_h264_decoder_parent_class
+typedef struct _GstFakeH264Decoder GstFakeH264Decoder;
+typedef GstElementClass GstFakeH264DecoderClass;
+
+struct _GstFakeH264Decoder
+{
+  GstElement parent;
+};
+
+G_DEFINE_TYPE (GstFakeH264Decoder, gst_fake_h264_decoder, GST_TYPE_ELEMENT);
+
+static void
+gst_fake_h264_decoder_class_init (GstFakeH264DecoderClass * klass)
+{
+  static GstStaticPadTemplate sink_templ = GST_STATIC_PAD_TEMPLATE ("sink",
+      GST_PAD_SINK, GST_PAD_ALWAYS,
+      GST_STATIC_CAPS ("video/x-h264, " "stream-format=(string) byte-stream"));
+  static GstStaticPadTemplate src_templ = GST_STATIC_PAD_TEMPLATE ("src",
+      GST_PAD_SRC, GST_PAD_ALWAYS,
+      GST_STATIC_CAPS ("video/x-raw"));
+  GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
+
+  gst_element_class_add_pad_template (element_class,
+      gst_static_pad_template_get (&sink_templ));
+  gst_element_class_add_pad_template (element_class,
+      gst_static_pad_template_get (&src_templ));
+  gst_element_class_set_metadata (element_class,
+      "FakeH264Decoder", "Codec/Decoder/Video", "yep", "me");
+}
+
+static gboolean
+gst_fake_h264_decoder_sink_event (GstPad * pad, GstObject * parent,
+    GstEvent * event)
+{
+  GstElement *self = GST_ELEMENT (parent);
+  GstPad *otherpad = gst_element_get_static_pad (self, "src");
+  GstCaps *caps;
+  gboolean ret = TRUE;
+
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_CAPS:
+      caps = gst_caps_new_empty_simple ("video/x-raw");
+      gst_pad_set_caps (otherpad, caps);
+      gst_caps_unref (caps);
+      gst_event_unref (event);
+      event = NULL;
+      break;
+    default:
+      break;
+  }
+
+  if (event)
+    ret = gst_pad_push_event (otherpad, event);
+  gst_object_unref (otherpad);
+
+  return ret;
+}
+
+static GstFlowReturn
+gst_fake_h264_decoder_sink_chain (GstPad * pad, GstObject * parent,
+    GstBuffer * buf)
+{
+  GstElement *self = GST_ELEMENT (parent);
+  GstPad *otherpad = gst_element_get_static_pad (self, "src");
+  GstFlowReturn ret = GST_FLOW_OK;
+
+  buf = gst_buffer_make_writable (buf);
+
+  ret = gst_pad_push (otherpad, buf);
+
+  gst_object_unref (otherpad);
+
+  return ret;
+}
+
+static void
+gst_fake_h264_decoder_init (GstFakeH264Decoder * self)
+{
+  GstPad *pad;
+
+  pad =
+      gst_pad_new_from_template (gst_element_class_get_pad_template
+      (GST_ELEMENT_GET_CLASS (self), "sink"), "sink");
+  gst_pad_set_event_function (pad, gst_fake_h264_decoder_sink_event);
+  gst_pad_set_chain_function (pad, gst_fake_h264_decoder_sink_chain);
+  gst_element_add_pad (GST_ELEMENT (self), pad);
+
+  pad =
+      gst_pad_new_from_template (gst_element_class_get_pad_template
+      (GST_ELEMENT_GET_CLASS (self), "src"), "src");
+  gst_element_add_pad (GST_ELEMENT (self), pad);
+}
+
+static void
+parser_negotiation_pad_added_cb (GstElement * dec, GstPad * pad,
+    gpointer user_data)
+{
+  GstBin *pipe = user_data;
+  GstElement *sink;
+  GstPad *sinkpad;
+
+  sink = gst_element_factory_make ("fakesink", NULL);
+  gst_bin_add (pipe, sink);
+  gst_element_sync_state_with_parent (sink);
+  sinkpad = gst_element_get_static_pad (sink, "sink");
+  gst_pad_link (pad, sinkpad);
+  gst_object_unref (sinkpad);
+}
+
+GST_START_TEST (test_parser_negotiation)
+{
+  GstStateChangeReturn sret;
+  GstMessage *msg;
+  GstCaps *caps;
+  GstElement *pipe, *src, *filter, *dec;
+
+  gst_element_register (NULL, "fakeh264parse", GST_RANK_PRIMARY + 101,
+      gst_fake_h264_parser_get_type ());
+  gst_element_register (NULL, "fakeh264dec", GST_RANK_PRIMARY + 100,
+      gst_fake_h264_decoder_get_type ());
+
+  pipe = gst_pipeline_new (NULL);
+
+  src = gst_element_factory_make ("fakesrc", NULL);
+  fail_unless (src != NULL);
+  g_object_set (G_OBJECT (src), "num-buffers", 5, "sizetype", 2, "filltype", 2,
+      "can-activate-pull", FALSE, NULL);
+
+  filter = gst_element_factory_make ("capsfilter", NULL);
+  fail_unless (filter != NULL);
+  caps = gst_caps_from_string ("video/x-h264");
+  g_object_set (G_OBJECT (filter), "caps", caps, NULL);
+  gst_caps_unref (caps);
+
+  dec = gst_element_factory_make ("decodebin", NULL);
+  fail_unless (dec != NULL);
+
+  g_signal_connect (dec, "pad-added",
+      G_CALLBACK (parser_negotiation_pad_added_cb), pipe);
+
+  gst_bin_add_many (GST_BIN (pipe), src, filter, dec, NULL);
+  gst_element_link_many (src, filter, dec, NULL);
+
+  sret = gst_element_set_state (pipe, GST_STATE_PLAYING);
+  fail_unless_equals_int (sret, GST_STATE_CHANGE_ASYNC);
+
+  /* wait for EOS or error */
+  msg = gst_bus_timed_pop_filtered (GST_ELEMENT_BUS (pipe),
+      GST_CLOCK_TIME_NONE, GST_MESSAGE_ERROR | GST_MESSAGE_EOS);
+  fail_unless (msg != NULL);
+  fail_unless (GST_MESSAGE_TYPE (msg) == GST_MESSAGE_EOS);
+  gst_message_unref (msg);
+
+  gst_element_set_state (pipe, GST_STATE_NULL);
+  gst_object_unref (pipe);
+}
+
+GST_END_TEST;
+
 static Suite *
 decodebin_suite (void)
 {
@@ -365,6 +633,7 @@
   tcase_add_test (tc_chain, test_text_plain_streams);
   tcase_add_test (tc_chain, test_reuse_without_decoders);
   tcase_add_test (tc_chain, test_mp3_parser_loop);
+  tcase_add_test (tc_chain, test_parser_negotiation);
 
   return s;
 }
diff --git a/tests/check/elements/encodebin.c b/tests/check/elements/encodebin.c
index b896462..3fdb586 100644
--- a/tests/check/elements/encodebin.c
+++ b/tests/check/elements/encodebin.c
@@ -23,11 +23,25 @@
 #endif
 
 #include <gst/pbutils/encoding-profile.h>
+#include <gst/pbutils/missing-plugins.h>
 #include <gst/check/gstcheck.h>
 
 /* Helper functions to create profiles */
 
 static GstEncodingProfile *
+create_ogg_profile ()
+{
+  GstEncodingContainerProfile *prof;
+  GstCaps *ogg;
+
+  ogg = gst_caps_new_empty_simple ("application/ogg");
+  prof = gst_encoding_container_profile_new ((gchar *) "myprofile", NULL, ogg,
+      NULL);
+  gst_caps_unref (ogg);
+  return (GstEncodingProfile *) prof;
+}
+
+static GstEncodingProfile *
 create_ogg_vorbis_profile (guint presence, gchar * preset)
 {
   GstEncodingContainerProfile *cprof;
@@ -90,6 +104,21 @@
   return prof;
 }
 
+static GstEncodingProfile *
+create_unsupported_profile (void)
+{
+  GstEncodingProfile *prof;
+  GstCaps *caps;
+
+  caps = gst_caps_new_empty_simple ("audio/x-bogus");
+  prof =
+      (GstEncodingProfile *) gst_encoding_audio_profile_new (caps, NULL, NULL,
+      0);
+  gst_caps_unref (caps);
+
+  return prof;
+}
+
 static void
 _caps_match (GstPad * sinkpad, const gchar * capsname)
 {
@@ -107,11 +136,46 @@
   gst_caps_unref (caps);
 }
 
-GST_START_TEST (test_encodebin_states)
+static void
+set_profile (GstElement * ebin, GstEncodingProfile * prof)
+{
+  g_object_set (ebin, "profile", prof, NULL);
+  gst_encoding_profile_unref (prof);
+}
+
+/* Tests */
+
+GST_START_TEST (test_encodebin_set_profile)
 {
   GstElement *ebin;
   GstEncodingProfile *prof, *prof2;
-  GstCaps *ogg;
+
+  /* Create an encodebin and check that it correctly changes states
+   * according to whether a profile is set or not */
+
+  ebin = gst_element_factory_make ("encodebin", NULL);
+
+  /* Set a profile on encodebin... */
+  prof = create_ogg_profile ();
+  g_object_set (ebin, "profile", prof, NULL);
+
+  /* ... and check the profile has been properly set */
+  g_object_get (ebin, "profile", &prof2, NULL);
+
+  fail_unless (gst_encoding_profile_is_equal (prof, prof2));
+
+  gst_encoding_profile_unref (prof);
+  gst_encoding_profile_unref (prof2);
+
+  gst_object_unref (ebin);
+};
+
+GST_END_TEST;
+
+
+GST_START_TEST (test_encodebin_can_go_to_ready_without_profile)
+{
+  GstElement *ebin;
   GstPad *srcpad;
   GstPad *target;
 
@@ -138,21 +202,28 @@
   fail_unless_equals_int (gst_element_set_state (ebin, GST_STATE_PAUSED),
       GST_STATE_CHANGE_FAILURE);
 
+  /* Set back to NULL */
+  fail_unless_equals_int (gst_element_set_state (ebin, GST_STATE_NULL),
+      GST_STATE_CHANGE_SUCCESS);
+
+  gst_object_unref (ebin);
+};
+
+GST_END_TEST;
+
+GST_START_TEST (test_encodebin_can_go_to_paused_with_profile)
+{
+  GstElement *ebin;
+  GstPad *srcpad;
+  GstPad *target;
+
+  /* Create an encodebin and check that it correctly changes states
+   * according to whether a profile is set or not */
+
+  ebin = gst_element_factory_make ("encodebin", NULL);
+
   /* Set a profile on encodebin... */
-  ogg = gst_caps_new_empty_simple ("application/ogg");
-  prof = (GstEncodingProfile *) gst_encoding_container_profile_new ((gchar *)
-      "myprofile", NULL, ogg, NULL);
-  gst_caps_unref (ogg);
-
-  g_object_set (ebin, "profile", prof, NULL);
-
-  /* ... and check the profile has been properly set */
-  g_object_get (ebin, "profile", &prof2, NULL);
-
-  fail_unless (gst_encoding_profile_is_equal (prof, prof2));
-
-  gst_encoding_profile_unref (prof);
-  gst_encoding_profile_unref (prof2);
+  set_profile (ebin, create_ogg_profile ());
 
   /* Make sure we can go to PAUSED */
   fail_unless_equals_int (gst_element_set_state (ebin, GST_STATE_PAUSED),
@@ -176,10 +247,10 @@
 
 GST_END_TEST;
 
+
 GST_START_TEST (test_encodebin_sink_pads_static)
 {
   GstElement *ebin;
-  GstEncodingProfile *prof;
   GstPad *srcpad, *sinkpad;
 
   /* Create an encodebin and check that it properly creates the sink pads
@@ -188,11 +259,7 @@
   ebin = gst_element_factory_make ("encodebin", NULL);
 
   /* streamprofile that has a forced presence of 1 */
-  prof = create_ogg_vorbis_profile (1, NULL);
-
-  g_object_set (ebin, "profile", prof, NULL);
-
-  gst_encoding_profile_unref (prof);
+  set_profile (ebin, create_ogg_vorbis_profile (1, NULL));
 
   fail_unless_equals_int (gst_element_set_state (ebin, GST_STATE_PAUSED),
       GST_STATE_CHANGE_SUCCESS);
@@ -221,17 +288,15 @@
 GST_START_TEST (test_encodebin_preset)
 {
   GstElement *ebin;
+  GstEncodingProfile *prof;
   guint64 max_delay = 0;
   GstPreset *oggmuxpreset;
-  GstEncodingProfile *prof;
 
   /* Create an encodebin with a bogus preset and check it fails switching states */
 
   ebin = gst_element_factory_make ("encodebin", NULL);
   oggmuxpreset = GST_PRESET (gst_element_factory_make ("oggmux", NULL));
 
-  /* streamprofile that has a forced presence of 1 */
-  prof = create_ogg_vorbis_profile (1, NULL);
   /* We also set the name as the load_preset call will reset the element name to
    * what is described in the preset... which might not be very smart tbh */
   g_object_set (oggmuxpreset, "max-delay", (guint64) 12, "name",
@@ -240,12 +305,13 @@
   /* Give a name someone should never use outside of that test */
   gst_preset_save_preset (oggmuxpreset, "test_encodebin_preset");
 
+  /* streamprofile that has a forced presence of 1 */
+  prof = create_ogg_vorbis_profile (1, NULL);
+
   gst_encoding_profile_set_preset (prof, "test_encodebin_preset");
   gst_encoding_profile_set_preset_name (prof, "oggmux");
 
-  g_object_set (ebin, "profile", prof, NULL);
-
-  gst_encoding_profile_unref (prof);
+  set_profile (ebin, prof);
 
   /* It will go to READY... */
   fail_unless_equals_int (gst_element_set_state (ebin, GST_STATE_READY),
@@ -261,6 +327,7 @@
   gst_element_set_state (ebin, GST_STATE_NULL);
   gst_preset_delete_preset (oggmuxpreset, "test_encodebin_preset");
 
+  gst_object_unref (oggmuxpreset);
   gst_object_unref (ebin);
 };
 
@@ -269,18 +336,14 @@
 GST_START_TEST (test_encodebin_sink_pads_nopreset_static)
 {
   GstElement *ebin;
-  GstEncodingProfile *prof;
 
   /* Create an encodebin with a bogus preset and check it fails switching states */
 
   ebin = gst_element_factory_make ("encodebin", NULL);
 
   /* streamprofile that has a forced presence of 1 */
-  prof = create_ogg_vorbis_profile (1, (gchar *) "nowaythispresetexists");
-
-  g_object_set (ebin, "profile", prof, NULL);
-
-  gst_encoding_profile_unref (prof);
+  set_profile (ebin,
+      create_ogg_vorbis_profile (1, (gchar *) "nowaythispresetexists"));
 
   /* It will go to READY... */
   fail_unless_equals_int (gst_element_set_state (ebin, GST_STATE_READY),
@@ -299,7 +362,6 @@
 GST_START_TEST (test_encodebin_sink_pads_dynamic)
 {
   GstElement *ebin;
-  GstEncodingProfile *prof;
   GstPad *srcpad, *sinkpad;
   GstCaps *sinkcaps;
 
@@ -309,11 +371,7 @@
   ebin = gst_element_factory_make ("encodebin", NULL);
 
   /* streamprofile that has non-forced presence */
-  prof = create_ogg_vorbis_profile (0, NULL);
-
-  g_object_set (ebin, "profile", prof, NULL);
-
-  gst_encoding_profile_unref (prof);
+  set_profile (ebin, create_ogg_vorbis_profile (0, NULL));
 
   /* Check if the source pad was properly created */
   srcpad = gst_element_get_static_pad (ebin, "src");
@@ -353,7 +411,6 @@
 GST_START_TEST (test_encodebin_sink_pads_multiple_static)
 {
   GstElement *ebin;
-  GstEncodingProfile *prof;
   GstPad *srcpad, *sinkpadvorbis, *sinkpadtheora;
 
   /* Create an encodebin and check that it properly creates the sink pads */
@@ -361,11 +418,7 @@
   ebin = gst_element_factory_make ("encodebin", NULL);
 
   /* First try is with a streamprofile that has a forced presence of 1 */
-  prof = create_ogg_theora_vorbis_profile (1, 1);
-
-  g_object_set (ebin, "profile", prof, NULL);
-
-  gst_encoding_profile_unref (prof);
+  set_profile (ebin, create_ogg_theora_vorbis_profile (1, 1));
 
   fail_unless_equals_int (gst_element_set_state (ebin, GST_STATE_PAUSED),
       GST_STATE_CHANGE_SUCCESS);
@@ -399,7 +452,6 @@
 GST_START_TEST (test_encodebin_sink_pads_multiple_dynamic)
 {
   GstElement *ebin;
-  GstEncodingProfile *prof;
   GstPad *srcpad, *sinkpadvorbis, *sinkpadtheora;
 
   /* Create an encodebin and check that it properly creates the sink pads
@@ -408,11 +460,7 @@
   ebin = gst_element_factory_make ("encodebin", NULL);
 
   /* multi-stream profile that has non-forced presence */
-  prof = create_ogg_theora_vorbis_profile (0, 0);
-
-  g_object_set (ebin, "profile", prof, NULL);
-
-  gst_encoding_profile_unref (prof);
+  set_profile (ebin, create_ogg_theora_vorbis_profile (0, 0));
 
   /* Check if the source pad was properly created */
   srcpad = gst_element_get_static_pad (ebin, "src");
@@ -449,7 +497,6 @@
 GST_START_TEST (test_encodebin_sink_pads_dynamic_encoder)
 {
   GstElement *ebin;
-  GstEncodingProfile *prof;
   GstPad *srcpad, *sinkpad = NULL;
   GstCaps *vorbiscaps;
 
@@ -459,11 +506,7 @@
   ebin = gst_element_factory_make ("encodebin", NULL);
 
   /* streamprofile that has non-forced presence */
-  prof = create_ogg_vorbis_profile (0, NULL);
-
-  g_object_set (ebin, "profile", prof, NULL);
-
-  gst_encoding_profile_unref (prof);
+  set_profile (ebin, create_ogg_vorbis_profile (0, NULL));
 
   /* Check if the source pad was properly created */
   srcpad = gst_element_get_static_pad (ebin, "src");
@@ -494,7 +537,6 @@
 GST_START_TEST (test_encodebin_render_audio_static)
 {
   GstElement *ebin, *pipeline, *audiotestsrc, *fakesink;
-  GstEncodingProfile *prof;
   GstBus *bus;
   gboolean done = FALSE;
 
@@ -507,10 +549,7 @@
   fakesink = gst_element_factory_make ("fakesink", NULL);
 
   ebin = gst_element_factory_make ("encodebin", NULL);
-
-  prof = create_ogg_vorbis_profile (1, NULL);
-  g_object_set (ebin, "profile", prof, NULL);
-  gst_encoding_profile_unref (prof);
+  set_profile (ebin, create_ogg_vorbis_profile (1, NULL));
 
   gst_bin_add_many ((GstBin *) pipeline, audiotestsrc, ebin, fakesink, NULL);
 
@@ -553,7 +592,6 @@
 GST_START_TEST (test_encodebin_render_audio_only_static)
 {
   GstElement *ebin, *pipeline, *audiotestsrc, *fakesink;
-  GstEncodingProfile *prof;
   GstBus *bus;
   gboolean done = FALSE;
   GstPad *sinkpad;
@@ -567,10 +605,7 @@
   fakesink = gst_element_factory_make ("fakesink", NULL);
 
   ebin = gst_element_factory_make ("encodebin", NULL);
-
-  prof = create_vorbis_only_profile ();
-  g_object_set (ebin, "profile", prof, NULL);
-  gst_encoding_profile_unref (prof);
+  set_profile (ebin, create_vorbis_only_profile ());
 
   gst_bin_add_many (GST_BIN (pipeline), audiotestsrc, ebin, fakesink, NULL);
 
@@ -622,7 +657,6 @@
 GST_START_TEST (test_encodebin_render_audio_dynamic)
 {
   GstElement *ebin, *pipeline, *audiotestsrc, *fakesink;
-  GstEncodingProfile *prof;
   GstBus *bus;
   GstPad *sinkpad, *srcpad;
   gboolean done = FALSE;
@@ -636,10 +670,7 @@
   fakesink = gst_element_factory_make ("fakesink", NULL);
 
   ebin = gst_element_factory_make ("encodebin", NULL);
-
-  prof = create_ogg_vorbis_profile (0, NULL);
-  g_object_set (ebin, "profile", prof, NULL);
-  gst_encoding_profile_unref (prof);
+  set_profile (ebin, create_ogg_vorbis_profile (0, NULL));
 
   gst_bin_add_many ((GstBin *) pipeline, audiotestsrc, ebin, fakesink, NULL);
 
@@ -696,7 +727,6 @@
 GST_START_TEST (test_encodebin_render_audio_video_static)
 {
   GstElement *ebin, *pipeline, *audiotestsrc, *videotestsrc, *fakesink;
-  GstEncodingProfile *prof;
   GstBus *bus;
   gboolean done = FALSE;
 
@@ -711,10 +741,7 @@
   fakesink = gst_element_factory_make ("fakesink", NULL);
 
   ebin = gst_element_factory_make ("encodebin", NULL);
-
-  prof = create_ogg_theora_vorbis_profile (1, 1);
-  g_object_set (ebin, "profile", prof, NULL);
-  gst_encoding_profile_unref (prof);
+  set_profile (ebin, create_ogg_theora_vorbis_profile (1, 1));
 
   gst_bin_add_many ((GstBin *) pipeline, audiotestsrc, videotestsrc, ebin,
       fakesink, NULL);
@@ -759,7 +786,6 @@
 GST_START_TEST (test_encodebin_render_audio_video_dynamic)
 {
   GstElement *ebin, *pipeline, *audiotestsrc, *videotestsrc, *fakesink;
-  GstEncodingProfile *prof;
   GstBus *bus;
   gboolean done = FALSE;
   GstPad *sinkpad1, *sinkpad2, *srcpad;
@@ -775,10 +801,7 @@
   fakesink = gst_element_factory_make ("fakesink", NULL);
 
   ebin = gst_element_factory_make ("encodebin", NULL);
-
-  prof = create_ogg_theora_vorbis_profile (0, 0);
-  g_object_set (ebin, "profile", prof, NULL);
-  gst_encoding_profile_unref (prof);
+  set_profile (ebin, create_ogg_theora_vorbis_profile (0, 0));
 
   gst_bin_add_many ((GstBin *) pipeline, audiotestsrc, videotestsrc, ebin,
       fakesink, NULL);
@@ -926,21 +949,14 @@
   GstEncodingProfile *prof1;
   GstEncodingProfile *prof2;
   GstEncodingProfile *prof3;
-  GstCaps *caps;
 
-  caps = gst_caps_new_empty_simple ("application/ogg");
-  prof1 = (GstEncodingProfile *) gst_encoding_container_profile_new ((gchar *)
-      "myprofile", NULL, caps, NULL);
-  gst_caps_unref (caps);
-
+  prof1 = create_ogg_profile ();
   prof2 = create_ogg_theora_vorbis_profile (1, 1);
   prof3 = create_vorbis_only_profile ();
 
   _test_encodebin_reuse (prof1, NULL);
   _test_encodebin_reuse (prof1, prof1);
-
   _test_encodebin_reuse (prof1, prof2);
-
   _test_encodebin_reuse (prof2, prof3);
 
   gst_encoding_profile_unref (prof1);
@@ -1020,6 +1036,31 @@
 
 GST_END_TEST;
 
+GST_START_TEST (test_encodebin_missing_plugin_messages)
+{
+  GstElement *pipeline = gst_pipeline_new ("test");
+  GstBus *bus = gst_pipeline_get_bus ((GstPipeline *) pipeline);
+  GstElement *ebin = gst_element_factory_make ("encodebin", NULL);
+  GstMessage *message;
+
+  /* first add to bin, then set profile */
+  gst_bin_add ((GstBin *) pipeline, ebin);
+  set_profile (ebin, create_unsupported_profile ());
+
+  gst_element_set_state (pipeline, GST_STATE_READY);
+
+  message = gst_bus_pop_filtered (bus, GST_MESSAGE_ELEMENT);
+  fail_if (message == NULL);
+  fail_if (!gst_is_missing_plugin_message (message));
+  gst_message_unref (message);
+
+  gst_element_set_state (pipeline, GST_STATE_NULL);
+  gst_object_unref (bus);
+  gst_object_unref (pipeline);
+}
+
+GST_END_TEST;
+
 static Suite *
 encodebin_suite (void)
 {
@@ -1027,7 +1068,9 @@
   TCase *tc_chain = tcase_create ("general");
 
   suite_add_tcase (s, tc_chain);
-  tcase_add_test (tc_chain, test_encodebin_states);
+  tcase_add_test (tc_chain, test_encodebin_set_profile);
+  tcase_add_test (tc_chain, test_encodebin_can_go_to_ready_without_profile);
+  tcase_add_test (tc_chain, test_encodebin_can_go_to_paused_with_profile);
   tcase_add_test (tc_chain, test_encodebin_sink_pads_static);
   tcase_add_test (tc_chain, test_encodebin_sink_pads_nopreset_static);
   tcase_add_test (tc_chain, test_encodebin_preset);
@@ -1043,6 +1086,7 @@
   tcase_add_test (tc_chain, test_encodebin_impossible_element_combination);
   tcase_add_test (tc_chain, test_encodebin_reuse);
   tcase_add_test (tc_chain, test_encodebin_named_requests);
+  tcase_add_test (tc_chain, test_encodebin_missing_plugin_messages);
 
   return s;
 }
diff --git a/tests/check/elements/subparse.c b/tests/check/elements/subparse.c
index 0651eab..23e99b6 100644
--- a/tests/check/elements/subparse.c
+++ b/tests/check/elements/subparse.c
@@ -771,6 +771,51 @@
 
 GST_END_TEST;
 
+GST_START_TEST (test_sami_comment)
+{
+  SubParseInputChunk sami_input[] = {
+    {"<SAMI>\n"
+          "<!--\n"
+          "=======\n"
+          "foo bar\n"
+          "=======\n"
+          "-->\n"
+          "<BODY>\n"
+          "    <SYNC Start=1000>\n"
+          "        <P Class=\"C====\">\n" "            &nbsp &\n",
+          1000 * GST_MSECOND, 2000 * GST_MSECOND,
+        "\xc2\xa0 &amp;"},
+    {"    <SYNC Start=2000>\n"
+          "        <P Class=CC>\n"
+          "            &#xa0 &#177 &#180;\n" "</BODY>\n" "</SAMI>\n",
+          2000 * GST_MSECOND, GST_CLOCK_TIME_NONE,
+        "\xc2\xa0 \xc2\xb1 \xc2\xb4"}
+  };
+
+  do_test (sami_input, G_N_ELEMENTS (sami_input), "pango-markup");
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_lrc)
+{
+  SubParseInputChunk lrc_input[] = {
+    {"[ar:123]\n" "[ti:Title]\n" "[al:Album]\n" "[00:02.23]Line 1\n",
+          2230 * GST_MSECOND, GST_CLOCK_TIME_NONE,
+        "Line 1"},
+    {"[00:05.10]Line 2\n",
+          5100 * GST_MSECOND, GST_CLOCK_TIME_NONE,
+        "Line 2"},
+    {"[00:06.123]Line 3\n",
+          6123 * GST_MSECOND, GST_CLOCK_TIME_NONE,
+        "Line 3"}
+  };
+
+  do_test (lrc_input, G_N_ELEMENTS (lrc_input), "utf8");
+}
+
+GST_END_TEST;
+
 /* TODO:
  *  - add/modify tests so that lines aren't dogfed to the parsers in complete
  *    lines or sets of complete lines, but rather in random chunks
@@ -803,6 +848,8 @@
   tcase_add_test (tc_chain, test_sami_xml_entities);
   tcase_add_test (tc_chain, test_sami_html_entities);
   tcase_add_test (tc_chain, test_sami_bad_entities);
+  tcase_add_test (tc_chain, test_sami_comment);
+  tcase_add_test (tc_chain, test_lrc);
   return s;
 }
 
diff --git a/tests/check/elements/textoverlay.c b/tests/check/elements/textoverlay.c
index c11d5e5..7da26a4 100644
--- a/tests/check/elements/textoverlay.c
+++ b/tests/check/elements/textoverlay.c
@@ -21,6 +21,7 @@
 #include <unistd.h>
 
 #include <gst/check/gstcheck.h>
+#include <gst/video/video-overlay-composition.h>
 
 #define I420_Y_ROWSTRIDE(width) (GST_ROUND_UP_4(width))
 #define I420_U_ROWSTRIDE(width) (GST_ROUND_UP_8(width)/2)
@@ -51,11 +52,43 @@
     "video/x-raw, "                 \
     "format = (string) I420"
 
+#define VIDEO_CAPS_TEMPLATE_WITH_FEATURE_STRING                              \
+    "video/x-raw(" GST_CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION "), " \
+    "format = (string) I420;"                                                \
+    "video/x-raw, "                                                          \
+    "format = (string) I420;"
+
+#define UNSUPPORTED_VIDEO_CAPS_STRING                                            \
+    "video/x-raw(" GST_CAPS_FEATURE_META_GST_VIDEO_GL_TEXTURE_UPLOAD_META "), "  \
+    "format = (string) I420, "                                                   \
+    "framerate = (fraction) 1/1, "                                               \
+    "width = (int) 240, "                                                        \
+    "height = (int) 120"
+
+#define UNSUPPORTED_VIDEO_CAPS_TEMPLATE_STRING                                  \
+    "video/x-raw(" GST_CAPS_FEATURE_META_GST_VIDEO_GL_TEXTURE_UPLOAD_META "), " \
+    "format = (string) I420"
+
+#define UNSUPPORTED_VIDEO_CAPS_TEMPLATE_WITH_FEATURE_STRING                     \
+    "video/x-raw(" GST_CAPS_FEATURE_META_GST_VIDEO_GL_TEXTURE_UPLOAD_META ","   \
+                   GST_CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION "), "    \
+    "format = (string) I420;"                                                   \
+    "video/x-raw(" GST_CAPS_FEATURE_META_GST_VIDEO_GL_TEXTURE_UPLOAD_META "), " \
+    "format = (string) I420"
+
 static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink",
     GST_PAD_SINK,
     GST_PAD_ALWAYS,
     GST_STATIC_CAPS (VIDEO_CAPS_TEMPLATE_STRING)
     );
+
+static GstStaticPadTemplate sinktemplate_with_features =
+GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS (VIDEO_CAPS_TEMPLATE_WITH_FEATURE_STRING)
+    );
+
 static GstStaticPadTemplate text_srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
     GST_PAD_SRC,
     GST_PAD_ALWAYS,
@@ -68,6 +101,20 @@
     GST_STATIC_CAPS (VIDEO_CAPS_TEMPLATE_STRING)
     );
 
+static GstStaticPadTemplate unsupported_sinktemplate_with_features =
+GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS (UNSUPPORTED_VIDEO_CAPS_TEMPLATE_WITH_FEATURE_STRING)
+    );
+
+static GstStaticPadTemplate unsupported_video_srctemplate =
+GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS (UNSUPPORTED_VIDEO_CAPS_TEMPLATE_STRING)
+    );
+
 static void
 gst_check_setup_events_textoverlay (GstPad * srcpad, GstElement * element,
     GstCaps * caps, GstFormat format, const gchar * stream_id)
@@ -83,6 +130,30 @@
   fail_unless (gst_pad_push_event (srcpad, gst_event_new_segment (&segment)));
 }
 
+
+static gboolean
+sink_query_handler (GstPad * pad, GstObject * parent, GstQuery * query)
+{
+  gboolean ret = FALSE;
+  GstQueryType type = GST_QUERY_TYPE (query);
+
+  switch (type) {
+    case GST_QUERY_ALLOCATION:{
+      gst_query_add_allocation_meta (query,
+          GST_VIDEO_OVERLAY_COMPOSITION_META_API_TYPE, NULL);
+
+      ret = TRUE;
+
+      break;
+    }
+    default:{
+      ret = gst_pad_query_default (pad, parent, query);
+      break;
+    }
+  }
+  return ret;
+}
+
 /* much like gst_check_setup_src_pad(), but with possibility to give a hint
  * which sink template of the element to use, if there are multiple ones */
 static GstPad *
@@ -145,20 +216,28 @@
 }
 
 static GstElement *
-setup_textoverlay (gboolean video_only_no_text)
+setup_textoverlay_with_templates (GstStaticPadTemplate * srcpad_template,
+    GstStaticPadTemplate * textpad_template,
+    GstStaticPadTemplate * sinkpad_template, gboolean enable_allocation_query)
 {
   GstElement *textoverlay;
 
   GST_DEBUG ("setup_textoverlay");
   textoverlay = gst_check_setup_element ("textoverlay");
-  mysinkpad = gst_check_setup_sink_pad (textoverlay, &sinktemplate);
+  mysinkpad = gst_check_setup_sink_pad (textoverlay, sinkpad_template);
+
+  if (enable_allocation_query) {
+    GST_PAD_SET_PROXY_ALLOCATION (mysinkpad);
+    gst_pad_set_query_function (mysinkpad, sink_query_handler);
+  }
+
   myvideosrcpad =
-      notgst_check_setup_src_pad2 (textoverlay, &video_srctemplate, NULL,
+      notgst_check_setup_src_pad2 (textoverlay, srcpad_template, NULL,
       "video_sink");
 
-  if (!video_only_no_text) {
+  if (textpad_template) {
     mytextsrcpad =
-        notgst_check_setup_src_pad2 (textoverlay, &text_srctemplate, NULL,
+        notgst_check_setup_src_pad2 (textoverlay, textpad_template, NULL,
         "text_sink");
     gst_pad_set_active (mytextsrcpad, TRUE);
   } else {
@@ -171,6 +250,22 @@
   return textoverlay;
 }
 
+static GstElement *
+setup_textoverlay (gboolean video_only_no_text)
+{
+  GstStaticPadTemplate *srcpad_template = NULL;
+  GstStaticPadTemplate *textpad_template = NULL;
+  GstStaticPadTemplate *sinkpad_template = NULL;
+
+  srcpad_template = &video_srctemplate;
+  if (!video_only_no_text)
+    textpad_template = &text_srctemplate;
+  sinkpad_template = &sinktemplate;
+
+  return setup_textoverlay_with_templates (srcpad_template,
+      textpad_template, sinkpad_template, FALSE);
+}
+
 static gboolean
 buffer_is_all_black (GstBuffer * buf, GstCaps * caps)
 {
@@ -422,6 +517,137 @@
 
 GST_END_TEST;
 
+GST_START_TEST (test_video_passthrough_with_feature)
+{
+  GstElement *textoverlay;
+  GstBuffer *inbuffer, *outbuffer;
+  GstCaps *incaps, *outcaps;
+  GstVideoOverlayCompositionMeta *comp_meta;
+
+  textoverlay = setup_textoverlay_with_templates (&video_srctemplate,
+      NULL, &sinktemplate_with_features, TRUE);
+
+  /* set static text to render */
+  g_object_set (textoverlay, "text", "XLX", NULL);
+
+  fail_unless (gst_element_set_state (textoverlay,
+          GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
+      "could not set to playing");
+
+  incaps = create_video_caps (VIDEO_CAPS_STRING);
+  gst_check_setup_events_textoverlay (myvideosrcpad, textoverlay, incaps,
+      GST_FORMAT_TIME, "video");
+  inbuffer = create_black_buffer (incaps);
+  gst_caps_unref (incaps);
+  ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
+
+  GST_BUFFER_TIMESTAMP (inbuffer) = 0;
+  GST_BUFFER_DURATION (inbuffer) = GST_SECOND / 10;
+
+  /* take additional ref to keep it alive */
+  gst_buffer_ref (inbuffer);
+  ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 2);
+
+  /* pushing gives away one of the two references we have ... */
+  fail_unless (gst_pad_push (myvideosrcpad, inbuffer) == GST_FLOW_OK);
+
+  /* should have been dropped in favour of a new writable buffer */
+  ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
+  fail_unless_equals_int (g_list_length (buffers), 1);
+  outbuffer = GST_BUFFER_CAST (buffers->data);
+  outcaps = gst_pad_get_current_caps (mysinkpad);
+  fail_unless (outbuffer != inbuffer);
+
+  /* output buffer should be black */
+  fail_unless (buffer_is_all_black (outbuffer, outcaps) == TRUE);
+  gst_caps_unref (outcaps);
+
+  /* output buffer should have the composition meta */
+  comp_meta = gst_buffer_get_video_overlay_composition_meta (outbuffer);
+  fail_unless (comp_meta != NULL);
+
+  fail_unless (GST_BUFFER_TIMESTAMP (outbuffer) == 0);
+  fail_unless (GST_BUFFER_DURATION (outbuffer) == (GST_SECOND / 10));
+
+  /* and clean up */
+  g_list_foreach (buffers, (GFunc) gst_mini_object_unref, NULL);
+  g_list_free (buffers);
+  buffers = NULL;
+  ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
+
+  /* cleanup */
+  cleanup_textoverlay (textoverlay);
+  gst_buffer_unref (inbuffer);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_video_passthrough_with_feature_and_unsupported_caps)
+{
+  GstElement *textoverlay;
+  GstBuffer *inbuffer, *outbuffer;
+  GstCaps *incaps, *outcaps;
+  GstVideoOverlayCompositionMeta *comp_meta;
+
+  textoverlay =
+      setup_textoverlay_with_templates (&unsupported_video_srctemplate, NULL,
+      &unsupported_sinktemplate_with_features, TRUE);
+
+  /* set static text to render */
+  g_object_set (textoverlay, "text", "XLX", NULL);
+
+  fail_unless (gst_element_set_state (textoverlay,
+          GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
+      "could not set to playing");
+
+  incaps = create_video_caps (UNSUPPORTED_VIDEO_CAPS_STRING);
+  gst_check_setup_events_textoverlay (myvideosrcpad, textoverlay, incaps,
+      GST_FORMAT_TIME, "video");
+  inbuffer = create_black_buffer (incaps);
+  gst_caps_unref (incaps);
+  ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
+
+  GST_BUFFER_TIMESTAMP (inbuffer) = 0;
+  GST_BUFFER_DURATION (inbuffer) = GST_SECOND / 10;
+
+  /* take additional ref to keep it alive */
+  gst_buffer_ref (inbuffer);
+  ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 2);
+
+  /* pushing gives away one of the two references we have ... */
+  fail_unless (gst_pad_push (myvideosrcpad, inbuffer) == GST_FLOW_OK);
+
+  /* should have been dropped in favour of a new writable buffer */
+  ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
+  fail_unless_equals_int (g_list_length (buffers), 1);
+  outbuffer = GST_BUFFER_CAST (buffers->data);
+  outcaps = gst_pad_get_current_caps (mysinkpad);
+  fail_unless (outbuffer != inbuffer);
+
+  /* output buffer should be black */
+  fail_unless (buffer_is_all_black (outbuffer, outcaps) == TRUE);
+  gst_caps_unref (outcaps);
+
+  /* output buffer should have the composition meta */
+  comp_meta = gst_buffer_get_video_overlay_composition_meta (outbuffer);
+  fail_unless (comp_meta != NULL);
+
+  fail_unless (GST_BUFFER_TIMESTAMP (outbuffer) == 0);
+  fail_unless (GST_BUFFER_DURATION (outbuffer) == (GST_SECOND / 10));
+
+  /* and clean up */
+  g_list_foreach (buffers, (GFunc) gst_mini_object_unref, NULL);
+  g_list_free (buffers);
+  buffers = NULL;
+  ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
+
+  /* cleanup */
+  cleanup_textoverlay (textoverlay);
+  gst_buffer_unref (inbuffer);
+}
+
+GST_END_TEST;
+
 GST_START_TEST (test_video_render_static_text)
 {
   GstElement *textoverlay;
@@ -813,6 +1039,9 @@
   suite_add_tcase (s, tc_chain);
 
   tcase_add_test (tc_chain, test_video_passthrough);
+  tcase_add_test (tc_chain, test_video_passthrough_with_feature);
+  tcase_add_test (tc_chain,
+      test_video_passthrough_with_feature_and_unsupported_caps);
   tcase_add_test (tc_chain, test_video_render_static_text);
   tcase_add_test (tc_chain, test_render_continuity);
   tcase_add_test (tc_chain, test_video_waits_for_text);
diff --git a/tests/check/elements/videoconvert.c b/tests/check/elements/videoconvert.c
index f82f908..99a9574 100644
--- a/tests/check/elements/videoconvert.c
+++ b/tests/check/elements/videoconvert.c
@@ -35,7 +35,7 @@
 {
   guint i = 2;
 
-  while (gst_video_format_to_string ((GstFormat) i) != NULL)
+  while (gst_video_format_to_string ((GstVideoFormat) i) != NULL)
     ++i;
 
   return i;
diff --git a/tests/check/elements/videoscale.c b/tests/check/elements/videoscale.c
index 7d25535..369df32 100644
--- a/tests/check/elements/videoscale.c
+++ b/tests/check/elements/videoscale.c
@@ -34,7 +34,7 @@
 {
   guint i = 2;
 
-  while (gst_video_format_to_string ((GstFormat) i) != NULL)
+  while (gst_video_format_to_string ((GstVideoFormat) i) != NULL)
     ++i;
 
   return i;
@@ -120,6 +120,7 @@
         case GST_VIDEO_FORMAT_GBR:
         case GST_VIDEO_FORMAT_GBR_10BE:
         case GST_VIDEO_FORMAT_GBR_10LE:
+        case GST_VIDEO_FORMAT_NV12_64Z32:
           GST_LOG ("Ignoring lack of support for format %s", fmt_str);
           break;
         default:
diff --git a/tests/check/elements/videotestsrc.c b/tests/check/elements/videotestsrc.c
index bf3af55..127be28 100644
--- a/tests/check/elements/videotestsrc.c
+++ b/tests/check/elements/videotestsrc.c
@@ -465,6 +465,7 @@
   /* clean up */
   gst_pad_remove_probe (pad, pad_probe);
   gst_object_unref (pad);
+  gst_object_unref (src);
   g_main_loop_unref (loop);
   g_source_remove (bus_watch);
   gst_object_unref (bin);
@@ -472,6 +473,55 @@
 
 GST_END_TEST;
 
+GST_START_TEST (test_duration_query)
+{
+  GstElement *bin;
+  GError *error = NULL;
+  GstStateChangeReturn ret;
+  gboolean queryret;
+  gint64 duration = -1;
+
+  bin =
+      gst_parse_launch ("videotestsrc ! fakesink name=sink sync=true", &error);
+  ret = gst_element_set_state (bin, GST_STATE_PAUSED);
+  if (ret == GST_STATE_CHANGE_ASYNC) {
+    ret = gst_element_get_state (bin, NULL, NULL, GST_CLOCK_TIME_NONE);
+    fail_if (ret != GST_STATE_CHANGE_SUCCESS, "Could not start test pipeline");
+  }
+  queryret = gst_element_query_duration (bin, GST_FORMAT_TIME, &duration);
+  /* should have unknown duration */
+  if (queryret && duration != -1) {
+    fail ("Should return false on duration query");
+  }
+  gst_element_set_state (bin, GST_STATE_NULL);
+  gst_object_unref (bin);
+
+  bin = gst_parse_launch ("videotestsrc num-buffers=100 ! capsfilter "
+      "caps=\"video/x-raw,framerate=(fraction)10/1\" ! "
+      "fakesink name=sink sync=true", &error);
+  ret = gst_element_set_state (bin, GST_STATE_PAUSED);
+  if (ret == GST_STATE_CHANGE_ASYNC) {
+    ret = gst_element_get_state (bin, NULL, NULL, GST_CLOCK_TIME_NONE);
+    fail_if (ret != GST_STATE_CHANGE_SUCCESS, "Could not start test pipeline");
+  }
+  queryret = gst_element_query_duration (bin, GST_FORMAT_TIME, &duration);
+  fail_unless (queryret, "Duration should be returned");
+  fail_unless (duration == GST_SECOND * 10, "Expected duration didn't match");
+
+  /* reverse playback should have no impact on duration */
+  gst_element_seek (bin, -1.0, GST_FORMAT_TIME,
+      GST_SEEK_FLAG_ACCURATE | GST_SEEK_FLAG_FLUSH, GST_SEEK_TYPE_SET,
+      0, GST_SEEK_TYPE_SET, 1 * GST_SECOND);
+  queryret = gst_element_query_duration (bin, GST_FORMAT_TIME, &duration);
+  fail_unless (queryret, "Duration should be returned");
+  fail_unless (duration == GST_SECOND * 10, "Expected duration didn't match");
+
+  gst_element_set_state (bin, GST_STATE_NULL);
+  gst_object_unref (bin);
+}
+
+GST_END_TEST;
+
 
 /* FIXME: add tests for YUV formats */
 
@@ -493,6 +543,7 @@
   tcase_add_test (tc_chain, test_all_patterns);
   tcase_add_test (tc_chain, test_rgb_formats);
   tcase_add_test (tc_chain, test_backward_playback);
+  tcase_add_test (tc_chain, test_duration_query);
 
   return s;
 }
diff --git a/tests/check/libs/audio.c b/tests/check/libs/audio.c
index 47fe0b4..d95923e 100644
--- a/tests/check/libs/audio.c
+++ b/tests/check/libs/audio.c
@@ -591,6 +591,27 @@
 
 GST_END_TEST;
 
+GST_START_TEST (test_fill_silence)
+{
+  GstAudioInfo info;
+  GstAudioFormat f;
+  gint i;
+  guint8 test_silence[32];
+
+  for (f = GST_AUDIO_FORMAT_S8; f < GST_AUDIO_FORMAT_F64; f++) {
+    gst_audio_info_set_format (&info, f, 48000, 1, NULL);
+
+    gst_audio_format_fill_silence (info.finfo, test_silence,
+        GST_AUDIO_INFO_BPF (&info) * 4);
+
+    for (i = 0; i < 4; i++)
+      fail_unless (memcmp (test_silence + i * GST_AUDIO_INFO_BPF (&info),
+              info.finfo->silence, GST_AUDIO_INFO_BPF (&info)) == 0);
+  }
+}
+
+GST_END_TEST;
+
 static Suite *
 audio_suite (void)
 {
@@ -604,6 +625,7 @@
   tcase_add_test (tc_chain, test_buffer_clipping_samples);
   tcase_add_test (tc_chain, test_multichannel_checks);
   tcase_add_test (tc_chain, test_multichannel_reorder);
+  tcase_add_test (tc_chain, test_fill_silence);
 
   return s;
 }
diff --git a/tests/check/libs/audiodecoder.c b/tests/check/libs/audiodecoder.c
index 8317346..5d2e182 100644
--- a/tests/check/libs/audiodecoder.c
+++ b/tests/check/libs/audiodecoder.c
@@ -79,7 +79,7 @@
   gst_caps_unref (caps);
 
   if (!tester->setoutputformat_on_decoding) {
-    caps = gst_caps_new_simple ("audio/x-raw", "format", G_TYPE_STRING, "S16LE",
+    caps = gst_caps_new_simple ("audio/x-raw", "format", G_TYPE_STRING, "S32LE",
         "channels", G_TYPE_INT, 2, "rate", G_TYPE_INT, 44100,
         "layout", G_TYPE_STRING, "interleaved", NULL);
     gst_audio_info_from_caps (&info, caps);
@@ -99,7 +99,6 @@
   gint size;
   GstMapInfo map;
   GstBuffer *output_buffer;
-  guint64 samples;
 
   if (buffer == NULL)
     return GST_FLOW_OK;
@@ -108,7 +107,7 @@
     GstCaps *caps;
     GstAudioInfo info;
 
-    caps = gst_caps_new_simple ("audio/x-raw", "format", G_TYPE_STRING, "S16LE",
+    caps = gst_caps_new_simple ("audio/x-raw", "format", G_TYPE_STRING, "S32LE",
         "channels", G_TYPE_INT, 2, "rate", G_TYPE_INT, 44100,
         "layout", G_TYPE_STRING, "interleaved", NULL);
     gst_audio_info_from_caps (&info, caps);
@@ -119,11 +118,9 @@
 
   gst_buffer_map (buffer, &map, GST_MAP_READ);
 
-  /* the output is SE16LE stereo 44100 Hz */
-  samples =
-      gst_util_uint64_scale_round (44100, GST_BUFFER_DURATION (buffer),
-      GST_SECOND);
-  size = 2 * 2 * samples;
+  /* the output is SE32LE stereo 44100 Hz */
+  size = 2 * 4;
+  g_assert (size == sizeof (guint64));
   data = g_malloc0 (size);
 
   memcpy (data, map.data, sizeof (guint64));
@@ -179,14 +176,14 @@
 static void
 setup_audiodecodertester (void)
 {
-  GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink",
+  static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink",
       GST_PAD_SINK,
       GST_PAD_ALWAYS,
-      GST_STATIC_CAPS ("audio/x-raw, format=(string)S16LE, "
+      GST_STATIC_CAPS ("audio/x-raw, format=(string)S32LE, "
           "rate=(int)[1, 320000], channels=(int)[1, 32],"
           "layout=(string)interleaved")
       );
-  GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
+  static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
       GST_PAD_SRC,
       GST_PAD_ALWAYS,
       GST_STATIC_CAPS ("audio/x-test-custom")
@@ -277,11 +274,11 @@
     gst_buffer_map (buffer, &map, GST_MAP_READ);
 
     num = *(guint64 *) map.data;
-    fail_unless (i == num);
-    fail_unless (GST_BUFFER_PTS (buffer) == gst_util_uint64_scale_round (i,
-            GST_SECOND, TEST_MSECS_PER_SAMPLE));
-    fail_unless (GST_BUFFER_DURATION (buffer) == gst_util_uint64_scale_round (1,
-            GST_SECOND, TEST_MSECS_PER_SAMPLE));
+    fail_unless_equals_uint64 (i, num);
+    fail_unless_equals_uint64 (GST_BUFFER_PTS (buffer),
+        gst_util_uint64_scale_round (i, GST_SECOND, TEST_MSECS_PER_SAMPLE));
+    fail_unless_equals_uint64 (GST_BUFFER_DURATION (buffer),
+        gst_util_uint64_scale_round (1, GST_SECOND, TEST_MSECS_PER_SAMPLE));
 
     gst_buffer_unmap (buffer, &map);
 
diff --git a/tests/check/libs/audioencoder.c b/tests/check/libs/audioencoder.c
new file mode 100644
index 0000000..a6bfcf0
--- /dev/null
+++ b/tests/check/libs/audioencoder.c
@@ -0,0 +1,411 @@
+/* GStreamer
+ *
+ * Copyright (C) 2014 Samsung Electronics. All rights reserved.
+ *   Author: Thiago Santos <ts.santos@sisa.samsung.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+#include <gst/gst.h>
+#include <gst/check/gstcheck.h>
+#include <gst/audio/audio.h>
+#include <gst/app/app.h>
+
+static GstPad *mysrcpad, *mysinkpad;
+static GstElement *enc;
+static GList *events = NULL;
+
+#define TEST_AUDIO_RATE 44100
+#define TEST_AUDIO_CHANNELS 2
+#define TEST_AUDIO_FORMAT "S16LE"
+
+#define GST_AUDIO_ENCODER_TESTER_TYPE gst_audio_encoder_tester_get_type()
+static GType gst_audio_encoder_tester_get_type (void);
+
+typedef struct _GstAudioEncoderTester GstAudioEncoderTester;
+typedef struct _GstAudioEncoderTesterClass GstAudioEncoderTesterClass;
+
+struct _GstAudioEncoderTester
+{
+  GstAudioEncoder parent;
+};
+
+struct _GstAudioEncoderTesterClass
+{
+  GstAudioEncoderClass parent_class;
+};
+
+G_DEFINE_TYPE (GstAudioEncoderTester, gst_audio_encoder_tester,
+    GST_TYPE_AUDIO_ENCODER);
+
+static gboolean
+gst_audio_encoder_tester_start (GstAudioEncoder * enc)
+{
+  return TRUE;
+}
+
+static gboolean
+gst_audio_encoder_tester_stop (GstAudioEncoder * enc)
+{
+  return TRUE;
+}
+
+static gboolean
+gst_audio_encoder_tester_set_format (GstAudioEncoder * enc, GstAudioInfo * info)
+{
+  GstCaps *caps;
+
+  caps = gst_caps_new_simple ("audio/x-test-custom", "rate", G_TYPE_INT,
+      TEST_AUDIO_RATE, "channels", G_TYPE_INT, TEST_AUDIO_CHANNELS, NULL);
+  gst_audio_encoder_set_output_format (enc, caps);
+  gst_caps_unref (caps);
+
+  return TRUE;
+}
+
+static GstFlowReturn
+gst_audio_encoder_tester_handle_frame (GstAudioEncoder * enc,
+    GstBuffer * buffer)
+{
+  guint8 *data;
+  GstMapInfo map;
+  guint64 input_num;
+  GstBuffer *output_buffer;
+
+  if (buffer == NULL)
+    return GST_FLOW_OK;
+
+  gst_buffer_map (buffer, &map, GST_MAP_READ);
+  input_num = *((guint64 *) map.data);
+  gst_buffer_unmap (buffer, &map);
+
+  data = g_malloc (sizeof (guint64));
+  *(guint64 *) data = input_num;
+
+  output_buffer = gst_buffer_new_wrapped (data, sizeof (guint64));
+  GST_BUFFER_PTS (output_buffer) = GST_BUFFER_PTS (buffer);
+  GST_BUFFER_DURATION (output_buffer) = GST_BUFFER_DURATION (buffer);
+
+  return gst_audio_encoder_finish_frame (enc, output_buffer, TEST_AUDIO_RATE);
+}
+
+static void
+gst_audio_encoder_tester_class_init (GstAudioEncoderTesterClass * klass)
+{
+  GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
+  GstAudioEncoderClass *audioencoder_class = GST_AUDIO_ENCODER_CLASS (klass);
+
+  static GstStaticPadTemplate sink_templ = GST_STATIC_PAD_TEMPLATE ("sink",
+      GST_PAD_SINK, GST_PAD_ALWAYS,
+      GST_STATIC_CAPS ("audio/x-raw"));
+
+  static GstStaticPadTemplate src_templ = GST_STATIC_PAD_TEMPLATE ("src",
+      GST_PAD_SRC, GST_PAD_ALWAYS,
+      GST_STATIC_CAPS ("audio/x-test-custom"));
+
+  gst_element_class_add_pad_template (element_class,
+      gst_static_pad_template_get (&sink_templ));
+  gst_element_class_add_pad_template (element_class,
+      gst_static_pad_template_get (&src_templ));
+
+  gst_element_class_set_metadata (element_class,
+      "AudioEncoderTester", "Encoder/Audio", "yep", "me");
+
+  audioencoder_class->start = gst_audio_encoder_tester_start;
+  audioencoder_class->stop = gst_audio_encoder_tester_stop;
+  audioencoder_class->handle_frame = gst_audio_encoder_tester_handle_frame;
+  audioencoder_class->set_format = gst_audio_encoder_tester_set_format;
+}
+
+static void
+gst_audio_encoder_tester_init (GstAudioEncoderTester * tester)
+{
+}
+
+static gboolean
+_mysinkpad_event (GstPad * pad, GstObject * parent, GstEvent * event)
+{
+  events = g_list_append (events, event);
+  return TRUE;
+}
+
+static void
+setup_audioencodertester (void)
+{
+  static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink",
+      GST_PAD_SINK,
+      GST_PAD_ALWAYS,
+      GST_STATIC_CAPS ("audio/x-test-custom")
+      );
+  static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
+      GST_PAD_SRC,
+      GST_PAD_ALWAYS,
+      GST_STATIC_CAPS ("audio/x-raw")
+      );
+
+  enc = g_object_new (GST_AUDIO_ENCODER_TESTER_TYPE, NULL);
+  mysrcpad = gst_check_setup_src_pad (enc, &srctemplate);
+  mysinkpad = gst_check_setup_sink_pad (enc, &sinktemplate);
+
+  gst_pad_set_event_function (mysinkpad, _mysinkpad_event);
+}
+
+static void
+cleanup_audioencodertest (void)
+{
+  gst_pad_set_active (mysrcpad, FALSE);
+  gst_pad_set_active (mysinkpad, FALSE);
+
+  gst_element_set_state (enc, GST_STATE_NULL);
+
+  gst_check_teardown_src_pad (enc);
+  gst_check_teardown_sink_pad (enc);
+  gst_check_teardown_element (enc);
+
+  g_list_free_full (events, (GDestroyNotify) gst_event_unref);
+  events = NULL;
+}
+
+static GstBuffer *
+create_test_buffer (guint64 num)
+{
+  GstBuffer *buffer;
+  guint64 *data;
+  gsize size;
+  guint64 samples;
+
+  samples = TEST_AUDIO_RATE;
+  size = 2 * 2 * samples;
+
+  data = g_malloc0 (size);
+  *data = num;
+
+  buffer = gst_buffer_new_wrapped (data, size);
+
+  GST_BUFFER_PTS (buffer) = num * GST_SECOND;
+  GST_BUFFER_DURATION (buffer) = GST_SECOND;
+
+  return buffer;
+}
+
+static void
+send_startup_events (void)
+{
+  GstCaps *caps;
+
+  fail_unless (gst_pad_push_event (mysrcpad,
+          gst_event_new_stream_start ("randomvalue")));
+
+  /* push caps */
+  caps =
+      gst_caps_new_simple ("audio/x-raw", "rate", G_TYPE_INT,
+      TEST_AUDIO_RATE, "channels", G_TYPE_INT, TEST_AUDIO_CHANNELS, "format",
+      G_TYPE_STRING, "S16LE", "layout", G_TYPE_STRING, "interleaved", NULL);
+  fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_caps (caps)));
+  gst_caps_unref (caps);
+}
+
+#define NUM_BUFFERS 100
+GST_START_TEST (audioencoder_playback)
+{
+  GstSegment segment;
+  GstBuffer *buffer;
+  guint64 i;
+  GList *iter;
+
+  setup_audioencodertester ();
+
+  gst_pad_set_active (mysrcpad, TRUE);
+  gst_element_set_state (enc, GST_STATE_PLAYING);
+  gst_pad_set_active (mysinkpad, TRUE);
+
+  send_startup_events ();
+
+  /* push a new segment */
+  gst_segment_init (&segment, GST_FORMAT_TIME);
+  fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment)));
+
+  /* push buffers, the data is actually a number so we can track them */
+  for (i = 0; i < NUM_BUFFERS; i++) {
+    buffer = create_test_buffer (i);
+
+    fail_unless (gst_pad_push (mysrcpad, buffer) == GST_FLOW_OK);
+  }
+
+  fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_eos ()));
+
+  /* check that all buffers were received by our source pad */
+  fail_unless (g_list_length (buffers) == NUM_BUFFERS);
+  i = 0;
+  for (iter = buffers; iter; iter = g_list_next (iter)) {
+    GstMapInfo map;
+    guint64 num;
+
+    buffer = iter->data;
+
+    gst_buffer_map (buffer, &map, GST_MAP_READ);
+
+    num = *(guint64 *) map.data;
+    fail_unless (i == num);
+    fail_unless (GST_BUFFER_PTS (buffer) == i * GST_SECOND);
+    fail_unless (GST_BUFFER_DURATION (buffer) == GST_SECOND);
+
+    gst_buffer_unmap (buffer, &map);
+    i++;
+  }
+
+  g_list_free_full (buffers, (GDestroyNotify) gst_buffer_unref);
+  buffers = NULL;
+
+  cleanup_audioencodertest ();
+}
+
+GST_END_TEST;
+
+/* make sure tags sent right before eos are pushed */
+GST_START_TEST (audioencoder_tags_before_eos)
+{
+  GstSegment segment;
+  GstBuffer *buffer;
+  GstTagList *tags;
+
+  setup_audioencodertester ();
+
+  gst_pad_set_active (mysrcpad, TRUE);
+  gst_element_set_state (enc, GST_STATE_PLAYING);
+  gst_pad_set_active (mysinkpad, TRUE);
+
+  send_startup_events ();
+
+  /* push a new segment */
+  gst_segment_init (&segment, GST_FORMAT_TIME);
+  fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment)));
+
+  /* push buffer */
+  buffer = create_test_buffer (0);
+  fail_unless (gst_pad_push (mysrcpad, buffer) == GST_FLOW_OK);
+
+  /* clean received events list */
+  g_list_free_full (events, (GDestroyNotify) gst_event_unref);
+  events = NULL;
+
+  /* push a tag event */
+  tags = gst_tag_list_new (GST_TAG_COMMENT, "test-comment", NULL);
+  fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_tag (tags)));
+
+  fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_eos ()));
+
+  /* check that the tag was received */
+  {
+    GstEvent *tag_event = events->data;
+    gchar *str;
+
+    fail_unless (GST_EVENT_TYPE (tag_event) == GST_EVENT_TAG);
+    gst_event_parse_tag (tag_event, &tags);
+    fail_unless (gst_tag_list_get_string (tags, GST_TAG_COMMENT, &str));
+    fail_unless (strcmp (str, "test-comment") == 0);
+    g_free (str);
+  }
+
+  g_list_free_full (buffers, (GDestroyNotify) gst_buffer_unref);
+  buffers = NULL;
+  g_list_free_full (events, (GDestroyNotify) gst_event_unref);
+  events = NULL;
+
+  cleanup_audioencodertest ();
+}
+
+GST_END_TEST;
+
+/* make sure events sent right before eos are pushed */
+GST_START_TEST (audioencoder_events_before_eos)
+{
+  GstSegment segment;
+  GstBuffer *buffer;
+  GstMessage *msg;
+
+  setup_audioencodertester ();
+
+  gst_pad_set_active (mysrcpad, TRUE);
+  gst_element_set_state (enc, GST_STATE_PLAYING);
+  gst_pad_set_active (mysinkpad, TRUE);
+
+  send_startup_events ();
+
+  /* push a new segment */
+  gst_segment_init (&segment, GST_FORMAT_TIME);
+  fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment)));
+
+  /* push buffer */
+  buffer = create_test_buffer (0);
+  fail_unless (gst_pad_push (mysrcpad, buffer) == GST_FLOW_OK);
+
+  /* clean received events list */
+  g_list_free_full (events, (GDestroyNotify) gst_event_unref);
+  events = NULL;
+
+  /* push a serialized event */
+  msg =
+      gst_message_new_element (GST_OBJECT (mysrcpad),
+      gst_structure_new_empty ("test"));
+  fail_unless (gst_pad_push_event (mysrcpad,
+          gst_event_new_sink_message ("sink-test", msg)));
+  gst_message_unref (msg);
+
+  fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_eos ()));
+
+  /* check that the tag was received */
+  {
+    GstEvent *msg_event = events->data;
+    const GstStructure *structure;
+
+    fail_unless (GST_EVENT_TYPE (msg_event) == GST_EVENT_SINK_MESSAGE);
+    fail_unless (gst_event_has_name (msg_event, "sink-test"));
+    gst_event_parse_sink_message (msg_event, &msg);
+    structure = gst_message_get_structure (msg);
+    fail_unless (gst_structure_has_name (structure, "test"));
+    gst_message_unref (msg);
+  }
+
+  g_list_free_full (buffers, (GDestroyNotify) gst_buffer_unref);
+  buffers = NULL;
+  g_list_free_full (events, (GDestroyNotify) gst_event_unref);
+  events = NULL;
+
+  cleanup_audioencodertest ();
+}
+
+GST_END_TEST;
+
+static Suite *
+gst_audioencoder_suite (void)
+{
+  Suite *s = suite_create ("GstAudioEncoder");
+  TCase *tc = tcase_create ("general");
+
+  suite_add_tcase (s, tc);
+  tcase_add_test (tc, audioencoder_playback);
+
+  tcase_add_test (tc, audioencoder_tags_before_eos);
+  tcase_add_test (tc, audioencoder_events_before_eos);
+
+  return s;
+}
+
+GST_CHECK_MAIN (gst_audioencoder);
diff --git a/tests/check/libs/mikey.c b/tests/check/libs/mikey.c
new file mode 100644
index 0000000..9ffd8d4
--- /dev/null
+++ b/tests/check/libs/mikey.c
@@ -0,0 +1,222 @@
+/* GStreamer unit tests for the MIKEY support library
+ *
+ * Copyright (C) 2014 Wim Taymans <wim.taymans@gmail.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <gst/check/gstcheck.h>
+
+#include <gst/sdp/gstmikey.h>
+
+GST_START_TEST (create_common)
+{
+  GstMIKEYMessage *msg;
+  const guint8 test_data[] =
+      { 0x01, 0x00, 0x00, 0x00, 0x12, 0x34, 0x56, 0x78, 0x00, 0x00 };
+  const guint8 test_data2[] =
+      { 0x01, 0x12, 0x34, 0x56, 0x78, 0x00, 0x00, 0x00, 0x00,
+    0x02, 0x23, 0x45, 0x67, 0x89, 0x00, 0x00, 0x00, 0x01
+  };
+  GBytes *bytes;
+  const guint8 *data;
+  gsize size;
+  const GstMIKEYMapSRTP *mi;
+  GstMIKEYMapSRTP srtp;
+
+  msg = gst_mikey_message_new ();
+  fail_unless (msg != NULL);
+
+  fail_unless (gst_mikey_message_set_info (msg, 1, GST_MIKEY_TYPE_PSK_INIT,
+          FALSE, GST_MIKEY_PRF_MIKEY_1, 0x12345678, GST_MIKEY_MAP_TYPE_SRTP));
+  fail_unless (gst_mikey_message_get_n_cs (msg) == 0);
+
+  fail_unless (msg->version == 1);
+  fail_unless (msg->type == GST_MIKEY_TYPE_PSK_INIT);
+  fail_unless (msg->V == FALSE);
+  fail_unless (msg->prf_func == GST_MIKEY_PRF_MIKEY_1);
+  fail_unless (msg->CSB_id == 0x12345678);
+  fail_unless (msg->map_type == GST_MIKEY_MAP_TYPE_SRTP);
+
+  bytes = gst_mikey_message_to_bytes (msg, NULL, NULL);
+  data = g_bytes_get_data (bytes, &size);
+  fail_unless (data != NULL);
+  fail_unless (size == 10);
+  fail_unless (memcmp (data, test_data, 10) == 0);
+  g_bytes_unref (bytes);
+
+  fail_unless (gst_mikey_message_add_cs_srtp (msg, 1, 0x12345678, 0));
+  fail_unless (gst_mikey_message_get_n_cs (msg) == 1);
+  fail_unless (gst_mikey_message_add_cs_srtp (msg, 2, 0x23456789, 1));
+  fail_unless (gst_mikey_message_get_n_cs (msg) == 2);
+
+  bytes = gst_mikey_message_to_bytes (msg, NULL, NULL);
+  data = g_bytes_get_data (bytes, &size);
+  fail_unless (size == 28);
+  fail_unless (memcmp (data + 10, test_data2, 18) == 0);
+  g_bytes_unref (bytes);
+
+  fail_unless ((mi = gst_mikey_message_get_cs_srtp (msg, 0)) != NULL);
+  fail_unless (mi->policy == 1);
+  fail_unless (mi->ssrc == 0x12345678);
+  fail_unless (mi->roc == 0);
+  fail_unless ((mi = gst_mikey_message_get_cs_srtp (msg, 1)) != NULL);
+  fail_unless (mi->policy == 2);
+  fail_unless (mi->ssrc == 0x23456789);
+  fail_unless (mi->roc == 1);
+
+  fail_unless (gst_mikey_message_remove_cs_srtp (msg, 0));
+  fail_unless (gst_mikey_message_get_n_cs (msg) == 1);
+  fail_unless ((mi = gst_mikey_message_get_cs_srtp (msg, 0)) != NULL);
+  fail_unless (mi->policy == 2);
+  fail_unless (mi->ssrc == 0x23456789);
+  fail_unless (mi->roc == 1);
+  srtp.policy = 1;
+  srtp.ssrc = 0x12345678;
+  srtp.roc = 0;
+  fail_unless (gst_mikey_message_insert_cs_srtp (msg, 0, &srtp));
+  fail_unless ((mi = gst_mikey_message_get_cs_srtp (msg, 0)) != NULL);
+  fail_unless (mi->policy == 1);
+  fail_unless (mi->ssrc == 0x12345678);
+  fail_unless (mi->roc == 0);
+  fail_unless ((mi = gst_mikey_message_get_cs_srtp (msg, 1)) != NULL);
+  fail_unless (mi->policy == 2);
+  fail_unless (mi->ssrc == 0x23456789);
+  fail_unless (mi->roc == 1);
+
+  fail_unless (gst_mikey_message_remove_cs_srtp (msg, 1));
+  fail_unless (gst_mikey_message_get_n_cs (msg) == 1);
+  fail_unless (gst_mikey_message_remove_cs_srtp (msg, 0));
+  fail_unless (gst_mikey_message_get_n_cs (msg) == 0);
+
+  gst_mikey_message_free (msg);
+}
+
+GST_END_TEST
+GST_START_TEST (create_payloads)
+{
+  GstMIKEYMessage *msg;
+  GstMIKEYPayload *payload, *kp;
+  const GstMIKEYPayload *cp, *cp2;
+  const GstMIKEYPayloadKEMAC *p;
+  const GstMIKEYPayloadT *pt;
+  const GstMIKEYPayloadKeyData *pkd;
+  const guint8 ntp_data[] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 };
+  const guint8 edata[] = { 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80,
+    0x90, 0xa0, 0xb0, 0xc0, 0xd0, 0xe0, 0xf0, 0x10
+  };
+  GBytes *bytes;
+  const guint8 *data;
+  gsize size;
+
+  msg = gst_mikey_message_new ();
+  fail_unless (msg != NULL);
+
+  fail_unless (gst_mikey_message_set_info (msg, 1, GST_MIKEY_TYPE_PSK_INIT,
+          FALSE, GST_MIKEY_PRF_MIKEY_1, 0x12345678, GST_MIKEY_MAP_TYPE_SRTP));
+  fail_unless (gst_mikey_message_get_n_cs (msg) == 0);
+
+  fail_unless (gst_mikey_message_get_n_payloads (msg) == 0);
+
+  payload = gst_mikey_payload_new (GST_MIKEY_PT_T);
+  fail_unless (payload->type == GST_MIKEY_PT_T);
+  fail_unless (payload->len == sizeof (GstMIKEYPayloadT));
+  fail_unless (gst_mikey_payload_t_set (payload, GST_MIKEY_TS_TYPE_NTP,
+          ntp_data));
+  pt = (GstMIKEYPayloadT *) payload;
+  fail_unless (pt->type == GST_MIKEY_TS_TYPE_NTP);
+  fail_unless (memcmp (pt->ts_value, ntp_data, 8) == 0);
+
+  fail_unless (gst_mikey_message_add_payload (msg, payload));
+  fail_unless (payload->type == GST_MIKEY_PT_T);
+  fail_unless (gst_mikey_message_get_n_payloads (msg) == 1);
+
+  bytes = gst_mikey_message_to_bytes (msg, NULL, NULL);
+  data = g_bytes_get_data (bytes, &size);
+  fail_unless (data != NULL);
+  fail_unless (size == 20);
+  g_bytes_unref (bytes);
+
+  payload = gst_mikey_payload_new (GST_MIKEY_PT_KEMAC);
+  fail_unless (gst_mikey_payload_kemac_set (payload, GST_MIKEY_ENC_NULL,
+          GST_MIKEY_MAC_NULL));
+  /* add the edata as a key payload */
+  kp = gst_mikey_payload_new (GST_MIKEY_PT_KEY_DATA);
+  gst_mikey_payload_key_data_set_key (kp, GST_MIKEY_KD_TEK,
+      sizeof (edata), edata);
+  fail_unless (gst_mikey_payload_kemac_add_sub (payload, kp));
+  fail_unless (gst_mikey_message_add_payload (msg, payload));
+  fail_unless (gst_mikey_message_get_n_payloads (msg) == 2);
+
+  p = (GstMIKEYPayloadKEMAC *) gst_mikey_message_get_payload (msg, 1);
+  fail_unless (p->enc_alg == GST_MIKEY_ENC_NULL);
+  fail_unless (p->mac_alg == GST_MIKEY_MAC_NULL);
+  fail_unless (gst_mikey_payload_kemac_get_n_sub (&p->pt) == 1);
+
+  fail_unless ((cp = gst_mikey_message_get_payload (msg, 0)) != NULL);
+  fail_unless (cp->type == GST_MIKEY_PT_T);
+  fail_unless ((cp = gst_mikey_message_get_payload (msg, 1)) != NULL);
+  fail_unless (cp->type == GST_MIKEY_PT_KEMAC);
+
+  bytes = gst_mikey_message_to_bytes (msg, NULL, NULL);
+  gst_mikey_message_free (msg);
+
+  msg = gst_mikey_message_new_from_bytes (bytes, NULL, NULL);
+  fail_unless (msg != NULL);
+  g_bytes_unref (bytes);
+  fail_unless (gst_mikey_message_get_n_payloads (msg) == 2);
+  fail_unless ((cp = gst_mikey_message_get_payload (msg, 0)) != NULL);
+  fail_unless (cp->type == GST_MIKEY_PT_T);
+  fail_unless ((cp = gst_mikey_message_get_payload (msg, 1)) != NULL);
+  fail_unless (cp->type == GST_MIKEY_PT_KEMAC);
+
+  fail_unless ((cp2 = gst_mikey_payload_kemac_get_sub (cp, 0)) != NULL);
+  fail_unless (cp2->type == GST_MIKEY_PT_KEY_DATA);
+  pkd = (GstMIKEYPayloadKeyData *) cp2;
+
+  fail_unless (pkd->key_type == GST_MIKEY_KD_TEK);
+  fail_unless (pkd->key_len == sizeof (edata));
+  fail_unless (memcmp (pkd->key_data, edata, sizeof (edata)) == 0);
+  fail_unless (pkd->salt_len == 0);
+  fail_unless (pkd->salt_data == 0);
+  fail_unless (pkd->kv_type == GST_MIKEY_KV_NULL);
+
+
+  gst_mikey_message_free (msg);
+}
+
+GST_END_TEST
+/*
+ * End of test cases
+ */
+static Suite *
+mikey_suite (void)
+{
+  Suite *s = suite_create ("mikey");
+  TCase *tc_chain = tcase_create ("mikey");
+
+  suite_add_tcase (s, tc_chain);
+  tcase_add_test (tc_chain, create_common);
+  tcase_add_test (tc_chain, create_payloads);
+
+  return s;
+}
+
+GST_CHECK_MAIN (mikey);
diff --git a/tests/check/libs/pbutils.c b/tests/check/libs/pbutils.c
index e39e7f4..45a7ef5 100644
--- a/tests/check/libs/pbutils.c
+++ b/tests/check/libs/pbutils.c
@@ -263,7 +263,7 @@
   "audio/x-svx", "audio/x-tta", "audio/x-ttafile",
   "audio/x-vnd.sony.atrac3", "audio/x-vorbis", "audio/x-voc", "audio/x-w64",
   "audio/x-wav", "audio/x-wavpack", "audio/x-wavpack-correction",
-  "audio/x-wms", "audio/x-voxware", "video/sp5x", "video/vivo",
+  "audio/x-wms", "audio/x-voxware", "audio/x-xi", "video/sp5x", "video/vivo",
   "video/x-4xm", "video/x-apple-video", "video/x-camtasia",
   "video/x-cdxa", "video/x-cinepak", "video/x-cirrus-logic-accupak",
   "video/x-compressed-yuv", "video/x-dirac", "subpicture/x-dvd",
diff --git a/tests/check/libs/rtp.c b/tests/check/libs/rtp.c
index 9d57dbd..2c0ffdf 100644
--- a/tests/check/libs/rtp.c
+++ b/tests/check/libs/rtp.c
@@ -131,6 +131,9 @@
   fail_unless_equals_int (gst_rtp_buffer_get_csrc (&rtp, 0), 0);
   fail_unless_equals_int (gst_rtp_buffer_get_csrc (&rtp, 1), 0);
   fail_unless_equals_int (gst_rtp_buffer_get_csrc (&rtp, 2), 0);
+  fail_unless_equals_int (gst_rtp_buffer_get_header_len (&rtp),
+      RTP_HEADER_LEN + 4 * 3);
+  fail_unless_equals_int (gst_rtp_buffer_get_payload_len (&rtp), 16);
 
   data += RTP_HEADER_LEN;       /* skip the other header stuff */
   gst_rtp_buffer_set_csrc (&rtp, 0, 0xf7c0);
@@ -931,6 +934,7 @@
   gst_rtp_buffer_unmap (&rtp);
   gst_buffer_unmap (buf, &map);
   gst_buffer_unref (buf);
+  g_bytes_unref (gb);
 
   /* create RTP buffer containing RTP packet */
   buf = gst_buffer_new_and_alloc (sizeof (rtppacket));
@@ -947,6 +951,7 @@
   fail_unless (data != NULL);
   fail_unless (size == (sizeof (rtppacket) - RTP_HEADER_LEN));
   fail_unless_equals_string ("Hello", data);
+  g_bytes_unref (gb);
 
   gst_rtp_buffer_unmap (&rtp);
   gst_buffer_unmap (buf, &map);
@@ -955,6 +960,24 @@
 
 GST_END_TEST;
 
+
+GST_START_TEST (test_rtp_buffer_empty_payload)
+{
+  GstRTPBuffer rtp = { NULL };
+  GstBuffer *paybuf, *outbuf;
+
+  paybuf = gst_rtp_buffer_new_allocate (0, 0, 0);
+
+  gst_rtp_buffer_map (paybuf, GST_MAP_READ, &rtp);
+  outbuf = gst_rtp_buffer_get_payload_buffer (&rtp);
+  gst_rtp_buffer_unmap (&rtp);
+
+  gst_buffer_unref (paybuf);
+  gst_buffer_unref (outbuf);
+}
+
+GST_END_TEST;
+
 static Suite *
 rtp_suite (void)
 {
@@ -974,6 +997,7 @@
 
   tcase_add_test (tc_chain, test_rtp_buffer_get_payload_bytes);
   tcase_add_test (tc_chain, test_rtp_buffer_get_extension_bytes);
+  tcase_add_test (tc_chain, test_rtp_buffer_empty_payload);
 
   //tcase_add_test (tc_chain, test_rtp_buffer_list);
 
diff --git a/tests/check/libs/rtpbasedepayload.c b/tests/check/libs/rtpbasedepayload.c
new file mode 100644
index 0000000..71a1d85
--- /dev/null
+++ b/tests/check/libs/rtpbasedepayload.c
@@ -0,0 +1,1247 @@
+/* GStreamer RTP base depayloader unit tests
+ * Copyright (C) 2014 Sebastian Rasmussen <sebras@hotmail.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General
+ * Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include <gst/gst.h>
+#include <gst/check/gstcheck.h>
+#include <gst-libs/gst/rtp/gstrtpbuffer.h>
+#include <gst-libs/gst/rtp/gstrtpbasedepayload.h>
+
+#define DEFAULT_CLOCK_RATE (42)
+
+/* GstRtpDummyDepay */
+
+#define GST_TYPE_RTP_DUMMY_DEPAY \
+  (gst_rtp_dummy_depay_get_type())
+#define GST_RTP_DUMMY_DEPAY(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_RTP_DUMMY_DEPAY,GstRtpDummyDepay))
+#define GST_RTP_DUMMY_DEPAY_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_RTP_DUMMY_DEPAY,GstRtpDummyDepayClass))
+#define GST_IS_RTP_DUMMY_DEPAY(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_RTP_DUMMY_DEPAY))
+#define GST_IS_RTP_DUMMY_DEPAY_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RTP_DUMMY_DEPAY))
+
+typedef struct _GstRtpDummyDepay GstRtpDummyDepay;
+typedef struct _GstRtpDummyDepayClass GstRtpDummyDepayClass;
+
+struct _GstRtpDummyDepay
+{
+  GstRTPBaseDepayload depayload;
+  guint64 rtptime;
+};
+
+struct _GstRtpDummyDepayClass
+{
+  GstRTPBaseDepayloadClass parent_class;
+};
+
+GType gst_rtp_dummy_depay_get_type (void);
+
+G_DEFINE_TYPE (GstRtpDummyDepay, gst_rtp_dummy_depay,
+    GST_TYPE_RTP_BASE_DEPAYLOAD);
+
+static GstBuffer *gst_rtp_dummy_depay_process (GstRTPBaseDepayload * depayload,
+    GstBuffer * buf);
+static gboolean gst_rtp_dummy_depay_set_caps (GstRTPBaseDepayload *filter,
+    GstCaps *caps);
+
+static GstStaticPadTemplate gst_rtp_dummy_depay_sink_template =
+GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS_ANY);
+
+static GstStaticPadTemplate gst_rtp_dummy_depay_src_template =
+GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS_ANY);
+
+static void
+gst_rtp_dummy_depay_class_init (GstRtpDummyDepayClass * klass)
+{
+  GstElementClass *gstelement_class;
+  GstRTPBaseDepayloadClass *gstrtpbasedepayload_class;
+
+  gstelement_class = GST_ELEMENT_CLASS (klass);
+  gstrtpbasedepayload_class = GST_RTP_BASE_DEPAYLOAD_CLASS (klass);
+
+  gst_element_class_add_pad_template (gstelement_class,
+      gst_static_pad_template_get (&gst_rtp_dummy_depay_sink_template));
+  gst_element_class_add_pad_template (gstelement_class,
+      gst_static_pad_template_get (&gst_rtp_dummy_depay_src_template));
+
+  gstrtpbasedepayload_class->process = gst_rtp_dummy_depay_process;
+  gstrtpbasedepayload_class->set_caps = gst_rtp_dummy_depay_set_caps;
+}
+
+static void
+gst_rtp_dummy_depay_init (GstRtpDummyDepay * depay)
+{
+  depay->rtptime = 0;
+}
+
+static GstRtpDummyDepay *
+rtp_dummy_depay_new (void)
+{
+  return g_object_new (GST_TYPE_RTP_DUMMY_DEPAY, NULL);
+}
+
+static GstBuffer *
+gst_rtp_dummy_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
+{
+  GstRTPBuffer rtp = { NULL };
+  GstBuffer *outbuf;
+  guint32 rtptime;
+  guint i;
+
+  GST_LOG ("depayloading buffer pts=%" GST_TIME_FORMAT " offset=%"
+  G_GUINT64_FORMAT " memories=%d", GST_TIME_ARGS (GST_BUFFER_PTS(buf)),
+  GST_BUFFER_OFFSET(buf), gst_buffer_n_memory (buf));
+
+  for (i = 0; i < gst_buffer_n_memory (buf); i++) {
+    GstMemory *mem = gst_buffer_get_memory (buf, 0);
+    gsize size, offset, maxsize;
+    size = gst_memory_get_sizes (mem, &offset, &maxsize);
+    GST_LOG ("\tsize=%zd offset=%zd maxsize=%zd", size, offset, maxsize);
+    gst_memory_unref (mem);
+  }
+
+  gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
+  outbuf = gst_rtp_buffer_get_payload_buffer (&rtp);
+  rtptime = gst_rtp_buffer_get_timestamp (&rtp);
+  gst_rtp_buffer_unmap (&rtp);
+
+  GST_BUFFER_PTS (outbuf) = GST_BUFFER_PTS (buf);
+  GST_BUFFER_OFFSET (outbuf) = GST_BUFFER_OFFSET (buf);
+
+  GST_LOG ("depayloaded buffer pts=%" GST_TIME_FORMAT " offset=%"
+      G_GUINT64_FORMAT " rtptime=%" G_GUINT32_FORMAT " memories=%d",
+      GST_TIME_ARGS (GST_BUFFER_PTS(outbuf)),
+      GST_BUFFER_OFFSET(outbuf), rtptime, gst_buffer_n_memory (buf));
+
+  for (i = 0; i < gst_buffer_n_memory (buf); i++) {
+    GstMemory *mem = gst_buffer_get_memory (buf, 0);
+    gsize size, offset, maxsize;
+    size = gst_memory_get_sizes (mem, &offset, &maxsize);
+    GST_LOG ("\tsize=%zd offset=%zd maxsize=%zd", size, offset, maxsize);
+    gst_memory_unref (mem);
+  }
+
+  return outbuf;
+}
+
+static gboolean
+gst_rtp_dummy_depay_set_caps (GstRTPBaseDepayload *filter, GstCaps *caps)
+{
+  GstEvent *event;
+  event = gst_event_new_caps (caps);
+  gst_pad_push_event (filter->srcpad, event);
+  return TRUE;
+}
+
+/* Helper functions and global state */
+
+static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS_ANY);
+
+static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS_ANY);
+
+typedef struct State State;
+
+struct State {
+  GstElement *element;
+  GstPad *sinkpad;
+  GstPad *srcpad;
+};
+
+static GList *events;
+
+static gboolean
+event_func (GstPad * pad, GstObject * noparent, GstEvent * event)
+{
+  events = g_list_append (events, gst_event_ref (event));
+  return gst_pad_event_default (pad, noparent, event);
+}
+
+static void drop_events (void)
+{
+  while (events != NULL) {
+    gst_event_unref (GST_EVENT (events->data));
+    events = g_list_delete_link (events, events);
+  }
+}
+
+static void validate_events_received (guint received)
+{
+  fail_unless_equals_int (g_list_length (events), received);
+}
+
+static void validate_event (guint index, const gchar *name,
+    const gchar *field, ...)
+{
+  GstEvent *event;
+  va_list var_args;
+
+  fail_if (index >= g_list_length (events));
+  event = GST_EVENT (g_list_nth_data (events, index));
+  fail_if (event == NULL);
+
+  GST_TRACE ("%" GST_PTR_FORMAT, event);
+
+  fail_unless_equals_string (GST_EVENT_TYPE_NAME (event), name);
+
+  va_start (var_args, field);
+  while (field) {
+    if (!g_strcmp0 (field, "timestamp")) {
+      GstClockTime expected = va_arg (var_args, GstClockTime);
+      GstClockTime timestamp, duration;
+      gst_event_parse_gap (event, &timestamp, &duration);
+      fail_unless_equals_uint64 (timestamp, expected);
+    } else if (!g_strcmp0 (field, "duration")) {
+      GstClockTime expected = va_arg (var_args, GstClockTime);
+      GstClockTime timestamp, duration;
+      gst_event_parse_gap (event, &timestamp, &duration);
+      fail_unless_equals_uint64 (duration, expected);
+    } else if (!g_strcmp0 (field, "time")) {
+      GstClockTime expected = va_arg (var_args, GstClockTime);
+      const GstSegment *segment;
+      gst_event_parse_segment (event, &segment);
+      fail_unless_equals_uint64 (segment->time, expected);
+    } else if (!g_strcmp0 (field, "start")) {
+      GstClockTime expected = va_arg (var_args, GstClockTime);
+      const GstSegment *segment;
+      gst_event_parse_segment (event, &segment);
+      fail_unless_equals_uint64 (segment->start, expected);
+    } else if (!g_strcmp0 (field, "stop")) {
+      GstClockTime expected = va_arg (var_args, GstClockTime);
+      const GstSegment *segment;
+      gst_event_parse_segment (event, &segment);
+      fail_unless_equals_uint64 (segment->stop, expected);
+    } else if (!g_strcmp0 (field, "applied-rate")) {
+      gdouble expected = va_arg (var_args, gdouble);
+      const GstSegment *segment;
+      gst_event_parse_segment (event, &segment);
+      fail_unless_equals_uint64 (segment->applied_rate, expected);
+    } else if (!g_strcmp0 (field, "rate")) {
+      gdouble expected = va_arg (var_args, gdouble);
+      const GstSegment *segment;
+      gst_event_parse_segment (event, &segment);
+      fail_unless_equals_uint64 (segment->rate, expected);
+    } else if (!g_strcmp0 (field, "media-type")) {
+      const gchar *expected = va_arg (var_args, const gchar *);
+      GstCaps *caps;
+      const gchar *media_type;
+      gst_event_parse_caps (event, &caps);
+      media_type = gst_structure_get_name (gst_caps_get_structure (caps, 0));
+      fail_unless_equals_string (media_type, expected);
+    } else if (!g_strcmp0 (field, "npt-start")) {
+      GstClockTime expected = va_arg (var_args, GstClockTime);
+      GstCaps *caps;
+      GstClockTime start;
+      gst_event_parse_caps (event, &caps);
+      fail_unless (gst_structure_get_clock_time (
+            gst_caps_get_structure (caps, 0), "npt-start", &start));
+      fail_unless_equals_uint64 (start, expected);
+    } else if (!g_strcmp0 (field, "npt-stop")) {
+      GstClockTime expected = va_arg (var_args, GstClockTime);
+      GstCaps *caps;
+      GstClockTime stop;
+      gst_event_parse_caps (event, &caps);
+      fail_unless (gst_structure_get_clock_time (
+            gst_caps_get_structure (caps, 0), "npt-stop", &stop));
+      fail_unless_equals_uint64 (stop, expected);
+    } else if (!g_strcmp0 (field, "play-speed")) {
+      gdouble expected = va_arg (var_args, gdouble);
+      GstCaps *caps;
+      gdouble speed;
+      gst_event_parse_caps (event, &caps);
+      fail_unless (gst_structure_get_double (
+            gst_caps_get_structure (caps, 0), "play-speed", &speed));
+      fail_unless (speed == expected);
+    } else if (!g_strcmp0 (field, "play-scale")) {
+      gdouble expected = va_arg (var_args, gdouble);
+      GstCaps *caps;
+      gdouble scale;
+      gst_event_parse_caps (event, &caps);
+      fail_unless (gst_structure_get_double (
+            gst_caps_get_structure (caps, 0), "play-scale", &scale));
+      fail_unless (scale == expected);
+    } else {
+      fail ("test cannot validate unknown event field '%s'", field);
+    }
+    field = va_arg (var_args, const gchar *);
+  }
+  va_end (var_args);
+}
+
+#define push_rtp_buffer(state, field, ...) \
+	push_rtp_buffer_full ((state), GST_FLOW_OK, (field), __VA_ARGS__)
+#define push_rtp_buffer_fails(state, error, field, ...) \
+        push_rtp_buffer_full ((state), (error), (field), __VA_ARGS__)
+
+static void push_rtp_buffer_full (State *state, GstFlowReturn expected,
+    const gchar *field, ...)
+{
+  GstBuffer *buf = gst_rtp_buffer_new_allocate (0, 0, 0);
+  GstRTPBuffer rtp = { NULL };
+  gboolean mapped = FALSE;
+  va_list var_args;
+
+  va_start (var_args, field);
+  while (field) {
+    if (!g_strcmp0 (field, "pts")) {
+      GstClockTime pts = va_arg (var_args, GstClockTime);
+      GST_BUFFER_PTS (buf) = pts;
+    } else if (!g_strcmp0 (field, "offset")) {
+      guint64 offset = va_arg (var_args, guint64);
+      GST_BUFFER_OFFSET (buf) = offset;
+    } else if (!g_strcmp0 (field, "discont")) {
+      gboolean discont = va_arg (var_args, gboolean);
+      if (discont) {
+        GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_DISCONT);
+      } else {
+        GST_BUFFER_FLAG_UNSET (buf, GST_BUFFER_FLAG_DISCONT);
+      }
+    } else {
+      if (!mapped) {
+        gst_rtp_buffer_map (buf, GST_MAP_WRITE, &rtp);
+        mapped = TRUE;
+      }
+      if (!g_strcmp0 (field, "rtptime")) {
+        guint32 rtptime = va_arg (var_args, guint32);
+        gst_rtp_buffer_set_timestamp (&rtp, rtptime);
+      } else if (!g_strcmp0 (field, "payload-type")) {
+        guint payload_type = va_arg (var_args, guint);
+        gst_rtp_buffer_set_payload_type (&rtp, payload_type);
+      } else if (!g_strcmp0 (field, "seq")) {
+        guint seq = va_arg (var_args, guint);
+        gst_rtp_buffer_set_seq (&rtp, seq);
+      } else if (!g_strcmp0 (field, "ssrc")) {
+        guint32 ssrc = va_arg (var_args, guint32);
+        gst_rtp_buffer_set_ssrc (&rtp, ssrc);
+      } else {
+        fail ("test cannot set unknown buffer field '%s'", field);
+      }
+    }
+    field = va_arg (var_args, const gchar *);
+  }
+  va_end (var_args);
+
+  if (mapped) {
+    gst_rtp_buffer_unmap (&rtp);
+  }
+
+  fail_unless_equals_int (gst_pad_push (state->srcpad, buf), expected);
+}
+
+#define push_buffer(state, field, ...) \
+	push_buffer_full ((state), GST_FLOW_OK, (field), __VA_ARGS__)
+
+static void push_buffer_full (State *state, GstFlowReturn expected,
+    const gchar *field, ...)
+{
+  GstBuffer *buf = gst_buffer_new_allocate (0, 0, 0);
+  va_list var_args;
+
+  va_start (var_args, field);
+  while (field) {
+    if (!g_strcmp0 (field, "pts")) {
+      GstClockTime pts = va_arg (var_args, GstClockTime);
+      GST_BUFFER_PTS (buf) = pts;
+    } else if (!g_strcmp0 (field, "offset")) {
+      guint64 offset = va_arg (var_args, guint64);
+      GST_BUFFER_OFFSET (buf) = offset;
+    } else if (!g_strcmp0 (field, "discont")) {
+      gboolean discont = va_arg (var_args, gboolean);
+      if (discont) {
+        GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_DISCONT);
+      } else {
+        GST_BUFFER_FLAG_UNSET (buf, GST_BUFFER_FLAG_DISCONT);
+      }
+    } else {
+      fail ("test cannot set unknown buffer field '%s'", field);
+    }
+    field = va_arg (var_args, const gchar *);
+  }
+  va_end (var_args);
+
+  fail_unless_equals_int (gst_pad_push (state->srcpad, buf), expected);
+}
+
+static void validate_buffers_received (guint received)
+{
+  fail_unless_equals_int (g_list_length (buffers), received);
+}
+
+static void validate_buffer (guint index, const gchar *field, ...)
+{
+  GstBuffer *buf;
+  va_list var_args;
+
+  fail_if (index >= g_list_length (buffers));
+  buf = GST_BUFFER (g_list_nth_data (buffers, (index)));
+  fail_if (buf == NULL);
+
+  GST_TRACE ("%" GST_PTR_FORMAT, buf);
+
+  va_start (var_args, field);
+  while (field) {
+    if (!g_strcmp0 (field, "pts")) {
+      GstClockTime pts = va_arg (var_args, GstClockTime);
+      fail_unless_equals_uint64 (GST_BUFFER_PTS (buf), pts);
+    } else if (!g_strcmp0 (field, "offset")) {
+      guint64 offset = va_arg (var_args, guint64);
+      fail_unless_equals_uint64 (GST_BUFFER_OFFSET(buf), offset);
+    } else if (!g_strcmp0 (field, "discont")) {
+      gboolean discont = va_arg (var_args, gboolean);
+      if (discont) {
+        fail_unless (GST_BUFFER_FLAG_IS_SET (buf, GST_BUFFER_FLAG_DISCONT));
+      } else {
+        fail_if (GST_BUFFER_FLAG_IS_SET (buf, GST_BUFFER_FLAG_DISCONT));
+      }
+    } else {
+      fail ("test cannot validate unknown buffer field '%s'", field);
+    }
+    field = va_arg (var_args, const gchar *);
+  }
+  va_end (var_args);
+}
+
+static State *create_depayloader (const gchar *caps_str,
+    const gchar *property, ...)
+{
+  va_list var_args;
+  GstCaps *caps;
+  State *state;
+
+  state = g_new0 (State, 1);
+
+  state->element = GST_ELEMENT (rtp_dummy_depay_new ());
+  fail_unless (GST_IS_RTP_DUMMY_DEPAY (state->element));
+
+  va_start (var_args, property);
+  g_object_set_valist (G_OBJECT (state->element), property, var_args);
+  va_end (var_args);
+
+  state->srcpad = gst_check_setup_src_pad (state->element, &srctemplate);
+  state->sinkpad = gst_check_setup_sink_pad (state->element, &sinktemplate);
+
+  fail_unless (gst_pad_set_active (state->srcpad, TRUE));
+  fail_unless (gst_pad_set_active (state->sinkpad, TRUE));
+
+  if (caps_str) {
+    caps = gst_caps_from_string (caps_str);
+  } else {
+    caps = NULL;
+  }
+  gst_check_setup_events (state->srcpad, state->element, caps, GST_FORMAT_TIME);
+  if (caps) {
+    gst_caps_unref (caps);
+  }
+
+  gst_pad_set_chain_function (state->sinkpad, gst_check_chain_func);
+  gst_pad_set_event_function (state->sinkpad, event_func);
+
+  return state;
+}
+
+static void set_state (State *state, GstState new_state)
+{
+  fail_unless_equals_int (gst_element_set_state (state->element, new_state),
+      GST_STATE_CHANGE_SUCCESS);
+}
+
+static void packet_lost (State *state, GstClockTime timestamp,
+    GstClockTime duration)
+{
+  GstEvent *event;
+  guint seqnum = 0x4243;
+  gboolean late = TRUE;
+  guint retries = 42;
+
+  event = gst_event_new_custom (GST_EVENT_CUSTOM_DOWNSTREAM,
+    gst_structure_new ("GstRTPPacketLost",
+      "seqnum", G_TYPE_UINT, seqnum,
+      "timestamp", G_TYPE_UINT64, timestamp,
+      "duration", G_TYPE_UINT64, duration,
+      "late", G_TYPE_BOOLEAN, late,
+      "retry", G_TYPE_UINT, retries,
+      NULL));;
+
+  fail_unless (gst_pad_push_event (state->srcpad, event));
+}
+
+static void reconfigure_caps (State *state, const gchar *caps_str)
+{
+  GstCaps *newcaps;
+  GstEvent *event;
+  newcaps = gst_caps_from_string (caps_str);
+  event = gst_event_new_caps (newcaps);
+  gst_caps_unref (newcaps);
+  fail_unless (gst_pad_push_event (state->srcpad, event));
+}
+
+static void flush_pipeline (State *state)
+{
+  GstEvent *event;
+  GstSegment segment;
+  event = gst_event_new_flush_start ();
+  fail_unless (gst_pad_push_event (state->srcpad, event));
+  event = gst_event_new_flush_stop (TRUE);
+  fail_unless (gst_pad_push_event (state->srcpad, event));
+  gst_segment_init (&segment, GST_FORMAT_TIME);
+  event = gst_event_new_segment (&segment);
+  fail_unless (gst_pad_push_event (state->srcpad, event));
+}
+
+static void destroy_depayloader (State *state)
+{
+  gst_check_teardown_sink_pad (state->element);
+  gst_check_teardown_src_pad (state->element);
+
+  gst_check_drop_buffers ();
+  drop_events ();
+
+  g_object_unref (state->element);
+
+  g_free (state);
+}
+
+/* Tests */
+
+/* send two RTP packets having sequential sequence numbers and timestamps
+ * differing by DEFAULT_CLOCK_RATE. the depayloader first pushes the normal
+ * stream-start, caps and segment events downstream before processing each RTP
+ * packet and pushing a corresponding buffer. PTS will be carried over from the
+ * RTP packets by the payloader to the buffers. because the sequence numbers are
+ * sequential then GST_BUFFER_FLAG_DISCONT will not be set for either buffer.
+ */
+GST_START_TEST (rtp_base_depayload_buffer_test)
+{
+  State *state;
+
+  state = create_depayloader ("application/x-rtp", NULL);
+
+  set_state (state, GST_STATE_PLAYING);
+
+  push_rtp_buffer (state,
+      "pts", 0 * GST_SECOND,
+      "rtptime", G_GUINT64_CONSTANT (0x1234),
+      "seq", 0x4242,
+      NULL);
+
+  push_rtp_buffer (state,
+      "pts", 1 * GST_SECOND,
+      "rtptime", G_GUINT64_CONSTANT (0x1234) + 1 * DEFAULT_CLOCK_RATE,
+      "seq", 0x4242 + 1,
+      NULL);
+
+  set_state (state, GST_STATE_NULL);
+
+  validate_buffers_received (2);
+
+  validate_buffer (0,
+      "pts", 0 * GST_SECOND,
+      "discont", FALSE,
+      NULL);
+
+  validate_buffer (1,
+      "pts", 1 * GST_SECOND,
+      "discont", FALSE,
+      NULL);
+
+  validate_events_received (3);
+
+  validate_event (0, "stream-start",
+      NULL);
+
+  validate_event (1, "caps",
+      "media-type", "application/x-rtp",
+      NULL);
+
+  validate_event (2, "segment",
+      "time", G_GUINT64_CONSTANT (0),
+      "start", G_GUINT64_CONSTANT (0),
+      "stop", G_MAXUINT64,
+      NULL);
+
+  destroy_depayloader (state);
+}
+
+GST_END_TEST
+
+/* the intent with this test is to provide the depayloader with a buffer that
+ * does not contain an RTP header. this makes it impossible for the depayloader
+ * to depayload the incoming RTP packet, yet the stream-start and caps events
+ * will still be pushed.
+ */
+GST_START_TEST (rtp_base_depayload_invalid_rtp_packet_test)
+{
+  State *state;
+
+  state = create_depayloader ("application/x-rtp", NULL);
+
+  set_state (state, GST_STATE_PLAYING);
+
+  push_buffer (state,
+      "pts", 0 * GST_SECOND,
+      "offset", GST_BUFFER_OFFSET_NONE,
+      NULL);
+
+  set_state (state, GST_STATE_NULL);
+
+  validate_buffers_received (0);
+
+  validate_events_received (2);
+
+  validate_event (0, "stream-start",
+      NULL);
+
+  validate_event (1, "caps",
+      "media-type", "application/x-rtp",
+      NULL);
+
+  destroy_depayloader (state);
+}
+
+GST_END_TEST
+
+/* validate what happens when a depayloader is provided with two RTP packets
+ * sent after each other that do not have sequential sequence numbers. in this
+ * case the depayloader should be able to depayload both first and the second
+ * buffer, but the second buffer will have GST_BUFFER_FLAG_DISCONT set to
+ * indicate that the was a discontinuity in the stream. the initial events are
+ * pushed prior to the buffers arriving so they should be unaffected by the gap
+ * in sequence numbers.
+ */
+GST_START_TEST (rtp_base_depayload_with_gap_test)
+{
+  State *state;
+
+  state = create_depayloader ("application/x-rtp", NULL);
+
+  set_state (state, GST_STATE_PLAYING);
+
+  push_rtp_buffer (state,
+      "pts", 0 * GST_SECOND,
+      "rtptime", G_GUINT64_CONSTANT (0x43214321),
+      "seq", 0x4242,
+      NULL);
+
+  push_rtp_buffer (state,
+      "pts", 1 * GST_SECOND,
+      "rtptime", G_GUINT64_CONSTANT (0x43214321) + 1 * DEFAULT_CLOCK_RATE,
+      "seq", 0x4242 + 2,
+      NULL);
+
+  set_state (state, GST_STATE_NULL);
+
+  validate_buffers_received (2);
+
+  validate_buffer (0,
+      "pts", 0 * GST_SECOND,
+      "discont", FALSE,
+      NULL);
+
+  validate_buffer (1,
+      "pts", 1 * GST_SECOND,
+      "discont", TRUE,
+      NULL);
+
+  validate_events_received (3);
+
+  validate_event (0, "stream-start",
+      NULL);
+
+  validate_event (1, "caps",
+      "media-type", "application/x-rtp",
+      NULL);
+
+  validate_event (2, "segment",
+      "time", G_GUINT64_CONSTANT (0),
+      "start", G_GUINT64_CONSTANT (0),
+      "stop", G_MAXUINT64,
+      NULL);
+
+  destroy_depayloader (state);
+}
+
+GST_END_TEST
+
+/* two RTP packets are pushed in this test, and while the sequence numbers are
+ * sequential they are reversed. the expectation is that the depayloader will be
+ * able to depayload the first RTP packet, but once the second RTP packet
+ * arrives it will be discarded because it arrived too late. the initial events
+ * should be unaffected by the reversed buffers.
+ */
+GST_START_TEST (rtp_base_depayload_reversed_test)
+{
+  State *state;
+
+  state = create_depayloader ("application/x-rtp", NULL);
+
+  set_state (state, GST_STATE_PLAYING);
+
+  push_rtp_buffer (state,
+      "pts", 0 * GST_SECOND,
+      "rtptime", G_GUINT64_CONSTANT (0x43214321),
+      "seq", 0x4242,
+      NULL);
+
+  push_rtp_buffer (state,
+      "pts", 1 * GST_SECOND,
+      "rtptime", G_GUINT64_CONSTANT (0x43214321) + 1 * DEFAULT_CLOCK_RATE,
+      "seq", 0x4242 - 1,
+      NULL);
+
+  set_state (state, GST_STATE_NULL);
+
+  validate_buffers_received (1);
+
+  validate_buffer (0,
+      "pts", 0 * GST_SECOND,
+      "discont", FALSE,
+      NULL);
+
+  validate_events_received (3);
+
+  validate_event (0, "stream-start",
+      NULL);
+
+  validate_event (1, "caps",
+      "media-type", "application/x-rtp",
+      NULL);
+
+  validate_event (2, "segment",
+      "time", G_GUINT64_CONSTANT (0),
+      "start", G_GUINT64_CONSTANT (0),
+      "stop", G_MAXUINT64,
+      NULL);
+
+  destroy_depayloader (state);
+}
+
+GST_END_TEST
+
+/* the intent of this test is to push two RTP packets that have reverse sequence
+ * numbers that differ significantly. the depayloader will consider RTP packets
+ * where the sequence numbers differ by more than 1000 to indicate that the
+ * source of the RTP packets has been restarted. therefore it will let both
+ * depayloaded buffers through, but the latter buffer marked
+ * GST_BUFFER_FLAG_DISCONT to indicate the discontinuity in the stream. the
+ * initial events should be unaffected by the reversed buffers.
+ */
+GST_START_TEST (rtp_base_depayload_old_reversed_test)
+{
+  State *state;
+
+  state = create_depayloader ("application/x-rtp", NULL);
+
+  set_state (state, GST_STATE_PLAYING);
+
+  push_rtp_buffer (state,
+      "pts", 0 * GST_SECOND,
+      "rtptime", G_GUINT64_CONSTANT (0x43214321),
+      "seq", 0x4242,
+      NULL);
+
+  push_rtp_buffer (state,
+      "pts", 1 * GST_SECOND,
+      "rtptime", G_GUINT64_CONSTANT (0x43214321) + 1 * DEFAULT_CLOCK_RATE,
+      "seq", 0x4242 - 1000,
+      NULL);
+
+  set_state (state, GST_STATE_NULL);
+
+  validate_buffers_received (2);
+
+  validate_buffer (0,
+      "pts", 0 * GST_SECOND,
+      "discont", FALSE,
+      NULL);
+
+  validate_buffer (1,
+      "pts", 1 * GST_SECOND,
+      "discont", TRUE,
+      NULL);
+
+  validate_events_received (3);
+
+  validate_event (0, "stream-start",
+      NULL);
+
+  validate_event (1, "caps",
+      "media-type", "application/x-rtp",
+      NULL);
+
+  validate_event (2, "segment",
+      "time", G_GUINT64_CONSTANT (0),
+      "start", G_GUINT64_CONSTANT (0),
+      "stop", G_MAXUINT64,
+      NULL);
+
+  destroy_depayloader (state);
+}
+
+GST_END_TEST
+
+/* a depayloader that has not received any caps event will not be able to
+ * process any incoming RTP packet. instead pushing an RTP packet should result
+ * in the expected error.
+ */
+GST_START_TEST (rtp_base_depayload_without_negotiation_test)
+{
+  State *state;
+
+  state = create_depayloader (NULL, NULL);
+
+  set_state (state, GST_STATE_PLAYING);
+
+  push_rtp_buffer_fails (state, GST_FLOW_NOT_NEGOTIATED,
+      "pts", 0 * GST_SECOND,
+      "rtptime", G_GUINT64_CONSTANT (0x1234),
+      "seq", 0x4242,
+      NULL);
+
+  set_state (state, GST_STATE_NULL);
+
+  validate_buffers_received (0);
+
+  validate_events_received (1);
+
+  validate_event (0, "stream-start",
+      NULL);
+
+  destroy_depayloader (state);
+}
+
+GST_END_TEST
+
+/* a depayloader that receives the downstream event GstRTPPacketLost should
+ * respond by emitting a gap event with the corresponding timestamp and
+ * duration. the initial events are unaffected, but are succeeded by the added
+ * gap event.
+ */
+GST_START_TEST (rtp_base_depayload_packet_lost_test)
+{
+  State *state;
+
+  state = create_depayloader ("application/x-rtp", NULL);
+
+  set_state (state, GST_STATE_PLAYING);
+
+  push_rtp_buffer (state,
+      "pts", 0 * GST_SECOND,
+      "rtptime", G_GUINT64_CONSTANT (0x1234),
+      "seq", 0x4242,
+      NULL);
+
+  packet_lost (state, 1 * GST_SECOND, GST_SECOND);
+
+  push_rtp_buffer (state,
+      "pts", 2 * GST_SECOND,
+      "rtptime", G_GUINT64_CONSTANT (0x1234) + 2 * DEFAULT_CLOCK_RATE,
+      "seq", 0x4242 + 2,
+      NULL);
+
+  set_state (state, GST_STATE_NULL);
+
+  validate_buffers_received (2);
+
+  validate_buffer (0,
+      "pts", 0 * GST_SECOND,
+      "discont", FALSE,
+      NULL);
+
+  validate_buffer (1,
+      "pts", 2 * GST_SECOND,
+      "discont", TRUE,
+      NULL);
+
+  validate_events_received (4);
+
+  validate_event (0, "stream-start",
+      NULL);
+
+  validate_event (1, "caps",
+      "media-type", "application/x-rtp",
+      NULL);
+
+  validate_event (2, "segment",
+      "time", G_GUINT64_CONSTANT (0),
+      "start", G_GUINT64_CONSTANT (0),
+      "stop", G_MAXUINT64,
+      NULL);
+
+  validate_event (3, "gap",
+      "timestamp", 1 * GST_SECOND,
+      "duration", GST_SECOND,
+      NULL);
+
+  destroy_depayloader (state);
+}
+
+GST_END_TEST
+
+/* a depayloader that receives identical caps events simply ignores the latter
+ * events without propagating them downstream.
+ */
+GST_START_TEST (rtp_base_depayload_repeated_caps_test)
+{
+  State *state;
+
+  state = create_depayloader ("application/x-rtp", NULL);
+
+  set_state (state, GST_STATE_PLAYING);
+
+  push_rtp_buffer (state,
+      "pts", 0 * GST_SECOND,
+      "rtptime", G_GUINT64_CONSTANT (0x1234),
+      "seq", 0x4242,
+      NULL);
+
+  reconfigure_caps (state, "application/x-rtp");
+
+  push_rtp_buffer (state,
+      "pts", 1 * GST_SECOND,
+      "rtptime", G_GUINT64_CONSTANT (0x1234) + 1 * DEFAULT_CLOCK_RATE,
+      "seq", 0x4242 + 1,
+      NULL);
+
+  set_state (state, GST_STATE_NULL);
+
+  validate_buffers_received (2);
+
+  validate_buffer (0,
+      "pts", 0 * GST_SECOND,
+      "discont", FALSE,
+      NULL);
+
+  validate_buffer (1,
+      "pts", 1 * GST_SECOND,
+      "discont", FALSE,
+      NULL);
+
+  validate_events_received (3);
+
+  validate_event (0, "stream-start",
+      NULL);
+
+  validate_event (1, "caps",
+      "media-type", "application/x-rtp",
+      NULL);
+
+  validate_event (2, "segment",
+      "time", G_GUINT64_CONSTANT (0),
+      "start", G_GUINT64_CONSTANT (0),
+      "stop", G_MAXUINT64,
+      NULL);
+
+  destroy_depayloader (state);
+}
+
+GST_END_TEST
+/* when a depayloader receives new caps events with npt-start and npt-stop times
+ * it should save these timestamps as they should affect the next segment event
+ * being pushed by the depayloader. a new segment event is not pushed by the
+ * depayloader until a flush_stop event and a succeeding segment event are
+ * received. of course the intial event are unaffected, as is the incoming caps
+ * event.
+ */
+GST_START_TEST (rtp_base_depayload_npt_test)
+{
+  State *state;
+
+  state = create_depayloader ("application/x-rtp", NULL);
+
+  set_state (state, GST_STATE_PLAYING);
+
+  push_rtp_buffer (state,
+      "pts", 0 * GST_SECOND,
+      "rtptime", G_GUINT64_CONSTANT (0x1234),
+      "seq", 0x4242,
+      NULL);
+
+  reconfigure_caps (state,
+      "application/x-rtp, npt-start=(guint64)1234, npt-stop=(guint64)4321");
+
+  flush_pipeline (state);
+
+  push_rtp_buffer (state,
+      "pts", 1 * GST_SECOND,
+      "rtptime", G_GUINT64_CONSTANT (0x1234) + 1 * DEFAULT_CLOCK_RATE,
+      "seq", 0x4242 + 1,
+      NULL);
+
+  set_state (state, GST_STATE_NULL);
+
+  validate_buffers_received (2);
+
+  validate_buffer (0,
+      "pts", 0 * GST_SECOND,
+      "discont", FALSE,
+      NULL);
+
+  validate_buffer (1,
+      "pts", 1 * GST_SECOND,
+      "discont", FALSE,
+      NULL);
+
+  validate_events_received (7);
+
+  validate_event (0, "stream-start",
+      NULL);
+
+  validate_event (1, "caps",
+      "media-type", "application/x-rtp",
+      NULL);
+
+  validate_event (2, "segment",
+      "time", G_GUINT64_CONSTANT (0),
+      "start", G_GUINT64_CONSTANT (0),
+      "stop", G_MAXUINT64,
+      NULL);
+
+  validate_event (3, "caps",
+      "media-type", "application/x-rtp",
+      "npt-start", G_GUINT64_CONSTANT (1234),
+      "npt-stop", G_GUINT64_CONSTANT (4321),
+      NULL);
+
+  validate_event (4, "flush-start",
+      NULL);
+
+  validate_event (5, "flush-stop",
+      NULL);
+
+  validate_event (6, "segment",
+      "time", G_GUINT64_CONSTANT (1234),
+      "start", G_GUINT64_CONSTANT (0),
+      "stop", G_GUINT64_CONSTANT (4321 - 1234),
+      NULL);
+
+  destroy_depayloader (state);
+}
+
+GST_END_TEST
+
+/* when a depayloader receives a new caps event with play-scale it should save
+ * this rate as it should affect the next segment event being pushed by the
+ * depayloader. a new segment event is not pushed by the depayloader until a
+ * flush_stop event and a succeeding segment event are received. of course the
+ * intial event are unaffected, as is the incoming caps event.
+ */
+GST_START_TEST (rtp_base_depayload_play_scale_test)
+{
+  State *state;
+
+  state = create_depayloader ("application/x-rtp", NULL);
+
+  set_state (state, GST_STATE_PLAYING);
+
+  push_rtp_buffer (state,
+      "pts", 0 * GST_SECOND,
+      "rtptime", G_GUINT64_CONSTANT (0x1234),
+      "seq", 0x4242,
+      NULL);
+
+  reconfigure_caps (state,
+      "application/x-rtp, play-scale=(double)2.0");
+
+  flush_pipeline (state);
+
+  push_rtp_buffer (state,
+      "pts", 1 * GST_SECOND,
+      "rtptime", G_GUINT64_CONSTANT (0x1234) + 1 * DEFAULT_CLOCK_RATE,
+      "seq", 0x4242 + 1,
+      NULL);
+
+  set_state (state, GST_STATE_NULL);
+
+  validate_buffers_received (2);
+
+  validate_buffer (0,
+      "pts", 0 * GST_SECOND,
+      "discont", FALSE,
+      NULL);
+
+  validate_buffer (1,
+      "pts", 1 * GST_SECOND,
+      "discont", FALSE,
+      NULL);
+
+  validate_events_received (7);
+
+  validate_event (0, "stream-start",
+      NULL);
+
+  validate_event (1, "caps",
+      "media-type", "application/x-rtp",
+      NULL);
+
+  validate_event (2, "segment",
+      "time", G_GUINT64_CONSTANT (0),
+      "start", G_GUINT64_CONSTANT (0),
+      "stop", G_MAXUINT64,
+      NULL);
+
+  validate_event (3, "caps",
+      "media-type", "application/x-rtp",
+      "play-scale", 2.0,
+      NULL);
+
+  validate_event (4, "flush-start",
+      NULL);
+
+  validate_event (5, "flush-stop",
+      NULL);
+
+  validate_event (6, "segment",
+      "time", G_GUINT64_CONSTANT (0),
+      "start", G_GUINT64_CONSTANT (0),
+      "stop", G_MAXUINT64,
+      "rate", 1.0,
+      "applied-rate", 2.0,
+      NULL);
+
+  destroy_depayloader (state);
+}
+
+GST_END_TEST
+
+/* when a depayloader receives a new caps event with play-speed it should save
+ * this rate as it should affect the next segment event being pushed by the
+ * depayloader. a new segment event is not pushed by the depayloader until a
+ * flush_stop event and a succeeding segment event are received. of course the
+ * intial event are unaffected, as is the incoming caps event.
+ */
+GST_START_TEST (rtp_base_depayload_play_speed_test)
+{
+  State *state;
+
+  state = create_depayloader ("application/x-rtp", NULL);
+
+  set_state (state, GST_STATE_PLAYING);
+
+  push_rtp_buffer (state,
+      "pts", 0 * GST_SECOND,
+      "rtptime", G_GUINT64_CONSTANT (0x1234),
+      "seq", 0x4242,
+      NULL);
+
+  reconfigure_caps (state,
+      "application/x-rtp, play-speed=(double)2.0");
+
+  flush_pipeline (state);
+
+  push_rtp_buffer (state,
+      "pts", 1 * GST_SECOND,
+      "rtptime", G_GUINT64_CONSTANT (0x1234) + 1 * DEFAULT_CLOCK_RATE,
+      "seq", 0x4242 + 1,
+      NULL);
+
+  set_state (state, GST_STATE_NULL);
+
+  validate_buffers_received (2);
+
+  validate_buffer (0,
+      "pts", 0 * GST_SECOND,
+      "discont", FALSE,
+      NULL);
+
+  validate_buffer (1,
+      "pts", 1 * GST_SECOND,
+      "discont", FALSE,
+      NULL);
+
+  validate_events_received (7);
+
+  validate_event (0, "stream-start",
+      NULL);
+
+  validate_event (1, "caps",
+      "media-type", "application/x-rtp",
+      NULL);
+
+  validate_event (2, "segment",
+      "time", G_GUINT64_CONSTANT (0),
+      "start", G_GUINT64_CONSTANT (0),
+      "stop", G_MAXUINT64,
+      NULL);
+
+  validate_event (3, "caps",
+      "media-type", "application/x-rtp",
+      "play-speed", 2.0,
+      NULL);
+
+  validate_event (4, "flush-start",
+      NULL);
+
+  validate_event (5, "flush-stop",
+      NULL);
+
+  validate_event (6, "segment",
+      "time", G_GUINT64_CONSTANT (0),
+      "start", G_GUINT64_CONSTANT (0),
+      "stop", G_MAXUINT64,
+      "rate", 2.0,
+      "applied-rate", 1.0,
+      NULL);
+
+  destroy_depayloader (state);
+}
+
+GST_END_TEST
+
+static Suite *
+rtp_basepayloading_suite (void)
+{
+  Suite *s = suite_create ("rtp_base_depayloading_test");
+  TCase *tc_chain = tcase_create ("depayloading tests");
+
+  tcase_set_timeout (tc_chain, 60);
+
+  suite_add_tcase (s, tc_chain);
+  tcase_add_test (tc_chain, rtp_base_depayload_buffer_test);
+
+  tcase_add_test (tc_chain, rtp_base_depayload_invalid_rtp_packet_test);
+  tcase_add_test (tc_chain, rtp_base_depayload_with_gap_test);
+  tcase_add_test (tc_chain, rtp_base_depayload_reversed_test);
+  tcase_add_test (tc_chain, rtp_base_depayload_old_reversed_test);
+
+  tcase_add_test (tc_chain, rtp_base_depayload_without_negotiation_test);
+
+  tcase_add_test (tc_chain, rtp_base_depayload_packet_lost_test);
+
+  tcase_add_test (tc_chain, rtp_base_depayload_repeated_caps_test);
+  tcase_add_test (tc_chain, rtp_base_depayload_npt_test);
+  tcase_add_test (tc_chain, rtp_base_depayload_play_scale_test);
+  tcase_add_test (tc_chain, rtp_base_depayload_play_speed_test);
+
+  return s;
+}
+
+GST_CHECK_MAIN (rtp_basepayloading)
diff --git a/tests/check/libs/rtpbasepayload.c b/tests/check/libs/rtpbasepayload.c
new file mode 100644
index 0000000..4bc25d5
--- /dev/null
+++ b/tests/check/libs/rtpbasepayload.c
@@ -0,0 +1,1794 @@
+/* GStreamer RTP base payloader unit tests
+ * Copyright (C) 2014  Sebastian Rasmussen <sebras@hotmail.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General
+ * Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include <gst/gst.h>
+#include <gst/check/gstcheck.h>
+#include <gst-libs/gst/rtp/gstrtpbuffer.h>
+#include <gst-libs/gst/rtp/gstrtpbasepayload.h>
+
+#define DEFAULT_CLOCK_RATE (42)
+#define BUFFER_BEFORE_LIST (10)
+
+/* GstRtpDummyPay */
+
+#define GST_TYPE_RTP_DUMMY_PAY \
+  (gst_rtp_dummy_pay_get_type())
+#define GST_RTP_DUMMY_PAY(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_RTP_DUMMY_PAY,GstRtpDummyPay))
+#define GST_RTP_DUMMY_PAY_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_RTP_DUMMY_PAY,GstRtpDummyPayClass))
+#define GST_IS_RTP_DUMMY_PAY(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_RTP_DUMMY_PAY))
+#define GST_IS_RTP_DUMMY_PAY_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RTP_DUMMY_PAY))
+
+typedef struct _GstRtpDummyPay GstRtpDummyPay;
+typedef struct _GstRtpDummyPayClass GstRtpDummyPayClass;
+
+struct _GstRtpDummyPay
+{
+  GstRTPBasePayload payload;
+};
+
+struct _GstRtpDummyPayClass
+{
+  GstRTPBasePayloadClass parent_class;
+};
+
+GType gst_rtp_dummy_pay_get_type (void);
+
+G_DEFINE_TYPE (GstRtpDummyPay, gst_rtp_dummy_pay, GST_TYPE_RTP_BASE_PAYLOAD);
+
+static GstFlowReturn gst_rtp_dummy_pay_handle_buffer (GstRTPBasePayload * pay,
+    GstBuffer * buffer);
+
+static GstStaticPadTemplate gst_rtp_dummy_pay_sink_template =
+GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS_ANY);
+
+static GstStaticPadTemplate gst_rtp_dummy_pay_src_template =
+GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("application/x-rtp"));
+
+static void
+gst_rtp_dummy_pay_class_init (GstRtpDummyPayClass * klass)
+{
+  GstElementClass *gstelement_class;
+  GstRTPBasePayloadClass *gstrtpbasepayload_class;
+
+  gstelement_class = GST_ELEMENT_CLASS (klass);
+  gstrtpbasepayload_class = GST_RTP_BASE_PAYLOAD_CLASS (klass);
+
+  gst_element_class_add_pad_template (gstelement_class,
+      gst_static_pad_template_get (&gst_rtp_dummy_pay_sink_template));
+  gst_element_class_add_pad_template (gstelement_class,
+      gst_static_pad_template_get (&gst_rtp_dummy_pay_src_template));
+
+  gstrtpbasepayload_class->handle_buffer = gst_rtp_dummy_pay_handle_buffer;
+}
+
+static void
+gst_rtp_dummy_pay_init (GstRtpDummyPay * pay)
+{
+  gst_rtp_base_payload_set_options (GST_RTP_BASE_PAYLOAD (pay), "application",
+      TRUE, "dummy", DEFAULT_CLOCK_RATE);
+}
+
+static GstRtpDummyPay *
+rtp_dummy_pay_new (void)
+{
+  return g_object_new (GST_TYPE_RTP_DUMMY_PAY, NULL);
+}
+
+static GstFlowReturn
+gst_rtp_dummy_pay_handle_buffer (GstRTPBasePayload * pay, GstBuffer * buffer)
+{
+  GstBuffer *paybuffer;
+
+  GST_LOG ("payloading buffer pts=%" GST_TIME_FORMAT " offset=%"
+      G_GUINT64_FORMAT, GST_TIME_ARGS (GST_BUFFER_PTS (buffer)),
+      GST_BUFFER_OFFSET (buffer));
+
+  if (!gst_pad_has_current_caps (GST_RTP_BASE_PAYLOAD_SRCPAD (pay))) {
+    if (!gst_rtp_base_payload_set_outcaps (GST_RTP_BASE_PAYLOAD (pay),
+            "custom-caps", G_TYPE_UINT, DEFAULT_CLOCK_RATE, NULL)) {
+      gst_buffer_unref (buffer);
+      return GST_FLOW_NOT_NEGOTIATED;
+    }
+  }
+
+  paybuffer = gst_rtp_buffer_new_allocate (0, 0, 0);
+
+  GST_BUFFER_PTS (paybuffer) = GST_BUFFER_PTS (buffer);
+  GST_BUFFER_OFFSET (paybuffer) = GST_BUFFER_OFFSET (buffer);
+
+  gst_buffer_append (paybuffer, buffer);
+
+  GST_LOG ("payloaded buffer pts=%" GST_TIME_FORMAT " offset=%"
+      G_GUINT64_FORMAT, GST_TIME_ARGS (GST_BUFFER_PTS (paybuffer)),
+      GST_BUFFER_OFFSET (paybuffer));
+
+  if (GST_BUFFER_PTS (paybuffer) < BUFFER_BEFORE_LIST) {
+    return gst_rtp_base_payload_push (pay, paybuffer);
+  } else {
+    GstBufferList *list = gst_buffer_list_new ();
+    gst_buffer_list_add (list, paybuffer);
+    return gst_rtp_base_payload_push_list (pay, list);
+  }
+}
+
+/* Helper functions and global state */
+
+static GstStaticPadTemplate srctmpl = GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS_ANY);
+
+static GstStaticPadTemplate sinktmpl = GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS_ANY);
+
+static GstStaticPadTemplate special_sinktmpl = GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("application/x-rtp, payload=(int)98, ssrc=(uint)24, "
+        "timestamp-offset=(uint)212, seqnum-offset=(uint)2424"));
+
+typedef struct State State;
+
+struct State
+{
+  GstElement *element;
+  GstPad *sinkpad;
+  GstPad *srcpad;
+};
+
+static GList *events;
+
+static gboolean
+event_func (GstPad * pad, GstObject * noparent, GstEvent * event)
+{
+  events = g_list_append (events, gst_event_ref (event));
+  return gst_pad_event_default (pad, noparent, event);
+}
+
+static void
+drop_events (void)
+{
+  while (events != NULL) {
+    gst_event_unref (GST_EVENT (events->data));
+    events = g_list_delete_link (events, events);
+  }
+}
+
+static void
+validate_events_received (guint received)
+{
+  fail_unless_equals_int (g_list_length (events), received);
+}
+
+static void
+validate_event (guint index, const gchar * name, const gchar * field, ...)
+{
+  GstEvent *event;
+  va_list var_args;
+
+  fail_if (index >= g_list_length (events));
+  event = GST_EVENT (g_list_nth_data (events, index));
+  fail_if (event == NULL);
+
+  GST_TRACE ("%" GST_PTR_FORMAT, event);
+
+  fail_unless_equals_string (GST_EVENT_TYPE_NAME (event), name);
+
+  va_start (var_args, field);
+  while (field) {
+    if (!g_strcmp0 (field, "timestamp")) {
+      GstClockTime expected = va_arg (var_args, GstClockTime);
+      GstClockTime timestamp, duration;
+      gst_event_parse_gap (event, &timestamp, &duration);
+      fail_unless_equals_uint64 (timestamp, expected);
+    } else if (!g_strcmp0 (field, "duration")) {
+      GstClockTime expected = va_arg (var_args, GstClockTime);
+      GstClockTime timestamp, duration;
+      gst_event_parse_gap (event, &timestamp, &duration);
+      fail_unless_equals_uint64 (duration, expected);
+    } else if (!g_strcmp0 (field, "time")) {
+      GstClockTime expected = va_arg (var_args, GstClockTime);
+      const GstSegment *segment;
+      gst_event_parse_segment (event, &segment);
+      fail_unless_equals_uint64 (segment->time, expected);
+    } else if (!g_strcmp0 (field, "start")) {
+      GstClockTime expected = va_arg (var_args, GstClockTime);
+      const GstSegment *segment;
+      gst_event_parse_segment (event, &segment);
+      fail_unless_equals_uint64 (segment->start, expected);
+    } else if (!g_strcmp0 (field, "stop")) {
+      GstClockTime expected = va_arg (var_args, GstClockTime);
+      const GstSegment *segment;
+      gst_event_parse_segment (event, &segment);
+      fail_unless_equals_uint64 (segment->stop, expected);
+    } else if (!g_strcmp0 (field, "applied-rate")) {
+      gdouble expected = va_arg (var_args, gdouble);
+      const GstSegment *segment;
+      gst_event_parse_segment (event, &segment);
+      fail_unless_equals_uint64 (segment->applied_rate, expected);
+    } else if (!g_strcmp0 (field, "rate")) {
+      gdouble expected = va_arg (var_args, gdouble);
+      const GstSegment *segment;
+      gst_event_parse_segment (event, &segment);
+      fail_unless_equals_uint64 (segment->rate, expected);
+    } else if (!g_strcmp0 (field, "media-type")) {
+      const gchar *expected = va_arg (var_args, const gchar *);
+      GstCaps *caps;
+      const gchar *media_type;
+      gst_event_parse_caps (event, &caps);
+      media_type = gst_structure_get_name (gst_caps_get_structure (caps, 0));
+      fail_unless_equals_string (media_type, expected);
+    } else if (!g_strcmp0 (field, "npt-start")) {
+      GstClockTime expected = va_arg (var_args, GstClockTime);
+      GstCaps *caps;
+      GstClockTime start;
+      gst_event_parse_caps (event, &caps);
+      fail_unless (gst_structure_get_clock_time (gst_caps_get_structure (caps,
+                  0), "npt-start", &start));
+      fail_unless_equals_uint64 (start, expected);
+    } else if (!g_strcmp0 (field, "npt-stop")) {
+      GstClockTime expected = va_arg (var_args, GstClockTime);
+      GstCaps *caps;
+      GstClockTime stop;
+      gst_event_parse_caps (event, &caps);
+      fail_unless (gst_structure_get_clock_time (gst_caps_get_structure (caps,
+                  0), "npt-stop", &stop));
+      fail_unless_equals_uint64 (stop, expected);
+    } else if (!g_strcmp0 (field, "play-speed")) {
+      gdouble expected = va_arg (var_args, gdouble);
+      GstCaps *caps;
+      gdouble speed;
+      gst_event_parse_caps (event, &caps);
+      fail_unless (gst_structure_get_double (gst_caps_get_structure (caps, 0),
+              "play-speed", &speed));
+      fail_unless (speed == expected);
+    } else if (!g_strcmp0 (field, "play-scale")) {
+      gdouble expected = va_arg (var_args, gdouble);
+      GstCaps *caps;
+      gdouble scale;
+      gst_event_parse_caps (event, &caps);
+      fail_unless (gst_structure_get_double (gst_caps_get_structure (caps, 0),
+              "play-scale", &scale));
+      fail_unless (scale == expected);
+    } else if (!g_strcmp0 (field, "ssrc")) {
+      guint expected = va_arg (var_args, guint);
+      GstCaps *caps;
+      guint ssrc;
+      gst_event_parse_caps (event, &caps);
+      fail_unless (gst_structure_get_uint (gst_caps_get_structure (caps, 0),
+              "ssrc", &ssrc));
+      fail_unless_equals_int (ssrc, expected);
+    } else {
+      fail ("test cannot validate unknown event field '%s'", field);
+    }
+    field = va_arg (var_args, const gchar *);
+  }
+  va_end (var_args);
+}
+
+static void
+validate_normal_start_events (uint index)
+{
+  validate_event (index, "stream-start", NULL);
+
+  validate_event (index + 1, "caps", "media-type", "application/x-rtp", NULL);
+
+  validate_event (index + 2, "segment",
+      "time", G_GUINT64_CONSTANT (0),
+      "start", G_GUINT64_CONSTANT (0), "stop", G_MAXUINT64, NULL);
+}
+
+#define push_buffer(state, field, ...) \
+	push_buffer_full ((state), GST_FLOW_OK, (field), __VA_ARGS__)
+#define push_buffer_fails(state, field, ...) \
+	push_buffer_full ((state), GST_FLOW_FLUSHING, (field), __VA_ARGS__)
+
+static void
+push_buffer_full (State * state, GstFlowReturn expected,
+    const gchar * field, ...)
+{
+  GstBuffer *buf = gst_rtp_buffer_new_allocate (0, 0, 0);
+  GstRTPBuffer rtp = { NULL };
+  gboolean mapped = FALSE;
+  va_list var_args;
+
+  va_start (var_args, field);
+  while (field) {
+    if (!g_strcmp0 (field, "pts")) {
+      GstClockTime pts = va_arg (var_args, GstClockTime);
+      GST_BUFFER_PTS (buf) = pts;
+    } else if (!g_strcmp0 (field, "offset")) {
+      guint64 offset = va_arg (var_args, guint64);
+      GST_BUFFER_OFFSET (buf) = offset;
+    } else if (!g_strcmp0 (field, "discont")) {
+      gboolean discont = va_arg (var_args, gboolean);
+      if (discont) {
+        GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_DISCONT);
+      } else {
+        GST_BUFFER_FLAG_UNSET (buf, GST_BUFFER_FLAG_DISCONT);
+      }
+    } else {
+      if (!mapped) {
+        gst_rtp_buffer_map (buf, GST_MAP_WRITE, &rtp);
+        mapped = TRUE;
+      }
+      if (!g_strcmp0 (field, "rtptime")) {
+        guint32 rtptime = va_arg (var_args, guint32);
+        gst_rtp_buffer_set_timestamp (&rtp, rtptime);
+      } else if (!g_strcmp0 (field, "payload-type")) {
+        guint payload_type = va_arg (var_args, guint);
+        gst_rtp_buffer_set_payload_type (&rtp, payload_type);
+      } else if (!g_strcmp0 (field, "seq")) {
+        guint seq = va_arg (var_args, guint);
+        gst_rtp_buffer_set_seq (&rtp, seq);
+      } else if (!g_strcmp0 (field, "ssrc")) {
+        guint32 ssrc = va_arg (var_args, guint32);
+        gst_rtp_buffer_set_ssrc (&rtp, ssrc);
+      } else {
+        fail ("test cannot set unknown buffer field '%s'", field);
+      }
+    }
+    field = va_arg (var_args, const gchar *);
+  }
+  va_end (var_args);
+
+  if (mapped) {
+    gst_rtp_buffer_unmap (&rtp);
+  }
+
+  fail_unless_equals_int (gst_pad_push (state->srcpad, buf), expected);
+}
+
+static void
+push_buffer_list (State * state, const gchar * field, ...)
+{
+  GstBuffer *buf = gst_rtp_buffer_new_allocate (0, 0, 0);
+  GstRTPBuffer rtp = { NULL };
+  gboolean mapped = FALSE;
+  GstBufferList *list;
+  va_list var_args;
+
+  va_start (var_args, field);
+  while (field) {
+    if (!g_strcmp0 (field, "pts")) {
+      GstClockTime pts = va_arg (var_args, GstClockTime);
+      GST_BUFFER_PTS (buf) = pts;
+    } else if (!g_strcmp0 (field, "offset")) {
+      guint64 offset = va_arg (var_args, guint64);
+      GST_BUFFER_OFFSET (buf) = offset;
+    } else if (!g_strcmp0 (field, "discont")) {
+      gboolean discont = va_arg (var_args, gboolean);
+      if (discont) {
+        GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_DISCONT);
+      } else {
+        GST_BUFFER_FLAG_UNSET (buf, GST_BUFFER_FLAG_DISCONT);
+      }
+    } else {
+      if (!mapped) {
+        gst_rtp_buffer_map (buf, GST_MAP_WRITE, &rtp);
+        mapped = TRUE;
+      }
+      if (!g_strcmp0 (field, "rtptime")) {
+        guint32 rtptime = va_arg (var_args, guint32);
+        gst_rtp_buffer_set_timestamp (&rtp, rtptime);
+      } else if (!g_strcmp0 (field, "payload-type")) {
+        guint payload_type = va_arg (var_args, guint);
+        gst_rtp_buffer_set_payload_type (&rtp, payload_type);
+      } else if (!g_strcmp0 (field, "seq")) {
+        guint seq = va_arg (var_args, guint);
+        gst_rtp_buffer_set_seq (&rtp, seq);
+      } else if (!g_strcmp0 (field, "ssrc")) {
+        guint32 ssrc = va_arg (var_args, guint32);
+        gst_rtp_buffer_set_ssrc (&rtp, ssrc);
+      } else {
+        fail ("test cannot set unknown buffer field '%s'", field);
+      }
+    }
+    field = va_arg (var_args, const gchar *);
+  }
+  va_end (var_args);
+
+  if (mapped) {
+    gst_rtp_buffer_unmap (&rtp);
+  }
+
+  list = gst_buffer_list_new ();
+  gst_buffer_list_add (list, buf);
+  fail_unless_equals_int (gst_pad_push_list (state->srcpad, list), GST_FLOW_OK);
+}
+
+static void
+validate_buffers_received (guint received_buffers)
+{
+  fail_unless_equals_int (g_list_length (buffers), received_buffers);
+}
+
+static void
+validate_buffer (guint index, const gchar * field, ...)
+{
+  GstBuffer *buf;
+  GstRTPBuffer rtp = { NULL };
+  gboolean mapped = FALSE;
+  va_list var_args;
+
+  fail_if (index >= g_list_length (buffers));
+  buf = GST_BUFFER (g_list_nth_data (buffers, index));
+  fail_if (buf == NULL);
+
+  GST_TRACE ("%" GST_PTR_FORMAT, buf);
+
+  va_start (var_args, field);
+  while (field) {
+    if (!g_strcmp0 (field, "pts")) {
+      GstClockTime pts = va_arg (var_args, GstClockTime);
+      fail_unless_equals_uint64 (GST_BUFFER_PTS (buf), pts);
+    } else if (!g_strcmp0 (field, "offset")) {
+      guint64 offset = va_arg (var_args, guint64);
+      fail_unless_equals_uint64 (GST_BUFFER_OFFSET (buf), offset);
+    } else if (!g_strcmp0 (field, "discont")) {
+      gboolean discont = va_arg (var_args, gboolean);
+      if (discont) {
+        fail_unless (GST_BUFFER_FLAG_IS_SET (buf, GST_BUFFER_FLAG_DISCONT));
+      } else {
+        fail_if (GST_BUFFER_FLAG_IS_SET (buf, GST_BUFFER_FLAG_DISCONT));
+      }
+    } else {
+      if (!mapped) {
+        gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
+        mapped = TRUE;
+      }
+      if (!g_strcmp0 (field, "rtptime")) {
+        guint32 rtptime = va_arg (var_args, guint32);
+        fail_unless_equals_int (gst_rtp_buffer_get_timestamp (&rtp), rtptime);
+      } else if (!g_strcmp0 (field, "payload-type")) {
+        guint pt = va_arg (var_args, guint);
+        fail_unless_equals_int (gst_rtp_buffer_get_payload_type (&rtp), pt);
+      } else if (!g_strcmp0 (field, "seq")) {
+        guint seq = va_arg (var_args, guint);
+        fail_unless_equals_int (gst_rtp_buffer_get_seq (&rtp), seq);
+      } else if (!g_strcmp0 (field, "ssrc")) {
+        guint32 ssrc = va_arg (var_args, guint32);
+        fail_unless_equals_int (gst_rtp_buffer_get_ssrc (&rtp), ssrc);
+      } else {
+        fail ("test cannot validate unknown buffer field '%s'", field);
+      }
+    }
+    field = va_arg (var_args, const gchar *);
+  }
+  va_end (var_args);
+
+  if (mapped) {
+    gst_rtp_buffer_unmap (&rtp);
+  }
+}
+
+static void
+get_buffer_field (guint index, const gchar * field, ...)
+{
+  GstBuffer *buf;
+  GstRTPBuffer rtp = { NULL };
+  gboolean mapped = FALSE;
+  va_list var_args;
+
+  fail_if (index >= g_list_length (buffers));
+  buf = GST_BUFFER (g_list_nth_data (buffers, (index)));
+  fail_if (buf == NULL);
+
+  va_start (var_args, field);
+  while (field) {
+    if (!g_strcmp0 (field, "pts")) {
+      GstClockTime *pts = va_arg (var_args, GstClockTime *);
+      *pts = GST_BUFFER_PTS (buf);
+    } else if (!g_strcmp0 (field, "offset")) {
+      guint64 *offset = va_arg (var_args, guint64 *);
+      *offset = GST_BUFFER_OFFSET (buf);
+    } else if (!g_strcmp0 (field, "discont")) {
+      gboolean *discont = va_arg (var_args, gboolean *);
+      *discont = GST_BUFFER_FLAG_IS_SET (buf, GST_BUFFER_FLAG_DISCONT);
+    } else {
+      if (!mapped) {
+        gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
+        mapped = TRUE;
+      }
+      if (!g_strcmp0 (field, "rtptime")) {
+        guint32 *rtptime = va_arg (var_args, guint32 *);
+        *rtptime = gst_rtp_buffer_get_timestamp (&rtp);
+      } else if (!g_strcmp0 (field, "payload-type")) {
+        guint *pt = va_arg (var_args, guint *);
+        *pt = gst_rtp_buffer_get_payload_type (&rtp);
+      } else if (!g_strcmp0 (field, "seq")) {
+        guint16 *seq = va_arg (var_args, guint16 *);
+        *seq = gst_rtp_buffer_get_seq (&rtp);
+      } else if (!g_strcmp0 (field, "ssrc")) {
+        guint32 *ssrc = va_arg (var_args, guint32 *);
+        *ssrc = gst_rtp_buffer_get_ssrc (&rtp);
+      } else {
+        fail ("test retrieve validate unknown buffer field '%s'", field);
+      }
+    }
+    field = va_arg (var_args, const gchar *);
+  }
+  va_end (var_args);
+
+  if (mapped)
+    gst_rtp_buffer_unmap (&rtp);
+}
+
+static State *
+create_payloader (const gchar * caps_str,
+    GstStaticPadTemplate * sinktmpl, const gchar * property, ...)
+{
+  va_list var_args;
+  GstCaps *caps;
+  State *state;
+
+  state = g_new0 (State, 1);
+
+  state->element = GST_ELEMENT (rtp_dummy_pay_new ());
+  fail_unless (GST_IS_RTP_DUMMY_PAY (state->element));
+
+  va_start (var_args, property);
+  g_object_set_valist (G_OBJECT (state->element), property, var_args);
+  va_end (var_args);
+
+  state->srcpad = gst_check_setup_src_pad (state->element, &srctmpl);
+  state->sinkpad = gst_check_setup_sink_pad (state->element, sinktmpl);
+
+  fail_unless (gst_pad_set_active (state->srcpad, TRUE));
+  fail_unless (gst_pad_set_active (state->sinkpad, TRUE));
+
+  caps = gst_caps_from_string (caps_str);
+  gst_check_setup_events (state->srcpad, state->element, caps, GST_FORMAT_TIME);
+  gst_caps_unref (caps);
+
+  gst_pad_set_chain_function (state->sinkpad, gst_check_chain_func);
+  gst_pad_set_event_function (state->sinkpad, event_func);
+
+  return state;
+}
+
+static void
+set_state (State * state, GstState new_state)
+{
+  fail_unless_equals_int (gst_element_set_state (state->element, new_state),
+      GST_STATE_CHANGE_SUCCESS);
+}
+
+static void
+validate_would_not_be_filled (State * state, guint size, GstClockTime duration)
+{
+  GstRTPBasePayload *basepay;
+  basepay = GST_RTP_BASE_PAYLOAD (state->element);
+  fail_if (gst_rtp_base_payload_is_filled (basepay, size, duration));
+}
+
+static void
+validate_would_be_filled (State * state, guint size, GstClockTime duration)
+{
+  GstRTPBasePayload *basepay;
+  basepay = GST_RTP_BASE_PAYLOAD (state->element);
+  fail_unless (gst_rtp_base_payload_is_filled (basepay, size, duration));
+}
+
+static void
+ssrc_collision (State * state, guint ssrc,
+    gboolean have_new_ssrc, guint new_ssrc)
+{
+  GstStructure *s;
+  GstEvent *event;
+  if (have_new_ssrc) {
+    s = gst_structure_new ("GstRTPCollision",
+        "ssrc", G_TYPE_UINT, ssrc,
+        "suggested-ssrc", G_TYPE_UINT, new_ssrc, NULL);
+  } else {
+    s = gst_structure_new ("GstRTPCollision", "ssrc", G_TYPE_UINT, ssrc, NULL);
+  }
+  event = gst_event_new_custom (GST_EVENT_CUSTOM_UPSTREAM, s);
+  fail_unless (gst_pad_push_event (state->sinkpad, event));
+}
+
+static void
+reconfigure (State * state)
+{
+  GstEvent *event;
+  event = gst_event_new_reconfigure ();
+  fail_unless (gst_pad_push_event (state->sinkpad, event));
+}
+
+static void
+validate_stats (State * state, guint clock_rate,
+    GstClockTime running_time, guint16 seq, guint32 rtptime)
+{
+  GstStructure *stats;
+
+  g_object_get (state->element, "stats", &stats, NULL);
+
+  fail_unless_equals_int (g_value_get_uint (gst_structure_get_value (stats,
+              "clock-rate")), clock_rate);
+  fail_unless_equals_uint64 (g_value_get_uint64 (gst_structure_get_value (stats,
+              "running-time")), running_time);
+  fail_unless_equals_int (g_value_get_uint (gst_structure_get_value (stats,
+              "seqnum")), seq);
+  fail_unless_equals_int (g_value_get_uint (gst_structure_get_value (stats,
+              "timestamp")), rtptime);
+
+  gst_structure_free (stats);
+}
+
+static void
+destroy_payloader (State * state)
+{
+  gst_check_teardown_sink_pad (state->element);
+  gst_check_teardown_src_pad (state->element);
+
+  gst_check_drop_buffers ();
+  drop_events ();
+
+  g_object_unref (state->element);
+
+  g_free (state);
+}
+
+/* Tests */
+
+/* push two buffers to the payloader which should successfully payload them
+ * into RTP packets. the first packet will have a random rtptime and sequence
+ * number, but the last packet should have an rtptime incremented by
+ * DEFAULT_CLOCK_RATE and a sequence number incremented by one becuase the
+ * packets are sequential. besides the two payloaded RTP packets there should
+ * be the three events initial events: stream-start, caps and segment.
+ */
+GST_START_TEST (rtp_base_payload_buffer_test)
+{
+  State *state;
+  guint32 rtptime;
+  guint16 seq;
+
+  state = create_payloader ("application/x-rtp", &sinktmpl,
+      "perfect-rtptime", FALSE, NULL);
+
+  set_state (state, GST_STATE_PLAYING);
+
+  push_buffer (state, "pts", 0 * GST_SECOND, NULL);
+
+  push_buffer (state, "pts", 1 * GST_SECOND, NULL);
+
+  set_state (state, GST_STATE_NULL);
+
+  validate_buffers_received (2);
+
+  validate_buffer (0, "pts", 0 * GST_SECOND, NULL);
+  get_buffer_field (0, "rtptime", &rtptime, "seq", &seq, NULL);
+
+  validate_buffer (1,
+      "pts", 1 * GST_SECOND,
+      "rtptime", rtptime + 1 * DEFAULT_CLOCK_RATE, "seq", seq + 1, NULL);
+
+  validate_events_received (3);
+
+  validate_normal_start_events (0);
+
+  destroy_payloader (state);
+}
+
+GST_END_TEST;
+
+/* push single buffers in buffer lists to the payloader to be payloaded into
+ * RTP packets. the dummy payloader will start pushing buffer lists itself
+ * after BUFFER_BEFORE_LIST payloaded RTP packets. any RTP packets included in
+ * buffer lists should have rtptime and sequence numbers incrementting in the
+ * same way as for separate RTP packets.
+ */
+GST_START_TEST (rtp_base_payload_buffer_list_test)
+{
+  State *state;
+  guint32 rtptime;
+  guint16 seq;
+  guint i;
+
+  state = create_payloader ("application/x-rtp", &sinktmpl, NULL);
+
+  set_state (state, GST_STATE_PLAYING);
+
+  for (i = 0; i < BUFFER_BEFORE_LIST + 1; i++) {
+    push_buffer_list (state, "pts", i * GST_SECOND, NULL);
+  }
+
+  set_state (state, GST_STATE_NULL);
+
+  validate_buffers_received (11);
+
+  validate_buffer (0, "pts", 0 * GST_SECOND, NULL);
+  get_buffer_field (0, "rtptime", &rtptime, "seq", &seq, NULL);
+
+  for (i = 1; i < BUFFER_BEFORE_LIST + 1; i++) {
+    validate_buffer (i,
+        "pts", i * GST_SECOND,
+        "rtptime", rtptime + i * DEFAULT_CLOCK_RATE, "seq", seq + i, NULL);
+  }
+
+  validate_events_received (3);
+
+  validate_normal_start_events (0);
+
+  destroy_payloader (state);
+}
+
+GST_END_TEST;
+
+/* push two buffers. because the payloader is using non-perfect rtptime the
+ * second buffer will be timestamped with the default clock and ignore any
+ * offset set on the buffers being payloaded.
+ */
+GST_START_TEST (rtp_base_payload_normal_rtptime_test)
+{
+  guint32 rtptime;
+  State *state;
+
+  state = create_payloader ("application/x-rtp", &sinktmpl,
+      "perfect-rtptime", FALSE, NULL);
+
+  set_state (state, GST_STATE_PLAYING);
+
+  push_buffer (state,
+      "pts", 0 * GST_SECOND, "offset", GST_BUFFER_OFFSET_NONE, NULL);
+
+  push_buffer (state,
+      "pts", 1 * GST_SECOND, "offset", GST_BUFFER_OFFSET_NONE, NULL);
+
+  set_state (state, GST_STATE_NULL);
+
+  validate_buffers_received (2);
+
+  validate_buffer (0,
+      "pts", 0 * GST_SECOND, "offset", GST_BUFFER_OFFSET_NONE, NULL);
+  get_buffer_field (0, "rtptime", &rtptime, NULL);
+
+  validate_buffer (1,
+      "pts", 1 * GST_SECOND,
+      "offset", GST_BUFFER_OFFSET_NONE,
+      "rtptime", rtptime + DEFAULT_CLOCK_RATE, NULL);
+
+  validate_events_received (3);
+
+  validate_normal_start_events (0);
+
+  destroy_payloader (state);
+}
+
+GST_END_TEST;
+
+/* push two buffers. because the payloader is using perfect rtptime the
+ * second buffer will be timestamped with a timestamp incremented with the
+ * difference in offset between the first and second buffer. the pts will be
+ * ignored for any buffer after the first buffer.
+ */
+GST_START_TEST (rtp_base_payload_perfect_rtptime_test)
+{
+  guint32 rtptime;
+  State *state;
+
+  state = create_payloader ("application/x-rtp", &sinktmpl,
+      "perfect-rtptime", TRUE, NULL);
+
+  set_state (state, GST_STATE_PLAYING);
+
+  push_buffer (state, "pts", 0 * GST_SECOND, "offset", 0, NULL);
+
+  push_buffer (state, "pts", GST_CLOCK_TIME_NONE, "offset", 21, NULL);
+
+  set_state (state, GST_STATE_NULL);
+
+  validate_buffers_received (2);
+
+  validate_buffer (0, "pts", 0 * GST_SECOND, "offset", 0, NULL);
+  get_buffer_field (0, "rtptime", &rtptime, NULL);
+
+  validate_buffer (1,
+      "pts", GST_CLOCK_TIME_NONE, "offset", 21, "rtptime", rtptime + 21, NULL);
+
+  validate_events_received (3);
+
+  validate_normal_start_events (0);
+
+  destroy_payloader (state);
+}
+
+GST_END_TEST;
+
+/* validate that a payloader will re-use the last used timestamp when a buffer
+ * is using perfect rtptime and both the pushed buffers timestamp and the offset
+ * is NONE. the payloader is configuered to start with a specific timestamp.
+ * then a buffer is sent with a valid timestamp but without any offset. the
+ * payloded RTP packet is expected to use the specific timestamp. next another
+ * buffer is pushed with a normal timestamp set to illustrate that the payloaded
+ * RTP packet will have an increased timestamp. finally a buffer without any
+ * timestamp or offset is pushed. in this case the payloaded RTP packet is
+ * expected to have the same timestamp as the previously payloaded RTP packet.
+ */
+GST_START_TEST (rtp_base_payload_no_pts_no_offset_test)
+{
+  State *state;
+
+  state = create_payloader ("application/x-rtp", &sinktmpl,
+      "timestamp-offset", 0x42, NULL);
+
+  set_state (state, GST_STATE_PLAYING);
+
+  push_buffer (state,
+      "pts", 0 * GST_SECOND, "offset", GST_BUFFER_OFFSET_NONE, NULL);
+
+  push_buffer (state,
+      "pts", 1 * GST_SECOND, "offset", GST_BUFFER_OFFSET_NONE, NULL);
+
+  push_buffer (state,
+      "pts", GST_CLOCK_TIME_NONE, "offset", GST_BUFFER_OFFSET_NONE, NULL);
+
+  set_state (state, GST_STATE_NULL);
+
+  validate_buffers_received (3);
+
+  validate_buffer (0,
+      "pts", 0 * GST_SECOND,
+      "offset", GST_BUFFER_OFFSET_NONE, "rtptime", 0x42, NULL);
+
+  validate_buffer (1,
+      "pts", 1 * GST_SECOND,
+      "offset", GST_BUFFER_OFFSET_NONE,
+      "rtptime", 0x42 + 1 * DEFAULT_CLOCK_RATE, NULL);
+
+  validate_buffer (2,
+      "pts", GST_CLOCK_TIME_NONE,
+      "offset", GST_BUFFER_OFFSET_NONE,
+      "rtptime", 0x42 + 1 * DEFAULT_CLOCK_RATE, NULL);
+
+  validate_events_received (3);
+
+  validate_normal_start_events (0);
+
+  destroy_payloader (state);
+}
+
+GST_END_TEST;
+
+/* validate that a downstream element with caps on its sink pad can effectively
+ * configure the payloader's payload-type, ssrc, timestamp-offset and
+ * seqnum-offset properties and therefore also affect the payloaded RTP packets.
+ * this is done by connecting to a sink pad with template caps setting the
+ * relevant fields and then pushing a buffer and making sure that the payloaded
+ * RTP packet has the expected properties.
+ */
+GST_START_TEST (rtp_base_payload_downstream_caps_test)
+{
+  State *state;
+
+  state = create_payloader ("application/x-rtp", &special_sinktmpl, NULL);
+
+  set_state (state, GST_STATE_PLAYING);
+
+  push_buffer (state, "pts", 0 * GST_SECOND, NULL);
+
+  set_state (state, GST_STATE_NULL);
+
+  validate_buffers_received (1);
+
+  validate_buffer (0,
+      "pts", 0 * GST_SECOND,
+      "seq", 2424, "payload-type", 98, "ssrc", 24, "rtptime", 212, NULL);
+
+  validate_events_received (3);
+
+  validate_normal_start_events (0);
+
+  destroy_payloader (state);
+}
+
+GST_END_TEST;
+
+/* when a payloader receives a GstRTPCollision upstream event it should try to
+ * switch to a new ssrc for the next payloaded RTP packets. GstRTPCollision can
+ * supply a suggested new ssrc. if a suggested new ssrc is supplied then the
+ * payloaded is supposed to use this new ssrc, otherwise it should generate a
+ * new random ssrc which is not identical to the one that collided.
+ *
+ * this is tested by first setting the ssrc to a specific value and pushing a
+ * buffer. the payloaded RTP packet is validate to have the set ssrc. then a
+ * GstRTPCollision event is generated to instruct the payloader that the
+ * previously set ssrc collided. this event suggests a new ssrc and it is
+ * verified that a pushed buffer results in a payloaded RTP packet that actually
+ * uses this new ssrc. finally a new GstRTPCollision event is generated to
+ * indicate another ssrc collision. this time the event does not suggest a new
+ * ssrc. the payloaded RTP packet is then expected to have a new random ssrc
+ * different from the collided one.
+ */
+GST_START_TEST (rtp_base_payload_ssrc_collision_test)
+{
+  State *state;
+  guint32 ssrc;
+
+  state = create_payloader ("application/x-rtp", &sinktmpl, NULL);
+
+  g_object_set (state->element, "ssrc", 0x4242, NULL);
+  g_object_get (state->element, "ssrc", &ssrc, NULL);
+  fail_unless_equals_int (ssrc, 0x4242);
+
+  set_state (state, GST_STATE_PLAYING);
+
+  push_buffer (state, "pts", 0 * GST_SECOND, NULL);
+
+  ssrc_collision (state, 0x4242, TRUE, 0x4343);
+
+  push_buffer (state, "pts", 1 * GST_SECOND, NULL);
+
+  ssrc_collision (state, 0x4343, FALSE, 0);
+
+  push_buffer (state, "pts", 2 * GST_SECOND, NULL);
+
+  set_state (state, GST_STATE_NULL);
+
+  validate_buffers_received (3);
+
+  validate_buffer (0, "pts", 0 * GST_SECOND, "ssrc", 0x4242, NULL);
+
+  validate_buffer (1, "pts", 1 * GST_SECOND, "ssrc", 0x4343, NULL);
+
+  validate_buffer (2, "pts", 2 * GST_SECOND, NULL);
+  get_buffer_field (2, "ssrc", &ssrc, NULL);
+  fail_if (ssrc == 0x4343);
+
+  validate_events_received (5);
+
+  validate_normal_start_events (0);
+
+  validate_event (3, "caps",
+      "media-type", "application/x-rtp", "ssrc", 0x4343, NULL);
+
+  validate_event (4, "caps",
+      "media-type", "application/x-rtp", "ssrc", ssrc, NULL);
+
+  destroy_payloader (state);
+}
+
+GST_END_TEST;
+
+/* validate that an upstream event different from GstRTPCollision is succesfully
+ * forwarded to upstream elements. in this test a caps reconfiguration event is
+ * pushed upstream to validate the behaviour.
+ */
+GST_START_TEST (rtp_base_payload_reconfigure_test)
+{
+  State *state;
+
+  state = create_payloader ("application/x-rtp", &sinktmpl, NULL);
+
+  set_state (state, GST_STATE_PLAYING);
+
+  push_buffer (state, "pts", 0 * GST_SECOND, NULL);
+
+  reconfigure (state);
+
+  push_buffer (state, "pts", 1 * GST_SECOND, NULL);
+
+  set_state (state, GST_STATE_NULL);
+
+  validate_buffers_received (2);
+
+  validate_buffer (0, "pts", 0 * GST_SECOND, NULL);
+
+  validate_buffer (1, "pts", 1 * GST_SECOND, NULL);
+
+  validate_events_received (4);
+
+  validate_normal_start_events (0);
+
+  destroy_payloader (state);
+}
+
+GST_END_TEST;
+
+/* validate that changing the mtu actually affects whether buffers are
+ * considered to be filled. first detect the default mtu and check that having
+ * buffers slightly less or equal to the size will not be considered to be
+ * filled, and that going over this size will be filling the buffers. then
+ * change the mtu slightly and validate that the boundary actually changed.
+ * lastly try the boundary values and make sure that they work as expected.
+ */
+GST_START_TEST (rtp_base_payload_property_mtu_test)
+{
+  State *state;
+  guint mtu, check;
+
+  state = create_payloader ("application/x-rtp", &sinktmpl, NULL);
+
+  g_object_get (state->element, "mtu", &mtu, NULL);
+  validate_would_not_be_filled (state, mtu - 1, GST_CLOCK_TIME_NONE);
+  validate_would_not_be_filled (state, mtu, GST_CLOCK_TIME_NONE);
+  validate_would_be_filled (state, mtu + 1, GST_CLOCK_TIME_NONE);
+
+  g_object_set (state->element, "mtu", mtu - 1, NULL);
+  g_object_get (state->element, "mtu", &check, NULL);
+  fail_unless_equals_int (check, mtu - 1);
+  validate_would_not_be_filled (state, mtu - 1, GST_CLOCK_TIME_NONE);
+  validate_would_be_filled (state, mtu, GST_CLOCK_TIME_NONE);
+  validate_would_be_filled (state, mtu + 1, GST_CLOCK_TIME_NONE);
+
+  g_object_set (state->element, "mtu", 28, NULL);
+  g_object_get (state->element, "mtu", &check, NULL);
+  fail_unless_equals_int (check, 28);
+  validate_would_not_be_filled (state, 28, GST_CLOCK_TIME_NONE);
+  validate_would_be_filled (state, 29, GST_CLOCK_TIME_NONE);
+
+  g_object_set (state->element, "mtu", G_MAXUINT, NULL);
+  g_object_get (state->element, "mtu", &check, NULL);
+  fail_unless_equals_int (check, G_MAXUINT);
+  validate_would_not_be_filled (state, G_MAXUINT - 1, GST_CLOCK_TIME_NONE);
+  validate_would_not_be_filled (state, G_MAXUINT, GST_CLOCK_TIME_NONE);
+
+  destroy_payloader (state);
+}
+
+GST_END_TEST;
+
+/* validate that changing the payload-type will actually affect the
+ * payload-type of the payloaded RTP packets. first get the default, then send
+ * a buffer with this payload-type. increment the payload-type and send another
+ * buffer. then test the boundary values for the payload-type and make sure
+ * that these are all carried over to the payloaded RTP packets.
+ */
+GST_START_TEST (rtp_base_payload_property_pt_test)
+{
+  State *state;
+  guint payload_type, check;
+
+  state = create_payloader ("application/x-rtp", &sinktmpl, NULL);
+
+  set_state (state, GST_STATE_PLAYING);
+
+  g_object_get (state->element, "pt", &payload_type, NULL);
+  push_buffer (state, "pts", 0 * GST_SECOND, NULL);
+
+  g_object_set (state->element, "pt", payload_type + 1, NULL);
+  g_object_get (state->element, "pt", &check, NULL);
+  fail_unless_equals_int (check, payload_type + 1);
+  push_buffer (state, "pts", 1 * GST_SECOND, NULL);
+
+  g_object_set (state->element, "pt", 0, NULL);
+  g_object_get (state->element, "pt", &check, NULL);
+  fail_unless_equals_int (check, 0);
+  push_buffer (state, "pts", 2 * GST_SECOND, NULL);
+
+  g_object_set (state->element, "pt", 0x7f, NULL);
+  g_object_get (state->element, "pt", &check, NULL);
+  fail_unless_equals_int (check, 0x7f);
+  push_buffer (state, "pts", 3 * GST_SECOND, NULL);
+
+  set_state (state, GST_STATE_NULL);
+
+  validate_buffers_received (4);
+
+  validate_buffer (0,
+      "pts", 0 * GST_SECOND, "payload-type", payload_type, NULL);
+
+  validate_buffer (1,
+      "pts", 1 * GST_SECOND, "payload-type", payload_type + 1, NULL);
+
+  validate_buffer (2, "pts", 2 * GST_SECOND, "payload-type", 0, NULL);
+
+  validate_buffer (3, "pts", 3 * GST_SECOND, "payload-type", 0x7f, NULL);
+
+  validate_events_received (3);
+
+  validate_normal_start_events (0);
+
+  destroy_payloader (state);
+}
+
+GST_END_TEST;
+
+/* validate that changing the ssrc will actually affect the ssrc of the
+ * payloaded RTP packets. first get the current ssrc which should indicate
+ * random ssrcs. send two buffers and expect their ssrcs to be random but
+ * identical. since setting the ssrc will only take effect when the pipeline
+ * goes READY->PAUSED, bring the pipeline to NULL state, set the ssrc to a given
+ * value and make sure that this is carried over to the payloaded RTP packets.
+ * the last step is to test the boundary values.
+ */
+GST_START_TEST (rtp_base_payload_property_ssrc_test)
+{
+  State *state;
+  guint32 ssrc;
+
+  state = create_payloader ("application/x-rtp", &sinktmpl, NULL);
+
+  set_state (state, GST_STATE_PLAYING);
+
+  g_object_get (state->element, "ssrc", &ssrc, NULL);
+  fail_unless_equals_int (ssrc, -1);
+
+  push_buffer (state, "pts", 0 * GST_SECOND, NULL);
+
+  push_buffer (state, "pts", 1 * GST_SECOND, NULL);
+
+  set_state (state, GST_STATE_NULL);
+  g_object_set (state->element, "ssrc", 0x4242, NULL);
+  g_object_get (state->element, "ssrc", &ssrc, NULL);
+  fail_unless_equals_int (ssrc, 0x4242);
+  set_state (state, GST_STATE_PLAYING);
+
+  push_buffer (state, "pts", 2 * GST_SECOND, NULL);
+
+  set_state (state, GST_STATE_NULL);
+  g_object_set (state->element, "ssrc", 0, NULL);
+  g_object_get (state->element, "ssrc", &ssrc, NULL);
+  fail_unless_equals_int (ssrc, 0);
+  set_state (state, GST_STATE_PLAYING);
+
+  push_buffer (state, "pts", 3 * GST_SECOND, NULL);
+
+  set_state (state, GST_STATE_NULL);
+  g_object_set (state->element, "ssrc", G_MAXUINT32, NULL);
+  g_object_get (state->element, "ssrc", &ssrc, NULL);
+  fail_unless_equals_int (ssrc, G_MAXUINT32);
+  set_state (state, GST_STATE_PLAYING);
+
+  push_buffer (state, "pts", 4 * GST_SECOND, NULL);
+
+  set_state (state, GST_STATE_NULL);
+
+  validate_buffers_received (5);
+
+  validate_buffer (0, "pts", 0 * GST_SECOND, NULL);
+  get_buffer_field (0, "ssrc", &ssrc, NULL);
+
+  validate_buffer (1, "pts", 1 * GST_SECOND, "ssrc", ssrc, NULL);
+
+  validate_buffer (2, "pts", 2 * GST_SECOND, "ssrc", 0x4242, NULL);
+
+  validate_buffer (3, "pts", 3 * GST_SECOND, "ssrc", 0, NULL);
+
+  validate_buffer (4, "pts", 4 * GST_SECOND, "ssrc", G_MAXUINT32, NULL);
+
+  validate_events_received (12);
+
+  validate_normal_start_events (0);
+
+  validate_normal_start_events (3);
+
+  validate_normal_start_events (6);
+
+  validate_normal_start_events (9);
+
+  destroy_payloader (state);
+}
+
+GST_END_TEST;
+
+/* validate that changing the timestamp-offset will actually effect the rtptime
+ * of the payloaded RTP packets. unfortunately setting the timestamp-offset
+ * property will only take effect when the payloader goes from READY to PAUSED.
+ * so the test starts by making sure that the default timestamp-offset indicates
+ * random timestamps. then a buffer is pushed which is expected to be payloaded
+ * as an RTP packet with a random timestamp. then the timestamp-offset is
+ * modified without changing the state of the pipeline. therefore the next
+ * buffer pushed is expected to result in an RTP packet with a timestamp equal
+ * to the previous RTP packet incremented by DEFAULT_CLOCK_RATE. next the
+ * pipeline is brought to NULL state and the timestamp-offset is set to a
+ * specific value, the pipeline is then brought back to PLAYING state and the
+ * two buffers pushed are expected to result in payloaded RTP packets that have
+ * timestamps based on the set timestamp-offset incremented by multiples of
+ * DEFAULT_CLOCK_RATE. next the boundary values of the timestamp-offset are
+ * tested. again the pipeline state needs to be modified and buffers are pushed
+ * and the resulting payloaded RTP packets' timestamps are validated. note that
+ * the maximum timestamp-offset value will wrap around for the very last
+ * payloaded RTP packet.
+ */
+GST_START_TEST (rtp_base_payload_property_timestamp_offset_test)
+{
+  guint32 rtptime;
+  guint32 offset;
+  State *state;
+
+  state = create_payloader ("application/x-rtp", &sinktmpl, NULL);
+
+  set_state (state, GST_STATE_PLAYING);
+
+  g_object_get (state->element, "timestamp-offset", &offset, NULL);
+  fail_unless_equals_int (offset, -1);
+
+  push_buffer (state, "pts", 0 * GST_SECOND, NULL);
+
+  g_object_set (state->element, "timestamp-offset", 0x42, NULL);
+  g_object_get (state->element, "timestamp-offset", &offset, NULL);
+  fail_unless_equals_int (offset, 0x42);
+  push_buffer (state, "pts", 1 * GST_SECOND, NULL);
+
+  set_state (state, GST_STATE_NULL);
+  g_object_set (state->element, "timestamp-offset", 0x4242, NULL);
+  g_object_get (state->element, "timestamp-offset", &offset, NULL);
+  fail_unless_equals_int (offset, 0x4242);
+  set_state (state, GST_STATE_PLAYING);
+
+  push_buffer (state, "pts", 2 * GST_SECOND, NULL);
+
+  push_buffer (state, "pts", 3 * GST_SECOND, NULL);
+
+  set_state (state, GST_STATE_NULL);
+  g_object_set (state->element, "timestamp-offset", 0, NULL);
+  set_state (state, GST_STATE_PLAYING);
+
+  push_buffer (state, "pts", 4 * GST_SECOND, NULL);
+
+  push_buffer (state, "pts", 5 * GST_SECOND, NULL);
+
+  set_state (state, GST_STATE_NULL);
+  g_object_set (state->element, "timestamp-offset", G_MAXUINT32, NULL);
+  set_state (state, GST_STATE_PLAYING);
+
+  push_buffer (state, "pts", 6 * GST_SECOND, NULL);
+
+  push_buffer (state, "pts", 7 * GST_SECOND, NULL);
+
+  set_state (state, GST_STATE_NULL);
+
+  validate_buffers_received (8);
+
+  validate_buffer (0, "pts", 0 * GST_SECOND, NULL);
+  get_buffer_field (0, "rtptime", &rtptime, NULL);
+
+  validate_buffer (1,
+      "pts", 1 * GST_SECOND, "rtptime", rtptime + 1 * DEFAULT_CLOCK_RATE, NULL);
+
+  validate_buffer (2,
+      "pts", 2 * GST_SECOND, "rtptime", 0x4242 + 2 * DEFAULT_CLOCK_RATE, NULL);
+
+  validate_buffer (3,
+      "pts", 3 * GST_SECOND, "rtptime", 0x4242 + 3 * DEFAULT_CLOCK_RATE, NULL);
+
+  validate_buffer (4,
+      "pts", 4 * GST_SECOND, "rtptime", 0 + 4 * DEFAULT_CLOCK_RATE, NULL);
+
+  validate_buffer (5,
+      "pts", 5 * GST_SECOND, "rtptime", 0 + 5 * DEFAULT_CLOCK_RATE, NULL);
+
+  validate_buffer (6,
+      "pts", 6 * GST_SECOND,
+      "rtptime", G_MAXUINT32 + 6 * DEFAULT_CLOCK_RATE, NULL);
+
+  validate_buffer (7,
+      "pts", 7 * GST_SECOND, "rtptime", 7 * DEFAULT_CLOCK_RATE - 1, NULL);
+
+  validate_events_received (12);
+
+  validate_normal_start_events (0);
+
+  validate_normal_start_events (3);
+
+  validate_normal_start_events (6);
+
+  validate_normal_start_events (9);
+
+  destroy_payloader (state);
+}
+
+GST_END_TEST;
+
+/* as for timestamp-offset above setting the seqnum-offset property of a
+ * payloader will only take effect when the payloader goes from READY to PAUSED
+ * state. this test starts by validating that seqnum-offset indicates random
+ * sequence numbers and that the random sequence numbers increment by one for
+ * each payloaded RTP packet. also it is verified that setting seqnum-offset
+ * without bringing the pipeline to READY will not affect the payloaded RTP
+ * packets' sequence numbers. next the pipeline is brought to NULL state,
+ * seqnum-offset is set to a specific value before bringing the pipeline back to
+ * PLAYING state. the next two buffers pushed are expected to resulting in
+ * payloaded RTP packets that start with sequence numbers relating to the set
+ * seqnum-offset value, and that again increment by one for each packet. finally
+ * the boundary values of seqnum-offset are tested. this means bringing the
+ * pipeline to NULL state, setting the seqnum-offset and bringing the pipeline
+ * back to PLAYING state. note that for the very last payloded RTP packet the
+ * sequence number will have wrapped around because the previous packet is
+ * expected to have the maximum sequence number value.
+ */
+GST_START_TEST (rtp_base_payload_property_seqnum_offset_test)
+{
+  State *state;
+  guint16 seq;
+  gint offset;
+
+  state = create_payloader ("application/x-rtp", &sinktmpl, NULL);
+
+  set_state (state, GST_STATE_PLAYING);
+
+  g_object_get (state->element, "seqnum-offset", &offset, NULL);
+  fail_unless_equals_int (offset, -1);
+
+  push_buffer (state, "pts", 0 * GST_SECOND, NULL);
+
+  g_object_set (state->element, "seqnum-offset", 0x42, NULL);
+  g_object_get (state->element, "seqnum-offset", &offset, NULL);
+  fail_unless_equals_int (offset, 0x42);
+  push_buffer (state, "pts", 1 * GST_SECOND, NULL);
+
+  set_state (state, GST_STATE_NULL);
+  g_object_set (state->element, "seqnum-offset", 0x4242, NULL);
+  g_object_get (state->element, "seqnum-offset", &offset, NULL);
+  fail_unless_equals_int (offset, 0x4242);
+  set_state (state, GST_STATE_PLAYING);
+
+  push_buffer (state, "pts", 2 * GST_SECOND, NULL);
+
+  push_buffer (state, "pts", 3 * GST_SECOND, NULL);
+
+  set_state (state, GST_STATE_NULL);
+  g_object_set (state->element, "seqnum-offset", -1, NULL);
+  set_state (state, GST_STATE_PLAYING);
+
+  push_buffer (state, "pts", 4 * GST_SECOND, NULL);
+
+  push_buffer (state, "pts", 5 * GST_SECOND, NULL);
+
+  set_state (state, GST_STATE_NULL);
+  g_object_set (state->element, "seqnum-offset", G_MAXUINT16, NULL);
+  set_state (state, GST_STATE_PLAYING);
+
+  push_buffer (state, "pts", 6 * GST_SECOND, NULL);
+
+  push_buffer (state, "pts", 7 * GST_SECOND, NULL);
+
+  set_state (state, GST_STATE_NULL);
+
+  validate_buffers_received (8);
+
+  validate_buffer (0, "pts", 0 * GST_SECOND, NULL);
+  get_buffer_field (0, "seq", &seq, NULL);
+
+  validate_buffer (1, "pts", 1 * GST_SECOND, "seq", seq + 1, NULL);
+
+  validate_buffer (2, "pts", 2 * GST_SECOND, "seq", 0x4242, NULL);
+
+  validate_buffer (3, "pts", 3 * GST_SECOND, "seq", 0x4242 + 1, NULL);
+
+  validate_buffer (4, "pts", 4 * GST_SECOND, NULL);
+  get_buffer_field (4, "seq", &seq, NULL);
+
+  validate_buffer (5, "pts", 5 * GST_SECOND, "seq", seq + 1, NULL);
+
+  validate_buffer (6, "pts", 6 * GST_SECOND, "seq", G_MAXUINT16, NULL);
+
+  validate_buffer (7, "pts", 7 * GST_SECOND, "seq", 0, NULL);
+
+  validate_events_received (12);
+
+  validate_normal_start_events (0);
+
+  validate_normal_start_events (3);
+
+  validate_normal_start_events (6);
+
+  validate_normal_start_events (9);
+
+  destroy_payloader (state);
+}
+
+GST_END_TEST;
+
+/* a payloader's max-ptime property is linked to its MTU property. whenever a
+ * packet is larger than MTU or has a duration longer than max-ptime it will be
+ * considered to be full. so this test first validates that the default value of
+ * max-ptime is unspecified. then it retrieves the MTU and validates that a
+ * packet of size MTU will not be considered full even if the duration is at its
+ * maximum value. however incrementing the size to exceed the MTU will result in
+ * the packet being full. next max-ptime is set to a value and it is verified
+ * that only if both the size and duration are below the allowed values then the
+ * packet will be considered not to be full, otherwise it will be reported as
+ * being full. finally the boundary values of the property are tested in a
+ * similar fashion.
+ */
+GST_START_TEST (rtp_base_payload_property_max_ptime_test)
+{
+  gint64 max_ptime;
+  State *state;
+  guint mtu;
+
+  state = create_payloader ("application/x-rtp", &sinktmpl, NULL);
+
+  g_object_get (state->element, "max-ptime", &max_ptime, NULL);
+  fail_unless_equals_int64 (max_ptime, -1);
+  g_object_get (state->element, "mtu", &mtu, NULL);
+  validate_would_not_be_filled (state, mtu, G_MAXINT64 - 1);
+  validate_would_be_filled (state, mtu + 1, G_MAXINT64 - 1);
+
+  g_object_set (state->element, "max-ptime", GST_SECOND, NULL);
+  g_object_get (state->element, "max-ptime", &max_ptime, NULL);
+  fail_unless_equals_int64 (max_ptime, GST_SECOND);
+  validate_would_not_be_filled (state, mtu, GST_SECOND - 1);
+  validate_would_be_filled (state, mtu, GST_SECOND);
+  validate_would_be_filled (state, mtu + 1, GST_SECOND - 1);
+  validate_would_be_filled (state, mtu + 1, GST_SECOND);
+
+  g_object_set (state->element, "max-ptime", G_GUINT64_CONSTANT (-1), NULL);
+  g_object_get (state->element, "max-ptime", &max_ptime, NULL);
+  fail_unless_equals_int64 (max_ptime, G_GUINT64_CONSTANT (-1));
+  validate_would_not_be_filled (state, mtu, G_MAXINT64 - 1);
+  validate_would_be_filled (state, mtu + 1, G_MAXINT64 - 1);
+
+  g_object_set (state->element, "max-ptime", G_MAXINT64, NULL);
+  g_object_get (state->element, "max-ptime", &max_ptime, NULL);
+  fail_unless_equals_int64 (max_ptime, G_MAXINT64);
+  validate_would_be_filled (state, mtu, G_MAXINT64);
+
+  destroy_payloader (state);
+}
+
+GST_END_TEST;
+
+/* a basepayloader has a min-ptime property with an allowed range, the property
+ * itself is never checked by the payloader but is meant to be used by
+ * inheriting classes. therefore this test only validates that setting the
+ * property will mean that retrieveing the property results in the value
+ * previously being set. first the default value is validated, then a new
+ * specific value, before finally testing the boundary values.
+ */
+GST_START_TEST (rtp_base_payload_property_min_ptime_test)
+{
+  State *state;
+  guint64 reference, min_ptime;
+
+  state = create_payloader ("application/x-rtp", &sinktmpl, NULL);
+
+  g_object_get (state->element, "min-ptime", &reference, NULL);
+  fail_unless_equals_int (reference, 0);
+
+  g_object_set (state->element, "min-ptime", reference + 1, NULL);
+  g_object_get (state->element, "min-ptime", &min_ptime, NULL);
+  fail_unless_equals_int (min_ptime, reference + 1);
+
+  g_object_set (state->element, "min-ptime", G_GUINT64_CONSTANT (0), NULL);
+  g_object_get (state->element, "min-ptime", &min_ptime, NULL);
+  fail_unless_equals_int (min_ptime, 0);
+
+  g_object_set (state->element, "min-ptime", G_MAXINT64, NULL);
+  g_object_get (state->element, "min-ptime", &min_ptime, NULL);
+  fail_unless_equals_int64 (min_ptime, G_MAXINT64);
+
+  destroy_payloader (state);
+}
+
+GST_END_TEST;
+
+/* paylaoders have a timestamp property that reflects the timestamp of the last
+ * payloaded RTP packet. in this test the timestamp-offset is set to a specific
+ * value so that when the first buffer is pushed its timestamp can be predicted
+ * and thus that the timestamp property also has this value. (if
+ * timestamp-offset was not set the timestamp would be random). another buffer
+ * is then pushed and its timestamp is expected to increment by
+ * DEFAULT_CLOCK_RATE.
+ */
+GST_START_TEST (rtp_base_payload_property_timestamp_test)
+{
+  State *state;
+  guint32 timestamp;
+
+  state = create_payloader ("application/x-rtp", &sinktmpl,
+      "timestamp-offset", 0, NULL);
+
+  set_state (state, GST_STATE_PLAYING);
+
+  push_buffer (state, "pts", 0 * GST_SECOND, NULL);
+  g_object_get (state->element, "timestamp", &timestamp, NULL);
+  fail_unless_equals_int (timestamp, 0);
+
+  push_buffer (state, "pts", 1 * GST_SECOND, NULL);
+  g_object_get (state->element, "timestamp", &timestamp, NULL);
+  fail_unless_equals_int (timestamp, DEFAULT_CLOCK_RATE);
+
+  set_state (state, GST_STATE_NULL);
+
+  validate_buffers_received (2);
+
+  validate_buffer (0, "pts", 0 * GST_SECOND, "rtptime", 0, NULL);
+
+  validate_buffer (1,
+      "pts", 1 * GST_SECOND, "rtptime", DEFAULT_CLOCK_RATE, NULL);
+
+  validate_events_received (3);
+
+  validate_normal_start_events (0);
+
+  destroy_payloader (state);
+}
+
+GST_END_TEST;
+
+/* basepayloaders have a seqnum property that is supposed to contain the
+ * sequence number of the last payloaded RTP packet. so therefore this test
+ * initializes the seqnum-offset property to a know value and pushes a buffer.
+ * the payloaded RTP packet is expected to have a sequence number equal to the
+ * set seqnum-offset, as is the seqnum property. next another buffer is pushed
+ * and then both the payloaded RTP packet and the seqnum property value are
+ * expected to increment by one compared to the previous packet.
+ */
+GST_START_TEST (rtp_base_payload_property_seqnum_test)
+{
+  State *state;
+  guint seq;
+
+  state = create_payloader ("application/x-rtp", &sinktmpl,
+      "seqnum-offset", 0, NULL);
+
+  set_state (state, GST_STATE_PLAYING);
+
+  push_buffer (state, "pts", 0 * GST_SECOND, NULL);
+  g_object_get (state->element, "seqnum", &seq, NULL);
+  fail_unless_equals_int (seq, 0);
+
+  push_buffer (state, "pts", 1 * GST_SECOND, NULL);
+  g_object_get (state->element, "seqnum", &seq, NULL);
+  fail_unless_equals_int (seq, 1);
+
+  set_state (state, GST_STATE_NULL);
+
+  validate_buffers_received (2);
+
+  validate_buffer (0, "pts", 0 * GST_SECOND, "seq", 0, NULL);
+
+  validate_buffer (1, "pts", 1 * GST_SECOND, "seq", 1, NULL);
+
+  validate_events_received (3);
+
+  validate_normal_start_events (0);
+
+  destroy_payloader (state);
+}
+
+GST_END_TEST;
+
+/* basepayloader has a perfect-rtptime property when it is set to FALSE
+ * the timestamps of payloaded RTP packets will determined by initial
+ * timestamp-offset (usually random) as well as the clock-rate. when
+ * perfect-rtptime is set to TRUE the timestamps of payloaded RTP packets are
+ * instead determined by the timestamp of the first packet and then the
+ * difference in offset of the input buffers.
+ *
+ * to verify that this test starts by setting the timestamp-offset to a specific
+ * value to prevent random timestamps of the RTP packets. next perfect-rtptime
+ * is set to FALSE. the two buffers pushed will result in two payloaded RTP
+ * packets whose timestamps differ based on the current clock-rate
+ * DEFAULT_CLOCK_RATE. the next step is to set perfect-rtptime to TRUE. the two
+ * buffers that are pushed will result in two payloaded RTP packets. the first
+ * of these RTP packets has a timestamp that relates to the previous packet and
+ * the difference in offset between the middle two input buffers. the latter of
+ * the two RTP packets has a timestamp that instead relates to the offset of the
+ * last two input buffers.
+ */
+GST_START_TEST (rtp_base_payload_property_perfect_rtptime_test)
+{
+  State *state;
+  guint32 timestamp_base = 0;
+  gboolean perfect;
+
+  state = create_payloader ("application/x-rtp", &sinktmpl,
+      "timestamp-offset", timestamp_base, NULL);
+
+  set_state (state, GST_STATE_PLAYING);
+
+  g_object_set (state->element, "perfect-rtptime", FALSE, NULL);
+  g_object_get (state->element, "perfect-rtptime", &perfect, NULL);
+  fail_unless (!perfect);
+
+  push_buffer (state, "pts", 0 * GST_SECOND, "offset", 0, NULL);
+
+  push_buffer (state, "pts", 1 * GST_SECOND, "offset", 17, NULL);
+
+  g_object_set (state->element, "perfect-rtptime", TRUE, NULL);
+  g_object_get (state->element, "perfect-rtptime", &perfect, NULL);
+  fail_unless (perfect);
+
+  push_buffer (state, "pts", 2 * GST_SECOND, "offset", 31, NULL);
+
+  push_buffer (state, "pts", 3 * GST_SECOND, "offset", 67, NULL);
+
+  set_state (state, GST_STATE_NULL);
+
+  validate_buffers_received (4);
+
+  validate_buffer (0,
+      "pts", 0 * GST_SECOND, "offset", 0, "rtptime", timestamp_base, NULL);
+
+  validate_buffer (1,
+      "pts", 1 * GST_SECOND,
+      "offset", 17, "rtptime", timestamp_base + 1 * DEFAULT_CLOCK_RATE, NULL);
+
+  validate_buffer (2,
+      "pts", 2 * GST_SECOND,
+      "offset", 31,
+      "rtptime", timestamp_base + 1 * DEFAULT_CLOCK_RATE + (31 - 17), NULL);
+
+  validate_buffer (3,
+      "pts", 3 * GST_SECOND,
+      "offset", 67,
+      "rtptime", timestamp_base + 1 * DEFAULT_CLOCK_RATE + (67 - 17), NULL);
+
+  validate_events_received (3);
+
+  validate_normal_start_events (0);
+
+  destroy_payloader (state);
+}
+
+GST_END_TEST;
+
+/* basepayloaders have a ptime-multiple property but its value does not affect
+ * any payloaded RTP packets as this is supposed to be done by inherited
+ * classes. therefore this test only validates the default value of the
+ * property, makes sure that a set value actually sticks and that the boundary
+ * values are indeed allowed to be set.
+ */
+GST_START_TEST (rtp_base_payload_property_ptime_multiple_test)
+{
+  State *state;
+  gint64 multiple;
+
+  state = create_payloader ("application/x-rtp", &sinktmpl, NULL);
+
+  g_object_get (state->element, "ptime-multiple", &multiple, NULL);
+  fail_unless_equals_int64 (multiple, 0);
+
+  g_object_set (state->element, "ptime-multiple", 42, NULL);
+  g_object_get (state->element, "ptime-multiple", &multiple, NULL);
+  fail_unless_equals_int64 (multiple, 42);
+
+  g_object_set (state->element, "ptime-multiple", 0, NULL);
+  g_object_get (state->element, "ptime-multiple", &multiple, NULL);
+  fail_unless_equals_int64 (multiple, 0);
+
+  g_object_set (state->element, "ptime-multiple", G_MAXINT64, NULL);
+  g_object_get (state->element, "ptime-multiple", &multiple, NULL);
+  fail_unless_equals_int64 (multiple, G_MAXINT64);
+
+  destroy_payloader (state);
+}
+
+GST_END_TEST;
+
+/* basepayloaders have a property called stats that is used to atomically
+ * retrieve several values (clock-rate, running-time, seqnum and timestamp) that
+ * relate to the stream and its current progress. this test is meant to test
+ * retrieval of these values.
+ *
+ * first of all perfect-rtptime is set to TRUE, next the the test starts out by
+ * setting seqnum-offset and timestamp-offset to known values to prevent that
+ * sequence numbers and timestamps of payloaded RTP packets are random. next the
+ * stats property is retrieved. the clock-rate must be at the default
+ * DEFAULT_CLOCK_RATE, while running-time must be equal to the first buffers
+ * PTS. the sequence number should be equal to the initialized value of
+ * seqnum-offset and the timestamp should be equal to the initialized value of
+ * timestamp-offset. after pushing a second buffer the stats property is
+ * validate again. this time running-time, seqnum and timestamp should have
+ * advanced as expected. next the pipeline is brought to NULL state to be able
+ * to change the perfect-rtptime property to FALSE before going back to PLAYING
+ * state. this is done to validate that the stats values reflect normal
+ * timestamp updates that are not based on input buffer offsets as expected.
+ * lastly two buffers are pushed and the stats property retrieved after each
+ * time. here it is expected that the sequence numbers values are restarted at
+ * the inital value while the timestamps and running-time reflect the input
+ * buffers.
+ */
+GST_START_TEST (rtp_base_payload_property_stats_test)
+{
+  State *state;
+
+  state = create_payloader ("application/x-rtp", &sinktmpl,
+      "perfect-rtptime", TRUE, "seqnum-offset", 0, "timestamp-offset", 0, NULL);
+
+  set_state (state, GST_STATE_PLAYING);
+
+  push_buffer (state, "pts", 0 * GST_SECOND, NULL);
+  validate_stats (state,
+      DEFAULT_CLOCK_RATE, 0 * GST_SECOND, 0, 0 * DEFAULT_CLOCK_RATE);
+
+  push_buffer (state, "pts", 1 * GST_SECOND, NULL);
+  validate_stats (state,
+      DEFAULT_CLOCK_RATE, 1 * DEFAULT_CLOCK_RATE, 1, 1 * DEFAULT_CLOCK_RATE);
+
+  set_state (state, GST_STATE_NULL);
+  g_object_set (state->element, "perfect-rtptime", FALSE, NULL);
+  set_state (state, GST_STATE_PLAYING);
+
+  push_buffer (state, "pts", 2 * GST_SECOND, NULL);
+  validate_stats (state,
+      DEFAULT_CLOCK_RATE, 2 * GST_SECOND, 0, 2 * DEFAULT_CLOCK_RATE);
+
+  push_buffer (state, "pts", 3 * GST_SECOND, NULL);
+  validate_stats (state,
+      DEFAULT_CLOCK_RATE, 3 * GST_SECOND, 1, 3 * DEFAULT_CLOCK_RATE);
+  set_state (state, GST_STATE_NULL);
+
+  validate_buffers_received (4);
+
+  validate_buffer (0, "pts", 0 * GST_SECOND, NULL);
+
+  validate_buffer (1, "pts", 1 * GST_SECOND, NULL);
+
+  validate_buffer (2, "pts", 2 * GST_SECOND, NULL);
+
+  validate_buffer (3, "pts", 3 * GST_SECOND, NULL);
+
+  validate_events_received (6);
+
+  validate_normal_start_events (0);
+
+  validate_normal_start_events (3);
+
+  destroy_payloader (state);
+}
+
+GST_END_TEST;
+
+static Suite *
+rtp_basepayloading_suite (void)
+{
+  Suite *s = suite_create ("rtp_base_payloading_test");
+  TCase *tc_chain = tcase_create ("payloading tests");
+
+  tcase_set_timeout (tc_chain, 60);
+
+  suite_add_tcase (s, tc_chain);
+  tcase_add_test (tc_chain, rtp_base_payload_buffer_test);
+  tcase_add_test (tc_chain, rtp_base_payload_buffer_list_test);
+
+  tcase_add_test (tc_chain, rtp_base_payload_normal_rtptime_test);
+  tcase_add_test (tc_chain, rtp_base_payload_perfect_rtptime_test);
+  tcase_add_test (tc_chain, rtp_base_payload_no_pts_no_offset_test);
+
+  tcase_add_test (tc_chain, rtp_base_payload_downstream_caps_test);
+
+  tcase_add_test (tc_chain, rtp_base_payload_ssrc_collision_test);
+  tcase_add_test (tc_chain, rtp_base_payload_reconfigure_test);
+
+  tcase_add_test (tc_chain, rtp_base_payload_property_mtu_test);
+  tcase_add_test (tc_chain, rtp_base_payload_property_pt_test);
+  tcase_add_test (tc_chain, rtp_base_payload_property_ssrc_test);
+  tcase_add_test (tc_chain, rtp_base_payload_property_timestamp_offset_test);
+  tcase_add_test (tc_chain, rtp_base_payload_property_seqnum_offset_test);
+  tcase_add_test (tc_chain, rtp_base_payload_property_max_ptime_test);
+  tcase_add_test (tc_chain, rtp_base_payload_property_min_ptime_test);
+  tcase_add_test (tc_chain, rtp_base_payload_property_timestamp_test);
+  tcase_add_test (tc_chain, rtp_base_payload_property_seqnum_test);
+  tcase_add_test (tc_chain, rtp_base_payload_property_perfect_rtptime_test);
+  tcase_add_test (tc_chain, rtp_base_payload_property_ptime_multiple_test);
+  tcase_add_test (tc_chain, rtp_base_payload_property_stats_test);
+
+  return s;
+}
+
+GST_CHECK_MAIN (rtp_basepayloading)
diff --git a/tests/check/libs/rtspconnection.c b/tests/check/libs/rtspconnection.c
new file mode 100644
index 0000000..2110c82
--- /dev/null
+++ b/tests/check/libs/rtspconnection.c
@@ -0,0 +1,670 @@
+/* GStreamer unit tests for the GstRTSPConnection API (RTSP support
+ * library)
+ *
+ * Copyright (C) 2014 Ognyan Tonchev <ognyan axis com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <gst/check/gstcheck.h>
+
+#include <gst/rtsp/gstrtspconnection.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <string.h>
+
+
+static const gchar *get_msg =
+    "GET /example/url HTTP/1.0\r\n"
+    "Host: 127.0.0.1\r\n" "x-sessioncookie: 805849328\r\n\r\n";
+static const gchar *post_msg =
+    "POST /example/url HTTP/1.0\r\n"
+    "Host: 127.0.0.1\r\n"
+    "x-sessioncookie: 805849328\r\n"
+    "Content-Length: 0\r\n"
+    "Content-Type: application/x-rtsp-tunnelled\r\n\r\n";
+
+static guint tunnel_start_count;
+static guint tunnel_complete_count;
+static guint tunnel_lost_count;
+static guint closed_count;
+static guint message_sent_count;
+
+typedef struct
+{
+  GMainLoop *loop;
+  guint16 port;
+  GSocketConnection *conn;
+  GMutex mutex;
+  GCond cond;
+  gboolean started;
+} ServiceData;
+
+static gboolean
+incoming_callback (GSocketService * service, GSocketConnection * connection,
+    GObject * source_object, gpointer user_data)
+{
+  ServiceData *data = user_data;
+
+  GST_DEBUG ("new incoming connection");
+  data->conn = g_object_ref (connection);
+  g_main_loop_quit (data->loop);
+  return FALSE;
+}
+
+static gpointer
+service_thread_func (gpointer user_data)
+{
+  ServiceData *data = user_data;
+  GMainContext *service_context;
+  GSocketService *service;
+
+  service_context = g_main_context_new ();
+  g_main_context_push_thread_default (service_context);
+
+  data->loop = g_main_loop_new (service_context, FALSE);
+
+  /* find available port and start service */
+  service = g_socket_service_new ();
+  data->port = g_socket_listener_add_any_inet_port ((GSocketListener *) service,
+      NULL, NULL);
+  fail_unless (data->port != 0);
+
+  /* get notified upon new connection */
+  g_signal_connect (service, "incoming", G_CALLBACK (incoming_callback), data);
+
+  g_socket_service_start (service);
+
+  /* service is started */
+  g_mutex_lock (&data->mutex);
+  data->started = TRUE;
+  g_cond_signal (&data->cond);
+  g_mutex_unlock (&data->mutex);
+
+  /* our service will run in the main context of this main loop */
+  g_main_loop_run (data->loop);
+
+  g_main_context_pop_thread_default (service_context);
+
+  g_main_loop_unref (data->loop);
+  data->loop = NULL;
+
+  return NULL;
+}
+
+static void
+create_connection (GSocketConnection ** client_conn,
+    GSocketConnection ** server_conn)
+{
+  ServiceData *data;
+  GThread *service_thread;
+  GSocketClient *client = g_socket_client_new ();
+
+  data = g_new0 (ServiceData, 1);
+  g_mutex_init (&data->mutex);
+  g_cond_init (&data->cond);
+
+  service_thread = g_thread_new ("service thread", service_thread_func, data);
+  fail_unless (service_thread != NULL);
+
+  /* wait for the service to start */
+  g_mutex_lock (&data->mutex);
+  while (!data->started) {
+    g_cond_wait (&data->cond, &data->mutex);
+  }
+  g_mutex_unlock (&data->mutex);
+
+  /* create the tcp link */
+  *client_conn = g_socket_client_connect_to_host (client, (gchar *) "localhost",
+      data->port, NULL, NULL);
+  fail_unless (*client_conn != NULL);
+  fail_unless (g_socket_connection_is_connected (*client_conn));
+
+  g_thread_join (service_thread);
+  *server_conn = data->conn;
+  data->conn = NULL;
+  fail_unless (g_socket_connection_is_connected (*server_conn));
+
+  g_mutex_clear (&data->mutex);
+  g_cond_clear (&data->cond);
+  g_free (data);
+  g_object_unref (client);
+}
+
+static GstRTSPStatusCode
+tunnel_start (GstRTSPWatch * watch, gpointer user_data)
+{
+  tunnel_start_count++;
+  return GST_RTSP_STS_OK;
+}
+
+static GstRTSPResult
+tunnel_complete (GstRTSPWatch * watch, gpointer user_data)
+{
+  tunnel_complete_count++;
+  return GST_RTSP_OK;
+}
+
+static GstRTSPResult
+tunnel_lost (GstRTSPWatch * watch, gpointer user_data)
+{
+  tunnel_lost_count++;
+  return GST_RTSP_OK;
+}
+
+static GstRTSPResult
+closed (GstRTSPWatch * watch, gpointer user_data)
+{
+  closed_count++;
+  return GST_RTSP_OK;
+}
+
+static GstRTSPResult
+message_sent (GstRTSPWatch * watch, guint id, gpointer user_data)
+{
+  message_sent_count++;
+  return GST_RTSP_OK;
+}
+
+static GstRTSPWatchFuncs watch_funcs = {
+  NULL,
+  message_sent,
+  closed,
+  NULL,
+  tunnel_start,
+  tunnel_complete,
+  NULL,
+  tunnel_lost
+};
+
+/* setts up a new tunnel, then disconnects the read connection and creates it
+ * again */
+GST_START_TEST (test_rtspconnection_tunnel_setup)
+{
+  GstRTSPConnection *rtsp_conn1 = NULL;
+  GstRTSPConnection *rtsp_conn2 = NULL;
+  GstRTSPWatch *watch1;
+  GstRTSPWatch *watch2;
+  GstRTSPResult res;
+  GSocketConnection *client_get = NULL;
+  GSocketConnection *server_get = NULL;
+  GSocketConnection *client_post = NULL;
+  GSocketConnection *server_post = NULL;
+  GSocket *server_sock;
+  GOutputStream *ostream_get;
+  GInputStream *istream_get;
+  GOutputStream *ostream_post;
+  gsize size = 0;
+  gchar buffer[1024];
+
+  /* create GET connection */
+  create_connection (&client_get, &server_get);
+  server_sock = g_socket_connection_get_socket (server_get);
+  fail_unless (server_sock != NULL);
+
+  res = gst_rtsp_connection_create_from_socket (server_sock, "127.0.0.1", 4444,
+      NULL, &rtsp_conn1);
+  fail_unless (res == GST_RTSP_OK);
+  fail_unless (rtsp_conn1 != NULL);
+
+  watch1 = gst_rtsp_watch_new (rtsp_conn1, &watch_funcs, NULL, NULL);
+  fail_unless (watch1 != NULL);
+  fail_unless (gst_rtsp_watch_attach (watch1, NULL) > 0);
+  g_source_unref ((GSource *) watch1);
+
+  ostream_get = g_io_stream_get_output_stream (G_IO_STREAM (client_get));
+  fail_unless (ostream_get != NULL);
+
+  istream_get = g_io_stream_get_input_stream (G_IO_STREAM (client_get));
+  fail_unless (istream_get != NULL);
+
+  /* initiate the tunnel by sending HTTP GET */
+  fail_unless (g_output_stream_write_all (ostream_get, get_msg,
+          strlen (get_msg), &size, NULL, NULL));
+  fail_unless (size == strlen (get_msg));
+
+  while (!g_main_context_iteration (NULL, TRUE));
+  fail_unless (tunnel_start_count == 1);
+  fail_unless (tunnel_complete_count == 0);
+  fail_unless (tunnel_lost_count == 0);
+  fail_unless (closed_count == 0);
+
+  /* read the HTTP GET response */
+  size = g_input_stream_read (istream_get, buffer, 1024, NULL, NULL);
+  fail_unless (size > 0);
+  buffer[size] = 0;
+  fail_unless (g_strrstr (buffer, "HTTP/1.0 200 OK") != NULL);
+
+  /* create POST channel */
+  create_connection (&client_post, &server_post);
+  server_sock = g_socket_connection_get_socket (server_post);
+  fail_unless (server_sock != NULL);
+
+  res = gst_rtsp_connection_create_from_socket (server_sock, "127.0.0.1", 4444,
+      NULL, &rtsp_conn2);
+  fail_unless (res == GST_RTSP_OK);
+  fail_unless (rtsp_conn2 != NULL);
+
+  watch2 = gst_rtsp_watch_new (rtsp_conn2, &watch_funcs, NULL, NULL);
+  fail_unless (watch2 != NULL);
+  fail_unless (gst_rtsp_watch_attach (watch2, NULL) > 0);
+  g_source_unref ((GSource *) watch2);
+
+  ostream_post = g_io_stream_get_output_stream (G_IO_STREAM (client_post));
+  fail_unless (ostream_post != NULL);
+
+  /* complete the tunnel by sending HTTP POST */
+  fail_unless (g_output_stream_write_all (ostream_post, post_msg,
+          strlen (post_msg), &size, NULL, NULL));
+  fail_unless (size == strlen (post_msg));
+
+  while (!g_main_context_iteration (NULL, TRUE));
+  fail_unless (tunnel_start_count == 1);
+  fail_unless (tunnel_complete_count == 1);
+  fail_unless (tunnel_lost_count == 0);
+  fail_unless (closed_count == 0);
+
+  /* merge the two connections together */
+  fail_unless (gst_rtsp_connection_do_tunnel (rtsp_conn1, rtsp_conn2) ==
+      GST_RTSP_OK);
+  gst_rtsp_watch_reset (watch1);
+  g_source_destroy ((GSource *) watch2);
+  gst_rtsp_connection_free (rtsp_conn2);
+  rtsp_conn2 = NULL;
+
+  /* it must be possible to reconnect the POST channel */
+  g_object_unref (client_post);
+  while (!g_main_context_iteration (NULL, TRUE));
+  fail_unless (tunnel_start_count == 1);
+  fail_unless (tunnel_complete_count == 1);
+  fail_unless (tunnel_lost_count == 1);
+  fail_unless (closed_count == 0);
+  g_object_unref (server_post);
+
+  /* no other source should get dispatched */
+  fail_if (g_main_context_iteration (NULL, FALSE));
+
+  /* create new POST connection */
+  create_connection (&client_post, &server_post);
+  server_sock = g_socket_connection_get_socket (server_post);
+  fail_unless (server_sock != NULL);
+
+  res = gst_rtsp_connection_create_from_socket (server_sock, "127.0.0.1", 4444,
+      NULL, &rtsp_conn2);
+  fail_unless (res == GST_RTSP_OK);
+  fail_unless (rtsp_conn2 != NULL);
+
+  watch2 = gst_rtsp_watch_new (rtsp_conn2, &watch_funcs, NULL, NULL);
+  fail_unless (watch2 != NULL);
+  fail_unless (gst_rtsp_watch_attach (watch2, NULL) > 0);
+  g_source_unref ((GSource *) watch2);
+
+  ostream_post = g_io_stream_get_output_stream (G_IO_STREAM (client_post));
+  fail_unless (ostream_post != NULL);
+
+  /* complete the tunnel by sending HTTP POST */
+  fail_unless (g_output_stream_write_all (ostream_post, post_msg,
+          strlen (post_msg), &size, NULL, NULL));
+  fail_unless (size == strlen (post_msg));
+
+  while (!g_main_context_iteration (NULL, TRUE));
+  fail_unless (tunnel_start_count == 1);
+  fail_unless (tunnel_complete_count == 2);
+  fail_unless (tunnel_lost_count == 1);
+  fail_unless (closed_count == 0);
+
+  /* merge the two connections together */
+  fail_unless (gst_rtsp_connection_do_tunnel (rtsp_conn1, rtsp_conn2) ==
+      GST_RTSP_OK);
+  gst_rtsp_watch_reset (watch1);
+  g_source_destroy ((GSource *) watch2);
+  gst_rtsp_connection_free (rtsp_conn2);
+  rtsp_conn2 = NULL;
+
+  /* check if rtspconnection can detect close of the get channel */
+  g_object_unref (client_get);
+  while (!g_main_context_iteration (NULL, TRUE));
+  fail_unless (tunnel_start_count == 1);
+  fail_unless (tunnel_complete_count == 2);
+  fail_unless (tunnel_lost_count == 1);
+  fail_unless (closed_count == 1);
+
+  fail_unless (gst_rtsp_connection_close (rtsp_conn1) == GST_RTSP_OK);
+  fail_unless (gst_rtsp_connection_free (rtsp_conn1) == GST_RTSP_OK);
+
+  g_object_unref (client_post);
+  g_object_unref (server_post);
+  g_object_unref (server_get);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_rtspconnection_send_receive)
+{
+  GSocketConnection *input_conn = NULL;
+  GSocketConnection *output_conn = NULL;
+  GSocket *input_sock;
+  GSocket *output_sock;
+  GstRTSPConnection *rtsp_output_conn;
+  GstRTSPConnection *rtsp_input_conn;
+  GstRTSPMessage *msg;
+  gchar body[] = "message body";
+  gchar *recv_body;
+  guint recv_body_len;
+
+  create_connection (&input_conn, &output_conn);
+  input_sock = g_socket_connection_get_socket (input_conn);
+  fail_unless (input_sock != NULL);
+  output_sock = g_socket_connection_get_socket (output_conn);
+  fail_unless (output_sock != NULL);
+
+  fail_unless (gst_rtsp_connection_create_from_socket (input_sock, "127.0.0.1",
+          4444, NULL, &rtsp_input_conn) == GST_RTSP_OK);
+  fail_unless (rtsp_input_conn != NULL);
+
+  fail_unless (gst_rtsp_connection_create_from_socket (output_sock, "127.0.0.1",
+          4444, NULL, &rtsp_output_conn) == GST_RTSP_OK);
+  fail_unless (rtsp_output_conn != NULL);
+
+  /* send data message */
+  fail_unless (gst_rtsp_message_new_data (&msg, 1) == GST_RTSP_OK);
+  fail_unless (gst_rtsp_message_set_body (msg, (guint8 *) body,
+          sizeof (body)) == GST_RTSP_OK);
+  fail_unless (gst_rtsp_connection_send (rtsp_output_conn, msg,
+          NULL) == GST_RTSP_OK);
+  fail_unless (gst_rtsp_message_free (msg) == GST_RTSP_OK);
+  msg = NULL;
+
+  /* receive data message and make sure it is correct */
+  fail_unless (gst_rtsp_message_new (&msg) == GST_RTSP_OK);
+  fail_unless (gst_rtsp_connection_receive (rtsp_input_conn, msg, NULL) ==
+      GST_RTSP_OK);
+  fail_unless (gst_rtsp_message_get_type (msg) == GST_RTSP_MESSAGE_DATA);
+  fail_unless (gst_rtsp_message_get_body (msg, (guint8 **) & recv_body,
+          &recv_body_len) == GST_RTSP_OK);
+  /* RTSPConnection adds an extra byte for the trailing '\0' */
+  fail_unless_equals_int (recv_body_len, sizeof (body) + 1);
+  fail_unless_equals_string (recv_body, body);
+  fail_unless (gst_rtsp_message_free (msg) == GST_RTSP_OK);
+  msg = NULL;
+
+  /* send request message */
+  fail_unless (gst_rtsp_message_new_request (&msg, GST_RTSP_OPTIONS,
+          "example.org") == GST_RTSP_OK);
+  fail_unless (gst_rtsp_message_set_body (msg, (guint8 *) body,
+          sizeof (body)) == GST_RTSP_OK);
+  fail_unless (gst_rtsp_connection_send (rtsp_output_conn, msg,
+          NULL) == GST_RTSP_OK);
+  fail_unless (gst_rtsp_message_free (msg) == GST_RTSP_OK);
+  msg = NULL;
+
+  /* receive request message and make sure it is correct */
+  fail_unless (gst_rtsp_message_new (&msg) == GST_RTSP_OK);
+  fail_unless (gst_rtsp_connection_receive (rtsp_input_conn, msg, NULL) ==
+      GST_RTSP_OK);
+  fail_unless (gst_rtsp_message_get_type (msg) == GST_RTSP_MESSAGE_REQUEST);
+  fail_unless (gst_rtsp_message_get_body (msg, (guint8 **) & recv_body,
+          &recv_body_len) == GST_RTSP_OK);
+  /* RTSPConnection adds an extra byte for the trailing '\0' */
+  fail_unless_equals_int (recv_body_len, sizeof (body) + 1);
+  fail_unless_equals_string (recv_body, body);
+  fail_unless (gst_rtsp_message_free (msg) == GST_RTSP_OK);
+  msg = NULL;
+
+  fail_unless (gst_rtsp_connection_close (rtsp_input_conn) == GST_RTSP_OK);
+  fail_unless (gst_rtsp_connection_free (rtsp_input_conn) == GST_RTSP_OK);
+  fail_unless (gst_rtsp_connection_close (rtsp_output_conn) == GST_RTSP_OK);
+  fail_unless (gst_rtsp_connection_free (rtsp_output_conn) == GST_RTSP_OK);
+
+  g_object_unref (input_conn);
+  g_object_unref (output_conn);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_rtspconnection_connect)
+{
+  ServiceData *data;
+  GThread *service_thread;
+  GSocketConnection *socket_conn;
+  GstRTSPConnection *rtsp_conn = NULL;
+  GstRTSPUrl *url = NULL;
+  gchar *path;
+
+  data = g_new0 (ServiceData, 1);
+  g_mutex_init (&data->mutex);
+  g_cond_init (&data->cond);
+
+  /* create socket service */
+  service_thread = g_thread_new ("service thread", service_thread_func, data);
+  fail_unless (service_thread != NULL);
+
+  /* wait for the service to start */
+  g_mutex_lock (&data->mutex);
+  while (!data->started) {
+    g_cond_wait (&data->cond, &data->mutex);
+  }
+  g_mutex_unlock (&data->mutex);
+
+  /* connect to our service using the RTSPConnection API */
+  path = g_strdup_printf ("rtsp://localhost:%d", data->port);
+  fail_unless (gst_rtsp_url_parse (path, &url) == GST_RTSP_OK);
+  fail_unless (gst_rtsp_connection_create (url, &rtsp_conn) == GST_RTSP_OK);
+  fail_unless (gst_rtsp_connection_connect (rtsp_conn, NULL) == GST_RTSP_OK);
+  g_free (path);
+  gst_rtsp_url_free (url);
+
+  /* wait for the other end and check whether it is connected */
+  g_thread_join (service_thread);
+  socket_conn = data->conn;
+  data->conn = NULL;
+  fail_unless (g_socket_connection_is_connected (socket_conn));
+
+  fail_unless (gst_rtsp_connection_close (rtsp_conn) == GST_RTSP_OK);
+  fail_unless (gst_rtsp_connection_free (rtsp_conn) == GST_RTSP_OK);
+  g_object_unref (socket_conn);
+  g_mutex_clear (&data->mutex);
+  g_cond_clear (&data->cond);
+  g_free (data);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_rtspconnection_poll)
+{
+  GSocketConnection *conn1 = NULL;
+  GSocketConnection *conn2 = NULL;
+  GSocket *sock;
+  GstRTSPConnection *rtsp_conn;
+  GstRTSPEvent event;
+  GOutputStream *ostream;
+  gsize size;
+  GTimeVal tv;
+
+  create_connection (&conn1, &conn2);
+  sock = g_socket_connection_get_socket (conn1);
+  fail_unless (sock != NULL);
+
+  ostream = g_io_stream_get_output_stream (G_IO_STREAM (conn2));
+  fail_unless (ostream != NULL);
+
+  fail_unless (gst_rtsp_connection_create_from_socket (sock, "127.0.0.1",
+          4444, NULL, &rtsp_conn) == GST_RTSP_OK);
+  fail_unless (rtsp_conn != NULL);
+
+  /* should be possible to write on socket */
+  fail_unless (gst_rtsp_connection_poll (rtsp_conn, GST_RTSP_EV_WRITE, &event,
+          NULL) == GST_RTSP_OK);
+  fail_unless (event & GST_RTSP_EV_WRITE);
+
+  /* but not read, add timeout so that we don't block forever */
+  tv.tv_sec = 1;
+  tv.tv_usec = 0;
+  fail_unless (gst_rtsp_connection_poll (rtsp_conn, GST_RTSP_EV_READ, &event,
+          &tv) == GST_RTSP_ETIMEOUT);
+  fail_if (event & GST_RTSP_EV_READ);
+
+  /* write on the other end and make sure socket can be read */
+  fail_unless (g_output_stream_write_all (ostream, "data", 5, &size, NULL,
+          NULL));
+  fail_unless (gst_rtsp_connection_poll (rtsp_conn, GST_RTSP_EV_READ, &event,
+          NULL) == GST_RTSP_OK);
+  fail_unless (event & GST_RTSP_EV_READ);
+
+  fail_unless (gst_rtsp_connection_close (rtsp_conn) == GST_RTSP_OK);
+  fail_unless (gst_rtsp_connection_free (rtsp_conn) == GST_RTSP_OK);
+  g_object_unref (conn1);
+  g_object_unref (conn2);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_rtspconnection_backlog)
+{
+  GSocketConnection *conn1 = NULL;
+  GSocketConnection *conn2 = NULL;
+  GSocket *sock;
+  GstRTSPConnection *rtsp_conn = NULL;
+  GstRTSPWatch *watch;
+  GInputStream *istream;
+  guint8 *buffer;
+  guint8 recv[1024];
+  gsize count;
+  GstRTSPResult res = GST_RTSP_OK;
+  guint num_queued;
+  guint num_sent;
+
+  create_connection (&conn1, &conn2);
+  sock = g_socket_connection_get_socket (conn1);
+  fail_unless (sock != NULL);
+
+  fail_unless (gst_rtsp_connection_create_from_socket (sock, "127.0.0.1",
+          4444, NULL, &rtsp_conn) == GST_RTSP_OK);
+  fail_unless (rtsp_conn != NULL);
+
+  watch = gst_rtsp_watch_new (rtsp_conn, &watch_funcs, NULL, NULL);
+  fail_unless (watch != NULL);
+  fail_unless (gst_rtsp_watch_attach (watch, NULL) > 0);
+  g_source_unref ((GSource *) watch);
+
+  gst_rtsp_watch_set_send_backlog (watch, 1024, 0);
+
+  /* write until we fill tcp window and writes result in would_block,
+   * data will then start getting queued until the backlog also gets full */
+  num_queued = 0;
+  num_sent = 0;
+  while (res == GST_RTSP_OK) {
+    guint id = 0;
+    buffer = malloc (1024);
+    memset (buffer, 0, 1024);
+    res = gst_rtsp_watch_write_data (watch, buffer, 1024, &id);
+    if (id > 0)
+      num_queued++;
+    if (res == GST_RTSP_OK)
+      num_sent++;
+  }
+
+  /* make sure we got enomem and at least 1 message got queued */
+  fail_unless (res == GST_RTSP_ENOMEM);
+  fail_unless (num_queued > 0);
+
+  istream = g_io_stream_get_input_stream (G_IO_STREAM (conn2));
+  fail_unless (istream != NULL);
+
+  /* read a bit from the socket and make sure queued data gets sent */
+  while (num_queued > 0) {
+    fail_unless (g_input_stream_read_all (istream, recv, 1024, &count, NULL,
+            NULL));
+    num_sent--;
+
+    g_main_context_iteration (NULL, FALSE);
+    num_queued -= message_sent_count;
+    fail_unless (num_queued >= 0);
+  }
+
+  /* make sure we can read the rest of the data */
+  while (num_sent > 0) {
+    fail_unless (g_input_stream_read_all (istream, recv, 1024, &count, NULL,
+            NULL));
+    num_sent--;
+  }
+
+  g_source_destroy ((GSource *) watch);
+  fail_unless (gst_rtsp_connection_close (rtsp_conn) == GST_RTSP_OK);
+  fail_unless (gst_rtsp_connection_free (rtsp_conn) == GST_RTSP_OK);
+  g_object_unref (conn1);
+  g_object_unref (conn2);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_rtspconnection_ip)
+{
+  GstRTSPConnection *conn = NULL;
+  GstRTSPUrl *url = NULL;
+
+  fail_unless (gst_rtsp_url_parse ("rtsp://127.0.0.1:42", &url) == GST_RTSP_OK);
+  fail_unless (url != NULL);
+  fail_unless (gst_rtsp_connection_create (url, &conn) == GST_RTSP_OK);
+  fail_unless (conn != NULL);
+
+  gst_rtsp_connection_set_ip (conn, "127.0.0.1");
+  fail_unless_equals_string (gst_rtsp_connection_get_ip (conn), "127.0.0.1");
+
+  gst_rtsp_url_free (url);
+  fail_unless (gst_rtsp_connection_free (conn) == GST_RTSP_OK);
+}
+
+GST_END_TEST;
+
+
+static Suite *
+rtspconnection_suite (void)
+{
+  Suite *s = suite_create ("rtsp support library(rtspconnection)");
+  TCase *tc_chain = tcase_create ("general");
+
+  suite_add_tcase (s, tc_chain);
+  tcase_add_test (tc_chain, test_rtspconnection_tunnel_setup);
+  tcase_add_test (tc_chain, test_rtspconnection_send_receive);
+  tcase_add_test (tc_chain, test_rtspconnection_connect);
+  tcase_add_test (tc_chain, test_rtspconnection_poll);
+  tcase_add_test (tc_chain, test_rtspconnection_backlog);
+  tcase_add_test (tc_chain, test_rtspconnection_ip);
+
+  return s;
+}
+
+int
+main (int argc, char **argv)
+{
+  int nf;
+
+  Suite *s = rtspconnection_suite ();
+  SRunner *sr = srunner_create (s);
+
+  gst_check_init (&argc, &argv);
+
+  srunner_run_all (sr, CK_NORMAL);
+  nf = srunner_ntests_failed (sr);
+  srunner_free (sr);
+
+  return nf;
+}
diff --git a/tests/check/libs/videodecoder.c b/tests/check/libs/videodecoder.c
index 7f6bb98..628a48b 100644
--- a/tests/check/libs/videodecoder.c
+++ b/tests/check/libs/videodecoder.c
@@ -183,12 +183,12 @@
 static void
 setup_videodecodertester (void)
 {
-  GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink",
+  static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink",
       GST_PAD_SINK,
       GST_PAD_ALWAYS,
       GST_STATIC_CAPS ("video/x-raw")
       );
-  GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
+  static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
       GST_PAD_SRC,
       GST_PAD_ALWAYS,
       GST_STATIC_CAPS ("video/x-test-custom")
@@ -209,6 +209,9 @@
   gst_check_teardown_src_pad (dec);
   gst_check_teardown_sink_pad (dec);
   gst_check_teardown_element (dec);
+
+  g_list_free_full (events, (GDestroyNotify) gst_event_unref);
+  events = NULL;
 }
 
 static GstBuffer *
@@ -245,7 +248,7 @@
       TEST_VIDEO_WIDTH, "height", G_TYPE_INT, TEST_VIDEO_HEIGHT, "framerate",
       GST_TYPE_FRACTION, TEST_VIDEO_FPS_N, TEST_VIDEO_FPS_D, NULL);
   fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_caps (caps)));
-
+  gst_caps_unref (caps);
 }
 
 #define NUM_BUFFERS 1000
@@ -412,9 +415,7 @@
   fail_unless (events_iter == NULL);
 
   g_list_free_full (buffers, (GDestroyNotify) gst_buffer_unref);
-  g_list_free_full (events, (GDestroyNotify) gst_event_unref);
   buffers = NULL;
-  events = NULL;
 
   cleanup_videodecodertest ();
 }
diff --git a/tests/check/libs/videoencoder.c b/tests/check/libs/videoencoder.c
new file mode 100644
index 0000000..925b2bf
--- /dev/null
+++ b/tests/check/libs/videoencoder.c
@@ -0,0 +1,410 @@
+/* GStreamer
+ *
+ * Copyright (C) 2014 Samsung Electronics. All rights reserved.
+ *   Author: Thiago Santos <ts.santos@sisa.samsung.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+#include <gst/gst.h>
+#include <gst/check/gstcheck.h>
+#include <gst/video/video.h>
+#include <gst/app/app.h>
+
+static GstPad *mysrcpad, *mysinkpad;
+static GstElement *dec;
+static GList *events = NULL;
+
+#define TEST_VIDEO_WIDTH 640
+#define TEST_VIDEO_HEIGHT 480
+#define TEST_VIDEO_FPS_N 30
+#define TEST_VIDEO_FPS_D 1
+
+#define GST_VIDEO_ENCODER_TESTER_TYPE gst_video_encoder_tester_get_type()
+static GType gst_video_encoder_tester_get_type (void);
+
+typedef struct _GstVideoEncoderTester GstVideoEncoderTester;
+typedef struct _GstVideoEncoderTesterClass GstVideoEncoderTesterClass;
+
+struct _GstVideoEncoderTester
+{
+  GstVideoEncoder parent;
+};
+
+struct _GstVideoEncoderTesterClass
+{
+  GstVideoEncoderClass parent_class;
+};
+
+G_DEFINE_TYPE (GstVideoEncoderTester, gst_video_encoder_tester,
+    GST_TYPE_VIDEO_ENCODER);
+
+static gboolean
+gst_video_encoder_tester_start (GstVideoEncoder * dec)
+{
+  return TRUE;
+}
+
+static gboolean
+gst_video_encoder_tester_stop (GstVideoEncoder * dec)
+{
+  return TRUE;
+}
+
+static gboolean
+gst_video_encoder_tester_set_format (GstVideoEncoder * dec,
+    GstVideoCodecState * state)
+{
+  GstVideoCodecState *res = gst_video_encoder_set_output_state (dec,
+      gst_caps_new_simple ("video/x-test-custom", "width", G_TYPE_INT,
+          480, "height", G_TYPE_INT, 360, NULL),
+      NULL);
+
+  gst_video_codec_state_unref (res);
+  return TRUE;
+}
+
+static GstFlowReturn
+gst_video_encoder_tester_handle_frame (GstVideoEncoder * dec,
+    GstVideoCodecFrame * frame)
+{
+  guint8 *data;
+  GstMapInfo map;
+  guint64 input_num;
+
+  gst_buffer_map (frame->input_buffer, &map, GST_MAP_READ);
+  input_num = *((guint64 *) map.data);
+  gst_buffer_unmap (frame->input_buffer, &map);
+
+  data = g_malloc (sizeof (guint64));
+  *(guint64 *) data = input_num;
+
+  frame->output_buffer = gst_buffer_new_wrapped (data, sizeof (guint64));
+  frame->pts = GST_BUFFER_PTS (frame->input_buffer);
+  frame->duration = GST_BUFFER_DURATION (frame->input_buffer);
+
+  return gst_video_encoder_finish_frame (dec, frame);
+}
+
+static void
+gst_video_encoder_tester_class_init (GstVideoEncoderTesterClass * klass)
+{
+  GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
+  GstVideoEncoderClass *videoencoder_class = GST_VIDEO_ENCODER_CLASS (klass);
+
+  static GstStaticPadTemplate sink_templ = GST_STATIC_PAD_TEMPLATE ("sink",
+      GST_PAD_SINK, GST_PAD_ALWAYS,
+      GST_STATIC_CAPS ("video/x-raw"));
+
+  static GstStaticPadTemplate src_templ = GST_STATIC_PAD_TEMPLATE ("src",
+      GST_PAD_SRC, GST_PAD_ALWAYS,
+      GST_STATIC_CAPS ("video/x-test-custom"));
+
+  gst_element_class_add_pad_template (element_class,
+      gst_static_pad_template_get (&sink_templ));
+  gst_element_class_add_pad_template (element_class,
+      gst_static_pad_template_get (&src_templ));
+
+  gst_element_class_set_metadata (element_class,
+      "VideoEncoderTester", "Encoder/Video", "yep", "me");
+
+  videoencoder_class->start = gst_video_encoder_tester_start;
+  videoencoder_class->stop = gst_video_encoder_tester_stop;
+  videoencoder_class->handle_frame = gst_video_encoder_tester_handle_frame;
+  videoencoder_class->set_format = gst_video_encoder_tester_set_format;
+}
+
+static void
+gst_video_encoder_tester_init (GstVideoEncoderTester * tester)
+{
+}
+
+static gboolean
+_mysinkpad_event (GstPad * pad, GstObject * parent, GstEvent * event)
+{
+  events = g_list_append (events, event);
+  return TRUE;
+}
+
+static void
+setup_videoencodertester (void)
+{
+  static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink",
+      GST_PAD_SINK,
+      GST_PAD_ALWAYS,
+      GST_STATIC_CAPS ("video/x-test-custom")
+      );
+  static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
+      GST_PAD_SRC,
+      GST_PAD_ALWAYS,
+      GST_STATIC_CAPS ("video/x-raw")
+      );
+
+  dec = g_object_new (GST_VIDEO_ENCODER_TESTER_TYPE, NULL);
+  mysrcpad = gst_check_setup_src_pad (dec, &srctemplate);
+  mysinkpad = gst_check_setup_sink_pad (dec, &sinktemplate);
+
+  gst_pad_set_event_function (mysinkpad, _mysinkpad_event);
+}
+
+static void
+cleanup_videoencodertest (void)
+{
+  gst_pad_set_active (mysrcpad, FALSE);
+  gst_pad_set_active (mysinkpad, FALSE);
+
+  gst_element_set_state (dec, GST_STATE_NULL);
+
+  gst_check_teardown_src_pad (dec);
+  gst_check_teardown_sink_pad (dec);
+  gst_check_teardown_element (dec);
+
+  g_list_free_full (events, (GDestroyNotify) gst_event_unref);
+  events = NULL;
+}
+
+static GstBuffer *
+create_test_buffer (guint64 num)
+{
+  GstBuffer *buffer;
+  guint64 *data = g_malloc (sizeof (guint64));
+
+  *data = num;
+
+  buffer = gst_buffer_new_wrapped (data, sizeof (guint64));
+
+  GST_BUFFER_PTS (buffer) =
+      gst_util_uint64_scale_round (num, GST_SECOND * TEST_VIDEO_FPS_D,
+      TEST_VIDEO_FPS_N);
+  GST_BUFFER_DURATION (buffer) =
+      gst_util_uint64_scale_round (GST_SECOND, TEST_VIDEO_FPS_D,
+      TEST_VIDEO_FPS_N);
+
+  return buffer;
+}
+
+static void
+send_startup_events (void)
+{
+  GstCaps *caps;
+
+  fail_unless (gst_pad_push_event (mysrcpad,
+          gst_event_new_stream_start ("randomvalue")));
+
+  /* push caps */
+  caps =
+      gst_caps_new_simple ("video/x-raw", "width", G_TYPE_INT,
+      TEST_VIDEO_WIDTH, "height", G_TYPE_INT, TEST_VIDEO_HEIGHT, "framerate",
+      GST_TYPE_FRACTION, TEST_VIDEO_FPS_N, TEST_VIDEO_FPS_D,
+      "format", G_TYPE_STRING, "GRAY8", NULL);
+  fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_caps (caps)));
+  gst_caps_unref (caps);
+}
+
+#define NUM_BUFFERS 100
+GST_START_TEST (videoencoder_playback)
+{
+  GstSegment segment;
+  GstBuffer *buffer;
+  guint64 i;
+  GList *iter;
+
+  setup_videoencodertester ();
+
+  gst_pad_set_active (mysrcpad, TRUE);
+  gst_element_set_state (dec, GST_STATE_PLAYING);
+  gst_pad_set_active (mysinkpad, TRUE);
+
+  send_startup_events ();
+
+  /* push a new segment */
+  gst_segment_init (&segment, GST_FORMAT_TIME);
+  fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment)));
+
+  /* push buffers, the data is actually a number so we can track them */
+  for (i = 0; i < NUM_BUFFERS; i++) {
+    buffer = create_test_buffer (i);
+
+    fail_unless (gst_pad_push (mysrcpad, buffer) == GST_FLOW_OK);
+  }
+
+  fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_eos ()));
+
+  /* check that all buffers were received by our source pad */
+  fail_unless (g_list_length (buffers) == NUM_BUFFERS);
+  i = 0;
+  for (iter = buffers; iter; iter = g_list_next (iter)) {
+    GstMapInfo map;
+    guint64 num;
+
+    buffer = iter->data;
+
+    gst_buffer_map (buffer, &map, GST_MAP_READ);
+
+    num = *(guint64 *) map.data;
+    fail_unless (i == num);
+    fail_unless (GST_BUFFER_PTS (buffer) == gst_util_uint64_scale_round (i,
+            GST_SECOND * TEST_VIDEO_FPS_D, TEST_VIDEO_FPS_N));
+    fail_unless (GST_BUFFER_DURATION (buffer) ==
+        gst_util_uint64_scale_round (GST_SECOND, TEST_VIDEO_FPS_D,
+            TEST_VIDEO_FPS_N));
+
+    gst_buffer_unmap (buffer, &map);
+    i++;
+  }
+
+  g_list_free_full (buffers, (GDestroyNotify) gst_buffer_unref);
+  buffers = NULL;
+
+  cleanup_videoencodertest ();
+}
+
+GST_END_TEST;
+
+/* make sure tags sent right before eos are pushed */
+GST_START_TEST (videoencoder_tags_before_eos)
+{
+  GstSegment segment;
+  GstBuffer *buffer;
+  GstTagList *tags;
+
+  setup_videoencodertester ();
+
+  gst_pad_set_active (mysrcpad, TRUE);
+  gst_element_set_state (dec, GST_STATE_PLAYING);
+  gst_pad_set_active (mysinkpad, TRUE);
+
+  send_startup_events ();
+
+  /* push a new segment */
+  gst_segment_init (&segment, GST_FORMAT_TIME);
+  fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment)));
+
+  /* push buffer */
+  buffer = create_test_buffer (0);
+  fail_unless (gst_pad_push (mysrcpad, buffer) == GST_FLOW_OK);
+
+  /* clean received events list */
+  g_list_free_full (events, (GDestroyNotify) gst_event_unref);
+  events = NULL;
+
+  /* push a tag event */
+  tags = gst_tag_list_new (GST_TAG_COMMENT, "test-comment", NULL);
+  fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_tag (tags)));
+
+  fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_eos ()));
+
+  /* check that the tag was received */
+  {
+    GstEvent *tag_event = events->data;
+    gchar *str;
+
+    fail_unless (GST_EVENT_TYPE (tag_event) == GST_EVENT_TAG);
+    gst_event_parse_tag (tag_event, &tags);
+    fail_unless (gst_tag_list_get_string (tags, GST_TAG_COMMENT, &str));
+    fail_unless (strcmp (str, "test-comment") == 0);
+    g_free (str);
+  }
+
+  g_list_free_full (buffers, (GDestroyNotify) gst_buffer_unref);
+  buffers = NULL;
+  g_list_free_full (events, (GDestroyNotify) gst_event_unref);
+  events = NULL;
+
+  cleanup_videoencodertest ();
+}
+
+GST_END_TEST;
+
+/* make sure events sent right before eos are pushed */
+GST_START_TEST (videoencoder_events_before_eos)
+{
+  GstSegment segment;
+  GstBuffer *buffer;
+  GstMessage *msg;
+
+  setup_videoencodertester ();
+
+  gst_pad_set_active (mysrcpad, TRUE);
+  gst_element_set_state (dec, GST_STATE_PLAYING);
+  gst_pad_set_active (mysinkpad, TRUE);
+
+  send_startup_events ();
+
+  /* push a new segment */
+  gst_segment_init (&segment, GST_FORMAT_TIME);
+  fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment)));
+
+  /* push buffer */
+  buffer = create_test_buffer (0);
+  fail_unless (gst_pad_push (mysrcpad, buffer) == GST_FLOW_OK);
+
+  /* clean received events list */
+  g_list_free_full (events, (GDestroyNotify) gst_event_unref);
+  events = NULL;
+
+  /* push a serialized event */
+  msg =
+      gst_message_new_element (GST_OBJECT (mysrcpad),
+      gst_structure_new_empty ("test"));
+  fail_unless (gst_pad_push_event (mysrcpad,
+          gst_event_new_sink_message ("sink-test", msg)));
+  gst_message_unref (msg);
+
+  fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_eos ()));
+
+  /* check that the tag was received */
+  {
+    GstEvent *msg_event = events->data;
+    const GstStructure *structure;
+
+    fail_unless (GST_EVENT_TYPE (msg_event) == GST_EVENT_SINK_MESSAGE);
+    fail_unless (gst_event_has_name (msg_event, "sink-test"));
+    gst_event_parse_sink_message (msg_event, &msg);
+    structure = gst_message_get_structure (msg);
+    fail_unless (gst_structure_has_name (structure, "test"));
+    gst_message_unref (msg);
+  }
+
+  g_list_free_full (buffers, (GDestroyNotify) gst_buffer_unref);
+  buffers = NULL;
+  g_list_free_full (events, (GDestroyNotify) gst_event_unref);
+  events = NULL;
+
+  cleanup_videoencodertest ();
+}
+
+GST_END_TEST;
+
+static Suite *
+gst_videoencoder_suite (void)
+{
+  Suite *s = suite_create ("GstVideoEncoder");
+  TCase *tc = tcase_create ("general");
+
+  suite_add_tcase (s, tc);
+  tcase_add_test (tc, videoencoder_playback);
+
+  tcase_add_test (tc, videoencoder_tags_before_eos);
+  tcase_add_test (tc, videoencoder_events_before_eos);
+
+  return s;
+}
+
+GST_CHECK_MAIN (gst_videoencoder);
diff --git a/tests/examples/Makefile.in b/tests/examples/Makefile.in
index 0412950..9b4787d 100644
--- a/tests/examples/Makefile.in
+++ b/tests/examples/Makefile.in
@@ -91,7 +91,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -403,9 +402,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/tests/examples/app/Makefile.in b/tests/examples/app/Makefile.in
index 7ffdc10..53c9beb 100644
--- a/tests/examples/app/Makefile.in
+++ b/tests/examples/app/Makefile.in
@@ -90,7 +90,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -437,9 +436,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/tests/examples/audio/Makefile.in b/tests/examples/audio/Makefile.in
index 6fd6bf1..88c5cce 100644
--- a/tests/examples/audio/Makefile.in
+++ b/tests/examples/audio/Makefile.in
@@ -88,7 +88,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -404,9 +403,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/tests/examples/dynamic/Makefile.in b/tests/examples/dynamic/Makefile.in
index 584ac73..acd25c5 100644
--- a/tests/examples/dynamic/Makefile.in
+++ b/tests/examples/dynamic/Makefile.in
@@ -89,7 +89,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -420,9 +419,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/tests/examples/encoding/Makefile.in b/tests/examples/encoding/Makefile.in
index 3bf5f55..d174c92 100644
--- a/tests/examples/encoding/Makefile.in
+++ b/tests/examples/encoding/Makefile.in
@@ -88,7 +88,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -396,9 +395,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/tests/examples/fft/Makefile.in b/tests/examples/fft/Makefile.in
index 883bca0..f8991f3 100644
--- a/tests/examples/fft/Makefile.in
+++ b/tests/examples/fft/Makefile.in
@@ -88,7 +88,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -394,9 +393,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/tests/examples/gio/Makefile.in b/tests/examples/gio/Makefile.in
index 2c9b7da..a35787d 100644
--- a/tests/examples/gio/Makefile.in
+++ b/tests/examples/gio/Makefile.in
@@ -88,7 +88,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -397,9 +396,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/tests/examples/overlay/Makefile.am b/tests/examples/overlay/Makefile.am
index f56935b..6bcdb8f 100644
--- a/tests/examples/overlay/Makefile.am
+++ b/tests/examples/overlay/Makefile.am
@@ -16,17 +16,17 @@
 EXAMPLES += qt-videooverlay
 
 qt_videooverlay_SOURCES = qt-videooverlay.cpp
-qt_videooverlay_CXXFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CXXFLAGS) $(X_CFLAGS) $(QT_CFLAGS)
+qt_videooverlay_CXXFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CXXFLAGS) $(X_CFLAGS) $(QT_CFLAGS) -fPIC
 qt_videooverlay_LDADD = \
 	$(top_builddir)/gst-libs/gst/video/libgstvideo-$(GST_API_VERSION).la \
 	$(GST_LIBS) $(X_LIBS) $(LIBM) $(QT_LIBS)
 endif
 
-if HAVE_QT_GV
+if HAVE_QT_MOC
 EXAMPLES += qtgv-videooverlay
 
 qtgv_videooverlay_SOURCES = qtgv-videooverlay.cpp qtgv-videooverlay.h
-qtgv_videooverlay_CXXFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CXXFLAGS) $(X_CFLAGS) $(QT_CFLAGS)
+qtgv_videooverlay_CXXFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CXXFLAGS) $(X_CFLAGS) $(QT_CFLAGS) -fPIC
 qtgv_videooverlay_LDADD = \
 	$(top_builddir)/gst-libs/gst/video/libgstvideo-$(GST_API_VERSION).la \
 	$(GST_LIBS) $(X_LIBS) $(LIBM) $(QT_LIBS)
@@ -36,11 +36,10 @@
 nodist_qtgv_videooverlay_SOURCES = moc_qtgv-videooverlay.cpp
 
 moc_%.cpp:%.h
-	$(AM_V_GEN)$(QT4_MOC) $< -o $@
+	$(AM_V_GEN)$(QT_MOC) $< -o $@
 
 EXTRA_DIST = $(nodist_qtgv_videooverlay_SOURCES:moc_%.cpp=%.h)
 CLEANFILES = $(nodist_qtgv_videooverlay_SOURCES)
-
 endif
 
 endif
diff --git a/tests/examples/overlay/Makefile.in b/tests/examples/overlay/Makefile.in
index 291bfec..f024fd9 100644
--- a/tests/examples/overlay/Makefile.in
+++ b/tests/examples/overlay/Makefile.in
@@ -81,7 +81,7 @@
 target_triplet = @target@
 @HAVE_GTK_X11_TRUE@@USE_X_TRUE@am__append_1 = gtk-videooverlay
 @HAVE_QT_TRUE@@USE_X_TRUE@am__append_2 = qt-videooverlay
-@HAVE_QT_GV_TRUE@@USE_X_TRUE@am__append_3 = qtgv-videooverlay
+@HAVE_QT_MOC_TRUE@@USE_X_TRUE@am__append_3 = qtgv-videooverlay
 noinst_PROGRAMS = $(am__EXEEXT_4)
 subdir = tests/examples/overlay
 DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
@@ -91,7 +91,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -131,8 +130,8 @@
 @HAVE_GTK_X11_TRUE@@USE_X_TRUE@am__EXEEXT_1 =  \
 @HAVE_GTK_X11_TRUE@@USE_X_TRUE@	gtk-videooverlay$(EXEEXT)
 @HAVE_QT_TRUE@@USE_X_TRUE@am__EXEEXT_2 = qt-videooverlay$(EXEEXT)
-@HAVE_QT_GV_TRUE@@USE_X_TRUE@am__EXEEXT_3 =  \
-@HAVE_QT_GV_TRUE@@USE_X_TRUE@	qtgv-videooverlay$(EXEEXT)
+@HAVE_QT_MOC_TRUE@@USE_X_TRUE@am__EXEEXT_3 =  \
+@HAVE_QT_MOC_TRUE@@USE_X_TRUE@	qtgv-videooverlay$(EXEEXT)
 am__EXEEXT_4 = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3)
 PROGRAMS = $(noinst_PROGRAMS)
 am__gtk_videooverlay_SOURCES_DIST = gtk-videooverlay.c
@@ -166,15 +165,15 @@
 	$(LDFLAGS) -o $@
 am__qtgv_videooverlay_SOURCES_DIST = qtgv-videooverlay.cpp \
 	qtgv-videooverlay.h
-@HAVE_QT_GV_TRUE@@USE_X_TRUE@am_qtgv_videooverlay_OBJECTS = qtgv_videooverlay-qtgv-videooverlay.$(OBJEXT)
-@HAVE_QT_GV_TRUE@@USE_X_TRUE@nodist_qtgv_videooverlay_OBJECTS = qtgv_videooverlay-moc_qtgv-videooverlay.$(OBJEXT)
+@HAVE_QT_MOC_TRUE@@USE_X_TRUE@am_qtgv_videooverlay_OBJECTS = qtgv_videooverlay-qtgv-videooverlay.$(OBJEXT)
+@HAVE_QT_MOC_TRUE@@USE_X_TRUE@nodist_qtgv_videooverlay_OBJECTS = qtgv_videooverlay-moc_qtgv-videooverlay.$(OBJEXT)
 qtgv_videooverlay_OBJECTS = $(am_qtgv_videooverlay_OBJECTS) \
 	$(nodist_qtgv_videooverlay_OBJECTS)
-@HAVE_QT_GV_TRUE@@USE_X_TRUE@qtgv_videooverlay_DEPENDENCIES = $(top_builddir)/gst-libs/gst/video/libgstvideo-$(GST_API_VERSION).la \
-@HAVE_QT_GV_TRUE@@USE_X_TRUE@	$(am__DEPENDENCIES_1) \
-@HAVE_QT_GV_TRUE@@USE_X_TRUE@	$(am__DEPENDENCIES_1) \
-@HAVE_QT_GV_TRUE@@USE_X_TRUE@	$(am__DEPENDENCIES_1) \
-@HAVE_QT_GV_TRUE@@USE_X_TRUE@	$(am__DEPENDENCIES_1)
+@HAVE_QT_MOC_TRUE@@USE_X_TRUE@qtgv_videooverlay_DEPENDENCIES = $(top_builddir)/gst-libs/gst/video/libgstvideo-$(GST_API_VERSION).la \
+@HAVE_QT_MOC_TRUE@@USE_X_TRUE@	$(am__DEPENDENCIES_1) \
+@HAVE_QT_MOC_TRUE@@USE_X_TRUE@	$(am__DEPENDENCIES_1) \
+@HAVE_QT_MOC_TRUE@@USE_X_TRUE@	$(am__DEPENDENCIES_1) \
+@HAVE_QT_MOC_TRUE@@USE_X_TRUE@	$(am__DEPENDENCIES_1)
 qtgv_videooverlay_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(qtgv_videooverlay_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
@@ -457,9 +456,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -558,22 +558,22 @@
 @HAVE_GTK_X11_TRUE@@USE_X_TRUE@	$(GST_LIBS) $(X_LIBS) $(LIBM) $(GTK_LIBS)
 
 @HAVE_QT_TRUE@@USE_X_TRUE@qt_videooverlay_SOURCES = qt-videooverlay.cpp
-@HAVE_QT_TRUE@@USE_X_TRUE@qt_videooverlay_CXXFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CXXFLAGS) $(X_CFLAGS) $(QT_CFLAGS)
+@HAVE_QT_TRUE@@USE_X_TRUE@qt_videooverlay_CXXFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CXXFLAGS) $(X_CFLAGS) $(QT_CFLAGS) -fPIC
 @HAVE_QT_TRUE@@USE_X_TRUE@qt_videooverlay_LDADD = \
 @HAVE_QT_TRUE@@USE_X_TRUE@	$(top_builddir)/gst-libs/gst/video/libgstvideo-$(GST_API_VERSION).la \
 @HAVE_QT_TRUE@@USE_X_TRUE@	$(GST_LIBS) $(X_LIBS) $(LIBM) $(QT_LIBS)
 
-@HAVE_QT_GV_TRUE@@USE_X_TRUE@qtgv_videooverlay_SOURCES = qtgv-videooverlay.cpp qtgv-videooverlay.h
-@HAVE_QT_GV_TRUE@@USE_X_TRUE@qtgv_videooverlay_CXXFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CXXFLAGS) $(X_CFLAGS) $(QT_CFLAGS)
-@HAVE_QT_GV_TRUE@@USE_X_TRUE@qtgv_videooverlay_LDADD = \
-@HAVE_QT_GV_TRUE@@USE_X_TRUE@	$(top_builddir)/gst-libs/gst/video/libgstvideo-$(GST_API_VERSION).la \
-@HAVE_QT_GV_TRUE@@USE_X_TRUE@	$(GST_LIBS) $(X_LIBS) $(LIBM) $(QT_LIBS)
+@HAVE_QT_MOC_TRUE@@USE_X_TRUE@qtgv_videooverlay_SOURCES = qtgv-videooverlay.cpp qtgv-videooverlay.h
+@HAVE_QT_MOC_TRUE@@USE_X_TRUE@qtgv_videooverlay_CXXFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CXXFLAGS) $(X_CFLAGS) $(QT_CFLAGS) -fPIC
+@HAVE_QT_MOC_TRUE@@USE_X_TRUE@qtgv_videooverlay_LDADD = \
+@HAVE_QT_MOC_TRUE@@USE_X_TRUE@	$(top_builddir)/gst-libs/gst/video/libgstvideo-$(GST_API_VERSION).la \
+@HAVE_QT_MOC_TRUE@@USE_X_TRUE@	$(GST_LIBS) $(X_LIBS) $(LIBM) $(QT_LIBS)
 
 
 # qt moc support, according to http://qtnode.net/wiki/Qt_with_autotools
-@HAVE_QT_GV_TRUE@@USE_X_TRUE@nodist_qtgv_videooverlay_SOURCES = moc_qtgv-videooverlay.cpp
-@HAVE_QT_GV_TRUE@@USE_X_TRUE@EXTRA_DIST = $(nodist_qtgv_videooverlay_SOURCES:moc_%.cpp=%.h)
-@HAVE_QT_GV_TRUE@@USE_X_TRUE@CLEANFILES = $(nodist_qtgv_videooverlay_SOURCES)
+@HAVE_QT_MOC_TRUE@@USE_X_TRUE@nodist_qtgv_videooverlay_SOURCES = moc_qtgv-videooverlay.cpp
+@HAVE_QT_MOC_TRUE@@USE_X_TRUE@EXTRA_DIST = $(nodist_qtgv_videooverlay_SOURCES:moc_%.cpp=%.h)
+@HAVE_QT_MOC_TRUE@@USE_X_TRUE@CLEANFILES = $(nodist_qtgv_videooverlay_SOURCES)
 all: all-am
 
 .SUFFIXES:
@@ -956,8 +956,8 @@
 	tags tags-am uninstall uninstall-am
 
 
-@HAVE_QT_GV_TRUE@@USE_X_TRUE@moc_%.cpp:%.h
-@HAVE_QT_GV_TRUE@@USE_X_TRUE@	$(AM_V_GEN)$(QT4_MOC) $< -o $@
+@HAVE_QT_MOC_TRUE@@USE_X_TRUE@moc_%.cpp:%.h
+@HAVE_QT_MOC_TRUE@@USE_X_TRUE@	$(AM_V_GEN)$(QT_MOC) $< -o $@
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/tests/examples/overlay/gtk-videooverlay.c b/tests/examples/overlay/gtk-videooverlay.c
index e49092f..f99baa8 100644
--- a/tests/examples/overlay/gtk-videooverlay.c
+++ b/tests/examples/overlay/gtk-videooverlay.c
@@ -57,8 +57,8 @@
       return sink;
 
     gst_element_set_state (sink, GST_STATE_NULL);
+    gst_object_unref (sink);
   }
-  gst_object_unref (sink);
 
   if ((sink = gst_element_factory_make ("ximagesink", NULL))) {
     sret = gst_element_set_state (sink, GST_STATE_READY);
@@ -66,8 +66,8 @@
       return sink;
 
     gst_element_set_state (sink, GST_STATE_NULL);
+    gst_object_unref (sink);
   }
-  gst_object_unref (sink);
 
   if (strcmp (DEFAULT_VIDEOSINK, "xvimagesink") == 0 ||
       strcmp (DEFAULT_VIDEOSINK, "ximagesink") == 0)
@@ -84,8 +84,9 @@
       return sink;
 
     gst_element_set_state (sink, GST_STATE_NULL);
+    gst_object_unref (sink);
   }
-  gst_object_unref (sink);
+
   return NULL;
 }
 
diff --git a/tests/examples/overlay/qt-videooverlay.cpp b/tests/examples/overlay/qt-videooverlay.cpp
index d5c9d9e..b96466b 100644
--- a/tests/examples/overlay/qt-videooverlay.cpp
+++ b/tests/examples/overlay/qt-videooverlay.cpp
@@ -46,8 +46,8 @@
       return sink;
   
     gst_element_set_state (sink, GST_STATE_NULL);
+    gst_object_unref (sink);
   }
-  gst_object_unref (sink);
 
   if ((sink = gst_element_factory_make ("ximagesink", NULL))) {
     sret = gst_element_set_state (sink, GST_STATE_READY);
@@ -55,8 +55,8 @@
       return sink;
   
     gst_element_set_state (sink, GST_STATE_NULL);
+    gst_object_unref (sink);
   }
-  gst_object_unref (sink);
 
   if (strcmp (DEFAULT_VIDEOSINK, "xvimagesink") == 0 ||
       strcmp (DEFAULT_VIDEOSINK, "ximagesink") == 0)
@@ -73,8 +73,9 @@
       return sink;
   
     gst_element_set_state (sink, GST_STATE_NULL);
+    gst_object_unref (sink);
   }
-  gst_object_unref (sink);
+
   return NULL;
 }
 
@@ -82,7 +83,7 @@
 {
   gst_init (&argc, &argv);
   QApplication app(argc, argv);
-  app.connect(&app, SIGNAL(lastWindowClosed()), &app, SLOT(quit ()));
+  app.setQuitOnLastWindowClosed(true);
 
   /* prepare the pipeline */
 
diff --git a/tests/examples/overlay/qtgv-videooverlay.cpp b/tests/examples/overlay/qtgv-videooverlay.cpp
index ba60e37..d36bab6 100644
--- a/tests/examples/overlay/qtgv-videooverlay.cpp
+++ b/tests/examples/overlay/qtgv-videooverlay.cpp
@@ -42,31 +42,26 @@
     if (sret != GST_STATE_CHANGE_SUCCESS) {
       gst_element_set_state (sink, GST_STATE_NULL);
       gst_object_unref (sink);
-  
-      if ((sink = gst_element_factory_make ("ximagesink", NULL))) {
+    }
+  } else if ((sink = gst_element_factory_make ("ximagesink", NULL))) {
+    sret = gst_element_set_state (sink, GST_STATE_READY);
+    if (sret != GST_STATE_CHANGE_SUCCESS) {
+      gst_element_set_state (sink, GST_STATE_NULL);
+      gst_object_unref (sink);
+    }
+  } else if (strcmp (DEFAULT_VIDEOSINK, "xvimagesink") != 0 &&
+             strcmp (DEFAULT_VIDEOSINK, "ximagesink") != 0) {
+    if ((sink = gst_element_factory_make (DEFAULT_VIDEOSINK, NULL))) {
+      if (!GST_IS_BIN (sink)) {
         sret = gst_element_set_state (sink, GST_STATE_READY);
         if (sret != GST_STATE_CHANGE_SUCCESS) {
           gst_element_set_state (sink, GST_STATE_NULL);
           gst_object_unref (sink);
-    
-          if (strcmp (DEFAULT_VIDEOSINK, "xvimagesink") != 0 &&
-              strcmp (DEFAULT_VIDEOSINK, "ximagesink") != 0) {
-    
-            if ((sink = gst_element_factory_make (DEFAULT_VIDEOSINK, NULL))) {
-              if (!GST_IS_BIN (sink)) {
-                sret = gst_element_set_state (sink, GST_STATE_READY);
-                if (sret != GST_STATE_CHANGE_SUCCESS) {
-                  gst_element_set_state (sink, GST_STATE_NULL);
-                  gst_object_unref (sink);
-                  sink = NULL;
-                }
-              } else {
-                gst_object_unref (sink);
-                sink = NULL;
-              }
-            }
-          }
+          sink = NULL;
         }
+      } else {
+        gst_object_unref (sink);
+        sink = NULL;
       }
     }
   }
diff --git a/tests/examples/playback/Makefile.in b/tests/examples/playback/Makefile.in
index ce80198..9c140f4 100644
--- a/tests/examples/playback/Makefile.in
+++ b/tests/examples/playback/Makefile.in
@@ -88,7 +88,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -393,9 +392,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/tests/examples/playback/playback-test.c b/tests/examples/playback/playback-test.c
index 82b986c..a229a8d 100644
--- a/tests/examples/playback/playback-test.c
+++ b/tests/examples/playback/playback-test.c
@@ -67,7 +67,8 @@
   GST_PLAY_FLAG_DOWNLOAD = (1 << 7),
   GST_PLAY_FLAG_BUFFERING = (1 << 8),
   GST_PLAY_FLAG_DEINTERLACE = (1 << 9),
-  GST_PLAY_FLAG_SOFT_COLORBALANCE = (1 << 10)
+  GST_PLAY_FLAG_SOFT_COLORBALANCE = (1 << 10),
+  GST_PLAY_FLAG_FORCE_FILTERS = (1 << 11),
 } GstPlayFlags;
 
 /* configuration */
@@ -2416,7 +2417,7 @@
 
   text = gtk_entry_get_text (entry);
   if (text != NULL && *text != '\0') {
-    gint v;
+    gint64 v;
     gchar *endptr;
 
     v = g_ascii_strtoll (text, &endptr, 10);
@@ -2467,7 +2468,7 @@
 
   text = gtk_entry_get_text (entry);
   if (text != NULL && *text != '\0') {
-    guint v;
+    gint64 v;
     gchar *endptr;
 
     v = g_ascii_strtoll (text, &endptr, 10);
@@ -2955,6 +2956,7 @@
   gtk_scale_set_digits (GTK_SCALE (app->seek_scale), 2);
   gtk_scale_set_value_pos (GTK_SCALE (app->seek_scale), GTK_POS_RIGHT);
   gtk_range_set_show_fill_level (GTK_RANGE (app->seek_scale), TRUE);
+  gtk_range_set_restrict_to_fill_level (GTK_RANGE (app->seek_scale), FALSE);
   gtk_range_set_fill_level (GTK_RANGE (app->seek_scale), N_GRAD);
 
   g_signal_connect (app->seek_scale, "button_press_event",
diff --git a/tests/examples/playrec/Makefile.in b/tests/examples/playrec/Makefile.in
index a67459d..11afc69 100644
--- a/tests/examples/playrec/Makefile.in
+++ b/tests/examples/playrec/Makefile.in
@@ -88,7 +88,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -393,9 +392,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/tests/examples/seek/Makefile.in b/tests/examples/seek/Makefile.in
index cdd7926..4dcc205 100644
--- a/tests/examples/seek/Makefile.in
+++ b/tests/examples/seek/Makefile.in
@@ -88,7 +88,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -415,9 +414,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/tests/examples/seek/jsseek.c b/tests/examples/seek/jsseek.c
index 0d3f455..7d8bd29 100644
--- a/tests/examples/seek/jsseek.c
+++ b/tests/examples/seek/jsseek.c
@@ -2996,8 +2996,10 @@
    * asks for the XID of the window to render onto */
   gtk_widget_realize (window);
 
+#ifdef HAVE_X
   /* we should have the XID now */
   g_assert (embed_xid != 0);
+#endif
 
   if (verbose) {
     g_signal_connect (pipeline, "deep_notify",
diff --git a/tests/examples/snapshot/Makefile.in b/tests/examples/snapshot/Makefile.in
index 614d2f1..7678e41 100644
--- a/tests/examples/snapshot/Makefile.in
+++ b/tests/examples/snapshot/Makefile.in
@@ -88,7 +88,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -391,9 +390,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/tests/files/Makefile.in b/tests/files/Makefile.in
index 7504064..3b904a7 100644
--- a/tests/files/Makefile.in
+++ b/tests/files/Makefile.in
@@ -85,7 +85,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -338,9 +337,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/tests/icles/Makefile.in b/tests/icles/Makefile.in
index 1ec731e..58a4c46 100644
--- a/tests/icles/Makefile.in
+++ b/tests/icles/Makefile.in
@@ -93,7 +93,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -568,9 +567,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/tests/icles/playback/Makefile.in b/tests/icles/playback/Makefile.in
index c2a3067..8fe811d 100644
--- a/tests/icles/playback/Makefile.in
+++ b/tests/icles/playback/Makefile.in
@@ -90,7 +90,6 @@
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -439,9 +438,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/tests/icles/test-effect-switch.c b/tests/icles/test-effect-switch.c
index c022eba..79b423d 100644
--- a/tests/icles/test-effect-switch.c
+++ b/tests/icles/test-effect-switch.c
@@ -186,7 +186,7 @@
 
   filter1 = gst_element_factory_make ("capsfilter", NULL);
   gst_util_set_object_arg (G_OBJECT (filter1), "caps",
-      "video/x-raw, format=I420, width=320, height=240, "
+      "video/x-raw, width=320, height=240, "
       "format={ I420, YV12, YUY2, UYVY, AYUV, Y41B, Y42B, "
       "YVYU, Y444, v210, v216, NV12, NV21, UYVP, A420, YUV9, YVU9, IYU1 }");
 
diff --git a/tools/Makefile.am b/tools/Makefile.am
index 3d0711e..8d4d633 100644
--- a/tools/Makefile.am
+++ b/tools/Makefile.am
@@ -8,7 +8,9 @@
 
 gst_discoverer_@GST_API_VERSION@_SOURCES = gst-discoverer.c
 
-gst_play_@GST_API_VERSION@_SOURCES = gst-play.c
+gst_play_@GST_API_VERSION@_SOURCES = gst-play.c gst-play-kb.c gst-play-kb.h
+
+noinst_HEADERS = gst-play-kb.h
 
 CLEANFILES = $(bin_SCRIPTS) $(bin_PROGRAMS)
 
@@ -19,7 +21,7 @@
 	$(top_builddir)/gst-libs/gst/tag/libgsttag-@GST_API_VERSION@.la \
 	$(top_builddir)/gst-libs/gst/audio/libgstaudio-@GST_API_VERSION@.la \
 	$(top_builddir)/gst-libs/gst/video/libgstvideo-@GST_API_VERSION@.la \
-	$(GST_BASE_LIBS) $(GST_LIBS)
+	$(GST_BASE_LIBS) $(GST_LIBS) $(LIBM)
 
 AM_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS)
 
diff --git a/tools/Makefile.in b/tools/Makefile.in
index d8271a1..71a2832 100644
--- a/tools/Makefile.in
+++ b/tools/Makefile.in
@@ -14,6 +14,7 @@
 
 @SET_MAKE@
 
+
 VPATH = @srcdir@
 am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
 am__make_running_with_option = \
@@ -83,13 +84,12 @@
 	gst-play-@GST_API_VERSION@$(EXEEXT)
 subdir = tools
 DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/depcomp
+	$(top_srcdir)/depcomp $(noinst_HEADERS)
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
 	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
 	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-scrub-include.m4 \
 	$(top_srcdir)/common/m4/as-version.m4 \
 	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
 	$(top_srcdir)/common/m4/gst-arch.m4 \
@@ -138,12 +138,14 @@
 	$(top_builddir)/gst-libs/gst/tag/libgsttag-@GST_API_VERSION@.la \
 	$(top_builddir)/gst-libs/gst/audio/libgstaudio-@GST_API_VERSION@.la \
 	$(top_builddir)/gst-libs/gst/video/libgstvideo-@GST_API_VERSION@.la \
-	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_1)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
 am__v_lt_0 = --silent
 am__v_lt_1 = 
-am_gst_play_@GST_API_VERSION@_OBJECTS = gst-play.$(OBJEXT)
+am_gst_play_@GST_API_VERSION@_OBJECTS = gst-play.$(OBJEXT) \
+	gst-play-kb.$(OBJEXT)
 gst_play_@GST_API_VERSION@_OBJECTS =  \
 	$(am_gst_play_@GST_API_VERSION@_OBJECTS)
 gst_play_@GST_API_VERSION@_LDADD = $(LDADD)
@@ -151,7 +153,8 @@
 	$(top_builddir)/gst-libs/gst/tag/libgsttag-@GST_API_VERSION@.la \
 	$(top_builddir)/gst-libs/gst/audio/libgstaudio-@GST_API_VERSION@.la \
 	$(top_builddir)/gst-libs/gst/video/libgstvideo-@GST_API_VERSION@.la \
-	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_1)
 AM_V_P = $(am__v_P_@AM_V@)
 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
 am__v_P_0 = false
@@ -225,7 +228,26 @@
 man1dir = $(mandir)/man1
 NROFF = nroff
 MANS = $(man_MANS)
+HEADERS = $(noinst_HEADERS)
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
@@ -422,9 +444,10 @@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
-QT4_MOC = @QT4_MOC@
+QTCHOOSER = @QTCHOOSER@
 QT_CFLAGS = @QT_CFLAGS@
 QT_LIBS = @QT_LIBS@
+QT_MOC = @QT_MOC@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -520,14 +543,15 @@
 	gst-play-@GST_API_VERSION@.1	
 
 gst_discoverer_@GST_API_VERSION@_SOURCES = gst-discoverer.c
-gst_play_@GST_API_VERSION@_SOURCES = gst-play.c
+gst_play_@GST_API_VERSION@_SOURCES = gst-play.c gst-play-kb.c gst-play-kb.h
+noinst_HEADERS = gst-play-kb.h
 CLEANFILES = $(bin_SCRIPTS) $(bin_PROGRAMS)
 EXTRA_DIST = $(man_MANS)
 LDADD = $(top_builddir)/gst-libs/gst/pbutils/libgstpbutils-@GST_API_VERSION@.la \
 	$(top_builddir)/gst-libs/gst/tag/libgsttag-@GST_API_VERSION@.la \
 	$(top_builddir)/gst-libs/gst/audio/libgstaudio-@GST_API_VERSION@.la \
 	$(top_builddir)/gst-libs/gst/video/libgstvideo-@GST_API_VERSION@.la \
-	$(GST_BASE_LIBS) $(GST_LIBS)
+	$(GST_BASE_LIBS) $(GST_LIBS) $(LIBM)
 
 AM_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS)
 all: all-am
@@ -629,6 +653,7 @@
 	-rm -f *.tab.c
 
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gst-discoverer.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gst-play-kb.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gst-play.Po@am__quote@
 
 .c.o:
@@ -703,12 +728,58 @@
 	} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
 	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
 	dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
-tags TAGS:
 
-ctags CTAGS:
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
 
-cscope cscopelist:
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-am
 
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -742,7 +813,7 @@
 	done
 check-am: all-am
 check: check-am
-all-am: Makefile $(PROGRAMS) $(MANS)
+all-am: Makefile $(PROGRAMS) $(MANS) $(HEADERS)
 installdirs:
 	for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"; do \
 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
@@ -785,7 +856,8 @@
 distclean: distclean-am
 	-rm -rf ./$(DEPDIR)
 	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
 
 dvi: dvi-am
 
@@ -851,20 +923,20 @@
 
 .MAKE: install-am install-strip
 
-.PHONY: all all-am check check-am clean clean-binPROGRAMS \
-	clean-generic clean-libtool cscopelist-am ctags-am distclean \
-	distclean-compile distclean-generic distclean-libtool distdir \
-	dvi dvi-am html html-am info info-am install install-am \
-	install-binPROGRAMS install-data install-data-am install-dvi \
-	install-dvi-am install-exec install-exec-am install-html \
-	install-html-am install-info install-info-am install-man \
-	install-man1 install-pdf install-pdf-am install-ps \
-	install-ps-am install-strip installcheck installcheck-am \
-	installdirs maintainer-clean maintainer-clean-generic \
-	mostlyclean mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
-	uninstall-am uninstall-binPROGRAMS uninstall-man \
-	uninstall-man1
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
+	clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-binPROGRAMS \
+	install-data install-data-am install-dvi install-dvi-am \
+	install-exec install-exec-am install-html install-html-am \
+	install-info install-info-am install-man install-man1 \
+	install-pdf install-pdf-am install-ps install-ps-am \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+	pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
+	uninstall-binPROGRAMS uninstall-man uninstall-man1
 
 
 Android.mk: Makefile.am
diff --git a/tools/gst-discoverer.c b/tools/gst-discoverer.c
index 2c02b07..678c5e8 100644
--- a/tools/gst-discoverer.c
+++ b/tools/gst-discoverer.c
@@ -21,11 +21,17 @@
 #include "config.h"
 #endif
 
+#include <locale.h>
+
 #include <stdlib.h>
 #include <glib.h>
 #include <gst/gst.h>
 #include <gst/pbutils/pbutils.h>
 
+/* *INDENT-OFF* */
+static void my_g_string_append_printf (GString * str, int depth, const gchar * format, ...) G_GNUC_PRINTF (3, 4);
+/* *INDENT-ON* */
+
 static gboolean async = FALSE;
 static gboolean show_toc = FALSE;
 static gboolean verbose = FALSE;
@@ -51,6 +57,34 @@
   va_end (args);
 }
 
+static void
+gst_stream_information_to_string (GstDiscovererStreamInfo * info, GString * s,
+    gint depth)
+{
+  gchar *tmp;
+  GstCaps *caps;
+  const GstStructure *misc;
+
+  my_g_string_append_printf (s, depth, "Codec:\n");
+  caps = gst_discoverer_stream_info_get_caps (info);
+  tmp = gst_caps_to_string (caps);
+  gst_caps_unref (caps);
+  my_g_string_append_printf (s, depth, "  %s\n", tmp);
+  g_free (tmp);
+
+  my_g_string_append_printf (s, depth, "Additional info:\n");
+  if ((misc = gst_discoverer_stream_info_get_misc (info))) {
+    tmp = gst_structure_to_string (misc);
+    my_g_string_append_printf (s, depth, "  %s\n", tmp);
+    g_free (tmp);
+  } else {
+    my_g_string_append_printf (s, depth, "  None\n");
+  }
+
+  my_g_string_append_printf (s, depth, "Stream ID: %s\n",
+      gst_discoverer_stream_info_get_stream_id (info));
+}
+
 static gchar *
 gst_stream_audio_information_to_string (GstDiscovererStreamInfo * info,
     gint depth)
@@ -61,30 +95,12 @@
   const gchar *ctmp;
   int len = 400;
   const GstTagList *tags;
-  GstCaps *caps;
 
   g_return_val_if_fail (info != NULL, NULL);
 
   s = g_string_sized_new (len);
 
-  my_g_string_append_printf (s, depth, "Codec:\n");
-  caps = gst_discoverer_stream_info_get_caps (info);
-  tmp = gst_caps_to_string (caps);
-  gst_caps_unref (caps);
-  my_g_string_append_printf (s, depth, "  %s\n", tmp);
-  g_free (tmp);
-
-  my_g_string_append_printf (s, depth, "Additional info:\n");
-  if (gst_discoverer_stream_info_get_misc (info)) {
-    tmp = gst_structure_to_string (gst_discoverer_stream_info_get_misc (info));
-    my_g_string_append_printf (s, depth, "  %s\n", tmp);
-    g_free (tmp);
-  } else {
-    my_g_string_append_printf (s, depth, "  None\n");
-  }
-
-  my_g_string_append_printf (s, depth, "Stream ID: %s\n",
-      gst_discoverer_stream_info_get_stream_id (info));
+  gst_stream_information_to_string (info, s, depth);
 
   audio_info = (GstDiscovererAudioInfo *) info;
   ctmp = gst_discoverer_audio_info_get_language (audio_info);
@@ -125,33 +141,13 @@
   GString *s;
   gchar *tmp;
   int len = 500;
-  const GstStructure *misc;
   const GstTagList *tags;
-  GstCaps *caps;
 
   g_return_val_if_fail (info != NULL, NULL);
 
   s = g_string_sized_new (len);
 
-  my_g_string_append_printf (s, depth, "Codec:\n");
-  caps = gst_discoverer_stream_info_get_caps (info);
-  tmp = gst_caps_to_string (caps);
-  gst_caps_unref (caps);
-  my_g_string_append_printf (s, depth, "  %s\n", tmp);
-  g_free (tmp);
-
-  my_g_string_append_printf (s, depth, "Additional info:\n");
-  misc = gst_discoverer_stream_info_get_misc (info);
-  if (misc) {
-    tmp = gst_structure_to_string (misc);
-    my_g_string_append_printf (s, depth, "  %s\n", tmp);
-    g_free (tmp);
-  } else {
-    my_g_string_append_printf (s, depth, "  None\n");
-  }
-
-  my_g_string_append_printf (s, depth, "Stream ID: %s\n",
-      gst_discoverer_stream_info_get_stream_id (info));
+  gst_stream_information_to_string (info, s, depth);
 
   video_info = (GstDiscovererVideoInfo *) info;
   my_g_string_append_printf (s, depth, "Width: %u\n",
@@ -202,30 +198,12 @@
   const gchar *ctmp;
   int len = 400;
   const GstTagList *tags;
-  GstCaps *caps;
 
   g_return_val_if_fail (info != NULL, NULL);
 
   s = g_string_sized_new (len);
 
-  my_g_string_append_printf (s, depth, "Codec:\n");
-  caps = gst_discoverer_stream_info_get_caps (info);
-  tmp = gst_caps_to_string (caps);
-  gst_caps_unref (caps);
-  my_g_string_append_printf (s, depth, "  %s\n", tmp);
-  g_free (tmp);
-
-  my_g_string_append_printf (s, depth, "Additional info:\n");
-  if (gst_discoverer_stream_info_get_misc (info)) {
-    tmp = gst_structure_to_string (gst_discoverer_stream_info_get_misc (info));
-    my_g_string_append_printf (s, depth, "  %s\n", tmp);
-    g_free (tmp);
-  } else {
-    my_g_string_append_printf (s, depth, "  None\n");
-  }
-
-  my_g_string_append_printf (s, depth, "Stream ID: %s\n",
-      gst_discoverer_stream_info_get_stream_id (info));
+  gst_stream_information_to_string (info, s, depth);
 
   subtitle_info = (GstDiscovererSubtitleInfo *) info;
   ctmp = gst_discoverer_subtitle_info_get_language (subtitle_info);
@@ -556,6 +534,8 @@
   };
   GOptionContext *ctx;
 
+  setlocale (LC_ALL, "");
+
   ctx =
       g_option_context_new
       ("- discover files synchronously with GstDiscoverer");
diff --git a/tools/gst-play-1.0.1 b/tools/gst-play-1.0.1
index 0ef5cfc..8c16e2f 100644
--- a/tools/gst-play-1.0.1
+++ b/tools/gst-play-1.0.1
@@ -1,4 +1,4 @@
-.TH "GStreamer" "1" "August 2013" "" ""
+.TH "GStreamer" "1" "April 2014" "" ""
 .SH "NAME"
 gst\-play\-1.0 \- Simple command line playback testing tool
 .SH "SYNOPSIS"
@@ -21,14 +21,47 @@
 Print version and exit
 .TP 8
 .B  \-\-audiosink=SOMESINK
-Use SOMESINK as audio sink instead of autoaudiosink.
+Use the SOMESINK element as audio sink instead of autoaudiosink
 .TP 8
 .B  \-\-videosink=SOMESINK
-Use SOMESINK as video sink instead of autovideosink.
+Use the SOMESINK element as video sink instead of autovideosink
 .TP 8
+.B  \-\-volume=VOLUME
+Set initial playback volume to VOLUME, where 0.0=silent and 1.0=unchanged
+.TP 8
+.B  \-\-shuffle
+Shuffle playlist (play files in random order)
+.TP 8
+.B  \-\-interactive
+Enable control through keyboard interaction in terminal (see below)
+.TP 8
+.B  \-\-gapless
+Enable gapless playback
+
+.SH "INTERACTIVE KEYBOARD CONTROL"
+.l
+.TP 8
+.B  SPACE
+Pause/Resume playback
+.TP 8
+.B  ARROW UP/DOWN
+Volume up/down
+.TP 8
+.B  ARROW LEFT/RIGHT
+Seek back/forward
+.TP 8
+.B  >
+Skip to next item in playlist
+.TP 8
+.B  <
+Go back to previous item in playlist
+.TP 8
+.B  Q, ESC
+Quit
 
 .SH "SEE ALSO"
 .BR gst\-inspect\-1.0 (1),
 .BR gst\-launch\-1.0 (1),
+.BR gst\-discoverer\-1.0 (1),
 .SH "AUTHOR"
 The GStreamer team at http://gstreamer.freedesktop.org/
diff --git a/tools/gst-play-kb.c b/tools/gst-play-kb.c
new file mode 100644
index 0000000..791269d
--- /dev/null
+++ b/tools/gst-play-kb.c
@@ -0,0 +1,143 @@
+/* GStreamer command line playback testing utility - keyboard handling helpers
+ *
+ * Copyright (C) 2013 Tim-Philipp Müller <tim centricular net>
+ * Copyright (C) 2013 Centricular Ltd
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "gst-play-kb.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#ifdef G_OS_UNIX
+#include <unistd.h>
+#include <termios.h>
+#endif
+
+#include <gst/gst.h>
+
+/* This is all not thread-safe, but doesn't have to be really */
+
+#ifdef G_OS_UNIX
+
+static struct termios term_settings;
+static gboolean term_settings_saved = FALSE;
+static GstPlayKbFunc kb_callback;
+static gpointer kb_callback_data;
+static gulong io_watch_id;
+
+static gboolean
+gst_play_kb_io_cb (GIOChannel * ioc, GIOCondition cond, gpointer user_data)
+{
+  GIOStatus status;
+
+  if (cond & G_IO_IN) {
+    gchar buf[16] = { 0, };
+    gsize read;
+
+    status = g_io_channel_read_chars (ioc, buf, sizeof (buf) - 1, &read, NULL);
+    if (status == G_IO_STATUS_ERROR)
+      return FALSE;
+    if (status == G_IO_STATUS_NORMAL) {
+      if (kb_callback)
+        kb_callback (buf, kb_callback_data);
+    }
+  }
+
+  return TRUE;                  /* call us again */
+}
+
+gboolean
+gst_play_kb_set_key_handler (GstPlayKbFunc kb_func, gpointer user_data)
+{
+  GIOChannel *ioc;
+  int flags;
+
+  if (!isatty (STDIN_FILENO)) {
+    GST_INFO ("stdin is not connected to a terminal");
+    return FALSE;
+  }
+
+  if (io_watch_id > 0) {
+    g_source_remove (io_watch_id);
+    io_watch_id = 0;
+  }
+
+  if (kb_func == NULL && term_settings_saved) {
+    /* restore terminal settings */
+    if (tcsetattr (STDIN_FILENO, TCSAFLUSH, &term_settings) == 0)
+      term_settings_saved = FALSE;
+    else
+      g_warning ("could not restore terminal attributes");
+
+    setvbuf (stdin, NULL, _IOLBF, 0);
+  }
+
+  if (kb_func != NULL) {
+    struct termios new_settings;
+
+    if (!term_settings_saved) {
+      if (tcgetattr (STDIN_FILENO, &term_settings) != 0) {
+        g_warning ("could not save terminal attributes");
+        return FALSE;
+      }
+      term_settings_saved = TRUE;
+
+      /* Echo off, canonical mode off, extended input processing off  */
+      new_settings = term_settings;
+      new_settings.c_lflag &= ~(ECHO | ICANON | IEXTEN);
+
+      if (tcsetattr (STDIN_FILENO, TCSAFLUSH, &new_settings) != 0) {
+        g_warning ("Could not set terminal state");
+        return FALSE;
+      }
+      setvbuf (stdin, NULL, _IONBF, 0);
+    }
+  }
+
+  ioc = g_io_channel_unix_new (STDIN_FILENO);
+
+  /* make non-blocking */
+  flags = g_io_channel_get_flags (ioc);
+  g_io_channel_set_flags (ioc, flags | G_IO_FLAG_NONBLOCK, NULL);
+
+  io_watch_id = g_io_add_watch_full (ioc, G_PRIORITY_DEFAULT, G_IO_IN,
+      (GIOFunc) gst_play_kb_io_cb, user_data, NULL);
+  g_io_channel_unref (ioc);
+
+  kb_callback = kb_func;
+  kb_callback_data = user_data;
+
+  return TRUE;
+}
+
+#else /* !G_OS_UNIX */
+
+gboolean
+gst_play_kb_set_key_handler (GstPlayKbFunc key_func, gpointer user_data)
+{
+  GST_FIXME ("Keyboard handling for this OS needs to be implemented");
+  return FALSE;
+}
+
+#endif /* !G_OS_UNIX */
diff --git a/tools/gst-play-kb.h b/tools/gst-play-kb.h
new file mode 100644
index 0000000..7dab0ed
--- /dev/null
+++ b/tools/gst-play-kb.h
@@ -0,0 +1,35 @@
+/* GStreamer command line playback testing utility - keyboard handling helpers
+ *
+ * Copyright (C) 2013 Tim-Philipp Müller <tim centricular net>
+ * Copyright (C) 2013 Centricular Ltd
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+#ifndef __GST_PLAY_KB_INCLUDED__
+#define __GST_PLAY_KB_INCLUDED__
+
+#include <glib.h>
+
+#define GST_PLAY_KB_ARROW_UP    "\033[A"
+#define GST_PLAY_KB_ARROW_DOWN  "\033[B"
+#define GST_PLAY_KB_ARROW_RIGHT "\033[C"
+#define GST_PLAY_KB_ARROW_LEFT  "\033[D"
+
+typedef void (*GstPlayKbFunc) (const gchar * kb_input, gpointer user_data);
+
+gboolean gst_play_kb_set_key_handler (GstPlayKbFunc kb_func, gpointer user_data);
+
+#endif /* __GST_PLAY_KB_INCLUDED__ */
diff --git a/tools/gst-play.c b/tools/gst-play.c
index 5fb03f8..5960bcb 100644
--- a/tools/gst-play.c
+++ b/tools/gst-play.c
@@ -1,6 +1,6 @@
 /* GStreamer command line playback testing utility
  *
- * Copyright (C) 2013 Tim-Philipp Müller <tim centricular net>
+ * Copyright (C) 2013-2014 Tim-Philipp Müller <tim centricular net>
  * Copyright (C) 2013 Collabora Ltd.
  *
  * This library is free software; you can redistribute it and/or
@@ -23,10 +23,20 @@
 #include "config.h"
 #endif
 
+#include <locale.h>
+
 #include <gst/gst.h>
 #include <gst/gst-i18n-app.h>
+#include <gst/audio/audio.h>
 #include <gst/pbutils/pbutils.h>
+#include <gst/math-compat.h>
 #include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "gst-play-kb.h"
+
+#define VOLUME_STEPS 20
 
 GST_DEBUG_CATEGORY (play_debug);
 #define GST_CAT_DEFAULT play_debug
@@ -49,19 +59,23 @@
   gboolean buffering;
   gboolean is_live;
 
+  GstState desired_state;       /* as per user interaction, PAUSED or PLAYING */
+
   /* configuration */
   gboolean gapless;
 } GstPlay;
 
 static gboolean play_bus_msg (GstBus * bus, GstMessage * msg, gpointer data);
 static gboolean play_next (GstPlay * play);
+static gboolean play_prev (GstPlay * play);
 static gboolean play_timeout (gpointer user_data);
 static void play_about_to_finish (GstElement * playbin, gpointer user_data);
 static void play_reset (GstPlay * play);
+static void play_set_relative_volume (GstPlay * play, gdouble volume_step);
 
 static GstPlay *
 play_new (gchar ** uris, const gchar * audio_sink, const gchar * video_sink,
-    gboolean gapless)
+    gboolean gapless, gdouble initial_volume)
 {
   GstElement *sink;
   GstPlay *play;
@@ -75,14 +89,22 @@
   play->playbin = gst_element_factory_make ("playbin", "playbin");
 
   if (audio_sink != NULL) {
-    sink = gst_element_factory_make (audio_sink, NULL);
+    if (strchr (audio_sink, ' ') != NULL)
+      sink = gst_parse_bin_from_description (audio_sink, TRUE, NULL);
+    else
+      sink = gst_element_factory_make (audio_sink, NULL);
+
     if (sink != NULL)
       g_object_set (play->playbin, "audio-sink", sink, NULL);
     else
       g_warning ("Couldn't create specified audio sink '%s'", audio_sink);
   }
   if (video_sink != NULL) {
-    sink = gst_element_factory_make (video_sink, NULL);
+    if (strchr (video_sink, ' ') != NULL)
+      sink = gst_parse_bin_from_description (video_sink, TRUE, NULL);
+    else
+      sink = gst_element_factory_make (video_sink, NULL);
+
     if (sink != NULL)
       g_object_set (play->playbin, "video-sink", sink, NULL);
     else
@@ -101,12 +123,16 @@
   play->buffering = FALSE;
   play->is_live = FALSE;
 
+  play->desired_state = GST_STATE_PLAYING;
+
   play->gapless = gapless;
   if (gapless) {
     g_signal_connect (play->playbin, "about-to-finish",
         G_CALLBACK (play_about_to_finish), play);
   }
 
+  play_set_relative_volume (play, initial_volume - 1.0);
+
   return play;
 }
 
@@ -137,6 +163,23 @@
   play->is_live = FALSE;
 }
 
+static void
+play_set_relative_volume (GstPlay * play, gdouble volume_step)
+{
+  gdouble volume;
+
+  volume = gst_stream_volume_get_volume (GST_STREAM_VOLUME (play->playbin),
+      GST_STREAM_VOLUME_FORMAT_LINEAR);
+
+  volume = round ((volume + volume_step) * VOLUME_STEPS) / VOLUME_STEPS;
+  volume = CLAMP (volume, 0.0, 10.0);
+
+  gst_stream_volume_set_volume (GST_STREAM_VOLUME (play->playbin),
+      GST_STREAM_VOLUME_FORMAT_LINEAR, volume);
+
+  g_print ("Volume: %.0f%%                  \n", volume * 100);
+}
+
 /* returns TRUE if something was installed and we should restart playback */
 static gboolean
 play_install_missing_plugins (GstPlay * play)
@@ -153,6 +196,11 @@
 
   switch (GST_MESSAGE_TYPE (msg)) {
     case GST_MESSAGE_ASYNC_DONE:
+
+      /* dump graph on preroll */
+      GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (play->playbin),
+          GST_DEBUG_GRAPH_SHOW_ALL, "gst-play.async-done");
+
       g_print ("Prerolled.\r");
       if (play->missing != NULL && play_install_missing_plugins (play)) {
         g_print ("New plugins installed, trying again...\n");
@@ -169,25 +217,30 @@
       gst_message_parse_buffering (msg, &percent);
       g_print ("%s %d%%  \r", _("Buffering..."), percent);
 
-      /* no state management needed for live pipelines */
-      if (play->is_live)
-        break;
-
       if (percent == 100) {
         /* a 100% message means buffering is done */
         if (play->buffering) {
           play->buffering = FALSE;
-          gst_element_set_state (play->playbin, GST_STATE_PLAYING);
+          /* no state management needed for live pipelines */
+          if (!play->is_live)
+            gst_element_set_state (play->playbin, play->desired_state);
         }
       } else {
         /* buffering... */
         if (!play->buffering) {
-          gst_element_set_state (play->playbin, GST_STATE_PAUSED);
+          if (!play->is_live)
+            gst_element_set_state (play->playbin, GST_STATE_PAUSED);
           play->buffering = TRUE;
         }
       }
       break;
     }
+    case GST_MESSAGE_CLOCK_LOST:{
+      g_print (_("Clock lost, selecting a new one\n"));
+      gst_element_set_state (play->playbin, GST_STATE_PAUSED);
+      gst_element_set_state (play->playbin, GST_STATE_PLAYING);
+      break;
+    }
     case GST_MESSAGE_LATENCY:
       g_print ("Redistribute latency...\n");
       gst_bin_recalculate_latency (GST_BIN (play->playbin));
@@ -221,6 +274,10 @@
       GError *err;
       gchar *dbg = NULL;
 
+      /* dump graph on warning */
+      GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (play->playbin),
+          GST_DEBUG_GRAPH_SHOW_ALL, "gst-play.warning");
+
       gst_message_parse_warning (msg, &err, &dbg);
       g_printerr ("WARNING %s\n", err->message);
       if (dbg != NULL)
@@ -233,6 +290,10 @@
       GError *err;
       gchar *dbg;
 
+      /* dump graph on error */
+      GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (play->playbin),
+          GST_DEBUG_GRAPH_SHOW_ALL, "gst-play.error");
+
       gst_message_parse_error (msg, &err, &dbg);
       g_printerr ("ERROR %s for %s\n", err->message, play->uris[play->cur_idx]);
       if (dbg != NULL)
@@ -276,6 +337,7 @@
 {
   GstPlay *play = user_data;
   gint64 pos = -1, dur = -1;
+  gchar status[64] = { 0, };
 
   if (play->buffering)
     return TRUE;
@@ -283,6 +345,11 @@
   gst_element_query_position (play->playbin, GST_FORMAT_TIME, &pos);
   gst_element_query_duration (play->playbin, GST_FORMAT_TIME, &dur);
 
+  if (play->desired_state == GST_STATE_PAUSED)
+    g_snprintf (status, sizeof (status), "Paused");
+  else
+    memset (status, ' ', sizeof (status) - 1);
+
   if (pos >= 0 && dur > 0) {
     gchar dstr[32], pstr[32];
 
@@ -291,7 +358,7 @@
     pstr[9] = '\0';
     g_snprintf (dstr, 32, "%" GST_TIME_FORMAT, GST_TIME_ARGS (dur));
     dstr[9] = '\0';
-    g_print ("%s / %s\r", pstr, dstr);
+    g_print ("%s / %s %s\r", pstr, dstr, status);
   }
 
   return TRUE;
@@ -314,28 +381,22 @@
   return loc;
 }
 
-/* returns FALSE if we have reached the end of the playlist */
-static gboolean
-play_next (GstPlay * play)
+static void
+play_uri (GstPlay * play, const gchar * next_uri)
 {
   GstStateChangeReturn sret;
-  const gchar *next_uri;
   gchar *loc;
 
-  if (++play->cur_idx >= play->num_uris)
-    return FALSE;
-
   gst_element_set_state (play->playbin, GST_STATE_READY);
   play_reset (play);
 
-  next_uri = play->uris[play->cur_idx];
   loc = play_uri_get_display_name (play, next_uri);
   g_print ("Now playing %s\n", loc);
   g_free (loc);
 
   g_object_set (play->playbin, "uri", next_uri, NULL);
 
-  sret = gst_element_set_state (play->playbin, GST_STATE_PLAYING);
+  sret = gst_element_set_state (play->playbin, GST_STATE_PAUSED);
   switch (sret) {
     case GST_STATE_CHANGE_FAILURE:
       /* ignore, we should get an error message posted on the bus */
@@ -350,7 +411,29 @@
     default:
       break;
   }
+  if (play->desired_state != GST_STATE_PAUSED)
+    sret = gst_element_set_state (play->playbin, play->desired_state);
+}
 
+/* returns FALSE if we have reached the end of the playlist */
+static gboolean
+play_next (GstPlay * play)
+{
+  if ((play->cur_idx + 1) >= play->num_uris)
+    return FALSE;
+
+  play_uri (play, play->uris[++play->cur_idx]);
+  return TRUE;
+}
+
+/* returns FALSE if we have reached the beginning of the playlist */
+static gboolean
+play_prev (GstPlay * play)
+{
+  if (play->cur_idx == 0 || play->num_uris <= 1)
+    return FALSE;
+
+  play_uri (play, play->uris[--play->cur_idx]);
   return TRUE;
 }
 
@@ -427,13 +510,147 @@
     g_warning ("Could not make URI out of filename '%s'", filename);
 }
 
+static void
+shuffle_uris (gchar ** uris, guint num)
+{
+  gchar *tmp;
+  guint i, j;
+
+  if (num < 2)
+    return;
+
+  for (i = 0; i < num; i++) {
+    /* gets equally distributed random number in 0..num-1 [0;num[ */
+    j = g_random_int_range (0, num);
+    tmp = uris[j];
+    uris[j] = uris[i];
+    uris[i] = tmp;
+  }
+}
+
+static void
+restore_terminal (void)
+{
+  gst_play_kb_set_key_handler (NULL, NULL);
+}
+
+static void
+toggle_paused (GstPlay * play)
+{
+  if (play->desired_state == GST_STATE_PLAYING)
+    play->desired_state = GST_STATE_PAUSED;
+  else
+    play->desired_state = GST_STATE_PLAYING;
+
+  if (!play->buffering) {
+    gst_element_set_state (play->playbin, play->desired_state);
+  } else if (play->desired_state == GST_STATE_PLAYING) {
+    g_print ("\nWill play as soon as buffering finishes)\n");
+  }
+}
+
+static void
+relative_seek (GstPlay * play, gdouble percent)
+{
+  GstQuery *query;
+  gboolean seekable = FALSE;
+  gint64 dur = -1, pos = -1;
+
+  g_return_if_fail (percent >= -1.0 && percent <= 1.0);
+
+  if (!gst_element_query_position (play->playbin, GST_FORMAT_TIME, &pos))
+    goto seek_failed;
+
+  query = gst_query_new_seeking (GST_FORMAT_TIME);
+  if (!gst_element_query (play->playbin, query)) {
+    gst_query_unref (query);
+    goto seek_failed;
+  }
+
+  gst_query_parse_seeking (query, NULL, &seekable, NULL, &dur);
+  gst_query_unref (query);
+
+  if (!seekable || dur <= 0)
+    goto seek_failed;
+
+  pos = pos + dur * percent;
+  if (pos > dur) {
+    if (!play_next (play)) {
+      g_print ("\nReached end of play list.\n");
+      g_main_loop_quit (play->loop);
+    }
+  } else {
+    if (pos < 0)
+      pos = 0;
+    if (!gst_element_seek_simple (play->playbin, GST_FORMAT_TIME,
+            GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_KEY_UNIT, pos))
+      goto seek_failed;
+  }
+
+  return;
+
+seek_failed:
+  {
+    g_print ("\nCould not seek.\n");
+  }
+}
+
+static void
+keyboard_cb (const gchar * key_input, gpointer user_data)
+{
+  GstPlay *play = (GstPlay *) user_data;
+
+  switch (g_ascii_tolower (key_input[0])) {
+    case ' ':
+      toggle_paused (play);
+      break;
+    case 'q':
+    case 'Q':
+      g_main_loop_quit (play->loop);
+      break;
+    case '>':
+      if (!play_next (play)) {
+        g_print ("\nReached end of play list.\n");
+        g_main_loop_quit (play->loop);
+      }
+      break;
+    case '<':
+      play_prev (play);
+      break;
+    case 27:                   /* ESC */
+      if (key_input[1] == '\0') {
+        g_main_loop_quit (play->loop);
+        break;
+      }
+      /* fall through */
+    default:
+      if (strcmp (key_input, GST_PLAY_KB_ARROW_RIGHT) == 0) {
+        relative_seek (play, +0.08);
+      } else if (strcmp (key_input, GST_PLAY_KB_ARROW_LEFT) == 0) {
+        relative_seek (play, -0.01);
+      } else if (strcmp (key_input, GST_PLAY_KB_ARROW_UP) == 0) {
+        play_set_relative_volume (play, +1.0 / VOLUME_STEPS);
+      } else if (strcmp (key_input, GST_PLAY_KB_ARROW_DOWN) == 0) {
+        play_set_relative_volume (play, -1.0 / VOLUME_STEPS);
+      } else {
+        GST_INFO ("keyboard input:");
+        for (; *key_input != '\0'; ++key_input)
+          GST_INFO ("  code %3d", *key_input);
+      }
+      break;
+  }
+}
+
 int
 main (int argc, char **argv)
 {
   GstPlay *play;
   GPtrArray *playlist;
   gboolean print_version = FALSE;
+  gboolean interactive = FALSE; /* FIXME: maybe enable by default? */
   gboolean gapless = FALSE;
+  gboolean shuffle = FALSE;
+  gdouble volume = 1.0;
   gchar **filenames = NULL;
   gchar *audio_sink = NULL;
   gchar *video_sink = NULL;
@@ -441,6 +658,7 @@
   guint num, i;
   GError *err = NULL;
   GOptionContext *ctx;
+  gchar *playlist_file = NULL;
   GOptionEntry options[] = {
     {"version", 0, 0, G_OPTION_ARG_NONE, &print_version,
         N_("Print version information and exit"), NULL},
@@ -450,10 +668,20 @@
         N_("Audio sink to use (default is autoaudiosink)"), NULL},
     {"gapless", 0, 0, G_OPTION_ARG_NONE, &gapless,
         N_("Enable gapless playback"), NULL},
+    {"shuffle", 0, 0, G_OPTION_ARG_NONE, &shuffle,
+        N_("Shuffle playlist"), NULL},
+    {"interactive", 0, 0, G_OPTION_ARG_NONE, &interactive,
+        N_("Interactive control via keyboard"), NULL},
+    {"volume", 0, 0, G_OPTION_ARG_DOUBLE, &volume,
+        N_("Volume"), NULL},
+    {"playlist", 0, 0, G_OPTION_ARG_FILENAME, &playlist_file,
+        N_("Playlist file containing input media files"), NULL},
     {G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &filenames, NULL},
     {NULL}
   };
 
+  setlocale (LC_ALL, "");
+
 #ifdef ENABLE_NLS
   bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
   bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
@@ -484,35 +712,77 @@
     return 0;
   }
 
-  if (filenames == NULL || *filenames == NULL) {
+  playlist = g_ptr_array_new ();
+
+  if (playlist_file != NULL) {
+    gchar *playlist_contents = NULL;
+    gchar **lines = NULL;
+
+    if (g_file_get_contents (playlist_file, &playlist_contents, NULL, &err)) {
+      lines = g_strsplit (playlist_contents, "\n", 0);
+      num = g_strv_length (lines);
+
+      for (i = 0; i < num; i++) {
+        if (lines[i][0] != '\0') {
+          GST_LOG ("Playlist[%d]: %s", i + 1, lines[i]);
+          add_to_playlist (playlist, lines[i]);
+        }
+      }
+      g_strfreev (lines);
+      g_free (playlist_contents);
+    } else {
+      g_printerr ("Could not read playlist: %s\n", err->message);
+      g_clear_error (&err);
+    }
+    g_free (playlist_file);
+  }
+
+  if (playlist->len == 0 && (filenames == NULL || *filenames == NULL)) {
     g_printerr (_("Usage: %s FILE1|URI1 [FILE2|URI2] [FILE3|URI3] ..."),
         "gst-play-" GST_API_VERSION);
     g_printerr ("\n\n"),
         g_printerr ("%s\n\n",
         _("You must provide at least one filename or URI to play."));
+    /* No input provided. Free array */
+    g_ptr_array_free (playlist, TRUE);
     return 1;
   }
 
-  playlist = g_ptr_array_new ();
-
   /* fill playlist */
-  num = g_strv_length (filenames);
-  for (i = 0; i < num; ++i) {
-    GST_LOG ("command line argument: %s", filenames[i]);
-    add_to_playlist (playlist, filenames[i]);
+  if (filenames != NULL && *filenames != NULL) {
+    num = g_strv_length (filenames);
+    for (i = 0; i < num; ++i) {
+      GST_LOG ("command line argument: %s", filenames[i]);
+      add_to_playlist (playlist, filenames[i]);
+    }
+    g_strfreev (filenames);
   }
-  g_strfreev (filenames);
 
+  num = playlist->len;
   g_ptr_array_add (playlist, NULL);
 
-  /* play */
   uris = (gchar **) g_ptr_array_free (playlist, FALSE);
-  play = play_new (uris, audio_sink, video_sink, gapless);
 
+  if (shuffle)
+    shuffle_uris (uris, num);
+
+  /* prepare */
+  play = play_new (uris, audio_sink, video_sink, gapless, volume);
+
+  if (interactive) {
+    if (gst_play_kb_set_key_handler (keyboard_cb, play)) {
+      atexit (restore_terminal);
+    } else {
+      g_print ("Interactive keyboard handling in terminal not available.\n");
+    }
+  }
+
+  /* play */
   do_play (play);
 
   /* clean up */
   play_free (play);
 
+  g_print ("\n");
   return 0;
 }
diff --git a/win32/common/_stdint.h b/win32/common/_stdint.h
index 9edb018..4bfdfcc 100644
--- a/win32/common/_stdint.h
+++ b/win32/common/_stdint.h
@@ -1,8 +1,8 @@
 #ifndef _GST_PLUGINS_BASE__STDINT_H
 #define _GST_PLUGINS_BASE__STDINT_H 1
 #ifndef _GENERATED_STDINT_H
-#define _GENERATED_STDINT_H "gst-plugins-base 1.2.4"
-/* generated using gnu compiler gcc (Debian 4.9-20140411-2) 4.9.0 20140411 (prerelease) [gcc-4_9-branch revision 209311] */
+#define _GENERATED_STDINT_H "gst-plugins-base 1.3.1"
+/* generated using gnu compiler Debian clang version 3.5-1 (trunk) (based on LLVM 3.5) */
 #define _STDINT_HAVE_STDINT_H 1
 #include <stdint.h>
 #endif
diff --git a/win32/common/config.h b/win32/common/config.h
index 8a1c754..8b655c9 100644
--- a/win32/common/config.h
+++ b/win32/common/config.h
@@ -84,7 +84,7 @@
 #define GST_PACKAGE_ORIGIN "Unknown package origin"
 
 /* GStreamer package release date/time for plugins as YYYY-MM-DD */
-#define GST_PACKAGE_RELEASE_DATETIME "2014-04-18"
+#define GST_PACKAGE_RELEASE_DATETIME "2014-05-03"
 
 /* Define if static plugins should be built */
 #undef GST_PLUGIN_BUILD_STATIC
@@ -322,7 +322,7 @@
 #define PACKAGE_NAME "GStreamer Base Plug-ins"
 
 /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "GStreamer Base Plug-ins 1.2.4"
+#define PACKAGE_STRING "GStreamer Base Plug-ins 1.3.1"
 
 /* Define to the one symbol short name of this package. */
 #define PACKAGE_TARNAME "gst-plugins-base"
@@ -331,7 +331,7 @@
 #undef PACKAGE_URL
 
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "1.2.4"
+#define PACKAGE_VERSION "1.3.1"
 
 /* directory where plugins are located */
 #ifdef _DEBUG
@@ -365,7 +365,7 @@
 #undef USE_TREMOLO
 
 /* Version number of package */
-#define VERSION "1.2.4"
+#define VERSION "1.3.1"
 
 /* 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/gstrtsp-enumtypes.c b/win32/common/gstrtsp-enumtypes.c
index ea8ea4a..69ca5da 100644
--- a/win32/common/gstrtsp-enumtypes.c
+++ b/win32/common/gstrtsp-enumtypes.c
@@ -281,6 +281,7 @@
           "x-sessioncookie"},
       {GST_RTSP_HDR_RTCP_INTERVAL, "GST_RTSP_HDR_RTCP_INTERVAL",
           "rtcp-interval"},
+      {GST_RTSP_HDR_KEYMGMT, "GST_RTSP_HDR_KEYMGMT", "keymgmt"},
       {GST_RTSP_HDR_LAST, "GST_RTSP_HDR_LAST", "last"},
       {0, NULL, NULL}
     };
@@ -367,6 +368,8 @@
           "unsupported-transport"},
       {GST_RTSP_STS_DESTINATION_UNREACHABLE,
           "GST_RTSP_STS_DESTINATION_UNREACHABLE", "destination-unreachable"},
+      {GST_RTSP_STS_KEY_MANAGEMENT_FAILURE,
+          "GST_RTSP_STS_KEY_MANAGEMENT_FAILURE", "key-management-failure"},
       {GST_RTSP_STS_INTERNAL_SERVER_ERROR, "GST_RTSP_STS_INTERNAL_SERVER_ERROR",
           "internal-server-error"},
       {GST_RTSP_STS_NOT_IMPLEMENTED, "GST_RTSP_STS_NOT_IMPLEMENTED",
diff --git a/win32/common/libgstpbutils.def b/win32/common/libgstpbutils.def
index 350ec45..f04a0de 100644
--- a/win32/common/libgstpbutils.def
+++ b/win32/common/libgstpbutils.def
@@ -8,6 +8,11 @@
 	gst_codec_utils_h264_get_level
 	gst_codec_utils_h264_get_level_idc
 	gst_codec_utils_h264_get_profile
+	gst_codec_utils_h265_caps_set_level_tier_and_profile
+	gst_codec_utils_h265_get_level
+	gst_codec_utils_h265_get_level_idc
+	gst_codec_utils_h265_get_profile
+	gst_codec_utils_h265_get_tier
 	gst_codec_utils_mpeg4video_caps_set_level_and_profile
 	gst_codec_utils_mpeg4video_get_level
 	gst_codec_utils_mpeg4video_get_profile
diff --git a/win32/common/libgstrtsp.def b/win32/common/libgstrtsp.def
index a696725..3fab6de 100644
--- a/win32/common/libgstrtsp.def
+++ b/win32/common/libgstrtsp.def
@@ -13,6 +13,7 @@
 	gst_rtsp_connection_get_read_socket
 	gst_rtsp_connection_get_remember_session_id
 	gst_rtsp_connection_get_tls
+	gst_rtsp_connection_get_tls_database
 	gst_rtsp_connection_get_tls_validation_flags
 	gst_rtsp_connection_get_tunnelid
 	gst_rtsp_connection_get_url
@@ -31,6 +32,7 @@
 	gst_rtsp_connection_set_proxy
 	gst_rtsp_connection_set_qos_dscp
 	gst_rtsp_connection_set_remember_session_id
+	gst_rtsp_connection_set_tls_database
 	gst_rtsp_connection_set_tls_validation_flags
 	gst_rtsp_connection_set_tunneled
 	gst_rtsp_connection_write
@@ -95,6 +97,7 @@
 	gst_rtsp_transport_as_text
 	gst_rtsp_transport_free
 	gst_rtsp_transport_get_manager
+	gst_rtsp_transport_get_media_type
 	gst_rtsp_transport_get_mime
 	gst_rtsp_transport_init
 	gst_rtsp_transport_new
@@ -114,6 +117,8 @@
 	gst_rtsp_watch_new
 	gst_rtsp_watch_reset
 	gst_rtsp_watch_send_message
+	gst_rtsp_watch_set_flushing
 	gst_rtsp_watch_set_send_backlog
 	gst_rtsp_watch_unref
+	gst_rtsp_watch_wait_backlog
 	gst_rtsp_watch_write_data
diff --git a/win32/common/libgstsdp.def b/win32/common/libgstsdp.def
index ddbe29c..d5e605a 100644
--- a/win32/common/libgstsdp.def
+++ b/win32/common/libgstsdp.def
@@ -1,4 +1,48 @@
 EXPORTS
+	gst_mikey_message_add_cs_srtp
+	gst_mikey_message_add_payload
+	gst_mikey_message_add_pke
+	gst_mikey_message_add_rand
+	gst_mikey_message_add_rand_len
+	gst_mikey_message_add_t
+	gst_mikey_message_add_t_now_ntp_utc
+	gst_mikey_message_find_payload
+	gst_mikey_message_free
+	gst_mikey_message_get_cs_srtp
+	gst_mikey_message_get_n_cs
+	gst_mikey_message_get_n_payloads
+	gst_mikey_message_get_payload
+	gst_mikey_message_insert_cs_srtp
+	gst_mikey_message_insert_payload
+	gst_mikey_message_new
+	gst_mikey_message_new_from_bytes
+	gst_mikey_message_new_from_data
+	gst_mikey_message_remove_cs_srtp
+	gst_mikey_message_remove_payload
+	gst_mikey_message_replace_cs_srtp
+	gst_mikey_message_replace_payload
+	gst_mikey_message_set_info
+	gst_mikey_message_to_bytes
+	gst_mikey_payload_copy
+	gst_mikey_payload_free
+	gst_mikey_payload_kemac_add_sub
+	gst_mikey_payload_kemac_get_n_sub
+	gst_mikey_payload_kemac_get_sub
+	gst_mikey_payload_kemac_remove_sub
+	gst_mikey_payload_kemac_set
+	gst_mikey_payload_key_data_set_interval
+	gst_mikey_payload_key_data_set_key
+	gst_mikey_payload_key_data_set_salt
+	gst_mikey_payload_key_data_set_spi
+	gst_mikey_payload_new
+	gst_mikey_payload_pke_set
+	gst_mikey_payload_rand_set
+	gst_mikey_payload_sp_add_param
+	gst_mikey_payload_sp_get_n_params
+	gst_mikey_payload_sp_get_param
+	gst_mikey_payload_sp_remove_param
+	gst_mikey_payload_sp_set
+	gst_mikey_payload_t_set
 	gst_sdp_address_is_multicast
 	gst_sdp_attribute_clear
 	gst_sdp_attribute_set
diff --git a/win32/common/libgstvideo.def b/win32/common/libgstvideo.def
index 616f138..cdb6e9f 100644
--- a/win32/common/libgstvideo.def
+++ b/win32/common/libgstvideo.def
@@ -95,9 +95,11 @@
 	gst_video_decoder_get_latency
 	gst_video_decoder_get_max_decode_time
 	gst_video_decoder_get_max_errors
+	gst_video_decoder_get_needs_format
 	gst_video_decoder_get_oldest_frame
 	gst_video_decoder_get_output_state
 	gst_video_decoder_get_packetized
+	gst_video_decoder_get_pending_frame_size
 	gst_video_decoder_get_qos_proportion
 	gst_video_decoder_get_type
 	gst_video_decoder_have_frame
@@ -107,6 +109,7 @@
 	gst_video_decoder_set_estimate_rate
 	gst_video_decoder_set_latency
 	gst_video_decoder_set_max_errors
+	gst_video_decoder_set_needs_format
 	gst_video_decoder_set_output_state
 	gst_video_decoder_set_packetized
 	gst_video_encoder_allocate_output_buffer
@@ -211,4 +214,7 @@
 	gst_video_region_of_interest_meta_get_info
 	gst_video_sink_center_rect
 	gst_video_sink_get_type
+	gst_video_tile_get_index
+	gst_video_tile_mode_get_type
+	gst_video_tile_type_get_type
 	gst_video_transfer_function_get_type
diff --git a/win32/common/video-enumtypes.c b/win32/common/video-enumtypes.c
index 9fd6aca..a1f3211 100644
--- a/win32/common/video-enumtypes.c
+++ b/win32/common/video-enumtypes.c
@@ -10,6 +10,7 @@
 #include "colorbalance.h"
 #include "navigation.h"
 #include "video-chroma.h"
+#include "video-tile.h"
 
 /* enumerations from "video-format.h" */
 GType
@@ -71,6 +72,8 @@
       {GST_VIDEO_FORMAT_GBR_10LE, "GST_VIDEO_FORMAT_GBR_10LE", "gbr-10le"},
       {GST_VIDEO_FORMAT_NV16, "GST_VIDEO_FORMAT_NV16", "nv16"},
       {GST_VIDEO_FORMAT_NV24, "GST_VIDEO_FORMAT_NV24", "nv24"},
+      {GST_VIDEO_FORMAT_NV12_64Z32, "GST_VIDEO_FORMAT_NV12_64Z32",
+          "nv12-64z32"},
       {0, NULL, NULL}
     };
     GType g_define_type_id = g_enum_register_static ("GstVideoFormat", values);
@@ -95,6 +98,7 @@
       {GST_VIDEO_FORMAT_FLAG_COMPLEX, "GST_VIDEO_FORMAT_FLAG_COMPLEX",
           "complex"},
       {GST_VIDEO_FORMAT_FLAG_UNPACK, "GST_VIDEO_FORMAT_FLAG_UNPACK", "unpack"},
+      {GST_VIDEO_FORMAT_FLAG_TILED, "GST_VIDEO_FORMAT_FLAG_TILED", "tiled"},
       {0, NULL, NULL}
     };
     GType g_define_type_id =
@@ -455,3 +459,38 @@
   }
   return g_define_type_id__volatile;
 }
+
+/* enumerations from "video-tile.h" */
+GType
+gst_video_tile_type_get_type (void)
+{
+  static volatile gsize g_define_type_id__volatile = 0;
+  if (g_once_init_enter (&g_define_type_id__volatile)) {
+    static const GEnumValue values[] = {
+      {GST_VIDEO_TILE_TYPE_INDEXED, "GST_VIDEO_TILE_TYPE_INDEXED", "indexed"},
+      {0, NULL, NULL}
+    };
+    GType g_define_type_id =
+        g_enum_register_static ("GstVideoTileType", values);
+    g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
+  }
+  return g_define_type_id__volatile;
+}
+
+GType
+gst_video_tile_mode_get_type (void)
+{
+  static volatile gsize g_define_type_id__volatile = 0;
+  if (g_once_init_enter (&g_define_type_id__volatile)) {
+    static const GEnumValue values[] = {
+      {GST_VIDEO_TILE_MODE_UNKNOWN, "GST_VIDEO_TILE_MODE_UNKNOWN", "unknown"},
+      {GST_VIDEO_TILE_MODE_ZFLIPZ_2X2, "GST_VIDEO_TILE_MODE_ZFLIPZ_2X2",
+          "zflipz-2x2"},
+      {0, NULL, NULL}
+    };
+    GType g_define_type_id =
+        g_enum_register_static ("GstVideoTileMode", values);
+    g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
+  }
+  return g_define_type_id__volatile;
+}
diff --git a/win32/common/video-enumtypes.h b/win32/common/video-enumtypes.h
index 177f196..04f1478 100644
--- a/win32/common/video-enumtypes.h
+++ b/win32/common/video-enumtypes.h
@@ -53,6 +53,12 @@
 #define GST_TYPE_VIDEO_CHROMA_METHOD (gst_video_chroma_method_get_type())
 GType gst_video_chroma_flags_get_type (void);
 #define GST_TYPE_VIDEO_CHROMA_FLAGS (gst_video_chroma_flags_get_type())
+
+/* enumerations from "video-tile.h" */
+GType gst_video_tile_type_get_type (void);
+#define GST_TYPE_VIDEO_TILE_TYPE (gst_video_tile_type_get_type())
+GType gst_video_tile_mode_get_type (void);
+#define GST_TYPE_VIDEO_TILE_MODE (gst_video_tile_mode_get_type())
 G_END_DECLS
 
 #endif /* __GST_VIDEO_ENUM_TYPES_H__ */