From 45626bf9f45117638282511219a75553dd968950 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <slomo@circular-chaos.org>
Date: Tue, 24 Sep 2013 16:47:44 +0200
Subject: [PATCH] Imported Upstream version 1.2.0

---
 ChangeLog                                     | 424 +++++++++++++-
 NEWS                                          | 123 ++++-
 RELEASE                                       |  40 +-
 autogen.sh                                    |  12 +-
 common/check.mak                              |   6 +-
 common/extract-release-date-from-doap-file    |   8 +-
 common/gst.supp                               |   8 +
 common/m4/gst-args.m4                         |   9 +-
 common/m4/gst-glib2.m4                        |  12 +-
 common/m4/gst-package-release-datetime.m4     |   4 +-
 configure                                     |  61 +-
 configure.ac                                  |   8 +-
 docs/plugins/gst-plugins-good-plugins.args    |  18 +-
 .../gst-plugins-good-plugins.hierarchy        |   1 -
 .../gst-plugins-good-plugins-1.0.devhelp2     |  28 +-
 .../html/gst-plugins-good-plugins-mj2mux.html |   2 +-
 .../gst-plugins-good-plugins-monoscope.html   |  56 +-
 .../html/gst-plugins-good-plugins-mp4mux.html |   2 +-
 .../gst-plugins-good-plugins-plugin-1394.html |   2 +-
 ...st-plugins-good-plugins-plugin-aasink.html |   2 +-
 .../gst-plugins-good-plugins-plugin-alaw.html |   2 +-
 ...gst-plugins-good-plugins-plugin-alpha.html |   2 +-
 ...lugins-good-plugins-plugin-alphacolor.html |   2 +-
 ...st-plugins-good-plugins-plugin-apetag.html |   2 +-
 ...t-plugins-good-plugins-plugin-audiofx.html |   2 +-
 ...t-plugins-good-plugins-plugin-auparse.html |   2 +-
 ...lugins-good-plugins-plugin-autodetect.html |   2 +-
 .../gst-plugins-good-plugins-plugin-avi.html  |   2 +-
 ...-plugins-good-plugins-plugin-cacasink.html |   2 +-
 ...gst-plugins-good-plugins-plugin-cairo.html |   2 +-
 ...st-plugins-good-plugins-plugin-cutter.html |   2 +-
 ...gst-plugins-good-plugins-plugin-debug.html |   2 +-
 ...ugins-good-plugins-plugin-deinterlace.html |   2 +-
 .../gst-plugins-good-plugins-plugin-dtmf.html |   2 +-
 .../gst-plugins-good-plugins-plugin-dv.html   |   2 +-
 ...t-plugins-good-plugins-plugin-effectv.html |   2 +-
 ...plugins-good-plugins-plugin-equalizer.html |   2 +-
 .../gst-plugins-good-plugins-plugin-flac.html |   2 +-
 .../gst-plugins-good-plugins-plugin-flv.html  |   2 +-
 ...st-plugins-good-plugins-plugin-flxdec.html |   2 +-
 ...plugins-good-plugins-plugin-gdkpixbuf.html |   2 +-
 .../gst-plugins-good-plugins-plugin-goom.html |   2 +-
 ...t-plugins-good-plugins-plugin-goom2k1.html |   2 +-
 ...-plugins-good-plugins-plugin-icydemux.html |   2 +-
 ...-plugins-good-plugins-plugin-id3demux.html |   2 +-
 ...ugins-good-plugins-plugin-imagefreeze.html |   2 +-
 ...lugins-good-plugins-plugin-interleave.html |   2 +-
 ...st-plugins-good-plugins-plugin-isomp4.html |   2 +-
 .../gst-plugins-good-plugins-plugin-jack.html |   2 +-
 .../gst-plugins-good-plugins-plugin-jpeg.html |   2 +-
 ...gst-plugins-good-plugins-plugin-level.html |   2 +-
 ...-plugins-good-plugins-plugin-matroska.html |   2 +-
 ...gst-plugins-good-plugins-plugin-mulaw.html |   2 +-
 ...plugins-good-plugins-plugin-multifile.html |   2 +-
 ...plugins-good-plugins-plugin-multipart.html |   2 +-
 ...ns-good-plugins-plugin-navigationtest.html |   2 +-
 .../gst-plugins-good-plugins-plugin-oss4.html |   2 +-
 ...-plugins-good-plugins-plugin-ossaudio.html |   2 +-
 .../gst-plugins-good-plugins-plugin-png.html  |   2 +-
 ...lugins-good-plugins-plugin-pulseaudio.html |   2 +-
 ...lugins-good-plugins-plugin-replaygain.html |   2 +-
 .../gst-plugins-good-plugins-plugin-rtp.html  |   2 +-
 ...lugins-good-plugins-plugin-rtpmanager.html |   2 +-
 .../gst-plugins-good-plugins-plugin-rtsp.html |   2 +-
 ...plugins-good-plugins-plugin-shapewipe.html |   2 +-
 ...lugins-good-plugins-plugin-shout2send.html |   2 +-
 ...gst-plugins-good-plugins-plugin-smpte.html |   2 +-
 .../gst-plugins-good-plugins-plugin-soup.html |   2 +-
 ...-plugins-good-plugins-plugin-spectrum.html |   2 +-
 ...gst-plugins-good-plugins-plugin-speex.html |   2 +-
 ...st-plugins-good-plugins-plugin-taglib.html |   2 +-
 .../gst-plugins-good-plugins-plugin-udp.html  |   2 +-
 ...gins-good-plugins-plugin-video4linux2.html |   2 +-
 ...-plugins-good-plugins-plugin-videobox.html |   2 +-
 ...plugins-good-plugins-plugin-videocrop.html |   2 +-
 ...ugins-good-plugins-plugin-videofilter.html |   2 +-
 ...lugins-good-plugins-plugin-videomixer.html |   2 +-
 .../gst-plugins-good-plugins-plugin-vpx.html  |   2 +-
 ...st-plugins-good-plugins-plugin-wavenc.html |   2 +-
 ...t-plugins-good-plugins-plugin-wavpack.html |   2 +-
 ...-plugins-good-plugins-plugin-wavparse.html |   2 +-
 ...plugins-good-plugins-plugin-ximagesrc.html |   2 +-
 ...st-plugins-good-plugins-plugin-y4menc.html |   2 +-
 .../html/gst-plugins-good-plugins-qtmux.html  |   2 +-
 ...-plugins-good-plugins-rtpjitterbuffer.html | 117 +++-
 .../gst-plugins-good-plugins-rtpptdemux.html  |  42 +-
 .../gst-plugins-good-plugins-rtpsession.html  | 135 ++++-
 ...gst-plugins-good-plugins-rtpssrcdemux.html |  35 +-
 docs/plugins/html/index.html                  |   2 +-
 docs/plugins/html/index.sgml                  |   5 +-
 docs/plugins/inspect/plugin-1394.xml          |   2 +-
 docs/plugins/inspect/plugin-aasink.xml        |   2 +-
 docs/plugins/inspect/plugin-alaw.xml          |   2 +-
 docs/plugins/inspect/plugin-alpha.xml         |   2 +-
 docs/plugins/inspect/plugin-alphacolor.xml    |   2 +-
 docs/plugins/inspect/plugin-apetag.xml        |   2 +-
 docs/plugins/inspect/plugin-audiofx.xml       |   2 +-
 docs/plugins/inspect/plugin-audioparsers.xml  |   2 +-
 docs/plugins/inspect/plugin-auparse.xml       |   2 +-
 docs/plugins/inspect/plugin-autodetect.xml    |   2 +-
 docs/plugins/inspect/plugin-avi.xml           |   2 +-
 docs/plugins/inspect/plugin-cacasink.xml      |   2 +-
 docs/plugins/inspect/plugin-cairo.xml         |   2 +-
 docs/plugins/inspect/plugin-cutter.xml        |   2 +-
 docs/plugins/inspect/plugin-debug.xml         |   2 +-
 docs/plugins/inspect/plugin-deinterlace.xml   |   2 +-
 docs/plugins/inspect/plugin-dtmf.xml          |   2 +-
 docs/plugins/inspect/plugin-dv.xml            |   2 +-
 docs/plugins/inspect/plugin-effectv.xml       |   2 +-
 docs/plugins/inspect/plugin-equalizer.xml     |   2 +-
 docs/plugins/inspect/plugin-flac.xml          |   2 +-
 docs/plugins/inspect/plugin-flv.xml           |   2 +-
 docs/plugins/inspect/plugin-flxdec.xml        |   2 +-
 docs/plugins/inspect/plugin-gdkpixbuf.xml     |   2 +-
 docs/plugins/inspect/plugin-goom.xml          |   2 +-
 docs/plugins/inspect/plugin-goom2k1.xml       |   2 +-
 docs/plugins/inspect/plugin-icydemux.xml      |   2 +-
 docs/plugins/inspect/plugin-id3demux.xml      |   2 +-
 docs/plugins/inspect/plugin-imagefreeze.xml   |   2 +-
 docs/plugins/inspect/plugin-interleave.xml    |   2 +-
 docs/plugins/inspect/plugin-isomp4.xml        |   2 +-
 docs/plugins/inspect/plugin-jack.xml          |   2 +-
 docs/plugins/inspect/plugin-jpeg.xml          |   2 +-
 docs/plugins/inspect/plugin-level.xml         |   2 +-
 docs/plugins/inspect/plugin-matroska.xml      |   2 +-
 docs/plugins/inspect/plugin-mulaw.xml         |   2 +-
 docs/plugins/inspect/plugin-multifile.xml     |   2 +-
 docs/plugins/inspect/plugin-multipart.xml     |   2 +-
 .../plugins/inspect/plugin-navigationtest.xml |   2 +-
 docs/plugins/inspect/plugin-oss4.xml          |   2 +-
 docs/plugins/inspect/plugin-ossaudio.xml      |   2 +-
 docs/plugins/inspect/plugin-png.xml           |   2 +-
 docs/plugins/inspect/plugin-pulseaudio.xml    |   2 +-
 docs/plugins/inspect/plugin-replaygain.xml    |   2 +-
 docs/plugins/inspect/plugin-rtp.xml           |   2 +-
 docs/plugins/inspect/plugin-rtpmanager.xml    |   2 +-
 docs/plugins/inspect/plugin-rtsp.xml          |   2 +-
 docs/plugins/inspect/plugin-shapewipe.xml     |   2 +-
 docs/plugins/inspect/plugin-shout2send.xml    |   2 +-
 docs/plugins/inspect/plugin-smpte.xml         |   2 +-
 docs/plugins/inspect/plugin-soup.xml          |   2 +-
 docs/plugins/inspect/plugin-spectrum.xml      |   2 +-
 docs/plugins/inspect/plugin-speex.xml         |   2 +-
 docs/plugins/inspect/plugin-taglib.xml        |   2 +-
 docs/plugins/inspect/plugin-udp.xml           |   2 +-
 docs/plugins/inspect/plugin-video4linux2.xml  |   2 +-
 docs/plugins/inspect/plugin-videobox.xml      |   2 +-
 docs/plugins/inspect/plugin-videocrop.xml     |   2 +-
 docs/plugins/inspect/plugin-videofilter.xml   |   2 +-
 docs/plugins/inspect/plugin-videomixer.xml    |   2 +-
 docs/plugins/inspect/plugin-vpx.xml           |   2 +-
 docs/plugins/inspect/plugin-wavenc.xml        |   2 +-
 docs/plugins/inspect/plugin-wavpack.xml       |   2 +-
 docs/plugins/inspect/plugin-wavparse.xml      |   2 +-
 docs/plugins/inspect/plugin-ximagesrc.xml     |   2 +-
 docs/plugins/inspect/plugin-y4menc.xml        |   2 +-
 gst-plugins-good.doap                         |  10 +
 gst-plugins-good.spec                         |   2 +-
 gst/alpha/gstalpha.c                          | 192 +++----
 gst/goom/mmx.h                                |  12 +
 gst/isomp4/gstqtmux.c                         |  58 +-
 gst/matroska/matroska-demux.c                 |  17 +
 gst/rtpmanager/gstrtpbin.c                    |  10 +-
 gst/rtpmanager/gstrtpjitterbuffer.c           | 441 ++++++++++-----
 gst/rtpmanager/gstrtpptdemux.c                |   6 +-
 gst/rtpmanager/gstrtpsession.c                |  30 +-
 gst/rtpmanager/gstrtpssrcdemux.c              |   6 +-
 gst/rtpmanager/rtpjitterbuffer.c              | 215 +++++---
 gst/rtpmanager/rtpjitterbuffer.h              |  40 +-
 gst/videomixer/videomixerorc-dist.c           | 206 +++----
 po/af.gmo                                     | Bin 666 -> 666 bytes
 po/af.po                                      |   2 +-
 po/az.gmo                                     | Bin 723 -> 723 bytes
 po/az.po                                      |   2 +-
 po/bg.gmo                                     | Bin 11149 -> 11149 bytes
 po/bg.po                                      |   2 +-
 po/ca.gmo                                     | Bin 9124 -> 9124 bytes
 po/ca.po                                      |   2 +-
 po/cs.gmo                                     | Bin 11134 -> 11134 bytes
 po/cs.po                                      |   2 +-
 po/da.gmo                                     | Bin 9513 -> 9513 bytes
 po/da.po                                      |   2 +-
 po/de.gmo                                     | Bin 10919 -> 10919 bytes
 po/de.po                                      |   2 +-
 po/el.gmo                                     | Bin 11597 -> 11597 bytes
 po/el.po                                      |   2 +-
 po/en_GB.gmo                                  | Bin 671 -> 671 bytes
 po/en_GB.po                                   |   2 +-
 po/eo.gmo                                     | Bin 1328 -> 1328 bytes
 po/eo.po                                      |   2 +-
 po/es.gmo                                     | Bin 9369 -> 9369 bytes
 po/es.po                                      |   2 +-
 po/eu.gmo                                     | Bin 7626 -> 7626 bytes
 po/eu.po                                      |   2 +-
 po/fi.gmo                                     | Bin 8041 -> 8041 bytes
 po/fi.po                                      |   2 +-
 po/fr.gmo                                     | Bin 9222 -> 9222 bytes
 po/fr.po                                      |   2 +-
 po/gl.gmo                                     | Bin 11055 -> 11055 bytes
 po/gl.po                                      |   2 +-
 po/gst-plugins-good-1.0.pot                   |   6 +-
 po/hr.gmo                                     | Bin 8525 -> 8525 bytes
 po/hr.po                                      |   2 +-
 po/hu.gmo                                     | Bin 10807 -> 10807 bytes
 po/hu.po                                      |   2 +-
 po/id.gmo                                     | Bin 8586 -> 8586 bytes
 po/id.po                                      |   2 +-
 po/it.gmo                                     | Bin 8539 -> 8539 bytes
 po/it.po                                      |   2 +-
 po/ja.gmo                                     | Bin 12193 -> 12193 bytes
 po/ja.po                                      |   2 +-
 po/lt.gmo                                     | Bin 7460 -> 7460 bytes
 po/lt.po                                      |   2 +-
 po/lv.gmo                                     | Bin 8543 -> 8543 bytes
 po/lv.po                                      |   2 +-
 po/mt.gmo                                     | Bin 5942 -> 5942 bytes
 po/mt.po                                      |   2 +-
 po/nb.gmo                                     | Bin 9840 -> 9840 bytes
 po/nb.po                                      |   2 +-
 po/nl.gmo                                     | Bin 10595 -> 10595 bytes
 po/nl.po                                      |   2 +-
 po/or.gmo                                     | Bin 832 -> 832 bytes
 po/or.po                                      |   2 +-
 po/pl.gmo                                     | Bin 11035 -> 11035 bytes
 po/pl.po                                      |   2 +-
 po/pt_BR.gmo                                  | Bin 10713 -> 10713 bytes
 po/pt_BR.po                                   |   2 +-
 po/ro.gmo                                     | Bin 8001 -> 8001 bytes
 po/ro.po                                      |   2 +-
 po/ru.gmo                                     | Bin 13730 -> 13730 bytes
 po/ru.po                                      |   2 +-
 po/sk.gmo                                     | Bin 8854 -> 8854 bytes
 po/sk.po                                      |   2 +-
 po/sl.gmo                                     | Bin 9825 -> 9825 bytes
 po/sl.po                                      |   2 +-
 po/sq.gmo                                     | Bin 685 -> 685 bytes
 po/sq.po                                      |   2 +-
 po/sr.gmo                                     | Bin 11202 -> 11202 bytes
 po/sr.po                                      |   2 +-
 po/sv.gmo                                     | Bin 8861 -> 8861 bytes
 po/sv.po                                      |   2 +-
 po/tr.gmo                                     | Bin 9917 -> 9917 bytes
 po/tr.po                                      |   2 +-
 po/uk.gmo                                     | Bin 14097 -> 14097 bytes
 po/uk.po                                      |   2 +-
 po/vi.gmo                                     | Bin 12220 -> 12220 bytes
 po/vi.po                                      |   2 +-
 po/zh_CN.gmo                                  | Bin 6295 -> 6295 bytes
 po/zh_CN.po                                   |   2 +-
 po/zh_HK.gmo                                  | Bin 1571 -> 1571 bytes
 po/zh_HK.po                                   |   2 +-
 po/zh_TW.gmo                                  | Bin 1570 -> 1570 bytes
 po/zh_TW.po                                   |   2 +-
 sys/osxvideo/osxvideosink.m                   |  12 +-
 sys/v4l2/gstv4l2bufferpool.c                  |  31 +-
 sys/v4l2/gstv4l2bufferpool.h                  |   1 -
 tests/check/Makefile.in                       |   2 +
 tests/check/elements/rtpjitterbuffer.c        | 522 ++++++++++++++++--
 win32/common/config.h                         |   8 +-
 259 files changed, 2457 insertions(+), 874 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index cb7b048f7..36f60b8a3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,9 +1,429 @@
+=== release 1.2.0 ===
+
+2013-09-24  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+	* configure.ac:
+	  releasing 1.2.0
+
+2013-09-20 19:43:21 +0200  Andoni Morales Alastruey <ylatuya@gmail.com>
+
+	* sys/osxvideo/osxvideosink.m:
+	  osxvideosink: fix segfault releasing the sink
+	  show_frame is deferred to the main thread and can be called
+	  when the sink has been released, so we need to keep an extra ref
+	  on ObjectiveC object helper.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=708501
+
+2013-09-19 17:11:34 -0400  Robert Krakora <rob.krakora@messagenetsystems.com>
+
+	* sys/v4l2/gstv4l2bufferpool.c:
+	  v4l2bufferpool: Restore original GstMemory in buffer if it has been changed
+	  https://bugzilla.gnome.org/show_bug.cgi?id=706083
+
+2013-09-23 16:34:15 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* gst/rtpmanager/gstrtpjitterbuffer.c:
+	* gst/rtpmanager/gstrtpsession.c:
+	  rtpmanager: update docs
+
+2013-09-23 15:36:32 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* gst/rtpmanager/gstrtpbin.c:
+	* gst/rtpmanager/gstrtpjitterbuffer.c:
+	* gst/rtpmanager/gstrtpptdemux.c:
+	* gst/rtpmanager/gstrtpsession.c:
+	* gst/rtpmanager/gstrtpssrcdemux.c:
+	  docs: update docs with 1.0 element names
+
+2013-09-23 14:13:30 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* tests/check/elements/rtpjitterbuffer.c:
+	  tests: add test for retransmission because of reordering
+
+2013-09-23 14:12:03 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* gst/rtpmanager/gstrtpjitterbuffer.c:
+	  rtpjitterbuffer: always store lost event in jitterbuffer
+	  Always prepare a lost event in the jitterbuffer, it is to wake up and make the
+	  pushing thread continue. We drop the event when we are not supposed to push lost
+	  events downstream.
+
+2013-09-23 11:18:46 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* gst/rtpmanager/gstrtpjitterbuffer.c:
+	  rtpjitterbuffer: schedule lost event differently
+	  Schedule the lost event by placing it inside the jitterbuffer with the seqnum
+	  that was lost so that the pushing thread can interleave and push it properly.
+
+2013-09-23 11:17:34 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* tests/check/elements/rtpjitterbuffer.c:
+	  tests: remove timeouts from check
+	  Timeouts make the test unreliable and are not needed.
+
+2013-09-23 11:15:30 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* gst/rtpmanager/rtpjitterbuffer.c:
+	  rtpjitterbuffer: remove list debug
+
+2013-09-23 11:14:01 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* gst/rtpmanager/gstrtpjitterbuffer.c:
+	* gst/rtpmanager/rtpjitterbuffer.h:
+	  rtpjitterbuffer: add type to the item
+	  So that the upper layer can know what data is contained in the item.
+
+2013-09-23 09:58:32 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* gst/rtpmanager/gstrtpjitterbuffer.c:
+	* gst/rtpmanager/rtpjitterbuffer.c:
+	* gst/rtpmanager/rtpjitterbuffer.h:
+	  rtpjitterbuffer: fix flush
+	  Pass function to flush to properly free the queue items.
+
+2013-09-21 00:08:20 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* gst/rtpmanager/rtpjitterbuffer.c:
+	  rtpjitterbuffer: append seqnum -1 packets
+
+2013-09-20 23:48:20 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* gst/rtpmanager/gstrtpjitterbuffer.c:
+	* gst/rtpmanager/rtpjitterbuffer.c:
+	* gst/rtpmanager/rtpjitterbuffer.h:
+	  rtpjitterbuffer: use structure to hold packet information
+	  Make the jitterbuffer operate on a structure containing all the packet
+	  information. This avoids mapping the buffer multiple times just to get the RTP
+	  information. It will also make it possible to store other miniobjects such as
+	  events later.
+
+2013-09-20 17:48:52 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* gst/rtpmanager/gstrtpjitterbuffer.c:
+	  rtpjitterbuffer: update expected timer when possible
+	  When we receive a packet and we have some missing packets, we can update their
+	  estimated arrival times based on the timestamp difference.
+
+2013-09-20 17:18:27 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* gst/rtpmanager/gstrtpjitterbuffer.c:
+	  rtpjitterbuffer: fix order of timeout events
+	  Improve the order of the timeout events, if there are timers with the same
+	  timeout, we want to trigger the lowest seqnum first. For this we need to loop
+	  over the complete array of timers to find the best one before triggering the
+	  timeout.
+
+2013-09-20 16:58:38 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* gst/rtpmanager/gstrtpjitterbuffer.c:
+	  rtpjitterbuffer: send lost event before signaling next buffer
+	  First send the lost event, then update the next_seqnum counter and then
+	  send the signal to the pushing thread that it can retry to push a buffer. This
+	  avoids pushing out buffers before the lost event is pushed.
+
+2013-09-20 15:35:25 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* gst/rtpmanager/gstrtpjitterbuffer.c:
+	* gst/rtpmanager/rtpjitterbuffer.c:
+	* gst/rtpmanager/rtpjitterbuffer.h:
+	  jitterbuffer: configure clock-rate on jitterbuffer
+	  Add a get and setter to configure the clock-rate in the jitterbuffer instead of
+	  passing it as an argument to the insert method.
+
+2013-09-20 12:29:39 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* tests/check/elements/rtpjitterbuffer.c:
+	  tests: add test for packet delay and retransmission
+
+2013-09-20 12:27:26 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* gst/rtpmanager/gstrtpjitterbuffer.c:
+	  rtpjitterbuffer: add option to reset retransmission timers
+
+2013-09-20 12:25:43 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* gst/rtpmanager/gstrtpjitterbuffer.c:
+	  rtpjitterbuffer: stop the timer thread
+	  The timeout code could release the lock so we need to check if we are allowed to
+	  wait for the clock some more.
+
+2013-09-20 12:25:12 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* gst/rtpmanager/gstrtpjitterbuffer.c:
+	  rtpjitterbuffer: unlock only once
+
+2013-09-20 11:30:04 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* tests/check/elements/rtpjitterbuffer.c:
+	  tests: check both PTS and DTS
+
+2013-09-20 10:55:03 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* tests/check/elements/rtpjitterbuffer.c:
+	  tests: add unit-test for multiple missing packets
+	  Check if multiple missing packets generate retransmission events and that the
+	  retranmission requests are canceled when the missing packet arrives.
+
+2013-09-20 10:53:29 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* gst/rtpmanager/gstrtpjitterbuffer.c:
+	  rtpjitterbuffer: improve flush and shutdown
+	  There is no need to unschedule the timer in flush-start, flush-stop will remove
+	  the timers and unschedule.
+	  Unschedule the current timer before attempting to join the timer thread.
+
+2013-09-20 10:43:53 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* tests/check/elements/rtpjitterbuffer.c:
+	  tests: improve debug
+
+2013-09-20 10:42:27 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* gst/rtpmanager/gstrtpjitterbuffer.c:
+	  rtpjitterbuffer: set correct expected time
+	  When we already have a timer for a packet, skip it but don't forget to adjust
+	  the dts to the expected dts of the next packet.
+
+2013-09-20 10:41:59 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* gst/rtpmanager/gstrtpjitterbuffer.c:
+	  jitterbuffer: improve debug
+
+2013-09-19 16:55:25 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* gst/alpha/gstalpha.c:
+	  alpha: use POFFSET instead of OFFSET
+	  Use the more correct POFFSET macro to get the offset of a component in its
+	  plane. The offset macro gives the offset of the component relative to the start
+	  of the frame.
+
+2013-09-21 18:46:29 +0200  Sebastian Dröge <slomo@circular-chaos.org>
+
+	* gst/goom/mmx.h:
+	  goom: Fix MMX assembly compilation with clang
+	  clang does not want or need a clobber list for emms:
+	  error: clobbers must be last on the x87 stack
+	  Patch taken from the FreeBSD ports, provided by
+	  Dan McGregor <dan.mcgregor@usask.ca>
+
+2013-09-20 16:16:57 +0200  Edward Hervey <edward@collabora.com>
+
+	* common:
+	  Automatic update of common submodule
+	  From b613661 to 6b03ba7
+
+2013-09-20 10:19:22 +0200  Sebastian Dröge <slomo@circular-chaos.org>
+
+	* gst/matroska/matroska-demux.c:
+	  matroska-demux: Make sure that subtitle buffers are \0-terminated
+	  https://bugzilla.gnome.org/show_bug.cgi?id=707933
+
+2013-09-17 12:17:54 +0200  Andoni Morales Alastruey <ylatuya@gmail.com>
+
+	* gst/isomp4/gstqtmux.c:
+	  qtmux: handle issues correctly when downstream is not seekable
+	  The streamable property only make sense for fragmented formats.
+	  For regular MP4, when downstream is not seekable we can't rewrite
+	  the headers, so qtmux can only work with fast-start=TRUE, where
+	  the headers are written finishing the file.
+	  For fragmented MP4, when streamable is not seekable and the streamable
+	  property is FALSE, we must enforce streamable=TRUE warning the user
+	  about this change
+	  https://bugzilla.gnome.org/show_bug.cgi?id=707242
+
+2013-09-17 12:06:06 +0200  Andoni Morales Alastruey <ylatuya@gmail.com>
+
+	* gst/isomp4/gstqtmux.c:
+	  qtmux: make "streamable" TRUE as default
+	  The most common use case for fragmented MP4 (Dash and Smooth Streaming)
+	  is producing streamable content (even for VOD). streamable=FALSE would only
+	  be used to generate fragmented MP4 with and index of MOOF's that could
+	  be reproduced without a playlist/manifest
+	  https://bugzilla.gnome.org/show_bug.cgi?id=707242
+
+2013-09-17 12:01:30 +0200  Andoni Morales Alastruey <ylatuya@gmail.com>
+
+	* gst/isomp4/gstqtmux.c:
+	  qtmux: deprecate the streamable property for non-fragmented MP4
+	  The streamable property only makes sense for fragmented MP4.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=707242
+
+2013-09-19 17:08:19 -0400  Olivier Crête <olivier.crete@collabora.com>
+
+	* sys/v4l2/gstv4l2bufferpool.h:
+	  v4l2: Remove commented out line
+
+2013-09-19 18:43:08 +0100  Tim-Philipp Müller <tim@centricular.net>
+
+	* common:
+	  Automatic update of common submodule
+	  From 74a6857 to b613661
+
+2013-09-19 17:35:27 +0100  Tim-Philipp Müller <tim@centricular.net>
+
+	* autogen.sh:
+	* common:
+	  Automatic update of common submodule
+	  From 098c0d7 to 74a6857
+
+2013-09-19 16:50:44 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* gst/alpha/gstalpha.c:
+	  alpha: don't assume planar formats have just 1 block
+	  Don't assume planar formats have just one memory block with the data but use the
+	  macros to access the right memory block where a component can be found.
+
+2013-09-19 14:14:52 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* tests/check/elements/rtpjitterbuffer.c:
+	  tests: add retransmission jitterbuffer test
+	  Store both DTS and PTS on buffers.
+	  Make a queue for srcpad events.
+	  Activate pads after linking so that we don't get RECONFIGURE events.
+	  Add test for retransmission.
+
+2013-09-19 14:12:18 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* gst/rtpmanager/gstrtpjitterbuffer.c:
+	  rtpjitterbuffer: keep delay as a separate variable in timer
+	  Keep a separate delay in the timer so that we still know the original timestamp
+	  of the packet that this timer refers to. We can then place the correct
+	  running-time in the Retransmission event.
+
+2013-09-19 14:08:56 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+	* gst/rtpmanager/gstrtpjitterbuffer.c:
+	  rtpjitterbuffer: fix writability of properties
+
+2013-09-19 11:34:57 +0200  Sebastian Dröge <slomo@circular-chaos.org>
+
+	* configure.ac:
+	  Back to development
+
 === release 1.1.90 ===
 
-2013-09-19  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+2013-09-19 10:50:23 +0200  Sebastian Dröge <slomo@circular-chaos.org>
 
+	* ChangeLog:
+	* NEWS:
+	* RELEASE:
 	* configure.ac:
-	  releasing 1.1.90
+	* docs/plugins/gst-plugins-good-plugins.args:
+	* docs/plugins/gst-plugins-good-plugins.hierarchy:
+	* docs/plugins/inspect/plugin-1394.xml:
+	* docs/plugins/inspect/plugin-aasink.xml:
+	* docs/plugins/inspect/plugin-alaw.xml:
+	* docs/plugins/inspect/plugin-alpha.xml:
+	* docs/plugins/inspect/plugin-alphacolor.xml:
+	* docs/plugins/inspect/plugin-apetag.xml:
+	* docs/plugins/inspect/plugin-audiofx.xml:
+	* docs/plugins/inspect/plugin-audioparsers.xml:
+	* docs/plugins/inspect/plugin-auparse.xml:
+	* docs/plugins/inspect/plugin-autodetect.xml:
+	* docs/plugins/inspect/plugin-avi.xml:
+	* docs/plugins/inspect/plugin-cacasink.xml:
+	* docs/plugins/inspect/plugin-cairo.xml:
+	* docs/plugins/inspect/plugin-cutter.xml:
+	* docs/plugins/inspect/plugin-debug.xml:
+	* docs/plugins/inspect/plugin-deinterlace.xml:
+	* docs/plugins/inspect/plugin-dtmf.xml:
+	* docs/plugins/inspect/plugin-dv.xml:
+	* docs/plugins/inspect/plugin-effectv.xml:
+	* docs/plugins/inspect/plugin-equalizer.xml:
+	* docs/plugins/inspect/plugin-flac.xml:
+	* docs/plugins/inspect/plugin-flv.xml:
+	* docs/plugins/inspect/plugin-flxdec.xml:
+	* docs/plugins/inspect/plugin-gdkpixbuf.xml:
+	* docs/plugins/inspect/plugin-goom.xml:
+	* docs/plugins/inspect/plugin-goom2k1.xml:
+	* docs/plugins/inspect/plugin-icydemux.xml:
+	* docs/plugins/inspect/plugin-id3demux.xml:
+	* docs/plugins/inspect/plugin-imagefreeze.xml:
+	* docs/plugins/inspect/plugin-interleave.xml:
+	* docs/plugins/inspect/plugin-isomp4.xml:
+	* docs/plugins/inspect/plugin-jack.xml:
+	* docs/plugins/inspect/plugin-jpeg.xml:
+	* docs/plugins/inspect/plugin-level.xml:
+	* docs/plugins/inspect/plugin-matroska.xml:
+	* docs/plugins/inspect/plugin-mulaw.xml:
+	* docs/plugins/inspect/plugin-multifile.xml:
+	* docs/plugins/inspect/plugin-multipart.xml:
+	* docs/plugins/inspect/plugin-navigationtest.xml:
+	* docs/plugins/inspect/plugin-oss4.xml:
+	* docs/plugins/inspect/plugin-ossaudio.xml:
+	* docs/plugins/inspect/plugin-png.xml:
+	* docs/plugins/inspect/plugin-pulseaudio.xml:
+	* docs/plugins/inspect/plugin-replaygain.xml:
+	* docs/plugins/inspect/plugin-rtp.xml:
+	* docs/plugins/inspect/plugin-rtpmanager.xml:
+	* docs/plugins/inspect/plugin-rtsp.xml:
+	* docs/plugins/inspect/plugin-shapewipe.xml:
+	* docs/plugins/inspect/plugin-shout2send.xml:
+	* docs/plugins/inspect/plugin-smpte.xml:
+	* docs/plugins/inspect/plugin-soup.xml:
+	* docs/plugins/inspect/plugin-spectrum.xml:
+	* docs/plugins/inspect/plugin-speex.xml:
+	* docs/plugins/inspect/plugin-taglib.xml:
+	* docs/plugins/inspect/plugin-udp.xml:
+	* docs/plugins/inspect/plugin-video4linux2.xml:
+	* docs/plugins/inspect/plugin-videobox.xml:
+	* docs/plugins/inspect/plugin-videocrop.xml:
+	* docs/plugins/inspect/plugin-videofilter.xml:
+	* docs/plugins/inspect/plugin-videomixer.xml:
+	* docs/plugins/inspect/plugin-vpx.xml:
+	* docs/plugins/inspect/plugin-wavenc.xml:
+	* docs/plugins/inspect/plugin-wavpack.xml:
+	* docs/plugins/inspect/plugin-wavparse.xml:
+	* docs/plugins/inspect/plugin-ximagesrc.xml:
+	* docs/plugins/inspect/plugin-y4menc.xml:
+	* gst-plugins-good.doap:
+	* win32/common/config.h:
+	  Release 1.1.90
+
+2013-09-19 10:21:42 +0200  Sebastian Dröge <slomo@circular-chaos.org>
+
+	* 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/mt.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/zh_HK.po:
+	* po/zh_TW.po:
+	  Update .po files
 
 2013-09-19 09:45:18 +0200  Sebastian Dröge <slomo@circular-chaos.org>
 
diff --git a/NEWS b/NEWS
index b1d92ae85..56255fa9f 100644
--- a/NEWS
+++ b/NEWS
@@ -1,2 +1,123 @@
-This is GStreamer Good Plugins 1.1.90
+This is GStreamer Good Plugins 1.2.0
+
+Changes since 1.0:
+
+New API:
+ • GstContext negotiation / sharing / announcing for sharing a
+   generic context between elements, e.g. a display handle
+ • GL texture upload conversion meta for allowing different
+   buffer types to be converted to an OpenGL texture
+ • GstCapsFeatures as extension to GstCaps for allowing the
+   negotiation of specific memory or meta requirements between
+   elements
+ • GstMemory flags for contiguous and non-mappable memory
+ • The stream-start event has optional flags now, e.g. for signalling
+   sparse streams
+ • The stream-start even has an optional group-id field now to signal
+   all streams that should be played together
+ • Allocators library in gst-plugins-base, currently only with generic
+   dmabuf memory support
+ • insertbin library for easier handling of dynamically linked
+   pipelines (in -bad for now)
+ • EGL helper library (in -bad for now)
+ • MPEG-TS data structure library (in -bad for now)
+ • New GstVideoRegionOfInterestMeta to describe a region of interest on
+   video frames.
+ • GstVideoDecoder/Encoder has new ::flush() vfunc to replace the
+   ill-defined ::reset() vfunc.
+ • The URI query allows to query the redirected URI now.
+
+Major changes:
+ • New tool: gst-play-1.0 in gst-plugins-base for basic playback
+   testing on the command line.
+ • New plugins:
+   ∘ mssdemux for Microsoft Smooth Streaming
+   ∘ dashdemux for DASH adaptive streaming protocol
+   ∘ bluez for interaction with Bluetooth devices
+   ∘ openjpeg for JPEG2000 decoding and encoding
+   ∘ daala for experimental Daala decoding and encoding
+   ∘ vpx plugin has experimental VP9 decoding and encoding support
+   ∘ webp plugin for WebP decoding (encoding to be added later)
+   ∘ Various others: yadif, srtp, sbc, fluidsynth, midiparse,
+     mfc, ivtv, accuraterip and audiofxbad
+
+ • Moved plugins:
+   ∘ dtmf, vp8rtp, scaletempo and rtpmux plugins are in
+     gst-plugins-good now
+
+ • Video:
+   ∘ Fix handling of interlaced video in converters such as videoscale
+     and videoconvert (e.g. scale both fields independently)
+   ∘ videoconvert will try harder to minimise quality losses when
+     conversion is necessary
+   ∘ The experimental GstSurfaceConverter, GstSurfaceMeta and
+     GstVideoContext APIs from the (confusingly-named) 
+     libgstbasevideo-1.0 library in gst-plugins-bad have now been
+     removed and been replaced by new APIs in GStreamer Core and
+     gst-plugins-base (see above). Since that was all that was left in
+     this library, the entire experimental libgstbasevideo-1.0 library
+     has been removed from gst-plugins-bad
+   ∘ Chroma subsampling and chroma siting conversion is better handled
+     in videoconvert and the support for interlaced video was improved.
+   ∘ New pinwheel and spoke patterns in videotestsrc
+   ∘ videomixer can now accept different video formats on its sinkpads
+     and converts to a common format during mixing
+
+ • Audio:
+   ∘ audioconvert will try harder to minimise quality losses when
+     conversion is necessary
+   ∘ adder now allows muting/unmuting of its input streams, and also
+     per-input stream volume 
+   ∘ pulseaudio elements can switch between devices during playback now
+   ∘ aacparse can convert between ADTS←→RAW
+
+ • Platform specific changes:
+   ∘ Caps, events, etc. are now printed in the GStreamer debug logs
+     with their content instead of just the pointer address even on
+     non-glibc platforms (e.g. Windows, OSX, Android).
+   ∘ Network elements (UDP/TCP) now work better with platforms,
+     where IPv6 sockets can't handle IPv4 (e.g. Windows)
+   ∘ Linux/BSD: v4l2 had many improvements and cleanups
+
+ • Other changes:
+   ∘ gst-libav now uses libav 9
+   ∘ Static linking of plugins is supported now (also in 1.0.7)
+   ∘ rtspsrc: add support for NetClientClock: when the server suggests a
+     GstNetTimeProvider in the SDP, set up a GstNetClientClock that
+     slaves to the remote clock and suggest this clock in provide_clock.
+     Simplifies synchronized playback of a resource from an RTSP server.
+     gst-rtsp-server now supports adding this to the SDP and can provide
+     a network clock
+   ∘ RTP retransmission / NACK support and big RTP jitterbuffer improvements
+   ∘ SRTP and DTLS support
+   ∘ Changes to many elements and core to use the correct sticky event
+     order and also not lose any important sticky events during flushing
+   ∘ >1000 fixed bug reports, and many other bug fixes and other
+     improvements everywhere that had no bug report
+
+Things to look out for:
+ • Single header includes for all libraries, e.g. #include
+   <gst/video/video.h> - this was needed for some bindings.
+ • Stricter (correct) caps subset checking in some cases where this was
+   not correct before. Caps will now always fail to be a compatible
+   subset of another set of caps if the subset caps are missing some
+   fields that the superset caps have. This might lead to not-negotiated
+   errors if caps are incomplete now. However, it also prevents possible
+   data corruption caused by piping data formatted in an
+   incompatible/unexpected way into some elements. Check your h264 caps
+   for stream-format and alignment fields and AAC caps for the
+   stream-format field. This change will also be included in the next
+   stable 1.0.8 release.
+ • Stricter checking for missing events and correct sticky event order
+   (stream-start, caps, segment) in some places; this is not enabled in
+   stable releases by default, but you may get warnings when using git
+   builds, development releases or when compiling with
+   -UG_DISABLE_ASSERT in CFLAGS
+ • x264enc now outputs data in byte-stream by default if downstream has
+   ANY caps (e.g. appsink without caps set, filesink, udpsink,
+   tcpserversink etc.)
+ • The MPEG TS demuxer posts messages contain the PMT, PAT, etc. in a
+   different format now. This new format uses the data structures from
+   the new MPEGTS library
+ • The GstContext API has changed between 1.1.4 and 1.1.90
 
diff --git a/RELEASE b/RELEASE
index ed805e25b..3a80727ac 100644
--- a/RELEASE
+++ b/RELEASE
@@ -1,8 +1,8 @@
 
-Release notes for GStreamer Good Plugins 1.1.90
+Release notes for GStreamer Good Plugins 1.2.0
 
 
-The GStreamer team is proud to announce a new bug-fix release
+The GStreamer team is proud to announce a new feature release
 in the 1.x stable series of the
 core of the GStreamer streaming media framework.
 
@@ -57,24 +57,11 @@ contains a set of codecs plugins based on libav (formerly gst-ffmpeg)
 
 Bugs fixed in this release
      
-      * 646963 : rtpmanager: Only update last_rtcp_send_time when actually sending a report
-      * 687657 : rtpsession: Demux RTCP buffers from the RTP stream
-      * 695090 : rganalysis: fix tests
-      * 702004 : qtdemux: add support for the avc3 sample entry format of the AVC file  format
-      * 704950 : videomixer: add colorspace conversion
-      * 705371 : souphttpsrc: Does network operations from the state change thread
-      * 706955 : autoaudiosink/autovideosink: Introduce " sync " property
-      * 707042 : udpsrc binds to INADDR_ANY instead of multicast group address
-      * 707303 : flacenc: 'Got data flow before stream-start event' warnings
-      * 707340 : qtmux: should NOT use PTS if DTS is missing
-      * 707411 : qtmux: what is purpose of MAX_TOLERATED_LATENESS?
-      * 707530 : qtdemux: Handle segments correctly in push mode seeks
-      * 707688 : matroskademux: leaking buffer and caps when parsing attachments
-      * 707734 : rtp: add payloader and depayloader for 24bit raw audio
-      * 707758 : v4l2: Incorrect UV plane stride value for NV12/NV21 formats
-      * 707886 : videomixer: build fails due to unrenamed files if orc is not installed
+      * 706083 : v4l2src: UVC Allocated buffers wrapped in GstBuffer get orphaned by GstBuffer API
+      * 707242 : qtmux: streamable and faststart property have no effect
       * 707933 : matroskademux: Wrong UTF8 detection causes wrong detection of subtitle encoding
-      * 708131 : videomixer: undefined reference to `videomixer_video_convert_orc_convert_I420_BGRA'
+      * 708501 : osxvideosink: fix segfault releasing the element
+      * 708622 : rtpjitterbuffer: fix various regressions
 
 ==== Download ====
 
@@ -111,20 +98,11 @@ subscribe to the gstreamer-devel list.
         
 Contributors to this release
     
-      * Alex Ashley
-      * Andreea Fulger
-      * Bernhard Miller
-      * Christoph Reiter
-      * David Holroyd
-      * Jan Schmidt
-      * Matej Knopp
-      * Mathieu Duponchelle
+      * Andoni Morales Alastruey
+      * Edward Hervey
       * Olivier Crête
-      * Rico Tzschichholz
+      * Robert Krakora
       * Sebastian Dröge
-      * Seán de Búrca
-      * Thiago Santos
-      * Thibault Saunier
       * Tim-Philipp Müller
       * Wim Taymans
  
\ No newline at end of file
diff --git a/autogen.sh b/autogen.sh
index 95e1bfaef..93f88d49b 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -88,12 +88,14 @@ toplevel_check $srcfile
 
 # autopoint
 #    first remove patch if necessary, then run autopoint, then reapply
-if test -f po/Makefile.in.in;
-then
-  patch -p0 -R --forward < common/gettext.patch
+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
 fi
-tool_run "$autopoint" "--force" "patch -p0 < common/gettext.patch"
-patch -p0 < common/gettext.patch
 
 # aclocal
 if test -f acinclude.m4; then rm acinclude.m4; fi
diff --git a/common/check.mak b/common/check.mak
index 285876cb4..611546a27 100644
--- a/common/check.mak
+++ b/common/check.mak
@@ -53,6 +53,7 @@ LOOPS ?= 10
 	$(VALGRIND_PATH) -q					\
 	$(foreach s,$(SUPPRESSIONS),--suppressions=$(s))	\
 	--tool=memcheck --leak-check=full --trace-children=yes	\
+	--show-possibly-lost=no                                 \
 	--leak-resolution=high --num-callers=20			\
 	./$* 2>&1 | tee valgrind.log
 	@if grep "==" valgrind.log > /dev/null 2>&1; then	\
@@ -60,7 +61,7 @@ LOOPS ?= 10
 	    exit 1;						\
 	fi
 	@rm valgrind.log
-	
+
 # valgrind any given test and generate suppressions for it
 %.valgrind.gen-suppressions: %
 	@$(TESTS_ENVIRONMENT)					\
@@ -70,10 +71,11 @@ LOOPS ?= 10
 	$(VALGRIND_PATH) -q 					\
 	$(foreach s,$(SUPPRESSIONS),--suppressions=$(s))	\
 	--tool=memcheck --leak-check=full --trace-children=yes	\
+	--show-possibly-lost=no                                 \
 	--leak-resolution=high --num-callers=20			\
 	--gen-suppressions=all					\
 	./$* 2>&1 | tee suppressions.log
-	
+
 # valgrind torture any given test
 %.valgrind-torture: %
 	@for i in `seq 1 $(LOOPS)`; do				\
diff --git a/common/extract-release-date-from-doap-file b/common/extract-release-date-from-doap-file
index f2bc418cd..f57e30742 100755
--- a/common/extract-release-date-from-doap-file
+++ b/common/extract-release-date-from-doap-file
@@ -18,12 +18,12 @@ fi
 
 awk 'BEGIN {x=0}
 {
-if ($0~"<release>") {x=1; chunk=""}
+if ( $0 ~ /<release>/ ) {x=1; chunk=""}
 if (x==1) {
-  if ($0~"<revision>") { chunk = chunk $0 }
-  if ($0~"<created>") { chunk = chunk $0 }
+  if ($0 ~ /<revision>/) { chunk = chunk $0 }
+  if ($0 ~ /<created>/) { chunk = chunk $0 }
 }
-if ($0~"</release>") {x=0; print chunk}
+if ($0 ~ /<\/release>/) {x=0; print chunk}
 }' < "$2" | \
 \
 grep '<revision>'"$1"'</revision>' | \
diff --git a/common/gst.supp b/common/gst.supp
index 05ecbb9d6..8a3617fe7 100644
--- a/common/gst.supp
+++ b/common/gst.supp
@@ -91,6 +91,14 @@
    fun:pthread_create@@*
 }
 
+{
+   <tls>
+   Memcheck:Leak
+   fun:calloc
+   fun:allocate_dtv
+   fun:_dl_allocate_tls
+}
+
 # I get an extra stack entry on x86/dapper
 {
    <tls>
diff --git a/common/m4/gst-args.m4 b/common/m4/gst-args.m4
index 4872e3c09..b478c824c 100644
--- a/common/m4/gst-args.m4
+++ b/common/m4/gst-args.m4
@@ -337,6 +337,7 @@ AC_DEFUN([AG_GST_ARG_ENABLE_BROKEN],
 
 dnl allow people (or build tools) to override default behaviour
 dnl for fatal compiler warnings
+dnl Enable fatal warnings by default only for development versions
 AC_DEFUN([AG_GST_ARG_DISABLE_FATAL_WARNINGS],
 [
   AC_ARG_ENABLE(fatal-warnings,
@@ -349,5 +350,11 @@ AC_DEFUN([AG_GST_ARG_DISABLE_FATAL_WARNINGS],
         *)   AC_MSG_ERROR(bad value ${enableval} for --disable-fatal-warnings) ;;
       esac
     ],
-    [FATAL_WARNINGS=$GST_GIT]) dnl Default value
+    [
+      if test "x`expr $PACKAGE_VERSION_MINOR % 2`" = "x1" -a "x`expr $PACKAGE_VERSION_MICRO '<' 90`" = "x1"; then
+        FATAL_WARNINGS=yes
+      else
+        FATAL_WARNINGS=no
+      fi
+    ])
 ])
diff --git a/common/m4/gst-glib2.m4 b/common/m4/gst-glib2.m4
index 9a3a92339..0b9273462 100644
--- a/common/m4/gst-glib2.m4
+++ b/common/m4/gst-glib2.m4
@@ -27,8 +27,8 @@ AC_DEFUN([AG_GST_GLIB_CHECK],
   dnl when using threading primitives)
   GLIB_EXTRA_CFLAGS="$GLIB_EXTRA_CFLAGS -DG_THREADS_MANDATORY"
 
-  dnl Define G_DISABLE_DEPRECATED for GIT versions
-  if test "x$PACKAGE_VERSION_NANO" = "x1" -o "x`expr $PACKAGE_VERSION_MINOR % 2`" = "x1"; then
+  dnl Define G_DISABLE_DEPRECATED for development versions
+  if test "x`expr $PACKAGE_VERSION_MINOR % 2`" = "x1" -a "x`expr $PACKAGE_VERSION_MICRO '<' 90`" = "x1"; then
     GLIB_EXTRA_CFLAGS="$GLIB_EXTRA_CFLAGS -DG_DISABLE_DEPRECATED"
   fi
 
@@ -38,8 +38,8 @@ AC_DEFUN([AG_GST_GLIB_CHECK],
     [enable_gobject_cast_checks=auto])
 
   if test "x$enable_gobject_cast_checks" = "xauto"; then
-    dnl For releases, turn off the cast checks
-    if test "x$PACKAGE_VERSION_NANO" = "x1" -o "x`expr $PACKAGE_VERSION_MINOR % 2`" = "x1"; then
+    dnl Turn on cast checks only for development versions
+    if test "x`expr $PACKAGE_VERSION_MINOR % 2`" = "x1" -a "x`expr $PACKAGE_VERSION_MICRO '<' 90`" = "x1"; then
       enable_gobject_cast_checks=yes
     else
       enable_gobject_cast_checks=no
@@ -56,8 +56,8 @@ AC_DEFUN([AG_GST_GLIB_CHECK],
     [enable_glib_assertions=auto])
 
   if test "x$enable_glib_assertions" = "xauto"; then
-    dnl For releases, turn off the assertions
-    if test "x$PACKAGE_VERSION_NANO" = "x1" -o "x`expr $PACKAGE_VERSION_MINOR % 2`" = "x1"; then
+    dnl Enable assertions only for development versions
+    if test "x`expr $PACKAGE_VERSION_MINOR % 2`" = "x1" -a "x`expr $PACKAGE_VERSION_MICRO '<' 90`" = "x1"; then
       enable_glib_assertions=yes
     else
       enable_glib_assertions=no
diff --git a/common/m4/gst-package-release-datetime.m4 b/common/m4/gst-package-release-datetime.m4
index 126919bc7..bc885e37f 100644
--- a/common/m4/gst-package-release-datetime.m4
+++ b/common/m4/gst-package-release-datetime.m4
@@ -33,7 +33,7 @@ AC_DEFUN([AG_GST_SET_PACKAGE_RELEASE_DATETIME],
   elif test "x$1" = "xyes"; then
     dnl AG_GST_SET_PACKAGE_RELEASE_DATETIME([no], ["YYYY-MM-DD"])
     dnl AG_GST_SET_PACKAGE_RELEASE_DATETIME([no], [DOAP-FILE], [RELEASE-VERSION])
-    if ( echo $1 | grep -e '^20[1-9][0-9]-[0-1][0-9]-[0-3][0-9]' >/dev/null ) ; then
+    if ( echo $1 | grep '^20[1-9][0-9]-[0-1][0-9]-[0-3][0-9]' >/dev/null ) ; then
       GST_PACKAGE_RELEASE_DATETIME=$1
     else
       dnl we assume the .doap file contains the date as YYYY-MM-DD
@@ -47,7 +47,7 @@ AC_DEFUN([AG_GST_SET_PACKAGE_RELEASE_DATETIME],
       fi
     fi
   dnl AG_GST_SET_PACKAGE_RELEASE_DATETIME([YYYY-MM-DD])
-  elif ( echo $1 | grep -e '^20[1-9][0-9]-[0-1][0-9]-[0-3][0-9]' >/dev/null ) ; then
+  elif ( echo $1 | grep '^20[1-9][0-9]-[0-1][0-9]-[0-3][0-9]' >/dev/null ) ; then
     GST_PACKAGE_RELEASE_DATETIME=$1
   else
     AC_MSG_WARN([SET_PACKAGE_RELEASE_DATETIME: invalid first argument])
diff --git a/configure b/configure
index dd721b142..31b57849b 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 Good Plug-ins 1.1.90.
+# Generated by GNU Autoconf 2.69 for GStreamer Good Plug-ins 1.2.0.
 #
 # Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer>.
 #
@@ -591,8 +591,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='GStreamer Good Plug-ins'
 PACKAGE_TARNAME='gst-plugins-good'
-PACKAGE_VERSION='1.1.90'
-PACKAGE_STRING='GStreamer Good Plug-ins 1.1.90'
+PACKAGE_VERSION='1.2.0'
+PACKAGE_STRING='GStreamer Good Plug-ins 1.2.0'
 PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer'
 PACKAGE_URL=''
 
@@ -1945,7 +1945,7 @@ if test "$ac_init_help" = "long"; then
   # 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 Good Plug-ins 1.1.90 to adapt to many kinds of systems.
+\`configure' configures GStreamer Good Plug-ins 1.2.0 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -2021,7 +2021,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of GStreamer Good Plug-ins 1.1.90:";;
+     short | recursive ) echo "Configuration of GStreamer Good Plug-ins 1.2.0:";;
    esac
   cat <<\_ACEOF
 
@@ -2381,7 +2381,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-GStreamer Good Plug-ins configure 1.1.90
+GStreamer Good Plug-ins configure 1.2.0
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -3192,7 +3192,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by GStreamer Good Plug-ins $as_me 1.1.90, which was
+It was created by GStreamer Good Plug-ins $as_me 1.2.0, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -4174,7 +4174,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='gst-plugins-good'
- VERSION='1.1.90'
+ VERSION='1.2.0'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -4384,9 +4384,9 @@ END
 fi
 
 
-  PACKAGE_VERSION_MAJOR=$(echo 1.1.90 | cut -d'.' -f1)
-  PACKAGE_VERSION_MINOR=$(echo 1.1.90 | cut -d'.' -f2)
-  PACKAGE_VERSION_MICRO=$(echo 1.1.90 | cut -d'.' -f3)
+  PACKAGE_VERSION_MAJOR=$(echo 1.2.0 | cut -d'.' -f1)
+  PACKAGE_VERSION_MINOR=$(echo 1.2.0 | cut -d'.' -f2)
+  PACKAGE_VERSION_MICRO=$(echo 1.2.0 | cut -d'.' -f3)
 
 
 
@@ -4397,7 +4397,7 @@ fi
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking nano version" >&5
 $as_echo_n "checking nano version... " >&6; }
 
-  NANO=$(echo 1.1.90 | cut -d'.' -f4)
+  NANO=$(echo 1.2.0 | cut -d'.' -f4)
 
   if test x"$NANO" = x || test "x$NANO" = "x0" ; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: 0 (release)" >&5
@@ -9047,10 +9047,10 @@ fi
 done
 
 
-  GST_CURRENT=190
+  GST_CURRENT=200
   GST_REVISION=0
-  GST_AGE=190
-  GST_LIBVERSION=190:0:190
+  GST_AGE=200
+  GST_LIBVERSION=200:0:200
 
 
 
@@ -13375,8 +13375,8 @@ CC="$lt_save_CC"
 
 
 
-GST_REQ=1.1.90
-GSTPB_REQ=1.1.90
+GST_REQ=1.2.0
+GSTPB_REQ=1.2.0
 
 
 
@@ -15411,11 +15411,18 @@ if test "${enable_fatal_warnings+set}" = set; then :
       esac
 
 else
-  FATAL_WARNINGS=$GST_GIT
+
+      if test "x`expr $PACKAGE_VERSION_MINOR % 2`" = "x1" -a "x`expr $PACKAGE_VERSION_MICRO '<' 90`" = "x1"; then
+        FATAL_WARNINGS=yes
+      else
+        FATAL_WARNINGS=no
+      fi
+
 fi
 
 
 
+
     # Check whether --enable-debug was given.
 if test "${enable_debug+set}" = set; then :
   enableval=$enable_debug;
@@ -24133,7 +24140,7 @@ fi
 
         GLIB_EXTRA_CFLAGS="$GLIB_EXTRA_CFLAGS -DG_THREADS_MANDATORY"
 
-    if test "x$PACKAGE_VERSION_NANO" = "x1" -o "x`expr $PACKAGE_VERSION_MINOR % 2`" = "x1"; then
+    if test "x`expr $PACKAGE_VERSION_MINOR % 2`" = "x1" -a "x`expr $PACKAGE_VERSION_MICRO '<' 90`" = "x1"; then
     GLIB_EXTRA_CFLAGS="$GLIB_EXTRA_CFLAGS -DG_DISABLE_DEPRECATED"
   fi
 
@@ -24146,7 +24153,7 @@ fi
 
 
   if test "x$enable_gobject_cast_checks" = "xauto"; then
-        if test "x$PACKAGE_VERSION_NANO" = "x1" -o "x`expr $PACKAGE_VERSION_MINOR % 2`" = "x1"; then
+        if test "x`expr $PACKAGE_VERSION_MINOR % 2`" = "x1" -a "x`expr $PACKAGE_VERSION_MICRO '<' 90`" = "x1"; then
       enable_gobject_cast_checks=yes
     else
       enable_gobject_cast_checks=no
@@ -24166,7 +24173,7 @@ fi
 
 
   if test "x$enable_glib_assertions" = "xauto"; then
-        if test "x$PACKAGE_VERSION_NANO" = "x1" -o "x`expr $PACKAGE_VERSION_MINOR % 2`" = "x1"; then
+        if test "x`expr $PACKAGE_VERSION_MINOR % 2`" = "x1" -a "x`expr $PACKAGE_VERSION_MICRO '<' 90`" = "x1"; then
       enable_glib_assertions=yes
     else
       enable_glib_assertions=no
@@ -25430,7 +25437,7 @@ $as_echo "$as_me: Using $PLUGINDIR as the plugin install location" >&6;}
       if test "xyes" = "xno" -o "xyes" = "x"; then
     GST_PACKAGE_RELEASE_DATETIME=`date -u "+%Y-%m-%dT%H:%MZ"`
   elif test "xyes" = "xyes"; then
-            if ( echo yes | grep -e '^201-90-9-0-10-9-0-30-9' >/dev/null ) ; then
+            if ( echo yes | grep '^201-90-9-0-10-9-0-30-9' >/dev/null ) ; then
       GST_PACKAGE_RELEASE_DATETIME=yes
     else
             YYYY_MM_DD=`sh "${srcdir}/common/extract-release-date-from-doap-file"  $PACKAGE_VERSION_MAJOR.$PACKAGE_VERSION_MINOR.$PACKAGE_VERSION_MICRO   "${srcdir}/gst-plugins-good.doap" `;
@@ -25442,7 +25449,7 @@ $as_echo "$as_me: Using $PLUGINDIR as the plugin install location" >&6;}
         GST_PACKAGE_RELEASE_DATETIME=""
       fi
     fi
-    elif ( echo yes | grep -e '^201-90-9-0-10-9-0-30-9' >/dev/null ) ; then
+    elif ( echo yes | grep '^201-90-9-0-10-9-0-30-9' >/dev/null ) ; then
     GST_PACKAGE_RELEASE_DATETIME=yes
   else
     { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: SET_PACKAGE_RELEASE_DATETIME: invalid first argument" >&5
@@ -25469,7 +25476,7 @@ _ACEOF
       if test "xno" = "xno" -o "xno" = "x"; then
     GST_PACKAGE_RELEASE_DATETIME=`date -u "+%Y-%m-%dT%H:%MZ"`
   elif test "xno" = "xyes"; then
-            if ( echo no | grep -e '^201-90-9-0-10-9-0-30-9' >/dev/null ) ; then
+            if ( echo no | grep '^201-90-9-0-10-9-0-30-9' >/dev/null ) ; then
       GST_PACKAGE_RELEASE_DATETIME=no
     else
             YYYY_MM_DD=`sh "${srcdir}/common/extract-release-date-from-doap-file"  `;
@@ -25481,7 +25488,7 @@ _ACEOF
         GST_PACKAGE_RELEASE_DATETIME=""
       fi
     fi
-    elif ( echo no | grep -e '^201-90-9-0-10-9-0-30-9' >/dev/null ) ; then
+    elif ( echo no | grep '^201-90-9-0-10-9-0-30-9' >/dev/null ) ; then
     GST_PACKAGE_RELEASE_DATETIME=no
   else
     { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: SET_PACKAGE_RELEASE_DATETIME: invalid first argument" >&5
@@ -37782,7 +37789,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by GStreamer Good Plug-ins $as_me 1.1.90, which was
+This file was extended by GStreamer Good Plug-ins $as_me 1.2.0, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -37848,7 +37855,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-GStreamer Good Plug-ins config.status 1.1.90
+GStreamer Good Plug-ins config.status 1.2.0
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff --git a/configure.ac b/configure.ac
index 1c8c53d69..86807f5c1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -5,7 +5,7 @@ dnl please read gstreamer/docs/random/autotools before changing this file
 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/pre
-AC_INIT([GStreamer Good Plug-ins],[1.1.90],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gst-plugins-good])
+AC_INIT([GStreamer Good Plug-ins],[1.2.0],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gst-plugins-good])
 
 AG_GST_INIT
 
@@ -43,11 +43,11 @@ AC_DEFINE_UNQUOTED(GST_API_VERSION, "$GST_API_VERSION",
   [GStreamer API Version])
 
 AG_GST_LIBTOOL_PREPARE
-AS_LIBTOOL(GST, 190, 0, 190)
+AS_LIBTOOL(GST, 200, 0, 200)
 
 dnl *** required versions of GStreamer stuff ***
-GST_REQ=1.1.90
-GSTPB_REQ=1.1.90
+GST_REQ=1.2.0
+GSTPB_REQ=1.2.0
 
 dnl *** autotools stuff ****
 
diff --git a/docs/plugins/gst-plugins-good-plugins.args b/docs/plugins/gst-plugins-good-plugins.args
index 57c382c2d..d91b2c8cf 100644
--- a/docs/plugins/gst-plugins-good-plugins.args
+++ b/docs/plugins/gst-plugins-good-plugins.args
@@ -21332,7 +21332,7 @@
 <NAME>GstRtpJitterBuffer::rtx-delay</NAME>
 <TYPE>gint</TYPE>
 <RANGE>>= G_MAXULONG</RANGE>
-<FLAGS>r</FLAGS>
+<FLAGS>rw</FLAGS>
 <NICK>RTX Delay</NICK>
 <BLURB>Extra time in ms to wait before sending retransmission event (-1 automatic).</BLURB>
 <DEFAULT>20</DEFAULT>
@@ -21342,7 +21342,7 @@
 <NAME>GstRtpJitterBuffer::rtx-delay-reorder</NAME>
 <TYPE>gint</TYPE>
 <RANGE>>= G_MAXULONG</RANGE>
-<FLAGS>r</FLAGS>
+<FLAGS>rw</FLAGS>
 <NICK>RTX Delay Reorder</NICK>
 <BLURB>Sending retransmission event when this much reordering (-1 automatic).</BLURB>
 <DEFAULT>3</DEFAULT>
@@ -21352,7 +21352,7 @@
 <NAME>GstRtpJitterBuffer::rtx-retry-period</NAME>
 <TYPE>gint</TYPE>
 <RANGE>>= G_MAXULONG</RANGE>
-<FLAGS>r</FLAGS>
+<FLAGS>rw</FLAGS>
 <NICK>RTX Retry Period</NICK>
 <BLURB>Try to get a retransmission for this many ms (-1 automatic).</BLURB>
 <DEFAULT>160</DEFAULT>
@@ -21362,7 +21362,7 @@
 <NAME>GstRtpJitterBuffer::rtx-retry-timeout</NAME>
 <TYPE>gint</TYPE>
 <RANGE>>= G_MAXULONG</RANGE>
-<FLAGS>r</FLAGS>
+<FLAGS>rw</FLAGS>
 <NICK>RTX Retry Timeout</NICK>
 <BLURB>Retry sending a transmission event after this timeout in ms (-1 automatic).</BLURB>
 <DEFAULT>40</DEFAULT>
@@ -22114,7 +22114,7 @@
 <RANGE></RANGE>
 <FLAGS>rwx</FLAGS>
 <NICK>Streamable</NICK>
-<BLURB>If set to true, the output should be as if it is to be streamed and hence no indexes written or duration written.</BLURB>
+<BLURB>If set to true, the output should be as if it is to be streamed and hence no indexes written or duration written. (DEPRECATED, only valid for fragmented MP4).</BLURB>
 <DEFAULT>FALSE</DEFAULT>
 </ARG>
 
@@ -22244,7 +22244,7 @@
 <RANGE></RANGE>
 <FLAGS>rwx</FLAGS>
 <NICK>Streamable</NICK>
-<BLURB>If set to true, the output should be as if it is to be streamed and hence no indexes written or duration written.</BLURB>
+<BLURB>If set to true, the output should be as if it is to be streamed and hence no indexes written or duration written. (DEPRECATED, only valid for fragmented MP4).</BLURB>
 <DEFAULT>FALSE</DEFAULT>
 </ARG>
 
@@ -22334,7 +22334,7 @@
 <RANGE></RANGE>
 <FLAGS>rwx</FLAGS>
 <NICK>Streamable</NICK>
-<BLURB>If set to true, the output should be as if it is to be streamed and hence no indexes written or duration written.</BLURB>
+<BLURB>If set to true, the output should be as if it is to be streamed and hence no indexes written or duration written. (DEPRECATED, only valid for fragmented MP4).</BLURB>
 <DEFAULT>FALSE</DEFAULT>
 </ARG>
 
@@ -22425,7 +22425,7 @@
 <FLAGS>rwx</FLAGS>
 <NICK>Streamable</NICK>
 <BLURB>If set to true, the output should be as if it is to be streamed and hence no indexes written or duration written.</BLURB>
-<DEFAULT>FALSE</DEFAULT>
+<DEFAULT>TRUE</DEFAULT>
 </ARG>
 
 <ARG>
@@ -22604,7 +22604,7 @@
 <RANGE></RANGE>
 <FLAGS>rwx</FLAGS>
 <NICK>Streamable</NICK>
-<BLURB>If set to true, the output should be as if it is to be streamed and hence no indexes written or duration written.</BLURB>
+<BLURB>If set to true, the output should be as if it is to be streamed and hence no indexes written or duration written. (DEPRECATED, only valid for fragmented MP4).</BLURB>
 <DEFAULT>FALSE</DEFAULT>
 </ARG>
 
diff --git a/docs/plugins/gst-plugins-good-plugins.hierarchy b/docs/plugins/gst-plugins-good-plugins.hierarchy
index 1818d7c3b..b612c8113 100644
--- a/docs/plugins/gst-plugins-good-plugins.hierarchy
+++ b/docs/plugins/gst-plugins-good-plugins.hierarchy
@@ -169,7 +169,6 @@ GObject
         GstMatroskaMux
           GstWebMMux
         GstMatroskaParse
-        GstMonoscope
         GstMultipartDemux
         GstMultipartMux
         GstQTDemux
diff --git a/docs/plugins/html/gst-plugins-good-plugins-1.0.devhelp2 b/docs/plugins/html/gst-plugins-good-plugins-1.0.devhelp2
index 594ebc49c..0b76d5c21 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-1.0.devhelp2
+++ b/docs/plugins/html/gst-plugins-good-plugins-1.0.devhelp2
@@ -725,10 +725,10 @@
     <keyword type="property" name="The &quot;presentation-time&quot; property" link="gst-plugins-good-plugins-mj2mux.html#GstMJ2Mux--presentation-time"/>
     <keyword type="property" name="The &quot;streamable&quot; property" link="gst-plugins-good-plugins-mj2mux.html#GstMJ2Mux--streamable"/>
     <keyword type="property" name="The &quot;trak-timescale&quot; property" link="gst-plugins-good-plugins-mj2mux.html#GstMJ2Mux--trak-timescale"/>
-    <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-monoscope.html#id-1.2.78.5.3.1"/>
-    <keyword type="" name="Element Information" link="gst-plugins-good-plugins-monoscope.html#id-1.2.78.5.4.1"/>
-    <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-monoscope.html#id-1.2.78.5.4.2"/>
-    <keyword type="struct" name="struct GstMonoscope" link="gst-plugins-good-plugins-monoscope.html#GstMonoscope-struct"/>
+    <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-monoscope.html#id-1.2.78.4.3.1"/>
+    <keyword type="" name="Element Information" link="gst-plugins-good-plugins-monoscope.html#id-1.2.78.4.4.1"/>
+    <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-monoscope.html#id-1.2.78.4.4.2"/>
+    <keyword type="struct" name="struct GstMonoscope" link="gst-plugins-good-plugins-monoscope.html#GstMonoscope"/>
     <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-mpegaudioparse.html#id-1.2.79.5.3.1"/>
     <keyword type="" name="Element Information" link="gst-plugins-good-plugins-mpegaudioparse.html#id-1.2.79.5.4.1"/>
     <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-mpegaudioparse.html#id-1.2.79.5.4.2"/>
@@ -1113,8 +1113,9 @@
     <keyword type="property" name="The &quot;ssrc&quot; property" link="gst-plugins-good-plugins-rtpdtmfsrc.html#GstRTPDTMFSrc--ssrc"/>
     <keyword type="property" name="The &quot;timestamp&quot; property" link="gst-plugins-good-plugins-rtpdtmfsrc.html#GstRTPDTMFSrc--timestamp"/>
     <keyword type="property" name="The &quot;timestamp-offset&quot; property" link="gst-plugins-good-plugins-rtpdtmfsrc.html#GstRTPDTMFSrc--timestamp-offset"/>
-    <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rtpjitterbuffer.html#id-1.2.127.7.2.1"/>
-    <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rtpjitterbuffer.html#id-1.2.127.7.2.2"/>
+    <keyword type="" name="Example pipelines" link="gst-plugins-good-plugins-rtpjitterbuffer.html#id-1.2.127.7.13.1"/>
+    <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rtpjitterbuffer.html#id-1.2.127.7.15.1"/>
+    <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rtpjitterbuffer.html#id-1.2.127.7.15.2"/>
     <keyword type="struct" name="struct GstRtpJitterBuffer" link="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer-struct"/>
     <keyword type="property" name="The &quot;do-lost&quot; property" link="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--do-lost"/>
     <keyword type="property" name="The &quot;drop-on-latency&quot; property" link="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--drop-on-latency"/>
@@ -1140,15 +1141,17 @@
     <keyword type="property" name="The &quot;seqnum-offset&quot; property" link="gst-plugins-good-plugins-rtpmux.html#GstRTPMux--seqnum-offset"/>
     <keyword type="property" name="The &quot;ssrc&quot; property" link="gst-plugins-good-plugins-rtpmux.html#GstRTPMux--ssrc"/>
     <keyword type="property" name="The &quot;timestamp-offset&quot; property" link="gst-plugins-good-plugins-rtpmux.html#GstRTPMux--timestamp-offset"/>
-    <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rtpptdemux.html#id-1.2.129.6.2.1"/>
-    <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rtpptdemux.html#id-1.2.129.6.2.2"/>
+    <keyword type="" name="Example pipelines" link="gst-plugins-good-plugins-rtpptdemux.html#id-1.2.129.6.5.1"/>
+    <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rtpptdemux.html#id-1.2.129.6.7.1"/>
+    <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rtpptdemux.html#id-1.2.129.6.7.2"/>
     <keyword type="struct" name="struct GstRtpPtDemux" link="gst-plugins-good-plugins-rtpptdemux.html#GstRtpPtDemux-struct"/>
     <keyword type="signal" name="The &quot;clear-pt-map&quot; signal" link="gst-plugins-good-plugins-rtpptdemux.html#GstRtpPtDemux-clear-pt-map"/>
     <keyword type="signal" name="The &quot;new-payload-type&quot; signal" link="gst-plugins-good-plugins-rtpptdemux.html#GstRtpPtDemux-new-payload-type"/>
     <keyword type="signal" name="The &quot;payload-type-change&quot; signal" link="gst-plugins-good-plugins-rtpptdemux.html#GstRtpPtDemux-payload-type-change"/>
     <keyword type="signal" name="The &quot;request-pt-map&quot; signal" link="gst-plugins-good-plugins-rtpptdemux.html#GstRtpPtDemux-request-pt-map"/>
-    <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rtpsession.html#id-1.2.130.7.2.1"/>
-    <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rtpsession.html#id-1.2.130.7.2.2"/>
+    <keyword type="" name="Example pipelines" link="gst-plugins-good-plugins-rtpsession.html#id-1.2.130.7.10.1"/>
+    <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rtpsession.html#id-1.2.130.7.12.1"/>
+    <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rtpsession.html#id-1.2.130.7.12.2"/>
     <keyword type="struct" name="struct GstRtpSession" link="gst-plugins-good-plugins-rtpsession.html#GstRtpSession-struct"/>
     <keyword type="property" name="The &quot;bandwidth&quot; property" link="gst-plugins-good-plugins-rtpsession.html#GstRtpSession--bandwidth"/>
     <keyword type="property" name="The &quot;internal-session&quot; property" link="gst-plugins-good-plugins-rtpsession.html#GstRtpSession--internal-session"/>
@@ -1173,8 +1176,9 @@
     <keyword type="signal" name="The &quot;on-ssrc-validated&quot; signal" link="gst-plugins-good-plugins-rtpsession.html#GstRtpSession-on-ssrc-validated"/>
     <keyword type="signal" name="The &quot;on-timeout&quot; signal" link="gst-plugins-good-plugins-rtpsession.html#GstRtpSession-on-timeout"/>
     <keyword type="signal" name="The &quot;request-pt-map&quot; signal" link="gst-plugins-good-plugins-rtpsession.html#GstRtpSession-request-pt-map"/>
-    <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rtpssrcdemux.html#id-1.2.131.6.2.1"/>
-    <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rtpssrcdemux.html#id-1.2.131.6.2.2"/>
+    <keyword type="" name="Example pipelines" link="gst-plugins-good-plugins-rtpssrcdemux.html#id-1.2.131.6.4.1"/>
+    <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rtpssrcdemux.html#id-1.2.131.6.6.1"/>
+    <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rtpssrcdemux.html#id-1.2.131.6.6.2"/>
     <keyword type="struct" name="struct GstRtpSsrcDemux" link="gst-plugins-good-plugins-rtpssrcdemux.html#GstRtpSsrcDemux-struct"/>
     <keyword type="signal" name="The &quot;clear-ssrc&quot; signal" link="gst-plugins-good-plugins-rtpssrcdemux.html#GstRtpSsrcDemux-clear-ssrc"/>
     <keyword type="signal" name="The &quot;new-ssrc-pad&quot; signal" link="gst-plugins-good-plugins-rtpssrcdemux.html#GstRtpSsrcDemux-new-ssrc-pad"/>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-mj2mux.html b/docs/plugins/html/gst-plugins-good-plugins-mj2mux.html
index 988740d24..20b219860 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-mj2mux.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-mj2mux.html
@@ -332,7 +332,7 @@ Documentation last reviewed on 2011-04-21
 <div class="refsect2">
 <a name="GstMJ2Mux--streamable"></a><h3>The <code class="literal">"streamable"</code> property</h3>
 <pre class="programlisting">  "streamable"               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write / Construct</pre>
-<p>If set to true, the output should be as if it is to be streamed and hence no indexes written or duration written.</p>
+<p>If set to true, the output should be as if it is to be streamed and hence no indexes written or duration written. (DEPRECATED, only valid for fragmented MP4).</p>
 <p>Default value: FALSE</p>
 </div>
 <hr>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-monoscope.html b/docs/plugins/html/gst-plugins-good-plugins-monoscope.html
index 98979c568..0254c4180 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-monoscope.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-monoscope.html
@@ -24,8 +24,6 @@
 <a href="#gst-plugins-good-plugins-monoscope.synopsis" class="shortcut">Top</a>
                    | 
                   <a href="#gst-plugins-good-plugins-monoscope.description" class="shortcut">Description</a>
-                   | 
-                  <a href="#gst-plugins-good-plugins-monoscope.object-hierarchy" class="shortcut">Object Hierarchy</a>
 </td></tr>
 </table>
 <div class="refentry">
@@ -39,17 +37,7 @@
 </tr></table></div>
 <div class="refsynopsisdiv">
 <a name="gst-plugins-good-plugins-monoscope.synopsis"></a><h2>Synopsis</h2>
-<a name="GstMonoscope"></a><pre class="synopsis">struct              <a class="link" href="gst-plugins-good-plugins-monoscope.html#GstMonoscope-struct" title="struct GstMonoscope">GstMonoscope</a>;
-</pre>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-good-plugins-monoscope.object-hierarchy"></a><h2>Object Hierarchy</h2>
-<pre class="synopsis">
-  <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
-   +----<a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
-         +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a>
-               +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a>
-                     +----GstMonoscope
+<pre class="synopsis">struct              <a class="link" href="gst-plugins-good-plugins-monoscope.html#GstMonoscope" title="struct GstMonoscope">GstMonoscope</a>;
 </pre>
 </div>
 <div class="refsect1">
@@ -61,7 +49,7 @@ curve of the audio signal like on an oscilloscope.
 <p>
 </p>
 <div class="refsect2">
-<a name="id-1.2.78.5.3.1"></a><h3>Example launch line</h3>
+<a name="id-1.2.78.4.3.1"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -79,7 +67,7 @@ curve of the audio signal like on an oscilloscope.
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.78.5.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.78.4.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -105,7 +93,7 @@ curve of the audio signal like on an oscilloscope.
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.78.5.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.78.4.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -162,8 +150,40 @@ curve of the audio signal like on an oscilloscope.
 <div class="refsect1">
 <a name="gst-plugins-good-plugins-monoscope.details"></a><h2>Details</h2>
 <div class="refsect2">
-<a name="GstMonoscope-struct"></a><h3>struct GstMonoscope</h3>
-<pre class="programlisting">struct GstMonoscope;</pre>
+<a name="GstMonoscope"></a><h3>struct GstMonoscope</h3>
+<pre class="programlisting">struct GstMonoscope {
+  GstElement element;
+
+  /* pads */
+  GstPad      *sinkpad;
+  GstPad      *srcpad;
+
+  GstAdapter  *adapter;
+
+  guint64      next_ts;             /* expected timestamp of the next frame */
+  guint64      frame_duration;      /* video frame duration    */
+  gint         rate;                /* sample rate             */
+  guint        bps;                 /* bytes per sample        */
+  guint        spf;                 /* samples per video frame */
+  GstBufferPool *pool;
+
+  GstSegment   segment;
+
+  /* QoS stuff *//* with LOCK */
+  gdouble      proportion;
+  GstClockTime earliest_time;
+
+  /* video state */
+  gint         fps_num;
+  gint         fps_denom;
+  gint         width;
+  gint         height;
+  guint        outsize;
+
+  /* visualisation state */
+  struct monoscope_state *visstate;
+};
+</pre>
 <p>
 </p>
 </div>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-mp4mux.html b/docs/plugins/html/gst-plugins-good-plugins-mp4mux.html
index ec84c2dc9..8d796723f 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-mp4mux.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-mp4mux.html
@@ -345,7 +345,7 @@ Documentation last reviewed on 2011-04-21
 <div class="refsect2">
 <a name="GstMP4Mux--streamable"></a><h3>The <code class="literal">"streamable"</code> property</h3>
 <pre class="programlisting">  "streamable"               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write / Construct</pre>
-<p>If set to true, the output should be as if it is to be streamed and hence no indexes written or duration written.</p>
+<p>If set to true, the output should be as if it is to be streamed and hence no indexes written or duration written. (DEPRECATED, only valid for fragmented MP4).</p>
 <p>Default value: FALSE</p>
 </div>
 <hr>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-1394.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-1394.html
index 6f9dc3016..f6b7ce04b 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-1394.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-1394.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-aasink.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-aasink.html
index 5526afb88..9c99f2e4d 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-aasink.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-aasink.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-alaw.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-alaw.html
index 3ecb3f2ab..e53851d8c 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-alaw.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-alaw.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-alpha.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-alpha.html
index 1e9d66733..07724278f 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-alpha.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-alpha.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-alphacolor.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-alphacolor.html
index 2c08188ca..065cef05c 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-alphacolor.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-alphacolor.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-apetag.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-apetag.html
index 93ce7872a..e2920f498 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-apetag.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-apetag.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-audiofx.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-audiofx.html
index b1c5e55f7..fa14cf8af 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-audiofx.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-audiofx.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-auparse.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-auparse.html
index 299b6b5fa..fdf69c945 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-auparse.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-auparse.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-autodetect.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-autodetect.html
index 464954a86..c032127a3 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-autodetect.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-autodetect.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-avi.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-avi.html
index 3864b7836..cf283ef72 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-avi.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-avi.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-cacasink.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-cacasink.html
index f0acc36ef..47124b6db 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-cacasink.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-cacasink.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-cairo.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-cairo.html
index caad99000..bd2d9a2de 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-cairo.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-cairo.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-cutter.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-cutter.html
index cb2349cc3..dd59a9e6d 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-cutter.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-cutter.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-debug.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-debug.html
index ec9f754e2..79a85a9ba 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-debug.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-debug.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-deinterlace.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-deinterlace.html
index c8ce29355..dae32f55a 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-deinterlace.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-deinterlace.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-dtmf.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-dtmf.html
index 483fe9f07..0a4f7033d 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-dtmf.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-dtmf.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-dv.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-dv.html
index 3c064a3cc..35389585f 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-dv.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-dv.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-effectv.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-effectv.html
index aa3c5421c..15da84d35 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-effectv.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-effectv.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-equalizer.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-equalizer.html
index 452dbd774..f69e3920f 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-equalizer.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-equalizer.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-flac.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-flac.html
index e7445f7bf..6177f082c 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-flac.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-flac.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-flv.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-flv.html
index 143f3ba73..002c7d0c1 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-flv.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-flv.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-flxdec.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-flxdec.html
index 040296358..7ec83fe3e 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-flxdec.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-flxdec.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-gdkpixbuf.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-gdkpixbuf.html
index c2100f045..bfb9c78cf 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-gdkpixbuf.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-gdkpixbuf.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-goom.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-goom.html
index 0d95f2627..e67da595c 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-goom.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-goom.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-goom2k1.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-goom2k1.html
index 73e2b73d4..b80dd89cc 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-goom2k1.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-goom2k1.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-icydemux.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-icydemux.html
index 7ca468987..3865acf5a 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-icydemux.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-icydemux.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-id3demux.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-id3demux.html
index 1087f0e7f..eb5576947 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-id3demux.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-id3demux.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-imagefreeze.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-imagefreeze.html
index 5f60f6023..62ce3d6ae 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-imagefreeze.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-imagefreeze.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-interleave.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-interleave.html
index 5286ab22a..98d6c0d14 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-interleave.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-interleave.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-isomp4.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-isomp4.html
index 014b12a66..9c7048e76 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-isomp4.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-isomp4.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-jack.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-jack.html
index 5618e8b98..b209f985a 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-jack.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-jack.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-jpeg.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-jpeg.html
index 23a71c74a..c5124f135 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-jpeg.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-jpeg.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-level.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-level.html
index 2d3ab3928..5d1d0f3c4 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-level.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-level.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-matroska.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-matroska.html
index f422972cf..16b863820 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-matroska.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-matroska.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-mulaw.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-mulaw.html
index 94a9fa426..948591ac8 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-mulaw.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-mulaw.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-multifile.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-multifile.html
index 57c4d6b08..451697db3 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-multifile.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-multifile.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-multipart.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-multipart.html
index d17278a0e..8a579ee9e 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-multipart.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-multipart.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-navigationtest.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-navigationtest.html
index d21f14726..69bd3d1bb 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-navigationtest.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-navigationtest.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-oss4.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-oss4.html
index 54b4ba503..7c71ac91d 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-oss4.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-oss4.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-ossaudio.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-ossaudio.html
index 639ddf9e5..89a8c9083 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-ossaudio.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-ossaudio.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-png.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-png.html
index 41d3e6440..09bc27e12 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-png.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-png.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-pulseaudio.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-pulseaudio.html
index 830c89d89..4e73480b0 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-pulseaudio.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-pulseaudio.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-replaygain.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-replaygain.html
index 61d461516..d58bf44dc 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-replaygain.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-replaygain.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-rtp.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-rtp.html
index 6ed5d4a8e..16c7b7016 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-rtp.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-rtp.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-rtpmanager.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-rtpmanager.html
index afa9ad2e1..d5acb7520 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-rtpmanager.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-rtpmanager.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-rtsp.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-rtsp.html
index 5908799da..f7a200e03 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-rtsp.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-rtsp.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-shapewipe.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-shapewipe.html
index 90a7fe1d1..829c75ec0 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-shapewipe.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-shapewipe.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-shout2send.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-shout2send.html
index 3054459c0..a24c4b84e 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-shout2send.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-shout2send.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-smpte.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-smpte.html
index b311e2e14..4fe2a3880 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-smpte.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-smpte.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-soup.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-soup.html
index adda77778..f052c51e3 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-soup.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-soup.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-spectrum.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-spectrum.html
index b644b03d1..26a51e7b3 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-spectrum.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-spectrum.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-speex.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-speex.html
index cd74e8f1e..dfa18667a 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-speex.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-speex.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-taglib.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-taglib.html
index 463460212..c8b557fa7 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-taglib.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-taglib.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-udp.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-udp.html
index bd4fba046..0cd7fcef0 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-udp.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-udp.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-video4linux2.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-video4linux2.html
index 18cb8731f..d5b2ae5a0 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-video4linux2.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-video4linux2.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-videobox.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-videobox.html
index 68156c2a3..facc7786d 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-videobox.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-videobox.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-videocrop.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-videocrop.html
index 17b21d4f2..6589f0a29 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-videocrop.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-videocrop.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-videofilter.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-videofilter.html
index ba3001473..f656f9ac0 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-videofilter.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-videofilter.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-videomixer.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-videomixer.html
index f45b604c8..e7fbf99ad 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-videomixer.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-videomixer.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-vpx.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-vpx.html
index 87464ec48..e485f733c 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-vpx.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-vpx.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-wavenc.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-wavenc.html
index 6914fbb70..36ad64487 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-wavenc.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-wavenc.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-wavpack.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-wavpack.html
index a0f938ffd..6be0f0164 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-wavpack.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-wavpack.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-wavparse.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-wavparse.html
index b348e5144..dcfaff00a 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-wavparse.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-wavparse.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-ximagesrc.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-ximagesrc.html
index 54dcfa527..34bae23b2 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-ximagesrc.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-ximagesrc.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-y4menc.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-y4menc.html
index b5ceb29fc..e97e86bad 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-plugin-y4menc.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-y4menc.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.1.90</td>
+<td>1.2.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-qtmux.html b/docs/plugins/html/gst-plugins-good-plugins-qtmux.html
index 361753f2b..650734bc3 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-qtmux.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-qtmux.html
@@ -398,7 +398,7 @@ Last reviewed on 2010-12-03
 <div class="refsect2">
 <a name="GstQTMux--streamable"></a><h3>The <code class="literal">"streamable"</code> property</h3>
 <pre class="programlisting">  "streamable"               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write / Construct</pre>
-<p>If set to true, the output should be as if it is to be streamed and hence no indexes written or duration written.</p>
+<p>If set to true, the output should be as if it is to be streamed and hence no indexes written or duration written. (DEPRECATED, only valid for fragmented MP4).</p>
 <p>Default value: FALSE</p>
 </div>
 <hr>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtpjitterbuffer.html b/docs/plugins/html/gst-plugins-good-plugins-rtpjitterbuffer.html
index 1de7d0d7a..e55fed6c1 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-rtpjitterbuffer.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-rtpjitterbuffer.html
@@ -66,10 +66,10 @@
   "<a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--mode" title='The "mode" property'>mode</a>"                     <span class="type">RTPJitterBufferMode</span>   : Read / Write
   "<a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--percent" title='The "percent" property'>percent</a>"                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read
   "<a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--do-retransmission" title='The "do-retransmission" property'>do-retransmission</a>"        <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
-  "<a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--rtx-delay" title='The "rtx-delay" property'>rtx-delay</a>"                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read
-  "<a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--rtx-delay-reorder" title='The "rtx-delay-reorder" property'>rtx-delay-reorder</a>"        <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read
-  "<a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--rtx-retry-period" title='The "rtx-retry-period" property'>rtx-retry-period</a>"         <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read
-  "<a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--rtx-retry-timeout" title='The "rtx-retry-timeout" property'>rtx-retry-timeout</a>"        <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read
+  "<a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--rtx-delay" title='The "rtx-delay" property'>rtx-delay</a>"                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write
+  "<a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--rtx-delay-reorder" title='The "rtx-delay-reorder" property'>rtx-delay-reorder</a>"        <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write
+  "<a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--rtx-retry-period" title='The "rtx-retry-period" property'>rtx-retry-period</a>"         <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write
+  "<a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--rtx-retry-timeout" title='The "rtx-retry-timeout" property'>rtx-retry-timeout</a>"        <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write
 </pre>
 </div>
 <div class="refsect1">
@@ -84,10 +84,107 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-good-plugins-rtpjitterbuffer.description"></a><h2>Description</h2>
+<p>
+This element reorders and removes duplicate RTP packets as they are received
+from a network source.
+</p>
+<p>
+The element needs the clock-rate of the RTP payload in order to estimate the
+delay. This information is obtained either from the caps on the sink pad or,
+when no caps are present, from the <a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer-request-pt-map" title='The "request-pt-map" signal'><span class="type">"request-pt-map"</span></a> signal.
+To clear the previous pt-map use the <a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer-clear-pt-map" title='The "clear-pt-map" signal'><span class="type">"clear-pt-map"</span></a> signal.
+</p>
+<p>
+The rtpjitterbuffer will wait for missing packets up to a configurable time
+limit using the <a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--latency" title='The "latency" property'><span class="type">"latency"</span></a> property. Packets arriving too
+late are considered to be lost packets. If the <a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--do-lost" title='The "do-lost" property'><span class="type">"do-lost"</span></a>
+property is set, lost packets will result in a custom serialized downstream
+event of name GstRTPPacketLost. The lost packet events are usually used by a
+depayloader or other element to create concealment data or some other logic
+to gracefully handle the missing packets.
+</p>
+<p>
+The jitterbuffer will use the DTS (or PTS if no DTS is set) of the incomming
+buffer and the rtptime inside the RTP packet to create a PTS on the outgoing
+buffer.
+</p>
+<p>
+The jitterbuffer can also be configured to send early retransmission events
+upstream by setting the <a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--do-retransmission" title='The "do-retransmission" property'><span class="type">"do-retransmission"</span></a> property. In
+this mode, the jitterbuffer tries to estimate when a packet should arrive and
+sends a custom upstream event named GstRTPRetransmissionRequest when the
+packet is considered late. The initial expected packet arrival time is
+calculated as follows:
+</p>
+<p>
+</p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>If seqnum N arrived at time T, seqnum N+1 is expected to arrive at
+    T + packet-spacing + <a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--rtx-delay" title='The "rtx-delay" property'><span class="type">"rtx-delay"</span></a>. The packet spacing is
+    calculated from the DTS (or PTS is no DTS) of two consecutive RTP
+    packets with different rtptime.</p></li></ul></div>
+<p>
+</p>
+<p>
+</p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>If seqnum N0 arrived at time T0 and seqnum Nm arrived at time Tm,
+    seqnum Ni is expected at time Ti = T0 + i*(Tm - T0)/(Nm - N0). Any
+    previously scheduled timeout is overwritten.</p></li></ul></div>
+<p>
+</p>
+<p>
+</p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>If seqnum N arrived, all seqnum older than
+    N - <a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--rtx-delay-reorder" title='The "rtx-delay-reorder" property'><span class="type">"rtx-delay-reorder"</span></a> are considered late
+    immediately. This is to request fast feedback for abonormally reorder
+    packets before any of the previous timeouts is triggered.</p></li></ul></div>
+<p>
+</p>
+<p>
+A late packet triggers the GstRTPRetransmissionRequest custom upstream
+event. After the initial timeout expires and the retransmission event is
+sent, the timeout is scheduled for
+T + <a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--rtx-retry-timeout" title='The "rtx-retry-timeout" property'><span class="type">"rtx-retry-timeout"</span></a>. If the missing packet did not
+arrive after <a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--rtx-retry-timeout" title='The "rtx-retry-timeout" property'><span class="type">"rtx-retry-timeout"</span></a>, a new
+GstRTPRetransmissionRequest is sent upstream and the timeout is rescheduled
+again for T + <a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--rtx-retry-timeout" title='The "rtx-retry-timeout" property'><span class="type">"rtx-retry-timeout"</span></a>. This repeats until
+<a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--rtx-retry-period" title='The "rtx-retry-period" property'><span class="type">"rtx-retry-period"</span></a> elapsed, at which point no further
+retransmission requests are sent and the regular logic is performed to
+schedule a lost packet as discussed above.
+</p>
+<p>
+This element acts as a live element and so adds <a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--latency" title='The "latency" property'><span class="type">"latency"</span></a>
+to the pipeline.
+</p>
+<p>
+This element will automatically be used inside rtpbin.
+</p>
+<p>
+</p>
+<div class="refsect2">
+<a name="id-1.2.127.7.13.1"></a><h3>Example pipelines</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> rtspsrc location<span class="gtkdoc opt">=</span>rtsp<span class="gtkdoc opt">:</span><span class="gtkdoc slc">//192.168.1.133:8554/mpeg1or2AudioVideoTest ! rtpjitterbuffer ! rtpmpvdepay ! mpeg2dec ! xvimagesink</span></pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ Connect to a streaming server and decode the MPEG video. The jitterbuffer is
+inserted into the pipeline to smooth out network jitter and to reorder the
+out-of-order RTP packets.
+</div>
+<p>
+</p>
+<p>
+Last reviewed on 2007-05-28 (0.10.5)
+</p>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.127.7.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.127.7.15.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -113,7 +210,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.127.7.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.127.7.15.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -255,7 +352,7 @@ Opaque jitterbuffer structure.
 <hr>
 <div class="refsect2">
 <a name="GstRtpJitterBuffer--rtx-delay"></a><h3>The <code class="literal">"rtx-delay"</code> property</h3>
-<pre class="programlisting">  "rtx-delay"                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read</pre>
+<pre class="programlisting">  "rtx-delay"                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write</pre>
 <p>Extra time in ms to wait before sending retransmission event (-1 automatic).</p>
 <p>Allowed values: &gt;= G_MAXULONG</p>
 <p>Default value: 20</p>
@@ -263,7 +360,7 @@ Opaque jitterbuffer structure.
 <hr>
 <div class="refsect2">
 <a name="GstRtpJitterBuffer--rtx-delay-reorder"></a><h3>The <code class="literal">"rtx-delay-reorder"</code> property</h3>
-<pre class="programlisting">  "rtx-delay-reorder"        <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read</pre>
+<pre class="programlisting">  "rtx-delay-reorder"        <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write</pre>
 <p>Sending retransmission event when this much reordering (-1 automatic).</p>
 <p>Allowed values: &gt;= G_MAXULONG</p>
 <p>Default value: 3</p>
@@ -271,7 +368,7 @@ Opaque jitterbuffer structure.
 <hr>
 <div class="refsect2">
 <a name="GstRtpJitterBuffer--rtx-retry-period"></a><h3>The <code class="literal">"rtx-retry-period"</code> property</h3>
-<pre class="programlisting">  "rtx-retry-period"         <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read</pre>
+<pre class="programlisting">  "rtx-retry-period"         <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write</pre>
 <p>Try to get a retransmission for this many ms (-1 automatic).</p>
 <p>Allowed values: &gt;= G_MAXULONG</p>
 <p>Default value: 160</p>
@@ -279,7 +376,7 @@ Opaque jitterbuffer structure.
 <hr>
 <div class="refsect2">
 <a name="GstRtpJitterBuffer--rtx-retry-timeout"></a><h3>The <code class="literal">"rtx-retry-timeout"</code> property</h3>
-<pre class="programlisting">  "rtx-retry-timeout"        <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read</pre>
+<pre class="programlisting">  "rtx-retry-timeout"        <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write</pre>
 <p>Retry sending a transmission event after this timeout in ms (-1 automatic).</p>
 <p>Allowed values: &gt;= G_MAXULONG</p>
 <p>Default value: 40</p>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtpptdemux.html b/docs/plugins/html/gst-plugins-good-plugins-rtpptdemux.html
index 8095f53c0..aea23dbf3 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-rtpptdemux.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-rtpptdemux.html
@@ -65,10 +65,48 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-good-plugins-rtpptdemux.description"></a><h2>Description</h2>
+<p>
+rtpptdemux acts as a demuxer for RTP packets based on the payload type of
+the packets. Its main purpose is to allow an application to easily receive
+and decode an RTP stream with multiple payload types.
+</p>
+<p>
+For each payload type that is detected, a new pad will be created and the
+<a class="link" href="gst-plugins-good-plugins-rtpptdemux.html#GstRtpPtDemux-new-payload-type" title='The "new-payload-type" signal'><span class="type">"new-payload-type"</span></a> signal will be emitted. When the payload for
+the RTP stream changes, the <a class="link" href="gst-plugins-good-plugins-rtpptdemux.html#GstRtpPtDemux-payload-type-change" title='The "payload-type-change" signal'><span class="type">"payload-type-change"</span></a> signal will be
+emitted.
+</p>
+<p>
+The element will try to set complete and unique application/x-rtp caps on the
+outgoing buffers and pads based on the result of the
+<a class="link" href="gst-plugins-good-plugins-rtpptdemux.html#GstRtpPtDemux-request-pt-map" title='The "request-pt-map" signal'><span class="type">"request-pt-map"</span></a> signal.
+</p>
+<p>
+</p>
+<div class="refsect2">
+<a name="id-1.2.129.6.5.1"></a><h3>Example pipelines</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> udpsrc caps<span class="gtkdoc opt">=</span><span class="string">&quot;application/x-rtp&quot;</span> <span class="gtkdoc opt">!</span> rtpptdemux <span class="gtkdoc opt">!</span> fakesink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ Takes an RTP stream and send the RTP packets with the first detected
+payload type to fakesink, discarding the other payload types.
+</div>
+<p>
+</p>
+<p>
+Last reviewed on 2007-05-28 (0.10.5)
+</p>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.129.6.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.129.6.7.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -94,7 +132,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.129.6.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.129.6.7.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-good-plugins-rtpsession.html b/docs/plugins/html/gst-plugins-good-plugins-rtpsession.html
index e092a69ec..3787aa2c8 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-rtpsession.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-rtpsession.html
@@ -91,10 +91,137 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-good-plugins-rtpsession.description"></a><h2>Description</h2>
+<p>
+The RTP session manager models participants with unique SSRC in an RTP
+session. This session can be used to send and receive RTP and RTCP packets.
+Based on what REQUEST pads are requested from the session manager, specific
+functionality can be activated.
+</p>
+<p>
+The session manager currently implements RFC 3550 including:
+</p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem"><p>RTP packet validation based on consecutive sequence numbers.</p></li>
+<li class="listitem"><p>Maintainance of the SSRC participant database.</p></li>
+<li class="listitem"><p>Keeping per participant statistics based on received RTCP packets.</p></li>
+<li class="listitem"><p>Scheduling of RR/SR RTCP packets.</p></li>
+<li class="listitem"><p>Support for multiple sender SSRC.</p></li>
+</ul></div>
+<p>
+</p>
+<p>
+The rtpsession will not demux packets based on SSRC or payload type, nor will
+it correct for packet reordering and jitter. Use <span class="type">GstRtpsSrcDemux</span>,
+<a class="link" href="gst-plugins-good-plugins-rtpptdemux.html#GstRtpPtDemux"><span class="type">GstRtpPtDemux</span></a> and GstRtpJitterBuffer in addition to <a class="link" href="gst-plugins-good-plugins-rtpsession.html#GstRtpSession"><span class="type">GstRtpSession</span></a> to
+perform these tasks. It is usually a good idea to use <a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtpBin"><span class="type">GstRtpBin</span></a>, which
+combines all these features in one element.
+</p>
+<p>
+To use <a class="link" href="gst-plugins-good-plugins-rtpsession.html#GstRtpSession"><span class="type">GstRtpSession</span></a> as an RTP receiver, request a recv_rtp_sink pad, which will
+automatically create recv_rtp_src pad. Data received on the recv_rtp_sink pad
+will be processed in the session and after being validated forwarded on the
+recv_rtp_src pad.
+</p>
+<p>
+To also use <a class="link" href="gst-plugins-good-plugins-rtpsession.html#GstRtpSession"><span class="type">GstRtpSession</span></a> as an RTCP receiver, request a recv_rtcp_sink pad,
+which will automatically create a sync_src pad. Packets received on the RTCP
+pad will be used by the session manager to update the stats and database of
+the other participants. SR packets will be forwarded on the sync_src pad
+so that they can be used to perform inter-stream synchronisation when needed.
+</p>
+<p>
+If you want the session manager to generate and send RTCP packets, request
+the send_rtcp_src pad. Packet pushed on this pad contain SR/RR RTCP reports
+that should be sent to all participants in the session.
+</p>
+<p>
+To use <a class="link" href="gst-plugins-good-plugins-rtpsession.html#GstRtpSession"><span class="type">GstRtpSession</span></a> as a sender, request a send_rtp_sink pad, which will
+automatically create a send_rtp_src pad. The session manager will
+forward the packets on the send_rtp_src pad after updating its internal state.
+</p>
+<p>
+The session manager needs the clock-rate of the payload types it is handling
+and will signal the <a class="link" href="gst-plugins-good-plugins-rtpsession.html#GstRtpSession-request-pt-map" title='The "request-pt-map" signal'><span class="type">"request-pt-map"</span></a> signal when it needs such a
+mapping. One can clear the cached values with the <a class="link" href="gst-plugins-good-plugins-rtpsession.html#GstRtpSession-clear-pt-map" title='The "clear-pt-map" signal'><span class="type">"clear-pt-map"</span></a>
+signal.
+</p>
+<p>
+</p>
+<div class="refsect2">
+<a name="id-1.2.130.7.10.1"></a><h3>Example pipelines</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> udpsrc port<span class="gtkdoc opt">=</span><span class="number">5000</span> caps<span class="gtkdoc opt">=</span><span class="string">&quot;application/x-rtp, ...&quot;</span> <span class="gtkdoc opt">! .</span>recv_rtp_sink rtpsession <span class="gtkdoc opt">.</span>recv_rtp_src <span class="gtkdoc opt">!</span> rtptheoradepay <span class="gtkdoc opt">!</span> theoradec <span class="gtkdoc opt">!</span> xvimagesink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ Receive theora RTP packets from port 5000 and send them to the depayloader,
+decoder and display. Note that the application/x-rtp caps on udpsrc should be
+configured based on some negotiation process such as RTSP for this pipeline
+to work correctly.
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1
+2
+3</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> udpsrc port<span class="gtkdoc opt">=</span><span class="number">5000</span> caps<span class="gtkdoc opt">=</span><span class="string">&quot;application/x-rtp, ...&quot;</span> <span class="gtkdoc opt">! .</span>recv_rtp_sink rtpsession name<span class="gtkdoc opt">=</span>session \
+       <span class="gtkdoc opt">.</span>recv_rtp_src <span class="gtkdoc opt">!</span> rtptheoradepay <span class="gtkdoc opt">!</span> theoradec <span class="gtkdoc opt">!</span> xvimagesink \
+    udpsrc port<span class="gtkdoc opt">=</span><span class="number">5001</span> caps<span class="gtkdoc opt">=</span><span class="string">&quot;application/x-rtcp&quot;</span> <span class="gtkdoc opt">!</span> session<span class="gtkdoc opt">.</span>recv_rtcp_sink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ Receive theora RTP packets from port 5000 and send them to the depayloader,
+decoder and display. Receive RTCP packets from port 5001 and process them in
+the session manager.
+Note that the application/x-rtp caps on udpsrc should be
+configured based on some negotiation process such as RTSP for this pipeline
+to work correctly.
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> videotestsrc <span class="gtkdoc opt">!</span> theoraenc <span class="gtkdoc opt">!</span> rtptheorapay <span class="gtkdoc opt">! .</span>send_rtp_sink rtpsession <span class="gtkdoc opt">.</span>send_rtp_src <span class="gtkdoc opt">!</span> udpsink port<span class="gtkdoc opt">=</span><span class="number">5000</span></pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ Send theora RTP packets through the session manager and out on UDP port
+5000.
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1
+2</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> videotestsrc <span class="gtkdoc opt">!</span> theoraenc <span class="gtkdoc opt">!</span> rtptheorapay <span class="gtkdoc opt">! .</span>send_rtp_sink rtpsession name<span class="gtkdoc opt">=</span>session <span class="gtkdoc opt">.</span>send_rtp_src \
+    <span class="gtkdoc opt">!</span> udpsink port<span class="gtkdoc opt">=</span><span class="number">5000</span>  session<span class="gtkdoc opt">.</span>send_rtcp_src <span class="gtkdoc opt">!</span> udpsink port<span class="gtkdoc opt">=</span><span class="number">5001</span></pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ Send theora RTP packets through the session manager and out on UDP port
+5000. Send RTCP packets on port 5001. Note that this pipeline will not preroll
+correctly because the second udpsink will not preroll correctly (no RTCP
+packets are sent in the PAUSED state). Applications should manually set and
+keep (see <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#gst-element-set-locked-state"><code class="function">gst_element_set_locked_state()</code></a>) the RTCP udpsink to the PLAYING state.
+</div>
+<p>
+</p>
+<p>
+Last reviewed on 2007-05-28 (0.10.5)
+</p>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.130.7.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.130.7.12.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -120,7 +247,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.130.7.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.130.7.12.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -703,6 +830,10 @@ Request the payload type as <a href="http://gstreamer.freedesktop.org/data/doc/g
 </table></div>
 </div>
 </div>
+<div class="refsect1">
+<a name="gst-plugins-good-plugins-rtpsession.see-also"></a><h2>See Also</h2>
+rtpjitterbuffer, rtpbin, rtpptdemux, rtpssrcdemux
+</div>
 </div>
 <div class="footer">
 <hr>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtpssrcdemux.html b/docs/plugins/html/gst-plugins-good-plugins-rtpssrcdemux.html
index 116e3bb1b..d3ed788d2 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-rtpssrcdemux.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-rtpssrcdemux.html
@@ -64,10 +64,41 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-good-plugins-rtpssrcdemux.description"></a><h2>Description</h2>
+<p>
+rtpssrcdemux acts as a demuxer for RTP packets based on the SSRC of the
+packets. Its main purpose is to allow an application to easily receive and
+decode an RTP stream with multiple SSRCs.
+</p>
+<p>
+For each SSRC that is detected, a new pad will be created and the
+<a class="link" href="gst-plugins-good-plugins-rtpssrcdemux.html#GstRtpSsrcDemux-new-ssrc-pad" title='The "new-ssrc-pad" signal'><span class="type">"new-ssrc-pad"</span></a> signal will be emitted. 
+</p>
+<p>
+</p>
+<div class="refsect2">
+<a name="id-1.2.131.6.4.1"></a><h3>Example pipelines</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> udpsrc caps<span class="gtkdoc opt">=</span><span class="string">&quot;application/x-rtp&quot;</span> <span class="gtkdoc opt">!</span> rtpssrcdemux <span class="gtkdoc opt">!</span> fakesink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ Takes an RTP stream and send the RTP packets with the first detected SSRC
+to fakesink, discarding the other SSRCs.
+</div>
+<p>
+</p>
+<p>
+Last reviewed on 2007-05-28 (0.10.5)
+</p>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.131.6.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.131.6.6.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -93,7 +124,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.131.6.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.131.6.6.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/index.html b/docs/plugins/html/index.html
index bc8c133fc..195106ff0 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 Good Plugins 1.0 Plugins Reference Manual</p></th></tr></table></div>
 <div><p class="releaseinfo">
-      for GStreamer Good Plugins 1.0 (1.1.90)
+      for GStreamer Good Plugins 1.0 (1.2.0)
       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-good/html/" target="_top">http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-good/html/</a>.
     </p></div>
diff --git a/docs/plugins/html/index.sgml b/docs/plugins/html/index.sgml
index cad6a72b7..d3af905cb 100644
--- a/docs/plugins/html/index.sgml
+++ b/docs/plugins/html/index.sgml
@@ -874,11 +874,9 @@
 <ANCHOR id="GstMJ2Mux--trak-timescale" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-mj2mux.html#GstMJ2Mux--trak-timescale">
 <ANCHOR id="gst-plugins-good-plugins-monoscope" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-monoscope.html">
 <ANCHOR id="gst-plugins-good-plugins-monoscope.synopsis" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-monoscope.html#gst-plugins-good-plugins-monoscope.synopsis">
-<ANCHOR id="GstMonoscope" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-monoscope.html#GstMonoscope">
-<ANCHOR id="gst-plugins-good-plugins-monoscope.object-hierarchy" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-monoscope.html#gst-plugins-good-plugins-monoscope.object-hierarchy">
 <ANCHOR id="gst-plugins-good-plugins-monoscope.description" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-monoscope.html#gst-plugins-good-plugins-monoscope.description">
 <ANCHOR id="gst-plugins-good-plugins-monoscope.details" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-monoscope.html#gst-plugins-good-plugins-monoscope.details">
-<ANCHOR id="GstMonoscope-struct" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-monoscope.html#GstMonoscope-struct">
+<ANCHOR id="GstMonoscope" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-monoscope.html#GstMonoscope">
 <ANCHOR id="gst-plugins-good-plugins-monoscope.see-also" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-monoscope.html#gst-plugins-good-plugins-monoscope.see-also">
 <ANCHOR id="gst-plugins-good-plugins-mpegaudioparse" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-mpegaudioparse.html">
 <ANCHOR id="gst-plugins-good-plugins-mpegaudioparse.synopsis" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-mpegaudioparse.html#gst-plugins-good-plugins-mpegaudioparse.synopsis">
@@ -1621,6 +1619,7 @@
 <ANCHOR id="GstRtpSession-on-ssrc-validated" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpsession.html#GstRtpSession-on-ssrc-validated">
 <ANCHOR id="GstRtpSession-on-timeout" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpsession.html#GstRtpSession-on-timeout">
 <ANCHOR id="GstRtpSession-request-pt-map" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpsession.html#GstRtpSession-request-pt-map">
+<ANCHOR id="gst-plugins-good-plugins-rtpsession.see-also" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpsession.html#gst-plugins-good-plugins-rtpsession.see-also">
 <ANCHOR id="gst-plugins-good-plugins-rtpssrcdemux" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpssrcdemux.html">
 <ANCHOR id="gst-plugins-good-plugins-rtpssrcdemux.synopsis" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpssrcdemux.html#gst-plugins-good-plugins-rtpssrcdemux.synopsis">
 <ANCHOR id="GstRtpSsrcDemux" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpssrcdemux.html#GstRtpSsrcDemux">
diff --git a/docs/plugins/inspect/plugin-1394.xml b/docs/plugins/inspect/plugin-1394.xml
index 18fc864d2..a2cf34118 100644
--- a/docs/plugins/inspect/plugin-1394.xml
+++ b/docs/plugins/inspect/plugin-1394.xml
@@ -3,7 +3,7 @@
   <description>Source for video data via IEEE1394 interface</description>
   <filename>../../ext/raw1394/.libs/libgst1394.so</filename>
   <basename>libgst1394.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-aasink.xml b/docs/plugins/inspect/plugin-aasink.xml
index 865bead83..e35a0962c 100644
--- a/docs/plugins/inspect/plugin-aasink.xml
+++ b/docs/plugins/inspect/plugin-aasink.xml
@@ -3,7 +3,7 @@
   <description>ASCII Art video sink</description>
   <filename>../../ext/aalib/.libs/libgstaasink.so</filename>
   <basename>libgstaasink.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-alaw.xml b/docs/plugins/inspect/plugin-alaw.xml
index 122dd301a..e80dc97e0 100644
--- a/docs/plugins/inspect/plugin-alaw.xml
+++ b/docs/plugins/inspect/plugin-alaw.xml
@@ -3,7 +3,7 @@
   <description>ALaw audio conversion routines</description>
   <filename>../../gst/law/.libs/libgstalaw.so</filename>
   <basename>libgstalaw.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-alpha.xml b/docs/plugins/inspect/plugin-alpha.xml
index 2df32913c..99e4811d3 100644
--- a/docs/plugins/inspect/plugin-alpha.xml
+++ b/docs/plugins/inspect/plugin-alpha.xml
@@ -3,7 +3,7 @@
   <description>adds an alpha channel to video - constant or via chroma-keying</description>
   <filename>../../gst/alpha/.libs/libgstalpha.so</filename>
   <basename>libgstalpha.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-alphacolor.xml b/docs/plugins/inspect/plugin-alphacolor.xml
index 660f76545..ebb423c05 100644
--- a/docs/plugins/inspect/plugin-alphacolor.xml
+++ b/docs/plugins/inspect/plugin-alphacolor.xml
@@ -3,7 +3,7 @@
   <description>RGBA from/to AYUV colorspace conversion preserving the alpha channel</description>
   <filename>../../gst/alpha/.libs/libgstalphacolor.so</filename>
   <basename>libgstalphacolor.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-apetag.xml b/docs/plugins/inspect/plugin-apetag.xml
index 361bb4820..ef3d3d3e0 100644
--- a/docs/plugins/inspect/plugin-apetag.xml
+++ b/docs/plugins/inspect/plugin-apetag.xml
@@ -3,7 +3,7 @@
   <description>APEv1/2 tag reader</description>
   <filename>../../gst/apetag/.libs/libgstapetag.so</filename>
   <basename>libgstapetag.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-audiofx.xml b/docs/plugins/inspect/plugin-audiofx.xml
index 818d45ec5..7e526c828 100644
--- a/docs/plugins/inspect/plugin-audiofx.xml
+++ b/docs/plugins/inspect/plugin-audiofx.xml
@@ -3,7 +3,7 @@
   <description>Audio effects plugin</description>
   <filename>../../gst/audiofx/.libs/libgstaudiofx.so</filename>
   <basename>libgstaudiofx.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-audioparsers.xml b/docs/plugins/inspect/plugin-audioparsers.xml
index 79027f9a7..f4a039df0 100644
--- a/docs/plugins/inspect/plugin-audioparsers.xml
+++ b/docs/plugins/inspect/plugin-audioparsers.xml
@@ -3,7 +3,7 @@
   <description>Parsers for various audio formats</description>
   <filename>../../gst/audioparsers/.libs/libgstaudioparsers.so</filename>
   <basename>libgstaudioparsers.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-auparse.xml b/docs/plugins/inspect/plugin-auparse.xml
index 9deb95b05..c241d1d6e 100644
--- a/docs/plugins/inspect/plugin-auparse.xml
+++ b/docs/plugins/inspect/plugin-auparse.xml
@@ -3,7 +3,7 @@
   <description>parses au streams</description>
   <filename>../../gst/auparse/.libs/libgstauparse.so</filename>
   <basename>libgstauparse.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-autodetect.xml b/docs/plugins/inspect/plugin-autodetect.xml
index 6d38314d3..6cb3bd806 100644
--- a/docs/plugins/inspect/plugin-autodetect.xml
+++ b/docs/plugins/inspect/plugin-autodetect.xml
@@ -3,7 +3,7 @@
   <description>Plugin contains auto-detection plugins for video/audio in- and outputs</description>
   <filename>../../gst/autodetect/.libs/libgstautodetect.so</filename>
   <basename>libgstautodetect.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-avi.xml b/docs/plugins/inspect/plugin-avi.xml
index 5631a7a95..a95dbaa9b 100644
--- a/docs/plugins/inspect/plugin-avi.xml
+++ b/docs/plugins/inspect/plugin-avi.xml
@@ -3,7 +3,7 @@
   <description>AVI stream handling</description>
   <filename>../../gst/avi/.libs/libgstavi.so</filename>
   <basename>libgstavi.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-cacasink.xml b/docs/plugins/inspect/plugin-cacasink.xml
index 921291379..6ccd37391 100644
--- a/docs/plugins/inspect/plugin-cacasink.xml
+++ b/docs/plugins/inspect/plugin-cacasink.xml
@@ -3,7 +3,7 @@
   <description>Colored ASCII Art video sink</description>
   <filename>../../ext/libcaca/.libs/libgstcacasink.so</filename>
   <basename>libgstcacasink.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-cairo.xml b/docs/plugins/inspect/plugin-cairo.xml
index 8324f44c2..01d3c96ce 100644
--- a/docs/plugins/inspect/plugin-cairo.xml
+++ b/docs/plugins/inspect/plugin-cairo.xml
@@ -3,7 +3,7 @@
   <description>Cairo-based elements</description>
   <filename>../../ext/cairo/.libs/libgstcairo.so</filename>
   <basename>libgstcairo.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-cutter.xml b/docs/plugins/inspect/plugin-cutter.xml
index 650443f39..74ed6bc7b 100644
--- a/docs/plugins/inspect/plugin-cutter.xml
+++ b/docs/plugins/inspect/plugin-cutter.xml
@@ -3,7 +3,7 @@
   <description>Audio Cutter to split audio into non-silent bits</description>
   <filename>../../gst/cutter/.libs/libgstcutter.so</filename>
   <basename>libgstcutter.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-debug.xml b/docs/plugins/inspect/plugin-debug.xml
index 52787a1fe..28d50689a 100644
--- a/docs/plugins/inspect/plugin-debug.xml
+++ b/docs/plugins/inspect/plugin-debug.xml
@@ -3,7 +3,7 @@
   <description>elements for testing and debugging</description>
   <filename>../../gst/debugutils/.libs/libgstdebug.so</filename>
   <basename>libgstdebug.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-deinterlace.xml b/docs/plugins/inspect/plugin-deinterlace.xml
index f5e8f3896..c39639a91 100644
--- a/docs/plugins/inspect/plugin-deinterlace.xml
+++ b/docs/plugins/inspect/plugin-deinterlace.xml
@@ -3,7 +3,7 @@
   <description>Deinterlacer</description>
   <filename>../../gst/deinterlace/.libs/libgstdeinterlace.so</filename>
   <basename>libgstdeinterlace.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-dtmf.xml b/docs/plugins/inspect/plugin-dtmf.xml
index 9ad65b0f9..67bcbea70 100644
--- a/docs/plugins/inspect/plugin-dtmf.xml
+++ b/docs/plugins/inspect/plugin-dtmf.xml
@@ -3,7 +3,7 @@
   <description>DTMF plugins</description>
   <filename>../../gst/dtmf/.libs/libgstdtmf.so</filename>
   <basename>libgstdtmf.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-dv.xml b/docs/plugins/inspect/plugin-dv.xml
index cdd9d7bc4..9c9f79e10 100644
--- a/docs/plugins/inspect/plugin-dv.xml
+++ b/docs/plugins/inspect/plugin-dv.xml
@@ -3,7 +3,7 @@
   <description>DV demuxer and decoder based on libdv (libdv.sf.net)</description>
   <filename>../../ext/dv/.libs/libgstdv.so</filename>
   <basename>libgstdv.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-effectv.xml b/docs/plugins/inspect/plugin-effectv.xml
index f5763a783..117e9b99e 100644
--- a/docs/plugins/inspect/plugin-effectv.xml
+++ b/docs/plugins/inspect/plugin-effectv.xml
@@ -3,7 +3,7 @@
   <description>effect plugins from the effectv project</description>
   <filename>../../gst/effectv/.libs/libgsteffectv.so</filename>
   <basename>libgsteffectv.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-equalizer.xml b/docs/plugins/inspect/plugin-equalizer.xml
index 1e7ade12b..b5ebba22f 100644
--- a/docs/plugins/inspect/plugin-equalizer.xml
+++ b/docs/plugins/inspect/plugin-equalizer.xml
@@ -3,7 +3,7 @@
   <description>GStreamer audio equalizers</description>
   <filename>../../gst/equalizer/.libs/libgstequalizer.so</filename>
   <basename>libgstequalizer.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-flac.xml b/docs/plugins/inspect/plugin-flac.xml
index c3afda2f4..d643aa992 100644
--- a/docs/plugins/inspect/plugin-flac.xml
+++ b/docs/plugins/inspect/plugin-flac.xml
@@ -3,7 +3,7 @@
   <description>The FLAC Lossless compressor Codec</description>
   <filename>../../ext/flac/.libs/libgstflac.so</filename>
   <basename>libgstflac.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-flv.xml b/docs/plugins/inspect/plugin-flv.xml
index 4870014a2..0db77dfef 100644
--- a/docs/plugins/inspect/plugin-flv.xml
+++ b/docs/plugins/inspect/plugin-flv.xml
@@ -3,7 +3,7 @@
   <description>FLV muxing and demuxing plugin</description>
   <filename>../../gst/flv/.libs/libgstflv.so</filename>
   <basename>libgstflv.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-flxdec.xml b/docs/plugins/inspect/plugin-flxdec.xml
index 6ed063f46..b2bfe87f9 100644
--- a/docs/plugins/inspect/plugin-flxdec.xml
+++ b/docs/plugins/inspect/plugin-flxdec.xml
@@ -3,7 +3,7 @@
   <description>FLC/FLI/FLX video decoder</description>
   <filename>../../gst/flx/.libs/libgstflxdec.so</filename>
   <basename>libgstflxdec.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-gdkpixbuf.xml b/docs/plugins/inspect/plugin-gdkpixbuf.xml
index 65e093952..2f230b758 100644
--- a/docs/plugins/inspect/plugin-gdkpixbuf.xml
+++ b/docs/plugins/inspect/plugin-gdkpixbuf.xml
@@ -3,7 +3,7 @@
   <description>GdkPixbuf-based image decoder, overlay and sink</description>
   <filename>../../ext/gdk_pixbuf/.libs/libgstgdkpixbuf.so</filename>
   <basename>libgstgdkpixbuf.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-goom.xml b/docs/plugins/inspect/plugin-goom.xml
index d8c9c922d..e4b544dbe 100644
--- a/docs/plugins/inspect/plugin-goom.xml
+++ b/docs/plugins/inspect/plugin-goom.xml
@@ -3,7 +3,7 @@
   <description>GOOM visualization filter</description>
   <filename>../../gst/goom/.libs/libgstgoom.so</filename>
   <basename>libgstgoom.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-goom2k1.xml b/docs/plugins/inspect/plugin-goom2k1.xml
index a7b103d3d..7dfb7dff7 100644
--- a/docs/plugins/inspect/plugin-goom2k1.xml
+++ b/docs/plugins/inspect/plugin-goom2k1.xml
@@ -3,7 +3,7 @@
   <description>GOOM 2k1 visualization filter</description>
   <filename>../../gst/goom2k1/.libs/libgstgoom2k1.so</filename>
   <basename>libgstgoom2k1.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-icydemux.xml b/docs/plugins/inspect/plugin-icydemux.xml
index 9d6b636d0..53c071de5 100644
--- a/docs/plugins/inspect/plugin-icydemux.xml
+++ b/docs/plugins/inspect/plugin-icydemux.xml
@@ -3,7 +3,7 @@
   <description>Demux ICY tags from a stream</description>
   <filename>../../gst/icydemux/.libs/libgsticydemux.so</filename>
   <basename>libgsticydemux.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-id3demux.xml b/docs/plugins/inspect/plugin-id3demux.xml
index 04b72bba2..387f6af15 100644
--- a/docs/plugins/inspect/plugin-id3demux.xml
+++ b/docs/plugins/inspect/plugin-id3demux.xml
@@ -3,7 +3,7 @@
   <description>Demux ID3v1 and ID3v2 tags from a file</description>
   <filename>../../gst/id3demux/.libs/libgstid3demux.so</filename>
   <basename>libgstid3demux.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-imagefreeze.xml b/docs/plugins/inspect/plugin-imagefreeze.xml
index 56695f93b..7d5239ad1 100644
--- a/docs/plugins/inspect/plugin-imagefreeze.xml
+++ b/docs/plugins/inspect/plugin-imagefreeze.xml
@@ -3,7 +3,7 @@
   <description>Still frame stream generator</description>
   <filename>../../gst/imagefreeze/.libs/libgstimagefreeze.so</filename>
   <basename>libgstimagefreeze.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-interleave.xml b/docs/plugins/inspect/plugin-interleave.xml
index c69bf5918..2efc3b238 100644
--- a/docs/plugins/inspect/plugin-interleave.xml
+++ b/docs/plugins/inspect/plugin-interleave.xml
@@ -3,7 +3,7 @@
   <description>Audio interleaver/deinterleaver</description>
   <filename>../../gst/interleave/.libs/libgstinterleave.so</filename>
   <basename>libgstinterleave.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-isomp4.xml b/docs/plugins/inspect/plugin-isomp4.xml
index 14fe3892b..0eeec7866 100644
--- a/docs/plugins/inspect/plugin-isomp4.xml
+++ b/docs/plugins/inspect/plugin-isomp4.xml
@@ -3,7 +3,7 @@
   <description>ISO base media file format support (mp4, 3gpp, qt, mj2)</description>
   <filename>../../gst/isomp4/.libs/libgstisomp4.so</filename>
   <basename>libgstisomp4.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-jack.xml b/docs/plugins/inspect/plugin-jack.xml
index 7a4159a40..da09aa53d 100644
--- a/docs/plugins/inspect/plugin-jack.xml
+++ b/docs/plugins/inspect/plugin-jack.xml
@@ -3,7 +3,7 @@
   <description>JACK audio elements</description>
   <filename>../../ext/jack/.libs/libgstjack.so</filename>
   <basename>libgstjack.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-jpeg.xml b/docs/plugins/inspect/plugin-jpeg.xml
index 6dabe5363..42f48b8f1 100644
--- a/docs/plugins/inspect/plugin-jpeg.xml
+++ b/docs/plugins/inspect/plugin-jpeg.xml
@@ -3,7 +3,7 @@
   <description>JPeg plugin library</description>
   <filename>../../ext/jpeg/.libs/libgstjpeg.so</filename>
   <basename>libgstjpeg.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-level.xml b/docs/plugins/inspect/plugin-level.xml
index 67e96b648..2c151da84 100644
--- a/docs/plugins/inspect/plugin-level.xml
+++ b/docs/plugins/inspect/plugin-level.xml
@@ -3,7 +3,7 @@
   <description>Audio level plugin</description>
   <filename>../../gst/level/.libs/libgstlevel.so</filename>
   <basename>libgstlevel.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-matroska.xml b/docs/plugins/inspect/plugin-matroska.xml
index e02f9f2d1..d22a19cc1 100644
--- a/docs/plugins/inspect/plugin-matroska.xml
+++ b/docs/plugins/inspect/plugin-matroska.xml
@@ -3,7 +3,7 @@
   <description>Matroska and WebM stream handling</description>
   <filename>../../gst/matroska/.libs/libgstmatroska.so</filename>
   <basename>libgstmatroska.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-mulaw.xml b/docs/plugins/inspect/plugin-mulaw.xml
index fa26bbf96..e94a41a15 100644
--- a/docs/plugins/inspect/plugin-mulaw.xml
+++ b/docs/plugins/inspect/plugin-mulaw.xml
@@ -3,7 +3,7 @@
   <description>MuLaw audio conversion routines</description>
   <filename>../../gst/law/.libs/libgstmulaw.so</filename>
   <basename>libgstmulaw.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-multifile.xml b/docs/plugins/inspect/plugin-multifile.xml
index f2e6652a4..d29285ef4 100644
--- a/docs/plugins/inspect/plugin-multifile.xml
+++ b/docs/plugins/inspect/plugin-multifile.xml
@@ -3,7 +3,7 @@
   <description>Reads/Writes buffers from/to sequentially named files</description>
   <filename>../../gst/multifile/.libs/libgstmultifile.so</filename>
   <basename>libgstmultifile.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-multipart.xml b/docs/plugins/inspect/plugin-multipart.xml
index 0f690bf21..6c88732ec 100644
--- a/docs/plugins/inspect/plugin-multipart.xml
+++ b/docs/plugins/inspect/plugin-multipart.xml
@@ -3,7 +3,7 @@
   <description>multipart stream manipulation</description>
   <filename>../../gst/multipart/.libs/libgstmultipart.so</filename>
   <basename>libgstmultipart.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-navigationtest.xml b/docs/plugins/inspect/plugin-navigationtest.xml
index a0c87863a..94b92de37 100644
--- a/docs/plugins/inspect/plugin-navigationtest.xml
+++ b/docs/plugins/inspect/plugin-navigationtest.xml
@@ -3,7 +3,7 @@
   <description>Template for a video filter</description>
   <filename>../../gst/debugutils/.libs/libgstnavigationtest.so</filename>
   <basename>libgstnavigationtest.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-oss4.xml b/docs/plugins/inspect/plugin-oss4.xml
index 721ae9708..fdbcea471 100644
--- a/docs/plugins/inspect/plugin-oss4.xml
+++ b/docs/plugins/inspect/plugin-oss4.xml
@@ -3,7 +3,7 @@
   <description>Open Sound System (OSS) version 4 support for GStreamer</description>
   <filename>../../sys/oss4/.libs/libgstoss4audio.so</filename>
   <basename>libgstoss4audio.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-ossaudio.xml b/docs/plugins/inspect/plugin-ossaudio.xml
index 396154254..8ce5c5db8 100644
--- a/docs/plugins/inspect/plugin-ossaudio.xml
+++ b/docs/plugins/inspect/plugin-ossaudio.xml
@@ -3,7 +3,7 @@
   <description>OSS (Open Sound System) support for GStreamer</description>
   <filename>../../sys/oss/.libs/libgstossaudio.so</filename>
   <basename>libgstossaudio.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-png.xml b/docs/plugins/inspect/plugin-png.xml
index 5682fe86e..a32b56c2a 100644
--- a/docs/plugins/inspect/plugin-png.xml
+++ b/docs/plugins/inspect/plugin-png.xml
@@ -3,7 +3,7 @@
   <description>PNG plugin library</description>
   <filename>../../ext/libpng/.libs/libgstpng.so</filename>
   <basename>libgstpng.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-pulseaudio.xml b/docs/plugins/inspect/plugin-pulseaudio.xml
index 39d71e0e2..08d32083f 100644
--- a/docs/plugins/inspect/plugin-pulseaudio.xml
+++ b/docs/plugins/inspect/plugin-pulseaudio.xml
@@ -3,7 +3,7 @@
   <description>PulseAudio plugin library</description>
   <filename>../../ext/pulse/.libs/libgstpulse.so</filename>
   <basename>libgstpulse.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-replaygain.xml b/docs/plugins/inspect/plugin-replaygain.xml
index 8520fe5be..dc4c8bd38 100644
--- a/docs/plugins/inspect/plugin-replaygain.xml
+++ b/docs/plugins/inspect/plugin-replaygain.xml
@@ -3,7 +3,7 @@
   <description>ReplayGain volume normalization</description>
   <filename>../../gst/replaygain/.libs/libgstreplaygain.so</filename>
   <basename>libgstreplaygain.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-rtp.xml b/docs/plugins/inspect/plugin-rtp.xml
index 449b7c6ce..e5c0e0bc6 100644
--- a/docs/plugins/inspect/plugin-rtp.xml
+++ b/docs/plugins/inspect/plugin-rtp.xml
@@ -3,7 +3,7 @@
   <description>Real-time protocol plugins</description>
   <filename>../../gst/rtp/.libs/libgstrtp.so</filename>
   <basename>libgstrtp.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-rtpmanager.xml b/docs/plugins/inspect/plugin-rtpmanager.xml
index e1887ed6e..747348451 100644
--- a/docs/plugins/inspect/plugin-rtpmanager.xml
+++ b/docs/plugins/inspect/plugin-rtpmanager.xml
@@ -3,7 +3,7 @@
   <description>RTP session management plugin library</description>
   <filename>../../gst/rtpmanager/.libs/libgstrtpmanager.so</filename>
   <basename>libgstrtpmanager.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-rtsp.xml b/docs/plugins/inspect/plugin-rtsp.xml
index 93a9d4a10..9ab755afe 100644
--- a/docs/plugins/inspect/plugin-rtsp.xml
+++ b/docs/plugins/inspect/plugin-rtsp.xml
@@ -3,7 +3,7 @@
   <description>transfer data via RTSP</description>
   <filename>../../gst/rtsp/.libs/libgstrtsp.so</filename>
   <basename>libgstrtsp.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-shapewipe.xml b/docs/plugins/inspect/plugin-shapewipe.xml
index b0f088941..b2adf8f4a 100644
--- a/docs/plugins/inspect/plugin-shapewipe.xml
+++ b/docs/plugins/inspect/plugin-shapewipe.xml
@@ -3,7 +3,7 @@
   <description>Shape Wipe transition filter</description>
   <filename>../../gst/shapewipe/.libs/libgstshapewipe.so</filename>
   <basename>libgstshapewipe.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-shout2send.xml b/docs/plugins/inspect/plugin-shout2send.xml
index 157584906..29a06cfee 100644
--- a/docs/plugins/inspect/plugin-shout2send.xml
+++ b/docs/plugins/inspect/plugin-shout2send.xml
@@ -3,7 +3,7 @@
   <description>Sends data to an icecast server using libshout2</description>
   <filename>../../ext/shout2/.libs/libgstshout2.so</filename>
   <basename>libgstshout2.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>libshout2</package>
diff --git a/docs/plugins/inspect/plugin-smpte.xml b/docs/plugins/inspect/plugin-smpte.xml
index e33367d25..f919a265d 100644
--- a/docs/plugins/inspect/plugin-smpte.xml
+++ b/docs/plugins/inspect/plugin-smpte.xml
@@ -3,7 +3,7 @@
   <description>Apply the standard SMPTE transitions on video images</description>
   <filename>../../gst/smpte/.libs/libgstsmpte.so</filename>
   <basename>libgstsmpte.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-soup.xml b/docs/plugins/inspect/plugin-soup.xml
index e0aba161d..d42f0169e 100644
--- a/docs/plugins/inspect/plugin-soup.xml
+++ b/docs/plugins/inspect/plugin-soup.xml
@@ -3,7 +3,7 @@
   <description>libsoup HTTP client src/sink</description>
   <filename>../../ext/soup/.libs/libgstsouphttpsrc.so</filename>
   <basename>libgstsouphttpsrc.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-spectrum.xml b/docs/plugins/inspect/plugin-spectrum.xml
index 6ba2f8559..c50bf172c 100644
--- a/docs/plugins/inspect/plugin-spectrum.xml
+++ b/docs/plugins/inspect/plugin-spectrum.xml
@@ -3,7 +3,7 @@
   <description>Run an FFT on the audio signal, output spectrum data</description>
   <filename>../../gst/spectrum/.libs/libgstspectrum.so</filename>
   <basename>libgstspectrum.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-speex.xml b/docs/plugins/inspect/plugin-speex.xml
index 2fd898a70..ce8c52603 100644
--- a/docs/plugins/inspect/plugin-speex.xml
+++ b/docs/plugins/inspect/plugin-speex.xml
@@ -3,7 +3,7 @@
   <description>Speex plugin library</description>
   <filename>../../ext/speex/.libs/libgstspeex.so</filename>
   <basename>libgstspeex.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-taglib.xml b/docs/plugins/inspect/plugin-taglib.xml
index 9a006484a..a70983cd8 100644
--- a/docs/plugins/inspect/plugin-taglib.xml
+++ b/docs/plugins/inspect/plugin-taglib.xml
@@ -3,7 +3,7 @@
   <description>Tag writing plug-in based on taglib</description>
   <filename>../../ext/taglib/.libs/libgsttaglib.so</filename>
   <basename>libgsttaglib.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-udp.xml b/docs/plugins/inspect/plugin-udp.xml
index 027d41e0c..cff3b4885 100644
--- a/docs/plugins/inspect/plugin-udp.xml
+++ b/docs/plugins/inspect/plugin-udp.xml
@@ -3,7 +3,7 @@
   <description>transfer data via UDP</description>
   <filename>../../gst/udp/.libs/libgstudp.so</filename>
   <basename>libgstudp.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-video4linux2.xml b/docs/plugins/inspect/plugin-video4linux2.xml
index da99191c1..349a008d4 100644
--- a/docs/plugins/inspect/plugin-video4linux2.xml
+++ b/docs/plugins/inspect/plugin-video4linux2.xml
@@ -3,7 +3,7 @@
   <description>elements for Video 4 Linux</description>
   <filename>../../sys/v4l2/.libs/libgstvideo4linux2.so</filename>
   <basename>libgstvideo4linux2.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-videobox.xml b/docs/plugins/inspect/plugin-videobox.xml
index 07be7d646..8603c773a 100644
--- a/docs/plugins/inspect/plugin-videobox.xml
+++ b/docs/plugins/inspect/plugin-videobox.xml
@@ -3,7 +3,7 @@
   <description>resizes a video by adding borders or cropping</description>
   <filename>../../gst/videobox/.libs/libgstvideobox.so</filename>
   <basename>libgstvideobox.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-videocrop.xml b/docs/plugins/inspect/plugin-videocrop.xml
index a900246e4..c2ea1ebba 100644
--- a/docs/plugins/inspect/plugin-videocrop.xml
+++ b/docs/plugins/inspect/plugin-videocrop.xml
@@ -3,7 +3,7 @@
   <description>Crops video into a user-defined region</description>
   <filename>../../gst/videocrop/.libs/libgstvideocrop.so</filename>
   <basename>libgstvideocrop.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-videofilter.xml b/docs/plugins/inspect/plugin-videofilter.xml
index 57a4101e1..99668a26c 100644
--- a/docs/plugins/inspect/plugin-videofilter.xml
+++ b/docs/plugins/inspect/plugin-videofilter.xml
@@ -3,7 +3,7 @@
   <description>Video filters plugin</description>
   <filename>../../gst/videofilter/.libs/libgstvideofilter.so</filename>
   <basename>libgstvideofilter.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-videomixer.xml b/docs/plugins/inspect/plugin-videomixer.xml
index d132928f0..250d64752 100644
--- a/docs/plugins/inspect/plugin-videomixer.xml
+++ b/docs/plugins/inspect/plugin-videomixer.xml
@@ -3,7 +3,7 @@
   <description>Video mixer</description>
   <filename>../../gst/videomixer/.libs/libgstvideomixer.so</filename>
   <basename>libgstvideomixer.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-vpx.xml b/docs/plugins/inspect/plugin-vpx.xml
index 10b49eea3..12b062866 100644
--- a/docs/plugins/inspect/plugin-vpx.xml
+++ b/docs/plugins/inspect/plugin-vpx.xml
@@ -3,7 +3,7 @@
   <description>VP8 plugin</description>
   <filename>../../ext/vpx/.libs/libgstvpx.so</filename>
   <basename>libgstvpx.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-wavenc.xml b/docs/plugins/inspect/plugin-wavenc.xml
index 08d9bfc4b..68cc83ab4 100644
--- a/docs/plugins/inspect/plugin-wavenc.xml
+++ b/docs/plugins/inspect/plugin-wavenc.xml
@@ -3,7 +3,7 @@
   <description>Encode raw audio into WAV</description>
   <filename>../../gst/wavenc/.libs/libgstwavenc.so</filename>
   <basename>libgstwavenc.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-wavpack.xml b/docs/plugins/inspect/plugin-wavpack.xml
index f866910b9..ff91e1a66 100644
--- a/docs/plugins/inspect/plugin-wavpack.xml
+++ b/docs/plugins/inspect/plugin-wavpack.xml
@@ -3,7 +3,7 @@
   <description>Wavpack lossless/lossy audio format handling</description>
   <filename>../../ext/wavpack/.libs/libgstwavpack.so</filename>
   <basename>libgstwavpack.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-wavparse.xml b/docs/plugins/inspect/plugin-wavparse.xml
index 45d5519a0..db62d993e 100644
--- a/docs/plugins/inspect/plugin-wavparse.xml
+++ b/docs/plugins/inspect/plugin-wavparse.xml
@@ -3,7 +3,7 @@
   <description>Parse a .wav file into raw audio</description>
   <filename>../../gst/wavparse/.libs/libgstwavparse.so</filename>
   <basename>libgstwavparse.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-ximagesrc.xml b/docs/plugins/inspect/plugin-ximagesrc.xml
index b43ea0e47..589a07274 100644
--- a/docs/plugins/inspect/plugin-ximagesrc.xml
+++ b/docs/plugins/inspect/plugin-ximagesrc.xml
@@ -3,7 +3,7 @@
   <description>X11 video input plugin using standard Xlib calls</description>
   <filename>../../sys/ximage/.libs/libgstximagesrc.so</filename>
   <basename>libgstximagesrc.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-y4menc.xml b/docs/plugins/inspect/plugin-y4menc.xml
index 1f494c83a..089c1053f 100644
--- a/docs/plugins/inspect/plugin-y4menc.xml
+++ b/docs/plugins/inspect/plugin-y4menc.xml
@@ -3,7 +3,7 @@
   <description>Encodes a YUV frame into the yuv4mpeg format (mjpegtools)</description>
   <filename>../../gst/y4m/.libs/libgsty4menc.so</filename>
   <basename>libgsty4menc.so</basename>
-  <version>1.1.90</version>
+  <version>1.2.0</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/gst-plugins-good.doap b/gst-plugins-good.doap
index 41693c709..b28dbe507 100644
--- a/gst-plugins-good.doap
+++ b/gst-plugins-good.doap
@@ -32,6 +32,16 @@ the plug-in code, LGPL or LGPL-compatible for the supporting library).
    </GitRepository>
  </repository> 
 
+ <release>
+  <Version>
+   <revision>1.2.0</revision>
+   <branch>1.2</branch>
+   <name></name>
+   <created>2013-09-24</created>
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.2.0.tar.xz" />
+  </Version>
+ </release>
+
  <release>
   <Version>
    <revision>1.1.90</revision>
diff --git a/gst-plugins-good.spec b/gst-plugins-good.spec
index c1ecd7301..29ecfc286 100644
--- a/gst-plugins-good.spec
+++ b/gst-plugins-good.spec
@@ -4,7 +4,7 @@
 %define gst_minver   0.11.0
 
 Name: 		%{gstreamer}-plugins-good
-Version: 	1.1.90
+Version: 	1.2.0
 Release: 	1.gst
 Summary: 	GStreamer plug-ins with good code and licensing
 
diff --git a/gst/alpha/gstalpha.c b/gst/alpha/gstalpha.c
index 5213d2c7e..09ba0b0df 100644
--- a/gst/alpha/gstalpha.c
+++ b/gst/alpha/gstalpha.c
@@ -637,10 +637,10 @@ gst_alpha_set_argb_ayuv (const GstVideoFrame * in_frame,
   width = GST_VIDEO_FRAME_WIDTH (in_frame);
   height = GST_VIDEO_FRAME_HEIGHT (in_frame);
 
-  o[0] = GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 3);
-  o[1] = GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 0);
-  o[2] = GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 1);
-  o[3] = GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 2);
+  o[0] = GST_VIDEO_FRAME_COMP_POFFSET (in_frame, 3);
+  o[1] = GST_VIDEO_FRAME_COMP_POFFSET (in_frame, 0);
+  o[2] = GST_VIDEO_FRAME_COMP_POFFSET (in_frame, 1);
+  o[3] = GST_VIDEO_FRAME_COMP_POFFSET (in_frame, 2);
 
   memcpy (matrix,
       alpha->out_sdtv ? cog_rgb_to_ycbcr_matrix_8bit_sdtv :
@@ -692,10 +692,10 @@ gst_alpha_chroma_key_argb_ayuv (const GstVideoFrame * in_frame,
   width = GST_VIDEO_FRAME_WIDTH (in_frame);
   height = GST_VIDEO_FRAME_HEIGHT (in_frame);
 
-  o[0] = GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 3);
-  o[1] = GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 0);
-  o[2] = GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 1);
-  o[3] = GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 2);
+  o[0] = GST_VIDEO_FRAME_COMP_POFFSET (in_frame, 3);
+  o[1] = GST_VIDEO_FRAME_COMP_POFFSET (in_frame, 0);
+  o[2] = GST_VIDEO_FRAME_COMP_POFFSET (in_frame, 1);
+  o[3] = GST_VIDEO_FRAME_COMP_POFFSET (in_frame, 2);
 
   smin = 128 - alpha->black_sensitivity;
   smax = 128 + alpha->white_sensitivity;
@@ -750,15 +750,15 @@ gst_alpha_set_argb_argb (const GstVideoFrame * in_frame,
   width = GST_VIDEO_FRAME_WIDTH (in_frame);
   height = GST_VIDEO_FRAME_HEIGHT (in_frame);
 
-  p[0] = GST_VIDEO_FRAME_COMP_OFFSET (out_frame, 3);
-  p[1] = GST_VIDEO_FRAME_COMP_OFFSET (out_frame, 0);
-  p[2] = GST_VIDEO_FRAME_COMP_OFFSET (out_frame, 1);
-  p[3] = GST_VIDEO_FRAME_COMP_OFFSET (out_frame, 2);
+  p[0] = GST_VIDEO_FRAME_COMP_POFFSET (out_frame, 3);
+  p[1] = GST_VIDEO_FRAME_COMP_POFFSET (out_frame, 0);
+  p[2] = GST_VIDEO_FRAME_COMP_POFFSET (out_frame, 1);
+  p[3] = GST_VIDEO_FRAME_COMP_POFFSET (out_frame, 2);
 
-  o[0] = GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 3);
-  o[1] = GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 0);
-  o[2] = GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 1);
-  o[3] = GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 2);
+  o[0] = GST_VIDEO_FRAME_COMP_POFFSET (in_frame, 3);
+  o[1] = GST_VIDEO_FRAME_COMP_POFFSET (in_frame, 0);
+  o[2] = GST_VIDEO_FRAME_COMP_POFFSET (in_frame, 1);
+  o[3] = GST_VIDEO_FRAME_COMP_POFFSET (in_frame, 2);
 
   for (i = 0; i < height; i++) {
     for (j = 0; j < width; j++) {
@@ -802,15 +802,15 @@ gst_alpha_chroma_key_argb_argb (const GstVideoFrame * in_frame,
   width = GST_VIDEO_FRAME_WIDTH (in_frame);
   height = GST_VIDEO_FRAME_HEIGHT (in_frame);
 
-  p[0] = GST_VIDEO_FRAME_COMP_OFFSET (out_frame, 3);
-  p[1] = GST_VIDEO_FRAME_COMP_OFFSET (out_frame, 0);
-  p[2] = GST_VIDEO_FRAME_COMP_OFFSET (out_frame, 1);
-  p[3] = GST_VIDEO_FRAME_COMP_OFFSET (out_frame, 2);
+  p[0] = GST_VIDEO_FRAME_COMP_POFFSET (out_frame, 3);
+  p[1] = GST_VIDEO_FRAME_COMP_POFFSET (out_frame, 0);
+  p[2] = GST_VIDEO_FRAME_COMP_POFFSET (out_frame, 1);
+  p[3] = GST_VIDEO_FRAME_COMP_POFFSET (out_frame, 2);
 
-  o[0] = GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 3);
-  o[1] = GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 0);
-  o[2] = GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 1);
-  o[3] = GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 2);
+  o[0] = GST_VIDEO_FRAME_COMP_POFFSET (in_frame, 3);
+  o[1] = GST_VIDEO_FRAME_COMP_POFFSET (in_frame, 0);
+  o[2] = GST_VIDEO_FRAME_COMP_POFFSET (in_frame, 1);
+  o[3] = GST_VIDEO_FRAME_COMP_POFFSET (in_frame, 2);
 
   smin = 128 - alpha->black_sensitivity;
   smax = 128 + alpha->white_sensitivity;
@@ -870,10 +870,10 @@ gst_alpha_set_ayuv_argb (const GstVideoFrame * in_frame,
   width = GST_VIDEO_FRAME_WIDTH (in_frame);
   height = GST_VIDEO_FRAME_HEIGHT (in_frame);
 
-  p[0] = GST_VIDEO_FRAME_COMP_OFFSET (out_frame, 3);
-  p[1] = GST_VIDEO_FRAME_COMP_OFFSET (out_frame, 0);
-  p[2] = GST_VIDEO_FRAME_COMP_OFFSET (out_frame, 1);
-  p[3] = GST_VIDEO_FRAME_COMP_OFFSET (out_frame, 2);
+  p[0] = GST_VIDEO_FRAME_COMP_POFFSET (out_frame, 3);
+  p[1] = GST_VIDEO_FRAME_COMP_POFFSET (out_frame, 0);
+  p[2] = GST_VIDEO_FRAME_COMP_POFFSET (out_frame, 1);
+  p[3] = GST_VIDEO_FRAME_COMP_POFFSET (out_frame, 2);
 
   memcpy (matrix,
       alpha->in_sdtv ? cog_ycbcr_to_rgb_matrix_8bit_sdtv :
@@ -925,10 +925,10 @@ gst_alpha_chroma_key_ayuv_argb (const GstVideoFrame * in_frame,
   width = GST_VIDEO_FRAME_WIDTH (in_frame);
   height = GST_VIDEO_FRAME_HEIGHT (in_frame);
 
-  p[0] = GST_VIDEO_FRAME_COMP_OFFSET (out_frame, 3);
-  p[1] = GST_VIDEO_FRAME_COMP_OFFSET (out_frame, 0);
-  p[2] = GST_VIDEO_FRAME_COMP_OFFSET (out_frame, 1);
-  p[3] = GST_VIDEO_FRAME_COMP_OFFSET (out_frame, 2);
+  p[0] = GST_VIDEO_FRAME_COMP_POFFSET (out_frame, 3);
+  p[1] = GST_VIDEO_FRAME_COMP_POFFSET (out_frame, 0);
+  p[2] = GST_VIDEO_FRAME_COMP_POFFSET (out_frame, 1);
+  p[3] = GST_VIDEO_FRAME_COMP_POFFSET (out_frame, 2);
 
   smin = 128 - alpha->black_sensitivity;
   smax = 128 + alpha->white_sensitivity;
@@ -1121,9 +1121,9 @@ gst_alpha_set_rgb_ayuv (const GstVideoFrame * in_frame,
   height = GST_VIDEO_FRAME_HEIGHT (in_frame);
 
   bpp = GST_VIDEO_FRAME_COMP_PSTRIDE (in_frame, 0);
-  o[0] = GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 0);
-  o[1] = GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 1);
-  o[2] = GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 2);
+  o[0] = GST_VIDEO_FRAME_COMP_POFFSET (in_frame, 0);
+  o[1] = GST_VIDEO_FRAME_COMP_POFFSET (in_frame, 1);
+  o[2] = GST_VIDEO_FRAME_COMP_POFFSET (in_frame, 2);
 
   memcpy (matrix,
       alpha->out_sdtv ? cog_rgb_to_ycbcr_matrix_8bit_sdtv :
@@ -1178,9 +1178,9 @@ gst_alpha_chroma_key_rgb_ayuv (const GstVideoFrame * in_frame,
 
   bpp = GST_VIDEO_FRAME_COMP_PSTRIDE (in_frame, 0);
 
-  o[0] = GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 0);
-  o[1] = GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 1);
-  o[2] = GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 2);
+  o[0] = GST_VIDEO_FRAME_COMP_POFFSET (in_frame, 0);
+  o[1] = GST_VIDEO_FRAME_COMP_POFFSET (in_frame, 1);
+  o[2] = GST_VIDEO_FRAME_COMP_POFFSET (in_frame, 2);
 
   smin = 128 - alpha->black_sensitivity;
   smax = 128 + alpha->white_sensitivity;
@@ -1238,14 +1238,14 @@ gst_alpha_set_rgb_argb (const GstVideoFrame * in_frame,
 
   bpp = GST_VIDEO_FRAME_COMP_PSTRIDE (in_frame, 0);
 
-  o[0] = GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 0);
-  o[1] = GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 1);
-  o[2] = GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 2);
+  o[0] = GST_VIDEO_FRAME_COMP_POFFSET (in_frame, 0);
+  o[1] = GST_VIDEO_FRAME_COMP_POFFSET (in_frame, 1);
+  o[2] = GST_VIDEO_FRAME_COMP_POFFSET (in_frame, 2);
 
-  p[0] = GST_VIDEO_FRAME_COMP_OFFSET (out_frame, 3);
-  p[1] = GST_VIDEO_FRAME_COMP_OFFSET (out_frame, 0);
-  p[2] = GST_VIDEO_FRAME_COMP_OFFSET (out_frame, 1);
-  p[3] = GST_VIDEO_FRAME_COMP_OFFSET (out_frame, 2);
+  p[0] = GST_VIDEO_FRAME_COMP_POFFSET (out_frame, 3);
+  p[1] = GST_VIDEO_FRAME_COMP_POFFSET (out_frame, 0);
+  p[2] = GST_VIDEO_FRAME_COMP_POFFSET (out_frame, 1);
+  p[3] = GST_VIDEO_FRAME_COMP_POFFSET (out_frame, 2);
 
   for (i = 0; i < height; i++) {
     for (j = 0; j < width; j++) {
@@ -1292,14 +1292,14 @@ gst_alpha_chroma_key_rgb_argb (const GstVideoFrame * in_frame,
 
   bpp = GST_VIDEO_FRAME_COMP_PSTRIDE (in_frame, 0);
 
-  o[0] = GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 0);
-  o[1] = GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 1);
-  o[2] = GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 2);
+  o[0] = GST_VIDEO_FRAME_COMP_POFFSET (in_frame, 0);
+  o[1] = GST_VIDEO_FRAME_COMP_POFFSET (in_frame, 1);
+  o[2] = GST_VIDEO_FRAME_COMP_POFFSET (in_frame, 2);
 
-  p[0] = GST_VIDEO_FRAME_COMP_OFFSET (out_frame, 3);
-  p[1] = GST_VIDEO_FRAME_COMP_OFFSET (out_frame, 0);
-  p[2] = GST_VIDEO_FRAME_COMP_OFFSET (out_frame, 1);
-  p[3] = GST_VIDEO_FRAME_COMP_OFFSET (out_frame, 2);
+  p[0] = GST_VIDEO_FRAME_COMP_POFFSET (out_frame, 3);
+  p[1] = GST_VIDEO_FRAME_COMP_POFFSET (out_frame, 0);
+  p[2] = GST_VIDEO_FRAME_COMP_POFFSET (out_frame, 1);
+  p[3] = GST_VIDEO_FRAME_COMP_POFFSET (out_frame, 2);
 
   smin = 128 - alpha->black_sensitivity;
   smax = 128 + alpha->white_sensitivity;
@@ -1344,7 +1344,6 @@ static void
 gst_alpha_set_planar_yuv_ayuv (const GstVideoFrame * in_frame,
     GstVideoFrame * out_frame, GstAlpha * alpha)
 {
-  const guint8 *src;
   guint8 *dest;
   gint width, height;
   gint b_alpha = CLAMP ((gint) (alpha->alpha * 255), 0, 255);
@@ -1355,7 +1354,6 @@ gst_alpha_set_planar_yuv_ayuv (const GstVideoFrame * in_frame,
   gint y_stride, uv_stride;
   gint v_subs, h_subs;
 
-  src = GST_VIDEO_FRAME_PLANE_DATA (in_frame, 0);
   dest = GST_VIDEO_FRAME_PLANE_DATA (out_frame, 0);
 
   width = GST_VIDEO_FRAME_WIDTH (in_frame);
@@ -1364,9 +1362,9 @@ gst_alpha_set_planar_yuv_ayuv (const GstVideoFrame * in_frame,
   y_stride = GST_VIDEO_FRAME_COMP_STRIDE (in_frame, 0);
   uv_stride = GST_VIDEO_FRAME_COMP_STRIDE (in_frame, 1);
 
-  srcY_tmp = srcY = src;
-  srcU_tmp = srcU = src + GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 1);
-  srcV_tmp = srcV = src + GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 2);
+  srcY_tmp = srcY = GST_VIDEO_FRAME_COMP_DATA (in_frame, 0);
+  srcU_tmp = srcU = GST_VIDEO_FRAME_COMP_DATA (in_frame, 1);
+  srcV_tmp = srcV = GST_VIDEO_FRAME_COMP_DATA (in_frame, 2);
 
   switch (GST_VIDEO_FRAME_FORMAT (in_frame)) {
     case GST_VIDEO_FORMAT_I420:
@@ -1458,7 +1456,6 @@ static void
 gst_alpha_chroma_key_planar_yuv_ayuv (const GstVideoFrame * in_frame,
     GstVideoFrame * out_frame, GstAlpha * alpha)
 {
-  const guint8 *src;
   guint8 *dest;
   gint width, height;
   gint b_alpha = CLAMP ((gint) (alpha->alpha * 255), 0, 255);
@@ -1479,7 +1476,6 @@ gst_alpha_chroma_key_planar_yuv_ayuv (const GstVideoFrame * in_frame,
   guint8 kfgy_scale = alpha->kfgy_scale;
   guint noise_level2 = alpha->noise_level2;
 
-  src = GST_VIDEO_FRAME_PLANE_DATA (in_frame, 0);
   dest = GST_VIDEO_FRAME_PLANE_DATA (out_frame, 0);
 
   width = GST_VIDEO_FRAME_WIDTH (in_frame);
@@ -1488,9 +1484,9 @@ gst_alpha_chroma_key_planar_yuv_ayuv (const GstVideoFrame * in_frame,
   y_stride = GST_VIDEO_FRAME_COMP_STRIDE (in_frame, 0);
   uv_stride = GST_VIDEO_FRAME_COMP_STRIDE (in_frame, 1);
 
-  srcY_tmp = srcY = src;
-  srcU_tmp = srcU = src + GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 1);
-  srcV_tmp = srcV = src + GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 2);
+  srcY_tmp = srcY = GST_VIDEO_FRAME_COMP_DATA (in_frame, 0);
+  srcU_tmp = srcU = GST_VIDEO_FRAME_COMP_DATA (in_frame, 1);
+  srcV_tmp = srcV = GST_VIDEO_FRAME_COMP_DATA (in_frame, 2);
 
   switch (GST_VIDEO_FRAME_FORMAT (in_frame)) {
     case GST_VIDEO_FORMAT_I420:
@@ -1597,7 +1593,6 @@ static void
 gst_alpha_set_planar_yuv_argb (const GstVideoFrame * in_frame,
     GstVideoFrame * out_frame, GstAlpha * alpha)
 {
-  const guint8 *src;
   guint8 *dest;
   gint width, height;
   gint b_alpha = CLAMP ((gint) (alpha->alpha * 255), 0, 255);
@@ -1612,23 +1607,22 @@ gst_alpha_set_planar_yuv_argb (const GstVideoFrame * in_frame,
   gint r, g, b;
   gint p[4];
 
-  src = GST_VIDEO_FRAME_PLANE_DATA (in_frame, 0);
   dest = GST_VIDEO_FRAME_PLANE_DATA (out_frame, 0);
 
   width = GST_VIDEO_FRAME_WIDTH (in_frame);
   height = GST_VIDEO_FRAME_HEIGHT (in_frame);
 
-  p[0] = GST_VIDEO_FRAME_COMP_OFFSET (out_frame, 3);
-  p[1] = GST_VIDEO_FRAME_COMP_OFFSET (out_frame, 0);
-  p[2] = GST_VIDEO_FRAME_COMP_OFFSET (out_frame, 1);
-  p[3] = GST_VIDEO_FRAME_COMP_OFFSET (out_frame, 2);
+  p[0] = GST_VIDEO_FRAME_COMP_POFFSET (out_frame, 3);
+  p[1] = GST_VIDEO_FRAME_COMP_POFFSET (out_frame, 0);
+  p[2] = GST_VIDEO_FRAME_COMP_POFFSET (out_frame, 1);
+  p[3] = GST_VIDEO_FRAME_COMP_POFFSET (out_frame, 2);
 
   y_stride = GST_VIDEO_FRAME_COMP_STRIDE (in_frame, 0);
   uv_stride = GST_VIDEO_FRAME_COMP_STRIDE (in_frame, 1);
 
-  srcY_tmp = srcY = src;
-  srcU_tmp = srcU = src + GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 1);
-  srcV_tmp = srcV = src + GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 2);
+  srcY_tmp = srcY = GST_VIDEO_FRAME_COMP_DATA (in_frame, 0);
+  srcU_tmp = srcU = GST_VIDEO_FRAME_COMP_DATA (in_frame, 1);
+  srcV_tmp = srcV = GST_VIDEO_FRAME_COMP_DATA (in_frame, 2);
 
   switch (GST_VIDEO_FRAME_FORMAT (in_frame)) {
     case GST_VIDEO_FORMAT_I420:
@@ -1693,7 +1687,6 @@ static void
 gst_alpha_chroma_key_planar_yuv_argb (const GstVideoFrame * in_frame,
     GstVideoFrame * out_frame, GstAlpha * alpha)
 {
-  const guint8 *src;
   guint8 *dest;
   gint width, height;
   gint b_alpha = CLAMP ((gint) (alpha->alpha * 255), 0, 255);
@@ -1717,23 +1710,22 @@ gst_alpha_chroma_key_planar_yuv_argb (const GstVideoFrame * in_frame,
   gint matrix[12];
   gint p[4];
 
-  src = GST_VIDEO_FRAME_PLANE_DATA (in_frame, 0);
   dest = GST_VIDEO_FRAME_PLANE_DATA (out_frame, 0);
 
   width = GST_VIDEO_FRAME_WIDTH (in_frame);
   height = GST_VIDEO_FRAME_HEIGHT (in_frame);
 
-  p[0] = GST_VIDEO_FRAME_COMP_OFFSET (out_frame, 3);
-  p[1] = GST_VIDEO_FRAME_COMP_OFFSET (out_frame, 0);
-  p[2] = GST_VIDEO_FRAME_COMP_OFFSET (out_frame, 1);
-  p[3] = GST_VIDEO_FRAME_COMP_OFFSET (out_frame, 2);
+  p[0] = GST_VIDEO_FRAME_COMP_POFFSET (out_frame, 3);
+  p[1] = GST_VIDEO_FRAME_COMP_POFFSET (out_frame, 0);
+  p[2] = GST_VIDEO_FRAME_COMP_POFFSET (out_frame, 1);
+  p[3] = GST_VIDEO_FRAME_COMP_POFFSET (out_frame, 2);
 
   y_stride = GST_VIDEO_FRAME_COMP_STRIDE (in_frame, 0);
   uv_stride = GST_VIDEO_FRAME_COMP_STRIDE (in_frame, 1);
 
-  srcY_tmp = srcY = src;
-  srcU_tmp = srcU = src + GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 1);
-  srcV_tmp = srcV = src + GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 2);
+  srcY_tmp = srcY = GST_VIDEO_FRAME_COMP_DATA (in_frame, 0);
+  srcU_tmp = srcU = GST_VIDEO_FRAME_COMP_DATA (in_frame, 1);
+  srcV_tmp = srcV = GST_VIDEO_FRAME_COMP_DATA (in_frame, 2);
 
   switch (GST_VIDEO_FRAME_FORMAT (in_frame)) {
     case GST_VIDEO_FORMAT_I420:
@@ -1823,10 +1815,10 @@ gst_alpha_set_packed_422_ayuv (const GstVideoFrame * in_frame,
 
   src_stride = GST_VIDEO_FRAME_COMP_STRIDE (in_frame, 0);
 
-  p[0] = GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 0);
+  p[0] = GST_VIDEO_FRAME_COMP_POFFSET (in_frame, 0);
   p[2] = p[0] + 2;
-  p[1] = GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 1);
-  p[3] = GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 2);
+  p[1] = GST_VIDEO_FRAME_COMP_POFFSET (in_frame, 1);
+  p[3] = GST_VIDEO_FRAME_COMP_POFFSET (in_frame, 2);
 
   if (alpha->in_sdtv != alpha->out_sdtv) {
     gint matrix[12];
@@ -1953,10 +1945,10 @@ gst_alpha_chroma_key_packed_422_ayuv (const GstVideoFrame * in_frame,
 
   src_stride = GST_VIDEO_FRAME_COMP_STRIDE (in_frame, 0);
 
-  p[0] = GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 0);
+  p[0] = GST_VIDEO_FRAME_COMP_POFFSET (in_frame, 0);
   p[2] = p[0] + 2;
-  p[1] = GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 1);
-  p[3] = GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 2);
+  p[1] = GST_VIDEO_FRAME_COMP_POFFSET (in_frame, 1);
+  p[3] = GST_VIDEO_FRAME_COMP_POFFSET (in_frame, 2);
 
   smin = 128 - alpha->black_sensitivity;
   smax = 128 + alpha->white_sensitivity;
@@ -2101,15 +2093,15 @@ gst_alpha_set_packed_422_argb (const GstVideoFrame * in_frame,
 
   src_stride = GST_VIDEO_FRAME_COMP_STRIDE (in_frame, 0);
 
-  o[0] = GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 0);
+  o[0] = GST_VIDEO_FRAME_COMP_POFFSET (in_frame, 0);
   o[2] = o[0] + 2;
-  o[1] = GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 1);
-  o[3] = GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 2);
+  o[1] = GST_VIDEO_FRAME_COMP_POFFSET (in_frame, 1);
+  o[3] = GST_VIDEO_FRAME_COMP_POFFSET (in_frame, 2);
 
-  p[0] = GST_VIDEO_FRAME_COMP_OFFSET (out_frame, 3);
-  p[1] = GST_VIDEO_FRAME_COMP_OFFSET (out_frame, 0);
-  p[2] = GST_VIDEO_FRAME_COMP_OFFSET (out_frame, 1);
-  p[3] = GST_VIDEO_FRAME_COMP_OFFSET (out_frame, 2);
+  p[0] = GST_VIDEO_FRAME_COMP_POFFSET (out_frame, 3);
+  p[1] = GST_VIDEO_FRAME_COMP_POFFSET (out_frame, 0);
+  p[2] = GST_VIDEO_FRAME_COMP_POFFSET (out_frame, 1);
+  p[3] = GST_VIDEO_FRAME_COMP_POFFSET (out_frame, 2);
 
   memcpy (matrix,
       alpha->in_sdtv ? cog_ycbcr_to_rgb_matrix_8bit_sdtv :
@@ -2190,15 +2182,15 @@ gst_alpha_chroma_key_packed_422_argb (const GstVideoFrame * in_frame,
 
   src_stride = GST_VIDEO_FRAME_COMP_STRIDE (in_frame, 0);
 
-  o[0] = GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 0);
+  o[0] = GST_VIDEO_FRAME_COMP_POFFSET (in_frame, 0);
   o[2] = o[0] + 2;
-  o[1] = GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 1);
-  o[3] = GST_VIDEO_FRAME_COMP_OFFSET (in_frame, 2);
+  o[1] = GST_VIDEO_FRAME_COMP_POFFSET (in_frame, 1);
+  o[3] = GST_VIDEO_FRAME_COMP_POFFSET (in_frame, 2);
 
-  p[0] = GST_VIDEO_FRAME_COMP_OFFSET (out_frame, 3);
-  p[1] = GST_VIDEO_FRAME_COMP_OFFSET (out_frame, 0);
-  p[2] = GST_VIDEO_FRAME_COMP_OFFSET (out_frame, 1);
-  p[3] = GST_VIDEO_FRAME_COMP_OFFSET (out_frame, 2);
+  p[0] = GST_VIDEO_FRAME_COMP_POFFSET (out_frame, 3);
+  p[1] = GST_VIDEO_FRAME_COMP_POFFSET (out_frame, 0);
+  p[2] = GST_VIDEO_FRAME_COMP_POFFSET (out_frame, 1);
+  p[3] = GST_VIDEO_FRAME_COMP_POFFSET (out_frame, 2);
 
   memcpy (matrix,
       alpha->in_sdtv ? cog_ycbcr_to_rgb_matrix_8bit_sdtv :
diff --git a/gst/goom/mmx.h b/gst/goom/mmx.h
index 3fae26b98..2649e109e 100644
--- a/gst/goom/mmx.h
+++ b/gst/goom/mmx.h
@@ -711,17 +711,29 @@ void zoom_filter_xmmx (int prevX, int prevY, Pixel *expix1, Pixel *expix2,
 */
 #ifdef	MMX_TRACE
 
+#ifdef __clang__
+#define emms() \
+	{ \
+		printf("emms()\n"); \
+		__asm__ __volatile__ ("emms"); \
+	}
+#else
 #define	emms() \
 	{ \
 		printf("emms()\n"); \
 		__asm__ __volatile__ ("emms" \
                         "st(1)","st(2)","st(3)","st(4)","st(5)","st(6)","st(7)"); \
 	}
+#endif
 
 #else
 
+#ifdef __clang__
+#define	emms() __asm__ __volatile__ ("emms")
+#else
 #define	emms() __asm__ __volatile__ ("emms"::: \
                       "st(1)","st(2)","st(3)","st(4)","st(5)","st(6)","st(7)")
+#endif
 
 #endif
 
diff --git a/gst/isomp4/gstqtmux.c b/gst/isomp4/gstqtmux.c
index 710d0dad6..58533a455 100644
--- a/gst/isomp4/gstqtmux.c
+++ b/gst/isomp4/gstqtmux.c
@@ -196,7 +196,7 @@ enum
 #define DEFAULT_FAST_START_TEMP_FILE    NULL
 #define DEFAULT_MOOV_RECOV_FILE         NULL
 #define DEFAULT_FRAGMENT_DURATION       0
-#define DEFAULT_STREAMABLE              FALSE
+#define DEFAULT_STREAMABLE              TRUE
 #ifndef GST_REMOVE_DEPRECATED
 #define DEFAULT_DTS_METHOD              DTS_METHOD_REORDER
 #endif
@@ -278,6 +278,10 @@ gst_qt_mux_class_init (GstQTMuxClass * klass)
 {
   GObjectClass *gobject_class;
   GstElementClass *gstelement_class;
+  const gchar *streamable_desc;
+  gboolean streamable;
+#define STREAMABLE_DESC "If set to true, the output should be as if it is to "\
+  "be streamed and hence no indexes written or duration written."
 
   gobject_class = (GObjectClass *) klass;
   gstelement_class = (GstElementClass *) klass;
@@ -288,6 +292,15 @@ gst_qt_mux_class_init (GstQTMuxClass * klass)
   gobject_class->get_property = gst_qt_mux_get_property;
   gobject_class->set_property = gst_qt_mux_set_property;
 
+  if (klass->format == GST_QT_MUX_FORMAT_ISML) {
+    streamable_desc = STREAMABLE_DESC;
+    streamable = DEFAULT_STREAMABLE;
+  } else {
+    streamable_desc =
+        STREAMABLE_DESC " (DEPRECATED, only valid for fragmented MP4)";
+    streamable = FALSE;
+  }
+
   g_object_class_install_property (gobject_class, PROP_MOVIE_TIMESCALE,
       g_param_spec_uint ("movie-timescale", "Movie timescale",
           "Timescale to use in the movie (units per second)",
@@ -337,10 +350,8 @@ gst_qt_mux_class_init (GstQTMuxClass * klass)
           2000 : DEFAULT_FRAGMENT_DURATION,
           G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS));
   g_object_class_install_property (gobject_class, PROP_STREAMABLE,
-      g_param_spec_boolean ("streamable", "Streamable",
-          "If set to true, the output should be as if it is to be streamed "
-          "and hence no indexes written or duration written.",
-          DEFAULT_STREAMABLE,
+      g_param_spec_boolean ("streamable", "Streamable", streamable_desc,
+          streamable,
           G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS));
 
   gstelement_class->request_new_pad =
@@ -1604,6 +1615,7 @@ serialize_error:
 static GstFlowReturn
 gst_qt_mux_start_file (GstQTMux * qtmux)
 {
+  GstQTMuxClass *qtmux_klass = (GstQTMuxClass *) (G_OBJECT_GET_CLASS (qtmux));
   GstFlowReturn ret = GST_FLOW_OK;
   GstCaps *caps;
   GstSegment segment;
@@ -1637,14 +1649,20 @@ gst_qt_mux_start_file (GstQTMux * qtmux)
       GST_WARNING_OBJECT (qtmux, "downstream did not handle seeking query");
       seekable = FALSE;
     }
+    gst_query_unref (query);
     if (!seekable) {
-      qtmux->streamable = TRUE;
-      g_object_notify (G_OBJECT (qtmux), "streamable");
-      GST_WARNING_OBJECT (qtmux, "downstream is not seekable, but "
-          "streamable=false. Will ignore that and create streamable output "
-          "instead");
+      if (qtmux_klass->format != GST_QT_MUX_FORMAT_ISML) {
+        if (!qtmux->fast_start) {
+          goto not_seekable_error;
+        }
+      } else {
+        GST_WARNING_OBJECT (qtmux, "downstream is not seekable, but "
+            "streamable=false. Will ignore that and create streamable output "
+            "instead");
+        qtmux->streamable = TRUE;
+        g_object_notify (G_OBJECT (qtmux), "streamable");
+      }
     }
-    gst_query_unref (query);
   }
 
   /* let downstream know we think in BYTES and expect to do seeking later on */
@@ -1756,6 +1774,15 @@ gst_qt_mux_start_file (GstQTMux * qtmux)
 exit:
   return ret;
 
+not_seekable_error:
+  {
+    GST_ELEMENT_ERROR (qtmux, STREAM, FAILED,
+        ("Downstream is not seekable and headers can't be rewritten"),
+        GST_ERROR_SYSTEM);
+    GST_OBJECT_UNLOCK (qtmux);
+    return GST_FLOW_ERROR;
+  }
+
   /* ERRORS */
 open_failed:
   {
@@ -3399,9 +3426,14 @@ gst_qt_mux_set_property (GObject * object,
     case PROP_FRAGMENT_DURATION:
       qtmux->fragment_duration = g_value_get_uint (value);
       break;
-    case PROP_STREAMABLE:
-      qtmux->streamable = g_value_get_boolean (value);
+    case PROP_STREAMABLE:{
+      GstQTMuxClass *qtmux_klass =
+          (GstQTMuxClass *) (G_OBJECT_GET_CLASS (qtmux));
+      if (qtmux_klass->format == GST_QT_MUX_FORMAT_ISML) {
+        qtmux->streamable = g_value_get_boolean (value);
+      }
       break;
+    }
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
diff --git a/gst/matroska/matroska-demux.c b/gst/matroska/matroska-demux.c
index d5d705eae..d7b8901b5 100644
--- a/gst/matroska/matroska-demux.c
+++ b/gst/matroska/matroska-demux.c
@@ -3060,6 +3060,23 @@ gst_matroska_demux_check_subtitle_buffer (GstElement * element,
   gst_buffer_map (*buf, &map, GST_MAP_READ);
 
 next:
+  /* Need \0-terminator at the end */
+  if (map.data[map.size - 1] != '\0') {
+    newbuf = gst_buffer_new_and_alloc (map.size + 1);
+
+    /* Copy old buffer and add a 0 at the end */
+    gst_buffer_fill (newbuf, 0, map.data, map.size);
+    gst_buffer_memset (newbuf, map.size, 0, 1);
+    gst_buffer_unmap (*buf, &map);
+
+    gst_buffer_copy_into (newbuf, *buf,
+        GST_BUFFER_COPY_TIMESTAMPS | GST_BUFFER_COPY_FLAGS |
+        GST_BUFFER_COPY_META, 0, -1);
+    gst_buffer_unref (*buf);
+    *buf = newbuf;
+    gst_buffer_map (*buf, &map, GST_MAP_READ);
+  }
+
   if (sub_stream->check_markup) {
     /* caps claim markup text, so we need to escape text,
      * except if text is already markup and then needs no further escaping */
diff --git a/gst/rtpmanager/gstrtpbin.c b/gst/rtpmanager/gstrtpbin.c
index 4236cd160..e615c94e1 100644
--- a/gst/rtpmanager/gstrtpbin.c
+++ b/gst/rtpmanager/gstrtpbin.c
@@ -633,13 +633,13 @@ create_session (GstRtpBin * rtpbin, gint id)
   /* ERRORS */
 no_session:
   {
-    g_warning ("rtpbin: could not create gstrtpsession element");
+    g_warning ("rtpbin: could not create rtpsession element");
     return NULL;
   }
 no_demux:
   {
     gst_object_unref (session);
-    g_warning ("rtpbin: could not create gstrtpssrcdemux element");
+    g_warning ("rtpbin: could not create rtpssrcdemux element");
     return NULL;
   }
 }
@@ -1465,13 +1465,13 @@ create_stream (GstRtpBinSession * session, guint32 ssrc)
   /* ERRORS */
 no_jitterbuffer:
   {
-    g_warning ("rtpbin: could not create gstrtpjitterbuffer element");
+    g_warning ("rtpbin: could not create rtpjitterbuffer element");
     return NULL;
   }
 no_demux:
   {
     gst_object_unref (buffer);
-    g_warning ("rtpbin: could not create gstrtpptdemux element");
+    g_warning ("rtpbin: could not create rtpptdemux element");
     return NULL;
   }
 }
@@ -2598,7 +2598,7 @@ new_ssrc_pad_found (GstElement * element, guint ssrc, GstPad * pad,
     stream->demux_ptchange_sig = g_signal_connect (stream->demux,
         "payload-type-change", (GCallback) payload_type_change, session);
   } else {
-    /* add gstrtpjitterbuffer src pad to pads */
+    /* add rtpjitterbuffer src pad to pads */
     GstElementClass *klass;
     GstPadTemplate *templ;
     gchar *padname;
diff --git a/gst/rtpmanager/gstrtpjitterbuffer.c b/gst/rtpmanager/gstrtpjitterbuffer.c
index bf676e6ee..2fb633b54 100644
--- a/gst/rtpmanager/gstrtpjitterbuffer.c
+++ b/gst/rtpmanager/gstrtpjitterbuffer.c
@@ -24,27 +24,69 @@
  */
 
 /**
- * SECTION:element-gstrtpjitterbuffer
+ * SECTION:element-rtpjitterbuffer
  *
  * This element reorders and removes duplicate RTP packets as they are received
- * from a network source. It will also wait for missing packets up to a
- * configurable time limit using the #GstRtpJitterBuffer:latency property.
- * Packets arriving too late are considered to be lost packets.
- *
- * This element acts as a live element and so adds #GstRtpJitterBuffer:latency
- * to the pipeline.
+ * from a network source.
  *
  * The element needs the clock-rate of the RTP payload in order to estimate the
  * delay. This information is obtained either from the caps on the sink pad or,
  * when no caps are present, from the #GstRtpJitterBuffer::request-pt-map signal.
  * To clear the previous pt-map use the #GstRtpJitterBuffer::clear-pt-map signal.
  *
- * This element will automatically be used inside gstrtpbin.
+ * The rtpjitterbuffer will wait for missing packets up to a configurable time
+ * limit using the #GstRtpJitterBuffer:latency property. Packets arriving too
+ * late are considered to be lost packets. If the #GstRtpJitterBuffer:do-lost
+ * property is set, lost packets will result in a custom serialized downstream
+ * event of name GstRTPPacketLost. The lost packet events are usually used by a
+ * depayloader or other element to create concealment data or some other logic
+ * to gracefully handle the missing packets.
+ *
+ * The jitterbuffer will use the DTS (or PTS if no DTS is set) of the incomming
+ * buffer and the rtptime inside the RTP packet to create a PTS on the outgoing
+ * buffer.
+ *
+ * The jitterbuffer can also be configured to send early retransmission events
+ * upstream by setting the #GstRtpJitterBuffer:do-retransmission property. In
+ * this mode, the jitterbuffer tries to estimate when a packet should arrive and
+ * sends a custom upstream event named GstRTPRetransmissionRequest when the
+ * packet is considered late. The initial expected packet arrival time is
+ * calculated as follows:
+ *
+ * - If seqnum N arrived at time T, seqnum N+1 is expected to arrive at
+ *     T + packet-spacing + #GstRtpJitterBuffer:rtx-delay. The packet spacing is
+ *     calculated from the DTS (or PTS is no DTS) of two consecutive RTP
+ *     packets with different rtptime.
+ *
+ * - If seqnum N0 arrived at time T0 and seqnum Nm arrived at time Tm,
+ *     seqnum Ni is expected at time Ti = T0 + i*(Tm - T0)/(Nm - N0). Any
+ *     previously scheduled timeout is overwritten.
+ *
+ * - If seqnum N arrived, all seqnum older than
+ *     N - #GstRtpJitterBuffer:rtx-delay-reorder are considered late
+ *     immediately. This is to request fast feedback for abonormally reorder
+ *     packets before any of the previous timeouts is triggered.
+ *
+ * A late packet triggers the GstRTPRetransmissionRequest custom upstream
+ * event. After the initial timeout expires and the retransmission event is
+ * sent, the timeout is scheduled for
+ * T + #GstRtpJitterBuffer:rtx-retry-timeout. If the missing packet did not
+ * arrive after #GstRtpJitterBuffer:rtx-retry-timeout, a new
+ * GstRTPRetransmissionRequest is sent upstream and the timeout is rescheduled
+ * again for T + #GstRtpJitterBuffer:rtx-retry-timeout. This repeats until
+ * #GstRtpJitterBuffer:rtx-retry-period elapsed, at which point no further
+ * retransmission requests are sent and the regular logic is performed to
+ * schedule a lost packet as discussed above.
+ *
+ * This element acts as a live element and so adds #GstRtpJitterBuffer:latency
+ * to the pipeline.
+ *
+ * This element will automatically be used inside rtpbin.
  *
  * <refsect2>
  * <title>Example pipelines</title>
  * |[
- * gst-launch-1.0 rtspsrc location=rtsp://192.168.1.133:8554/mpeg1or2AudioVideoTest ! gstrtpjitterbuffer ! rtpmpvdepay ! mpeg2dec ! xvimagesink
+ * gst-launch-1.0 rtspsrc location=rtsp://192.168.1.133:8554/mpeg1or2AudioVideoTest ! rtpjitterbuffer ! rtpmpvdepay ! mpeg2dec ! xvimagesink
  * ]| Connect to a streaming server and decode the MPEG video. The jitterbuffer is
  * inserted into the pipeline to smooth out network jitter and to reorder the
  * out-of-order RTP packets.
@@ -244,6 +286,7 @@ typedef struct
   GstClockTime timeout;
   GstClockTime duration;
   GstClockTime rtx_base;
+  GstClockTime rtx_delay;
   GstClockTime rtx_retry;
 } TimerData;
 
@@ -448,7 +491,7 @@ gst_rtp_jitter_buffer_class_init (GstRtpJitterBufferClass * klass)
       g_param_spec_int ("rtx-delay", "RTX Delay",
           "Extra time in ms to wait before sending retransmission "
           "event (-1 automatic)", -1, G_MAXINT, DEFAULT_RTX_DELAY,
-          G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
   /**
    * GstRtpJitterBuffer::rtx-delay-reorder:
    *
@@ -464,7 +507,7 @@ gst_rtp_jitter_buffer_class_init (GstRtpJitterBufferClass * klass)
       g_param_spec_int ("rtx-delay-reorder", "RTX Delay Reorder",
           "Sending retransmission event when this much reordering (-1 automatic)",
           -1, G_MAXINT, DEFAULT_RTX_DELAY_REORDER,
-          G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
   /**
    * GstRtpJitterBuffer::rtx-retry-timeout:
    *
@@ -480,7 +523,7 @@ gst_rtp_jitter_buffer_class_init (GstRtpJitterBufferClass * klass)
       g_param_spec_int ("rtx-retry-timeout", "RTX Retry Timeout",
           "Retry sending a transmission event after this timeout in "
           "ms (-1 automatic)", -1, G_MAXINT, DEFAULT_RTX_RETRY_TIMEOUT,
-          G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
   /**
    * GstRtpJitterBuffer::rtx-retry-period:
    *
@@ -495,7 +538,7 @@ gst_rtp_jitter_buffer_class_init (GstRtpJitterBufferClass * klass)
       g_param_spec_int ("rtx-retry-period", "RTX Retry Period",
           "Try to get a retransmission for this many ms "
           "(-1 automatic)", -1, G_MAXINT, DEFAULT_RTX_RETRY_PERIOD,
-          G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
   /**
    * GstRtpJitterBuffer::request-pt-map:
@@ -592,7 +635,7 @@ gst_rtp_jitter_buffer_class_init (GstRtpJitterBufferClass * klass)
   klass->set_active = GST_DEBUG_FUNCPTR (gst_rtp_jitter_buffer_set_active);
 
   GST_DEBUG_CATEGORY_INIT
-      (rtpjitterbuffer_debug, "gstrtpjitterbuffer", 0, "RTP Jitter Buffer");
+      (rtpjitterbuffer_debug, "rtpjitterbuffer", 0, "RTP Jitter Buffer");
 }
 
 static void
@@ -653,19 +696,52 @@ gst_rtp_jitter_buffer_init (GstRtpJitterBuffer * jitterbuffer)
   GST_OBJECT_FLAG_SET (jitterbuffer, GST_ELEMENT_FLAG_PROVIDE_CLOCK);
 }
 
+#define ITEM_TYPE_BUFFER        0
+#define ITEM_TYPE_LOST          1
+
+static RTPJitterBufferItem *
+alloc_item (gpointer data, guint type, GstClockTime dts, GstClockTime pts,
+    guint seqnum, guint rtptime)
+{
+  RTPJitterBufferItem *item;
+
+  item = g_slice_new (RTPJitterBufferItem);
+  item->data = data;
+  item->next = NULL;
+  item->prev = NULL;
+  item->type = type;
+  item->dts = dts;
+  item->pts = pts;
+  item->seqnum = seqnum;
+  item->rtptime = rtptime;
+
+  return item;
+}
+
+static void
+free_item (RTPJitterBufferItem * item)
+{
+  if (item->data)
+    gst_mini_object_unref (item->data);
+  g_slice_free (RTPJitterBufferItem, item);
+}
+
 static void
 gst_rtp_jitter_buffer_finalize (GObject * object)
 {
   GstRtpJitterBuffer *jitterbuffer;
+  GstRtpJitterBufferPrivate *priv;
 
   jitterbuffer = GST_RTP_JITTER_BUFFER (object);
+  priv = jitterbuffer->priv;
 
-  g_array_free (jitterbuffer->priv->timers, TRUE);
-  g_mutex_clear (&jitterbuffer->priv->jbuf_lock);
-  g_cond_clear (&jitterbuffer->priv->jbuf_timer);
-  g_cond_clear (&jitterbuffer->priv->jbuf_event);
+  g_array_free (priv->timers, TRUE);
+  g_mutex_clear (&priv->jbuf_lock);
+  g_cond_clear (&priv->jbuf_timer);
+  g_cond_clear (&priv->jbuf_event);
 
-  g_object_unref (jitterbuffer->priv->jbuf);
+  rtp_jitter_buffer_flush (priv->jbuf, (GFunc) free_item, NULL);
+  g_object_unref (priv->jbuf);
 
   G_OBJECT_CLASS (parent_class)->finalize (object);
 }
@@ -767,12 +843,12 @@ gst_rtp_jitter_buffer_request_new_pad (GstElement * element,
   /* ERRORS */
 wrong_template:
   {
-    g_warning ("gstrtpjitterbuffer: this is not our template");
+    g_warning ("rtpjitterbuffer: this is not our template");
     return NULL;
   }
 exists:
   {
-    g_warning ("gstrtpjitterbuffer: pad already requested");
+    g_warning ("rtpjitterbuffer: pad already requested");
     return NULL;
   }
 }
@@ -837,7 +913,7 @@ gst_rtp_jitter_buffer_set_active (GstRtpJitterBuffer * jbuf, gboolean active,
 {
   GstRtpJitterBufferPrivate *priv;
   GstClockTime last_out;
-  GstBuffer *head;
+  RTPJitterBufferItem *item;
 
   priv = jbuf->priv;
 
@@ -858,9 +934,9 @@ gst_rtp_jitter_buffer_set_active (GstRtpJitterBuffer * jbuf, gboolean active,
   if (!active) {
     rtp_jitter_buffer_set_buffering (priv->jbuf, TRUE);
   }
-  if ((head = rtp_jitter_buffer_peek (priv->jbuf))) {
+  if ((item = rtp_jitter_buffer_peek (priv->jbuf))) {
     /* head buffer timestamp and offset gives our output time */
-    last_out = GST_BUFFER_DTS (head) + priv->ts_offset;
+    last_out = item->dts + priv->ts_offset;
   } else {
     /* use last known time when the buffer is empty */
     last_out = priv->last_out_time;
@@ -936,6 +1012,8 @@ gst_jitter_buffer_sink_parse_caps (GstRtpJitterBuffer * jitterbuffer,
 
   GST_DEBUG_OBJECT (jitterbuffer, "got clock-rate %d", priv->clock_rate);
 
+  rtp_jitter_buffer_set_clock_rate (priv->jbuf, priv->clock_rate);
+
   /* The clock base is the RTP timestamp corrsponding to the npt-start value. We
    * can use this to track the amount of time elapsed on the sender. */
   if (gst_structure_get_uint (caps_struct, "clock-base", &val))
@@ -1003,9 +1081,6 @@ gst_rtp_jitter_buffer_flush_start (GstRtpJitterBuffer * jitterbuffer)
   GST_DEBUG_OBJECT (jitterbuffer, "Disabling pop on queue");
   /* this unblocks any waiting pops on the src pad task */
   JBUF_SIGNAL_EVENT (priv);
-  /* unlock clock, we just unschedule, the entry will be released by the
-   * locking streaming thread. */
-  unschedule_current_timer (jitterbuffer);
   JBUF_UNLOCK (priv);
 }
 
@@ -1034,7 +1109,7 @@ gst_rtp_jitter_buffer_flush_stop (GstRtpJitterBuffer * jitterbuffer)
   priv->last_elapsed = 0;
   priv->ext_timestamp = -1;
   GST_DEBUG_OBJECT (jitterbuffer, "flush and reset jitterbuffer");
-  rtp_jitter_buffer_flush (priv->jbuf);
+  rtp_jitter_buffer_flush (priv->jbuf, (GFunc) free_item, NULL);
   rtp_jitter_buffer_reset_skew (priv->jbuf);
   remove_all_timers (jitterbuffer);
   JBUF_UNLOCK (priv);
@@ -1136,6 +1211,7 @@ gst_rtp_jitter_buffer_change_state (GstElement * element,
       JBUF_LOCK (priv);
       gst_buffer_replace (&priv->last_sr, NULL);
       priv->timer_running = FALSE;
+      unschedule_current_timer (jitterbuffer);
       JBUF_SIGNAL_TIMER (priv);
       JBUF_UNLOCK (priv);
       g_thread_join (priv->timer_thread);
@@ -1449,6 +1525,7 @@ unschedule_current_timer (GstRtpJitterBuffer * jitterbuffer)
   if (priv->clock_id) {
     GST_DEBUG_OBJECT (jitterbuffer, "unschedule current timer");
     gst_clock_id_unschedule (priv->clock_id);
+    priv->clock_id = NULL;
   }
 }
 
@@ -1487,15 +1564,16 @@ recalculate_timer (GstRtpJitterBuffer * jitterbuffer, TimerData * timer)
 
 static TimerData *
 add_timer (GstRtpJitterBuffer * jitterbuffer, TimerType type,
-    guint16 seqnum, guint num, GstClockTime timeout, GstClockTime duration)
+    guint16 seqnum, guint num, GstClockTime timeout, GstClockTime delay,
+    GstClockTime duration)
 {
   GstRtpJitterBufferPrivate *priv = jitterbuffer->priv;
   TimerData *timer;
   gint len;
 
   GST_DEBUG_OBJECT (jitterbuffer,
-      "add timer for seqnum %d to %" GST_TIME_FORMAT,
-      seqnum, GST_TIME_ARGS (timeout));
+      "add timer for seqnum %d to %" GST_TIME_FORMAT ", delay %"
+      GST_TIME_FORMAT, seqnum, GST_TIME_ARGS (timeout), GST_TIME_ARGS (delay));
 
   len = priv->timers->len;
   g_array_set_size (priv->timers, len + 1);
@@ -1504,10 +1582,11 @@ add_timer (GstRtpJitterBuffer * jitterbuffer, TimerType type,
   timer->type = type;
   timer->seqnum = seqnum;
   timer->num = num;
-  timer->timeout = timeout;
+  timer->timeout = timeout + delay;
   timer->duration = duration;
   if (type == TIMER_TYPE_EXPECTED) {
     timer->rtx_base = timeout;
+    timer->rtx_delay = delay;
     timer->rtx_retry = 0;
   }
   recalculate_timer (jitterbuffer, timer);
@@ -1518,7 +1597,7 @@ add_timer (GstRtpJitterBuffer * jitterbuffer, TimerType type,
 
 static void
 reschedule_timer (GstRtpJitterBuffer * jitterbuffer, TimerData * timer,
-    guint16 seqnum, GstClockTime timeout)
+    guint16 seqnum, GstClockTime timeout, GstClockTime delay, gboolean reset)
 {
   GstRtpJitterBufferPrivate *priv = jitterbuffer->priv;
   gboolean seqchange, timechange;
@@ -1536,10 +1615,11 @@ reschedule_timer (GstRtpJitterBuffer * jitterbuffer, TimerData * timer,
       "replace timer for seqnum %d->%d to %" GST_TIME_FORMAT,
       oldseq, seqnum, GST_TIME_ARGS (timeout));
 
-  timer->timeout = timeout;
+  timer->timeout = timeout + delay;
   timer->seqnum = seqnum;
-  if (seqchange && timer->type == TIMER_TYPE_EXPECTED) {
+  if (reset) {
     timer->rtx_base = timeout;
+    timer->rtx_delay = delay;
     timer->rtx_retry = 0;
   }
 
@@ -1564,9 +1644,9 @@ set_timer (GstRtpJitterBuffer * jitterbuffer, TimerType type,
   /* find the seqnum timer */
   timer = find_timer (jitterbuffer, type, seqnum);
   if (timer == NULL) {
-    timer = add_timer (jitterbuffer, type, seqnum, 0, timeout, -1);
+    timer = add_timer (jitterbuffer, type, seqnum, 0, timeout, 0, -1);
   } else {
-    reschedule_timer (jitterbuffer, timer, seqnum, timeout);
+    reschedule_timer (jitterbuffer, timer, seqnum, timeout, 0, FALSE);
   }
   return timer;
 }
@@ -1633,21 +1713,24 @@ update_timers (GstRtpJitterBuffer * jitterbuffer, guint16 seqnum,
       /* max gap, we exceeded the max reorder distance and we don't expect the
        * missing packet to be this reordered */
       if (test->rtx_retry == 0 && test->type == TIMER_TYPE_EXPECTED)
-        reschedule_timer (jitterbuffer, test, test->seqnum, -1);
+        reschedule_timer (jitterbuffer, test, test->seqnum, -1, 0, FALSE);
     }
   }
 
   if (priv->packet_spacing > 0 && do_next_seqnum && priv->do_retransmission) {
-    GstClockTime expected;
+    GstClockTime expected, delay;
 
     /* calculate expected arrival time of the next seqnum */
-    expected = dts + priv->packet_spacing + (priv->rtx_delay * GST_MSECOND);
+    expected = dts + priv->packet_spacing;
+    delay = priv->rtx_delay * GST_MSECOND;
+
     /* and update/install timer for next seqnum */
     if (timer)
-      reschedule_timer (jitterbuffer, timer, priv->next_in_seqnum, expected);
+      reschedule_timer (jitterbuffer, timer, priv->next_in_seqnum, expected,
+          delay, TRUE);
     else
       add_timer (jitterbuffer, TIMER_TYPE_EXPECTED, priv->next_in_seqnum, 0,
-          expected, priv->packet_spacing);
+          expected, delay, priv->packet_spacing);
   } else if (timer && timer->type != TIMER_TYPE_DEADLINE) {
     /* if we had a timer, remove it, we don't know when to expect the next
      * packet. */
@@ -1683,6 +1766,9 @@ send_lost_event (GstRtpJitterBuffer * jitterbuffer, guint seqnum,
     gboolean late)
 {
   GstRtpJitterBufferPrivate *priv = jitterbuffer->priv;
+  guint next_seqnum;
+  GstEvent *event;
+  RTPJitterBufferItem *item;
 
   /* we had a gap and thus we lost some packets. Create an event for this.  */
   if (lost_packets > 1)
@@ -1692,27 +1778,26 @@ send_lost_event (GstRtpJitterBuffer * jitterbuffer, guint seqnum,
     GST_DEBUG_OBJECT (jitterbuffer, "Packet #%d lost", seqnum);
 
   priv->num_late += lost_packets;
-  priv->discont = TRUE;
 
-  /* update our expected next packet but make sure the seqnum increases */
-  if (seqnum + lost_packets > priv->next_seqnum) {
-    priv->next_seqnum = (seqnum + lost_packets) & 0xffff;
-    priv->last_popped_seqnum = seqnum;
-    priv->last_out_time = timestamp;
-  }
-  if (priv->do_lost) {
-    GstEvent *event;
+  next_seqnum = seqnum + lost_packets - 1;
 
-    /* create paket lost event */
-    event = gst_event_new_custom (GST_EVENT_CUSTOM_DOWNSTREAM,
-        gst_structure_new ("GstRTPPacketLost",
-            "seqnum", G_TYPE_UINT, (guint) seqnum,
-            "timestamp", G_TYPE_UINT64, timestamp,
-            "duration", G_TYPE_UINT64, duration,
-            "late", G_TYPE_BOOLEAN, late, NULL));
-    JBUF_UNLOCK (priv);
-    gst_pad_push_event (priv->srcpad, event);
-    JBUF_LOCK (priv);
+  /* create paket lost event */
+  event = gst_event_new_custom (GST_EVENT_CUSTOM_DOWNSTREAM,
+      gst_structure_new ("GstRTPPacketLost",
+          "seqnum", G_TYPE_UINT, (guint) seqnum,
+          "timestamp", G_TYPE_UINT64, timestamp,
+          "duration", G_TYPE_UINT64, duration,
+          "late", G_TYPE_BOOLEAN, late, NULL));
+
+  item = alloc_item (event, ITEM_TYPE_LOST, -1, -1, next_seqnum, -1);
+  rtp_jitter_buffer_insert (priv->jbuf, item, NULL, NULL);
+
+  if (seqnum == priv->next_seqnum) {
+    GST_DEBUG_OBJECT (jitterbuffer, "lost seqnum %d == %d next_seqnum -> %d",
+        seqnum, priv->next_seqnum, next_seqnum);
+    priv->next_seqnum = next_seqnum & 0xffff;
+    priv->last_popped_seqnum = next_seqnum;
+    priv->last_out_time = timestamp;
   }
 }
 
@@ -1765,7 +1850,7 @@ calculate_expected (GstRtpJitterBuffer * jitterbuffer, guint32 expected,
     /* this timer will fire immediately and the lost event will be pushed from
      * the timer thread */
     add_timer (jitterbuffer, TIMER_TYPE_LOST, expected, lost_packets,
-        priv->last_in_dts + duration, gap_time);
+        priv->last_in_dts + duration, 0, gap_time);
 
     expected += lost_packets;
     priv->last_in_dts += gap_time;
@@ -1774,16 +1859,28 @@ calculate_expected (GstRtpJitterBuffer * jitterbuffer, guint32 expected,
   expected_dts = priv->last_in_dts + duration;
 
   if (priv->do_retransmission) {
+    TimerData *timer;
+
     type = TIMER_TYPE_EXPECTED;
-    /* if we had a timer for the first missing packet, leave it. */
-    if (find_timer (jitterbuffer, type, expected))
+    /* if we had a timer for the first missing packet, update it. */
+    if ((timer = find_timer (jitterbuffer, type, expected))) {
+      GstClockTime timeout = timer->timeout;
+
+      timer->duration = duration;
+      if (timeout > expected_dts) {
+        GstClockTime delay = timeout - expected_dts - timer->rtx_retry;
+        reschedule_timer (jitterbuffer, timer, timer->seqnum, expected_dts,
+            delay, TRUE);
+      }
       expected++;
+      expected_dts += duration;
+    }
   } else {
     type = TIMER_TYPE_LOST;
   }
 
   while (expected < seqnum) {
-    add_timer (jitterbuffer, type, expected, 0, expected_dts, duration);
+    add_timer (jitterbuffer, type, expected, 0, expected_dts, 0, duration);
     expected_dts += duration;
     expected++;
   }
@@ -1805,6 +1902,7 @@ gst_rtp_jitter_buffer_chain (GstPad * pad, GstObject * parent,
   guint8 pt;
   GstRTPBuffer rtp = GST_RTP_BUFFER_INIT;
   gboolean do_next_seqnum = FALSE;
+  RTPJitterBufferItem *item;
 
   jitterbuffer = GST_RTP_JITTER_BUFFER (parent);
 
@@ -1917,7 +2015,7 @@ gst_rtp_jitter_buffer_chain (GstPad * pad, GstObject * parent,
       }
       if (G_UNLIKELY (reset)) {
         GST_DEBUG_OBJECT (jitterbuffer, "flush and reset jitterbuffer");
-        rtp_jitter_buffer_flush (priv->jbuf);
+        rtp_jitter_buffer_flush (priv->jbuf, (GFunc) free_item, NULL);
         rtp_jitter_buffer_reset_skew (priv->jbuf);
         remove_all_timers (jitterbuffer);
         priv->last_popped_seqnum = -1;
@@ -1966,28 +2064,22 @@ gst_rtp_jitter_buffer_chain (GstPad * pad, GstObject * parent,
         gst_util_uint64_scale_int (priv->latency_ms, priv->clock_rate, 1000);
 
     if (G_UNLIKELY (rtp_jitter_buffer_get_ts_diff (priv->jbuf) >= latency_ts)) {
-      GstBuffer *old_buf;
-
-      old_buf = rtp_jitter_buffer_pop (priv->jbuf, &percent);
+      RTPJitterBufferItem *old_item;
 
+      old_item = rtp_jitter_buffer_pop (priv->jbuf, &percent);
       GST_DEBUG_OBJECT (jitterbuffer, "Queue full, dropping old packet %p",
-          old_buf);
-
-      gst_buffer_unref (old_buf);
+          old_item);
+      free_item (old_item);
     }
   }
 
-  /* we need to make the metadata writable before pushing it in the jitterbuffer
-   * because the jitterbuffer will update the PTS */
-  buffer = gst_buffer_make_writable (buffer);
-  GST_BUFFER_DTS (buffer) = dts;
-  GST_BUFFER_PTS (buffer) = pts;
+  item = alloc_item (buffer, ITEM_TYPE_BUFFER, dts, pts, seqnum, rtptime);
 
   /* now insert the packet into the queue in sorted order. This function returns
    * FALSE if a packet with the same seqnum was already in the queue, meaning we
    * have a duplicate. */
-  if (G_UNLIKELY (!rtp_jitter_buffer_insert (priv->jbuf, buffer, dts,
-              priv->clock_rate, &tail, &percent)))
+  if (G_UNLIKELY (!rtp_jitter_buffer_insert (priv->jbuf, item,
+              &tail, &percent)))
     goto duplicate;
 
   /* update timers */
@@ -2064,23 +2156,20 @@ duplicate:
     GST_WARNING_OBJECT (jitterbuffer, "Duplicate packet #%d detected, dropping",
         seqnum);
     priv->num_duplicates++;
-    gst_buffer_unref (buffer);
+    free_item (item);
     goto finished;
   }
 }
 
 static GstClockTime
-compute_elapsed (GstRtpJitterBuffer * jitterbuffer, GstBuffer * outbuf)
+compute_elapsed (GstRtpJitterBuffer * jitterbuffer, RTPJitterBufferItem * item)
 {
   guint64 ext_time, elapsed;
   guint32 rtp_time;
   GstRtpJitterBufferPrivate *priv;
-  GstRTPBuffer rtp = GST_RTP_BUFFER_INIT;
 
   priv = jitterbuffer->priv;
-  gst_rtp_buffer_map (outbuf, GST_MAP_READ, &rtp);
-  rtp_time = gst_rtp_buffer_get_timestamp (&rtp);
-  gst_rtp_buffer_unmap (&rtp);
+  rtp_time = item->rtptime;
 
   GST_LOG_OBJECT (jitterbuffer, "rtp %" G_GUINT32_FORMAT ", ext %"
       G_GUINT64_FORMAT, rtp_time, priv->ext_timestamp);
@@ -2101,7 +2190,8 @@ compute_elapsed (GstRtpJitterBuffer * jitterbuffer, GstBuffer * outbuf)
 }
 
 static void
-update_estimated_eos (GstRtpJitterBuffer * jitterbuffer, GstBuffer * outbuf)
+update_estimated_eos (GstRtpJitterBuffer * jitterbuffer,
+    RTPJitterBufferItem * item)
 {
   GstRtpJitterBufferPrivate *priv = jitterbuffer->priv;
 
@@ -2109,7 +2199,7 @@ update_estimated_eos (GstRtpJitterBuffer * jitterbuffer, GstBuffer * outbuf)
       && priv->clock_base != -1 && priv->clock_rate > 0) {
     guint64 elapsed, estimated;
 
-    elapsed = compute_elapsed (jitterbuffer, outbuf);
+    elapsed = compute_elapsed (jitterbuffer, item);
 
     if (elapsed > priv->last_elapsed || !priv->last_elapsed) {
       guint64 left;
@@ -2121,7 +2211,7 @@ update_estimated_eos (GstRtpJitterBuffer * jitterbuffer, GstBuffer * outbuf)
       GST_LOG_OBJECT (jitterbuffer, "left %" GST_TIME_FORMAT,
           GST_TIME_ARGS (left));
 
-      out_time = GST_BUFFER_DTS (outbuf);
+      out_time = item->dts;
 
       if (elapsed > 0)
         estimated = gst_util_uint64_scale (out_time, left, elapsed);
@@ -2151,58 +2241,85 @@ pop_and_push_next (GstRtpJitterBuffer * jitterbuffer, guint16 seqnum)
 {
   GstRtpJitterBufferPrivate *priv = jitterbuffer->priv;
   GstFlowReturn result;
+  RTPJitterBufferItem *item;
   GstBuffer *outbuf;
+  GstEvent *outevent;
   GstClockTime dts, pts;
   gint percent = -1;
+  gboolean is_buffer, do_push = TRUE;
 
   /* when we get here we are ready to pop and push the buffer */
-  outbuf = rtp_jitter_buffer_pop (priv->jbuf, &percent);
+  item = rtp_jitter_buffer_pop (priv->jbuf, &percent);
 
-  check_buffering_percent (jitterbuffer, &percent);
+  is_buffer = GST_IS_BUFFER (item->data);
 
-  if (G_UNLIKELY (priv->discont)) {
-    /* set DISCONT flag when we missed a packet. We pushed the buffer writable
-     * into the jitterbuffer so we can modify now. */
-    GST_DEBUG_OBJECT (jitterbuffer, "mark output buffer discont");
-    GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT);
-    priv->discont = FALSE;
-  }
-  if (G_UNLIKELY (priv->ts_discont)) {
-    GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_RESYNC);
-    priv->ts_discont = FALSE;
-  }
+  if (is_buffer) {
+    check_buffering_percent (jitterbuffer, &percent);
+
+    /* we need to make writable to change the flags and timestamps */
+    outbuf = gst_buffer_make_writable (item->data);
+
+    if (G_UNLIKELY (priv->discont)) {
+      /* set DISCONT flag when we missed a packet. We pushed the buffer writable
+       * into the jitterbuffer so we can modify now. */
+      GST_DEBUG_OBJECT (jitterbuffer, "mark output buffer discont");
+      GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT);
+      priv->discont = FALSE;
+    }
+    if (G_UNLIKELY (priv->ts_discont)) {
+      GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_RESYNC);
+      priv->ts_discont = FALSE;
+    }
 
-  dts = GST_BUFFER_DTS (outbuf);
-  pts = GST_BUFFER_PTS (outbuf);
+    dts = gst_segment_to_position (&priv->segment, GST_FORMAT_TIME, item->dts);
+    pts = gst_segment_to_position (&priv->segment, GST_FORMAT_TIME, item->pts);
 
-  dts = gst_segment_to_position (&priv->segment, GST_FORMAT_TIME, dts);
-  pts = gst_segment_to_position (&priv->segment, GST_FORMAT_TIME, pts);
+    /* apply timestamp with offset to buffer now */
+    GST_BUFFER_DTS (outbuf) = apply_offset (jitterbuffer, dts);
+    GST_BUFFER_PTS (outbuf) = apply_offset (jitterbuffer, pts);
 
-  /* apply timestamp with offset to buffer now */
-  GST_BUFFER_DTS (outbuf) = apply_offset (jitterbuffer, dts);
-  GST_BUFFER_PTS (outbuf) = apply_offset (jitterbuffer, pts);
+    /* update the elapsed time when we need to check against the npt stop time. */
+    update_estimated_eos (jitterbuffer, item);
 
-  /* update the elapsed time when we need to check against the npt stop time. */
-  update_estimated_eos (jitterbuffer, outbuf);
+    priv->last_out_time = GST_BUFFER_PTS (outbuf);
+  } else {
+    outevent = item->data;
+    if (item->type == ITEM_TYPE_LOST) {
+      priv->discont = TRUE;
+      if (!priv->do_lost)
+        do_push = FALSE;
+    }
+  }
 
   /* now we are ready to push the buffer. Save the seqnum and release the lock
    * so the other end can push stuff in the queue again. */
   priv->last_popped_seqnum = seqnum;
-  priv->last_out_time = GST_BUFFER_PTS (outbuf);
   priv->next_seqnum = (seqnum + 1) & 0xffff;
   JBUF_UNLOCK (priv);
 
-  if (percent != -1)
-    post_buffering_percent (jitterbuffer, percent);
+  item->data = NULL;
+  free_item (item);
 
-  /* push buffer */
-  GST_DEBUG_OBJECT (jitterbuffer,
-      "Pushing buffer %d, dts %" GST_TIME_FORMAT ", pts %" GST_TIME_FORMAT,
-      seqnum, GST_TIME_ARGS (GST_BUFFER_DTS (outbuf)),
-      GST_TIME_ARGS (GST_BUFFER_PTS (outbuf)));
+  if (is_buffer) {
+    /* push buffer */
+    if (percent != -1)
+      post_buffering_percent (jitterbuffer, percent);
 
-  result = gst_pad_push (priv->srcpad, outbuf);
+    GST_DEBUG_OBJECT (jitterbuffer,
+        "Pushing buffer %d, dts %" GST_TIME_FORMAT ", pts %" GST_TIME_FORMAT,
+        seqnum, GST_TIME_ARGS (GST_BUFFER_DTS (outbuf)),
+        GST_TIME_ARGS (GST_BUFFER_PTS (outbuf)));
+    result = gst_pad_push (priv->srcpad, outbuf);
+  } else {
+    GST_DEBUG_OBJECT (jitterbuffer, "Pushing event %d", seqnum);
 
+    if (do_push)
+      gst_pad_push_event (priv->srcpad, outevent);
+    else
+      gst_event_unref (outevent);
+
+    result = GST_FLOW_OK;
+  }
   JBUF_LOCK_CHECK (priv, out_flushing);
 
   return result;
@@ -2225,11 +2342,10 @@ handle_next_buffer (GstRtpJitterBuffer * jitterbuffer)
 {
   GstRtpJitterBufferPrivate *priv = jitterbuffer->priv;
   GstFlowReturn result = GST_FLOW_OK;
-  GstBuffer *outbuf;
+  RTPJitterBufferItem *item;
   guint16 seqnum;
   guint32 next_seqnum;
   gint gap;
-  GstRTPBuffer rtp = { NULL, };
 
   /* only push buffers when PLAYING and active and not buffering */
   if (priv->blocked || !priv->active ||
@@ -2241,14 +2357,12 @@ again:
    * If all is fine, we'll pop and push it. If the sequence number is wrong we
    * wait for a timeout or something to change.
    * The peeked buffer is valid for as long as we hold the jitterbuffer lock. */
-  outbuf = rtp_jitter_buffer_peek (priv->jbuf);
-  if (outbuf == NULL)
+  item = rtp_jitter_buffer_peek (priv->jbuf);
+  if (item == NULL)
     goto wait;
 
   /* get the seqnum and the next expected seqnum */
-  gst_rtp_buffer_map (outbuf, GST_MAP_READ, &rtp);
-  seqnum = gst_rtp_buffer_get_seq (&rtp);
-  gst_rtp_buffer_unmap (&rtp);
+  seqnum = item->seqnum;
 
   next_seqnum = priv->next_seqnum;
 
@@ -2268,12 +2382,13 @@ again:
       /* no missing packet, pop and push */
       result = pop_and_push_next (jitterbuffer, seqnum);
     } else if (G_UNLIKELY (gap < 0)) {
+      RTPJitterBufferItem *item;
       /* if we have a packet that we already pushed or considered dropped, pop it
        * off and get the next packet */
       GST_DEBUG_OBJECT (jitterbuffer, "Old packet #%d, next #%d dropping",
           seqnum, next_seqnum);
-      outbuf = rtp_jitter_buffer_pop (priv->jbuf, NULL);
-      gst_buffer_unref (outbuf);
+      item = rtp_jitter_buffer_pop (priv->jbuf, NULL);
+      free_item (item);
       goto again;
     } else {
       /* the chain function has scheduled timers to request retransmission or
@@ -2311,11 +2426,12 @@ do_expected_timeout (GstRtpJitterBuffer * jitterbuffer, TimerData * timer,
       gst_structure_new ("GstRTPRetransmissionRequest",
           "seqnum", G_TYPE_UINT, (guint) timer->seqnum,
           "running-time", G_TYPE_UINT64, timer->rtx_base,
-          "delay", G_TYPE_UINT, GST_TIME_AS_MSECONDS (timer->rtx_retry),
-          "frequency", G_TYPE_UINT, priv->rtx_retry_timeout,
-          "period", G_TYPE_UINT, priv->rtx_retry_period,
-          "deadline", G_TYPE_UINT, priv->latency_ms,
-          "packet-spacing", G_TYPE_UINT64, priv->packet_spacing, NULL));
+          "delay", G_TYPE_UINT,
+          GST_TIME_AS_MSECONDS (timer->rtx_delay + timer->rtx_retry),
+          "frequency", G_TYPE_UINT, priv->rtx_retry_timeout, "period",
+          G_TYPE_UINT, priv->rtx_retry_period, "deadline", G_TYPE_UINT,
+          priv->latency_ms, "packet-spacing", G_TYPE_UINT64,
+          priv->packet_spacing, NULL));
 
   JBUF_UNLOCK (priv);
   gst_pad_push_event (priv->sinkpad, event);
@@ -2323,15 +2439,17 @@ do_expected_timeout (GstRtpJitterBuffer * jitterbuffer, TimerData * timer,
 
   /* calculate the timeout for the next retransmission attempt */
   timer->rtx_retry += (priv->rtx_retry_timeout * GST_MSECOND);
-  if (timer->rtx_retry > (priv->rtx_retry_period * GST_MSECOND)) {
+  if (timer->rtx_retry + timer->rtx_delay >
+      (priv->rtx_retry_period * GST_MSECOND)) {
     GST_DEBUG_OBJECT (jitterbuffer, "reschedule as LOST timer");
     /* too many retransmission request, we now convert the timer
      * to a lost timer */
     timer->type = TIMER_TYPE_LOST;
+    timer->rtx_delay = 0;
     timer->rtx_retry = 0;
   }
   reschedule_timer (jitterbuffer, timer, timer->seqnum,
-      timer->rtx_base + timer->rtx_retry);
+      timer->rtx_base + timer->rtx_retry, timer->rtx_delay, FALSE);
 
   return FALSE;
 }
@@ -2356,10 +2474,13 @@ do_lost_timeout (GstRtpJitterBuffer * jitterbuffer, TimerData * timer,
 
   /* remove timer now */
   remove_timer (jitterbuffer, timer);
-  JBUF_SIGNAL_EVENT (priv);
 
+  /* this releases the lock */
   send_lost_event (jitterbuffer, seqnum, num, timestamp, duration, late);
 
+  /* now we can let the pushing thread try again */
+  JBUF_SIGNAL_EVENT (priv);
+
   return TRUE;
 }
 
@@ -2440,17 +2561,31 @@ wait_next_timeout (GstRtpJitterBuffer * jitterbuffer)
     for (i = 0; i < len; i++) {
       TimerData *test = &g_array_index (priv->timers, TimerData, i);
       GstClockTime test_timeout = get_timeout (jitterbuffer, test);
+      gboolean save_best = FALSE;
 
       GST_DEBUG_OBJECT (jitterbuffer, "%d, %d, %d, %" GST_TIME_FORMAT,
           i, test->type, test->seqnum, GST_TIME_ARGS (test_timeout));
 
-      /* no timestamp, timeout immeditately */
-      if (test_timeout == -1 || test_timeout <= now) {
-        if (do_timeout (jitterbuffer, test, now))
-          len--;
-        i--;
-      } else if (timer == NULL || test_timeout < timer_timeout) {
-        /* find the smallest timeout */
+      /* find the smallest timeout */
+      if (timer == NULL) {
+        save_best = TRUE;
+      } else if (timer_timeout == -1) {
+        /* we already have an immediate timeout, the new timer must be an
+         * immediate timer with smaller seqnum to become the best */
+        if (test_timeout == -1 && test->seqnum < timer->seqnum)
+          save_best = TRUE;
+      } else if (test_timeout == -1) {
+        /* first immediate timer */
+        save_best = TRUE;
+      } else if (test_timeout < timer_timeout) {
+        /* earlier timer */
+        save_best = TRUE;
+      } else if (test_timeout == timer_timeout && test->seqnum < timer->seqnum) {
+        /* same timer, smaller seqnum */
+        save_best = TRUE;
+      }
+      if (save_best) {
+        GST_DEBUG_OBJECT (jitterbuffer, "new best %d", i);
         timer = test;
         timer_timeout = test_timeout;
       }
@@ -2462,6 +2597,14 @@ wait_next_timeout (GstRtpJitterBuffer * jitterbuffer)
       GstClockReturn ret;
       GstClockTimeDiff clock_jitter;
 
+      if (timer_timeout == -1 || timer_timeout <= now) {
+        do_timeout (jitterbuffer, timer, now);
+        /* check here, do_timeout could have released the lock */
+        if (!priv->timer_running)
+          break;
+        continue;
+      }
+
       GST_OBJECT_LOCK (jitterbuffer);
       clock = GST_ELEMENT_CLOCK (jitterbuffer);
       if (!clock) {
@@ -2496,14 +2639,16 @@ wait_next_timeout (GstRtpJitterBuffer * jitterbuffer)
       if (!priv->timer_running)
         break;
 
-      GST_DEBUG_OBJECT (jitterbuffer, "sync done, %d, #%d, %" G_GINT64_FORMAT,
-          ret, priv->timer_seqnum, clock_jitter);
+      if (ret != GST_CLOCK_UNSCHEDULED) {
+        now = timer_timeout + MAX (clock_jitter, 0);
+        GST_DEBUG_OBJECT (jitterbuffer, "sync done, %d, #%d, %" G_GINT64_FORMAT,
+            ret, priv->timer_seqnum, clock_jitter);
+      } else {
+        GST_DEBUG_OBJECT (jitterbuffer, "sync unscheduled");
+      }
       /* and free the entry */
       gst_clock_id_unref (id);
       priv->clock_id = NULL;
-
-      if (ret != GST_CLOCK_UNSCHEDULED)
-        now = timer_timeout + MAX (clock_jitter, 0);
     } else {
       /* no timers, wait for activity */
       GST_DEBUG_OBJECT (jitterbuffer, "waiting");
diff --git a/gst/rtpmanager/gstrtpptdemux.c b/gst/rtpmanager/gstrtpptdemux.c
index dbc0016ab..2c80ae033 100644
--- a/gst/rtpmanager/gstrtpptdemux.c
+++ b/gst/rtpmanager/gstrtpptdemux.c
@@ -24,9 +24,9 @@
  */
 
 /**
- * SECTION:element-gstrtpptdemux
+ * SECTION:element-rtpptdemux
  *
- * gstrtpptdemux acts as a demuxer for RTP packets based on the payload type of
+ * rtpptdemux acts as a demuxer for RTP packets based on the payload type of
  * the packets. Its main purpose is to allow an application to easily receive
  * and decode an RTP stream with multiple payload types.
  * 
@@ -42,7 +42,7 @@
  * <refsect2>
  * <title>Example pipelines</title>
  * |[
- * gst-launch-1.0 udpsrc caps="application/x-rtp" ! gstrtpptdemux ! fakesink
+ * gst-launch-1.0 udpsrc caps="application/x-rtp" ! rtpptdemux ! fakesink
  * ]| Takes an RTP stream and send the RTP packets with the first detected
  * payload type to fakesink, discarding the other payload types.
  * </refsect2>
diff --git a/gst/rtpmanager/gstrtpsession.c b/gst/rtpmanager/gstrtpsession.c
index a445be97e..6ff65ebf7 100644
--- a/gst/rtpmanager/gstrtpsession.c
+++ b/gst/rtpmanager/gstrtpsession.c
@@ -18,10 +18,10 @@
  */
 
 /**
- * SECTION:element-gstrtpsession
- * @see_also: gstrtpjitterbuffer, gstrtpbin, gstrtpptdemux, gstrtpssrcdemux
+ * SECTION:element-rtpsession
+ * @see_also: rtpjitterbuffer, rtpbin, rtpptdemux, rtpssrcdemux
  *
- * The RTP session manager models one participant with a unique SSRC in an RTP
+ * The RTP session manager models participants with unique SSRC in an RTP
  * session. This session can be used to send and receive RTP and RTCP packets.
  * Based on what REQUEST pads are requested from the session manager, specific
  * functionality can be activated.
@@ -40,9 +40,12 @@
  *   <listitem>
  *     <para>Scheduling of RR/SR RTCP packets.</para>
  *   </listitem>
+ *   <listitem>
+ *     <para>Support for multiple sender SSRC.</para>
+ *   </listitem>
  * </itemizedlist>
  *
- * The gstrtpsession will not demux packets based on SSRC or payload type, nor will
+ * The rtpsession will not demux packets based on SSRC or payload type, nor will
  * it correct for packet reordering and jitter. Use #GstRtpsSrcDemux,
  * #GstRtpPtDemux and GstRtpJitterBuffer in addition to #GstRtpSession to
  * perform these tasks. It is usually a good idea to use #GstRtpBin, which
@@ -64,9 +67,8 @@
  * that should be sent to all participants in the session.
  *
  * To use #GstRtpSession as a sender, request a send_rtp_sink pad, which will
- * automatically create a send_rtp_src pad. The session manager will modify the
- * SSRC in the RTP packets to its own SSRC and wil forward the packets on the
- * send_rtp_src pad after updating its internal state.
+ * automatically create a send_rtp_src pad. The session manager will
+ * forward the packets on the send_rtp_src pad after updating its internal state.
  *
  * The session manager needs the clock-rate of the payload types it is handling
  * and will signal the #GstRtpSession::request-pt-map signal when it needs such a
@@ -76,13 +78,13 @@
  * <refsect2>
  * <title>Example pipelines</title>
  * |[
- * gst-launch-1.0 udpsrc port=5000 caps="application/x-rtp, ..." ! .recv_rtp_sink gstrtpsession .recv_rtp_src ! rtptheoradepay ! theoradec ! xvimagesink
+ * gst-launch-1.0 udpsrc port=5000 caps="application/x-rtp, ..." ! .recv_rtp_sink rtpsession .recv_rtp_src ! rtptheoradepay ! theoradec ! xvimagesink
  * ]| Receive theora RTP packets from port 5000 and send them to the depayloader,
  * decoder and display. Note that the application/x-rtp caps on udpsrc should be
  * configured based on some negotiation process such as RTSP for this pipeline
  * to work correctly.
  * |[
- * gst-launch-1.0 udpsrc port=5000 caps="application/x-rtp, ..." ! .recv_rtp_sink gstrtpsession name=session \
+ * gst-launch-1.0 udpsrc port=5000 caps="application/x-rtp, ..." ! .recv_rtp_sink rtpsession name=session \
  *        .recv_rtp_src ! rtptheoradepay ! theoradec ! xvimagesink \
  *     udpsrc port=5001 caps="application/x-rtcp" ! session.recv_rtcp_sink
  * ]| Receive theora RTP packets from port 5000 and send them to the depayloader,
@@ -92,11 +94,11 @@
  * configured based on some negotiation process such as RTSP for this pipeline
  * to work correctly.
  * |[
- * gst-launch-1.0 videotestsrc ! theoraenc ! rtptheorapay ! .send_rtp_sink gstrtpsession .send_rtp_src ! udpsink port=5000
+ * gst-launch-1.0 videotestsrc ! theoraenc ! rtptheorapay ! .send_rtp_sink rtpsession .send_rtp_src ! udpsink port=5000
  * ]| Send theora RTP packets through the session manager and out on UDP port
  * 5000.
  * |[
- * gst-launch-1.0 videotestsrc ! theoraenc ! rtptheorapay ! .send_rtp_sink gstrtpsession name=session .send_rtp_src \
+ * gst-launch-1.0 videotestsrc ! theoraenc ! rtptheorapay ! .send_rtp_sink rtpsession name=session .send_rtp_src \
  *     ! udpsink port=5000  session.send_rtcp_src ! udpsink port=5001
  * ]| Send theora RTP packets through the session manager and out on UDP port
  * 5000. Send RTCP packets on port 5001. Note that this pipeline will not preroll
@@ -2269,13 +2271,13 @@ gst_rtp_session_request_new_pad (GstElement * element,
 wrong_template:
   {
     GST_RTP_SESSION_UNLOCK (rtpsession);
-    g_warning ("gstrtpsession: this is not our template");
+    g_warning ("rtpsession: this is not our template");
     return NULL;
   }
 exists:
   {
     GST_RTP_SESSION_UNLOCK (rtpsession);
-    g_warning ("gstrtpsession: pad already requested");
+    g_warning ("rtpsession: pad already requested");
     return NULL;
   }
 }
@@ -2313,7 +2315,7 @@ gst_rtp_session_release_pad (GstElement * element, GstPad * pad)
 wrong_pad:
   {
     GST_RTP_SESSION_UNLOCK (rtpsession);
-    g_warning ("gstrtpsession: asked to release an unknown pad");
+    g_warning ("rtpsession: asked to release an unknown pad");
     return;
   }
 }
diff --git a/gst/rtpmanager/gstrtpssrcdemux.c b/gst/rtpmanager/gstrtpssrcdemux.c
index b04d4365e..75730a443 100644
--- a/gst/rtpmanager/gstrtpssrcdemux.c
+++ b/gst/rtpmanager/gstrtpssrcdemux.c
@@ -20,9 +20,9 @@
  */
 
 /**
- * SECTION:element-gstrtpssrcdemux
+ * SECTION:element-rtpssrcdemux
  *
- * gstrtpssrcdemux acts as a demuxer for RTP packets based on the SSRC of the
+ * rtpssrcdemux acts as a demuxer for RTP packets based on the SSRC of the
  * packets. Its main purpose is to allow an application to easily receive and
  * decode an RTP stream with multiple SSRCs.
  * 
@@ -32,7 +32,7 @@
  * <refsect2>
  * <title>Example pipelines</title>
  * |[
- * gst-launch-1.0 udpsrc caps="application/x-rtp" ! gstrtpssrcdemux ! fakesink
+ * gst-launch-1.0 udpsrc caps="application/x-rtp" ! rtpssrcdemux ! fakesink
  * ]| Takes an RTP stream and send the RTP packets with the first detected SSRC
  * to fakesink, discarding the other SSRCs.
  * </refsect2>
diff --git a/gst/rtpmanager/rtpjitterbuffer.c b/gst/rtpmanager/rtpjitterbuffer.c
index 5b1c6f164..332a1f7ab 100644
--- a/gst/rtpmanager/rtpjitterbuffer.c
+++ b/gst/rtpmanager/rtpjitterbuffer.c
@@ -96,7 +96,6 @@ rtp_jitter_buffer_finalize (GObject * object)
 
   jbuf = RTP_JITTER_BUFFER_CAST (object);
 
-  rtp_jitter_buffer_flush (jbuf);
   g_queue_free (jbuf->packets);
 
   G_OBJECT_CLASS (rtp_jitter_buffer_parent_class)->finalize (object);
@@ -166,6 +165,44 @@ rtp_jitter_buffer_set_delay (RTPJitterBuffer * jbuf, GstClockTime delay)
       GST_TIME_ARGS (jbuf->low_level), GST_TIME_ARGS (jbuf->high_level));
 }
 
+/**
+ * rtp_jitter_buffer_set_clock_rate:
+ * @jbuf: an #RTPJitterBuffer
+ *
+ * Set the clock rate in the jitterbuffer.
+ */
+void
+rtp_jitter_buffer_set_clock_rate (RTPJitterBuffer * jbuf, guint32 clock_rate)
+{
+  if (jbuf->clock_rate != clock_rate) {
+    if (jbuf->clock_rate == -1) {
+      GST_DEBUG ("Clock rate changed from %" G_GUINT32_FORMAT " to %"
+          G_GUINT32_FORMAT, jbuf->clock_rate, clock_rate);
+    } else {
+      GST_WARNING ("Clock rate changed from %" G_GUINT32_FORMAT " to %"
+          G_GUINT32_FORMAT, jbuf->clock_rate, clock_rate);
+    }
+    jbuf->base_time = -1;
+    jbuf->base_rtptime = -1;
+    jbuf->clock_rate = clock_rate;
+    jbuf->prev_out_time = -1;
+    jbuf->prev_send_diff = -1;
+  }
+}
+
+/**
+ * rtp_jitter_buffer_get_clock_rate:
+ * @jbuf: an #RTPJitterBuffer
+ *
+ * Get the currently configure clock rate in @jbuf.
+ *
+ * Returns: the current clock-rate
+ */
+guint32
+rtp_jitter_buffer_get_clock_rate (RTPJitterBuffer * jbuf)
+{
+  return jbuf->clock_rate;
+}
 
 /**
  * rtp_jitter_buffer_reset_skew:
@@ -212,29 +249,24 @@ rtp_jitter_buffer_resync (RTPJitterBuffer * jbuf, GstClockTime time,
 static guint64
 get_buffer_level (RTPJitterBuffer * jbuf)
 {
-  GstBuffer *high_buf = NULL, *low_buf = NULL;
+  RTPJitterBufferItem *high_buf = NULL, *low_buf = NULL;
   guint64 level;
-  GList *find;
 
   /* first first buffer with timestamp */
-  find = g_queue_peek_head_link (jbuf->packets);
-  while (find) {
-    high_buf = find->data;
-    if (GST_BUFFER_TIMESTAMP (high_buf) != -1)
+  high_buf = (RTPJitterBufferItem *) g_queue_peek_head_link (jbuf->packets);
+  while (high_buf) {
+    if (high_buf->dts != -1)
       break;
 
-    high_buf = NULL;
-    find = g_list_next (find);
+    high_buf = (RTPJitterBufferItem *) g_list_next (high_buf);
   }
 
-  find = g_queue_peek_tail_link (jbuf->packets);
-  while (find) {
-    low_buf = find->data;
-    if (GST_BUFFER_TIMESTAMP (low_buf) != -1)
+  low_buf = (RTPJitterBufferItem *) g_queue_peek_tail_link (jbuf->packets);
+  while (low_buf) {
+    if (low_buf->dts != -1)
       break;
 
-    low_buf = NULL;
-    find = g_list_previous (find);
+    low_buf = (RTPJitterBufferItem *) g_list_previous (low_buf);
   }
 
   if (!high_buf || !low_buf || high_buf == low_buf) {
@@ -242,8 +274,8 @@ get_buffer_level (RTPJitterBuffer * jbuf)
   } else {
     guint64 high_ts, low_ts;
 
-    high_ts = GST_BUFFER_TIMESTAMP (high_buf);
-    low_ts = GST_BUFFER_TIMESTAMP (low_buf);
+    high_ts = high_buf->dts;
+    low_ts = low_buf->dts;
 
     if (high_ts > low_ts)
       level = high_ts - low_ts;
@@ -360,8 +392,7 @@ update_buffer_level (RTPJitterBuffer * jbuf, gint * percent)
  * Returns: @time adjusted with the clock skew.
  */
 static GstClockTime
-calculate_skew (RTPJitterBuffer * jbuf, guint32 rtptime, GstClockTime time,
-    guint32 clock_rate)
+calculate_skew (RTPJitterBuffer * jbuf, guint32 rtptime, GstClockTime time)
 {
   guint64 ext_rtptime;
   guint64 send_diff, recv_diff;
@@ -376,26 +407,12 @@ calculate_skew (RTPJitterBuffer * jbuf, guint32 rtptime, GstClockTime time,
   if (jbuf->last_rtptime != -1 && ext_rtptime == jbuf->last_rtptime)
     return jbuf->prev_out_time;
 
-  gstrtptime = gst_util_uint64_scale_int (ext_rtptime, GST_SECOND, clock_rate);
+  gstrtptime =
+      gst_util_uint64_scale_int (ext_rtptime, GST_SECOND, jbuf->clock_rate);
 
   /* keep track of the last extended rtptime */
   jbuf->last_rtptime = ext_rtptime;
 
-  if (jbuf->clock_rate != clock_rate) {
-    if (jbuf->clock_rate == -1) {
-      GST_DEBUG ("Clock rate changed from %" G_GUINT32_FORMAT " to %"
-          G_GUINT32_FORMAT, jbuf->clock_rate, clock_rate);
-    } else {
-      GST_WARNING ("Clock rate changed from %" G_GUINT32_FORMAT " to %"
-          G_GUINT32_FORMAT, jbuf->clock_rate, clock_rate);
-    }
-    jbuf->base_time = -1;
-    jbuf->base_rtptime = -1;
-    jbuf->clock_rate = clock_rate;
-    jbuf->prev_out_time = -1;
-    jbuf->prev_send_diff = -1;
-  }
-
   /* first time, lock on to time and gstrtptime */
   if (G_UNLIKELY (jbuf->base_time == -1)) {
     jbuf->base_time = time;
@@ -588,47 +605,70 @@ no_skew:
   return out_time;
 }
 
+static void
+queue_do_insert (RTPJitterBuffer * jbuf, GList * list, GList * item)
+{
+  GQueue *queue = jbuf->packets;
+
+  /* It's more likely that the packet was inserted in the front of the buffer */
+  if (G_LIKELY (list)) {
+    item->prev = list->prev;
+    item->next = list;
+    list->prev = item;
+    if (item->prev) {
+      item->prev->next = item;
+    } else {
+      queue->head = item;
+    }
+  } else {
+    queue->tail = g_list_concat (queue->tail, item);
+    if (queue->tail->next)
+      queue->tail = queue->tail->next;
+    else
+      queue->head = queue->tail;
+  }
+  queue->length++;
+}
+
 /**
  * rtp_jitter_buffer_insert:
  * @jbuf: an #RTPJitterBuffer
- * @buf: a buffer
- * @time: a running_time when this buffer was received in nanoseconds
- * @clock_rate: the clock-rate of the payload of @buf
- * @max_delay: the maximum lateness of @buf
+ * @item: an #RTPJitterBufferItem to insert
  * @tail: TRUE when the tail element changed.
+ * @percent: the buffering percent after insertion
  *
- * Inserts @buf into the packet queue of @jbuf. The sequence number of the
+ * Inserts @item into the packet queue of @jbuf. The sequence number of the
  * packet will be used to sort the packets. This function takes ownerhip of
  * @buf when the function returns %TRUE.
- * @buf should have writable metadata when calling this function.
  *
  * Returns: %FALSE if a packet with the same number already existed.
  */
 gboolean
-rtp_jitter_buffer_insert (RTPJitterBuffer * jbuf, GstBuffer * buf,
-    GstClockTime time, guint32 clock_rate, gboolean * tail, gint * percent)
+rtp_jitter_buffer_insert (RTPJitterBuffer * jbuf, RTPJitterBufferItem * item,
+    gboolean * tail, gint * percent)
 {
-  GList *list;
+  GList *list = NULL;
   guint32 rtptime;
   guint16 seqnum;
-  GstRTPBuffer rtp = { NULL };
+  GstClockTime dts;
 
   g_return_val_if_fail (jbuf != NULL, FALSE);
-  g_return_val_if_fail (buf != NULL, FALSE);
-
-  gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
+  g_return_val_if_fail (item != NULL, FALSE);
 
-  seqnum = gst_rtp_buffer_get_seq (&rtp);
+  seqnum = item->seqnum;
+  /* no seqnum, simply append then */
+  if (seqnum == -1)
+    goto append;
 
   /* loop the list to skip strictly smaller seqnum buffers */
   for (list = jbuf->packets->head; list; list = g_list_next (list)) {
     guint16 qseq;
     gint gap;
-    GstRTPBuffer rtpb = { NULL };
+    RTPJitterBufferItem *qitem = (RTPJitterBufferItem *) list;
 
-    gst_rtp_buffer_map (GST_BUFFER_CAST (list->data), GST_MAP_READ, &rtpb);
-    qseq = gst_rtp_buffer_get_seq (&rtpb);
-    gst_rtp_buffer_unmap (&rtpb);
+    qseq = qitem->seqnum;
+    if (qseq == -1)
+      continue;
 
     /* compare the new seqnum to the one in the buffer */
     gap = gst_rtp_buffer_compare_seqnum (seqnum, qseq);
@@ -642,20 +682,22 @@ rtp_jitter_buffer_insert (RTPJitterBuffer * jbuf, GstBuffer * buf,
       break;
   }
 
-  rtptime = gst_rtp_buffer_get_timestamp (&rtp);
+  dts = item->dts;
+  rtptime = item->rtptime;
+
   /* rtp time jumps are checked for during skew calculation, but bypassed
    * in other mode, so mind those here and reset jb if needed.
    * Only reset if valid input time, which is likely for UDP input
    * where we expect this might happen due to async thread effects
    * (in seek and state change cycles), but not so much for TCP input */
-  if (GST_CLOCK_TIME_IS_VALID (time) &&
+  if (GST_CLOCK_TIME_IS_VALID (dts) &&
       jbuf->mode != RTP_JITTER_BUFFER_MODE_SLAVE &&
       jbuf->base_time != -1 && jbuf->last_rtptime != -1) {
     GstClockTime ext_rtptime = jbuf->ext_rtptime;
 
     ext_rtptime = gst_rtp_buffer_ext_timestamp (&ext_rtptime, rtptime);
-    if (ext_rtptime > jbuf->last_rtptime + 3 * clock_rate ||
-        ext_rtptime + 3 * clock_rate < jbuf->last_rtptime) {
+    if (ext_rtptime > jbuf->last_rtptime + 3 * jbuf->clock_rate ||
+        ext_rtptime + 3 * jbuf->clock_rate < jbuf->last_rtptime) {
       /* reset even if we don't have valid incoming time;
        * still better than producing possibly very bogus output timestamp */
       GST_WARNING ("rtp delta too big, reset skew");
@@ -671,25 +713,20 @@ rtp_jitter_buffer_insert (RTPJitterBuffer * jbuf, GstBuffer * buf,
        * mode we will adjust the outgoing timestamps according to the amount of
        * time we spent buffering. */
       if (jbuf->base_time == -1)
-        time = 0;
+        dts = 0;
       else
-        time = -1;
+        dts = -1;
       break;
     case RTP_JITTER_BUFFER_MODE_SLAVE:
     default:
       break;
   }
   /* do skew calculation by measuring the difference between rtptime and the
-   * receive time, this function will retimestamp @buf with the skew corrected
-   * running time. */
-  time = calculate_skew (jbuf, rtptime, time, clock_rate);
-  GST_BUFFER_PTS (buf) = time;
+   * receive dts, this function will return the skew corrected rtptime. */
+  item->pts = calculate_skew (jbuf, rtptime, dts);
 
-  /* It's more likely that the packet was inserted in the front of the buffer */
-  if (G_LIKELY (list))
-    g_queue_insert_before (jbuf->packets, list, buf);
-  else
-    g_queue_push_tail (jbuf->packets, buf);
+append:
+  queue_do_insert (jbuf, list, (GList *) item);
 
   /* buffering mode, update buffer stats */
   if (jbuf->mode == RTP_JITTER_BUFFER_MODE_BUFFER)
@@ -702,14 +739,11 @@ rtp_jitter_buffer_insert (RTPJitterBuffer * jbuf, GstBuffer * buf,
   if (G_LIKELY (tail))
     *tail = (list == NULL);
 
-  gst_rtp_buffer_unmap (&rtp);
-
   return TRUE;
 
   /* ERRORS */
 duplicate:
   {
-    gst_rtp_buffer_unmap (&rtp);
     GST_WARNING ("duplicate packet %d found", (gint) seqnum);
     return FALSE;
   }
@@ -726,14 +760,25 @@ duplicate:
  *
  * Returns: a #GstBuffer or %NULL when there was no packet in the queue.
  */
-GstBuffer *
+RTPJitterBufferItem *
 rtp_jitter_buffer_pop (RTPJitterBuffer * jbuf, gint * percent)
 {
-  GstBuffer *buf;
+  GList *item = NULL;
+  GQueue *queue;
 
   g_return_val_if_fail (jbuf != NULL, NULL);
 
-  buf = g_queue_pop_tail (jbuf->packets);
+  queue = jbuf->packets;
+
+  item = queue->tail;
+  if (item) {
+    queue->tail = item->prev;
+    if (queue->tail)
+      queue->tail->next = NULL;
+    else
+      queue->head = NULL;
+    queue->length--;
+  }
 
   /* buffering mode, update buffer stats */
   if (jbuf->mode == RTP_JITTER_BUFFER_MODE_BUFFER)
@@ -741,7 +786,7 @@ rtp_jitter_buffer_pop (RTPJitterBuffer * jbuf, gint * percent)
   else if (percent)
     *percent = -1;
 
-  return buf;
+  return (RTPJitterBufferItem *) item;
 }
 
 /**
@@ -754,33 +799,33 @@ rtp_jitter_buffer_pop (RTPJitterBuffer * jbuf, gint * percent)
  *
  * Returns: a #GstBuffer or %NULL when there was no packet in the queue.
  */
-GstBuffer *
+RTPJitterBufferItem *
 rtp_jitter_buffer_peek (RTPJitterBuffer * jbuf)
 {
-  GstBuffer *buf;
-
   g_return_val_if_fail (jbuf != NULL, NULL);
 
-  buf = g_queue_peek_tail (jbuf->packets);
-
-  return buf;
+  return (RTPJitterBufferItem *) jbuf->packets->tail;
 }
 
 /**
  * rtp_jitter_buffer_flush:
  * @jbuf: an #RTPJitterBuffer
+ * @free_func: function to free each item
+ * @user_data: user data passed to @free_func
  *
  * Flush all packets from the jitterbuffer.
  */
 void
-rtp_jitter_buffer_flush (RTPJitterBuffer * jbuf)
+rtp_jitter_buffer_flush (RTPJitterBuffer * jbuf, GFunc free_func,
+    gpointer user_data)
 {
-  GstBuffer *buffer;
+  GList *item;
 
   g_return_if_fail (jbuf != NULL);
+  g_return_if_fail (free_func != NULL);
 
-  while ((buffer = g_queue_pop_head (jbuf->packets)))
-    gst_buffer_unref (buffer);
+  while ((item = g_queue_pop_head_link (jbuf->packets)))
+    free_func ((RTPJitterBufferItem *) item, user_data);
 }
 
 /**
diff --git a/gst/rtpmanager/rtpjitterbuffer.h b/gst/rtpmanager/rtpjitterbuffer.h
index 6a0f3d0ce..49817bf75 100644
--- a/gst/rtpmanager/rtpjitterbuffer.h
+++ b/gst/rtpmanager/rtpjitterbuffer.h
@@ -25,6 +25,7 @@
 
 typedef struct _RTPJitterBuffer RTPJitterBuffer;
 typedef struct _RTPJitterBufferClass RTPJitterBufferClass;
+typedef struct _RTPJitterBufferItem RTPJitterBufferItem;
 
 #define RTP_TYPE_JITTER_BUFFER             (rtp_jitter_buffer_get_type())
 #define RTP_JITTER_BUFFER(src)             (G_TYPE_CHECK_INSTANCE_CAST((src),RTP_TYPE_JITTER_BUFFER,RTPJitterBuffer))
@@ -99,6 +100,30 @@ struct _RTPJitterBufferClass {
   GObjectClass   parent_class;
 };
 
+/**
+ * RTPJitterBufferItem:
+ * @data: the data of the item
+ * @next: pointer to next item
+ * @prev: pointer to previous item
+ * @type: the type of @data
+ * @dts: input DTS
+ * @pts: output PTS
+ * @seqnum: seqnum
+ * @rtptime: rtp timestamp
+ *
+ * An object containing an RTP packet or event.
+ */
+struct _RTPJitterBufferItem {
+  gpointer data;
+  GList *next;
+  GList *prev;
+  guint type;
+  GstClockTime dts;
+  GstClockTime pts;
+  guint seqnum;
+  guint rtptime;
+};
+
 GType rtp_jitter_buffer_get_type (void);
 
 /* managing lifetime */
@@ -110,16 +135,19 @@ void                  rtp_jitter_buffer_set_mode         (RTPJitterBuffer *jbuf,
 GstClockTime          rtp_jitter_buffer_get_delay        (RTPJitterBuffer *jbuf);
 void                  rtp_jitter_buffer_set_delay        (RTPJitterBuffer *jbuf, GstClockTime delay);
 
+void                  rtp_jitter_buffer_set_clock_rate   (RTPJitterBuffer *jbuf, guint32 clock_rate);
+guint32               rtp_jitter_buffer_get_clock_rate   (RTPJitterBuffer *jbuf);
+
 void                  rtp_jitter_buffer_reset_skew       (RTPJitterBuffer *jbuf);
 
-gboolean              rtp_jitter_buffer_insert           (RTPJitterBuffer *jbuf, GstBuffer *buf,
-                                                          GstClockTime time,
-                                                          guint32 clock_rate,
+gboolean              rtp_jitter_buffer_insert           (RTPJitterBuffer *jbuf,
+                                                          RTPJitterBufferItem *item,
                                                           gboolean *tail, gint *percent);
-GstBuffer *           rtp_jitter_buffer_peek             (RTPJitterBuffer *jbuf);
-GstBuffer *           rtp_jitter_buffer_pop              (RTPJitterBuffer *jbuf, gint *percent);
+RTPJitterBufferItem * rtp_jitter_buffer_peek             (RTPJitterBuffer *jbuf);
+RTPJitterBufferItem * rtp_jitter_buffer_pop              (RTPJitterBuffer *jbuf, gint *percent);
 
-void                  rtp_jitter_buffer_flush            (RTPJitterBuffer *jbuf);
+void                  rtp_jitter_buffer_flush            (RTPJitterBuffer *jbuf,
+                                                          GFunc free_func, gpointer user_data);
 
 gboolean              rtp_jitter_buffer_is_buffering     (RTPJitterBuffer * jbuf);
 void                  rtp_jitter_buffer_set_buffering    (RTPJitterBuffer * jbuf, gboolean buffering);
diff --git a/gst/videomixer/videomixerorc-dist.c b/gst/videomixer/videomixerorc-dist.c
index 9106640f5..ee4ba19a1 100644
--- a/gst/videomixer/videomixerorc-dist.c
+++ b/gst/videomixer/videomixerorc-dist.c
@@ -1890,7 +1890,7 @@ video_mixer_orc_overlay_argb (guint8 * ORC_RESTRICT d1, int d1_stride,
       static const orc_uint8 bc[] = {
         1, 7, 9, 28, 118, 105, 100, 101, 111, 95, 109, 105, 120, 101, 114, 95,
         111, 114, 99, 95, 111, 118, 101, 114, 108, 97, 121, 95, 97, 114, 103,
-        98,
+            98,
         11, 4, 4, 12, 4, 4, 14, 4, 255, 255, 255, 255, 14, 4, 255, 0,
         0, 0, 14, 4, 0, 255, 255, 255, 14, 4, 8, 0, 0, 0, 16, 2,
         20, 4, 20, 2, 20, 1, 20, 8, 20, 8, 20, 8, 20, 4, 20, 8,
@@ -2456,7 +2456,7 @@ video_mixer_orc_overlay_bgra (guint8 * ORC_RESTRICT d1, int d1_stride,
       static const orc_uint8 bc[] = {
         1, 7, 9, 28, 118, 105, 100, 101, 111, 95, 109, 105, 120, 101, 114, 95,
         111, 114, 99, 95, 111, 118, 101, 114, 108, 97, 121, 95, 98, 103, 114,
-        97,
+            97,
         11, 4, 4, 12, 4, 4, 14, 4, 255, 255, 255, 255, 14, 4, 0, 0,
         0, 255, 14, 4, 255, 255, 255, 0, 14, 4, 24, 0, 0, 0, 14, 4,
         8, 0, 0, 0, 16, 2, 20, 4, 20, 4, 20, 2, 20, 1, 20, 8,
@@ -2665,7 +2665,7 @@ videomixer_video_convert_orc_memcpy_2d (guint8 * ORC_RESTRICT d1, int d1_stride,
       static const orc_uint8 bc[] = {
         1, 7, 9, 38, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
         105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114,
-        99,
+            99,
         95, 109, 101, 109, 99, 112, 121, 95, 50, 100, 11, 1, 1, 12, 1, 1,
         42, 0, 4, 2, 0,
       };
@@ -2887,9 +2887,9 @@ videomixer_video_convert_orc_convert_I420_UYVY (guint8 * ORC_RESTRICT d1,
 #if 1
       static const orc_uint8 bc[] = {
         1, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
-        105,
+            105,
         100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99,
-        95,
+            95,
         99, 111, 110, 118, 101, 114, 116, 95, 73, 52, 50, 48, 95, 85, 89, 86,
         89, 11, 4, 4, 11, 4, 4, 12, 2, 2, 12, 2, 2, 12, 1, 1,
         12, 1, 1, 20, 2, 196, 32, 6, 7, 21, 1, 196, 0, 32, 4, 21,
@@ -3123,9 +3123,9 @@ videomixer_video_convert_orc_convert_I420_YUY2 (guint8 * ORC_RESTRICT d1,
 #if 1
       static const orc_uint8 bc[] = {
         1, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
-        105,
+            105,
         100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99,
-        95,
+            95,
         99, 111, 110, 118, 101, 114, 116, 95, 73, 52, 50, 48, 95, 89, 85, 89,
         50, 11, 4, 4, 11, 4, 4, 12, 2, 2, 12, 2, 2, 12, 1, 1,
         12, 1, 1, 20, 2, 196, 32, 6, 7, 21, 1, 196, 0, 4, 32, 21,
@@ -3395,9 +3395,9 @@ videomixer_video_convert_orc_convert_I420_AYUV (guint8 * ORC_RESTRICT d1,
 #if 1
       static const orc_uint8 bc[] = {
         1, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
-        105,
+            105,
         100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99,
-        95,
+            95,
         99, 111, 110, 118, 101, 114, 116, 95, 73, 52, 50, 48, 95, 65, 89, 85,
         86, 11, 4, 4, 11, 4, 4, 12, 1, 1, 12, 1, 1, 12, 1, 1,
         12, 1, 1, 14, 1, 255, 0, 0, 0, 20, 2, 20, 2, 20, 1, 20,
@@ -3654,9 +3654,9 @@ videomixer_video_convert_orc_convert_YUY2_I420 (guint8 * ORC_RESTRICT d1,
 #if 1
       static const orc_uint8 bc[] = {
         1, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
-        105,
+            105,
         100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99,
-        95,
+            95,
         99, 111, 110, 118, 101, 114, 116, 95, 89, 85, 89, 50, 95, 73, 52, 50,
         48, 11, 2, 2, 11, 2, 2, 11, 1, 1, 11, 1, 1, 12, 4, 4,
         12, 4, 4, 20, 2, 20, 2, 20, 2, 21, 1, 199, 32, 34, 4, 97,
@@ -3801,7 +3801,7 @@ videomixer_video_convert_orc_convert_UYVY_YUY2 (guint8 * ORC_RESTRICT d1,
       static const orc_uint8 bc[] = {
         1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
         105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114,
-        99,
+            99,
         95, 99, 111, 110, 118, 101, 114, 116, 95, 85, 89, 86, 89, 95, 89, 85,
         89, 50, 11, 4, 4, 12, 4, 4, 21, 1, 183, 0, 4, 2, 0,
       };
@@ -3946,7 +3946,7 @@ videomixer_video_convert_orc_planar_chroma_420_422 (guint8 * ORC_RESTRICT d1,
       static const orc_uint8 bc[] = {
         1, 7, 9, 50, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
         105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114,
-        99,
+            99,
         95, 112, 108, 97, 110, 97, 114, 95, 99, 104, 114, 111, 109, 97, 95, 52,
         50, 48, 95, 52, 50, 50, 11, 1, 1, 11, 1, 1, 12, 1, 1, 42,
         0, 4, 42, 1, 4, 2, 0,
@@ -4085,7 +4085,7 @@ videomixer_video_convert_orc_planar_chroma_420_444 (guint8 * ORC_RESTRICT d1,
       static const orc_uint8 bc[] = {
         1, 7, 9, 50, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
         105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114,
-        99,
+            99,
         95, 112, 108, 97, 110, 97, 114, 95, 99, 104, 114, 111, 109, 97, 95, 52,
         50, 48, 95, 52, 52, 52, 11, 2, 2, 11, 2, 2, 12, 1, 1, 20,
         2, 151, 32, 4, 97, 0, 32, 97, 1, 32, 2, 0,
@@ -4217,7 +4217,7 @@ videomixer_video_convert_orc_planar_chroma_422_444 (guint8 * ORC_RESTRICT d1,
       static const orc_uint8 bc[] = {
         1, 7, 9, 50, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
         105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114,
-        99,
+            99,
         95, 112, 108, 97, 110, 97, 114, 95, 99, 104, 114, 111, 109, 97, 95, 52,
         50, 50, 95, 52, 52, 52, 11, 2, 2, 12, 1, 1, 20, 2, 151, 32,
         4, 97, 0, 32, 2, 0,
@@ -4362,7 +4362,7 @@ videomixer_video_convert_orc_planar_chroma_444_422 (guint8 * ORC_RESTRICT d1,
       static const orc_uint8 bc[] = {
         1, 7, 9, 50, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
         105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114,
-        99,
+            99,
         95, 112, 108, 97, 110, 97, 114, 95, 99, 104, 114, 111, 109, 97, 95, 52,
         52, 52, 95, 52, 50, 50, 11, 1, 1, 12, 2, 2, 20, 1, 20, 1,
         199, 32, 33, 4, 39, 0, 32, 33, 2, 0,
@@ -4532,7 +4532,7 @@ videomixer_video_convert_orc_planar_chroma_444_420 (guint8 * ORC_RESTRICT d1,
       static const orc_uint8 bc[] = {
         1, 7, 9, 50, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
         105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114,
-        99,
+            99,
         95, 112, 108, 97, 110, 97, 114, 95, 99, 104, 114, 111, 109, 97, 95, 52,
         52, 52, 95, 52, 50, 48, 11, 1, 1, 12, 2, 2, 12, 2, 2, 20,
         2, 20, 1, 20, 1, 21, 1, 39, 32, 4, 5, 199, 33, 34, 32, 39,
@@ -4679,7 +4679,7 @@ videomixer_video_convert_orc_planar_chroma_422_420 (guint8 * ORC_RESTRICT d1,
       static const orc_uint8 bc[] = {
         1, 7, 9, 50, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
         105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114,
-        99,
+            99,
         95, 112, 108, 97, 110, 97, 114, 95, 99, 104, 114, 111, 109, 97, 95, 52,
         50, 50, 95, 52, 50, 48, 11, 1, 1, 12, 1, 1, 12, 1, 1, 39,
         0, 4, 5, 2, 0,
@@ -4918,7 +4918,7 @@ videomixer_video_convert_orc_convert_YUY2_AYUV (guint8 * ORC_RESTRICT d1,
       static const orc_uint8 bc[] = {
         1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
         105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114,
-        99,
+            99,
         95, 99, 111, 110, 118, 101, 114, 116, 95, 89, 85, 89, 50, 95, 65, 89,
         85, 86, 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,
@@ -5166,7 +5166,7 @@ videomixer_video_convert_orc_convert_UYVY_AYUV (guint8 * ORC_RESTRICT d1,
       static const orc_uint8 bc[] = {
         1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
         105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114,
-        99,
+            99,
         95, 99, 111, 110, 118, 101, 114, 116, 95, 85, 89, 86, 89, 95, 65, 89,
         85, 86, 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,
@@ -5364,7 +5364,7 @@ videomixer_video_convert_orc_convert_YUY2_Y42B (guint8 * ORC_RESTRICT d1,
       static const orc_uint8 bc[] = {
         1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
         105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114,
-        99,
+            99,
         95, 99, 111, 110, 118, 101, 114, 116, 95, 89, 85, 89, 50, 95, 89, 52,
         50, 66, 11, 2, 2, 11, 1, 1, 11, 1, 1, 12, 4, 4, 20, 2,
         21, 1, 199, 32, 0, 4, 199, 2, 1, 32, 2, 0,
@@ -5559,7 +5559,7 @@ videomixer_video_convert_orc_convert_UYVY_Y42B (guint8 * ORC_RESTRICT d1,
       static const orc_uint8 bc[] = {
         1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
         105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114,
-        99,
+            99,
         95, 99, 111, 110, 118, 101, 114, 116, 95, 85, 89, 86, 89, 95, 89, 52,
         50, 66, 11, 2, 2, 11, 1, 1, 11, 1, 1, 12, 4, 4, 20, 2,
         21, 1, 199, 0, 32, 4, 199, 2, 1, 32, 2, 0,
@@ -5766,7 +5766,7 @@ videomixer_video_convert_orc_convert_YUY2_Y444 (guint8 * ORC_RESTRICT d1,
       static const orc_uint8 bc[] = {
         1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
         105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114,
-        99,
+            99,
         95, 99, 111, 110, 118, 101, 114, 116, 95, 89, 85, 89, 50, 95, 89, 52,
         52, 52, 11, 2, 2, 11, 2, 2, 11, 2, 2, 12, 4, 4, 20, 2,
         20, 1, 20, 1, 21, 1, 199, 32, 0, 4, 199, 34, 33, 32, 151, 1,
@@ -5980,7 +5980,7 @@ videomixer_video_convert_orc_convert_UYVY_Y444 (guint8 * ORC_RESTRICT d1,
       static const orc_uint8 bc[] = {
         1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
         105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114,
-        99,
+            99,
         95, 99, 111, 110, 118, 101, 114, 116, 95, 85, 89, 86, 89, 95, 89, 52,
         52, 52, 11, 2, 2, 11, 2, 2, 11, 2, 2, 12, 4, 4, 20, 2,
         20, 1, 20, 1, 21, 1, 199, 0, 32, 4, 199, 34, 33, 32, 151, 1,
@@ -6230,9 +6230,9 @@ videomixer_video_convert_orc_convert_UYVY_I420 (guint8 * ORC_RESTRICT d1,
 #if 1
       static const orc_uint8 bc[] = {
         1, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
-        105,
+            105,
         100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99,
-        95,
+            95,
         99, 111, 110, 118, 101, 114, 116, 95, 85, 89, 86, 89, 95, 73, 52, 50,
         48, 11, 2, 2, 11, 2, 2, 11, 1, 1, 11, 1, 1, 12, 4, 4,
         12, 4, 4, 20, 2, 20, 2, 20, 2, 21, 1, 199, 34, 32, 4, 97,
@@ -6615,7 +6615,7 @@ videomixer_video_convert_orc_convert_AYUV_I420 (guint8 * ORC_RESTRICT d1,
       static const orc_uint8 bc[] = {
         1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
         105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114,
-        99,
+            99,
         95, 99, 111, 110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 73, 52,
         50, 48, 11, 2, 2, 11, 2, 2, 11, 1, 1, 11, 1, 1, 12, 8,
         8, 12, 8, 8, 20, 4, 20, 4, 20, 4, 20, 4, 20, 2, 20, 2,
@@ -6887,7 +6887,7 @@ videomixer_video_convert_orc_convert_AYUV_YUY2 (guint8 * ORC_RESTRICT d1,
       static const orc_uint8 bc[] = {
         1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
         105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114,
-        99,
+            99,
         95, 99, 111, 110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 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,
@@ -7131,7 +7131,7 @@ videomixer_video_convert_orc_convert_AYUV_UYVY (guint8 * ORC_RESTRICT d1,
       static const orc_uint8 bc[] = {
         1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
         105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114,
-        99,
+            99,
         95, 99, 111, 110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 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,
@@ -7385,7 +7385,7 @@ videomixer_video_convert_orc_convert_AYUV_Y42B (guint8 * ORC_RESTRICT d1,
       static const orc_uint8 bc[] = {
         1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
         105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114,
-        99,
+            99,
         95, 99, 111, 110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 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,
@@ -7593,7 +7593,7 @@ videomixer_video_convert_orc_convert_AYUV_Y444 (guint8 * ORC_RESTRICT d1,
       static const orc_uint8 bc[] = {
         1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
         105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114,
-        99,
+            99,
         95, 99, 111, 110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 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,
@@ -7791,7 +7791,7 @@ videomixer_video_convert_orc_convert_Y42B_YUY2 (guint8 * ORC_RESTRICT d1,
       static const orc_uint8 bc[] = {
         1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
         105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114,
-        99,
+            99,
         95, 99, 111, 110, 118, 101, 114, 116, 95, 89, 52, 50, 66, 95, 89, 85,
         89, 50, 11, 4, 4, 12, 2, 2, 12, 1, 1, 12, 1, 1, 20, 2,
         196, 32, 5, 6, 21, 1, 196, 0, 4, 32, 2, 0,
@@ -7986,7 +7986,7 @@ videomixer_video_convert_orc_convert_Y42B_UYVY (guint8 * ORC_RESTRICT d1,
       static const orc_uint8 bc[] = {
         1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
         105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114,
-        99,
+            99,
         95, 99, 111, 110, 118, 101, 114, 116, 95, 89, 52, 50, 66, 95, 85, 89,
         86, 89, 11, 4, 4, 12, 2, 2, 12, 1, 1, 12, 1, 1, 20, 2,
         196, 32, 5, 6, 21, 1, 196, 0, 32, 4, 2, 0,
@@ -8241,7 +8241,7 @@ videomixer_video_convert_orc_convert_Y42B_AYUV (guint8 * ORC_RESTRICT d1,
       static const orc_uint8 bc[] = {
         1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
         105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114,
-        99,
+            99,
         95, 99, 111, 110, 118, 101, 114, 116, 95, 89, 52, 50, 66, 95, 65, 89,
         85, 86, 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,
@@ -8488,7 +8488,7 @@ videomixer_video_convert_orc_convert_Y444_YUY2 (guint8 * ORC_RESTRICT d1,
       static const orc_uint8 bc[] = {
         1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
         105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114,
-        99,
+            99,
         95, 99, 111, 110, 118, 101, 114, 116, 95, 89, 52, 52, 52, 95, 89, 85,
         89, 50, 11, 4, 4, 12, 2, 2, 12, 2, 2, 12, 2, 2, 20, 2,
         20, 4, 20, 2, 20, 2, 21, 1, 196, 33, 5, 6, 198, 34, 35, 33,
@@ -8733,7 +8733,7 @@ videomixer_video_convert_orc_convert_Y444_UYVY (guint8 * ORC_RESTRICT d1,
       static const orc_uint8 bc[] = {
         1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
         105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114,
-        99,
+            99,
         95, 99, 111, 110, 118, 101, 114, 116, 95, 89, 52, 52, 52, 95, 85, 89,
         86, 89, 11, 4, 4, 12, 2, 2, 12, 2, 2, 12, 2, 2, 20, 2,
         20, 4, 20, 2, 20, 2, 21, 1, 196, 33, 5, 6, 198, 34, 35, 33,
@@ -8954,7 +8954,7 @@ videomixer_video_convert_orc_convert_Y444_AYUV (guint8 * ORC_RESTRICT d1,
       static const orc_uint8 bc[] = {
         1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
         105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114,
-        99,
+            99,
         95, 99, 111, 110, 118, 101, 114, 116, 95, 89, 52, 52, 52, 95, 65, 89,
         85, 86, 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,
@@ -9478,7 +9478,7 @@ videomixer_video_convert_orc_convert_AYUV_ARGB (guint8 * ORC_RESTRICT d1,
       static const orc_uint8 bc[] = {
         1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
         105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114,
-        99,
+            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,
@@ -10089,7 +10089,7 @@ videomixer_video_convert_orc_convert_AYUV_BGRA (guint8 * ORC_RESTRICT d1,
       static const orc_uint8 bc[] = {
         1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
         105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114,
-        99,
+            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,
@@ -10700,7 +10700,7 @@ videomixer_video_convert_orc_convert_AYUV_ABGR (guint8 * ORC_RESTRICT d1,
       static const orc_uint8 bc[] = {
         1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
         105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114,
-        99,
+            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,
@@ -11311,7 +11311,7 @@ videomixer_video_convert_orc_convert_AYUV_RGBA (guint8 * ORC_RESTRICT d1,
       static const orc_uint8 bc[] = {
         1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
         105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114,
-        99,
+            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,
@@ -11932,9 +11932,9 @@ videomixer_video_convert_orc_convert_I420_BGRA (guint8 * ORC_RESTRICT d1,
 #if 1
       static const orc_uint8 bc[] = {
         1, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
-        105,
+            105,
         100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99,
-        95,
+            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,
@@ -12597,9 +12597,9 @@ videomixer_video_convert_orc_convert_I420_BGRA_avg (guint8 * ORC_RESTRICT d1,
 #if 1
       static const orc_uint8 bc[] = {
         1, 9, 50, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
-        105,
+            105,
         100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99,
-        95,
+            95,
         99, 111, 110, 118, 101, 114, 116, 95, 73, 52, 50, 48, 95, 66, 71, 82,
         65, 95, 97, 118, 103, 11, 4, 4, 12, 1, 1, 12, 1, 1, 12, 1,
         1, 12, 1, 1, 12, 1, 1, 14, 1, 8, 0, 0, 0, 14, 1, 128,
@@ -12909,9 +12909,9 @@ videomixer_video_convert_orc_getline_I420 (guint8 * ORC_RESTRICT d1,
 #if 1
       static const orc_uint8 bc[] = {
         1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
-        105,
+            105,
         100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99,
-        95,
+            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,
@@ -13160,9 +13160,9 @@ videomixer_video_convert_orc_getline_YUV9 (guint8 * ORC_RESTRICT d1,
 #if 1
       static const orc_uint8 bc[] = {
         1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
-        105,
+            105,
         100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99,
-        95,
+            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,
@@ -13407,9 +13407,9 @@ videomixer_video_convert_orc_getline_YUY2 (guint8 * ORC_RESTRICT d1,
 #if 1
       static const orc_uint8 bc[] = {
         1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
-        105,
+            105,
         100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99,
-        95,
+            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,
@@ -13644,9 +13644,9 @@ videomixer_video_convert_orc_getline_UYVY (guint8 * ORC_RESTRICT d1,
 #if 1
       static const orc_uint8 bc[] = {
         1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
-        105,
+            105,
         100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99,
-        95,
+            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,
@@ -13887,9 +13887,9 @@ videomixer_video_convert_orc_getline_YVYU (guint8 * ORC_RESTRICT d1,
 #if 1
       static const orc_uint8 bc[] = {
         1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
-        105,
+            105,
         100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99,
-        95,
+            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,
@@ -14134,9 +14134,9 @@ videomixer_video_convert_orc_getline_Y42B (guint8 * ORC_RESTRICT d1,
 #if 1
       static const orc_uint8 bc[] = {
         1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
-        105,
+            105,
         100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99,
-        95,
+            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,
@@ -14341,9 +14341,9 @@ videomixer_video_convert_orc_getline_Y444 (guint8 * ORC_RESTRICT d1,
 #if 1
       static const orc_uint8 bc[] = {
         1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
-        105,
+            105,
         100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99,
-        95,
+            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,
@@ -14520,9 +14520,9 @@ videomixer_video_convert_orc_getline_Y800 (guint8 * ORC_RESTRICT d1,
 #if 1
       static const orc_uint8 bc[] = {
         1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
-        105,
+            105,
         100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99,
-        95,
+            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,
@@ -14697,9 +14697,9 @@ videomixer_video_convert_orc_getline_Y16 (guint8 * ORC_RESTRICT d1,
 #if 1
       static const orc_uint8 bc[] = {
         1, 9, 40, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
-        105,
+            105,
         100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99,
-        95,
+            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,
@@ -14818,9 +14818,9 @@ videomixer_video_convert_orc_getline_BGRA (guint8 * ORC_RESTRICT d1,
 #if 1
       static const orc_uint8 bc[] = {
         1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
-        105,
+            105,
         100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99,
-        95,
+            95,
         103, 101, 116, 108, 105, 110, 101, 95, 66, 71, 82, 65, 11, 4, 4, 12,
         4, 4, 184, 0, 4, 2, 0,
       };
@@ -15026,9 +15026,9 @@ videomixer_video_convert_orc_getline_ABGR (guint8 * ORC_RESTRICT d1,
 #if 1
       static const orc_uint8 bc[] = {
         1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
-        105,
+            105,
         100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99,
-        95,
+            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,
@@ -15254,9 +15254,9 @@ videomixer_video_convert_orc_getline_RGBA (guint8 * ORC_RESTRICT d1,
 #if 1
       static const orc_uint8 bc[] = {
         1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
-        105,
+            105,
         100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99,
-        95,
+            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,
@@ -15484,9 +15484,9 @@ videomixer_video_convert_orc_getline_NV12 (guint8 * ORC_RESTRICT d1,
 #if 1
       static const orc_uint8 bc[] = {
         1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
-        105,
+            105,
         100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99,
-        95,
+            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,
@@ -15705,9 +15705,9 @@ videomixer_video_convert_orc_getline_NV21 (guint8 * ORC_RESTRICT d1,
 #if 1
       static const orc_uint8 bc[] = {
         1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
-        105,
+            105,
         100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99,
-        95,
+            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,
@@ -15905,9 +15905,9 @@ videomixer_video_convert_orc_getline_A420 (guint8 * ORC_RESTRICT d1,
 #if 1
       static const orc_uint8 bc[] = {
         1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
-        105,
+            105,
         100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99,
-        95,
+            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,
@@ -16181,9 +16181,9 @@ videomixer_video_convert_orc_putline_I420 (guint8 * ORC_RESTRICT d1,
 #if 1
       static const orc_uint8 bc[] = {
         1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
-        105,
+            105,
         100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99,
-        95,
+            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,
@@ -16420,9 +16420,9 @@ videomixer_video_convert_orc_putline_YUY2 (guint8 * ORC_RESTRICT d1,
 #if 1
       static const orc_uint8 bc[] = {
         1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
-        105,
+            105,
         100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99,
-        95,
+            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,
@@ -16655,9 +16655,9 @@ videomixer_video_convert_orc_putline_YVYU (guint8 * ORC_RESTRICT d1,
 #if 1
       static const orc_uint8 bc[] = {
         1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
-        105,
+            105,
         100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99,
-        95,
+            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,
@@ -16886,9 +16886,9 @@ videomixer_video_convert_orc_putline_UYVY (guint8 * ORC_RESTRICT d1,
 #if 1
       static const orc_uint8 bc[] = {
         1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
-        105,
+            105,
         100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99,
-        95,
+            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,
@@ -17123,9 +17123,9 @@ videomixer_video_convert_orc_putline_Y42B (guint8 * ORC_RESTRICT d1,
 #if 1
       static const orc_uint8 bc[] = {
         1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
-        105,
+            105,
         100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99,
-        95,
+            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,
@@ -17315,9 +17315,9 @@ videomixer_video_convert_orc_putline_Y444 (guint8 * ORC_RESTRICT d1,
 #if 1
       static const orc_uint8 bc[] = {
         1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
-        105,
+            105,
         100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99,
-        95,
+            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,
@@ -17460,9 +17460,9 @@ videomixer_video_convert_orc_putline_Y800 (guint8 * ORC_RESTRICT d1,
 #if 1
       static const orc_uint8 bc[] = {
         1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
-        105,
+            105,
         100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99,
-        95,
+            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,
       };
@@ -17608,9 +17608,9 @@ videomixer_video_convert_orc_putline_Y16 (guint8 * ORC_RESTRICT d1,
 #if 1
       static const orc_uint8 bc[] = {
         1, 9, 40, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
-        105,
+            105,
         100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99,
-        95,
+            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,
@@ -17730,9 +17730,9 @@ videomixer_video_convert_orc_putline_BGRA (guint8 * ORC_RESTRICT d1,
 #if 1
       static const orc_uint8 bc[] = {
         1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
-        105,
+            105,
         100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99,
-        95,
+            95,
         112, 117, 116, 108, 105, 110, 101, 95, 66, 71, 82, 65, 11, 4, 4, 12,
         4, 4, 184, 0, 4, 2, 0,
       };
@@ -17938,9 +17938,9 @@ videomixer_video_convert_orc_putline_ABGR (guint8 * ORC_RESTRICT d1,
 #if 1
       static const orc_uint8 bc[] = {
         1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
-        105,
+            105,
         100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99,
-        95,
+            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,
@@ -18166,9 +18166,9 @@ videomixer_video_convert_orc_putline_RGBA (guint8 * ORC_RESTRICT d1,
 #if 1
       static const orc_uint8 bc[] = {
         1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
-        105,
+            105,
         100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99,
-        95,
+            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,
@@ -18380,9 +18380,9 @@ videomixer_video_convert_orc_putline_NV12 (guint8 * ORC_RESTRICT d1,
 #if 1
       static const orc_uint8 bc[] = {
         1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
-        105,
+            105,
         100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99,
-        95,
+            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,
@@ -18594,9 +18594,9 @@ videomixer_video_convert_orc_putline_NV21 (guint8 * ORC_RESTRICT d1,
 #if 1
       static const orc_uint8 bc[] = {
         1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
-        105,
+            105,
         100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99,
-        95,
+            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,
@@ -18899,9 +18899,9 @@ videomixer_video_convert_orc_putline_A420 (guint8 * ORC_RESTRICT d1,
 #if 1
       static const orc_uint8 bc[] = {
         1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118,
-        105,
+            105,
         100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99,
-        95,
+            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,
diff --git a/po/af.gmo b/po/af.gmo
index ec87c10e0babfb28226682a8896bdb6051f04459..9adac3ec81167e744f5708fa029912cf7a903547 100644
GIT binary patch
delta 21
ccmbQmI*WCK4<m<>iGrbtm7(S45Jopf06oS9A^-pY

delta 21
ccmbQmI*WCK4<m=6rGlY>m7&Gv5Jopf06ohEApigX

diff --git a/po/af.po b/po/af.po
index f97ac7451..95b182e29 100644
--- a/po/af.po
+++ b/po/af.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins 0.7.6\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2013-09-19 10:18+0200\n"
+"POT-Creation-Date: 2013-09-24 14:19+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"
diff --git a/po/az.gmo b/po/az.gmo
index 3586969f1d4282d72c65a9e4d97e716df0ae1818..d472c3f50b45f2dd0676b39bfa42ea2f454c32f7 100644
GIT binary patch
delta 21
ccmcc2dYN^D4<m<>iGrbtm7(S45XO2&07oDN%>V!Z

delta 21
ccmcc2dYN^D4<m=6rGlY>m7&Gv5XO2&07oSS%m4rY

diff --git a/po/az.po b/po/az.po
index a9b7f6492..e02c89e96 100644
--- a/po/az.po
+++ b/po/az.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins-0.8.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2013-09-19 10:18+0200\n"
+"POT-Creation-Date: 2013-09-24 14:19+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"
diff --git a/po/bg.gmo b/po/bg.gmo
index 08f85d4975e316a1094a67216e5bff5cbe903f5a..d4675316e75011632585be1d5e0fc57c8ee37643 100644
GIT binary patch
delta 21
ccmeAT?+xFOD8yl8qF`uZWoWrMQ%FS;07{ev?f?J)

delta 21
ccmeAT?+xFOD8ylCsbFYeWoWTEQ%FS;07{t!?EnA(

diff --git a/po/bg.po b/po/bg.po
index b5268cf7d..be29dfe75 100644
--- a/po/bg.po
+++ b/po/bg.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins-good 0.10.28.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2013-09-19 10:18+0200\n"
+"POT-Creation-Date: 2013-09-24 14:19+0200\n"
 "PO-Revision-Date: 2011-04-26 22:35+0300\n"
 "Last-Translator: Alexander Shopov <ash@kambanaria.org>\n"
 "Language-Team: Bulgarian <dict@fsa-bg.org>\n"
diff --git a/po/ca.gmo b/po/ca.gmo
index 1517fb188683b749c249030123d03be8f88698fb..4aca6195f02c7f534a85af848b6600ef9e96660f 100644
GIT binary patch
delta 21
ccmZ4DzQlb)q7a9XiGrbtm7(S4Od)GQ088=)3jhEB

delta 21
ccmZ4DzQlb)q7a9nrGlY>m7&GvOd)GQ0894<3IG5A

diff --git a/po/ca.po b/po/ca.po
index 0f6a5ff50..cdc334299 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins-good 0.10.28.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2013-09-19 10:18+0200\n"
+"POT-Creation-Date: 2013-09-24 14:19+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"
diff --git a/po/cs.gmo b/po/cs.gmo
index 2baf64f117efa1f554fbe4c41b8db32996b47216..00059d97c6162b0f40123a85b45b4826fcffb4b9 100644
GIT binary patch
delta 21
dcmewt_AhM1BQXvm69q#PD?`i8uf(Q^003uA2txn>

delta 21
dcmewt_AhM1BQXv`O9ev%D?^LTuf(Q^003uF2toh=

diff --git a/po/cs.po b/po/cs.po
index feadd317d..c00886464 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins-good-1.1.4\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2013-09-19 10:18+0200\n"
+"POT-Creation-Date: 2013-09-24 14:19+0200\n"
 "PO-Revision-Date: 2013-09-18 19:18+0200\n"
 "Last-Translator: Marek Černocký <marek@manet.cz>\n"
 "Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n"
diff --git a/po/da.gmo b/po/da.gmo
index ef4448da40e6af15dcb2d9e607cf946eda330b01..96c7fec96eb9fe679fdfbc257b7b2571d89adc5a 100644
GIT binary patch
delta 21
ccmZ4KwbE;Yo+yWriGrbtm7(QkGttld07}#baR2}S

delta 21
ccmZ4KwbE;Yo+yW*rGlY>m7&FEGttld07}^gZ~y=R

diff --git a/po/da.po b/po/da.po
index 461f3bafb..ae498a2f8 100644
--- a/po/da.po
+++ b/po/da.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins-good-1.0.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2013-09-19 10:18+0200\n"
+"POT-Creation-Date: 2013-09-24 14:19+0200\n"
 "PO-Revision-Date: 2012-12-13 23:54+0200\n"
 "Last-Translator: Joe Hansen <joedalton2@yahoo.dk>\n"
 "Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
diff --git a/po/de.gmo b/po/de.gmo
index c17e166bdc061a3138c0fbe04df3548c5f4accb8..ee524b3d9a83851d6253210092dad8b9bac2821f 100644
GIT binary patch
delta 21
ccmZ1;x;%7)o*0LbiGrbtm7(QkGqFMu082Rr2mk;8

delta 21
ccmZ1;x;%7)o*0LrrGlY>m7&FEGqFMu082gw2LJ#7

diff --git a/po/de.po b/po/de.po
index c8ec9c759..417ab66ff 100644
--- a/po/de.po
+++ b/po/de.po
@@ -14,7 +14,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins-good 1.0.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2013-09-19 10:18+0200\n"
+"POT-Creation-Date: 2013-09-24 14:19+0200\n"
 "PO-Revision-Date: 2012-11-28 19:56+0100\n"
 "Last-Translator: Christian Kirbach <christian.kirbach@gmail.com>\n"
 "Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
diff --git a/po/el.gmo b/po/el.gmo
index 9f0dca06ea822c61807daa43abc8e0cbc0d1e759..062353909933b0c242f12a53e2b8df18824ae529 100644
GIT binary patch
delta 21
ccmX>bbv9~4q7a9XiGrbtm7(S4Ora-I09J<wH2?qr

delta 21
ccmX>bbv9~4q7a9nrGlY>m7&GvOra-I09K3#Gynhq

diff --git a/po/el.po b/po/el.po
index b15239441..07f81eec9 100644
--- a/po/el.po
+++ b/po/el.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins-good 0.10.28.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2013-09-19 10:18+0200\n"
+"POT-Creation-Date: 2013-09-24 14:19+0200\n"
 "PO-Revision-Date: 2012-05-05 19:05+0100\n"
 "Last-Translator: Savvas Radevic <vicedar@gmail.com>\n"
 "Language-Team: Greek <team@lists.gnome.gr>\n"
diff --git a/po/en_GB.gmo b/po/en_GB.gmo
index ca1914939b2e74ca28ed3f3e309050d15fa52564..b339ba6b6d4e959d63c1cccf2a1ceaa30c97877a 100644
GIT binary patch
delta 21
ccmbQwI-hle4<m<>iGrbtm7(S45JqoC06v%nF#rGn

delta 21
ccmbQwI-hle4<m=6rGlY>m7&Gv5JqoC06v`sFaQ7m

diff --git a/po/en_GB.po b/po/en_GB.po
index 312cd3ed1..fe25abdcd 100644
--- a/po/en_GB.po
+++ b/po/en_GB.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins 0.8.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2013-09-19 10:18+0200\n"
+"POT-Creation-Date: 2013-09-24 14:19+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"
diff --git a/po/eo.gmo b/po/eo.gmo
index cee0bab6b9ead4f00bcbd60d1bcf6ab01befd445..febd872d7b3ef1724c424ab9abab26f90cb31d96 100644
GIT binary patch
delta 21
ccmdnMwSjBHMkWp;69q#PD?`i8JDJLv07^{;RsaA1

delta 21
ccmdnMwSjBHMkWqJO9ev%D?^LTJDJLv07_B@RR910

diff --git a/po/eo.po b/po/eo.po
index 68c3b29d3..7984875b7 100644
--- a/po/eo.po
+++ b/po/eo.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins-good 0.10.28.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2013-09-19 10:18+0200\n"
+"POT-Creation-Date: 2013-09-24 14:19+0200\n"
 "PO-Revision-Date: 2011-06-04 21:48+0100\n"
 "Last-Translator: Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>\n"
 "Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n"
diff --git a/po/es.gmo b/po/es.gmo
index 7bc6db9371326084cb9a6441a41d000b8c334458..bf3653778573f83818dd0a89ad32fb83fa6eb18d 100644
GIT binary patch
delta 21
ccmbQ~In#54sW69;iGrbtm7(QkTj3Z%07q&C!~g&Q

delta 21
ccmbQ~In#54sW6A3rGlY>m7&FETj3Z%07q{H!vFvP

diff --git a/po/es.po b/po/es.po
index c71958756..48254a0fd 100644
--- a/po/es.po
+++ b/po/es.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins-good 0.10.26.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2013-09-19 10:18+0200\n"
+"POT-Creation-Date: 2013-09-24 14:19+0200\n"
 "PO-Revision-Date: 2011-02-12 18:30+0100\n"
 "Last-Translator: Jorge González González <aloriel@gmail.com>\n"
 "Language-Team: Spanish <es@li.org>\n"
diff --git a/po/eu.gmo b/po/eu.gmo
index 880a137f463b7ae92650464c0e71878559c2594e..6b51ab616eafc24d79db214f349ba69cd9c74857 100644
GIT binary patch
delta 21
ccmX?Qead=+gaC(;iGrbtm7(Qk1%Xw(081PO6aWAK

delta 21
ccmX?Qead=+gaC)3rGlY>m7&FE1%Xw(081eT6951J

diff --git a/po/eu.po b/po/eu.po
index a15b2b9f5..bbc497d71 100644
--- a/po/eu.po
+++ b/po/eu.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins-good-0.10.18.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2013-09-19 10:18+0200\n"
+"POT-Creation-Date: 2013-09-24 14:19+0200\n"
 "PO-Revision-Date: 2010-03-25 12:37+0100\n"
 "Last-Translator: Mikel Olasagasti Uranga <hey_neken@mundurat.net>\n"
 "Language-Team: Basque <translation-team-eu@lists.sourceforge.net>\n"
diff --git a/po/fi.gmo b/po/fi.gmo
index 5af02d0f6c4017e24806318f16d99695871e21d0..53cb8c2d923d058211d5ebfefbfaf79be37c3759 100644
GIT binary patch
delta 21
dcmaE9_tI{|d_fK)69q#PD?`i8%LNbd0svby2Y>(o

delta 21
dcmaE9_tI{|d_fLFO9ev%D?^LT%LNbd0svb%2Y&zn

diff --git a/po/fi.po b/po/fi.po
index db8456cef..4c978ad1a 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins-good 0.10.25.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2013-09-19 10:18+0200\n"
+"POT-Creation-Date: 2013-09-24 14:19+0200\n"
 "PO-Revision-Date: 2010-11-17 23:03+0200\n"
 "Last-Translator: Tommi Vainikainen <Tommi.Vainikainen@iki.fi>\n"
 "Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
diff --git a/po/fr.gmo b/po/fr.gmo
index 69814da1f7185f62149d6f0acc16212eed5a24a5..e73720d9e2c7f442425f23907d07c20805452f3d 100644
GIT binary patch
delta 21
ccmZqkX!F>RD8yl8qF`uZWoWrMQ)sRr07xtbGXMYp

delta 21
ccmZqkX!F>RD8ylCsbFYeWoWTEQ)sRr07x+gG5`Po

diff --git a/po/fr.po b/po/fr.po
index 081aab2d6..e395eb565 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins-good 0.10.28.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2013-09-19 10:18+0200\n"
+"POT-Creation-Date: 2013-09-24 14:19+0200\n"
 "PO-Revision-Date: 2011-04-28 09:22+0200\n"
 "Last-Translator: Claude Paroz <claude@2xlibre.net>\n"
 "Language-Team: French <traduc@traduc.org>\n"
diff --git a/po/gl.gmo b/po/gl.gmo
index 618d5619c4920fe6b3cda9a27d7fb53081e85306..b2398da2afac6fd425e23a22ab4911a0231c222a 100644
GIT binary patch
delta 21
ccmZ1<wmxiwo*0LbiGrbtm7(QkGqIl{08Ot3q5uE@

delta 21
ccmZ1<wmxiwo*0LrrGlY>m7&FEGqIl{08O+8p#T5?

diff --git a/po/gl.po b/po/gl.po
index a4b86eb51..d0afa3199 100644
--- a/po/gl.po
+++ b/po/gl.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins-good 1.0.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2013-09-19 10:18+0200\n"
+"POT-Creation-Date: 2013-09-24 14:19+0200\n"
 "PO-Revision-Date: 2012-12-15 03:46+0200\n"
 "Last-Translator: Fran Dieguez <frandieguez@ubuntu.com>\n"
 "Language-Team: Galician <proxecto@trasno.net>\n"
diff --git a/po/gst-plugins-good-1.0.pot b/po/gst-plugins-good-1.0.pot
index fb1c04537..e31c02738 100644
--- a/po/gst-plugins-good-1.0.pot
+++ b/po/gst-plugins-good-1.0.pot
@@ -5,9 +5,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: gst-plugins-good 1.1.90\n"
+"Project-Id-Version: gst-plugins-good 1.2.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2013-09-19 10:18+0200\n"
+"POT-Creation-Date: 2013-09-24 14:19+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"
@@ -252,7 +252,7 @@ msgstr ""
 msgid "AUX 2 Out"
 msgstr ""
 
-#: sys/v4l2/gstv4l2bufferpool.c:1151
+#: sys/v4l2/gstv4l2bufferpool.c:1164
 #, c-format
 msgid "Error reading %d bytes from device '%s'."
 msgstr ""
diff --git a/po/hr.gmo b/po/hr.gmo
index e346405e8f1365ddee483d1cc73f93a52b001a4f..bbb9b28e4209c3d7012ac6df1c5fef8d4f55ed24 100644
GIT binary patch
delta 21
ccmX@>bk=D@q7a9XiGrbtm7(S4Ora-y08;A)`2YX_

delta 21
ccmX@>bk=D@q7a9nrGlY>m7&GvOra-y08;P<_y7O^

diff --git a/po/hr.po b/po/hr.po
index ccc502c7c..1677b56a1 100644
--- a/po/hr.po
+++ b/po/hr.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins-good 0.10.28.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2013-09-19 10:18+0200\n"
+"POT-Creation-Date: 2013-09-24 14:19+0200\n"
 "PO-Revision-Date: 2012-04-16 03:04+0200\n"
 "Last-Translator: Tomislav Krznar <tomislav.krznar@gmail.com>\n"
 "Language-Team: Croatian <lokalizacija@linux.hr>\n"
diff --git a/po/hu.gmo b/po/hu.gmo
index cb3ae6403b42ffb89314fb0d86bef0577bfebae7..0abbc322e916dac87b2bc63df656f61cc29e7e66 100644
GIT binary patch
delta 21
ccmdlUvOQ#jo*0LbiGrbtm7(QkGciUH08Fz5wg3PC

delta 21
ccmdlUvOQ#jo*0LrrGlY>m7&FEGciUH08F?AwEzGB

diff --git a/po/hu.po b/po/hu.po
index 5a96f3948..98a238550 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins-good 1.0.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2013-09-19 10:18+0200\n"
+"POT-Creation-Date: 2013-09-24 14:19+0200\n"
 "PO-Revision-Date: 2012-11-30 15:05+0100\n"
 "Last-Translator: Gabor Kelemen <kelemeng@gnome.hu>\n"
 "Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n"
diff --git a/po/id.gmo b/po/id.gmo
index bf422c36bc228c89394b1df4b1d207f5dfe96599..9ac21291ce13ef1be2a419d3108ce07681382185 100644
GIT binary patch
delta 21
ccmeBj?sDE>D$HSIqF`uZWoWtCR@j#h07MN1hyVZp

delta 21
ccmeBj?sDE>D$HSMsbFYeWoWV4R@j#h07Mc6hX4Qo

diff --git a/po/id.po b/po/id.po
index cc0ad1152..546c591b3 100644
--- a/po/id.po
+++ b/po/id.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins-good 0.10.26.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2013-09-19 10:18+0200\n"
+"POT-Creation-Date: 2013-09-24 14:19+0200\n"
 "PO-Revision-Date: 2011-02-26 18:09+0700\n"
 "Last-Translator: Andhika Padmawan <andhika.padmawan@gmail.com>\n"
 "Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n"
diff --git a/po/it.gmo b/po/it.gmo
index 0acb11442c966be513867e73ee59e9f91ff74e7d..2aa2ef2fb8077769da3a7c0fd0dd63be8392dbab 100644
GIT binary patch
delta 21
dcmccZblYjed_fK)69q#PD?`i8%LTXa0{~fq2VejI

delta 21
dcmccZblYjed_fLFO9ev%D?^LT%LTXa0{~fv2VVdH

diff --git a/po/it.po b/po/it.po
index e9d84ed89..b0ff05f8c 100644
--- a/po/it.po
+++ b/po/it.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins-good 0.10.25.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2013-09-19 10:18+0200\n"
+"POT-Creation-Date: 2013-09-24 14:19+0200\n"
 "PO-Revision-Date: 2010-10-25 10:11+0200\n"
 "Last-Translator: Luca Ferretti <elle.uca@infinito.it>\n"
 "Language-Team: Italian <tp@lists.linux.it>\n"
diff --git a/po/ja.gmo b/po/ja.gmo
index 022d9627eb8446e4d186fc0e8ece057d5e925875..8456a0afcc304dfcaf0fcdd7cbce2149283ad52e 100644
GIT binary patch
delta 21
ccmZ1&zc7A-o*0LbiGrbtm7(QkGqG$*0873G4*&oF

delta 21
ccmZ1&zc7A-o*0LrrGlY>m7&FEGqG$*087IL4gdfE

diff --git a/po/ja.po b/po/ja.po
index b20bf34cd..e7fd9bd8b 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins-good 1.0.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2013-09-19 10:18+0200\n"
+"POT-Creation-Date: 2013-09-24 14:19+0200\n"
 "PO-Revision-Date: 2012-12-22 20:13+0900\n"
 "Last-Translator: Takeshi Hamasaki <hmatrjp@users.sourceforge.jp>\n"
 "Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
diff --git a/po/lt.gmo b/po/lt.gmo
index 2488dc1bb36979c6f02c2db70b319cc97823c0b3..3fc6132614ea7acc085e74dce879186adf12de8f 100644
GIT binary patch
delta 21
ccmZ2twZv+JgaC(;iGrbtm7(Qk1pyXb07JS3AOHXW

delta 21
ccmZ2twZv+JgaC)3rGlY>m7&FE1pyXb07Jh89{>OV

diff --git a/po/lt.po b/po/lt.po
index e134cdc8d..518b5fa3a 100644
--- a/po/lt.po
+++ b/po/lt.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins-good 0.10.23.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2013-09-19 10:18+0200\n"
+"POT-Creation-Date: 2013-09-24 14:19+0200\n"
 "PO-Revision-Date: 2010-07-16 19:34+0300\n"
 "Last-Translator: Žygimantas Beručka <uid0@akl.lt>\n"
 "Language-Team: Lithuanian <komp_lt@konferencijos.lt>\n"
diff --git a/po/lv.gmo b/po/lv.gmo
index aea90a52d42081e7725432c94e1935eb30cc56cc..1ee1c6d61681bd8931dec4b5d78b7c0a2725927a 100644
GIT binary patch
delta 21
ccmccbbl+)1q7a9XiGrbtm7(S4OrdXl09D@yF8}}l

delta 21
ccmccbbl+)1q7a9nrGlY>m7&GvOrdXl09E7%E&u=k

diff --git a/po/lv.po b/po/lv.po
index ec721d1db..7e2beb294 100644
--- a/po/lv.po
+++ b/po/lv.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins-good 0.10.28.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2013-09-19 10:18+0200\n"
+"POT-Creation-Date: 2013-09-24 14:19+0200\n"
 "PO-Revision-Date: 2011-09-02 11:23-0000\n"
 "Last-Translator: Rihards Priedītis <rprieditis@gmail.com>\n"
 "Language-Team: Latvian <translation-team-lv@lists.sourceforge.net>\n"
diff --git a/po/mt.gmo b/po/mt.gmo
index b9cf43f757a1dacf0cc63875cd9f98b37816e727..e9af73cbddbfebbb737fc4d20532a6d6a0039e08 100644
GIT binary patch
delta 21
ccmdm{w@q)u2_6n369q#PD?`i87kJXR08;w~;{X5v

delta 21
ccmdm{w@q)u2_6nZO9ev%D?^LT7kJXR08;=4;s5{u

diff --git a/po/mt.po b/po/mt.po
index c1f674592..e0b784d85 100644
--- a/po/mt.po
+++ b/po/mt.po
@@ -5,7 +5,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins-good-0.10.10.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2013-09-19 10:18+0200\n"
+"POT-Creation-Date: 2013-09-24 14:19+0200\n"
 "PO-Revision-Date: 2008-10-26 19:09+0100\n"
 "Last-Translator: Michel Bugeja <michelbugeja@rabatmalta.com>\n"
 "Language-Team: Maltese <translation-team-mt@lists.sourceforge.net>\n"
diff --git a/po/nb.gmo b/po/nb.gmo
index bdbb43c6234139c8d3418ee821cee253ccfdd4af..9e225d70343e57d9d459e86075b76c9f8dba207f 100644
GIT binary patch
delta 21
ccmez1^TB6>o*0LbiGrbtm7(QkGchXx094rqO#lD@

delta 21
ccmez1^TB6>o*0LrrGlY>m7&FEGchXx094)vOaK4?

diff --git a/po/nb.po b/po/nb.po
index d001e47d8..dc8374f23 100644
--- a/po/nb.po
+++ b/po/nb.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins-good 1.0.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2013-09-19 10:18+0200\n"
+"POT-Creation-Date: 2013-09-24 14:19+0200\n"
 "PO-Revision-Date: 2012-12-21 22:13+0100\n"
 "Last-Translator: Johnny A. Solbu <johnny@solbu.net>\n"
 "Language-Team: Norwegian Bokmaal <i18n-nb@lister.ping.uio.no>\n"
diff --git a/po/nl.gmo b/po/nl.gmo
index d934e7fe263e83feb8489c12a9255d8012999360..7626c2b5f76aff41d44446b1a502b66ae0312ccc 100644
GIT binary patch
delta 21
ccmaDH^f+k4BQXvm69q#PD?`i8uf!^a0AfW4=l}o!

delta 21
ccmaDH^f+k4BQXv`O9ev%D?^LTuf!^a0Afl9=Kufz

diff --git a/po/nl.po b/po/nl.po
index bcd355659..51d590ff6 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins-good 1.1.4\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2013-09-19 10:18+0200\n"
+"POT-Creation-Date: 2013-09-24 14:19+0200\n"
 "PO-Revision-Date: 2013-09-15 13:31+0200\n"
 "Last-Translator: Freek de Kruijf <f.de.kruijf@gmail.com>\n"
 "Language-Team: Dutch <vertaling@vrijschrift.org>\n"
diff --git a/po/or.gmo b/po/or.gmo
index 2e16035c43154d6d2e9ad94899fd108a60020e88..5343b9362c1b9c6440e8424a010652bd17f5271d 100644
GIT binary patch
delta 21
ccmX@Wc7Sbz4<m<>iGrbtm7(S45XLu*07WPU761SM

delta 21
ccmX@Wc7Sbz4<m=6rGlY>m7&Gv5XLu*07WeZ6#xJL

diff --git a/po/or.po b/po/or.po
index f5e7c04f1..983cbf055 100644
--- a/po/or.po
+++ b/po/or.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins-0.8.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2013-09-19 10:18+0200\n"
+"POT-Creation-Date: 2013-09-24 14:19+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"
diff --git a/po/pl.gmo b/po/pl.gmo
index 998f34e118cc928d6448b3fd4be5b681aa3da4a5..712df45fef7f5d90e12ccabbc28d4868fd33e3d3 100644
GIT binary patch
delta 21
ccmbOoHal#?BQXvm69q#PD?`i8ufz;R09OwO8UO$Q

delta 21
ccmbOoHal#?BQXv`O9ev%D?^LTufz;R09O<T82|tP

diff --git a/po/pl.po b/po/pl.po
index bce78bc49..b999d9eec 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins-good 1.1.4\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2013-09-19 10:18+0200\n"
+"POT-Creation-Date: 2013-09-24 14:19+0200\n"
 "PO-Revision-Date: 2013-09-15 11:26+0200\n"
 "Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n"
 "Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo
index 69efad69e9215e2a2088f09f27b8825ac4fbbcfe..9f3b7f51e18f4a3fe4c2d2a3ed5b674660b71735 100644
GIT binary patch
delta 21
ccmcZ^d^321o*0LbiGrbtm7(QkGqJ_O08=0anE(I)

delta 21
ccmcZ^d^321o*0LrrGlY>m7&FEGqJ_O08=Ffm;e9(

diff --git a/po/pt_BR.po b/po/pt_BR.po
index 71c48c30b..cd311aaa4 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins-good-1.0.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2013-09-19 10:18+0200\n"
+"POT-Creation-Date: 2013-09-24 14:19+0200\n"
 "PO-Revision-Date: 2013-08-21 00:12-0300\n"
 "Last-Translator: Fabrício Godoy <skarllot@gmail.com>\n"
 "Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge."
diff --git a/po/ro.gmo b/po/ro.gmo
index 058340e148a03aa51421d9fd6f3afe6c06814dec..953e3862234642ddb6226f176f7cf5fa24138102 100644
GIT binary patch
delta 21
ccmX?TchGKwgaC(;iGrbtm7(Qk1p!5V07(`FfdBvi

delta 21
ccmX?TchGKwgaC)3rGlY>m7&FE1p!5V07)AKfB*mh

diff --git a/po/ro.po b/po/ro.po
index ed237390a..eec3e77a0 100644
--- a/po/ro.po
+++ b/po/ro.po
@@ -5,7 +5,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins-good 0.10.23.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2013-09-19 10:18+0200\n"
+"POT-Creation-Date: 2013-09-24 14:19+0200\n"
 "PO-Revision-Date: 2010-08-16 03:22+0300\n"
 "Last-Translator: Lucian Adrian Grijincu <lucian.grijincu@gmail.com>\n"
 "Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n"
diff --git a/po/ru.gmo b/po/ru.gmo
index e1dd8258733d4e8b354a0d81dba044fb47d2bde2..5920f1233c4cffc9a5147e998d4f35854848cab2 100644
GIT binary patch
delta 21
ccmZ3Ky(oKwo*0LbiGrbtm7(QkGqD_b08O?AFaQ7m

delta 21
ccmZ3Ky(oKwo*0LrrGlY>m7&FEGqD_b08P6FF8}}l

diff --git a/po/ru.po b/po/ru.po
index 831981e88..21e0ca81a 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins-good 1.0.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2013-09-19 10:18+0200\n"
+"POT-Creation-Date: 2013-09-24 14:19+0200\n"
 "PO-Revision-Date: 2013-03-09 17:09+0200\n"
 "Last-Translator: Pavel Maryanov <acid@jack.kiev.ua>\n"
 "Language-Team: Russian <gnu@mx.ru>\n"
diff --git a/po/sk.gmo b/po/sk.gmo
index f55cb523e15c9c4ae37b9795307b0d281254f77e..f8dee56fd757d5200ec7438f9c80862f226adbf1 100644
GIT binary patch
delta 21
ccmbQ{I?Z)MwGfAqiGrbtm7(S4W+7n#081?e_5c6?

delta 21
ccmbQ{I?Z)MwGfA)rGlY>m7&GvW+7n#0826j^#A|>

diff --git a/po/sk.po b/po/sk.po
index e0c108960..9507cc891 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins-good 0.10.25.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2013-09-19 10:18+0200\n"
+"POT-Creation-Date: 2013-09-24 14:19+0200\n"
 "PO-Revision-Date: 2010-11-08 15:48+0100\n"
 "Last-Translator: Peter Tuhársky <tuharsky@misbb.sk>\n"
 "Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"
diff --git a/po/sl.gmo b/po/sl.gmo
index 56d06c2e00b6ccd8bee005dd121abc6e28d9cfb6..208358a5c0e91dfbce3830c8c7028b6375652a7b 100644
GIT binary patch
delta 21
ccmaFp^U!C5o+yWriGrbtm7(QkGf{0p08&y09{>OV

delta 21
ccmaFp^U!C5o+yW*rGlY>m7&FEGf{0p08&>59smFU

diff --git a/po/sl.po b/po/sl.po
index f50839e99..e05d51a75 100644
--- a/po/sl.po
+++ b/po/sl.po
@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins-good-1.0.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2013-09-19 10:18+0200\n"
+"POT-Creation-Date: 2013-09-24 14:19+0200\n"
 "PO-Revision-Date: 2013-01-05 10:03+0100\n"
 "Last-Translator: Klemen Košir <klemen913@gmail.com>\n"
 "Language-Team: Slovenian <translation-team-sl@lists.sourceforge.net>\n"
diff --git a/po/sq.gmo b/po/sq.gmo
index 9fa0b2d9c49f9c1a8c9da360570a2ff4087f77f5..effa30131fd33c58810db22c9d17929ff54df1b5 100644
GIT binary patch
delta 21
ccmZ3>x|Vf=4<m<>iGrbtm7(S45XMMG06^pgTL1t6

delta 21
ccmZ3>x|Vf=4<m=6rGlY>m7&Gv5XMMG06^&lS^xk5

diff --git a/po/sq.po b/po/sq.po
index cb60e08a9..3eb5985a7 100644
--- a/po/sq.po
+++ b/po/sq.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins 0.8.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2013-09-19 10:18+0200\n"
+"POT-Creation-Date: 2013-09-24 14:19+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"
diff --git a/po/sr.gmo b/po/sr.gmo
index 715e451aa341d755658d935b9679ed890cce8d0a..15c46c4b3ded694bb1f8206b5671baaa3997ddd8 100644
GIT binary patch
delta 21
ccmX>UekgoHq7a9XiGrbtm7(S4Orc0g08>T=jQ{`u

delta 21
ccmX>UekgoHq7a9nrGlY>m7&GvOrc0g08>i_i~s-t

diff --git a/po/sr.po b/po/sr.po
index 390054677..8cfb86ca7 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins-good-0.10.28.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2013-09-19 10:18+0200\n"
+"POT-Creation-Date: 2013-09-24 14:19+0200\n"
 "PO-Revision-Date: 2011-12-04 16:44+0200\n"
 "Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
 "Language-Team: Serbian <gnu@prevod.org>\n"
diff --git a/po/sv.gmo b/po/sv.gmo
index 9dc8f1d754331e3275fb9920917ee479a1336cbf..069b9b1c4ec64764fb7a5f9b53182afda938d4f0 100644
GIT binary patch
delta 21
ccmbR1I@fiBsW69;iGrbtm7(QkTj2zL07rNQ#sB~S

delta 21
ccmbR1I@fiBsW6A3rGlY>m7&FETj2zL07rcV#Q*>R

diff --git a/po/sv.po b/po/sv.po
index 40c55c024..e44ff4f2f 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins-good 0.10.26.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2013-09-19 10:18+0200\n"
+"POT-Creation-Date: 2013-09-24 14:19+0200\n"
 "PO-Revision-Date: 2011-01-09 19:36+0100\n"
 "Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
 "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
diff --git a/po/tr.gmo b/po/tr.gmo
index 7f47bbf382d89a33e4449d312fa948813b96a2c2..4840bb18f878b577bd08d8e8910584512d0f6fdb 100644
GIT binary patch
delta 21
ccmdn%yVrMvo*0LbiGrbtm7(QkGqH9708OC=HUIzs

delta 21
ccmdn%yVrMvo*0LrrGlY>m7&FEGqH9708OR_H2?qr

diff --git a/po/tr.po b/po/tr.po
index 536b77b48..be995d489 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins-good 1.0.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2013-09-19 10:18+0200\n"
+"POT-Creation-Date: 2013-09-24 14:19+0200\n"
 "PO-Revision-Date: 2013-03-10 13:05+0200\n"
 "Last-Translator: Server Acim <serveracim@gmail.com>\n"
 "Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
diff --git a/po/uk.gmo b/po/uk.gmo
index 4be2e07301863a8648c3aa4c5c71bbb733678050..30258be8d3595964b4dfb9a3c68e6382089a896d 100644
GIT binary patch
delta 21
ccmbQ3H!*L+BQXvm69q#PD?`i8uf)_909gkIH~;_u

delta 21
ccmbQ3H!*L+BQXv`O9ev%D?^LTuf)_909gzNHvj+t

diff --git a/po/uk.po b/po/uk.po
index 4fc97b030..efb371a47 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins-good 1.1.4\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2013-09-19 10:18+0200\n"
+"POT-Creation-Date: 2013-09-24 14:19+0200\n"
 "PO-Revision-Date: 2013-09-14 22:23+0300\n"
 "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
 "Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>\n"
diff --git a/po/vi.gmo b/po/vi.gmo
index 136f160f9c1253f6506b98ae88eb30f2a8d65061..0a954acbb20eef3d372848af4d15948d03d3f6c6 100644
GIT binary patch
delta 21
dcmdlJzbAgfBQXvm69q#PD?`i8uf#4%003Uo2onGR

delta 21
dcmdlJzbAgfBQXv`O9ev%D?^LTuf#4%003Ut2oeAQ

diff --git a/po/vi.po b/po/vi.po
index 5584843e2..63a0a936a 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins-good-1.1.4\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2013-09-19 10:18+0200\n"
+"POT-Creation-Date: 2013-09-24 14:19+0200\n"
 "PO-Revision-Date: 2013-09-16 14:36+0700\n"
 "Last-Translator: Trần Ngọc Quân <vnwildman@gmail.com>\n"
 "Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n"
diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo
index 3ed270939c4c629c7afe767787508eb7dd7a58f7..b1ecb90eb772d9ef28b54fc79291c8bcfffb7bf2 100644
GIT binary patch
delta 21
ccmbPkINfkVEgy%GiGrbtm7(S4Rz4vv07x|j#Q*>R

delta 21
ccmbPkINfkVEgy%WrGlY>m7&GvRz4vv07yCo!~g&Q

diff --git a/po/zh_CN.po b/po/zh_CN.po
index b9eef162a..42cb3b8e7 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins-good 0.10.16.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2013-09-19 10:18+0200\n"
+"POT-Creation-Date: 2013-09-24 14:19+0200\n"
 "PO-Revision-Date: 2009-11-13 22:20+0800\n"
 "Last-Translator: Ji ZhengYu <zhengyuji@gmail.com>\n"
 "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
diff --git a/po/zh_HK.gmo b/po/zh_HK.gmo
index 0049d528371df12e496598f6126da77be7605bbc..33450c00240682507b2d971c786a2fc764b4ec29 100644
GIT binary patch
delta 21
ccmZ3?vzTW?3Nwe1iGrbtm7(S49Omsz07D-I=l}o!

delta 21
ccmZ3?vzTW?3NweHrGlY>m7&Gv9Omsz07E1N=Kufz

diff --git a/po/zh_HK.po b/po/zh_HK.po
index 1e2572ea6..601a80d03 100644
--- a/po/zh_HK.po
+++ b/po/zh_HK.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins-good-0.10.2 0.10.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2013-09-19 10:18+0200\n"
+"POT-Creation-Date: 2013-09-24 14:19+0200\n"
 "PO-Revision-Date: 2006-08-29 01:08+0800\n"
 "Last-Translator: Abel Cheung <abelcheung@gmail.com>\n"
 "Language-Team: Chinese (Hong Kong) <community@linuxhall.org>\n"
diff --git a/po/zh_TW.gmo b/po/zh_TW.gmo
index 349d26cd4acf31ca0b218063a89dda5189c6600d..8daf242ad584cccbec443c617082000d57b33712 100644
GIT binary patch
delta 21
ccmZ3)vxsLy3Nwe1iGrbtm7(S49Oi9I07CTz<p2Nx

delta 21
ccmZ3)vxsLy3NweHrGlY>m7&Gv9Oi9I07Ci&<NyEw

diff --git a/po/zh_TW.po b/po/zh_TW.po
index dbb9719b6..75ed61232 100644
--- a/po/zh_TW.po
+++ b/po/zh_TW.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins-good-0.10.2 0.10.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2013-09-19 10:18+0200\n"
+"POT-Creation-Date: 2013-09-24 14:19+0200\n"
 "PO-Revision-Date: 2006-08-29 01:08+0800\n"
 "Last-Translator: Abel Cheung <abelcheung@gmail.com>\n"
 "Language-Team: Chinese (traditional) <zh-l10n@linux.org.tw>\n"
diff --git a/sys/osxvideo/osxvideosink.m b/sys/osxvideo/osxvideosink.m
index 89e980767..f8c45ee6f 100644
--- a/sys/osxvideo/osxvideosink.m
+++ b/sys/osxvideo/osxvideosink.m
@@ -330,9 +330,11 @@ gst_osx_video_sink_osxwindow_destroy (GstOSXVideoSink * osxvideosink)
   g_return_if_fail (GST_IS_OSX_VIDEO_SINK (osxvideosink));
   pool = [[NSAutoreleasePool alloc] init];
 
+  GST_OBJECT_LOCK (osxvideosink);
   gst_osx_video_sink_call_from_main_thread(osxvideosink,
       osxvideosink->osxvideosinkobject,
       @selector(destroy), (id) nil, YES);
+  GST_OBJECT_UNLOCK (osxvideosink);
   gst_osx_video_sink_stop_cocoa_loop (osxvideosink);
   [pool release];
 }
@@ -779,10 +781,15 @@ gst_osx_video_sink_get_type (void)
 -(id) initWithSink: (GstOSXVideoSink*) sink
 {
   self = [super init];
-  self->osxvideosink = sink;
+  self->osxvideosink = gst_object_ref (sink);
   return self;
 }
 
+-(void) dealloc {
+  gst_object_unref (osxvideosink);
+  [super dealloc];
+}
+
 -(void) createInternalWindow
 {
   GstOSXWindow *osxwindow = osxvideosink->osxwindow;
@@ -896,6 +903,7 @@ gst_osx_video_sink_get_type (void)
   NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
   GstBuffer *buf = object->buf;
 
+  GST_OBJECT_LOCK (osxvideosink);
   if (osxvideosink->osxwindow != NULL)
   {
     gst_buffer_map (buf, &info, GST_MAP_READ);
@@ -910,7 +918,7 @@ gst_osx_video_sink_get_type (void)
       gst_buffer_unmap (buf, &info);
     }
   }
-
+  GST_OBJECT_UNLOCK (osxvideosink);
   [object release];
 
   [pool release];
diff --git a/sys/v4l2/gstv4l2bufferpool.c b/sys/v4l2/gstv4l2bufferpool.c
index 0bc88ca7b..00c6086aa 100644
--- a/sys/v4l2/gstv4l2bufferpool.c
+++ b/sys/v4l2/gstv4l2bufferpool.c
@@ -682,9 +682,9 @@ gst_v4l2_buffer_pool_qbuf (GstV4l2BufferPool * pool, GstBuffer * buf)
   meta->vbuffer.bytesused = gst_buffer_get_size (buf);
 
   GST_LOG_OBJECT (pool,
-      "enqueue buffer %p, index:%d, queued:%d, flags:%08x used:%d",
+      "enqueue buffer %p, index:%d, queued:%d, flags:%08x mem:%p used:%d",
       buf, index, pool->num_queued, meta->vbuffer.flags,
-      meta->vbuffer.bytesused);
+      meta->mem, meta->vbuffer.bytesused);
 
   if (pool->buffers[index] != NULL)
     goto already_queued;
@@ -720,6 +720,7 @@ gst_v4l2_buffer_pool_dqbuf (GstV4l2BufferPool * pool, GstBuffer ** buffer)
   struct v4l2_buffer vbuffer;
   GstV4l2Object *obj = pool->obj;
   GstClockTime timestamp;
+  GstV4l2Meta *meta;
 
   if ((res = gst_v4l2_object_poll (obj)) != GST_FLOW_OK)
     goto poll_error;
@@ -750,10 +751,13 @@ gst_v4l2_buffer_pool_dqbuf (GstV4l2BufferPool * pool, GstBuffer ** buffer)
 
   timestamp = GST_TIMEVAL_TO_TIME (vbuffer.timestamp);
 
+  meta = GST_V4L2_META_GET (outbuf);
+  g_assert (meta != NULL);
+
   GST_LOG_OBJECT (pool,
-      "dequeued buffer %p seq:%d (ix=%d), used %d, flags %08x, ts %"
+      "dequeued buffer %p seq:%d (ix=%d), mem %p used %d, flags %08x, ts %"
       GST_TIME_FORMAT ", pool-queued=%d, buffer=%p", outbuf, vbuffer.sequence,
-      vbuffer.index, vbuffer.bytesused, vbuffer.flags,
+      vbuffer.index, meta->mem, vbuffer.bytesused, vbuffer.flags,
       GST_TIME_ARGS (timestamp), pool->num_queued, outbuf);
 
   /* set top/bottom field first if v4l2_buffer has the information */
@@ -764,9 +768,17 @@ gst_v4l2_buffer_pool_dqbuf (GstV4l2BufferPool * pool, GstBuffer ** buffer)
     GST_BUFFER_FLAG_UNSET (outbuf, GST_VIDEO_BUFFER_FLAG_TFF);
   }
 
-  /* this can change at every frame, esp. with jpeg */
-  if (obj->type == V4L2_BUF_TYPE_VIDEO_CAPTURE)
-    gst_buffer_resize (outbuf, 0, vbuffer.bytesused);
+  /* The size can change at every frame, esp. with jpeg. The GstMemory
+   * inside the GstBuffer could have been changed by some other
+   * element, so just put back the original one. We always set it as
+   * no share, so if it's not there, it's not used at all.
+   */
+  if (obj->type == V4L2_BUF_TYPE_VIDEO_CAPTURE) {
+    gst_buffer_remove_all_memory (outbuf);
+    gst_buffer_append_memory (outbuf,
+        gst_memory_new_wrapped (GST_MEMORY_FLAG_NO_SHARE,
+            meta->mem, vbuffer.length, 0, vbuffer.bytesused, NULL, NULL));
+  }
 
   GST_BUFFER_TIMESTAMP (outbuf) = timestamp;
 
@@ -882,8 +894,9 @@ gst_v4l2_buffer_pool_acquire_buffer (GstBufferPool * bpool, GstBuffer ** buffer,
             }
 #endif
 
-            /* copy the memory */
-            copy = gst_buffer_copy (*buffer);
+            /* copy the buffer */
+            copy = gst_buffer_copy_region (*buffer,
+                GST_BUFFER_COPY_ALL | GST_BUFFER_COPY_DEEP, 0, -1);
             GST_LOG_OBJECT (pool, "copy buffer %p->%p", *buffer, copy);
 
             /* and requeue so that we can continue capturing */
diff --git a/sys/v4l2/gstv4l2bufferpool.h b/sys/v4l2/gstv4l2bufferpool.h
index 90ccad431..3582bcea9 100644
--- a/sys/v4l2/gstv4l2bufferpool.h
+++ b/sys/v4l2/gstv4l2bufferpool.h
@@ -32,7 +32,6 @@ typedef struct _GstV4l2BufferPoolClass GstV4l2BufferPoolClass;
 typedef struct _GstV4l2Meta GstV4l2Meta;
 
 #include "gstv4l2object.h"
-//#include "v4l2_calls.h"
 
 GST_DEBUG_CATEGORY_EXTERN (v4l2buffer_debug);
 
diff --git a/tests/check/Makefile.in b/tests/check/Makefile.in
index d1b0bb22c..a7a603ea1 100644
--- a/tests/check/Makefile.in
+++ b/tests/check/Makefile.in
@@ -3816,6 +3816,7 @@ LOOPS ?= 10
 	$(VALGRIND_PATH) -q					\
 	$(foreach s,$(SUPPRESSIONS),--suppressions=$(s))	\
 	--tool=memcheck --leak-check=full --trace-children=yes	\
+	--show-possibly-lost=no                                 \
 	--leak-resolution=high --num-callers=20			\
 	./$* 2>&1 | tee valgrind.log
 	@if grep "==" valgrind.log > /dev/null 2>&1; then	\
@@ -3833,6 +3834,7 @@ LOOPS ?= 10
 	$(VALGRIND_PATH) -q 					\
 	$(foreach s,$(SUPPRESSIONS),--suppressions=$(s))	\
 	--tool=memcheck --leak-check=full --trace-children=yes	\
+	--show-possibly-lost=no                                 \
 	--leak-resolution=high --num-callers=20			\
 	--gen-suppressions=all					\
 	./$* 2>&1 | tee suppressions.log
diff --git a/tests/check/elements/rtpjitterbuffer.c b/tests/check/elements/rtpjitterbuffer.c
index bc868cba1..f7d9e4107 100644
--- a/tests/check/elements/rtpjitterbuffer.c
+++ b/tests/check/elements/rtpjitterbuffer.c
@@ -110,7 +110,8 @@ setup_jitterbuffer (gint num_buffers)
   for (i = 0; i < num_buffers; i++) {
     buffer = gst_buffer_new_and_alloc (sizeof (in));
     gst_buffer_fill (buffer, 0, in, sizeof (in));
-    GST_BUFFER_TIMESTAMP (buffer) = ts;
+    GST_BUFFER_DTS (buffer) = ts;
+    GST_BUFFER_PTS (buffer) = ts;
     GST_BUFFER_DURATION (buffer) = tso;
     gst_mini_object_weak_ref (GST_MINI_OBJECT (buffer), buffer_dropped, NULL);
     GST_DEBUG ("created buffer: %p", buffer);
@@ -190,7 +191,8 @@ check_jitterbuffer_results (GstElement * jitterbuffer, gint num_buffers)
   fail_unless_equals_int (g_list_length (buffers), num_buffers);
   for (node = buffers; node; node = g_list_next (node)) {
     fail_if ((buffer = (GstBuffer *) node->data) == NULL);
-    fail_if (GST_BUFFER_TIMESTAMP (buffer) != ts);
+    fail_if (GST_BUFFER_PTS (buffer) != ts);
+    fail_if (GST_BUFFER_DTS (buffer) != ts);
     gst_buffer_map (buffer, &map, GST_MAP_READ);
     cur_sn = ((guint16) map.data[2] << 8) | map.data[3];
     cur_ts = ((guint32) map.data[4] << 24) | ((guint32) map.data[5] << 16) |
@@ -317,7 +319,8 @@ GST_START_TEST (test_basetime)
   fail_unless_equals_int ((g_list_length (buffers) + num_dropped), num_buffers);
 
   buffer = (GstBuffer *) buffers->data;
-  fail_unless (GST_BUFFER_TIMESTAMP (buffer) != (num_buffers * tso));
+  fail_unless (GST_BUFFER_DTS (buffer) != (num_buffers * tso));
+  fail_unless (GST_BUFFER_PTS (buffer) != (num_buffers * tso));
 
   /* cleanup */
   cleanup_jitterbuffer (jitterbuffer);
@@ -336,8 +339,10 @@ typedef struct
   GstPad *test_sink_pad, *test_src_pad;
   GstClock *clock;
   GAsyncQueue *buf_queue;
-  GAsyncQueue *event_queue;
+  GAsyncQueue *sink_event_queue;
+  GAsyncQueue *src_event_queue;
   gint lost_event_count;
+  gint rtx_event_count;
 } TestData;
 
 static GstCaps *
@@ -361,7 +366,8 @@ generate_test_buffer (GstClockTime gst_ts,
   GstRTPBuffer rtp = GST_RTP_BUFFER_INIT;
 
   buf = gst_rtp_buffer_new_allocate (payload_size, 0, 0);
-  GST_BUFFER_TIMESTAMP (buf) = gst_ts;
+  GST_BUFFER_DTS (buf) = gst_ts;
+  GST_BUFFER_PTS (buf) = gst_ts;
 
   gst_rtp_buffer_map (buf, GST_MAP_READWRITE, &rtp);
   gst_rtp_buffer_set_payload_type (&rtp, pcmu_payload_type);
@@ -395,10 +401,31 @@ test_sink_pad_event_cb (GstPad * pad, GstObject * parent, GstEvent * event)
 
   GST_DEBUG ("got event %" GST_PTR_FORMAT, event);
 
-  if (strcmp (gst_structure_get_name (structure), "GstRTPPacketLost") == 0)
+  if (strcmp (gst_structure_get_name (structure), "GstRTPPacketLost") == 0) {
     data->lost_event_count++;
+    GST_DEBUG ("lost event count %d", data->lost_event_count);
+  }
 
-  g_async_queue_push (data->event_queue, event);
+  g_async_queue_push (data->sink_event_queue, event);
+  return TRUE;
+}
+
+static gboolean
+test_src_pad_event_cb (GstPad * pad, GstObject * parent, GstEvent * event)
+{
+  TestData *data = gst_pad_get_element_private (pad);
+  const GstStructure *structure = gst_event_get_structure (event);
+
+  GST_DEBUG ("got event %" GST_PTR_FORMAT, event);
+
+  if (structure
+      && strcmp (gst_structure_get_name (structure),
+          "GstRTPRetransmissionRequest") == 0) {
+    data->rtx_event_count++;
+    GST_DEBUG ("rtx event count %d", data->rtx_event_count);
+  }
+
+  g_async_queue_push (data->src_event_queue, event);
   return TRUE;
 }
 
@@ -422,33 +449,39 @@ setup_testharness (TestData * data)
   g_assert_cmpint (gst_element_set_state (data->jitter_buffer,
           GST_STATE_PLAYING), !=, GST_STATE_CHANGE_FAILURE);
 
+  /* set up the buf and event queues */
+  data->buf_queue =
+      g_async_queue_new_full ((GDestroyNotify) gst_mini_object_unref);
+  data->sink_event_queue =
+      g_async_queue_new_full ((GDestroyNotify) gst_mini_object_unref);
+  data->src_event_queue =
+      g_async_queue_new_full ((GDestroyNotify) gst_mini_object_unref);
+
+  data->lost_event_count = 0;
+  data->rtx_event_count = 0;
+
   /* link in the test source-pad */
   data->test_src_pad = gst_pad_new ("src", GST_PAD_SRC);
+  gst_pad_set_element_private (data->test_src_pad, data);
+  gst_pad_set_event_function (data->test_src_pad, test_src_pad_event_cb);
   jb_sink_pad = gst_element_get_static_pad (data->jitter_buffer, "sink");
   g_assert_cmpint (gst_pad_link (data->test_src_pad, jb_sink_pad), ==,
       GST_PAD_LINK_OK);
-  g_assert (gst_pad_set_active (data->test_src_pad, TRUE));
   gst_object_unref (jb_sink_pad);
 
   /* link in the test sink-pad */
   data->test_sink_pad = gst_pad_new ("sink", GST_PAD_SINK);
+  gst_pad_set_element_private (data->test_sink_pad, data);
   gst_pad_set_caps (data->test_sink_pad, generate_caps ());
   gst_pad_set_chain_function (data->test_sink_pad, test_sink_pad_chain_cb);
   gst_pad_set_event_function (data->test_sink_pad, test_sink_pad_event_cb);
   jb_src_pad = gst_element_get_static_pad (data->jitter_buffer, "src");
   g_assert_cmpint (gst_pad_link (jb_src_pad, data->test_sink_pad), ==,
       GST_PAD_LINK_OK);
-  g_assert (gst_pad_set_active (data->test_sink_pad, TRUE));
   gst_object_unref (jb_src_pad);
 
-  /* set up the buf and event queues */
-  data->buf_queue =
-      g_async_queue_new_full ((GDestroyNotify) gst_mini_object_unref);
-  data->event_queue =
-      g_async_queue_new_full ((GDestroyNotify) gst_mini_object_unref);
-
-  data->lost_event_count = 0;
-  gst_pad_set_element_private (data->test_sink_pad, data);
+  g_assert (gst_pad_set_active (data->test_src_pad, TRUE));
+  g_assert (gst_pad_set_active (data->test_sink_pad, TRUE));
 
   gst_segment_init (&seg, GST_FORMAT_TIME);
 
@@ -457,7 +490,7 @@ setup_testharness (TestData * data)
   gst_pad_set_caps (data->test_src_pad, generate_caps ());
   gst_pad_push_event (data->test_src_pad, gst_event_new_segment (&seg));
 
-  while ((obj = g_async_queue_try_pop (data->event_queue)))
+  while ((obj = g_async_queue_try_pop (data->sink_event_queue)))
     gst_mini_object_unref (obj);
 }
 
@@ -482,8 +515,10 @@ destroy_testharness (TestData * data)
   g_async_queue_unref (data->buf_queue);
   data->buf_queue = NULL;
 
-  g_async_queue_unref (data->event_queue);
-  data->event_queue = NULL;
+  g_async_queue_unref (data->sink_event_queue);
+  data->sink_event_queue = NULL;
+  g_async_queue_unref (data->src_event_queue);
+  data->src_event_queue = NULL;
 
   data->lost_event_count = 0;
 }
@@ -499,6 +534,7 @@ verify_lost_event (GstEvent * event, guint32 expected_seqnum,
   GstClockTime timestamp;
   GstClockTime duration;
   gboolean late;
+
   g_assert (gst_structure_get_uint (s, "seqnum", &seqnum));
 
   value = gst_structure_get_value (s, "timestamp");
@@ -517,11 +553,41 @@ verify_lost_event (GstEvent * event, guint32 expected_seqnum,
   g_assert (late == expected_late);
 }
 
+static void
+verify_rtx_event (GstEvent * event, guint32 expected_seqnum,
+    GstClockTime expected_timestamp, guint expected_delay,
+    GstClockTime expected_spacing)
+{
+  const GstStructure *s = gst_event_get_structure (event);
+  const GValue *value;
+  guint32 seqnum;
+  GstClockTime timestamp, spacing;
+  guint delay;
+
+  g_assert (gst_structure_get_uint (s, "seqnum", &seqnum));
+
+  value = gst_structure_get_value (s, "running-time");
+  g_assert (value && G_VALUE_HOLDS_UINT64 (value));
+  timestamp = g_value_get_uint64 (value);
+
+  value = gst_structure_get_value (s, "delay");
+  g_assert (value && G_VALUE_HOLDS_UINT (value));
+  delay = g_value_get_uint (value);
+
+  value = gst_structure_get_value (s, "packet-spacing");
+  g_assert (value && G_VALUE_HOLDS_UINT64 (value));
+  spacing = g_value_get_uint64 (value);
+
+  g_assert_cmpint (seqnum, ==, expected_seqnum);
+  g_assert_cmpint (timestamp, ==, expected_timestamp);
+  g_assert_cmpint (delay, ==, expected_delay);
+  g_assert_cmpint (spacing, ==, expected_spacing);
+}
+
 GST_START_TEST (test_only_one_lost_event_on_large_gaps)
 {
   TestData data;
   GstClockID id, test_id;
-  guint64 timeout;
   GstBuffer *in_buf, *out_buf;
   GstEvent *out_event;
   gint jb_latency_ms = 200;
@@ -529,7 +595,6 @@ GST_START_TEST (test_only_one_lost_event_on_large_gaps)
   GstRTPBuffer rtp = GST_RTP_BUFFER_INIT;
 
   setup_testharness (&data);
-  timeout = 20 * G_USEC_PER_SEC;
 
   g_object_set (data.jitter_buffer, "latency", jb_latency_ms, NULL);
 
@@ -548,9 +613,10 @@ GST_START_TEST (test_only_one_lost_event_on_large_gaps)
       == id);
 
   /* check for the buffer coming out that was pushed in */
-  out_buf = g_async_queue_timeout_pop (data.buf_queue, timeout);
+  out_buf = g_async_queue_pop (data.buf_queue);
   g_assert (out_buf != NULL);
-  g_assert_cmpint (GST_BUFFER_TIMESTAMP (out_buf), ==, 0);
+  g_assert_cmpint (GST_BUFFER_DTS (out_buf), ==, 0);
+  g_assert_cmpint (GST_BUFFER_PTS (out_buf), ==, 0);
 
   /* move time ahead 10 seconds */
   gst_test_clock_set_time (GST_TEST_CLOCK (data.clock), 10 * GST_SECOND);
@@ -569,16 +635,13 @@ GST_START_TEST (test_only_one_lost_event_on_large_gaps)
   g_assert_cmpint (gst_pad_push (data.test_src_pad, in_buf), ==, GST_FLOW_OK);
 
   /* release the wait */
-  GST_DEBUG ("wait for id");
   gst_test_clock_wait_for_next_pending_id (GST_TEST_CLOCK (data.clock), &id);
-  GST_DEBUG ("got wait id %p", id);
   gst_test_clock_advance_time (GST_TEST_CLOCK (data.clock), GST_MSECOND * 20);
   test_id = gst_test_clock_process_next_clock_id (GST_TEST_CLOCK (data.clock));
-  GST_DEBUG ("process id %p", test_id);
   g_assert (id == test_id);
 
   /* we should now receive a packet-lost-event for buffers 1 through 489 */
-  out_event = g_async_queue_timeout_pop (data.event_queue, timeout);
+  out_event = g_async_queue_pop (data.sink_event_queue);
   g_assert (out_event != NULL);
   g_assert_cmpint (data.lost_event_count, ==, 1);
   verify_lost_event (out_event, 1, 1 * GST_MSECOND * 20, GST_MSECOND * 20 * 490,
@@ -595,13 +658,14 @@ GST_START_TEST (test_only_one_lost_event_on_large_gaps)
     }
   }
 
-  out_buf = g_async_queue_timeout_pop (data.buf_queue, timeout);
+  out_buf = g_async_queue_pop (data.buf_queue);
   g_assert (out_buf != NULL);
   g_assert (GST_BUFFER_FLAG_IS_SET (out_buf, GST_BUFFER_FLAG_DISCONT));
   gst_rtp_buffer_map (out_buf, GST_MAP_READ, &rtp);
   g_assert_cmpint (gst_rtp_buffer_get_seq (&rtp), ==, 500);
   gst_rtp_buffer_unmap (&rtp);
-  g_assert_cmpint (GST_BUFFER_TIMESTAMP (out_buf), ==, (10 * GST_SECOND));
+  g_assert_cmpint (GST_BUFFER_DTS (out_buf), ==, (10 * GST_SECOND));
+  g_assert_cmpint (GST_BUFFER_PTS (out_buf), ==, (10 * GST_SECOND));
 
   /* we get as many lost events as the the number of buffers the jitterbuffer
    * is able to wait for (+ the one we already got) */
@@ -616,7 +680,6 @@ GST_START_TEST (test_two_lost_one_arrives_in_time)
 {
   TestData data;
   GstClockID id;
-  guint64 timeout;
   GstBuffer *in_buf, *out_buf;
   GstEvent *out_event;
   gint jb_latency_ms = 100;
@@ -625,7 +688,6 @@ GST_START_TEST (test_two_lost_one_arrives_in_time)
   GstRTPBuffer rtp = GST_RTP_BUFFER_INIT;
 
   setup_testharness (&data);
-  timeout = 20 * G_USEC_PER_SEC;
 
   g_object_set (data.jitter_buffer, "latency", jb_latency_ms, NULL);
 
@@ -638,7 +700,7 @@ GST_START_TEST (test_two_lost_one_arrives_in_time)
   gst_test_clock_set_time (GST_TEST_CLOCK (data.clock), now);
   g_assert (gst_test_clock_process_next_clock_id (GST_TEST_CLOCK (data.clock))
       == id);
-  out_buf = g_async_queue_timeout_pop (data.buf_queue, timeout);
+  out_buf = g_async_queue_pop (data.buf_queue);
   g_assert (out_buf != NULL);
 
   /* push some buffers arriving in perfect time! */
@@ -649,9 +711,10 @@ GST_START_TEST (test_two_lost_one_arrives_in_time)
     g_assert_cmpint (gst_pad_push (data.test_src_pad, in_buf), ==, GST_FLOW_OK);
 
     /* check for the buffer coming out that was pushed in */
-    out_buf = g_async_queue_timeout_pop (data.buf_queue, timeout);
+    out_buf = g_async_queue_pop (data.buf_queue);
     g_assert (out_buf != NULL);
-    g_assert_cmpint (GST_BUFFER_TIMESTAMP (out_buf), ==, buffer_time);
+    g_assert_cmpint (GST_BUFFER_DTS (out_buf), ==, buffer_time);
+    g_assert_cmpint (GST_BUFFER_PTS (out_buf), ==, buffer_time);
   }
 
   /* hop over 2 packets and make another one (gap of 2) */
@@ -673,7 +736,7 @@ GST_START_TEST (test_two_lost_one_arrives_in_time)
       == id);
 
   /* we should now receive a packet-lost-event for buffer 3 */
-  out_event = g_async_queue_timeout_pop (data.event_queue, timeout);
+  out_event = g_async_queue_pop (data.sink_event_queue);
   g_assert (out_event != NULL);
   g_assert_cmpint (data.lost_event_count, ==, 1);
   verify_lost_event (out_event, 3, 3 * GST_MSECOND * 20, GST_MSECOND * 20,
@@ -686,7 +749,7 @@ GST_START_TEST (test_two_lost_one_arrives_in_time)
   g_assert_cmpint (gst_pad_push (data.test_src_pad, in_buf), ==, GST_FLOW_OK);
 
   /* verify that buffer 4 made it through! */
-  out_buf = g_async_queue_timeout_pop (data.buf_queue, timeout);
+  out_buf = g_async_queue_pop (data.buf_queue);
   g_assert (out_buf != NULL);
   g_assert (GST_BUFFER_FLAG_IS_SET (out_buf, GST_BUFFER_FLAG_DISCONT));
   gst_rtp_buffer_map (out_buf, GST_MAP_READ, &rtp);
@@ -694,7 +757,7 @@ GST_START_TEST (test_two_lost_one_arrives_in_time)
   gst_rtp_buffer_unmap (&rtp);
 
   /* and see that buffer 5 now arrives in a normal fashion */
-  out_buf = g_async_queue_timeout_pop (data.buf_queue, timeout);
+  out_buf = g_async_queue_pop (data.buf_queue);
   g_assert (out_buf != NULL);
   g_assert (!GST_BUFFER_FLAG_IS_SET (out_buf, GST_BUFFER_FLAG_DISCONT));
   gst_rtp_buffer_map (out_buf, GST_MAP_READ, &rtp);
@@ -713,7 +776,6 @@ GST_START_TEST (test_late_packets_still_makes_lost_events)
 {
   TestData data;
   GstClockID id;
-  guint64 timeout;
   GstBuffer *in_buf, *out_buf;
   GstEvent *out_event;
   gint jb_latency_ms = 10;
@@ -722,7 +784,6 @@ GST_START_TEST (test_late_packets_still_makes_lost_events)
   GstRTPBuffer rtp = GST_RTP_BUFFER_INIT;
 
   setup_testharness (&data);
-  timeout = 20 * G_USEC_PER_SEC;
 
   g_object_set (data.jitter_buffer, "latency", jb_latency_ms, NULL);
 
@@ -735,7 +796,7 @@ GST_START_TEST (test_late_packets_still_makes_lost_events)
   gst_test_clock_wait_for_next_pending_id (GST_TEST_CLOCK (data.clock), &id);
   g_assert (gst_test_clock_process_next_clock_id (GST_TEST_CLOCK (data.clock))
       == id);
-  out_buf = g_async_queue_timeout_pop (data.buf_queue, timeout);
+  out_buf = g_async_queue_pop (data.buf_queue);
   g_assert (out_buf != NULL);
 
   /* push some buffers in! */
@@ -745,9 +806,10 @@ GST_START_TEST (test_late_packets_still_makes_lost_events)
     g_assert_cmpint (gst_pad_push (data.test_src_pad, in_buf), ==, GST_FLOW_OK);
 
     /* check for the buffer coming out that was pushed in */
-    out_buf = g_async_queue_timeout_pop (data.buf_queue, timeout);
+    out_buf = g_async_queue_pop (data.buf_queue);
     g_assert (out_buf != NULL);
-    g_assert_cmpint (GST_BUFFER_TIMESTAMP (out_buf), ==, buffer_time);
+    g_assert_cmpint (GST_BUFFER_DTS (out_buf), ==, buffer_time);
+    g_assert_cmpint (GST_BUFFER_PTS (out_buf), ==, buffer_time);
   }
 
   /* hop over 2 packets and make another one (gap of 2) */
@@ -757,14 +819,14 @@ GST_START_TEST (test_late_packets_still_makes_lost_events)
   g_assert_cmpint (gst_pad_push (data.test_src_pad, in_buf), ==, GST_FLOW_OK);
 
   /* we should now receive a packet-lost-event for buffer 3 and 4 */
-  out_event = g_async_queue_timeout_pop (data.event_queue, timeout);
+  out_event = g_async_queue_pop (data.sink_event_queue);
   g_assert (out_event != NULL);
   g_assert_cmpint (data.lost_event_count, ==, 1);
   verify_lost_event (out_event, 3, 3 * GST_MSECOND * 20, GST_MSECOND * 20 * 2,
       TRUE);
 
   /* verify that buffer 5 made it through! */
-  out_buf = g_async_queue_timeout_pop (data.buf_queue, timeout);
+  out_buf = g_async_queue_pop (data.buf_queue);
   g_assert (out_buf != NULL);
   g_assert (GST_BUFFER_FLAG_IS_SET (out_buf, GST_BUFFER_FLAG_DISCONT));
   gst_rtp_buffer_map (out_buf, GST_MAP_READ, &rtp);
@@ -783,7 +845,6 @@ GST_START_TEST (test_all_packets_are_timestamped_zero)
 {
   TestData data;
   GstClockID id;
-  guint64 timeout;
   GstBuffer *in_buf, *out_buf;
   GstEvent *out_event;
   gint jb_latency_ms = 10;
@@ -791,7 +852,6 @@ GST_START_TEST (test_all_packets_are_timestamped_zero)
   GstRTPBuffer rtp = GST_RTP_BUFFER_INIT;
 
   setup_testharness (&data);
-  timeout = 20 * G_USEC_PER_SEC;
 
   g_object_set (data.jitter_buffer, "latency", jb_latency_ms, NULL);
 
@@ -804,7 +864,7 @@ GST_START_TEST (test_all_packets_are_timestamped_zero)
   gst_test_clock_wait_for_next_pending_id (GST_TEST_CLOCK (data.clock), &id);
   g_assert (gst_test_clock_process_next_clock_id (GST_TEST_CLOCK (data.clock))
       == id);
-  out_buf = g_async_queue_timeout_pop (data.buf_queue, timeout);
+  out_buf = g_async_queue_pop (data.buf_queue);
   g_assert (out_buf != NULL);
 
   /* push some buffers in! */
@@ -813,9 +873,10 @@ GST_START_TEST (test_all_packets_are_timestamped_zero)
     g_assert_cmpint (gst_pad_push (data.test_src_pad, in_buf), ==, GST_FLOW_OK);
 
     /* check for the buffer coming out that was pushed in */
-    out_buf = g_async_queue_timeout_pop (data.buf_queue, timeout);
+    out_buf = g_async_queue_pop (data.buf_queue);
     g_assert (out_buf != NULL);
-    g_assert_cmpint (GST_BUFFER_TIMESTAMP (out_buf), ==, 0);
+    g_assert_cmpint (GST_BUFFER_DTS (out_buf), ==, 0);
+    g_assert_cmpint (GST_BUFFER_PTS (out_buf), ==, 0);
   }
 
   /* hop over 2 packets and make another one (gap of 2) */
@@ -824,25 +885,25 @@ GST_START_TEST (test_all_packets_are_timestamped_zero)
   g_assert_cmpint (gst_pad_push (data.test_src_pad, in_buf), ==, GST_FLOW_OK);
 
   /* we should now receive a packet-lost-event for buffer 3 and 4 */
-  out_event = g_async_queue_timeout_pop (data.event_queue, timeout);
+  out_event = g_async_queue_pop (data.sink_event_queue);
   g_assert (out_event != NULL);
   verify_lost_event (out_event, 3, 0, 0, FALSE);
 
-  out_event = g_async_queue_timeout_pop (data.event_queue, timeout);
+  out_event = g_async_queue_pop (data.sink_event_queue);
   g_assert (out_event != NULL);
   verify_lost_event (out_event, 4, 0, 0, FALSE);
 
   g_assert_cmpint (data.lost_event_count, ==, 2);
 
   /* verify that buffer 5 made it through! */
-  out_buf = g_async_queue_timeout_pop (data.buf_queue, timeout);
+  out_buf = g_async_queue_pop (data.buf_queue);
   g_assert (out_buf != NULL);
   g_assert (GST_BUFFER_FLAG_IS_SET (out_buf, GST_BUFFER_FLAG_DISCONT));
   gst_rtp_buffer_map (out_buf, GST_MAP_READ, &rtp);
   g_assert_cmpint (gst_rtp_buffer_get_seq (&rtp), ==, 5);
   gst_rtp_buffer_unmap (&rtp);
 
-  /* should still have only seen 1 packet lost event */
+  /* should still have only seen 2 packet lost events */
   g_assert_cmpint (data.lost_event_count, ==, 2);
 
   destroy_testharness (&data);
@@ -850,6 +911,356 @@ GST_START_TEST (test_all_packets_are_timestamped_zero)
 
 GST_END_TEST;
 
+GST_START_TEST (test_rtx_expected_next)
+{
+  TestData data;
+  GstClockID id, tid;
+  GstBuffer *in_buf, *out_buf;
+  GstEvent *out_event;
+  gint jb_latency_ms = 200;
+
+  setup_testharness (&data);
+  g_object_set (data.jitter_buffer, "do-retransmission", TRUE, NULL);
+  g_object_set (data.jitter_buffer, "latency", jb_latency_ms, NULL);
+  g_object_set (data.jitter_buffer, "rtx-retry-period", 120, NULL);
+
+  gst_test_clock_set_time (GST_TEST_CLOCK (data.clock), 0);
+
+  /* push the first buffer in */
+  in_buf = generate_test_buffer (0 * GST_MSECOND, TRUE, 0, 0);
+  g_assert_cmpint (gst_pad_push (data.test_src_pad, in_buf), ==, GST_FLOW_OK);
+
+  gst_test_clock_set_time (GST_TEST_CLOCK (data.clock), 20 * GST_MSECOND);
+
+  gst_test_clock_wait_for_next_pending_id (GST_TEST_CLOCK (data.clock), &id);
+
+  /* put second buffer, the jitterbuffer should now know that the packet spacing
+   * is 20ms and should ask for retransmission of seqnum 2 in 20ms */
+  in_buf = generate_test_buffer (20 * GST_MSECOND, TRUE, 1, 160);
+  g_assert_cmpint (gst_pad_push (data.test_src_pad, in_buf), ==, GST_FLOW_OK);
+
+  gst_test_clock_wait_for_next_pending_id (GST_TEST_CLOCK (data.clock), &id);
+  gst_test_clock_set_time (GST_TEST_CLOCK (data.clock), 60 * GST_MSECOND);
+  g_assert (gst_test_clock_process_next_clock_id (GST_TEST_CLOCK (data.clock))
+      == id);
+
+  out_event = g_async_queue_pop (data.src_event_queue);
+  g_assert (out_event != NULL);
+  verify_rtx_event (out_event, 2, 40 * GST_MSECOND, 20, 20 * GST_MSECOND);
+
+  /* now we wait for the next timeout */
+  gst_test_clock_wait_for_next_pending_id (GST_TEST_CLOCK (data.clock), &id);
+  gst_test_clock_set_time (GST_TEST_CLOCK (data.clock), 100 * GST_MSECOND);
+  tid = gst_test_clock_process_next_clock_id (GST_TEST_CLOCK (data.clock));
+  g_assert (id == tid);
+
+  out_event = g_async_queue_pop (data.src_event_queue);
+  g_assert (out_event != NULL);
+  verify_rtx_event (out_event, 2, 40 * GST_MSECOND, 60, 20 * GST_MSECOND);
+
+  gst_test_clock_wait_for_next_pending_id (GST_TEST_CLOCK (data.clock), &id);
+  gst_test_clock_set_time (GST_TEST_CLOCK (data.clock), 140 * GST_MSECOND);
+  tid = gst_test_clock_process_next_clock_id (GST_TEST_CLOCK (data.clock));
+  g_assert (id == tid);
+
+  out_event = g_async_queue_pop (data.src_event_queue);
+  g_assert (out_event != NULL);
+  verify_rtx_event (out_event, 2, 40 * GST_MSECOND, 100, 20 * GST_MSECOND);
+
+  gst_test_clock_wait_for_next_pending_id (GST_TEST_CLOCK (data.clock), &id);
+  gst_test_clock_set_time (GST_TEST_CLOCK (data.clock), 200 * GST_MSECOND);
+  tid = gst_test_clock_process_next_clock_id (GST_TEST_CLOCK (data.clock));
+  g_assert (id == tid);
+
+  out_buf = g_async_queue_pop (data.buf_queue);
+  g_assert (out_buf != NULL);
+
+
+  gst_test_clock_wait_for_next_pending_id (GST_TEST_CLOCK (data.clock), &id);
+  gst_test_clock_set_time (GST_TEST_CLOCK (data.clock), 260 * GST_MSECOND);
+  g_assert (gst_test_clock_process_next_clock_id (GST_TEST_CLOCK (data.clock))
+      == id);
+
+  /* we should now receive a packet-lost-event for buffer 2 */
+  out_event = g_async_queue_pop (data.sink_event_queue);
+  g_assert (out_event != NULL);
+  verify_lost_event (out_event, 2, 40 * GST_MSECOND, 20 * GST_MSECOND, FALSE);
+
+  destroy_testharness (&data);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_rtx_two_missing)
+{
+  TestData data;
+  GstClockID id, tid;
+  GstBuffer *in_buf, *out_buf;
+  GstEvent *out_event;
+  gint jb_latency_ms = 200;
+  gint i;
+  GstRTPBuffer rtp = GST_RTP_BUFFER_INIT;
+
+  setup_testharness (&data);
+  g_object_set (data.jitter_buffer, "do-retransmission", TRUE, NULL);
+  g_object_set (data.jitter_buffer, "latency", jb_latency_ms, NULL);
+  g_object_set (data.jitter_buffer, "rtx-retry-period", 120, NULL);
+
+  gst_test_clock_set_time (GST_TEST_CLOCK (data.clock), 0);
+
+  /* push the first buffer in */
+  in_buf = generate_test_buffer (0 * GST_MSECOND, TRUE, 0, 0);
+  g_assert_cmpint (gst_pad_push (data.test_src_pad, in_buf), ==, GST_FLOW_OK);
+
+  gst_test_clock_set_time (GST_TEST_CLOCK (data.clock), 20 * GST_MSECOND);
+
+  /* put second buffer, the jitterbuffer should now know that the packet spacing
+   * is 20ms and should ask for retransmission of seqnum 2 at 60ms */
+  in_buf = generate_test_buffer (20 * GST_MSECOND, TRUE, 1, 160);
+  g_assert_cmpint (gst_pad_push (data.test_src_pad, in_buf), ==, GST_FLOW_OK);
+
+  /* push buffer 4, 2 and 3 are missing now, we should get retransmission events
+   * for 3 at 100ms*/
+  in_buf = generate_test_buffer (80 * GST_MSECOND, TRUE, 4, 4 * 160);
+  g_assert_cmpint (gst_pad_push (data.test_src_pad, in_buf), ==, GST_FLOW_OK);
+
+  /* wait for first retransmission request */
+  gst_test_clock_set_time (GST_TEST_CLOCK (data.clock), 60 * GST_MSECOND);
+  do {
+    gst_test_clock_wait_for_next_pending_id (GST_TEST_CLOCK (data.clock), &id);
+  } while (id !=
+      gst_test_clock_process_next_clock_id (GST_TEST_CLOCK (data.clock)));
+
+  /* we should have 2 events now, one for 2 and another for 3 */
+  out_event = g_async_queue_pop (data.src_event_queue);
+  g_assert (out_event != NULL);
+  verify_rtx_event (out_event, 2, 40 * GST_MSECOND, 20, 20 * GST_MSECOND);
+  out_event = g_async_queue_pop (data.src_event_queue);
+  g_assert (out_event != NULL);
+  verify_rtx_event (out_event, 3, 60 * GST_MSECOND, 0, 20 * GST_MSECOND);
+
+  /* now we wait for the next timeout */
+  gst_test_clock_wait_for_next_pending_id (GST_TEST_CLOCK (data.clock), &id);
+  gst_test_clock_set_time (GST_TEST_CLOCK (data.clock), 100 * GST_MSECOND);
+  tid = gst_test_clock_process_next_clock_id (GST_TEST_CLOCK (data.clock));
+  g_assert (id == tid);
+
+  /* we should have 2 events now, one for 2 and another for 3 */
+  out_event = g_async_queue_pop (data.src_event_queue);
+  g_assert (out_event != NULL);
+  verify_rtx_event (out_event, 2, 40 * GST_MSECOND, 60, 20 * GST_MSECOND);
+  out_event = g_async_queue_pop (data.src_event_queue);
+  g_assert (out_event != NULL);
+  verify_rtx_event (out_event, 3, 60 * GST_MSECOND, 40, 20 * GST_MSECOND);
+
+  /* make buffer 3 */
+  in_buf = generate_test_buffer (60 * GST_MSECOND, TRUE, 3, 3 * 160);
+  g_assert_cmpint (gst_pad_push (data.test_src_pad, in_buf), ==, GST_FLOW_OK);
+
+  /* make more buffers */
+  for (i = 5; i < 15; i++) {
+    in_buf = generate_test_buffer (i * 20 * GST_MSECOND, TRUE, i, i * 160);
+    g_assert_cmpint (gst_pad_push (data.test_src_pad, in_buf), ==, GST_FLOW_OK);
+  }
+
+  gst_test_clock_wait_for_next_pending_id (GST_TEST_CLOCK (data.clock), &id);
+  gst_test_clock_set_time (GST_TEST_CLOCK (data.clock), 140 * GST_MSECOND);
+  tid = gst_test_clock_process_next_clock_id (GST_TEST_CLOCK (data.clock));
+  g_assert (id == tid);
+
+  /* now we only get requests for 2 */
+  out_event = g_async_queue_pop (data.src_event_queue);
+  g_assert (out_event != NULL);
+  verify_rtx_event (out_event, 2, 40 * GST_MSECOND, 100, 20 * GST_MSECOND);
+
+  /* this is when buffer 0 deadline expires */
+  gst_test_clock_wait_for_next_pending_id (GST_TEST_CLOCK (data.clock), &id);
+  gst_test_clock_set_time (GST_TEST_CLOCK (data.clock), 200 * GST_MSECOND);
+  tid = gst_test_clock_process_next_clock_id (GST_TEST_CLOCK (data.clock));
+  g_assert (id == tid);
+
+  for (i = 0; i < 2; i++) {
+    GST_DEBUG ("popping %d", i);
+    out_buf = g_async_queue_pop (data.buf_queue);
+    g_assert (out_buf != NULL);
+    gst_rtp_buffer_map (out_buf, GST_MAP_READ, &rtp);
+    g_assert_cmpint (gst_rtp_buffer_get_seq (&rtp), ==, i);
+    gst_rtp_buffer_unmap (&rtp);
+  }
+
+  /* this is when 2 is lost */
+  gst_test_clock_wait_for_next_pending_id (GST_TEST_CLOCK (data.clock), &id);
+  gst_test_clock_set_time (GST_TEST_CLOCK (data.clock), 240 * GST_MSECOND);
+  tid = gst_test_clock_process_next_clock_id (GST_TEST_CLOCK (data.clock));
+  g_assert (id == tid);
+
+  /* we should now receive a packet-lost-event for buffer 2 */
+  out_event = g_async_queue_pop (data.sink_event_queue);
+  g_assert (out_event != NULL);
+  verify_lost_event (out_event, 2, 40 * GST_MSECOND, 20 * GST_MSECOND, FALSE);
+
+  /* verify that buffers made it through! */
+  for (i = 3; i < 15; i++) {
+    GST_DEBUG ("popping %d", i);
+    out_buf = g_async_queue_pop (data.buf_queue);
+    g_assert (out_buf != NULL);
+    gst_rtp_buffer_map (out_buf, GST_MAP_READ, &rtp);
+    g_assert_cmpint (gst_rtp_buffer_get_seq (&rtp), ==, i);
+    gst_rtp_buffer_unmap (&rtp);
+  }
+  /* should still have only seen 1 packet lost events */
+  g_assert_cmpint (data.lost_event_count, ==, 1);
+
+  destroy_testharness (&data);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_rtx_packet_delay)
+{
+  TestData data;
+  GstClockID id, tid;
+  GstBuffer *in_buf, *out_buf;
+  GstEvent *out_event;
+  gint jb_latency_ms = 200;
+  gint i;
+  GstRTPBuffer rtp = GST_RTP_BUFFER_INIT;
+
+  setup_testharness (&data);
+  g_object_set (data.jitter_buffer, "do-retransmission", TRUE, NULL);
+  g_object_set (data.jitter_buffer, "latency", jb_latency_ms, NULL);
+  g_object_set (data.jitter_buffer, "rtx-retry-period", 120, NULL);
+
+  gst_test_clock_set_time (GST_TEST_CLOCK (data.clock), 0);
+
+  /* push the first buffer in */
+  in_buf = generate_test_buffer (0 * GST_MSECOND, TRUE, 0, 0);
+  GST_BUFFER_FLAG_SET (in_buf, GST_BUFFER_FLAG_DISCONT);
+  g_assert_cmpint (gst_pad_push (data.test_src_pad, in_buf), ==, GST_FLOW_OK);
+
+  gst_test_clock_set_time (GST_TEST_CLOCK (data.clock), 20 * GST_MSECOND);
+
+  /* put second buffer, the jitterbuffer should now know that the packet spacing
+   * is 20ms and should ask for retransmission of seqnum 2 at 60ms */
+  in_buf = generate_test_buffer (20 * GST_MSECOND, TRUE, 1, 160);
+  g_assert_cmpint (gst_pad_push (data.test_src_pad, in_buf), ==, GST_FLOW_OK);
+
+  /* push buffer 8, 2 -> 7 are missing now. note that the rtp time is the same
+   * as packet 1 because it was part of a fragmented payload. This means that
+   * the estimate for 2 could be refined now to 20ms. also packet 2, 3 and 4 are
+   * exceeding the max allowed reorder distance and should request a
+   * retransmission right away */
+  in_buf = generate_test_buffer (20 * GST_MSECOND, TRUE, 8, 8 * 160);
+  g_assert_cmpint (gst_pad_push (data.test_src_pad, in_buf), ==, GST_FLOW_OK);
+
+  /* we should now receive retransmission requests for 2 -> 5 */
+  out_event = g_async_queue_pop (data.src_event_queue);
+  g_assert (out_event != NULL);
+  verify_rtx_event (out_event, 2, 20 * GST_MSECOND, 40, 20 * GST_MSECOND);
+
+  for (i = 3; i < 5; i++) {
+    GST_DEBUG ("popping %d", i);
+    out_event = g_async_queue_pop (data.src_event_queue);
+    g_assert (out_event != NULL);
+    verify_rtx_event (out_event, i, 20 * GST_MSECOND, 0, 20 * GST_MSECOND);
+  }
+  g_assert_cmpint (data.rtx_event_count, ==, 3);
+
+  /* push 9, this should immediately request retransmission of 5 */
+  in_buf = generate_test_buffer (20 * GST_MSECOND, TRUE, 9, 9 * 160);
+  g_assert_cmpint (gst_pad_push (data.test_src_pad, in_buf), ==, GST_FLOW_OK);
+
+  /* we should now receive retransmission requests for 5 */
+  out_event = g_async_queue_pop (data.src_event_queue);
+  g_assert (out_event != NULL);
+  verify_rtx_event (out_event, 5, 20 * GST_MSECOND, 0, 20 * GST_MSECOND);
+
+  /* wait for timeout for rtx 6 -> 7 */
+  gst_test_clock_wait_for_next_pending_id (GST_TEST_CLOCK (data.clock), &id);
+  tid = gst_test_clock_process_next_clock_id (GST_TEST_CLOCK (data.clock));
+  g_assert (id == tid);
+
+  for (i = 6; i < 8; i++) {
+    GST_DEBUG ("popping %d", i);
+    out_event = g_async_queue_pop (data.src_event_queue);
+    g_assert (out_event != NULL);
+    verify_rtx_event (out_event, i, 20 * GST_MSECOND, 0, 20 * GST_MSECOND);
+  }
+
+  /* churn through sync_times until the new buffer gets pushed out */
+  while (g_async_queue_length (data.buf_queue) < 1) {
+    if (gst_test_clock_peek_next_pending_id (GST_TEST_CLOCK (data.clock), &id)) {
+      GstClockTime t = gst_clock_id_get_time (id);
+      if (t > gst_clock_get_time (data.clock)) {
+        gst_test_clock_set_time (GST_TEST_CLOCK (data.clock), t);
+      }
+      gst_test_clock_process_next_clock_id (GST_TEST_CLOCK (data.clock));
+    }
+  }
+
+  /* verify that buffer 0 and 1 made it through! */
+  for (i = 0; i < 2; i++) {
+    out_buf = g_async_queue_pop (data.buf_queue);
+    g_assert (out_buf != NULL);
+    if (i == 0)
+      g_assert (GST_BUFFER_FLAG_IS_SET (out_buf, GST_BUFFER_FLAG_DISCONT));
+    gst_rtp_buffer_map (out_buf, GST_MAP_READ, &rtp);
+    g_assert_cmpint (gst_rtp_buffer_get_seq (&rtp), ==, i);
+    gst_rtp_buffer_unmap (&rtp);
+  }
+
+  /* churn through sync_times until the next buffer gets pushed out */
+  while (g_async_queue_length (data.buf_queue) < 1) {
+    if (gst_test_clock_peek_next_pending_id (GST_TEST_CLOCK (data.clock), &id)) {
+      GstClockTime t = gst_clock_id_get_time (id);
+      if (t >= 240 * GST_MSECOND)
+        break;
+      if (t > gst_clock_get_time (data.clock)) {
+        gst_test_clock_set_time (GST_TEST_CLOCK (data.clock), t);
+      }
+      gst_test_clock_process_next_clock_id (GST_TEST_CLOCK (data.clock));
+    }
+  }
+
+  for (i = 2; i < 8; i++) {
+    GST_DEBUG ("popping lost event %d", i);
+    out_event = g_async_queue_pop (data.sink_event_queue);
+    g_assert (out_event != NULL);
+    verify_lost_event (out_event, i, 20 * GST_MSECOND, 0, FALSE);
+  }
+
+  /* verify that buffer 8 made it through! */
+  for (i = 8; i < 10; i++) {
+    GST_DEBUG ("popping buffer %d", i);
+    out_buf = g_async_queue_pop (data.buf_queue);
+    g_assert (out_buf != NULL);
+    if (i == 8)
+      g_assert (GST_BUFFER_FLAG_IS_SET (out_buf, GST_BUFFER_FLAG_DISCONT));
+    gst_rtp_buffer_map (out_buf, GST_MAP_READ, &rtp);
+    g_assert_cmpint (gst_rtp_buffer_get_seq (&rtp), ==, i);
+    gst_rtp_buffer_unmap (&rtp);
+  }
+
+  GST_DEBUG ("waiting for 240ms");
+  gst_test_clock_wait_for_next_pending_id (GST_TEST_CLOCK (data.clock), &id);
+  gst_test_clock_set_time (GST_TEST_CLOCK (data.clock), 240 * GST_MSECOND);
+  tid = gst_test_clock_process_next_clock_id (GST_TEST_CLOCK (data.clock));
+  g_assert (id == tid);
+
+  GST_DEBUG ("popping lost event 10");
+  out_event = g_async_queue_pop (data.sink_event_queue);
+  g_assert (out_event != NULL);
+  verify_lost_event (out_event, 10, 40 * GST_MSECOND, 20 * GST_MSECOND, FALSE);
+
+  /* should have seen 6 packet lost events */
+  g_assert_cmpint (data.lost_event_count, ==, 7);
+  g_assert_cmpint (data.rtx_event_count, ==, 26);
+
+  destroy_testharness (&data);
+}
+
+GST_END_TEST;
+
 static Suite *
 rtpjitterbuffer_suite (void)
 {
@@ -865,6 +1276,9 @@ rtpjitterbuffer_suite (void)
   tcase_add_test (tc_chain, test_two_lost_one_arrives_in_time);
   tcase_add_test (tc_chain, test_late_packets_still_makes_lost_events);
   tcase_add_test (tc_chain, test_all_packets_are_timestamped_zero);
+  tcase_add_test (tc_chain, test_rtx_expected_next);
+  tcase_add_test (tc_chain, test_rtx_two_missing);
+  tcase_add_test (tc_chain, test_rtx_packet_delay);
 
   return s;
 }
diff --git a/win32/common/config.h b/win32/common/config.h
index a73fb4ae5..cf4c3761f 100644
--- a/win32/common/config.h
+++ b/win32/common/config.h
@@ -58,7 +58,7 @@
 #define GST_PACKAGE_ORIGIN "Unknown package origin"
 
 /* GStreamer package release date/time for plugins as YYYY-MM-DD */
-#define GST_PACKAGE_RELEASE_DATETIME "2013-09-19"
+#define GST_PACKAGE_RELEASE_DATETIME "2013-09-24"
 
 /* Define if static plugins should be built */
 #undef GST_PLUGIN_BUILD_STATIC
@@ -385,7 +385,7 @@
 #define PACKAGE_NAME "GStreamer Good Plug-ins"
 
 /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "GStreamer Good Plug-ins 1.1.90"
+#define PACKAGE_STRING "GStreamer Good Plug-ins 1.2.0"
 
 /* Define to the one symbol short name of this package. */
 #define PACKAGE_TARNAME "gst-plugins-good"
@@ -394,7 +394,7 @@
 #undef PACKAGE_URL
 
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "1.1.90"
+#define PACKAGE_VERSION "1.2.0"
 
 /* directory where plugins are located */
 #ifdef _DEBUG
@@ -428,7 +428,7 @@
 #undef TARGET_CPU
 
 /* Version number of package */
-#define VERSION "1.1.90"
+#define VERSION "1.2.0"
 
 /* old wavpack API */
 #undef WAVPACK_OLD_API
-- 
GitLab