diff --git a/ChangeLog b/ChangeLog
index f9997d84316a2f98f83eeab64a0ca22a8f9dc302..682d26497b683a7c2a84b49245194e922f0cc719 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,9 +1,905 @@
+=== release 1.3.3 ===
+
+2014-06-22  Sebastian Dröge <slomo@coaxion.net>
+
+	* configure.ac:
+	  releasing 1.3.3
+
+2014-06-22 14:24:24 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* po/af.po:
+	* po/az.po:
+	* po/bg.po:
+	* po/ca.po:
+	* po/cs.po:
+	* po/da.po:
+	* po/de.po:
+	* po/el.po:
+	* po/en_GB.po:
+	* po/eo.po:
+	* po/es.po:
+	* po/eu.po:
+	* po/fi.po:
+	* po/fr.po:
+	* po/gl.po:
+	* po/hr.po:
+	* po/hu.po:
+	* po/id.po:
+	* po/it.po:
+	* po/ja.po:
+	* po/lt.po:
+	* po/lv.po:
+	* po/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:
+	  po: Update translations
+
+2014-06-21 01:32:03 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* ext/pulse/pulsedevicemonitor.c:
+	* sys/v4l2/gstv4l2devicemonitor.c:
+	  pulse, v4l2: update for device "klass" -> "device-class" rename
+
+2014-06-20 12:21:05 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/udp/gstmultiudpsink.c:
+	  multiudpsink: optimisation: avoid unnecessary memory ref/unrefs
+	  We know the buffer will stay valid and we will also not
+	  modify the buffer, we just want to send out the data.
+
+2014-06-19 14:59:48 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/udp/gstmultiudpsink.c:
+	* gst/udp/gstmultiudpsink.h:
+	  multiudpsink: avoid some unnecessary run-time type checks
+
+2014-06-19 16:17:23 +0200  Wim Taymans <wtaymans@redhat.com>
+
+	* gst/rtsp/gstrtspsrc.c:
+	  rtspsrc: pass the stream id when asking for crypto params
+	  This way the app can choose different parameters for each stream.
+
+2014-05-20 14:58:07 -0700  Aleix Conchillo Flaqué <aleix@oblong.com>
+
+	* gst/rtsp/gstrtspsrc.c:
+	* gst/rtsp/gstrtspsrc.h:
+	  rtspsrc: add support for key length parameters
+	  This patch adds supports for the incoming key management parameters for
+	  encryption and authentication key lengths.
+	  It also adds a new signal request-rtcp-key that allows the user to
+	  provide the crypto parameters and key for the RTCP stream.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=730473
+
+2014-06-19 15:25:01 +0200  Wim Taymans <wtaymans@redhat.com>
+
+	* gst/rtp/gstrtpvp8depay.c:
+	  vp8depay: fix header size checking
+	  Use a different variable name to make it clear that we are calculating
+	  the header size.
+	  Correctly check that we have enough bytes to read the header bits. We
+	  were checking if there were 5 bytes available in the header while we
+	  only needed 3, causing the packet to be discarded as too small.
+	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=723595
+
+2014-05-20 12:39:31 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* gst/rtp/gstrtph264pay.c:
+	* gst/rtp/gstrtph264pay.h:
+	  rtph264pay: propagate the GST_BUFFER_FLAG_DISCONT flag
+	  Similarly to what we did with the DELTA_UNIT flag, this patch
+	  propagates the DISCONT flag to the first RTP packet being used to transfer a
+	  DISCONT buffer.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=730563
+
+2014-05-06 17:42:14 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* gst/rtp/gstrtph264pay.c:
+	* gst/rtp/gstrtph264pay.h:
+	  rtph264pay: propagate the GST_BUFFER_FLAG_DELTA_UNIT flag
+	  Downstream elements may be interested knowing if a RTP packet is the start
+	  of a key frame (to implement a RTP extension as defined in the
+	  ONVIF Streaming Spec for example).
+	  We do this by checking the GST_BUFFER_FLAG_DELTA_UNIT flag we receive from
+	  upstream and propagate it to the *first* RTP packet outputted to transfer this
+	  buffer.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=730563
+
+2014-05-20 13:58:20 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* gst/rtp/gstrtpmp4gpay.c:
+	* gst/rtp/gstrtpmp4gpay.h:
+	  gstrtpmp4gpay: propagate the GST_BUFFER_FLAG_DISCONT flag
+	  Propagate the DISCONT flag to the first RTP packet being used to transfer
+	  a DISCONT buffer.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=730563
+
+2014-05-20 13:58:20 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* gst/rtp/gstrtpjpegpay.c:
+	  rtpjpegpay: propagate the GST_BUFFER_FLAG_DISCONT flag
+	  Propagate the DISCONT flag to the first RTP packet being used to transfer
+	  a DISCONT buffer.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=730563
+
+2014-06-18 15:03:25 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/avi/gstavidemux.c:
+	  avidemux: don't leak flow combiner
+
+2014-06-18 14:38:55 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/rtp/gstrtpj2kpay.c:
+	  rtpjp2kpay: pre-allocate buffer-list of the right size
+
+2014-06-18 14:34:09 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/rtp/gstrtpjpegpay.c:
+	  rtpjpegpay: pre-allocate buffer list of the right size
+
+2014-06-18 14:19:28 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/rtp/gstrtpmp4vpay.c:
+	  rtpmp4vpay: pre-allocate buffer list of the right size
+
+2014-06-18 13:44:31 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/rtp/gstrtpvp8pay.c:
+	  rtpvp8pay: allocate bitreader on the stack
+
+2014-06-18 13:29:47 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/rtp/gstrtpvp8pay.c:
+	  rtpvp8pay: post error message on bus on error and don't use g_message()
+
+2014-06-18 13:20:44 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/rtp/gstrtpvp8pay.c:
+	  rtpvp8pay: couple of minor optimisations
+	  Pre-allocate buffer list of the right size to avoid re-allocs.
+	  Avoid plenty of double runtime cast checks and re-doing the
+	  same calculation over and over again in rtp_vp8_calc_payload_len().
+	  Only call gst_buffer_get_size() once.
+
+2014-06-18 08:10:03 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/rtp/gstrtpgstpay.c:
+	  rtpgstpay: pre-allocate buffer list of the right size
+	  To avoid re-allocs.
+
+2014-06-18 07:52:05 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/rtp/gstrtph264pay.c:
+	  rtph264pay: pre-allocate bufferlist of the right size
+	  To avoid unnecessary re-allocs.
+
+2014-06-16 20:15:43 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/rtp/gstrtph264pay.c:
+	* tests/check/elements/rtp-payloading.c:
+	  rtph264pay: push single buffer directly, no need to wrap it in a bufferlist
+	  No point in a buffer list if we just have one single
+	  buffer to push. Fix up unit test to handle that case
+	  as well.
+
+2014-06-16 15:35:12 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/rtp/gstrtpvrawpay.c:
+	* gst/rtp/gstrtpvrawpay.h:
+	  rtpvrawpay: make chunks per frame configurable
+	  Bit of a misnomer because it's really chunks per field
+	  and not per frame, but we're going to ignore that for
+	  the time being.
+
+2014-06-16 14:52:16 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/rtp/gstrtpvrawpay.c:
+	* gst/rtp/gstrtpvrawpay.h:
+	  rtpvrawpay: remove unused variables
+
+2014-06-16 14:44:27 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/rtp/gstrtpvrawpay.c:
+	  rtpvrawpay: pre-allocate buffer lists of sufficient size
+	  Avoids unnecessary reallocs when appending buffers
+	  to the bufferlist.
+
+2014-06-16 13:51:03 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/rtp/gstrtpvrawpay.c:
+	  rtpvrawpay: micro-optimise variable access in inner loop
+	  Store some values that don't change during the execution
+	  of the inner loops locally, so the compiler knows that too.
+
+2014-06-16 13:38:47 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/rtp/gstrtpvrawpay.c:
+	  rtpvrawpay: use buffer lists
+	  Collect buffers to send out in buffer lists instead of
+	  pushing out single buffers one at a time. For HD video
+	  each frame might easily add up to a couple of thousand
+	  packets, multiply that by the frame rate and that's a
+	  lot of push() and sendmsg() calls per second.
+	  A good reason to push out buffers as early as possible is
+	  latency, so we don't accumulate the whole frame in a single
+	  buffer list, but instead push it out in a few chunks, which
+	  is hopefully a reasonable compromise.
+
+2014-06-16 16:40:07 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/udp/gstdynudpsink.c:
+	* gst/udp/gstmultiudpsink.c:
+	  udp: improve element descriptions for dynudpsink and multiudpsink
+
+2014-06-16 16:17:16 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/udp/gstdynudpsink.c:
+	* gst/udp/gstmultiudpsink.c:
+	  udp: remove suppression of compiler warnings for deprecated GLib API
+	  Not needed any more.
+
+2014-06-17 13:16:27 +0530  Ravi Kiran K N <ravi.kiran@samsung.com>
+
+	* gst/videobox/gstvideobox.c:
+	  videobox: Fix caps negotiation issue
+	  Make sure that if AYUV is received it will detect that it can produce
+	  both RGB and YUV formats
+	  Signed-off-by: Ravi Kiran K N <ravi.kiran@samsung.com>
+	  https://bugzilla.gnome.org/show_bug.cgi?id=725248
+
+2014-06-16 12:02:41 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/rtp/gstrtptheoradepay.c:
+	  rtptheoradepay: fix double frees
+	  Fix double-frees introduced to fix another coverity report.
+	  CID 1223053
+
+2014-06-13 10:12:07 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/udp/gstdynudpsink.c:
+	  dynudpsink: return FLUSHING when sendto got canceled, not an error
+
+2014-06-13 09:52:03 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* sys/oss/gstosshelper.c:
+	  oss: simplify probed caps before returning them
+	  Exposes all formats in the first structure if the
+	  rest is the same for all of them.
+
+2014-06-13 09:45:28 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* sys/oss/gstosshelper.c:
+	  oss: make sure 16-bit formats are before 8-bit formats in probed caps
+	  Probe supported formats in order of desirability rather than in
+	  what order they may happen to be in the formats bitmask. Fixes
+	  accidentally exposure of 8-bit formats in caps before 16-bit formats
+	  (in case where U16 was not supported S8 might be listed before S16).
+	  https://bugzilla.gnome.org/show_bug.cgi?id=706884
+
+2014-06-12 16:36:24 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* sys/v4l2/gstv4l2bufferpool.c:
+	  v4l2bufferpool: Cleanly handle v4l2_allocator_new failure
+
+2014-06-12 11:24:15 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* gst/rtp/gstrtptheoradepay.c:
+	  rtptheordepay: fix leaks
+	  Coverity 1212163
+
+2014-06-12 11:16:08 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* gst/rtp/gstrtpg729pay.c:
+	  rtpg729pay: leak fixes
+	  Coverity 1212159
+
+2014-06-12 11:11:38 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* gst/rtp/gstrtph263pay.c:
+	  rtph263pay: fix leak
+	  Coverity 1212157
+
+2014-06-12 10:43:53 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* gst/rtp/gstrtph263pay.c:
+	  rtph263pay: fix leaks
+	  Coverity 1212149
+
+2014-06-12 10:31:47 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* gst/rtp/gstrtpdvpay.c:
+	  rtpdvpay: catch failures to map buffer
+	  Coverity 1139741
+
+2014-06-11 17:43:42 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* gst/multipart/multipartdemux.c:
+	  multipartdemux: guard against having no MIME type
+	  The code would previously crash trying to insert a NULL string
+	  into a hash table.
+	  It does seem a little broken that indexing is done by MIME type
+	  and not by index though, unless the spec says there cannot be
+	  two parts with the same MIME type.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=659573
+
+2014-06-10 15:42:14 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* gst/multipart/multipartdemux.c:
+	* gst/multipart/multipartdemux.h:
+	  multipartdemux: Send stream-start event
+	  This event was not sent. Send it before caps, this requires the pad to
+	  be parented. This removes warning like: "Got data flow before
+	  stream-start event".
+	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=731475
+
+2014-06-10 15:33:33 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
+
+	* gst/isomp4/qtdemux.c:
+	  qtdemux: avoid looping indefinitely in broken svq3 files
+	  Abort if an atom with size 0 is read from within the svq3 stsd
+	  atoms
+	  https://bugzilla.gnome.org/show_bug.cgi?id=726512
+
+2014-06-10 10:52:23 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* ext/flac/gstflacdec.c:
+	  flacdec: add const where appropriate
+
+2014-06-09 10:39:20 +0200  Edward Hervey <bilboed@bilboed.com>
+
+	* ext/speex/gstspeexenc.c:
+	  speexenc: add missing va_end in variadic function
+	  Coverity 1139944
+
+2014-06-09 10:04:38 +0200  Edward Hervey <bilboed@bilboed.com>
+
+	* gst/flv/gstflvdemux.c:
+	  flvdemux: Attempt upstream seek first
+	  If we have an upstream element that can handle the seek (such as
+	  rtmpsrc), try to do that first before attempting it ourself.
+
+2014-06-04 11:34:27 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* gst/wavparse/gstwavparse.c:
+	  wavparse: do not include codec_data on raw audio caps
+	  If the wav header contains an extended chunk, we want to keep
+	  the codec_data field, but not for raw audio.
+	  This fixes some elements (such as adder) from failing to intersect
+	  raw audio caps which would otherwise be intersectable.
+
+2014-06-05 09:38:29 +0200  Edward Hervey <bilboed@bilboed.com>
+
+	* gst/flv/gstflvdemux.c:
+	  flvdemux: Query duration upstream first
+	  Upstream elements (like rtmpsrc) might be able to provide the duration
+	  more accurately than flvdemux. Especially with index-less vod files
+
+2014-05-30 19:37:57 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* sys/v4l2/gstv4l2bufferpool.c:
+	  v4l2bufferpool: Cleanup poll method and retry on EINTR/EAGAIN
+	  https://bugzilla.gnome.org/show_bug.cgi?id=731015
+
+2014-03-06 16:37:51 +0100  Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
+
+	* gst/flv/gstflvdemux.c:
+	  flvdemux: set RESYNC buffer flag when bridging large PTS gaps
+	  So downstream gets notified when this happens.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=725903
+
+2014-06-03 17:59:32 -0400  Olivier Crête <olivier.crete@collabora.com>
+
+	* tests/check/elements/rtprtx.c:
+	  rtprtx: Reset state on each iteration
+	  Otherwise it didn't wait for the test to finish before checking the results.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=728501
+
+2014-05-09 14:22:42 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/matroska/matroska-read-common.c:
+	  matroskademux: don't leak doctype string in error code path
+	  CID 1212145.
+
+2014-05-20 08:20:42 +0200  Edward Hervey <edward@collabora.com>
+
+	* ext/vpx/gstvp9enc.c:
+	  vp9enc: Don't dereference NULL checks
+	  CID #1197703
+
+2014-05-20 08:23:06 +0200  Edward Hervey <edward@collabora.com>
+
+	* ext/vpx/gstvp8enc.c:
+	  vp8enc: Don't dereference NULL variable
+	  CID #1139838
+
+2014-05-30 14:32:42 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
+
+	* gst/isomp4/qtdemux.c:
+	  qtdemux: upstream handles seek if fragmented and on time segment
+	  Otherwise we can reject seeks on local files that contain fragmented-like
+	  atoms like 'mvex'. Also improve a message log
+	  https://bugzilla.gnome.org/show_bug.cgi?id=730722
+
+2014-05-30 16:43:44 +0200  Wim Taymans <wtaymans@redhat.com>
+
+	* gst/rtp/gstrtph264depay.c:
+	  h264depay: make sure we call handle_nal for each NAL
+	  Call handle_nal for each NAL in the STAP-A RTP packet. This makes
+	  sure we correctly extract the SPS and PPS.
+	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=730999
+
+2014-05-07 14:09:06 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/soup/gstsouphttpsrc.c:
+	* ext/soup/gstsouphttpsrc.h:
+	  souphttpsrc: Add custom sticky event to contain the HTTP request and response headers
+	  This can be useful to e.g. get cookie information downstream.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=729707
+
+2014-05-26 19:47:39 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
+
+	* gst/avi/gstavidemux.c:
+	* gst/avi/gstavidemux.h:
+	  avidemux: remove stream last flow return
+	  GstPad already stores that information
+	  https://bugzilla.gnome.org/show_bug.cgi?id=709224
+
+2014-05-26 19:37:46 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
+
+	* gst/isomp4/qtdemux.c:
+	  qtdemux: remove last flow return from stream struct
+	  It is already stored on GstPad on core
+	  https://bugzilla.gnome.org/show_bug.cgi?id=709224
+
+2014-05-26 19:19:45 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
+
+	* gst/flv/gstflvdemux.c:
+	* gst/flv/gstflvdemux.h:
+	  flvdemux: Use GstFlowCombiner
+	  Use the flow combiner to have the standard combination results and avoid
+	  repeating the same code
+	  https://bugzilla.gnome.org/show_bug.cgi?id=709224
+
+2014-05-26 13:21:25 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
+
+	* gst/matroska/matroska-demux.c:
+	* gst/matroska/matroska-demux.h:
+	* gst/matroska/matroska-ids.h:
+	* gst/matroska/matroska-parse.c:
+	* gst/matroska/matroska-read-common.c:
+	  matroskademux: use GstFlowCombiner
+	  Use the flow combiner to have the standard combination results and avoid
+	  repeating the same code
+	  https://bugzilla.gnome.org/show_bug.cgi?id=709224
+
+2014-05-26 13:04:10 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
+
+	* gst/avi/gstavidemux.c:
+	* gst/avi/gstavidemux.h:
+	  avidemux: use GstFlowCombiner
+	  Removes flow return combination code to use the newly added GstFlowCombiner
+
+2014-05-23 17:53:00 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
+
+	* gst/isomp4/qtdemux.c:
+	* gst/isomp4/qtdemux.h:
+	  qtdemux: use GstFlowCombiner
+	  Removes the common code to combining flow returns to let it be
+	  handled by core gstutils' GstFlowCombiner
+	  https://bugzilla.gnome.org/show_bug.cgi?id=709224
+
+2014-05-26 10:59:55 -0400  Julien Isorce <julien.isorce@collabora.co.uk>
+
+	* sys/v4l2/gstv4l2sink.c:
+	  v4l2sink: implement gstvideosink.show_frame instead of gstbasesink.render
+	  It allows to show preroll frame. Especially it allows to update the
+	  frame when seeking in PAUSED state.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=722303
+
+2014-05-26 10:59:06 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* sys/v4l2/gstv4l2sink.c:
+	  v4l2sink: Cleanup old pad alloc declaration
+
+2014-05-26 12:34:42 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* sys/v4l2/gstv4l2bufferpool.c:
+	* sys/v4l2/gstv4l2sink.c:
+	  v4l2bufferpool: Copy already queued buffer
+	  This is required as during preroll we pass the first buffer twice, hence already
+	  queued. It is also useful, to allow filters replaying a previous rendered buffers.
+	  This will require 1 more buffer in sink if last-sample is enabled, since the last
+	  sample will not be the same as the currently queued buffer.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=722303
+
+2014-05-24 20:20:07 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* sys/v4l2/gstv4l2allocator.c:
+	* sys/v4l2/gstv4l2bufferpool.c:
+	* sys/v4l2/gstv4l2bufferpool.h:
+	* sys/v4l2/gstv4l2object.c:
+	* sys/v4l2/gstv4l2object.h:
+	* sys/v4l2/gstv4l2transform.c:
+	* sys/v4l2/gstv4l2videodec.c:
+	* sys/v4l2/v4l2_calls.c:
+	  v4l2bufferpool: Port to bufferpool flush_start/stop method
+	  Port the buffer pool to use the new flush_start/flush_stop virtual
+	  methods added to GstBufferPool.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=727611
+
+2014-05-25 17:40:58 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* po/af.po:
+	* po/az.po:
+	* po/bg.po:
+	* po/ca.po:
+	* po/cs.po:
+	* po/da.po:
+	* po/de.po:
+	* po/el.po:
+	* po/en_GB.po:
+	* po/eo.po:
+	* po/es.po:
+	* po/eu.po:
+	* po/fi.po:
+	* po/fr.po:
+	* po/gl.po:
+	* po/hr.po:
+	* po/hu.po:
+	* po/id.po:
+	* po/it.po:
+	* po/ja.po:
+	* po/lt.po:
+	* po/lv.po:
+	* po/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:
+	  po: update
+
+2014-05-25 16:54:18 +0200  Piotr DrÄ…g <piotrdrag@gmail.com>
+
+	* po/POTFILES.in:
+	  po: update POTFILES
+	  https://bugzilla.gnome.org/show_bug.cgi?id=726556
+
+2014-05-24 23:51:58 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* sys/v4l2/gstv4l2bufferpool.c:
+	  v4l2bufferpool: Don't queue all the buffers before dequeueing first
+	  For output device, we where queuing all the buffers, and then we would
+	  dequeue one. This means we only have 1 buffer for the pipeline, no matter
+	  the size of the queue. Instead, start dequeued when min_latency is reached.
+	  Eventually, this the min_latency should also be affected by control
+	  MIN_BUFFERS_FOR_OUTPUT (use by encoders).
+
+2014-05-24 23:49:19 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* sys/v4l2/gstv4l2object.c:
+	  v4l2object: Simply read back the config to update the query
+	  It's easy to get the min/max outdate when hacking decide allocation. In
+	  order to avoid this, simply read back the choosen value from the config.
+
+2014-05-24 23:31:24 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* sys/v4l2/gstv4l2bufferpool.c:
+	* sys/v4l2/gstv4l2bufferpool.h:
+	* sys/v4l2/gstv4l2src.c:
+	  v4l2: Cleanup and fix calculation of latency
+	  Calculation of num_buffers (the max latency in buffers) was
+	  up-side-down.  If we can allcoate, then our maximum latency match
+	  pool maximum number of buffers. Also renamed it to max latency. Finally
+	  introduced a min_latency for clarity.
+
+2014-05-24 20:00:14 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* sys/v4l2/gstv4l2allocator.c:
+	* sys/v4l2/gstv4l2bufferpool.c:
+	* sys/v4l2/gstv4l2bufferpool.h:
+	* sys/v4l2/gstv4l2object.c:
+	* sys/v4l2/gstv4l2object.h:
+	* sys/v4l2/gstv4l2transform.c:
+	* sys/v4l2/gstv4l2videodec.c:
+	* sys/v4l2/v4l2_calls.c:
+	  Revert "v4l2bufferpool: Port to bufferpool flush_start/stop method"
+	  This reverts commit 2e0fb42e868fc9f6d98b028def80a3e953527307.
+	  Conflicts:
+	  sys/v4l2/gstv4l2allocator.c
+	  sys/v4l2/gstv4l2bufferpool.c
+	  sys/v4l2/gstv4l2videodec.c
+
+2014-05-24 18:56:32 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* sys/v4l2/gstv4l2object.c:
+	  v4l2object: Fix configuration of other_pool and importation case
+	  Fix the choice of min/max, don't override the min/max with own pool selected
+	  size, correct other_pool is_active check, start from other_pool config when
+	  configuring the other pool and finally validate the configuration.
+
+2014-05-24 18:45:30 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* sys/v4l2/gstv4l2object.c:
+	  v4l2object: Use proposed allocator as default
+
+2014-05-24 18:43:28 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+	* sys/v4l2/gstv4l2bufferpool.c:
+	  v4l2bufferpool: Fix USERPTR map flags
+	  We need to map READ only for output and write only for capture, we where
+	  doing the opposite. This fixing USERPTR with glimagesink
+	  https://bugzilla.gnome.org/show_bug.cgi?id=730698
+
+2014-05-24 11:16:35 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
+
+	* gst/isomp4/qtdemux.c:
+	  qtdemux: parse tkhd transformation matrix and add tags if appropriate
+	  Handle the transformation matrix cases where there are only simple rotations
+	  (90, 180 or 270 degrees) and use a tag for those cases. This is a common scenario
+	  when recording with mobile devices
+	  https://bugzilla.gnome.org/show_bug.cgi?id=679522
+
+2014-05-23 19:10:21 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* sys/v4l2/gstv4l2bufferpool.c:
+	  v4l2bufferpool: Prevent num_queued from going negative
+
+2014-05-23 18:25:49 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* sys/v4l2/gstv4l2videodec.c:
+	  v4l2videodec: don't stop if loop returned FLUSHING
+	  The decodeing thread returning flushing isn't an error, we should simply
+	  try starting the task again. If it's actually flushing, it will stop again by itself.
+
+2014-05-23 17:54:20 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* sys/v4l2/gstv4l2videodec.c:
+	  v4l2videodec: Handle early task stop
+
+2014-05-23 17:28:13 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* sys/v4l2/gstv4l2videodec.c:
+	  v4l2videodec: Handle gst_pad_start_task() failure
+
+2014-05-23 17:19:07 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* sys/v4l2/gstv4l2videodec.c:
+	  v4l2videodec: Add trace for FLUSH_START/STOP handling
+
+2014-05-23 17:18:16 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* sys/v4l2/gstv4l2videodec.c:
+	  v4l2videodec: Fix use of atomic value
+
+2014-05-23 17:01:53 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* sys/v4l2/gstv4l2bufferpool.c:
+	  v4l2bufferpool: Improve debugging
+	  No need to use obj->element, the pool now have a significant name. Also don't
+	  warn if flushing.
+
+2014-05-23 17:01:02 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* sys/v4l2/gstv4l2videodec.c:
+	  v4l2videodec: Fix handle_frame error handling
+
+2014-05-23 15:56:24 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* sys/v4l2/gstv4l2bufferpool.c:
+	  v4l2bufferpool: Add a trace when _start() is called
+
+2014-05-23 15:56:02 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* sys/v4l2/gstv4l2allocator.c:
+	  v4l2allocator: Add debug assert to detect calls in the wrong state
+
+2014-05-23 15:55:26 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* sys/v4l2/gstv4l2allocator.c:
+	  v4l2allocator: Reset count when stopped
+
+2014-05-23 15:55:08 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* sys/v4l2/gstv4l2bufferpool.c:
+	  v4l2allocator: Return a GstFlowReturn instead of boolean in alloc
+
+2014-05-23 15:17:27 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* sys/v4l2/gstv4l2object.c:
+	  v4l2object: Don't leak config structure
+
+2014-05-23 14:12:10 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* sys/v4l2/gstv4l2allocator.c:
+	* sys/v4l2/gstv4l2bufferpool.c:
+	* sys/v4l2/gstv4l2bufferpool.h:
+	* sys/v4l2/gstv4l2object.c:
+	* sys/v4l2/gstv4l2object.h:
+	* sys/v4l2/gstv4l2transform.c:
+	* sys/v4l2/gstv4l2videodec.c:
+	* sys/v4l2/v4l2_calls.c:
+	  v4l2bufferpool: Port to bufferpool flush_start/stop method
+
+2014-05-23 03:00:50 -0300  Thiago Santos <ts.santos@sisa.samsung.com>
+
+	* gst/isomp4/fourcc.h:
+	* gst/isomp4/qtdemux.c:
+	  qtdemux: add tag mappings for _swr, _mak and _mod tags
+	  swr -> Application name
+	  mak -> device manufacturer
+	  mod -> device model
+
+2014-05-20 17:37:49 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* sys/ximage/gstximagesrc.c:
+	  ximagesrc: Fix ximage leaks when buffer has more then one ximage
+	  From time to time, when the image_pool list has more then 1 element
+	  and I suppose at start, all but 1 pooled ximage are leaked. This is
+	  due to broken algorithm in gst_ximagesink_src_ximage_get(). There was
+	  also a risk of use after free for the case where the ximage size has
+	  changed.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=728502
+
+2014-05-21 13:23:27 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* configure.ac:
+	  Back to development
+
 === release 1.3.2 ===
 
-2014-05-21  Sebastian Dröge <slomo@coaxion.net>
+2014-05-21 13:06:35 +0200  Sebastian Dröge <sebastian@centricular.com>
 
+	* ChangeLog:
+	* NEWS:
+	* RELEASE:
+	* common:
 	* configure.ac:
-	  releasing 1.3.2
+	* docs/plugins/gst-plugins-good-plugins.hierarchy:
+	* docs/plugins/inspect-build.stamp:
+	* docs/plugins/inspect.stamp:
+	* 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.3.2
+
+2014-05-21 12:19:39 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* po/af.po:
+	* po/az.po:
+	* po/bg.po:
+	* po/ca.po:
+	* po/cs.po:
+	* po/da.po:
+	* po/de.po:
+	* po/el.po:
+	* po/en_GB.po:
+	* po/eo.po:
+	* po/es.po:
+	* po/eu.po:
+	* po/fi.po:
+	* po/fr.po:
+	* po/gl.po:
+	* po/hr.po:
+	* po/hu.po:
+	* po/id.po:
+	* po/it.po:
+	* po/ja.po:
+	* po/lt.po:
+	* po/lv.po:
+	* po/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
 
 2014-05-21 10:51:10 +0200  Sebastian Dröge <sebastian@centricular.com>
 
diff --git a/NEWS b/NEWS
index da4707eb7a79862aa3d5eee399a2eb94a73b6427..de3b80509e65cf2186bd0a69772db49388755523 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,4 @@
-This is GStreamer Good Plugins 1.3.2
+This is GStreamer Good Plugins 1.3.3
 
 Changes since 1.2:
 
@@ -30,6 +30,10 @@ New API:
    caps.
  • GstCollectPads has support for flushing and a default handler for
    SEEK events now.
+ • New GstFlowAggregator helper object that simplifies handling of
+   flow returns in elements with multiple source pads. Additionally
+   GstPad now always stores the last flow return and provides an
+   API to retrieve it.
  • GstSegment has new API to offset the running time by a specific
    value and this is used in GstPad to allow positive and negative
    offsets in gst_pad_set_offset() in all situations.
@@ -43,6 +47,7 @@ New API:
  • Support for tiled, raw video formats has been added.
  • GstVideoDecoder and GstAudioDecoder have API to help aggregating tag
    events and merge custom tags into them consistently.
+ • GstBufferPool has support for flushing now.
  • playbin/playsink has support for application provided audio and video
    filters.
  • GstDiscoverer has new and simplified API to get details about missing
@@ -54,6 +59,10 @@ New API:
    DispManX (Raspberry Pi), EAGL (iOS), WGL (Windows) and generic X11,
    Wayland and EGL platforms.
    This replaces eglglessink and also is supposed to replace osxvideosink.
+ • New GstAggregator base class in gst-plugins-bad. This is supposed to
+   replace GstCollectPads in the future and fix long-known shortcomings
+   in its API. Together with the base class some elements are provided
+   already, like a videomixer (compositor).
 
 
 Major changes:
@@ -97,7 +106,8 @@ Major changes:
    ∘ dvbsrc supports more delivery mechanisms and other features
      now, including DVB S2 and T2 support.
    ∘ The MPEGTS library has support for many more descriptors.
-   ∘ Major improvements to tsdemux, especially time related.
+   ∘ Major improvements to tsdemux and tsparse, especially time and
+     seeking related.
    ∘ souphttpsrc now has support for keep-alive connections,
      compression, configurable number of retries and configuration
      for SSL certificate validation.
@@ -110,9 +120,16 @@ Major changes:
      finish.
    ∘ videoflip can automatically flip based on the orientation tag.
    ∘ openjpeg supports the OpenJPEG2 API.
+   ∘ waylandsink was refactored and should be more useful now. It also
+     includes a small library which most likely is going to be removed
+     in the future and will result in extensions to the GstVideoOverlay
+     interface.
    ∘ gst-rtsp-server supports SRTP and MIKEY now.
+   ∘ gst-libav encoders are now negotiating any profile/level settings
+     with downstream via caps.
    ∘ Lots of fixes for coverity warnings all over the place.
-   ∘ 400+ fixed bug reports, and many other bug fixes and other
+   ∘ Negotiation related performance improvements.
+   ∘ 500+ fixed bug reports, and many other bug fixes and other
      improvements everywhere that had no bug report.
 
 Things to look out for:
@@ -120,3 +137,6 @@ Things to look out for:
    element.
  • The mfcdec element was removed and replaced by v4l2videodec.
  • osxvideosink is only available in OS X 10.6 or newer.
+ • The GstDeviceMonitor API will likely change slightly before the
+   1.4.0 release.
+
diff --git a/RELEASE b/RELEASE
index 2e63499e686b960c570e06d313c017516b7973c8..141e24b4c716ae474a836e947a004869bf6433b0 100644
--- a/RELEASE
+++ b/RELEASE
@@ -1,8 +1,8 @@
 
-Release notes for GStreamer Good Plugins 1.3.2
+Release notes for GStreamer Good Plugins 1.3.3
 
 
-The GStreamer team is pleased to announce the second release of the unstable
+The GStreamer team is pleased to announce the third release of the unstable
 1.3 release series. The 1.3 release series is adding new features on top of
 the 1.0 and 1.2 series and is part of the API and ABI-stable 1.x release
 series of the GStreamer multimedia framework. The unstable 1.3 release series
@@ -10,23 +10,16 @@ will lead to the stable 1.4 release series in the next weeks, and newly added
 API can still change until that point.
 
 
+This is hopefully the last 1.3 development release and will be followed by
+the first 1.4.0 release candidate (1.3.90) in 1-2 weeks. Which then hopefully
+is followed by 1.4.0 soonish in early July.
+
 
 Binaries for Android, iOS, Mac OS X and Windows will be provided separately
 during the unstable 1.3 release series.
 
 
 
-The versioning scheme that is used in general is that 1.x.y is API and
-ABI backwards compatible with previous 1.x.y releases. If x is an even
-number it is a stable release series and all releases in this series
-will only contain important bugfixes, e.g. the 1.0 series with 1.0.7. If
-x is odd it is a development release series that will lead to the next
-stable release series 1.x+1 and contains new features and bigger
-changes. During the development release series, new API can still
-change.
-
-
-
 "Such ingratitude.  After all the times I've saved your life."
 
 
@@ -70,25 +63,19 @@ contains a set of codecs plugins based on libav (formerly gst-ffmpeg)
 
 Bugs fixed in this release
      
-      * 583890 : v4l2: Implement V4L2_MEMORY_USERPTR support
+      * 725903 : flvdemux: set RESYNC buffer flag when bridging large PTS gaps
+      * 726512 : some svq3/mov files stall on start
+      * 726556 : POTFILES.in is out of date
       * 728501 : rtpaux/rtprtx: Unit tests are racy and take very long sometimes
-      * 663944 : souphttpsrc: leaking file descriptors + memory when destroyed while connecting
-      * 707321 : flvdemux: complains too much when failed to send buffers
-      * 720440 : rtpsession: internal sources are never removed
-      * 725410 : v4l2videodec: Probe fails if first device does not start with 0
-      * 725415 : v4l2videodec: Check caps are subset of encode or raw when probing devices
-      * 727925 : v4l2: Share device enumeration
-      * 729247 : rtp/README: update to work with gst 1.0
-      * 729524 : rtpjitterbuffer: if retransmissions enabled, a gap larger than the latency can result in a stuck jitterbuffer
-      * 729553 : qtdemux: tries to reply to a byte position query with a time position
-      * 729591 : v4l2videodec: Remove meaningless properties
-      * 730078 : rtpjitterbuffer: wrong packet insertion if events present in the jitter queue
-      * 730146 : rtpbin: update rtp encoder/decoder documentation
-      * 730200 : v4l2videodec: v4l2bufferpool must be updated according to driver requirement
-      * 730207 : v4l2: Seeking with M2M devices
-      * 730212 : rtspsrc: use a random ssrc for the internal session
-      * 730217 : rtpsession: do not mark internal senders as expired
-      * 724630 : v4l2videodec: alignment support
+      * 729707 : souphttpsrc: Add custom sticky event to contain the HTTP request and response headers
+      * 730473 : rtspsrc: add support for key length parameters
+      * 730476 : v4l2videodec:  stalls on large seeks
+      * 730563 : Propagate DISCONT and DELTAUNIT flags through H264 and Jpeg payloaders
+      * 730698 : v4lsrc: Fails using glimagesink in userptr
+      * 730722 : Cannot seek in a m4a AAC audio file
+      * 731169 : wavparse: Puts codec_data on raw audio caps
+      * 731475 : multipartdemux: Got data flow before stream-start
+      * 722303 : v4l2sink: Enable rendering of the preroll buffer
 
 ==== Download ====
 
@@ -125,21 +112,18 @@ subscribe to the gstreamer-devel list.
         
 Contributors to this release
     
-      * Adrien SCH
       * Aleix Conchillo Flaqué
-      * Benjamin Gaignard
       * Edward Hervey
-      * Eric Trousset
-      * George Kiagiadakis
       * Guillaume Desmottes
-      * Jason Litzinger
-      * Mark Nauwelaerts
+      * Jan Alexander Steffens (heftig)
+      * Julien Isorce
       * Nicolas Dufresne
       * Olivier Crête
+      * Piotr DrÄ…g
+      * Ravi Kiran K N
       * Sebastian Dröge
+      * Thiago Santos
       * Tim-Philipp Müller
       * Vincent Penquerc'h
-      * Víctor Manuel Jáquez Leal
       * Wim Taymans
-      * Руслан Ижбулатов
  
\ No newline at end of file
diff --git a/configure b/configure
index e9e8040fbdcb9110f1f27212ee7ed6abf51bbecc..d9623157e0d58dc1d169c8bfa78530a7f7db0fef 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.3.2.
+# Generated by GNU Autoconf 2.69 for GStreamer Good Plug-ins 1.3.3.
 #
 # 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.3.2'
-PACKAGE_STRING='GStreamer Good Plug-ins 1.3.2'
+PACKAGE_VERSION='1.3.3'
+PACKAGE_STRING='GStreamer Good Plug-ins 1.3.3'
 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.3.2 to adapt to many kinds of systems.
+\`configure' configures GStreamer Good Plug-ins 1.3.3 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.3.2:";;
+     short | recursive ) echo "Configuration of GStreamer Good Plug-ins 1.3.3:";;
    esac
   cat <<\_ACEOF
 
@@ -2384,7 +2384,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-GStreamer Good Plug-ins configure 1.3.2
+GStreamer Good Plug-ins configure 1.3.3
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -3195,7 +3195,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.3.2, which was
+It was created by GStreamer Good Plug-ins $as_me 1.3.3, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -4177,7 +4177,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='gst-plugins-good'
- VERSION='1.3.2'
+ VERSION='1.3.3'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -4388,9 +4388,9 @@ fi
 
 
 
-  PACKAGE_VERSION_MAJOR=$(echo 1.3.2 | cut -d'.' -f1)
-  PACKAGE_VERSION_MINOR=$(echo 1.3.2 | cut -d'.' -f2)
-  PACKAGE_VERSION_MICRO=$(echo 1.3.2 | cut -d'.' -f3)
+  PACKAGE_VERSION_MAJOR=$(echo 1.3.3 | cut -d'.' -f1)
+  PACKAGE_VERSION_MINOR=$(echo 1.3.3 | cut -d'.' -f2)
+  PACKAGE_VERSION_MICRO=$(echo 1.3.3 | cut -d'.' -f3)
 
 
 
@@ -4401,7 +4401,7 @@ fi
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking nano version" >&5
 $as_echo_n "checking nano version... " >&6; }
 
-  NANO=$(echo 1.3.2 | cut -d'.' -f4)
+  NANO=$(echo 1.3.3 | cut -d'.' -f4)
 
   if test x"$NANO" = x || test "x$NANO" = "x0" ; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: 0 (release)" >&5
@@ -9057,10 +9057,10 @@ fi
 done
 
 
-  GST_CURRENT=302
+  GST_CURRENT=303
   GST_REVISION=0
-  GST_AGE=302
-  GST_LIBVERSION=302:0:302
+  GST_AGE=303
+  GST_LIBVERSION=303:0:303
 
 
 
@@ -13385,8 +13385,8 @@ CC="$lt_save_CC"
 
 
 
-GST_REQ=1.3.2
-GSTPB_REQ=1.3.2
+GST_REQ=1.3.3
+GSTPB_REQ=1.3.3
 
 
 
@@ -37425,7 +37425,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.3.2, which was
+This file was extended by GStreamer Good Plug-ins $as_me 1.3.3, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -37491,7 +37491,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.3.2
+GStreamer Good Plug-ins config.status 1.3.3
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff --git a/configure.ac b/configure.ac
index 17be4da375f3ee734a8007fd457041b497b125cb..9532a5af7547939115389f5a8bb1f63da1326aec 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.3.2],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gst-plugins-good])
+AC_INIT([GStreamer Good Plug-ins],[1.3.3],[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, 302, 0, 302)
+AS_LIBTOOL(GST, 303, 0, 303)
 
 dnl *** required versions of GStreamer stuff ***
-GST_REQ=1.3.2
-GSTPB_REQ=1.3.2
+GST_REQ=1.3.3
+GSTPB_REQ=1.3.3
 
 dnl *** autotools stuff ****
 
diff --git a/docs/plugins/gst-plugins-good-plugins.args b/docs/plugins/gst-plugins-good-plugins.args
index 8e17826f750d4b6581dacee70e52f10d4da2d68b..666f2f9ac2f5f28ed322f15e65106c2095e8237e 100644
--- a/docs/plugins/gst-plugins-good-plugins.args
+++ b/docs/plugins/gst-plugins-good-plugins.args
@@ -24728,3 +24728,13 @@
 <DEFAULT>1</DEFAULT>
 </ARG>
 
+<ARG>
+<NAME>GstRtpVRawPay::chunks-per-frame</NAME>
+<TYPE>gint</TYPE>
+<RANGE>>= 1</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Chunks per Frame</NICK>
+<BLURB>Split and send out each frame in multiple chunks to reduce overhead.</BLURB>
+<DEFAULT>10</DEFAULT>
+</ARG>
+
diff --git a/docs/plugins/gst-plugins-good-plugins.signals b/docs/plugins/gst-plugins-good-plugins.signals
index b14af19a3c4d6170442a386b0d320bece7cebc47..ac5d16513ef507c9b3893d9f75f3606494de725b 100644
--- a/docs/plugins/gst-plugins-good-plugins.signals
+++ b/docs/plugins/gst-plugins-good-plugins.signals
@@ -781,3 +781,11 @@ GstRTSPSrc *gstrtspsrc
 GstElement *arg1
 </SIGNAL>
 
+<SIGNAL>
+<NAME>GstRTSPSrc::request-rtcp-key</NAME>
+<RETURNS>GstCaps*</RETURNS>
+<FLAGS>l</FLAGS>
+GstRTSPSrc *gstrtspsrc
+guint  arg1
+</SIGNAL>
+
diff --git a/docs/plugins/html/ch01.html b/docs/plugins/html/ch01.html
index 7f4dfaa6821777fde946466e2e86f8358867f029..cca7f47ed60a611674a3a36c5661a52ead9524c4 100644
--- a/docs/plugins/html/ch01.html
+++ b/docs/plugins/html/ch01.html
@@ -279,7 +279,7 @@
 <span class="refentrytitle"><a href="gst-plugins-good-plugins-multipartmux.html">multipartmux</a></span><span class="refpurpose"> — mux multipart streams</span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gst-plugins-good-plugins-multiudpsink.html">multiudpsink</a></span><span class="refpurpose"> — Send data over the network via UDP</span>
+<span class="refentrytitle"><a href="gst-plugins-good-plugins-multiudpsink.html">multiudpsink</a></span><span class="refpurpose"> — Send data over the network via UDP to one or multiple recipients which can be added or removed at runtime using action signals</span>
 </dt>
 <dt>
 <span class="refentrytitle"><a href="gst-plugins-good-plugins-optv.html">optv</a></span><span class="refpurpose"> — Optical art meets real-time video effect</span>
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 197262e0dd9246da6cbbbdf1561b157719237ec4..d7d93f94eea1ecb16aa5c80c828c90126abed785 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-1.0.devhelp2
+++ b/docs/plugins/html/gst-plugins-good-plugins-1.0.devhelp2
@@ -1089,6 +1089,7 @@
     <keyword type="signal" name="The “on-sdp” signal" link="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc-on-sdp"/>
     <keyword type="signal" name="The “select-stream” signal" link="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc-select-stream"/>
     <keyword type="signal" name="The “new-manager” signal" link="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc-new-manager"/>
+    <keyword type="signal" name="The “request-rtcp-key” signal" link="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc-request-rtcp-key"/>
     <keyword type="" name="Example pipelines" link="gst-plugins-good-plugins-rtpbin.html#id-1.2.124.9.12"/>
     <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rtpbin.html#id-1.2.124.9.13.1"/>
     <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rtpbin.html#id-1.2.124.9.13.2"/>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-aacparse.html b/docs/plugins/html/gst-plugins-good-plugins-aacparse.html
index 1ff4111bad11656abad2fe73714b60fada45a94b..1ffe3564db4a27b44926799d9a65c34c8aefccee 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-aacparse.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-aacparse.html
@@ -51,7 +51,7 @@
     <span class="lineart">╰──</span> <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
         <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a>
             <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a>
-                <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/gstreamer-libs-GstBaseParse.html#GstBaseParse">GstBaseParse</a>
+                <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/GstBaseParse.html">GstBaseParse</a>
                     <span class="lineart">╰──</span> GstAacParse
 </pre>
 </div>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-ac3parse.html b/docs/plugins/html/gst-plugins-good-plugins-ac3parse.html
index 02fa22bbc79a5d167b571d920025164615bfbf5a..a5270e4428f73f9289c6d3dc091bb726f31e7990 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-ac3parse.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-ac3parse.html
@@ -51,7 +51,7 @@
     <span class="lineart">╰──</span> <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
         <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a>
             <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a>
-                <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/gstreamer-libs-GstBaseParse.html#GstBaseParse">GstBaseParse</a>
+                <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/GstBaseParse.html">GstBaseParse</a>
                     <span class="lineart">╰──</span> GstAc3Parse
 </pre>
 </div>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-amrparse.html b/docs/plugins/html/gst-plugins-good-plugins-amrparse.html
index cb4d4a413eaf10879bd459b644ec0b5fd446e92d..684fab91a99954c4d7df956a25de07d46b6c5404 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-amrparse.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-amrparse.html
@@ -51,7 +51,7 @@
     <span class="lineart">╰──</span> <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
         <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a>
             <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a>
-                <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/gstreamer-libs-GstBaseParse.html#GstBaseParse">GstBaseParse</a>
+                <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/GstBaseParse.html">GstBaseParse</a>
                     <span class="lineart">╰──</span> GstAmrParse
 </pre>
 </div>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-dcaparse.html b/docs/plugins/html/gst-plugins-good-plugins-dcaparse.html
index 215bb4420c14d702029028b1759ff0aedc3e9b4b..859dbf41e071c6e9921b4ca87935d9d2f69f33e0 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-dcaparse.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-dcaparse.html
@@ -51,7 +51,7 @@
     <span class="lineart">╰──</span> <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
         <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a>
             <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a>
-                <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/gstreamer-libs-GstBaseParse.html#GstBaseParse">GstBaseParse</a>
+                <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/GstBaseParse.html">GstBaseParse</a>
                     <span class="lineart">╰──</span> GstDcaParse
 </pre>
 </div>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-flacparse.html b/docs/plugins/html/gst-plugins-good-plugins-flacparse.html
index 0980b11ca5f04cbb281fe1dd98076129237c133b..4cfc06664cd0ac1d99729dbfb0f683aaf5b2f4e1 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-flacparse.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-flacparse.html
@@ -67,7 +67,7 @@
     <span class="lineart">╰──</span> <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
         <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a>
             <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a>
-                <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/gstreamer-libs-GstBaseParse.html#GstBaseParse">GstBaseParse</a>
+                <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/GstBaseParse.html">GstBaseParse</a>
                     <span class="lineart">╰──</span> GstFlacParse
 </pre>
 </div>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-mpegaudioparse.html b/docs/plugins/html/gst-plugins-good-plugins-mpegaudioparse.html
index 671f40f8dd8a84db21505122be6176df1d62f38d..161b8b10c548882c1d37127bf8ae8295562fe507 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-mpegaudioparse.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-mpegaudioparse.html
@@ -51,7 +51,7 @@
     <span class="lineart">╰──</span> <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
         <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a>
             <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a>
-                <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/gstreamer-libs-GstBaseParse.html#GstBaseParse">GstBaseParse</a>
+                <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/GstBaseParse.html">GstBaseParse</a>
                     <span class="lineart">╰──</span> GstMpegAudioParse
 </pre>
 </div>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-multiudpsink.html b/docs/plugins/html/gst-plugins-good-plugins-multiudpsink.html
index b95f59783437337bd3851e9cd0445c9f450dd3f6..7d09f58dd5818b8ec9ed17891ca8a685cdb424f8 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-multiudpsink.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-multiudpsink.html
@@ -30,7 +30,7 @@
 <div class="refnamediv"><table width="100%"><tr>
 <td valign="top">
 <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-multiudpsink.top_of_page"></a>multiudpsink</span></h2>
-<p>multiudpsink — Send data over the network via UDP</p>
+<p>multiudpsink — Send data over the network via UDP to one or multiple recipients which can be added or removed at runtime using action signals</p>
 </td>
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
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 cca2848bd47a26b0fff3372f0cd419ebec035719..de6fe14547802dda71ee93b87daedde1d2c11288 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.3.2</td>
+<td>1.3.3</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 e5f9a159470faeb814225447b9bf57fc09f488d8..3b0a5287f443d3ccc4006e03390f761394fc5068 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.3.2</td>
+<td>1.3.3</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 0fe3047b5e14ba328191aa47095d63259358bb42..525be0ce02b7243c05a229d16afc8cdde43bc317 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.3.2</td>
+<td>1.3.3</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 9a5055f2252ecf8a9ea78e3495f18cb925d73395..92af448ff644480ffa624b9de580c285e4e70e4c 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.3.2</td>
+<td>1.3.3</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 e53d974b6f88d35a202be79fd9aa06a644a28b77..8828d6565b0f2278299bd57416a017f43edf427e 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.3.2</td>
+<td>1.3.3</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 e80dd3bc6f8e18c962115f7a2d217e959a6031e5..51e20cb78ab9dd267e2bb9362e4a21a51aa18fb4 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.3.2</td>
+<td>1.3.3</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 386f4e08e8fbd7a6faade5e3a6b983723d6455f0..1c745a4b1a6bdaaa750816b24de0c1a490b07bd4 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.3.2</td>
+<td>1.3.3</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 2346d4df73f4746190acb89db2457d12bfa7cd38..7197eb47511688854383624b3d2f11f98df67865 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.3.2</td>
+<td>1.3.3</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 e956f6d66ee814d809d7b4239f7e522ac6c71557..434774bd8351aab229017692012142d2c6b139d3 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.3.2</td>
+<td>1.3.3</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 18fe15e4443d737ca13a0d0696a6b51b82704f00..adba93bce0e4ffea3f57c1c4a3dcba83b0a3a658 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.3.2</td>
+<td>1.3.3</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 1da587053827a8c1dacb4a56316df98390d42b77..e7e51bd33646dc3d6cd6541dae27aaa23050cbcc 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.3.2</td>
+<td>1.3.3</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 e38b332098a20d4d60340de7550642e49def3c06..f23a619b3e719c421c9e22bbb9e7c78911d7e858 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.3.2</td>
+<td>1.3.3</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 3ac346c1ee70278978584c602c6f546fce159d5a..577a046e63d4b266a0cbd5b5dd4b1a669bc625aa 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.3.2</td>
+<td>1.3.3</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 68f1d54e8ba2cb0fc7d702c269fa28a39ef1c72b..7a47005c036c7029f2ff7c9d99ca3038152be3b3 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.3.2</td>
+<td>1.3.3</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 c6769fda747700898bbca6614523c090e486b8a1..801ee6aa69903ab5c3f9a29c95767ac9a0949edb 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.3.2</td>
+<td>1.3.3</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 1c793eda18e926ad0b22a327d827fa5c086e6468..ef12f7577292ec4210c05c0a442af41fa669beae 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.3.2</td>
+<td>1.3.3</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 28a8a4a14506fdd1644668149af09693e80c43ff..54159145e64b7e9f791d18dfbc04df24c353bf83 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.3.2</td>
+<td>1.3.3</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 13252854cc0342182ca9ba2c83aedabf9cdfc470..fdf3b22d195ce3da0dcf13d3ac9a0a0c67822bdb 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.3.2</td>
+<td>1.3.3</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 0b6ece21c4ab149d30bcd6daebf5149035e51c0e..80baa9b97f94eda7512f11291c050aa62679ecf5 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.3.2</td>
+<td>1.3.3</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 b99e8786fa932ec0ea3b1ead8ac13bd891dea9a4..39935333bd735780f4b8dd3ad2948adaeded138e 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.3.2</td>
+<td>1.3.3</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 8a5acbfc5a09311309fb6e82e2e4a9bfec134838..10f9ba2de0a41c802a8c6a4aa78891ccb1e7164c 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.3.2</td>
+<td>1.3.3</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 089cf092d54018f5783e66e4cd531dd491959772..77e92d042757aff56f6df3421863c4d8d7cc9a22 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.3.2</td>
+<td>1.3.3</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 a7e07c0b9291a3be90fbc3e670a48f56498f9298..7bd51a4874618e6cedce3faafe32221410148e2f 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.3.2</td>
+<td>1.3.3</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 c9e05349f66a33b1257d8686e2aa03a74da72462..d7ca1a731375e94afc23cea46c299aa6f06c1d60 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.3.2</td>
+<td>1.3.3</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 f5f12a81c35bc2896370c1310e6d8163a87c10b9..2fe0aaa343da2e4290973e6174534c4b709aa7e8 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.3.2</td>
+<td>1.3.3</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 9a20dfe26dc6f72f72f00e5428009ec5f356ff71..6011dbb73325e50daa947334333d2c8a7f01c016 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.3.2</td>
+<td>1.3.3</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 f27bebcf6a81d121446af28a5586f541c3ef4f7a..c9e54424a231ba515099ce904f4ccd0af008b082 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.3.2</td>
+<td>1.3.3</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 2c75fe76cd53207ad8ebc3c1dd7a5ef2dc2ce8a2..a5b3334c5aed7995c2f3cfe6f614f153335b2f71 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.3.2</td>
+<td>1.3.3</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 6b142623c7931952d80f09fa812ceb7f39e016a9..e007b17b462a4f5d73682826c47d6a468504a6ec 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.3.2</td>
+<td>1.3.3</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 0dcc77a9646b012877f8a6f17f84610f476a1455..192b1ee9999ac3568149f1da8e848b4382f9e7df 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.3.2</td>
+<td>1.3.3</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 eeeadda4e6d50592ec841b12b9c386e27d8e6f71..5fe12842e4af762a7114b337b2c0cda0b4f7d0fa 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.3.2</td>
+<td>1.3.3</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 b29252b0b0b7e2ec0ca48e6e8af51076a1610d7c..007ac4d0b1adbb6013e2156aeff1928d28094a5b 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.3.2</td>
+<td>1.3.3</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 40cd9bafdffa742f5ee3c209972166a5621baab2..be96de835be708f1f00ab77b15cc482064478da1 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.3.2</td>
+<td>1.3.3</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 9705ee3d7f4c8d43c7991dbf5f83387f3b28e630..9626d2501885ea124bf18db0ab0e6ccc7d98ccce 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.3.2</td>
+<td>1.3.3</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 15a9642ba5cd6ed2707b8ae0be937f7657ef0755..9832a59a981200e0fbfade48e3f7c47b19bdfaa9 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.3.2</td>
+<td>1.3.3</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 074ecb058eb1eb0862716202e4873497bf72379c..6fd63d248af302c17f68f9c433656c2892f5d6f1 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.3.2</td>
+<td>1.3.3</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 a9b1d96e384474f5bb43888f8b8590213edc5472..5423aacd1c591a6881e3dba43c641d526887acd3 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.3.2</td>
+<td>1.3.3</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 0c1968476ececfae586e13d0b766672bb42dfda4..527ce6af2cee33c7e09b3992ca97c87610fe10b5 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.3.2</td>
+<td>1.3.3</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 a100fb82e6f24d6f7a13ce2c197e7e74518aaab0..63e68f580cb7bea7882e4f2a73f7447162a304ac 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.3.2</td>
+<td>1.3.3</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 ecbf7c8af8f140fa85887c70bf3a2bd231a69862..8b59b3d61794a6b79c2d0a121ae4aa2a4783749c 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.3.2</td>
+<td>1.3.3</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 a4ae523fe35cadaae1a3872c14071dfbbb99f33c..c7c3357b7ee962142686a6c41e7489de188f595a 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.3.2</td>
+<td>1.3.3</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 dd575028bb54371a7b42f3bd67128bf04316b9ae..d5d4605278af843d3050169e300476fcce6ad159 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.3.2</td>
+<td>1.3.3</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 adcbad2d7f98b32cefb9d59dfcdc99ad48f3dd44..39572d0612e075b0c36524db91725a71bd9a18a4 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.3.2</td>
+<td>1.3.3</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 43f8077dbffa4bd39c091284d3c07d1eb7f3d2d9..ee6508c7c80ff5189dcafb2f6b884a98c189d991 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.3.2</td>
+<td>1.3.3</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 9fbe16f5ee5c929db1856f2db2720e07d48912ec..63633fe79ccb847e2cdd598055416f98d7305d6f 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.3.2</td>
+<td>1.3.3</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 8ec448a4889f9cf32c584531065ad9ed51c09d70..07d55778bd115a828d0aeaf86f3fb412516814a3 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.3.2</td>
+<td>1.3.3</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 d2b546b410f81c67eb1b2bdcda5f8ffc139a586d..81a5f951839e8860ad9bc41bc1512350913364f5 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.3.2</td>
+<td>1.3.3</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 f35781cbdc173cf603e05f5fce6718377a4fa65f..1bd9756864679916ae98264c998cc25cafbcc2c0 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.3.2</td>
+<td>1.3.3</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 262d842b8e641fb4121b38038ee7894e2c9e471a..402bce57a177dfd566c0d18d53f6e7740736e442 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.3.2</td>
+<td>1.3.3</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 2a922c876005a3bd0e76b85421eabfb429aeb702..33fbed0d12b9df3fffbbfdf05d33add19d0299cc 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.3.2</td>
+<td>1.3.3</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 3d79f2916fe41e032e9bca669486bad49af96866..7b3163f94caf4c2f88fdb83c88324e65e4cfc5d3 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.3.2</td>
+<td>1.3.3</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 dfc720afaf72bfdb42528320184fdaaf0af9ba4e..fd5c257c1be5ad59fb434d47e97fe448e25a2052 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.3.2</td>
+<td>1.3.3</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 fcc71325a0b241259fa022b6a244f43322cbc249..c8a911ead7efa91a1213e947d95373111ff4a5ad 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.3.2</td>
+<td>1.3.3</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 78a30806c4814c906d04a29c367577c2c511035d..a8cea4b03d33e1a7562fa51a0ddfb41487ac5fc7 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.3.2</td>
+<td>1.3.3</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
@@ -69,11 +69,11 @@
 <tbody>
 <tr>
 <td><p><span class="term">dynudpsink</span></p></td>
-<td>Send data over the network via UDP</td>
+<td>Send data over the network via UDP with packet destinations picked up dynamically from meta on the buffers passed</td>
 </tr>
 <tr>
 <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-multiudpsink.html" title="multiudpsink">multiudpsink</a></span></p></td>
-<td>Send data over the network via UDP</td>
+<td>Send data over the network via UDP to one or multiple recipients which can be added or removed at runtime using action signals</td>
 </tr>
 <tr>
 <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-udpsink.html" title="udpsink">udpsink</a></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 ff881ee195d7ffbadf4915cdbc386241d3072592..89cec1b49c72afeedcfecf46e885979761d53f0d 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.3.2</td>
+<td>1.3.3</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 e870e957ba08cb8e6aa1dc592bcf8806e705fe3b..14d8d22fe48d1d90db086b6a8e75362059434955 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.3.2</td>
+<td>1.3.3</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 a3ca90ac683c9497ad98d77a849f2a480f79aab4..d14fb959e7fb3bb959bcce6b6a10f3bbffb3f001 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.3.2</td>
+<td>1.3.3</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 86832770c677dad77b57bd8c54d156cc936a95a9..b816380badd70c59672dd95bcccf1af0dd197712 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.3.2</td>
+<td>1.3.3</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 5de1cc9c810043b2ca893a5823d802443179fc70..065c79db24c75bcbba3aa25d2922503c1bd41f82 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.3.2</td>
+<td>1.3.3</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 a36606e144cb12b2bcce09abd836451897351368..d0c29d30615348e5a2ba3ab7799da6af1b90f44b 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.3.2</td>
+<td>1.3.3</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 c7e38aa7fa57274a57232d77c8d2c4d2fffd7a51..5c48d5f01a82b9d9335001bbf2d699606e12eb27 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.3.2</td>
+<td>1.3.3</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 c9ec8ae06ac206166d0bb2cc182fe7286bafede0..a16e880b15049e1fc4b51e6f47a3f75b58929ec8 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.3.2</td>
+<td>1.3.3</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 af68e0ef9b7d892b5f306f776b2e6f9183678d3f..6463ba80753b2ff65572f4293d7b109802c6a92b 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.3.2</td>
+<td>1.3.3</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 1e98570db2dd52896ab599df3d10b694c8e6d076..60680fbfe403c1732effacaa6f6777454b2a5bf9 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.3.2</td>
+<td>1.3.3</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 7f85fd3052bc0425f99770b48c23218d962b65c3..6cd6a7bc334f148b4e4e83e716b6df2183fb9b5c 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.3.2</td>
+<td>1.3.3</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtspsrc.html b/docs/plugins/html/gst-plugins-good-plugins-rtspsrc.html
index eca4682279ee9a238a3715131d82665f99ec11f0..3628b7f75192ebfde6bdd9f1d5e8c77ee366eb33 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-rtspsrc.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-rtspsrc.html
@@ -236,6 +236,12 @@
 <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc-new-manager" title="The “new-manager” signal">new-manager</a></td>
 <td class="signal_flags">Run First</td>
 </tr>
+<tr>
+<td class="signal_type">
+<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="returnvalue">GstCaps</span></a>*</td>
+<td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc-request-rtcp-key" title="The “request-rtcp-key” signal">request-rtcp-key</a></td>
+<td class="signal_flags">Run Last</td>
+</tr>
 </tbody>
 </table></div>
 </div>
@@ -819,6 +825,46 @@ properties were configured.</p>
 <p>Flags: Run First</p>
 <p class="since">Since 1.4</p>
 </div>
+<hr>
+<div class="refsect2">
+<a name="GstRTSPSrc-request-rtcp-key"></a><h3>The <code class="literal">“request-rtcp-key”</code> signal</h3>
+<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="returnvalue">GstCaps</span></a>*
+user_function (<a class="link" href="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc"><span class="type">GstRTSPSrc</span></a> *rtspsrc,
+               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>       num,
+               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>    user_data)</pre>
+<p>Signal emited to get the crypto parameters relevant to the RTCP
+stream. User should provide the key and the RTCP encryption ciphers
+and authentication, and return them wrapped in a GstCaps.</p>
+<div class="refsect3">
+<a name="id-1.2.123.13.6.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>rtspsrc</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc"><span class="type">GstRTSPSrc</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>num</p></td>
+<td class="parameter_description"><p>the stream number</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>user_data</p></td>
+<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p>Flags: Run Last</p>
+<p class="since">Since 1.4</p>
+</div>
 </div>
 </div>
 <div class="footer">
diff --git a/docs/plugins/html/gst-plugins-good-plugins-sbcparse.html b/docs/plugins/html/gst-plugins-good-plugins-sbcparse.html
index 70bb56a53b909d4300d718e8c9014678d2f950c0..2b5ac3be8b9f18e6555c20ce8a7a9ff2104e8b92 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-sbcparse.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-sbcparse.html
@@ -51,7 +51,7 @@
     <span class="lineart">╰──</span> <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
         <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a>
             <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a>
-                <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/gstreamer-libs-GstBaseParse.html#GstBaseParse">GstBaseParse</a>
+                <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/GstBaseParse.html">GstBaseParse</a>
                     <span class="lineart">╰──</span> GstSbcParse
 </pre>
 </div>
diff --git a/docs/plugins/html/gst-plugins-good-plugins-wavpackparse.html b/docs/plugins/html/gst-plugins-good-plugins-wavpackparse.html
index 0a11dc24634b41c483731f8a3a457780e5d7b0ec..0c9b99440ef3940740b830a0a165a310654cd774 100644
--- a/docs/plugins/html/gst-plugins-good-plugins-wavpackparse.html
+++ b/docs/plugins/html/gst-plugins-good-plugins-wavpackparse.html
@@ -51,7 +51,7 @@
     <span class="lineart">╰──</span> <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
         <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a>
             <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a>
-                <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/gstreamer-libs-GstBaseParse.html#GstBaseParse">GstBaseParse</a>
+                <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/GstBaseParse.html">GstBaseParse</a>
                     <span class="lineart">╰──</span> GstWavpackParse
 </pre>
 </div>
diff --git a/docs/plugins/html/index.html b/docs/plugins/html/index.html
index 6c68353aef3ca5dbfe3b70b23d8b53429acf550c..5fc42220d86a5c916c06cd922b7f660430fa4017 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.3.2)
+      for GStreamer Good Plugins 1.0 (1.3.3)
       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>
@@ -281,7 +281,7 @@
 <span class="refentrytitle"><a href="gst-plugins-good-plugins-multipartmux.html">multipartmux</a></span><span class="refpurpose"> — mux multipart streams</span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gst-plugins-good-plugins-multiudpsink.html">multiudpsink</a></span><span class="refpurpose"> — Send data over the network via UDP</span>
+<span class="refentrytitle"><a href="gst-plugins-good-plugins-multiudpsink.html">multiudpsink</a></span><span class="refpurpose"> — Send data over the network via UDP to one or multiple recipients which can be added or removed at runtime using action signals</span>
 </dt>
 <dt>
 <span class="refentrytitle"><a href="gst-plugins-good-plugins-optv.html">optv</a></span><span class="refpurpose"> — Optical art meets real-time video effect</span>
diff --git a/docs/plugins/html/index.sgml b/docs/plugins/html/index.sgml
index 7b604622d0b7e162b1e660bdf885e613271fa610..cf88df8e19ba3e30d435c4ac3f2a22e839f3f295 100644
--- a/docs/plugins/html/index.sgml
+++ b/docs/plugins/html/index.sgml
@@ -1618,6 +1618,7 @@
 <ANCHOR id="GstRTSPSrc-on-sdp" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc-on-sdp">
 <ANCHOR id="GstRTSPSrc-select-stream" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc-select-stream">
 <ANCHOR id="GstRTSPSrc-new-manager" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc-new-manager">
+<ANCHOR id="GstRTSPSrc-request-rtcp-key" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc-request-rtcp-key">
 <ANCHOR id="gst-plugins-good-plugins-rtpbin" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpbin.html">
 <ANCHOR id="gst-plugins-good-plugins-rtpbin.properties" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpbin.html#gst-plugins-good-plugins-rtpbin.properties">
 <ANCHOR id="gst-plugins-good-plugins-rtpbin.signals" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpbin.html#gst-plugins-good-plugins-rtpbin.signals">
diff --git a/docs/plugins/inspect/plugin-1394.xml b/docs/plugins/inspect/plugin-1394.xml
index 6d5b5083a6d89ce0ca22d33bb642a049065f819f..0e3a33572c581bb1d02d7c460e4b0a18155f6e9b 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.3.2</version>
+  <version>1.3.3</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 7a8a86125785a7deea08c88a4db571b39e3393ad..1413dbf1d95a136fcbc6c170eb1be933b1e4e47f 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.3.2</version>
+  <version>1.3.3</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 460e8d5b8c5be15008fd493b7e652dfdc56eb14c..5a3141ff07b83706e58576fdec2da07129a0a457 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.3.2</version>
+  <version>1.3.3</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 4f05ef59c832903374da504e1158befb665361a5..413ac89f24841628f832138242b7e03696621285 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.3.2</version>
+  <version>1.3.3</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 59ea3560bb5daa8d09efb7d491dbdbce7c8822b3..f0da08cd75106d258b3c17e5af678497d3ff03d3 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.3.2</version>
+  <version>1.3.3</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 3441857e54e9c137cbdcdb1851b07ff6e77f3466..e475e948032b14ae282db699d8e04d653d6afaa0 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.3.2</version>
+  <version>1.3.3</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 c7329c01d7f11f64a7ca3533bd66dae9b7199661..3be6109828388e0a34e3ddaa96c88d6092fe1e69 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.3.2</version>
+  <version>1.3.3</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 34eb617f1de0c4f96c80e36472140bb78e3bf451..51e28f20ab4a75f08e403ca018b9ca8ec202c536 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.3.2</version>
+  <version>1.3.3</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 d4efc2da963003c9707201c1d7e350c9f01aa4c8..f5c93c3d171f823c666788d127c7da3cd0e73a8a 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.3.2</version>
+  <version>1.3.3</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 fd32c11331d036c94b113f272dc446105c9ee39c..726df7fc74ff69ba551babf72b3a837d5a854ef1 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.3.2</version>
+  <version>1.3.3</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 7b3810e82c55440074eb02a92b2b3b3580cf6c5a..9331c96147e699cff4ba39fe5d8daf726d902000 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.3.2</version>
+  <version>1.3.3</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 f1f2caa60b98c233e16074c29ba8a97049697bc0..64002372f6af208d8e84fd5bc4f5414b50c2f60a 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.3.2</version>
+  <version>1.3.3</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 2da90e0b60755d81bb19f324219cecc2d7e7c6e5..e565aff3d715eb393512e39a0ef56c71b02b22f3 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.3.2</version>
+  <version>1.3.3</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 37803d90749f8458fac95c59a95d75d2b4a4a424..b3bd432bb06e20c7072f8c420f705b85cae6536b 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.3.2</version>
+  <version>1.3.3</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 9d844f70b370bc4102a6f832d5bac5367476c64f..37fed15527e75313b4f2a731259e1a2ac8d34470 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.3.2</version>
+  <version>1.3.3</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 97f3981ec18383ab3d4ed62ea497d17b6f6396e1..cdea31a81d09c736c963bc113c5f52fb20906548 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.3.2</version>
+  <version>1.3.3</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 929681908622cef58c2b46a949e2d2a1bc95cfe9..f234e02408ad0555b5091e3fa331651a90710d28 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.3.2</version>
+  <version>1.3.3</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 7a34a78c1b37ee78506a16097d8a8380c9b9789a..00459f685d0522fb13d96065052c87c9c624e4f3 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.3.2</version>
+  <version>1.3.3</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 290640f9e67c69b3a6478d3fc54ada8bb5ac8e62..753bd431ae63a00086d3105e5c214f5856cf6dc0 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.3.2</version>
+  <version>1.3.3</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 ae4a53f08c0aaf0484daa3817e3009742ec6e504..dbbebb0381b68f7c6c95417dc9c9fd1fb6b9f6a8 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.3.2</version>
+  <version>1.3.3</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 6121817efdd865deb6f5fa5c14f8fb3c4abdf069..f863454996c2bdc16ca726bcf1b88a70a4b36cf3 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.3.2</version>
+  <version>1.3.3</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 3fd91453e50554ab942a47f81642eb3fe99192f1..4c9abf44d8422f4361818b06c0504a81fec6605b 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.3.2</version>
+  <version>1.3.3</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 08088de1bff2d7813482cfc0d564e172fc26c8f3..4d31fe3f98c56404215227448630de491ee6e0c8 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.3.2</version>
+  <version>1.3.3</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 288e74ce09b87cd8403173323a94db35835c1280..9d8c40c83266ff998cc236ead67d4d30d05dfaaf 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.3.2</version>
+  <version>1.3.3</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 947229cb3581115d91448ab37acae73b0fb51462..57da6b9dac3bbaf1d5b4665f8b367858a42087f2 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.3.2</version>
+  <version>1.3.3</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 5e97c08417406987e6d0996a33ecfa786158a9a6..d96617c6848b413bf624f85e6626208d3d53fd40 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.3.2</version>
+  <version>1.3.3</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 66c3cdf7ee61c274a6195b548113dbb0ea606232..ed2000400b11be903d2fd4c84e3a5cbd0bb56e00 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.3.2</version>
+  <version>1.3.3</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 1fe4a1c20d755467a34b0c343ee033310c274c22..7de84aff80ab9f7c0255291062ba9d964db34a41 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.3.2</version>
+  <version>1.3.3</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 5dd77d5592d73be0eb6bc4cdb887bc1e35046c7f..fbfa754f11b63ae761eb1dad0cdd11cf66fb9c9b 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.3.2</version>
+  <version>1.3.3</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 951ff24a23dcbc20cd5534773ee6fba45ffc22ce..1f54157b4c9ca8f3279d6eabbc74a50ea38aaaa5 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.3.2</version>
+  <version>1.3.3</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 b1e074a6cd5ae6cf8eecb8241ae187af50c2b238..4dd99d8ded70d62e01d0f29bd5affca647e8d917 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.3.2</version>
+  <version>1.3.3</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 0eaccd0521ae644827385fdcde445df6760e36d4..9f5d6e6eb4a8baa3c45fd8b8a7523d1f6a6db755 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.3.2</version>
+  <version>1.3.3</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 f3ac3f28eb509c2af2ad010ae372a4b18daa3816..1a213a4e319511e69492149767e903e602f9b83b 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.3.2</version>
+  <version>1.3.3</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 fd06562168f8956c519a13aba9bcdfaf47ce937f..e692add2c17f0472364d9dbe2df5810383036297 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.3.2</version>
+  <version>1.3.3</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 93775db24404d74664a416b8287e9ba2eed4f085..f32e5c6e9c12ab692d760e5df15a42a41a995800 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.3.2</version>
+  <version>1.3.3</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 46525a9953b2b657af9b1c7752d15816af713e0a..dd863f7106c3c1cb37b03542b90ab28757341bff 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.3.2</version>
+  <version>1.3.3</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 b3a6fa7ce090994288fa7354cfe4a17f5d44dca2..5dd67c2e0bd2ff5f9eb02f2139539ab91c110791 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.3.2</version>
+  <version>1.3.3</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 14e937dfefe68e93c1e47590a99d5736190cb7a5..fde5bc832a131b7f524eca556e4c1c221efdcfe6 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.3.2</version>
+  <version>1.3.3</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 ae5da569d0eaeab54bc0e2ead2a71caa5eac2d4a..83752f9a7152e4a0660c4e61a3f48c45aa404cbc 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.3.2</version>
+  <version>1.3.3</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 933a015c6a9cd43e55dfa92fe6f6b8ab5d8f9840..b49bccbcb0994e2c0d9ca7baad3b5e8ef4381143 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.3.2</version>
+  <version>1.3.3</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 25106a15b5f9993cf47dc616ebc620a943abd077..f4189c493db2ad6a11f23eb9d04b46bb83e6e399 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.3.2</version>
+  <version>1.3.3</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 6d6858599c0d49a5815dede5677defdfb5c43e0d..b8377f85895be7d5918c20581730cfc8b5a18f9b 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.3.2</version>
+  <version>1.3.3</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 aeb3608e067fadd0fcba9b59de690820ececcc16..c7d99e8b0ce10e6411b473486eebcb5bf723a02b 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.3.2</version>
+  <version>1.3.3</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 5c0fad57be99f30995d07c0b83469c95f852c225..dc3cff60e799122198c8552afc84e7ac45e0ed58 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.3.2</version>
+  <version>1.3.3</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 4762cccfb2fe32666941856580dc0e6edee25fdb..307b5d960de34c3825943b567a734a8cb90c68d4 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.3.2</version>
+  <version>1.3.3</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 0f53304eb03909a9ee75cec5e1d75c425536a836..ab34725208e763b5bdf375e5ae0758012d7966c7 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.3.2</version>
+  <version>1.3.3</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 d2db807978da6aae9f9e76919aeedcebb30e6c09..8cb1f69ab11027918b842811fc3d8006c4a5f67a 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.3.2</version>
+  <version>1.3.3</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 0cf09999e0320703b92cb10531b4b436f4f2f9d3..6c86f252876de048f8d52a5c2feea3677c73954d 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.3.2</version>
+  <version>1.3.3</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 6e4f2c79ba8e1323013b4273197cde7894c5d3a9..386ae427a68c79720eea0636e4dd338e4c66f776 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.3.2</version>
+  <version>1.3.3</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 148eaa942930cff1502af71c2ec44dbcceb62aee..555bd737a4939d79586096be0364c4bf9b6d29ff 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.3.2</version>
+  <version>1.3.3</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 a6aaa5f1327ab50c6ce80909194815d64349345f..378d8e1fddac5d8a82b3f6804b654eeaba3c3bd0 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.3.2</version>
+  <version>1.3.3</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 fa2bc27e3a5006c8b7b594ff1746b5768fdf6a5c..2a49c363857d513e3f3ecc2a49d2ad3c8b8a0aa9 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.3.2</version>
+  <version>1.3.3</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 d548ee62e355800ed8ad783a1887aa62df6fc734..24a856958121c713ba42e9b383db2513ec9a4f5d 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.3.2</version>
+  <version>1.3.3</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 e2df20f395b8700d48301fe0250b8d484e827bb0..02caded9a86056e9bb403b7ce4bf2d6b6b86d31f 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.3.2</version>
+  <version>1.3.3</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 9a714dc61de683a7a77dce7498d078457849a91c..26bd3a214398b59247c0e42f713f65bac4659c9a 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.3.2</version>
+  <version>1.3.3</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
@@ -13,7 +13,7 @@
       <name>dynudpsink</name>
       <longname>UDP packet sender</longname>
       <class>Sink/Network</class>
-      <description>Send data over the network via UDP</description>
+      <description>Send data over the network via UDP with packet destinations picked up dynamically from meta on the buffers passed</description>
       <author>Philippe Khalaf &lt;burger@speedy.org&gt;</author>
       <pads>
         <caps>
@@ -28,7 +28,7 @@
       <name>multiudpsink</name>
       <longname>UDP packet sender</longname>
       <class>Sink/Network</class>
-      <description>Send data over the network via UDP</description>
+      <description>Send data over the network via UDP to one or multiple recipients which can be added or removed at runtime using action signals</description>
       <author>Wim Taymans &lt;wim.taymans@gmail.com&gt;</author>
       <pads>
         <caps>
diff --git a/docs/plugins/inspect/plugin-video4linux2.xml b/docs/plugins/inspect/plugin-video4linux2.xml
index 6b7f2e1bde58bb1deffcb12c6e526857b62f85a9..36370c167de0506ea54aaea2a2bd99cced9c0fcc 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.3.2</version>
+  <version>1.3.3</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 cbaa0e131f26ec2193960de2250c9a04f1df5acc..7443855328d4680e6b0bb9ff4588d79cee5589da 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.3.2</version>
+  <version>1.3.3</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 55ff1fba574f8949a29d56888ccc7d13663044c9..66b25c2a8219cd922184b1952838f5468d72a632 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.3.2</version>
+  <version>1.3.3</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 916ae6095a2e55ec1a2d55e0bf98f7c3499e3cf8..70e936994b000247ac74287b85df614a2f928949 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.3.2</version>
+  <version>1.3.3</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 4dde821fe3b3602e901bf9f005c8b600114d3492..205b5aea1a23ec06f5870889e289263770cd061c 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.3.2</version>
+  <version>1.3.3</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 317fa3a375ced6388532dc408248d8aaa6d5d68c..5ef6d2b9a05ba4236eacee1422cf867286bb7398 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.3.2</version>
+  <version>1.3.3</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 8c585e4f5a3ccb3e8961f203d3e87930e2d68b24..4aa252b1350e272989dbade5c6b25fef7158730b 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.3.2</version>
+  <version>1.3.3</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 37324dff30fb335771956209c48a63d5c71f91d4..f0f26fd77ca0efe30d8ab71e43034cd9d2386562 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.3.2</version>
+  <version>1.3.3</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 a5a34f4799f7df36c8b9e4435f29d546f7d0ef72..236faa14ef0c4a5f24444d1c0f576edf335c2f33 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.3.2</version>
+  <version>1.3.3</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 4452ef5e95894dadc8a08d8b4552660a4bbc6acd..f6aa571709301ad4ce182e6c175c5b20f9684bad 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.3.2</version>
+  <version>1.3.3</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 aa3ee5cc61c3f5277f89be517ac7f539586516e8..20e016bd56767e846e8e4592f183beda8e2af585 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.3.2</version>
+  <version>1.3.3</version>
   <license>LGPL</license>
   <source>gst-plugins-good</source>
   <package>GStreamer Good Plug-ins source release</package>
diff --git a/ext/flac/gstflacdec.c b/ext/flac/gstflacdec.c
index 5de5bc0d55423068314bf1bdbbec8e2ad196b1e1..f5e07023648698b8da0940478b1c36d4009e02c4 100644
--- a/ext/flac/gstflacdec.c
+++ b/ext/flac/gstflacdec.c
@@ -317,7 +317,7 @@ static const guint8 crc8_table[256] = {
 };
 
 static guint8
-gst_flac_calculate_crc8 (guint8 * data, guint length)
+gst_flac_calculate_crc8 (const guint8 * data, guint length)
 {
   guint8 crc = 0;
 
@@ -332,7 +332,8 @@ gst_flac_calculate_crc8 (guint8 * data, guint length)
 /* FIXME: for our purposes it's probably enough to just check for the sync
  * marker - we just want to know if it's a header frame or not */
 static gboolean
-gst_flac_dec_scan_got_frame (GstFlacDec * flacdec, guint8 * data, guint size)
+gst_flac_dec_scan_got_frame (GstFlacDec * flacdec, const guint8 * data,
+    guint size)
 {
   guint headerlen;
   guint sr_from_end = 0;        /* can be 0, 8 or 16 */
diff --git a/ext/pulse/pulsedevicemonitor.c b/ext/pulse/pulsedevicemonitor.c
index b4ee8199417cc97ff9c2d3b53cb3469c64fdcd6b..f697d10424cb3be4a17daf093b4ceae191ccdc06 100644
--- a/ext/pulse/pulsedevicemonitor.c
+++ b/ext/pulse/pulsedevicemonitor.c
@@ -630,7 +630,7 @@ gst_pulse_device_new (guint device_index, const gchar * device_name,
 
 
   gstdev = g_object_new (GST_TYPE_PULSE_DEVICE,
-      "display-name", device_name, "caps", caps, "klass", klass,
+      "display-name", device_name, "caps", caps, "device-class", klass,
       "internal-name", internal_name, NULL);
 
   gstdev->type = type;
diff --git a/ext/soup/gstsouphttpsrc.c b/ext/soup/gstsouphttpsrc.c
index 1ec661bb2ad1d43a6559d43abdf9e8bb5ded8994..11842f17517bf145e3f2282c4da1f717469bf191 100644
--- a/ext/soup/gstsouphttpsrc.c
+++ b/ext/soup/gstsouphttpsrc.c
@@ -990,6 +990,40 @@ gst_soup_http_src_authenticate_cb (SoupSession * session, SoupMessage * msg,
   }
 }
 
+static void
+insert_http_header (const gchar * name, const gchar * value, gpointer user_data)
+{
+  GstStructure *headers = user_data;
+  const GValue *gv;
+
+  gv = gst_structure_get_value (headers, name);
+  if (gv && GST_VALUE_HOLDS_ARRAY (gv)) {
+    GValue v = G_VALUE_INIT;
+
+    g_value_init (&v, G_TYPE_STRING);
+    g_value_set_string (&v, value);
+    gst_value_array_append_value ((GValue *) gv, &v);
+    g_value_unset (&v);
+  } else if (gv && G_VALUE_HOLDS_STRING (gv)) {
+    GValue arr = G_VALUE_INIT;
+    GValue v = G_VALUE_INIT;
+    const gchar *old_value = g_value_get_string (gv);
+
+    g_value_init (&arr, GST_TYPE_ARRAY);
+    g_value_init (&v, G_TYPE_STRING);
+    g_value_set_string (&v, old_value);
+    gst_value_array_append_value (&arr, &v);
+    g_value_set_string (&v, value);
+    gst_value_array_append_value (&arr, &v);
+
+    gst_structure_set_value (headers, name, &arr);
+    g_value_unset (&v);
+    g_value_unset (&arr);
+  } else {
+    gst_structure_set (headers, name, G_TYPE_STRING, value, NULL);
+  }
+}
+
 static void
 gst_soup_http_src_got_headers_cb (SoupMessage * msg, GstSoupHTTPSrc * src)
 {
@@ -998,6 +1032,8 @@ gst_soup_http_src_got_headers_cb (SoupMessage * msg, GstSoupHTTPSrc * src)
   GstBaseSrc *basesrc;
   guint64 newsize;
   GHashTable *params = NULL;
+  GstEvent *http_headers_event;
+  GstStructure *http_headers, *headers;
 
   GST_INFO_OBJECT (src, "got headers");
 
@@ -1021,6 +1057,29 @@ gst_soup_http_src_got_headers_cb (SoupMessage * msg, GstSoupHTTPSrc * src)
   src->session_io_status = GST_SOUP_HTTP_SRC_SESSION_IO_STATUS_RUNNING;
   src->got_headers = TRUE;
 
+  http_headers = gst_structure_new_empty ("http-headers");
+  gst_structure_set (http_headers, "uri", G_TYPE_STRING, src->location, NULL);
+  if (src->redirection_uri)
+    gst_structure_set (http_headers, "redirection-uri", G_TYPE_STRING,
+        src->redirection_uri, NULL);
+  headers = gst_structure_new_empty ("request-headers");
+  soup_message_headers_foreach (msg->request_headers, insert_http_header,
+      headers);
+  gst_structure_set (http_headers, "request-headers", GST_TYPE_STRUCTURE,
+      headers, NULL);
+  gst_structure_free (headers);
+  headers = gst_structure_new_empty ("response-headers");
+  soup_message_headers_foreach (msg->response_headers, insert_http_header,
+      headers);
+  gst_structure_set (http_headers, "response-headers", GST_TYPE_STRUCTURE,
+      headers, NULL);
+  gst_structure_free (headers);
+
+  http_headers_event =
+      gst_event_new_custom (GST_EVENT_CUSTOM_DOWNSTREAM_STICKY, http_headers);
+  gst_event_replace (&src->http_headers_event, http_headers_event);
+  gst_event_unref (http_headers_event);
+
   /* Parse Content-Length. */
   if (soup_message_headers_get_encoding (msg->response_headers) ==
       SOUP_ENCODING_CONTENT_LENGTH) {
@@ -1644,13 +1703,20 @@ gst_soup_http_src_create (GstPushSrc * psrc, GstBuffer ** outbuf)
 {
   GstSoupHTTPSrc *src;
   GstFlowReturn ret;
+  GstEvent *http_headers_event;
 
   src = GST_SOUP_HTTP_SRC (psrc);
 
   g_mutex_lock (&src->mutex);
   *outbuf = NULL;
   ret = gst_soup_http_src_do_request (src, SOUP_METHOD_GET, outbuf);
+  http_headers_event = src->http_headers_event;
+  src->http_headers_event = NULL;
   g_mutex_unlock (&src->mutex);
+
+  if (http_headers_event)
+    gst_pad_push_event (GST_BASE_SRC_PAD (src), http_headers_event);
+
   return ret;
 }
 
diff --git a/ext/soup/gstsouphttpsrc.h b/ext/soup/gstsouphttpsrc.h
index 77e1000b727cccf7987d085cee9bfb95618610ea..e31dfcf7d8c5ad869d5aa3f747fd037019758e6f 100644
--- a/ext/soup/gstsouphttpsrc.h
+++ b/ext/soup/gstsouphttpsrc.h
@@ -108,6 +108,8 @@ struct _GstSoupHTTPSrc {
 
   GMutex mutex;
   GCond request_finished_cond;
+
+  GstEvent *http_headers_event;
 };
 
 struct _GstSoupHTTPSrcClass {
diff --git a/ext/speex/gstspeexenc.c b/ext/speex/gstspeexenc.c
index c17e8a3988323119bab2bf0abbc1e3717ca63a32..8e13eb1c2d92bfbf64ef057fce4c9091e0482099 100644
--- a/ext/speex/gstspeexenc.c
+++ b/ext/speex/gstspeexenc.c
@@ -658,6 +658,7 @@ _gst_caps_set_buffer_array (GstCaps * caps, const gchar * field,
 
     buf = va_arg (va, GstBuffer *);
   }
+  va_end (va);
 
   gst_structure_set_value (structure, field, &array);
   g_value_unset (&array);
diff --git a/ext/vpx/gstvp8enc.c b/ext/vpx/gstvp8enc.c
index 0271ffcd228921ec99aca69bbebe9533f654b71f..c1c0a07e3c9d6ac99de9b6573075933f1e442ef3 100644
--- a/ext/vpx/gstvp8enc.c
+++ b/ext/vpx/gstvp8enc.c
@@ -932,18 +932,18 @@ gst_vp8_enc_set_property (GObject * object, guint prop_id,
 
       memset (&gst_vp8_enc->cfg.ts_rate_decimator, 0,
           sizeof (gst_vp8_enc->cfg.ts_rate_decimator));
-      if (va->n_values > VPX_TS_MAX_LAYERS) {
+      if (va == NULL) {
+        gst_vp8_enc->n_ts_rate_decimator = 0;
+      } else if (va->n_values > VPX_TS_MAX_LAYERS) {
         g_warning ("%s: Only %d layers allowed at maximum",
             GST_ELEMENT_NAME (gst_vp8_enc), VPX_TS_MAX_LAYERS);
-      } else if (va) {
+      } else {
         gint i;
 
         for (i = 0; i < va->n_values; i++)
           gst_vp8_enc->cfg.ts_rate_decimator[i] =
               g_value_get_int (g_value_array_get_nth (va, i));
         gst_vp8_enc->n_ts_rate_decimator = va->n_values;
-      } else {
-        gst_vp8_enc->n_ts_rate_decimator = 0;
       }
       global = TRUE;
       break;
diff --git a/ext/vpx/gstvp9enc.c b/ext/vpx/gstvp9enc.c
index 1b1531187741e151fed37561d83bd3c7d3c6d292..9bf5efb6e71db636564e08fb6b3f4b543ee1a7e7 100644
--- a/ext/vpx/gstvp9enc.c
+++ b/ext/vpx/gstvp9enc.c
@@ -909,18 +909,18 @@ gst_vp9_enc_set_property (GObject * object, guint prop_id,
 
       memset (&gst_vp9_enc->cfg.ts_rate_decimator, 0,
           sizeof (gst_vp9_enc->cfg.ts_rate_decimator));
-      if (va->n_values > VPX_TS_MAX_LAYERS) {
+      if (va == NULL) {
+        gst_vp9_enc->n_ts_rate_decimator = 0;
+      } else if (va->n_values > VPX_TS_MAX_LAYERS) {
         g_warning ("%s: Only %d layers allowed at maximum",
             GST_ELEMENT_NAME (gst_vp9_enc), VPX_TS_MAX_LAYERS);
-      } else if (va) {
+      } else {
         gint i;
 
         for (i = 0; i < va->n_values; i++)
           gst_vp9_enc->cfg.ts_rate_decimator[i] =
               g_value_get_int (g_value_array_get_nth (va, i));
         gst_vp9_enc->n_ts_rate_decimator = va->n_values;
-      } else {
-        gst_vp9_enc->n_ts_rate_decimator = 0;
       }
       global = TRUE;
       break;
diff --git a/gst-plugins-good.doap b/gst-plugins-good.doap
index f2675771da8901949dc1facf8b898ba1a20974db..0f8b061e38d53e2e755bd0899eb76a258a816263 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.3.3</revision>
+   <branch>1.3</branch>
+   <name></name>
+   <created>2014-06-22</created>
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.3.3.tar.xz" />
+  </Version>
+ </release>
+
  <release>
   <Version>
    <revision>1.3.2</revision>
diff --git a/gst-plugins-good.spec b/gst-plugins-good.spec
index 2b25b333ce68ba5feffaa12a3c4d47fea5fd52f8..67533af98f4ca6a8485936bbbeef823519bad1b0 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.3.2
+Version: 	1.3.3
 Release: 	1.gst
 Summary: 	GStreamer plug-ins with good code and licensing
 
diff --git a/gst/avi/gstavidemux.c b/gst/avi/gstavidemux.c
index 22d3dbb857ebcb08381fa73e579f57bbf348015f..c84ffce87a72c41d682ce0be3453bcab49e1501a 100644
--- a/gst/avi/gstavidemux.c
+++ b/gst/avi/gstavidemux.c
@@ -196,6 +196,7 @@ gst_avi_demux_init (GstAviDemux * avi)
   gst_element_add_pad (GST_ELEMENT_CAST (avi), avi->sinkpad);
 
   avi->adapter = gst_adapter_new ();
+  avi->flowcombiner = gst_flow_combiner_new ();
 
   gst_avi_demux_reset (avi);
 
@@ -210,6 +211,7 @@ gst_avi_demux_finalize (GObject * object)
   GST_DEBUG ("AVI: finalize");
 
   g_object_unref (avi->adapter);
+  gst_flow_combiner_free (avi->flowcombiner);
 
   G_OBJECT_CLASS (parent_class)->finalize (object);
 }
@@ -232,6 +234,7 @@ gst_avi_demux_reset_stream (GstAviDemux * avi, GstAviStream * stream)
     if (stream->exposed) {
       gst_pad_set_active (stream->pad, FALSE);
       gst_element_remove_pad (GST_ELEMENT_CAST (avi), stream->pad);
+      gst_flow_combiner_remove_pad (avi->flowcombiner, stream->pad);
     } else
       gst_object_unref (stream->pad);
   }
@@ -898,7 +901,6 @@ gst_avi_demux_handle_sink_event (GstPad * pad, GstObject * parent,
       gst_adapter_clear (avi->adapter);
       avi->have_eos = FALSE;
       for (i = 0; i < avi->num_streams; i++) {
-        avi->stream[i].last_flow = GST_FLOW_OK;
         avi->stream[i].discont = TRUE;
       }
       /* fall through to default case so that the event gets passed downstream */
@@ -1886,6 +1888,7 @@ gst_avi_demux_expose_streams (GstAviDemux * avi, gboolean force)
     if (force || stream->idx_n != 0) {
       GST_LOG_OBJECT (avi, "Adding pad %s", GST_PAD_NAME (stream->pad));
       gst_element_add_pad ((GstElement *) avi, stream->pad);
+      gst_flow_combiner_add_pad (avi->flowcombiner, stream->pad);
 
 #if 0
       if (avi->element_index)
@@ -2404,7 +2407,6 @@ gst_avi_demux_parse_stream (GstAviDemux * avi, GstBuffer * buf)
   stream->current_entry = -1;
   stream->current_total = 0;
 
-  stream->last_flow = GST_FLOW_OK;
   stream->discont = TRUE;
 
   stream->total_bytes = 0;
@@ -4638,7 +4640,6 @@ gst_avi_demux_handle_seek (GstAviDemux * avi, GstPad * pad, GstEvent * event)
   /* reset the last flow and mark discont, seek is always DISCONT */
   for (i = 0; i < avi->num_streams; i++) {
     GST_DEBUG_OBJECT (avi, "marking DISCONT");
-    avi->stream[i].last_flow = GST_FLOW_OK;
     avi->stream[i].discont = TRUE;
   }
   GST_PAD_STREAM_UNLOCK (avi->sinkpad);
@@ -5003,37 +5004,11 @@ static GstFlowReturn
 gst_avi_demux_combine_flows (GstAviDemux * avi, GstAviStream * stream,
     GstFlowReturn ret)
 {
-  guint i;
-  gboolean unexpected = FALSE, not_linked = TRUE;
-
-  /* store the value */
-  stream->last_flow = ret;
-
-  /* any other error that is not-linked or eos can be returned right away */
-  if (G_LIKELY (ret != GST_FLOW_EOS && ret != GST_FLOW_NOT_LINKED))
-    goto done;
-
-  /* only return NOT_LINKED if all other pads returned NOT_LINKED */
-  for (i = 0; i < avi->num_streams; i++) {
-    GstAviStream *ostream = &avi->stream[i];
-
-    ret = ostream->last_flow;
-    /* no unexpected or unlinked, return */
-    if (G_LIKELY (ret != GST_FLOW_EOS && ret != GST_FLOW_NOT_LINKED))
-      goto done;
+  GST_LOG_OBJECT (avi, "Stream %s:%s flow return: %s",
+      GST_DEBUG_PAD_NAME (stream->pad), gst_flow_get_name (ret));
+  ret = gst_flow_combiner_update_flow (avi->flowcombiner, ret);
+  GST_LOG_OBJECT (avi, "combined to return %s", gst_flow_get_name (ret));
 
-    /* we check to see if we have at least 1 unexpected or all unlinked */
-    unexpected |= (ret == GST_FLOW_EOS);
-    not_linked &= (ret == GST_FLOW_NOT_LINKED);
-  }
-  /* when we get here, we all have unlinked or unexpected */
-  if (not_linked)
-    ret = GST_FLOW_NOT_LINKED;
-  else if (unexpected)
-    ret = GST_FLOW_EOS;
-done:
-  GST_LOG_OBJECT (avi, "combined %s to return %s",
-      gst_flow_get_name (stream->last_flow), gst_flow_get_name (ret));
   return ret;
 }
 
@@ -5092,7 +5067,6 @@ gst_avi_demux_advance (GstAviDemux * avi, GstAviStream * stream,
           &stream->current_timestamp, &stream->current_ts_end,
           &stream->current_offset, &stream->current_offset_end);
       /* and MARK discont for this stream */
-      stream->last_flow = GST_FLOW_OK;
       stream->discont = TRUE;
       GST_DEBUG_OBJECT (avi, "Moved from %u to %u, ts %" GST_TIME_FORMAT
           ", ts_end %" GST_TIME_FORMAT ", off %" G_GUINT64_FORMAT
@@ -5134,7 +5108,7 @@ gst_avi_demux_find_next (GstAviDemux * avi, gfloat rate)
     stream = &avi->stream[i];
 
     /* ignore streams that finished */
-    if (stream->last_flow == GST_FLOW_EOS)
+    if (GST_PAD_LAST_FLOW_RETURN (stream->pad) == GST_FLOW_EOS)
       continue;
 
     position = stream->current_timestamp;
diff --git a/gst/avi/gstavidemux.h b/gst/avi/gstavidemux.h
index 0e8786fb9615806a19516f8d94452cd4485a73c5..fd2af507ded30b2e9095752231bdb855c303e139 100644
--- a/gst/avi/gstavidemux.h
+++ b/gst/avi/gstavidemux.h
@@ -27,6 +27,7 @@
 #include "gst/riff/riff-ids.h"
 #include "gst/riff/riff-read.h"
 #include <gst/base/gstadapter.h>
+#include <gst/base/gstflowcombiner.h>
 
 G_BEGIN_DECLS
 
@@ -90,7 +91,6 @@ typedef struct {
   guint64        current_offset;
   guint64        current_offset_end;
 
-  GstFlowReturn  last_flow;
   gboolean       discont;
 
   /* stream length */
@@ -165,6 +165,8 @@ typedef struct _GstAviDemux {
 
   guint          main_stream; /* used for seeking */
 
+  GstFlowCombiner *flowcombiner;
+
   gboolean       have_group_id;
   guint          group_id;
 
diff --git a/gst/flv/gstflvdemux.c b/gst/flv/gstflvdemux.c
index 212d18a329e6d58f4720515bec3d61a964d4f256..0af779ca7dc2472d12c19bba1baab9f7f47414f3 100644
--- a/gst/flv/gstflvdemux.c
+++ b/gst/flv/gstflvdemux.c
@@ -885,10 +885,11 @@ gst_flv_demux_push_tags (GstFlvDemux * demux)
   }
 }
 
-static void
+static gboolean
 gst_flv_demux_update_resync (GstFlvDemux * demux, guint32 pts, gboolean discont,
     guint32 * last, GstClockTime * offset)
 {
+  gboolean ret = FALSE;
   gint32 dpts = pts - *last;
   if (!discont && ABS (dpts) >= RESYNC_THRESHOLD) {
     /* Theoretically, we should use substract the duration of the last buffer,
@@ -898,8 +899,12 @@ gst_flv_demux_update_resync (GstFlvDemux * demux, guint32 pts, gboolean discont,
     GST_WARNING_OBJECT (demux,
         "Large pts gap (%" G_GINT32_FORMAT " ms), assuming resync, offset now %"
         GST_TIME_FORMAT "", dpts, GST_TIME_ARGS (*offset));
+
+    ret = TRUE;
   }
   *last = pts;
+
+  return ret;
 }
 
 static GstFlowReturn
@@ -1031,6 +1036,7 @@ gst_flv_demux_parse_tag_audio (GstFlvDemux * demux, GstBuffer * buffer)
     /* We need to set caps before adding */
     gst_element_add_pad (GST_ELEMENT (demux),
         gst_object_ref (demux->audio_pad));
+    gst_flow_combiner_add_pad (demux->flowcombiner, demux->audio_pad);
 
     /* We only emit no more pads when we have audio and video. Indeed we can
      * not trust the FLV header to tell us if there will be only audio or
@@ -1098,8 +1104,10 @@ gst_flv_demux_parse_tag_audio (GstFlvDemux * demux, GstBuffer * buffer)
   }
 
   /* detect (and deem to be resyncs)  large pts gaps */
-  gst_flv_demux_update_resync (demux, pts, demux->audio_need_discont,
-      &demux->last_audio_pts, &demux->audio_time_offset);
+  if (gst_flv_demux_update_resync (demux, pts, demux->audio_need_discont,
+      &demux->last_audio_pts, &demux->audio_time_offset)) {
+    GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_RESYNC);
+  }
 
   /* Fill buffer with data */
   GST_BUFFER_TIMESTAMP (outbuf) = pts * GST_MSECOND + demux->audio_time_offset;
@@ -1170,27 +1178,20 @@ gst_flv_demux_parse_tag_audio (GstFlvDemux * demux, GstBuffer * buffer)
 
   /* Push downstream */
   ret = gst_pad_push (demux->audio_pad, outbuf);
-  if (G_UNLIKELY (ret != GST_FLOW_OK)) {
-    if (demux->segment.rate < 0.0 && ret == GST_FLOW_EOS &&
-        demux->segment.position > demux->segment.stop) {
-      /* In reverse playback we can get a GST_FLOW_EOS when
-       * we are at the end of the segment, so we just need to jump
-       * back to the previous section. */
-      GST_DEBUG_OBJECT (demux, "downstream has reached end of segment");
-      demux->audio_done = TRUE;
-      ret = GST_FLOW_OK;
-    } else {
-      if (ret == GST_FLOW_NOT_LINKED) {
-        demux->audio_linked = FALSE;
-      } else
-        GST_WARNING_OBJECT (demux, "failed pushing a %" G_GUINT64_FORMAT
-            " bytes audio buffer: %s", demux->tag_data_size,
-            gst_flow_get_name (ret));
-      goto beach;
-    }
+
+  if (G_UNLIKELY (ret != GST_FLOW_OK) &&
+      demux->segment.rate < 0.0 && ret == GST_FLOW_EOS &&
+      demux->segment.position > demux->segment.stop) {
+    /* In reverse playback we can get a GST_FLOW_EOS when
+     * we are at the end of the segment, so we just need to jump
+     * back to the previous section. */
+    GST_DEBUG_OBJECT (demux, "downstream has reached end of segment");
+    demux->audio_done = TRUE;
+    ret = GST_FLOW_OK;
+    goto beach;
   }
 
-  demux->audio_linked = TRUE;
+  ret = gst_flow_combiner_update_flow (demux->flowcombiner, ret);
 
 beach:
   gst_buffer_unmap (buffer, &map);
@@ -1420,6 +1421,7 @@ gst_flv_demux_parse_tag_video (GstFlvDemux * demux, GstBuffer * buffer)
     /* We need to set caps before adding */
     gst_element_add_pad (GST_ELEMENT (demux),
         gst_object_ref (demux->video_pad));
+    gst_flow_combiner_add_pad (demux->flowcombiner, demux->video_pad);
 
     /* We only emit no more pads when we have audio and video. Indeed we can
      * not trust the FLV header to tell us if there will be only audio or
@@ -1489,8 +1491,10 @@ gst_flv_demux_parse_tag_video (GstFlvDemux * demux, GstBuffer * buffer)
   }
 
   /* detect (and deem to be resyncs)  large pts gaps */
-  gst_flv_demux_update_resync (demux, pts, demux->video_need_discont,
-      &demux->last_video_pts, &demux->video_time_offset);
+  if (gst_flv_demux_update_resync (demux, pts, demux->video_need_discont,
+      &demux->last_video_pts, &demux->video_time_offset)) {
+    GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_RESYNC);
+  }
 
   /* Fill buffer with data */
   GST_BUFFER_TIMESTAMP (outbuf) = pts * GST_MSECOND + demux->video_time_offset;
@@ -1564,27 +1568,19 @@ gst_flv_demux_parse_tag_video (GstFlvDemux * demux, GstBuffer * buffer)
   /* Push downstream */
   ret = gst_pad_push (demux->video_pad, outbuf);
 
-  if (G_UNLIKELY (ret != GST_FLOW_OK)) {
-    if (demux->segment.rate < 0.0 && ret == GST_FLOW_EOS &&
-        demux->segment.position > demux->segment.stop) {
-      /* In reverse playback we can get a GST_FLOW_EOS when
-       * we are at the end of the segment, so we just need to jump
-       * back to the previous section. */
-      GST_DEBUG_OBJECT (demux, "downstream has reached end of segment");
-      demux->video_done = TRUE;
-      ret = GST_FLOW_OK;
-    } else {
-      if (ret == GST_FLOW_NOT_LINKED)
-        demux->video_linked = FALSE;
-      else
-        GST_WARNING_OBJECT (demux, "failed pushing a %" G_GUINT64_FORMAT
-            " bytes video buffer: %s", demux->tag_data_size,
-            gst_flow_get_name (ret));
-      goto beach;
-    }
+  if (G_UNLIKELY (ret != GST_FLOW_OK) &&
+      demux->segment.rate < 0.0 && ret == GST_FLOW_EOS &&
+      demux->segment.position > demux->segment.stop) {
+    /* In reverse playback we can get a GST_FLOW_EOS when
+     * we are at the end of the segment, so we just need to jump
+     * back to the previous section. */
+    GST_DEBUG_OBJECT (demux, "downstream has reached end of segment");
+    demux->video_done = TRUE;
+    ret = GST_FLOW_OK;
+    goto beach;
   }
 
-  demux->video_linked = TRUE;
+  ret = gst_flow_combiner_update_flow (demux->flowcombiner, ret);
 
 beach:
   gst_buffer_unmap (buffer, &map);
@@ -1811,10 +1807,6 @@ gst_flv_demux_cleanup (GstFlvDemux * demux)
   demux->audio_need_discont = TRUE;
   demux->video_need_discont = TRUE;
 
-  /* By default we consider them as linked */
-  demux->audio_linked = TRUE;
-  demux->video_linked = TRUE;
-
   demux->has_audio = FALSE;
   demux->has_video = FALSE;
   demux->push_tags = FALSE;
@@ -1862,12 +1854,14 @@ gst_flv_demux_cleanup (GstFlvDemux * demux)
   }
 
   if (demux->audio_pad) {
+    gst_flow_combiner_remove_pad (demux->flowcombiner, demux->audio_pad);
     gst_element_remove_pad (GST_ELEMENT (demux), demux->audio_pad);
     gst_object_unref (demux->audio_pad);
     demux->audio_pad = NULL;
   }
 
   if (demux->video_pad) {
+    gst_flow_combiner_remove_pad (demux->flowcombiner, demux->video_pad);
     gst_element_remove_pad (GST_ELEMENT (demux), demux->video_pad);
     gst_object_unref (demux->video_pad);
     demux->video_pad = NULL;
@@ -1947,13 +1941,8 @@ gst_flv_demux_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
 
 parse:
   if (G_UNLIKELY (ret != GST_FLOW_OK)) {
-    if (ret == GST_FLOW_NOT_LINKED && (demux->audio_linked
-            || demux->video_linked)) {
-      ret = GST_FLOW_OK;
-    } else {
-      GST_DEBUG_OBJECT (demux, "got flow return %s", gst_flow_get_name (ret));
-      goto beach;
-    }
+    GST_DEBUG_OBJECT (demux, "got flow return %s", gst_flow_get_name (ret));
+    goto beach;
   }
 
   if (G_UNLIKELY (demux->flushing)) {
@@ -2127,13 +2116,6 @@ parse:
   }
 
 beach:
-  if (G_UNLIKELY (ret == GST_FLOW_NOT_LINKED)) {
-    /* If either audio or video is linked we return GST_FLOW_OK */
-    if (demux->audio_linked || demux->video_linked) {
-      ret = GST_FLOW_OK;
-    }
-  }
-
   return ret;
 
 /* ERRORS */
@@ -2242,13 +2224,8 @@ gst_flv_demux_pull_tag (GstPad * pad, GstFlvDemux * demux)
   demux->state = FLV_STATE_TAG_TYPE;
 
   if (G_UNLIKELY (ret == GST_FLOW_NOT_LINKED)) {
-    /* If either audio or video is linked we return GST_FLOW_OK */
-    if (demux->audio_linked || demux->video_linked) {
-      ret = GST_FLOW_OK;
-    } else {
-      GST_WARNING_OBJECT (demux, "parsing this tag returned not-linked and "
-          "neither video nor audio are linked");
-    }
+    GST_WARNING_OBJECT (demux, "parsing this tag returned not-linked and "
+        "neither video nor audio are linked");
   }
 
 beach:
@@ -3132,6 +3109,10 @@ gst_flv_demux_src_event (GstPad * pad, GstObject * parent, GstEvent * event)
 
   switch (GST_EVENT_TYPE (event)) {
     case GST_EVENT_SEEK:
+      /* Try to push upstream first */
+      ret = gst_pad_push_event (demux->sinkpad, event);
+      if (ret)
+        break;
       if (demux->random_access) {
         ret = gst_flv_demux_handle_seek_pull (demux, event, TRUE);
       } else {
@@ -3159,6 +3140,11 @@ gst_flv_demux_query (GstPad * pad, GstObject * parent, GstQuery * query)
     {
       GstFormat format;
 
+      /* Try to push upstream first */
+      res = gst_pad_peer_query (demux->sinkpad, query);
+      if (res)
+        goto beach;
+
       gst_query_parse_duration (query, &format, NULL);
 
       /* duration is time only */
@@ -3382,6 +3368,11 @@ gst_flv_demux_dispose (GObject * object)
     demux->taglist = NULL;
   }
 
+  if (demux->flowcombiner) {
+    gst_flow_combiner_free (demux->flowcombiner);
+    demux->flowcombiner = NULL;
+  }
+
   if (demux->new_seg_event) {
     gst_event_unref (demux->new_seg_event);
     demux->new_seg_event = NULL;
@@ -3472,6 +3463,7 @@ gst_flv_demux_init (GstFlvDemux * demux)
 
   demux->adapter = gst_adapter_new ();
   demux->taglist = gst_tag_list_new_empty ();
+  demux->flowcombiner = gst_flow_combiner_new ();
   gst_segment_init (&demux->segment, GST_FORMAT_TIME);
 
   demux->own_index = FALSE;
diff --git a/gst/flv/gstflvdemux.h b/gst/flv/gstflvdemux.h
index 79a8902ead90a6a0c7e58b4b828fde3b1c2d5b19..611482c35f4c4210ec5c1db3b3e929e9e129f84f 100644
--- a/gst/flv/gstflvdemux.h
+++ b/gst/flv/gstflvdemux.h
@@ -22,6 +22,7 @@
 
 #include <gst/gst.h>
 #include <gst/base/gstadapter.h>
+#include <gst/base/gstflowcombiner.h>
 #include "gstindex.h"
 
 G_BEGIN_DECLS
@@ -74,6 +75,8 @@ struct _GstFlvDemux
 
   GstAdapter *adapter;
 
+  GstFlowCombiner *flowcombiner;
+
   GstSegment segment;
 
   GstEvent *new_seg_event;
diff --git a/gst/isomp4/fourcc.h b/gst/isomp4/fourcc.h
index 64322a7a753fd805e07b6d5d92e50a22d475e2c6..4edf900b07b1ff5d56cf1aedd880197a51be2937 100644
--- a/gst/isomp4/fourcc.h
+++ b/gst/isomp4/fourcc.h
@@ -304,6 +304,11 @@ G_BEGIN_DECLS
 /* ilst metatags */
 #define FOURCC__cmt     GST_MAKE_FOURCC(0xa9, 'c','m','t')
 
+/* apple tags */
+#define FOURCC__mak     GST_MAKE_FOURCC(0xa9, 'm','a','k')
+#define FOURCC__mod     GST_MAKE_FOURCC(0xa9, 'm','o','d')
+#define FOURCC__swr     GST_MAKE_FOURCC(0xa9, 's','w','r')
+
 /* Chapters reference */
 #define FOURCC_chap     GST_MAKE_FOURCC('c','h','a','p')
 
diff --git a/gst/isomp4/qtdemux.c b/gst/isomp4/qtdemux.c
index 53847c0027b7f727d583676afa8912c32f9fe108..7df62597066a7b8e44e2c1c51f8ccd4edbdcc411 100644
--- a/gst/isomp4/qtdemux.c
+++ b/gst/isomp4/qtdemux.c
@@ -294,9 +294,6 @@ struct _QtDemuxStream
   GstSegment segment;
   guint32 segment_seqnum;       /* segment event seqnum obtained from seek */
 
-  /* last GstFlowReturn */
-  GstFlowReturn last_ret;
-
   /* quicktime segments */
   guint32 n_segments;
   QtDemuxSegment *segments;
@@ -467,7 +464,8 @@ static gboolean qtdemux_parse_samples (GstQTDemux * qtdemux,
 static GstFlowReturn qtdemux_expose_streams (GstQTDemux * qtdemux);
 static void gst_qtdemux_stream_free (GstQTDemux * qtdemux,
     QtDemuxStream * stream);
-static void gst_qtdemux_stream_clear (QtDemuxStream * stream);
+static void gst_qtdemux_stream_clear (GstQTDemux * qtdemux,
+    QtDemuxStream * stream);
 static void gst_qtdemux_remove_stream (GstQTDemux * qtdemux, int index);
 static GstFlowReturn qtdemux_prepare_streams (GstQTDemux * qtdemux);
 static void qtdemux_do_allocation (GstQTDemux * qtdemux,
@@ -546,6 +544,7 @@ gst_qtdemux_init (GstQTDemux * qtdemux)
   qtdemux->have_group_id = FALSE;
   qtdemux->group_id = G_MAXUINT;
   gst_segment_init (&qtdemux->segment, GST_FORMAT_TIME);
+  qtdemux->flowcombiner = gst_flow_combiner_new ();
 
   GST_OBJECT_FLAG_SET (qtdemux, GST_ELEMENT_FLAG_INDEXABLE);
 }
@@ -559,6 +558,7 @@ gst_qtdemux_dispose (GObject * object)
     g_object_unref (G_OBJECT (qtdemux->adapter));
     qtdemux->adapter = NULL;
   }
+  gst_flow_combiner_free (qtdemux->flowcombiner);
 
   G_OBJECT_CLASS (parent_class)->dispose (object);
 }
@@ -1397,7 +1397,6 @@ gst_qtdemux_perform_seek (GstQTDemux * qtdemux, GstSegment * segment,
     stream->sample_index = -1;
     stream->offset_in_sample = 0;
     stream->segment_index = -1;
-    stream->last_ret = GST_FLOW_OK;
     stream->sent_eos = FALSE;
     stream->segment_seqnum = seqnum;
 
@@ -1427,7 +1426,6 @@ gst_qtdemux_do_seek (GstQTDemux * qtdemux, GstPad * pad, GstEvent * event)
   gboolean flush;
   gboolean update;
   GstSegment seeksegment;
-  int i;
   guint32 seqnum = 0;
   GstEvent *flush_event;
 
@@ -1504,10 +1502,6 @@ gst_qtdemux_do_seek (GstQTDemux * qtdemux, GstPad * pad, GstEvent * event)
     gst_element_post_message (GST_ELEMENT_CAST (qtdemux), msg);
   }
 
-  /* restart streaming, NEWSEGMENT will be sent from the streaming thread. */
-  for (i = 0; i < qtdemux->n_streams; i++)
-    qtdemux->streams[i]->last_ret = GST_FLOW_OK;
-
   gst_pad_start_task (qtdemux->sinkpad, (GstTaskFunction) gst_qtdemux_loop,
       qtdemux->sinkpad, NULL);
 
@@ -1562,10 +1556,10 @@ gst_qtdemux_handle_src_event (GstPad * pad, GstObject * parent,
       GstClockTime ts = gst_util_get_timestamp ();
 #endif
 
-      if (qtdemux->upstream_newsegment || qtdemux->fragmented) {
+      if (qtdemux->upstream_newsegment && qtdemux->fragmented) {
         /* seek should be handled by upstream, we might need to re-download fragments */
         GST_DEBUG_OBJECT (qtdemux,
-            "leting upstream handle seek for smoothstreaming");
+            "let upstream handle seek for fragmented playback");
         goto upstream;
       }
 
@@ -1715,7 +1709,6 @@ _create_stream (void)
   stream->time_position = 0;
   stream->sample_index = -1;
   stream->offset_in_sample = 0;
-  stream->last_ret = GST_FLOW_OK;
   stream->new_stream = TRUE;
   return stream;
 }
@@ -1879,10 +1872,9 @@ gst_qtdemux_reset (GstQTDemux * qtdemux, gboolean hard)
     qtdemux->got_moov = FALSE;
   } else if (qtdemux->mss_mode) {
     for (n = 0; n < qtdemux->n_streams; n++)
-      gst_qtdemux_stream_clear (qtdemux->streams[n]);
+      gst_qtdemux_stream_clear (qtdemux, qtdemux->streams[n]);
   } else {
     for (n = 0; n < qtdemux->n_streams; n++) {
-      qtdemux->streams[n]->last_ret = GST_FLOW_OK;
       qtdemux->streams[n]->sent_eos = FALSE;
       qtdemux->streams[n]->segment_seqnum = 0;
       qtdemux->streams[n]->time_position = 0;
@@ -2130,7 +2122,7 @@ gst_qtdemux_stbl_free (QtDemuxStream * stream)
 }
 
 static void
-gst_qtdemux_stream_clear (QtDemuxStream * stream)
+gst_qtdemux_stream_clear (GstQTDemux * qtdemux, QtDemuxStream * stream)
 {
   if (stream->allocator)
     gst_object_unref (stream->allocator);
@@ -2154,7 +2146,6 @@ gst_qtdemux_stream_clear (QtDemuxStream * stream)
   /* free stbl sub-atoms */
   gst_qtdemux_stbl_free (stream);
 
-  stream->last_ret = GST_FLOW_OK;
   stream->sent_eos = FALSE;
   stream->segment_index = -1;
   stream->time_position = 0;
@@ -2167,12 +2158,14 @@ gst_qtdemux_stream_clear (QtDemuxStream * stream)
 static void
 gst_qtdemux_stream_free (GstQTDemux * qtdemux, QtDemuxStream * stream)
 {
-  gst_qtdemux_stream_clear (stream);
+  gst_qtdemux_stream_clear (qtdemux, stream);
   if (stream->caps)
     gst_caps_unref (stream->caps);
   stream->caps = NULL;
-  if (stream->pad)
+  if (stream->pad) {
     gst_element_remove_pad (GST_ELEMENT_CAST (qtdemux), stream->pad);
+    gst_flow_combiner_remove_pad (qtdemux->flowcombiner, stream->pad);
+  }
   g_free (stream);
 }
 
@@ -3511,8 +3504,6 @@ gst_qtdemux_activate_segment (GstQTDemux * qtdemux, QtDemuxStream * stream,
       stream->segment_seqnum = 0;
     }
     gst_pad_push_event (stream->pad, event);
-    /* assume we can send more data now */
-    stream->last_ret = GST_FLOW_OK;
     /* clear to send tags on this pad now */
     gst_qtdemux_push_tags (qtdemux, stream);
   }
@@ -3817,42 +3808,12 @@ gst_qtdemux_sync_streams (GstQTDemux * demux)
  *  GST_FLOW_EOS: when all pads EOS or NOT_LINKED.
  */
 static GstFlowReturn
-gst_qtdemux_combine_flows (GstQTDemux * demux, QtDemuxStream * stream,
-    GstFlowReturn ret)
+gst_qtdemux_combine_flows (GstQTDemux * demux, GstFlowReturn ret)
 {
-  gint i;
-  gboolean unexpected = FALSE, not_linked = TRUE;
-
   GST_LOG_OBJECT (demux, "flow return: %s", gst_flow_get_name (ret));
 
-  /* store the value */
-  stream->last_ret = ret;
-
-  /* any other error that is not-linked or eos can be returned right away */
-  if (G_LIKELY (ret != GST_FLOW_EOS && ret != GST_FLOW_NOT_LINKED))
-    goto done;
+  ret = gst_flow_combiner_update_flow (demux->flowcombiner, ret);
 
-  /* only return NOT_LINKED if all other pads returned NOT_LINKED */
-  for (i = 0; i < demux->n_streams; i++) {
-    QtDemuxStream *ostream = demux->streams[i];
-
-    ret = ostream->last_ret;
-
-    /* no unexpected or unlinked, return */
-    if (G_LIKELY (ret != GST_FLOW_EOS && ret != GST_FLOW_NOT_LINKED))
-      goto done;
-
-    /* we check to see if we have at least 1 unexpected or all unlinked */
-    unexpected |= (ret == GST_FLOW_EOS);
-    not_linked &= (ret == GST_FLOW_NOT_LINKED);
-  }
-
-  /* when we get here, we all have unlinked or unexpected */
-  if (not_linked)
-    ret = GST_FLOW_NOT_LINKED;
-  else if (unexpected)
-    ret = GST_FLOW_EOS;
-done:
   GST_LOG_OBJECT (demux, "combined flow return: %s", gst_flow_get_name (ret));
   return ret;
 }
@@ -4287,7 +4248,7 @@ gst_qtdemux_loop_state_movie (GstQTDemux * qtdemux)
     goto next;
 
   /* last pushed sample was out of boundary, goto next sample */
-  if (G_UNLIKELY (stream->last_ret == GST_FLOW_EOS))
+  if (G_UNLIKELY (GST_PAD_LAST_FLOW_RETURN (stream->pad) == GST_FLOW_EOS))
     goto next;
 
   if (stream->max_buffer_size == 0 || sample_size <= stream->max_buffer_size) {
@@ -4346,7 +4307,7 @@ gst_qtdemux_loop_state_movie (GstQTDemux * qtdemux)
   }
 
   /* combine flows */
-  ret = gst_qtdemux_combine_flows (qtdemux, stream, ret);
+  ret = gst_qtdemux_combine_flows (qtdemux, ret);
   /* ignore unlinked, we will not push on the pad anymore and we will EOS when
    * we have no more data for the pad to push */
   if (ret == GST_FLOW_EOS)
@@ -5121,7 +5082,7 @@ gst_qtdemux_process_adapter (GstQTDemux * demux, gboolean force)
           }
 
           /* combine flows */
-          ret = gst_qtdemux_combine_flows (demux, stream, ret);
+          ret = gst_qtdemux_combine_flows (demux, ret);
         } else {
           /* skip this data, stream is EOS */
           gst_adapter_flush (demux->adapter, demux->neededbytes);
@@ -6020,6 +5981,7 @@ gst_qtdemux_add_stream (GstQTDemux * qtdemux,
     GST_DEBUG_OBJECT (qtdemux, "adding pad %s %p to qtdemux %p",
         GST_OBJECT_NAME (stream->pad), stream->pad, qtdemux);
     gst_element_add_pad (GST_ELEMENT_CAST (qtdemux), stream->pad);
+    gst_flow_combiner_add_pad (qtdemux->flowcombiner, stream->pad);
 
     if (stream->pending_tags)
       gst_tag_list_unref (stream->pending_tags);
@@ -6952,6 +6914,12 @@ qtdemux_parse_svq3_stsd_data (GstQTDemux * qtdemux, GNode * stsd,
         fourcc = QT_FOURCC (stsd_data + 4);
         data = stsd_data + 8;
 
+        if (size == 0) {
+          GST_WARNING_OBJECT (qtdemux, "Atom of size 0 found, aborting "
+              "svq3 atom parsing");
+          goto end;
+        }
+
         switch (fourcc) {
           case FOURCC_gama:{
             if (size == 12) {
@@ -7170,6 +7138,93 @@ bad_data:
   return 0;
 }
 
+static gboolean
+qtdemux_parse_transformation_matrix (GstQTDemux * qtdemux,
+    GstByteReader * reader, guint32 * matrix, const gchar * atom)
+{
+  /*
+   * 9 values of 32 bits (fixed point 16.16, except 2 5 and 8 that are 2.30)
+   * [0 1 2]
+   * [3 4 5]
+   * [6 7 8]
+   */
+
+  if (gst_byte_reader_get_remaining (reader) < 36)
+    return FALSE;
+
+  matrix[0] = gst_byte_reader_get_uint32_be_unchecked (reader);
+  matrix[1] = gst_byte_reader_get_uint32_be_unchecked (reader);
+  matrix[2] = gst_byte_reader_get_uint32_be_unchecked (reader);
+  matrix[3] = gst_byte_reader_get_uint32_be_unchecked (reader);
+  matrix[4] = gst_byte_reader_get_uint32_be_unchecked (reader);
+  matrix[5] = gst_byte_reader_get_uint32_be_unchecked (reader);
+  matrix[6] = gst_byte_reader_get_uint32_be_unchecked (reader);
+  matrix[7] = gst_byte_reader_get_uint32_be_unchecked (reader);
+  matrix[8] = gst_byte_reader_get_uint32_be_unchecked (reader);
+
+  GST_DEBUG_OBJECT (qtdemux, "Transformation matrix from atom %s", atom);
+  GST_DEBUG_OBJECT (qtdemux, "%u.%u %u.%u %u.%u", matrix[0] >> 16,
+      matrix[0] & 0xFFFF, matrix[1] >> 16, matrix[1] & 0xFF, matrix[2] >> 16,
+      matrix[2] & 0xFF);
+  GST_DEBUG_OBJECT (qtdemux, "%u.%u %u.%u %u.%u", matrix[3] >> 16,
+      matrix[3] & 0xFFFF, matrix[4] >> 16, matrix[4] & 0xFF, matrix[5] >> 16,
+      matrix[5] & 0xFF);
+  GST_DEBUG_OBJECT (qtdemux, "%u.%u %u.%u %u.%u", matrix[6] >> 16,
+      matrix[6] & 0xFFFF, matrix[7] >> 16, matrix[7] & 0xFF, matrix[8] >> 16,
+      matrix[8] & 0xFF);
+
+  return TRUE;
+}
+
+static void
+qtdemux_inspect_transformation_matrix (GstQTDemux * qtdemux,
+    QtDemuxStream * stream, guint32 * matrix, GstTagList ** taglist)
+{
+
+/* [a b c]
+ * [d e f]
+ * [g h i]
+ *
+ * This macro will only compare value abdegh, it expects cfi to have already
+ * been checked
+ */
+#define QTCHECK_MATRIX(m,a,b,d,e,g,h) ((m)[0] == (a << 16) && (m)[1] == (b << 16) && \
+                                       (m)[3] == (d << 16) && (m)[4] == (e << 16) && \
+                                       (m)[6] == (g << 16) && (m)[7] == (h << 16))
+
+  /* only handle the cases where the last column has standard values */
+  if (matrix[2] == 0 && matrix[5] == 0 && matrix[8] == 1 << 30) {
+    const gchar *rotation_tag = NULL;
+
+    /* no rotation needed */
+    if (QTCHECK_MATRIX (matrix, 1, 0, 0, 1, 0, 0)) {
+      /* NOP */
+    } else if (QTCHECK_MATRIX (matrix, 0, 1, G_MAXUINT16, 0,
+            stream->display_height, 0)) {
+      rotation_tag = "rotate-90";
+    } else if (QTCHECK_MATRIX (matrix, G_MAXUINT16, 0, 0, G_MAXUINT16,
+            stream->display_width, stream->display_height)) {
+      rotation_tag = "rotate-180";
+    } else if (QTCHECK_MATRIX (matrix, 0, G_MAXUINT16, 1, 0, 0,
+            stream->display_width)) {
+      rotation_tag = "rotate-270";
+    } else {
+      GST_FIXME_OBJECT (qtdemux, "Unhandled transformation matrix values");
+    }
+
+    GST_DEBUG_OBJECT (qtdemux, "Transformation matrix rotation %s",
+        rotation_tag);
+    if (rotation_tag != NULL) {
+      if (*taglist == NULL)
+        *taglist = gst_tag_list_new_empty ();
+      gst_tag_list_add (*taglist, GST_TAG_MERGE_REPLACE,
+          GST_TAG_IMAGE_ORIENTATION, rotation_tag, NULL);
+    }
+  } else {
+    GST_FIXME_OBJECT (qtdemux, "Unhandled transformation matrix values");
+  }
+}
+
 /* parse the traks.
  * With each track we associate a new QtDemuxStream that contains all the info
  * about the trak.
@@ -7380,19 +7435,27 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak)
     guint32 w = 0, h = 0;
     gboolean gray;
     gint depth, palette_size, palette_count;
+    guint32 matrix[9];
     guint32 *palette_data = NULL;
 
     stream->sampled = TRUE;
 
     /* version 1 uses some 64-bit ints */
-    if (!gst_byte_reader_skip (&tkhd, 56 + value_size)
-        || !gst_byte_reader_get_uint32_be (&tkhd, &w)
+    if (!gst_byte_reader_skip (&tkhd, 20 + value_size))
+      goto corrupt_file;
+
+    if (!qtdemux_parse_transformation_matrix (qtdemux, &tkhd, matrix, "tkhd"))
+      goto corrupt_file;
+
+    if (!gst_byte_reader_get_uint32_be (&tkhd, &w)
         || !gst_byte_reader_get_uint32_be (&tkhd, &h))
       goto corrupt_file;
 
     stream->display_width = w >> 16;
     stream->display_height = h >> 16;
 
+    qtdemux_inspect_transformation_matrix (qtdemux, stream, matrix, &list);
+
     offset = 16;
     if (len < 86)
       goto corrupt_file;
@@ -7496,7 +7559,8 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak)
     }
 
     if (codec) {
-      list = gst_tag_list_new_empty ();
+      if (list == NULL)
+        list = gst_tag_list_new_empty ();
       gst_tag_list_add (list, GST_TAG_MERGE_REPLACE,
           GST_TAG_VIDEO_CODEC, codec, NULL);
       g_free (codec);
@@ -8276,7 +8340,8 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak)
       GstStructure *s;
       gint bitrate = 0;
 
-      list = gst_tag_list_new_empty ();
+      if (list == NULL)
+        list = gst_tag_list_new_empty ();
       gst_tag_list_add (list, GST_TAG_MERGE_REPLACE,
           GST_TAG_AUDIO_CODEC, codec, NULL);
       g_free (codec);
@@ -8886,6 +8951,7 @@ qtdemux_expose_streams (GstQTDemux * qtdemux)
     gst_pad_push_event (oldpad, gst_event_new_eos ());
     gst_pad_set_active (oldpad, FALSE);
     gst_element_remove_pad (GST_ELEMENT (qtdemux), oldpad);
+    gst_flow_combiner_remove_pad (qtdemux->flowcombiner, oldpad);
     gst_object_unref (oldpad);
   }
 
@@ -9728,6 +9794,9 @@ static const struct
   FOURCC_loci, GST_TAG_GEO_LOCATION_NAME, NULL, qtdemux_tag_add_location}, {
   FOURCC_clsf, GST_QT_DEMUX_CLASSIFICATION_TAG, NULL,
         qtdemux_tag_add_classification}, {
+  FOURCC__mak, GST_TAG_DEVICE_MANUFACTURER, NULL, qtdemux_tag_add_str}, {
+  FOURCC__mod, GST_TAG_DEVICE_MODEL, NULL, qtdemux_tag_add_str}, {
+  FOURCC__swr, GST_TAG_APPLICATION_NAME, NULL, qtdemux_tag_add_str}, {
 
     /* This is a special case, some tags are stored in this
      * 'reverse dns naming', according to:
diff --git a/gst/isomp4/qtdemux.h b/gst/isomp4/qtdemux.h
index 3fe0195478310ec00ba5bfa786169846dcce2ec8..47c82029d25665ac91112ed0887cd87f292e3340 100644
--- a/gst/isomp4/qtdemux.h
+++ b/gst/isomp4/qtdemux.h
@@ -23,6 +23,7 @@
 
 #include <gst/gst.h>
 #include <gst/base/gstadapter.h>
+#include <gst/base/gstflowcombiner.h>
 
 G_BEGIN_DECLS
 
@@ -64,6 +65,8 @@ struct _GstQTDemux {
   gint     n_audio_streams;
   gint     n_sub_streams;
 
+  GstFlowCombiner *flowcombiner;
+
   gboolean have_group_id;
   guint group_id;
 
diff --git a/gst/matroska/matroska-demux.c b/gst/matroska/matroska-demux.c
index 7fa715900297b04571a7a834ecd37d7bc72a8d5e..63ecfe1b5c1d088498f232547446217b6ec41ce5 100644
--- a/gst/matroska/matroska-demux.c
+++ b/gst/matroska/matroska-demux.c
@@ -190,6 +190,7 @@ gst_matroska_demux_finalize (GObject * object)
   GstMatroskaDemux *demux = GST_MATROSKA_DEMUX (object);
 
   gst_matroska_read_common_finalize (&demux->common);
+  gst_flow_combiner_free (demux->flowcombiner);
   G_OBJECT_CLASS (parent_class)->finalize (object);
 }
 
@@ -266,44 +267,7 @@ gst_matroska_demux_init (GstMatroskaDemux * demux)
 
   /* finish off */
   gst_matroska_demux_reset (GST_ELEMENT (demux));
-}
-
-/*
- * Returns the aggregated GstFlowReturn.
- */
-static GstFlowReturn
-gst_matroska_demux_combine_flows (GstMatroskaDemux * demux,
-    GstMatroskaTrackContext * track, GstFlowReturn ret)
-{
-  guint i;
-
-  /* store the value */
-  track->last_flow = ret;
-
-  /* any other error that is not-linked can be returned right away */
-  if (ret != GST_FLOW_NOT_LINKED)
-    goto done;
-
-  /* only return NOT_LINKED if all other pads returned NOT_LINKED */
-  g_assert (demux->common.src->len == demux->common.num_streams);
-  for (i = 0; i < demux->common.src->len; i++) {
-    GstMatroskaTrackContext *ostream = g_ptr_array_index (demux->common.src,
-        i);
-
-    if (ostream == NULL)
-      continue;
-
-    ret = ostream->last_flow;
-    /* some other return value (must be SUCCESS but we can return
-     * other values as well) */
-    if (ret != GST_FLOW_NOT_LINKED)
-      goto done;
-  }
-  /* if we get here, all other pads were unlinked and we return
-   * NOT_LINKED then */
-done:
-  GST_LOG_OBJECT (demux, "combined return %s", gst_flow_get_name (ret));
-  return ret;
+  demux->flowcombiner = gst_flow_combiner_new ();
 }
 
 static void
@@ -459,7 +423,6 @@ gst_matroska_demux_add_stream (GstMatroskaDemux * demux, GstEbmlRead * ebml)
   context->flags =
       GST_MATROSKA_TRACK_ENABLED | GST_MATROSKA_TRACK_DEFAULT |
       GST_MATROSKA_TRACK_LACING;
-  context->last_flow = GST_FLOW_OK;
   context->from_time = GST_CLOCK_TIME_NONE;
   context->from_offset = -1;
   context->to_offset = G_MAXINT64;
@@ -1271,6 +1234,7 @@ gst_matroska_demux_add_stream (GstMatroskaDemux * demux, GstEbmlRead * ebml)
   gst_pad_set_caps (context->pad, context->caps);
 
   gst_element_add_pad (GST_ELEMENT (demux), context->pad);
+  gst_flow_combiner_add_pad (demux->flowcombiner, context->pad);
 
   g_free (padname);
 
@@ -2555,7 +2519,7 @@ gst_matroska_demux_push_stream_headers (GstMatroskaDemux * demux,
   stream->stream_headers = NULL;
 
   /* combine flows */
-  ret = gst_matroska_demux_combine_flows (demux, stream, ret);
+  ret = gst_flow_combiner_update_flow (demux->flowcombiner, ret);
 
   return ret;
 }
@@ -3657,7 +3621,7 @@ gst_matroska_demux_parse_blockgroup_or_simpleblock (GstMatroskaDemux * demux,
         }
       }
       /* combine flows */
-      ret = gst_matroska_demux_combine_flows (demux, stream, ret);
+      ret = gst_flow_combiner_update_flow (demux->flowcombiner, ret);
 
     next_lace:
       size -= lace_size[n];
@@ -3683,7 +3647,7 @@ eos:
     stream->eos = TRUE;
     ret = GST_FLOW_OK;
     /* combine flows */
-    ret = gst_matroska_demux_combine_flows (demux, stream, ret);
+    ret = gst_flow_combiner_update_flow (demux->flowcombiner, ret);
     goto done;
   }
 invalid_lacing:
diff --git a/gst/matroska/matroska-demux.h b/gst/matroska/matroska-demux.h
index 4453fe8f56065bf83083a649991f2cd638e3810d..36a686da9b71e86cbdc928236562f3661f1f6594 100644
--- a/gst/matroska/matroska-demux.h
+++ b/gst/matroska/matroska-demux.h
@@ -24,6 +24,7 @@
 #define __GST_MATROSKA_DEMUX_H__
 
 #include <gst/gst.h>
+#include <gst/base/gstflowcombiner.h>
 
 #include "ebml-read.h"
 #include "matroska-ids.h"
@@ -58,6 +59,8 @@ typedef struct _GstMatroskaDemux {
   guint                    group_id;
   gboolean                 have_group_id;
 
+  GstFlowCombiner         *flowcombiner;
+
   /* state */
   gboolean                 streaming;
   guint                    level_up;
diff --git a/gst/matroska/matroska-ids.h b/gst/matroska/matroska-ids.h
index f7eea2b55108df917ad2b14a9cf6bcee49ab878a..68a68d401a9619c52f6c7b9b4a4a9c493bc6111f 100644
--- a/gst/matroska/matroska-ids.h
+++ b/gst/matroska/matroska-ids.h
@@ -497,7 +497,6 @@ struct _GstMatroskaTrackContext {
   GstPad       *pad;
   GstCaps      *caps;
   guint         index;
-  GstFlowReturn last_flow;
   /* reverse playback */
   GstClockTime  from_time;
   gint64                   from_offset;
diff --git a/gst/matroska/matroska-parse.c b/gst/matroska/matroska-parse.c
index c53bcf3fddd219c043e4c2a3c233876134944718..4d3cb42167f558d89ab6a3cab90ff430121c7592 100644
--- a/gst/matroska/matroska-parse.c
+++ b/gst/matroska/matroska-parse.c
@@ -299,7 +299,6 @@ gst_matroska_parse_add_stream (GstMatroskaParse * parse, GstEbmlRead * ebml)
   context->flags =
       GST_MATROSKA_TRACK_ENABLED | GST_MATROSKA_TRACK_DEFAULT |
       GST_MATROSKA_TRACK_LACING;
-  context->last_flow = GST_FLOW_OK;
   context->to_offset = G_MAXINT64;
   context->alignment = 1;
   parse->common.num_streams++;
diff --git a/gst/matroska/matroska-read-common.c b/gst/matroska/matroska-read-common.c
index ae5ea463af67b189e9fa43130b33d1b773997ea6..73381baf615d3a9bc829d2b5b96ec2f81d06ed19 100644
--- a/gst/matroska/matroska-read-common.c
+++ b/gst/matroska/matroska-read-common.c
@@ -1213,7 +1213,7 @@ gst_matroska_read_common_parse_header (GstMatroskaReadCommon * common,
         if (num != GST_EBML_VERSION) {
           GST_ERROR_OBJECT (ebml, "Unsupported EBML version %" G_GUINT64_FORMAT,
               num);
-          return GST_FLOW_ERROR;
+          goto exit_error;
         }
 
         GST_DEBUG_OBJECT (ebml, "EbmlReadVersion: %" G_GUINT64_FORMAT, num);
@@ -2959,8 +2959,6 @@ gst_matroska_read_common_reset_streams (GstMatroskaReadCommon * common,
     context->set_discont = TRUE;
     context->eos = FALSE;
     context->from_time = GST_CLOCK_TIME_NONE;
-    if (full)
-      context->last_flow = GST_FLOW_OK;
     if (context->type == GST_MATROSKA_TRACK_TYPE_VIDEO) {
       GstMatroskaTrackVideoContext *videocontext =
           (GstMatroskaTrackVideoContext *) context;
diff --git a/gst/multipart/multipartdemux.c b/gst/multipart/multipartdemux.c
index 7ba880c6ad33559539cdc3cd4a6e82f81b399508..a62c2a06cfeebf9cf87a52bbf28f840246721798 100644
--- a/gst/multipart/multipartdemux.c
+++ b/gst/multipart/multipartdemux.c
@@ -188,6 +188,8 @@ gst_multipart_demux_init (GstMultipartDemux * multipart)
   multipart->header_completed = FALSE;
   multipart->scanpos = 0;
   multipart->singleStream = DEFAULT_SINGLE_STREAM;
+  multipart->have_group_id = FALSE;
+  multipart->group_id = G_MAXUINT;
 }
 
 static void
@@ -296,6 +298,8 @@ gst_multipart_find_pad_by_mime (GstMultipartDemux * demux, gchar * mime,
     gchar *name;
     const gchar *capsname;
     GstCaps *caps;
+    gchar *stream_id;
+    GstEvent *event;
 
     mppad = g_new0 (GstMultipartPad, 1);
 
@@ -316,17 +320,42 @@ gst_multipart_find_pad_by_mime (GstMultipartDemux * demux, gchar * mime,
     demux->srcpads = g_slist_prepend (demux->srcpads, mppad);
     demux->numpads++;
 
+    gst_pad_use_fixed_caps (pad);
+    gst_pad_set_active (pad, TRUE);
+    gst_element_add_pad (GST_ELEMENT_CAST (demux), pad);
+
+    /* prepare and send stream-start */
+    if (!demux->have_group_id) {
+      event = gst_pad_get_sticky_event (demux->sinkpad,
+          GST_EVENT_STREAM_START, 0);
+
+      if (event) {
+        demux->have_group_id =
+            gst_event_parse_group_id (event, &demux->group_id);
+        gst_event_unref (event);
+      } else if (!demux->have_group_id) {
+        demux->have_group_id = TRUE;
+        demux->group_id = gst_util_group_id_next ();
+      }
+    }
+
+    stream_id = gst_pad_create_stream_id (pad,
+        GST_ELEMENT_CAST (demux), demux->mime_type);
+
+    event = gst_event_new_stream_start (stream_id);
+    if (demux->have_group_id)
+      gst_event_set_group_id (event, demux->group_id);
+
+    gst_pad_push_event (pad, event);
+    g_free (stream_id);
+
     /* take the mime type, convert it to the caps name */
     capsname = gst_multipart_demux_get_gstname (demux, mime);
     caps = gst_caps_from_string (capsname);
     GST_DEBUG_OBJECT (demux, "caps for pad: %s", capsname);
-    gst_pad_use_fixed_caps (pad);
-    gst_pad_set_active (pad, TRUE);
     gst_pad_set_caps (pad, caps);
     gst_caps_unref (caps);
 
-    gst_element_add_pad (GST_ELEMENT_CAST (demux), pad);
-
     if (created) {
       *created = TRUE;
     }
@@ -592,6 +621,9 @@ gst_multipart_demux_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
     if (G_UNLIKELY (datalen <= 0)) {
       GST_DEBUG_OBJECT (multipart, "skipping empty content.");
       gst_adapter_flush (adapter, size - datalen);
+    } else if (G_UNLIKELY (!multipart->mime_type)) {
+      GST_DEBUG_OBJECT (multipart, "content has no MIME type.");
+      gst_adapter_flush (adapter, size - datalen);
     } else {
       GstClockTime ts;
 
@@ -677,6 +709,8 @@ gst_multipart_demux_change_state (GstElement * element,
       multipart->content_length = -1;
       multipart->scanpos = 0;
       gst_multipart_demux_remove_src_pads (multipart);
+      multipart->have_group_id = FALSE;
+      multipart->group_id = G_MAXUINT;
       break;
     case GST_STATE_CHANGE_READY_TO_NULL:
       break;
diff --git a/gst/multipart/multipartdemux.h b/gst/multipart/multipartdemux.h
index 4db33c26600832b9381c9f26cfb391475bbb3160..cb81a83d1286e07fc86d2968cdbc12bd7c30214d 100644
--- a/gst/multipart/multipartdemux.h
+++ b/gst/multipart/multipartdemux.h
@@ -87,6 +87,10 @@ struct _GstMultipartDemux
   gint scanpos;
 
   gboolean singleStream;
+
+  /* to handle stream-start */
+  gboolean have_group_id;
+  guint group_id;
 };
 
 struct _GstMultipartDemuxClass
diff --git a/gst/rtp/gstrtpdvpay.c b/gst/rtp/gstrtpdvpay.c
index d779f12303fce2236b71ffac68bd5f19e498f58c..db75cf65936f8767824000bb5a3b7b01de325e73 100644
--- a/gst/rtp/gstrtpdvpay.c
+++ b/gst/rtp/gstrtpdvpay.c
@@ -300,7 +300,12 @@ gst_rtp_dv_pay_handle_buffer (GstRTPBasePayload * basepayload,
   max_payload_size = ((GST_RTP_BASE_PAYLOAD_MTU (rtpdvpay) - hdrlen) / 80) * 80;
 
   /* The length of the buffer to transmit. */
-  gst_buffer_map (buffer, &map, GST_MAP_READ);
+  if (!gst_buffer_map (buffer, &map, GST_MAP_READ)) {
+    GST_ELEMENT_ERROR (rtpdvpay, CORE, FAILED,
+        (NULL), ("Failed to map buffer"));
+    gst_buffer_unref (buffer);
+    return GST_FLOW_ERROR;
+  }
   data = map.data;
   size = map.size;
 
@@ -327,7 +332,13 @@ gst_rtp_dv_pay_handle_buffer (GstRTPBasePayload * basepayload,
       outbuf = gst_rtp_buffer_new_allocate (max_payload_size, 0, 0);
       GST_BUFFER_TIMESTAMP (outbuf) = GST_BUFFER_TIMESTAMP (buffer);
 
-      gst_rtp_buffer_map (outbuf, GST_MAP_WRITE, &rtp);
+      if (!gst_rtp_buffer_map (outbuf, GST_MAP_WRITE, &rtp)) {
+        gst_buffer_unref (outbuf);
+        GST_ELEMENT_ERROR (rtpdvpay, CORE, FAILED,
+            (NULL), ("Failed to map RTP buffer"));
+        ret = GST_FLOW_ERROR;
+        goto beach;
+      }
       dest = gst_rtp_buffer_get_payload (&rtp);
       filled = 0;
     }
@@ -368,6 +379,8 @@ gst_rtp_dv_pay_handle_buffer (GstRTPBasePayload * basepayload,
       outbuf = NULL;
     }
   }
+
+beach:
   gst_buffer_unmap (buffer, &map);
   gst_buffer_unref (buffer);
 
diff --git a/gst/rtp/gstrtpg729pay.c b/gst/rtp/gstrtpg729pay.c
index 898bcd12ad3021e4674878a62125616586149839..306e17571ad36d9305a0bba0520d1214dfb44043 100644
--- a/gst/rtp/gstrtpg729pay.c
+++ b/gst/rtp/gstrtpg729pay.c
@@ -204,6 +204,17 @@ gst_rtp_g729_pay_push (GstRTPG729Pay * rtpg729pay,
   return ret;
 }
 
+static GstFlowReturn
+gst_rtp_g729_pay_push_and_free (GstRTPG729Pay * rtpg729pay,
+    guint8 * data, guint payload_len)
+{
+  GstFlowReturn ret;
+
+  ret = gst_rtp_g729_pay_push (rtpg729pay, data, payload_len);
+  g_free (data);
+  return ret;
+}
+
 static void
 gst_rtp_g729_pay_recalc_rtp_time (GstRTPG729Pay * rtpg729pay, GstClockTime time)
 {
@@ -309,7 +320,7 @@ gst_rtp_g729_pay_handle_buffer (GstRTPBasePayload * payload, GstBuffer * buf)
   if (GST_BUFFER_IS_DISCONT (buf)) {
     /* flush remainder */
     if (available > 0) {
-      gst_rtp_g729_pay_push (rtpg729pay,
+      gst_rtp_g729_pay_push_and_free (rtpg729pay,
           gst_adapter_take (adapter, available), available);
       available = 0;
     }
@@ -354,7 +365,7 @@ gst_rtp_g729_pay_handle_buffer (GstRTPBasePayload * payload, GstBuffer * buf)
           (available / G729_FRAME_SIZE) * G729_FRAME_SIZE);
     }
 
-    ret = gst_rtp_g729_pay_push (rtpg729pay,
+    ret = gst_rtp_g729_pay_push_and_free (rtpg729pay,
         gst_adapter_take (adapter, payload_len), payload_len);
     available -= payload_len;
   }
diff --git a/gst/rtp/gstrtpgstpay.c b/gst/rtp/gstrtpgstpay.c
index 016cefe90442532d18518e6d08067fd576d33941..c0a9d94d9fae989b17f8b76e65379cd14c556b5e 100644
--- a/gst/rtp/gstrtpgstpay.c
+++ b/gst/rtp/gstrtpgstpay.c
@@ -257,12 +257,13 @@ gst_rtp_gst_pay_change_state (GstElement * element, GstStateChange transition)
   return ret;
 }
 
+#define RTP_HEADER_LEN 12
 
 static gboolean
 gst_rtp_gst_pay_create_from_adapter (GstRtpGSTPay * rtpgstpay,
     GstClockTime timestamp)
 {
-  guint avail;
+  guint avail, mtu;
   guint frag_offset;
   GstBufferList *list;
 
@@ -270,7 +271,9 @@ gst_rtp_gst_pay_create_from_adapter (GstRtpGSTPay * rtpgstpay,
   if (avail == 0)
     return FALSE;
 
-  list = gst_buffer_list_new ();
+  mtu = GST_RTP_BASE_PAYLOAD_MTU (rtpgstpay);
+
+  list = gst_buffer_list_new_sized ((avail / (mtu - (RTP_HEADER_LEN + 8))) + 1);
   frag_offset = 0;
 
   while (avail) {
@@ -287,7 +290,7 @@ gst_rtp_gst_pay_create_from_adapter (GstRtpGSTPay * rtpgstpay,
     packet_len = gst_rtp_buffer_calc_packet_len (8 + avail, 0, 0);
 
     /* fill one MTU or all available bytes */
-    towrite = MIN (packet_len, GST_RTP_BASE_PAYLOAD_MTU (rtpgstpay));
+    towrite = MIN (packet_len, mtu);
 
     /* this is the payload length */
     payload_len = gst_rtp_buffer_calc_payload_len (towrite, 0, 0);
diff --git a/gst/rtp/gstrtph263pay.c b/gst/rtp/gstrtph263pay.c
index a9672ec11b1a56c4f98b9aa1c93c9e3ae46758ea..4de0fabdd3ebe932d247866774f668578314fe8a 100644
--- a/gst/rtp/gstrtph263pay.c
+++ b/gst/rtp/gstrtph263pay.c
@@ -958,7 +958,7 @@ gst_rtp_h263_pay_B_mbfinder (GstRtpH263PayContext * context,
     GST_DEBUG ("MCBPC index: %d", mb_type_index);
     if (mb_type_index == -1) {
       GST_ERROR ("MB index shouldn't be -1 in window: %08x", context->window);
-      return NULL;
+      goto beach;
     }
 
     mac->ebit =
@@ -977,7 +977,7 @@ gst_rtp_h263_pay_B_mbfinder (GstRtpH263PayContext * context,
     GST_DEBUG ("CBPY index: %d", cbpy_type_index);
     if (cbpy_type_index == -1) {
       GST_ERROR ("CBPY index shouldn't be -1 in window: %08x", context->window);
-      return NULL;
+      goto beach;
     }
 
     mac->ebit =
@@ -1018,7 +1018,7 @@ gst_rtp_h263_pay_B_mbfinder (GstRtpH263PayContext * context,
           if (tcoef_type_index == -1) {
             GST_ERROR ("TCOEF index shouldn't be -1 in window: %08x",
                 context->window);
-            return NULL;
+            goto beach;
           }
           mac->ebit =
               gst_rtp_h263_pay_move_window_right (context,
@@ -1069,7 +1069,7 @@ gst_rtp_h263_pay_B_mbfinder (GstRtpH263PayContext * context,
     GST_DEBUG ("MCBPC index: %d", mb_type_index);
     if (mb_type_index == -1) {
       GST_ERROR ("MB index shouldn't be -1 in window: %08x", context->window);
-      return NULL;
+      goto beach;
     }
     mac->ebit =
         gst_rtp_h263_pay_move_window_right (context, mcbpc_P[mb_type_index][2],
@@ -1087,7 +1087,7 @@ gst_rtp_h263_pay_B_mbfinder (GstRtpH263PayContext * context,
     GST_DEBUG ("CBPY index: %d", cbpy_type_index);
     if (cbpy_type_index == -1) {
       GST_ERROR ("CBPY index shouldn't be -1 in window: %08x", context->window);
-      return NULL;
+      goto beach;
     }
     mac->ebit =
         gst_rtp_h263_pay_move_window_right (context, cbpy_P[cbpy_type_index][2],
@@ -1121,7 +1121,7 @@ gst_rtp_h263_pay_B_mbfinder (GstRtpH263PayContext * context,
         if (mvd_type == -1) {
           GST_ERROR ("MVD1-4 index shouldn't be -1 in window: %08x",
               context->window);
-          return NULL;
+          goto beach;
         }
         //set the MB mvd values
         mac->mvd[j] = mvd[mvd_type][3];
@@ -1166,7 +1166,7 @@ gst_rtp_h263_pay_B_mbfinder (GstRtpH263PayContext * context,
           if (tcoef_type_index == -1) {
             GST_ERROR ("TCOEF index shouldn't be -1 in window: %08x",
                 context->window);
-            return NULL;
+            goto beach;
           }
 
           mac->ebit =
@@ -1193,6 +1193,10 @@ gst_rtp_h263_pay_B_mbfinder (GstRtpH263PayContext * context,
   mac->length = mac->end - mac->start + 1;
 
   return mac;
+
+beach:
+  gst_rtp_h263_pay_mb_destroy (mac);
+  return NULL;
 }
 
 static GstRtpH263PayMB *
@@ -1709,7 +1713,8 @@ gst_rtp_h263_pay_flush (GstRtpH263Pay * rtph263pay)
             if (!gst_rtp_h263_pay_mode_B_fragment (rtph263pay, context,
                     context->gobs[i])) {
               GST_ERROR ("There was an error fragmenting in mode B");
-              return GST_FLOW_ERROR;
+              ret = GST_FLOW_ERROR;
+              goto end;
             }
           } else {
             //IMPLEMENT C mode
diff --git a/gst/rtp/gstrtph264depay.c b/gst/rtp/gstrtph264depay.c
index a7b52bda67e5127c530a5858cc6c3800bf4a8d07..586cf73427770c84b2ffcd3349d2466f76880524 100644
--- a/gst/rtp/gstrtph264depay.c
+++ b/gst/rtp/gstrtph264depay.c
@@ -944,7 +944,11 @@ gst_rtp_h264_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
           memcpy (map.data + sizeof (sync_bytes), payload, nalu_size);
           gst_buffer_unmap (outbuf, &map);
 
-          gst_adapter_push (rtph264depay->adapter, outbuf);
+          outbuf =
+              gst_rtp_h264_depay_handle_nal (rtph264depay, outbuf, timestamp,
+              marker);
+          if (outbuf)
+            gst_adapter_push (rtph264depay->adapter, outbuf);
 
           payload += nalu_size;
           payload_len -= nalu_size;
diff --git a/gst/rtp/gstrtph264pay.c b/gst/rtp/gstrtph264pay.c
index 5fb15cebe275d915141bf86cfaec14a049851395..3d835aebcc131793f335e0b5bbc8dd869fe8625f 100644
--- a/gst/rtp/gstrtph264pay.c
+++ b/gst/rtp/gstrtph264pay.c
@@ -166,6 +166,8 @@ gst_rtp_h264_pay_init (GstRtpH264Pay * rtph264pay)
       (GDestroyNotify) gst_buffer_unref);
   rtph264pay->last_spspps = -1;
   rtph264pay->spspps_interval = DEFAULT_CONFIG_INTERVAL;
+  rtph264pay->delta_unit = FALSE;
+  rtph264pay->discont = FALSE;
 
   rtph264pay->adapter = gst_adapter_new ();
 }
@@ -704,7 +706,8 @@ gst_rtp_h264_pay_decode_nal (GstRtpH264Pay * payloader,
 
 static GstFlowReturn
 gst_rtp_h264_pay_payload_nal (GstRTPBasePayload * basepayload,
-    GstBuffer * paybuf, GstClockTime dts, GstClockTime pts, gboolean end_of_au);
+    GstBuffer * paybuf, GstClockTime dts, GstClockTime pts, gboolean end_of_au,
+    gboolean delta_unit, gboolean discont);
 
 static GstFlowReturn
 gst_rtp_h264_pay_send_sps_pps (GstRTPBasePayload * basepayload,
@@ -721,7 +724,7 @@ gst_rtp_h264_pay_send_sps_pps (GstRTPBasePayload * basepayload,
     GST_DEBUG_OBJECT (rtph264pay, "inserting SPS in the stream");
     /* resend SPS */
     ret = gst_rtp_h264_pay_payload_nal (basepayload, gst_buffer_ref (sps_buf),
-        dts, pts, FALSE);
+        dts, pts, FALSE, FALSE, FALSE);
     /* Not critical here; but throw a warning */
     if (ret != GST_FLOW_OK) {
       sent_all_sps_pps = FALSE;
@@ -735,7 +738,7 @@ gst_rtp_h264_pay_send_sps_pps (GstRTPBasePayload * basepayload,
     GST_DEBUG_OBJECT (rtph264pay, "inserting PPS in the stream");
     /* resend PPS */
     ret = gst_rtp_h264_pay_payload_nal (basepayload, gst_buffer_ref (pps_buf),
-        dts, pts, FALSE);
+        dts, pts, FALSE, FALSE, FALSE);
     /* Not critical here; but throw a warning */
     if (ret != GST_FLOW_OK) {
       sent_all_sps_pps = FALSE;
@@ -749,9 +752,15 @@ gst_rtp_h264_pay_send_sps_pps (GstRTPBasePayload * basepayload,
   return ret;
 }
 
+/* @delta_unit: if %FALSE the first packet sent won't have the
+ * GST_BUFFER_FLAG_DELTA_UNIT flag.
+ * @discont: if %TRUE the first packet sent will have the
+ * GST_BUFFER_FLAG_DISCONT flag.
+ */
 static GstFlowReturn
 gst_rtp_h264_pay_payload_nal (GstRTPBasePayload * basepayload,
-    GstBuffer * paybuf, GstClockTime dts, GstClockTime pts, gboolean end_of_au)
+    GstBuffer * paybuf, GstClockTime dts, GstClockTime pts, gboolean end_of_au,
+    gboolean delta_unit, gboolean discont)
 {
   GstRtpH264Pay *rtph264pay;
   GstFlowReturn ret;
@@ -824,12 +833,11 @@ gst_rtp_h264_pay_payload_nal (GstRTPBasePayload * basepayload,
   packet_len = gst_rtp_buffer_calc_packet_len (size, 0, 0);
 
   if (packet_len < mtu) {
+    /* will fit in one packet */
     GST_DEBUG_OBJECT (basepayload,
         "NAL Unit fit in one packet datasize=%d mtu=%d", size, mtu);
-    /* will fit in one packet */
 
-    /* use buffer lists
-     * create buffer without payload containing only the RTP header
+    /* create buffer without payload containing only the RTP header
      * (memory block at index 0) */
     outbuf = gst_rtp_buffer_new_allocate (0, 0, 0);
 
@@ -844,18 +852,25 @@ gst_rtp_h264_pay_payload_nal (GstRTPBasePayload * basepayload,
     GST_BUFFER_PTS (outbuf) = pts;
     GST_BUFFER_DTS (outbuf) = dts;
 
-    /* insert payload memory block */
-    outbuf = gst_buffer_append (outbuf, paybuf);
-
-    list = gst_buffer_list_new ();
+    if (!delta_unit)
+      /* Only the first packet sent should not have the flag */
+      delta_unit = TRUE;
+    else
+      GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DELTA_UNIT);
 
-    /* add the buffer to the buffer list */
-    gst_buffer_list_add (list, outbuf);
+    if (discont) {
+      GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT);
+      /* Only the first packet sent should have the flag */
+      discont = FALSE;
+    }
 
     gst_rtp_buffer_unmap (&rtp);
 
-    /* push the list to the next element in the pipe */
-    ret = gst_rtp_base_payload_push_list (basepayload, list);
+    /* insert payload memory block */
+    outbuf = gst_buffer_append (outbuf, paybuf);
+
+    /* push the buffer to the next element */
+    ret = gst_rtp_base_payload_push (basepayload, outbuf);
   } else {
     /* fragmentation Units FU-A */
     guint limitedSize;
@@ -875,7 +890,7 @@ gst_rtp_h264_pay_payload_nal (GstRTPBasePayload * basepayload,
     /* We keep 2 bytes for FU indicator and FU Header */
     payload_len = gst_rtp_buffer_calc_payload_len (mtu - 2, 0, 0);
 
-    list = gst_buffer_list_new ();
+    list = gst_buffer_list_new_sized ((size / payload_len) + 1);
 
     while (end == 0) {
       limitedSize = size < payload_len ? size : payload_len;
@@ -915,6 +930,18 @@ gst_rtp_h264_pay_payload_nal (GstRTPBasePayload * basepayload,
           gst_buffer_copy_region (paybuf, GST_BUFFER_COPY_MEMORY, pos,
               limitedSize));
 
+      if (!delta_unit)
+        /* Only the first packet sent should not have the flag */
+        delta_unit = TRUE;
+      else
+        GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DELTA_UNIT);
+
+      if (discont) {
+        GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT);
+        /* Only the first packet sent should have the flag */
+        discont = FALSE;
+      }
+
       /* add the buffer to the buffer list */
       gst_buffer_list_add (list, outbuf);
 
@@ -946,6 +973,8 @@ gst_rtp_h264_pay_handle_buffer (GstRTPBasePayload * basepayload,
   gboolean avc;
   GstBuffer *paybuf = NULL;
   gsize skip;
+  gboolean delayed_not_delta_unit = FALSE;
+  gboolean delayed_discont = FALSE;
 
   rtph264pay = GST_RTP_H264_PAY (basepayload);
 
@@ -962,11 +991,34 @@ gst_rtp_h264_pay_handle_buffer (GstRTPBasePayload * basepayload,
     size = map.size;
     pts = GST_BUFFER_PTS (buffer);
     dts = GST_BUFFER_DTS (buffer);
+    rtph264pay->delta_unit = GST_BUFFER_FLAG_IS_SET (buffer,
+        GST_BUFFER_FLAG_DELTA_UNIT);
+    rtph264pay->discont = GST_BUFFER_IS_DISCONT (buffer);
     GST_DEBUG_OBJECT (basepayload, "got %" G_GSIZE_FORMAT " bytes", size);
   } else {
     dts = gst_adapter_prev_dts (rtph264pay->adapter, NULL);
     pts = gst_adapter_prev_pts (rtph264pay->adapter, NULL);
     if (buffer) {
+      if (!GST_BUFFER_FLAG_IS_SET (buffer, GST_BUFFER_FLAG_DELTA_UNIT)) {
+        if (gst_adapter_available (rtph264pay->adapter) == 0)
+          rtph264pay->delta_unit = FALSE;
+        else
+          /* This buffer contains a key frame but the adapter isn't empty. So
+           * we'll purge it first by sending a first packet and then the second
+           * one won't have the DELTA_UNIT flag. */
+          delayed_not_delta_unit = TRUE;
+      }
+
+      if (GST_BUFFER_IS_DISCONT (buffer)) {
+        if (gst_adapter_available (rtph264pay->adapter) == 0)
+          rtph264pay->discont = TRUE;
+        else
+          /* This buffer has the DISCONT flag but the adapter isn't empty. So
+           * we'll purge it first by sending a first packet and then the second
+           * one will have the DISCONT flag set. */
+          delayed_discont = TRUE;
+      }
+
       if (!GST_CLOCK_TIME_IS_VALID (dts))
         dts = GST_BUFFER_DTS (buffer);
       if (!GST_CLOCK_TIME_IS_VALID (pts))
@@ -1030,7 +1082,16 @@ gst_rtp_h264_pay_handle_buffer (GstRTPBasePayload * basepayload,
           nal_len);
       ret =
           gst_rtp_h264_pay_payload_nal (basepayload, paybuf, dts, pts,
-          end_of_au);
+          end_of_au, rtph264pay->delta_unit, rtph264pay->discont);
+
+      if (!rtph264pay->delta_unit)
+        /* Only the first outgoing packet doesn't have the DELTA_UNIT flag */
+        rtph264pay->delta_unit = TRUE;
+
+      if (rtph264pay->discont)
+        /* Only the first outgoing packet have the DISCONT flag */
+        rtph264pay->discont = FALSE;
+
       if (ret != GST_FLOW_OK)
         break;
 
@@ -1161,7 +1222,24 @@ gst_rtp_h264_pay_handle_buffer (GstRTPBasePayload * basepayload,
       /* put the data in one or more RTP packets */
       ret =
           gst_rtp_h264_pay_payload_nal (basepayload, paybuf, dts, pts,
-          end_of_au);
+          end_of_au, rtph264pay->delta_unit, rtph264pay->discont);
+
+      if (delayed_not_delta_unit) {
+        rtph264pay->delta_unit = FALSE;
+        delayed_not_delta_unit = FALSE;
+      } else {
+        /* Only the first outgoing packet doesn't have the DELTA_UNIT flag */
+        rtph264pay->delta_unit = TRUE;
+      }
+
+      if (delayed_discont) {
+        rtph264pay->discont = TRUE;
+        delayed_discont = FALSE;
+      } else {
+        /* Only the first outgoing packet have the DISCONT flag */
+        rtph264pay->discont = FALSE;
+      }
+
       if (ret != GST_FLOW_OK) {
         break;
       }
diff --git a/gst/rtp/gstrtph264pay.h b/gst/rtp/gstrtph264pay.h
index e1f6c7f1a930102c7c239c9900b218253ab5bdf9..44f7af4409d21a53d72cd2b1178915c453f6419e 100644
--- a/gst/rtp/gstrtph264pay.h
+++ b/gst/rtp/gstrtph264pay.h
@@ -74,6 +74,11 @@ struct _GstRtpH264Pay
   guint spspps_interval;
   gboolean send_spspps;
   GstClockTime last_spspps;
+
+  /* TRUE if the next NALU processed should have the DELTA_UNIT flag */
+  gboolean delta_unit;
+  /* TRUE if the next NALU processed should have the DISCONT flag */
+  gboolean discont;
 };
 
 struct _GstRtpH264PayClass
diff --git a/gst/rtp/gstrtpj2kpay.c b/gst/rtp/gstrtpj2kpay.c
index 6cefc31424bfd861b5d4b937b21608293eb25f8c..98880b29beec689e23257a894107ffec056c8a4e 100644
--- a/gst/rtp/gstrtpj2kpay.c
+++ b/gst/rtp/gstrtpj2kpay.c
@@ -353,11 +353,11 @@ gst_rtp_j2k_pay_handle_buffer (GstRTPBasePayload * basepayload,
   state.next_sot = 0;
   state.force_packet = FALSE;
 
-  list = gst_buffer_list_new ();
-
   /* get max packet length */
   max_size = gst_rtp_buffer_calc_payload_len (mtu - HEADER_SIZE, 0, 0);
 
+  list = gst_buffer_list_new_sized ((mtu / max_size) + 1);
+
   do {
     GstBuffer *outbuf;
     guint8 *header;
diff --git a/gst/rtp/gstrtpjpegpay.c b/gst/rtp/gstrtpjpegpay.c
index 227d8ddb8dacd629718d4ce94cefaf277bfde323..3e820a0889d21a66888f6c7c40dcb3d4b01c40e6 100644
--- a/gst/rtp/gstrtpjpegpay.c
+++ b/gst/rtp/gstrtpjpegpay.c
@@ -662,6 +662,8 @@ gst_rtp_jpeg_pay_scan_marker (const guint8 * data, guint size, guint * offset)
   }
 }
 
+#define RTP_HEADER_LEN 12
+
 static GstFlowReturn
 gst_rtp_jpeg_pay_handle_buffer (GstRTPBasePayload * basepayload,
     GstBuffer * buffer)
@@ -678,7 +680,7 @@ gst_rtp_jpeg_pay_handle_buffer (GstRTPBasePayload * basepayload,
   GstMapInfo map;
   guint8 *data;
   gsize size;
-  guint mtu;
+  guint mtu, max_payload_size;
   guint bytes_left;
   guint jpeg_header_size = 0;
   guint offset;
@@ -686,6 +688,7 @@ gst_rtp_jpeg_pay_handle_buffer (GstRTPBasePayload * basepayload,
   gboolean sos_found, sof_found, dqt_found, dri_found;
   gint i;
   GstBufferList *list = NULL;
+  gboolean discont;
 
   pay = GST_RTP_JPEG_PAY (basepayload);
   mtu = GST_RTP_BASE_PAYLOAD_MTU (pay);
@@ -695,6 +698,7 @@ gst_rtp_jpeg_pay_handle_buffer (GstRTPBasePayload * basepayload,
   size = map.size;
   timestamp = GST_BUFFER_TIMESTAMP (buffer);
   offset = 0;
+  discont = GST_BUFFER_IS_DISCONT (buffer);
 
   GST_LOG_OBJECT (pay, "got buffer size %" G_GSIZE_FORMAT
       " , timestamp %" GST_TIME_FORMAT, size, GST_TIME_ARGS (timestamp));
@@ -802,13 +806,14 @@ gst_rtp_jpeg_pay_handle_buffer (GstRTPBasePayload * basepayload,
 
   GST_LOG_OBJECT (pay, "quant_data size %u", quant_data_size);
 
-  list = gst_buffer_list_new ();
-
   bytes_left = sizeof (jpeg_header) + quant_data_size + size;
 
   if (dri_found)
     bytes_left += sizeof (restart_marker_header);
 
+  max_payload_size = mtu - (RTP_HEADER_LEN + sizeof (jpeg_header));
+  list = gst_buffer_list_new_sized ((bytes_left / max_payload_size) + 1);
+
   frame_done = FALSE;
   do {
     GstBuffer *outbuf;
@@ -892,6 +897,12 @@ gst_rtp_jpeg_pay_handle_buffer (GstRTPBasePayload * basepayload,
 
     GST_BUFFER_TIMESTAMP (outbuf) = timestamp;
 
+    if (discont) {
+      GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT);
+      /* Only the first outputted buffer has the DISCONT flag */
+      discont = FALSE;
+    }
+
     /* and add to list */
     gst_buffer_list_insert (list, -1, outbuf);
 
diff --git a/gst/rtp/gstrtpmp4gpay.c b/gst/rtp/gstrtpmp4gpay.c
index 7913d9aba32fcfbefbb196686d4014e0479b9243..e374e5cd7c7a42bc95840d8b43306aba99e775bd 100644
--- a/gst/rtp/gstrtpmp4gpay.c
+++ b/gst/rtp/gstrtpmp4gpay.c
@@ -543,6 +543,12 @@ gst_rtp_mp4g_pay_flush (GstRtpMP4GPay * rtpmp4gpay)
       rtpmp4gpay->offset += rtpmp4gpay->frame_len;
     }
 
+    if (rtpmp4gpay->discont) {
+      GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT);
+      /* Only the first outputted buffer has the DISCONT flag */
+      rtpmp4gpay->discont = FALSE;
+    }
+
     ret = gst_rtp_base_payload_push (GST_RTP_BASE_PAYLOAD (rtpmp4gpay), outbuf);
 
     avail -= payload_len;
@@ -563,6 +569,7 @@ gst_rtp_mp4g_pay_handle_buffer (GstRTPBasePayload * basepayload,
 
   rtpmp4gpay->first_timestamp = GST_BUFFER_TIMESTAMP (buffer);
   rtpmp4gpay->first_duration = GST_BUFFER_DURATION (buffer);
+  rtpmp4gpay->discont = GST_BUFFER_IS_DISCONT (buffer);
 
   /* we always encode and flush a full AU */
   gst_adapter_push (rtpmp4gpay->adapter, buffer);
diff --git a/gst/rtp/gstrtpmp4gpay.h b/gst/rtp/gstrtpmp4gpay.h
index fed9c930b5bcdb0ca37cdbd83275dd4d7e6815f3..7506fad96de5922205ed30c894f9efe3b832f332 100644
--- a/gst/rtp/gstrtpmp4gpay.h
+++ b/gst/rtp/gstrtpmp4gpay.h
@@ -47,6 +47,7 @@ struct _GstRtpMP4GPay
   GstAdapter   *adapter;
   GstClockTime  first_timestamp;
   GstClockTime  first_duration;
+  gboolean      discont;
   GstClockTime  duration;
   guint64       offset;
 
diff --git a/gst/rtp/gstrtpmp4vpay.c b/gst/rtp/gstrtpmp4vpay.c
index 8ac6d061bddb3111550cc343a7f9459ca40eb3eb..56cf9f733c24693fafa0b43f2733e9beeb41ee49 100644
--- a/gst/rtp/gstrtpmp4vpay.c
+++ b/gst/rtp/gstrtpmp4vpay.c
@@ -223,10 +223,12 @@ gst_rtp_mp4v_pay_empty (GstRtpMP4VPay * rtpmp4vpay)
   gst_adapter_clear (rtpmp4vpay->adapter);
 }
 
+#define RTP_HEADER_LEN 12
+
 static GstFlowReturn
 gst_rtp_mp4v_pay_flush (GstRtpMP4VPay * rtpmp4vpay)
 {
-  guint avail;
+  guint avail, mtu;
   GstBuffer *outbuf;
   GstBuffer *outbuf_data = NULL;
   GstFlowReturn ret;
@@ -248,12 +250,12 @@ gst_rtp_mp4v_pay_flush (GstRtpMP4VPay * rtpmp4vpay)
   if (!avail)
     return GST_FLOW_OK;
 
-  ret = GST_FLOW_OK;
+  mtu = GST_RTP_BASE_PAYLOAD_MTU (rtpmp4vpay);
 
   /* Use buffer lists. Each frame will be put into a list
    * of buffers and the whole list will be pushed downstream
    * at once */
-  list = gst_buffer_list_new ();
+  list = gst_buffer_list_new_sized ((avail / (mtu - RTP_HEADER_LEN)) + 1);
 
   while (avail > 0) {
     guint towrite;
@@ -265,7 +267,7 @@ gst_rtp_mp4v_pay_flush (GstRtpMP4VPay * rtpmp4vpay)
     packet_len = gst_rtp_buffer_calc_packet_len (avail, 0, 0);
 
     /* fill one MTU or all available bytes */
-    towrite = MIN (packet_len, GST_RTP_BASE_PAYLOAD_MTU (rtpmp4vpay));
+    towrite = MIN (packet_len, mtu);
 
     /* this is the payload length */
     payload_len = gst_rtp_buffer_calc_payload_len (towrite, 0, 0);
diff --git a/gst/rtp/gstrtptheoradepay.c b/gst/rtp/gstrtptheoradepay.c
index 39c8d2ac19744828aa29e67c38df51e3b3e499fc..ccfe12dbdd8dbb9c7ccb369844c99a75409940de 100644
--- a/gst/rtp/gstrtptheoradepay.c
+++ b/gst/rtp/gstrtptheoradepay.c
@@ -570,19 +570,16 @@ gst_rtp_theora_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
       break;
   }
 
-  g_free (to_free);
-
   if (rtptheoradepay->needs_keyframe)
     goto request_keyframe;
 
+out:
+no_output:
+
   gst_rtp_buffer_unmap (&rtp);
+  g_free (to_free);
   return NULL;
 
-no_output:
-  {
-    gst_rtp_buffer_unmap (&rtp);
-    return NULL;
-  }
   /* ERORRS */
 switch_failed:
   {
@@ -599,8 +596,7 @@ packet_short:
 ignore_reserved:
   {
     GST_WARNING_OBJECT (rtptheoradepay, "reserved TDT ignored");
-    gst_rtp_buffer_unmap (&rtp);
-    return NULL;
+    goto out;
   }
 length_short:
   {
@@ -621,8 +617,7 @@ request_config:
         gst_event_new_custom (GST_EVENT_CUSTOM_UPSTREAM,
             gst_structure_new ("GstForceKeyUnit",
                 "all-headers", G_TYPE_BOOLEAN, TRUE, NULL)));
-    gst_rtp_buffer_unmap (&rtp);
-    return NULL;
+    goto out;
   }
 request_keyframe:
   {
@@ -630,8 +625,7 @@ request_keyframe:
     gst_pad_push_event (GST_RTP_BASE_DEPAYLOAD_SINKPAD (depayload),
         gst_event_new_custom (GST_EVENT_CUSTOM_UPSTREAM,
             gst_structure_new_empty ("GstForceKeyUnit")));
-    gst_rtp_buffer_unmap (&rtp);
-    return NULL;
+    goto out;
   }
 }
 
diff --git a/gst/rtp/gstrtpvp8depay.c b/gst/rtp/gstrtpvp8depay.c
index 7cc4504a4db6a9c89d43ec0ccee07c42dee2725e..40f3375e2260d3ad024e39bef0219c20aaccff8c 100644
--- a/gst/rtp/gstrtpvp8depay.c
+++ b/gst/rtp/gstrtpvp8depay.c
@@ -106,7 +106,7 @@ gst_rtp_vp8_depay_process (GstRTPBaseDepayload * depay, GstBuffer * buf)
   GstRtpVP8Depay *self = GST_RTP_VP8_DEPAY (depay);
   GstBuffer *payload;
   guint8 *data;
-  guint offset;
+  guint hdrsize;
   guint size;
   GstRTPBuffer rtpbuffer = GST_RTP_BUFFER_INIT;
 
@@ -134,31 +134,32 @@ gst_rtp_vp8_depay_process (GstRTPBaseDepayload * depay, GstBuffer * buf)
     self->started = TRUE;
   }
 
-  offset = 1;
+  hdrsize = 1;
   /* Check X optional header */
   if ((data[0] & 0x80) != 0) {
-    offset++;
+    hdrsize++;
     /* Check I optional header */
     if ((data[1] & 0x80) != 0) {
-      offset++;
-      if (G_UNLIKELY (offset + 2 >= size))
+      if (G_UNLIKELY (size < 3))
         goto too_small;
+      hdrsize++;
       /* Check for 16 bits PictureID */
       if ((data[2] & 0x80) != 0)
-        offset++;
+        hdrsize++;
     }
     /* Check L optional header */
     if ((data[1] & 0x40) != 0)
-      offset++;
+      hdrsize++;
     /* Check T or K optional headers */
     if ((data[1] & 0x20) != 0 || (data[1] & 0x10) != 0)
-      offset++;
+      hdrsize++;
   }
+  GST_DEBUG_OBJECT (depay, "hdrsize %u, size %u", hdrsize, size);
 
-  if (G_UNLIKELY (offset >= size))
+  if (G_UNLIKELY (hdrsize >= size))
     goto too_small;
 
-  payload = gst_rtp_buffer_get_payload_subbuffer (&rtpbuffer, offset, -1);
+  payload = gst_rtp_buffer_get_payload_subbuffer (&rtpbuffer, hdrsize, -1);
   gst_adapter_push (self->adapter, payload);
 
   /* Marker indicates that it was the last rtp packet for this frame */
diff --git a/gst/rtp/gstrtpvp8pay.c b/gst/rtp/gstrtpvp8pay.c
index 478378197da9733e2b79608d5299a72b8435f1a1..f3ad845541790110fa46f8a42a58b1ec76691b3e 100644
--- a/gst/rtp/gstrtpvp8pay.c
+++ b/gst/rtp/gstrtpvp8pay.c
@@ -171,12 +171,13 @@ gst_rtp_vp8_pay_get_property (GObject * object,
 }
 
 static gboolean
-gst_rtp_vp8_pay_parse_frame (GstRtpVP8Pay * self, GstBuffer * buffer)
+gst_rtp_vp8_pay_parse_frame (GstRtpVP8Pay * self, GstBuffer * buffer,
+    gsize buffer_size)
 {
-  GstBitReader *reader = NULL;
+  GstMapInfo map = GST_MAP_INFO_INIT;
+  GstBitReader reader;
   guint8 *data;
   gsize size;
-  GstMapInfo map;
   int i;
   gboolean keyframe;
   guint32 partition0_size;
@@ -187,7 +188,7 @@ gst_rtp_vp8_pay_parse_frame (GstRtpVP8Pay * self, GstBuffer * buffer)
   BOOL_DECODER bc;
   guint8 *pdata;
 
-  if (G_UNLIKELY (gst_buffer_get_size (buffer) < 3))
+  if (G_UNLIKELY (buffer_size < 3))
     goto error;
 
   if (!gst_buffer_map (buffer, &map, GST_MAP_READ) || !map.data)
@@ -195,7 +196,8 @@ gst_rtp_vp8_pay_parse_frame (GstRtpVP8Pay * self, GstBuffer * buffer)
 
   data = map.data;
   size = map.size;
-  reader = gst_bit_reader_new (data, size);
+
+  gst_bit_reader_init (&reader, data, size);
 
   self->is_keyframe = keyframe = ((data[0] & 0x1) == 0);
   version = (data[0] >> 1) & 0x7;
@@ -212,22 +214,22 @@ gst_rtp_vp8_pay_parse_frame (GstRtpVP8Pay * self, GstBuffer * buffer)
   offset = keyframe ? 10 : 3;
   partition0_size += offset;
 
-  if (!gst_bit_reader_skip (reader, 24))
+  if (!gst_bit_reader_skip (&reader, 24))
     goto error;
 
   if (keyframe) {
     /* check start tag: 0x9d 0x01 0x2a */
-    if (!gst_bit_reader_get_bits_uint8 (reader, &tmp8, 8) || tmp8 != 0x9d)
+    if (!gst_bit_reader_get_bits_uint8 (&reader, &tmp8, 8) || tmp8 != 0x9d)
       goto error;
 
-    if (!gst_bit_reader_get_bits_uint8 (reader, &tmp8, 8) || tmp8 != 0x01)
+    if (!gst_bit_reader_get_bits_uint8 (&reader, &tmp8, 8) || tmp8 != 0x01)
       goto error;
 
-    if (!gst_bit_reader_get_bits_uint8 (reader, &tmp8, 8) || tmp8 != 0x2a)
+    if (!gst_bit_reader_get_bits_uint8 (&reader, &tmp8, 8) || tmp8 != 0x2a)
       goto error;
 
     /* Skip horizontal size code (16 bits) vertical size code (16 bits) */
-    if (!gst_bit_reader_skip (reader, 32))
+    if (!gst_bit_reader_skip (&reader, 32))
       goto error;
   }
 
@@ -332,14 +334,12 @@ gst_rtp_vp8_pay_parse_frame (GstRtpVP8Pay * self, GstBuffer * buffer)
 
   self->partition_offset[i + 1] = size;
 
-  gst_bit_reader_free (reader);
   gst_buffer_unmap (buffer, &map);
   return TRUE;
 
 error:
   GST_DEBUG ("Failed to parse frame");
-  if (reader) {
-    gst_bit_reader_free (reader);
+  if (map.memory != NULL) {
     gst_buffer_unmap (buffer, &map);
   }
   return FALSE;
@@ -373,16 +373,7 @@ gst_rtp_vp8_calc_header_len (GstRtpVP8Pay * self)
   }
 }
 
-static gsize
-gst_rtp_vp8_calc_payload_len (GstRtpVP8Pay * self)
-{
-  GstRTPBasePayload *payload = GST_RTP_BASE_PAYLOAD (self);
-
-  return gst_rtp_buffer_calc_payload_len (GST_RTP_BASE_PAYLOAD_MTU (payload) -
-      gst_rtp_vp8_calc_header_len (self), 0, 0);
-}
-
-/* When growing the vp8 header keep gst_rtp_vp8_calc_payload_len in sync */
+/* When growing the vp8 header keep max payload len calculation in sync */
 static GstBuffer *
 gst_rtp_vp8_create_header_buffer (GstRtpVP8Pay * self, guint8 partid,
     gboolean start, gboolean mark, GstBuffer * in)
@@ -423,8 +414,8 @@ gst_rtp_vp8_create_header_buffer (GstRtpVP8Pay * self, guint8 partid,
 
 
 static guint
-gst_rtp_vp8_payload_next (GstRtpVP8Pay * self,
-    GstBufferList * list, guint offset, GstBuffer * buffer)
+gst_rtp_vp8_payload_next (GstRtpVP8Pay * self, GstBufferList * list,
+    guint offset, GstBuffer * buffer, gsize buffer_size, gsize max_payload_len)
 {
   guint partition;
   GstBuffer *header;
@@ -434,8 +425,8 @@ gst_rtp_vp8_payload_next (GstRtpVP8Pay * self,
   gsize remaining;
   gsize available;
 
-  remaining = gst_buffer_get_size (buffer) - offset;
-  available = gst_rtp_vp8_calc_payload_len (self);
+  remaining = buffer_size - offset;
+  available = max_payload_len;
   if (available > remaining)
     available = remaining;
 
@@ -462,17 +453,28 @@ gst_rtp_vp8_pay_handle_buffer (GstRTPBasePayload * payload, GstBuffer * buffer)
   GstRtpVP8Pay *self = GST_RTP_VP8_PAY (payload);
   GstFlowReturn ret;
   GstBufferList *list;
-  guint offset;
+  gsize size, max_paylen;
+  guint offset, mtu, vp8_hdr_len;
+
+  size = gst_buffer_get_size (buffer);
 
-  if (G_UNLIKELY (!gst_rtp_vp8_pay_parse_frame (self, buffer))) {
-    g_message ("Failed to parse frame");
+  if (G_UNLIKELY (!gst_rtp_vp8_pay_parse_frame (self, buffer, size))) {
+    GST_ELEMENT_ERROR (self, STREAM, ENCODE, (NULL),
+        ("Failed to parse VP8 frame"));
     return GST_FLOW_ERROR;
   }
 
-  list = gst_buffer_list_new ();
+  mtu = GST_RTP_BASE_PAYLOAD_MTU (payload);
+  vp8_hdr_len = gst_rtp_vp8_calc_header_len (self);
+  max_paylen = gst_rtp_buffer_calc_payload_len (mtu - vp8_hdr_len, 0, 0);
 
-  for (offset = 0; offset < gst_buffer_get_size (buffer);)
-    offset += gst_rtp_vp8_payload_next (self, list, offset, buffer);
+  list = gst_buffer_list_new_sized ((size / max_paylen) + 1);
+
+  offset = 0;
+  while (offset < size) {
+    offset +=
+        gst_rtp_vp8_payload_next (self, list, offset, buffer, size, max_paylen);
+  }
 
   ret = gst_rtp_base_payload_push_list (payload, list);
 
diff --git a/gst/rtp/gstrtpvrawpay.c b/gst/rtp/gstrtpvrawpay.c
index cade178619256a8b59ea2e95aa76de6550a55975..c03c8d2fd1bc8e04c21915f9c3a29cd91dfb641a 100644
--- a/gst/rtp/gstrtpvrawpay.c
+++ b/gst/rtp/gstrtpvrawpay.c
@@ -27,6 +27,13 @@
 
 #include "gstrtpvrawpay.h"
 
+enum
+{
+  PROP_CHUNKS_PER_FRAME = 1
+};
+
+#define DEFAULT_CHUNKS_PER_FRAME 10
+
 GST_DEBUG_CATEGORY_STATIC (rtpvrawpay_debug);
 #define GST_CAT_DEFAULT (rtpvrawpay_debug)
 
@@ -70,6 +77,10 @@ static gboolean gst_rtp_vraw_pay_setcaps (GstRTPBasePayload * payload,
     GstCaps * caps);
 static GstFlowReturn gst_rtp_vraw_pay_handle_buffer (GstRTPBasePayload *
     payload, GstBuffer * buffer);
+static void gst_rtp_vraw_pay_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec);
+static void gst_rtp_vraw_pay_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec);
 
 G_DEFINE_TYPE (GstRtpVRawPay, gst_rtp_vraw_pay, GST_TYPE_RTP_BASE_PAYLOAD)
 
@@ -77,10 +88,23 @@ G_DEFINE_TYPE (GstRtpVRawPay, gst_rtp_vraw_pay, GST_TYPE_RTP_BASE_PAYLOAD)
 {
   GstRTPBasePayloadClass *gstrtpbasepayload_class;
   GstElementClass *gstelement_class;
+  GObjectClass *gobject_class;
 
+  gobject_class = (GObjectClass *) klass;
   gstelement_class = (GstElementClass *) klass;
   gstrtpbasepayload_class = (GstRTPBasePayloadClass *) klass;
 
+  gobject_class->set_property = gst_rtp_vraw_pay_set_property;
+  gobject_class->get_property = gst_rtp_vraw_pay_get_property;
+
+  g_object_class_install_property (gobject_class,
+      PROP_CHUNKS_PER_FRAME,
+      g_param_spec_int ("chunks-per-frame", "Chunks per Frame",
+          "Split and send out each frame in multiple chunks to reduce overhead",
+          1, G_MAXINT, DEFAULT_CHUNKS_PER_FRAME,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)
+      );
+
   gstrtpbasepayload_class->set_caps = gst_rtp_vraw_pay_setcaps;
   gstrtpbasepayload_class->handle_buffer = gst_rtp_vraw_pay_handle_buffer;
 
@@ -101,6 +125,7 @@ G_DEFINE_TYPE (GstRtpVRawPay, gst_rtp_vraw_pay, GST_TYPE_RTP_BASE_PAYLOAD)
 static void
 gst_rtp_vraw_pay_init (GstRtpVRawPay * rtpvrawpay)
 {
+  rtpvrawpay->chunks_per_frame = DEFAULT_CHUNKS_PER_FRAME;
 }
 
 static gboolean
@@ -111,7 +136,6 @@ gst_rtp_vraw_pay_setcaps (GstRTPBasePayload * payload, GstCaps * caps)
   gint pgroup, xinc, yinc;
   const gchar *depthstr, *samplingstr, *colorimetrystr;
   gchar *wstr, *hstr;
-  gint depth;
   GstVideoInfo info;
 
   rtpvrawpay = GST_RTP_VRAW_PAY (payload);
@@ -138,7 +162,6 @@ gst_rtp_vraw_pay_setcaps (GstRTPBasePayload * payload, GstCaps * caps)
 
   /* these values are the only thing we can do */
   depthstr = "8";
-  depth = 8;
 
   switch (GST_VIDEO_INFO_FORMAT (&info)) {
     case GST_VIDEO_FORMAT_RGBA:
@@ -180,7 +203,6 @@ gst_rtp_vraw_pay_setcaps (GstRTPBasePayload * payload, GstCaps * caps)
       samplingstr = "YCbCr-4:2:2";
       pgroup = 5;
       xinc = 2;
-      depth = 10;
       depthstr = "10";
       break;
     default:
@@ -195,7 +217,6 @@ gst_rtp_vraw_pay_setcaps (GstRTPBasePayload * payload, GstCaps * caps)
   rtpvrawpay->pgroup = pgroup;
   rtpvrawpay->xinc = xinc;
   rtpvrawpay->yinc = yinc;
-  rtpvrawpay->depth = depth;
 
   GST_DEBUG_OBJECT (payload, "width %d, height %d, sampling %s",
       GST_VIDEO_INFO_WIDTH (&info), GST_VIDEO_INFO_HEIGHT (&info), samplingstr);
@@ -239,15 +260,24 @@ gst_rtp_vraw_pay_handle_buffer (GstRTPBasePayload * payload, GstBuffer * buffer)
 {
   GstRtpVRawPay *rtpvrawpay;
   GstFlowReturn ret = GST_FLOW_OK;
+  gfloat packets_per_packline;
+  guint pgroups_per_packet;
+  guint packlines_per_list, buffers_per_list;
+  guint lines_delay;            /* after how many packed lines we push out a buffer list */
+  guint last_line;              /* last pack line number we pushed out a buffer list     */
   guint line, offset;
   guint8 *p0, *yp, *up, *vp;
   guint ystride, uvstride;
+  guint xinc, yinc;
   guint pgroup;
   guint mtu;
   guint width, height;
-  gint field;
+  gint field, fields;
+  GstVideoFormat format;
   GstVideoFrame frame;
   gint interlaced;
+  gboolean use_buffer_lists;
+  GstBufferList *list = NULL;
   GstRTPBuffer rtp = { NULL, };
 
   rtpvrawpay = GST_RTP_VRAW_PAY (payload);
@@ -275,17 +305,40 @@ gst_rtp_vraw_pay_handle_buffer (GstRTPBasePayload * payload, GstBuffer * buffer)
 
   interlaced = GST_VIDEO_INFO_IS_INTERLACED (&rtpvrawpay->vinfo);
 
+  format = GST_VIDEO_INFO_FORMAT (&rtpvrawpay->vinfo);
+
+  yinc = rtpvrawpay->yinc;
+  xinc = rtpvrawpay->xinc;
+
+  /* after how many packed lines we push out a buffer list */
+  lines_delay = GST_ROUND_UP_4 (height / rtpvrawpay->chunks_per_frame);
+
+  /* calculate how many buffers we expect to store in a single buffer list */
+  pgroups_per_packet = (mtu - (12 + 14)) / pgroup;
+  packets_per_packline = width / (xinc * pgroups_per_packet * 1.0);
+  packlines_per_list = height / (yinc * rtpvrawpay->chunks_per_frame);
+  buffers_per_list = packlines_per_list * packets_per_packline;
+  buffers_per_list = GST_ROUND_UP_8 (buffers_per_list);
+
+  use_buffer_lists = (rtpvrawpay->chunks_per_frame < (height / yinc));
+
+  fields = 1 + interlaced;
+
   /* start with line 0, offset 0 */
-  for (field = 0; field < 1 + interlaced; field++) {
+  for (field = 0; field < fields; field++) {
     line = field;
     offset = 0;
+    last_line = 0;
+
+    if (use_buffer_lists)
+      list = gst_buffer_list_new_sized (buffers_per_list);
 
     /* write all lines */
     while (line < height) {
-      guint left;
+      guint left, pack_line;
       GstBuffer *out;
       guint8 *outdata, *headers;
-      gboolean next_line;
+      gboolean next_line, complete = FALSE;
       guint length, cont, pixels;
 
       /* get the max allowed payload length size, we try to fill the complete MTU */
@@ -345,7 +398,7 @@ gst_rtp_vraw_pay_handle_buffer (GstRTPBasePayload * payload, GstBuffer * buffer)
 
         /* get how may bytes we need for the remaining pixels */
         pixels = width - offset;
-        length = (pixels * pgroup) / rtpvrawpay->xinc;
+        length = (pixels * pgroup) / xinc;
 
         if (left >= length) {
           /* pixels and header fit completely, we will write them and skip to the
@@ -353,8 +406,8 @@ gst_rtp_vraw_pay_handle_buffer (GstRTPBasePayload * payload, GstBuffer * buffer)
           next_line = TRUE;
         } else {
           /* line does not fit completely, see how many pixels fit */
-          pixels = (left / pgroup) * rtpvrawpay->xinc;
-          length = (pixels * pgroup) / rtpvrawpay->xinc;
+          pixels = (left / pgroup) * xinc;
+          length = (pixels * pgroup) / xinc;
           next_line = FALSE;
         }
         GST_LOG_OBJECT (rtpvrawpay, "filling %u bytes in %u pixels", length,
@@ -371,7 +424,7 @@ gst_rtp_vraw_pay_handle_buffer (GstRTPBasePayload * payload, GstBuffer * buffer)
 
         if (next_line) {
           /* go to next line we do this here to make the check below easier */
-          line += rtpvrawpay->yinc;
+          line += yinc;
         }
 
         /* calculate continuation marker */
@@ -412,14 +465,14 @@ gst_rtp_vraw_pay_handle_buffer (GstRTPBasePayload * payload, GstBuffer * buffer)
             "writing length %u, line %u, offset %u, cont %d", length, lin, offs,
             cont);
 
-        switch (GST_VIDEO_INFO_FORMAT (&rtpvrawpay->vinfo)) {
+        switch (format) {
           case GST_VIDEO_FORMAT_RGB:
           case GST_VIDEO_FORMAT_RGBA:
           case GST_VIDEO_FORMAT_BGR:
           case GST_VIDEO_FORMAT_BGRA:
           case GST_VIDEO_FORMAT_UYVY:
           case GST_VIDEO_FORMAT_UYVP:
-            offs /= rtpvrawpay->xinc;
+            offs /= xinc;
             memcpy (outdata, p0 + (lin * ystride) + (offs * pgroup), length);
             outdata += length;
             break;
@@ -446,8 +499,7 @@ gst_rtp_vraw_pay_handle_buffer (GstRTPBasePayload * payload, GstBuffer * buffer)
 
             yd1p = yp + (lin * ystride) + (offs);
             yd2p = yd1p + ystride;
-            uvoff =
-                (lin / rtpvrawpay->yinc * uvstride) + (offs / rtpvrawpay->xinc);
+            uvoff = (lin / yinc * uvstride) + (offs / xinc);
             udp = up + uvoff;
             vdp = vp + uvoff;
 
@@ -468,8 +520,7 @@ gst_rtp_vraw_pay_handle_buffer (GstRTPBasePayload * payload, GstBuffer * buffer)
             guint8 *ydp, *udp, *vdp;
 
             ydp = yp + (lin * ystride) + offs;
-            uvoff =
-                (lin / rtpvrawpay->yinc * uvstride) + (offs / rtpvrawpay->xinc);
+            uvoff = (lin / yinc * uvstride) + (offs / xinc);
             udp = up + uvoff;
             vdp = vp + uvoff;
 
@@ -496,6 +547,7 @@ gst_rtp_vraw_pay_handle_buffer (GstRTPBasePayload * payload, GstBuffer * buffer)
       if (line >= height) {
         GST_LOG_OBJECT (rtpvrawpay, "field/frame complete, set marker");
         gst_rtp_buffer_set_marker (&rtp, TRUE);
+        complete = TRUE;
       }
       gst_rtp_buffer_unmap (&rtp);
       if (left > 0) {
@@ -503,8 +555,26 @@ gst_rtp_vraw_pay_handle_buffer (GstRTPBasePayload * payload, GstBuffer * buffer)
         gst_buffer_resize (out, 0, gst_buffer_get_size (out) - left);
       }
 
-      /* push buffer */
-      ret = gst_rtp_base_payload_push (payload, out);
+      /* Now either push out the buffer directly */
+      if (!use_buffer_lists) {
+        ret = gst_rtp_base_payload_push (payload, out);
+        continue;
+      }
+
+      /* or add the buffer to buffer list ... */
+      gst_buffer_list_add (list, out);
+
+      /* .. and check if we need to push out the list */
+      pack_line = (line - field) / fields;
+      if (complete || (pack_line > last_line && pack_line % lines_delay == 0)) {
+        GST_LOG_OBJECT (rtpvrawpay, "pushing list of %u buffers up to pack "
+            "line %u", gst_buffer_list_length (list), pack_line);
+        ret = gst_rtp_base_payload_push_list (payload, list);
+        list = NULL;
+        if (!complete)
+          list = gst_buffer_list_new_sized (buffers_per_list);
+        last_line = pack_line;
+      }
     }
 
   }
@@ -533,6 +603,42 @@ too_small:
   }
 }
 
+static void
+gst_rtp_vraw_pay_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec)
+{
+  GstRtpVRawPay *rtpvrawpay;
+
+  rtpvrawpay = GST_RTP_VRAW_PAY (object);
+
+  switch (prop_id) {
+    case PROP_CHUNKS_PER_FRAME:
+      rtpvrawpay->chunks_per_frame = g_value_get_int (value);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+gst_rtp_vraw_pay_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec)
+{
+  GstRtpVRawPay *rtpvrawpay;
+
+  rtpvrawpay = GST_RTP_VRAW_PAY (object);
+
+  switch (prop_id) {
+    case PROP_CHUNKS_PER_FRAME:
+      g_value_set_int (value, rtpvrawpay->chunks_per_frame);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
 gboolean
 gst_rtp_vraw_pay_plugin_init (GstPlugin * plugin)
 {
diff --git a/gst/rtp/gstrtpvrawpay.h b/gst/rtp/gstrtpvrawpay.h
index 7cd86b8b59c8d8f577bea20b61a8de9affca2557..3fd2442d65d1c86c1a230e80b33cc04e75067a5b 100644
--- a/gst/rtp/gstrtpvrawpay.h
+++ b/gst/rtp/gstrtpvrawpay.h
@@ -48,11 +48,9 @@ struct _GstRtpVRawPay
 
   gint pgroup;
   gint xinc, yinc;
-//   guint yp, up, vp;
-//   gint ystride;
-//   gint uvstride;
-//   gboolean interlaced;
-  gint depth;
+
+  /* properties */
+  guint chunks_per_frame;
 };
 
 struct _GstRtpVRawPayClass
diff --git a/gst/rtsp/gstrtspsrc.c b/gst/rtsp/gstrtspsrc.c
index ffb0dee14585415bc913f6381e2da9ef635bb02c..caeed748ef9197694e880ed3b9988c66d4393923 100644
--- a/gst/rtsp/gstrtspsrc.c
+++ b/gst/rtsp/gstrtspsrc.c
@@ -123,6 +123,7 @@ enum
   SIGNAL_ON_SDP,
   SIGNAL_SELECT_STREAM,
   SIGNAL_NEW_MANAGER,
+  SIGNAL_REQUEST_RTCP_KEY,
   LAST_SIGNAL
 };
 
@@ -163,6 +164,12 @@ gst_rtsp_src_buffer_mode_get_type (void)
   return buffer_mode_type;
 }
 
+#define AES_128_KEY_LEN 16
+#define AES_256_KEY_LEN 32
+
+#define HMAC_32_KEY_LEN 4
+#define HMAC_80_KEY_LEN 10
+
 #define DEFAULT_LOCATION         NULL
 #define DEFAULT_PROTOCOLS        GST_RTSP_LOWER_TRANS_UDP | GST_RTSP_LOWER_TRANS_UDP_MCAST | GST_RTSP_LOWER_TRANS_TCP
 #define DEFAULT_DEBUG            FALSE
@@ -683,6 +690,21 @@ gst_rtspsrc_class_init (GstRTSPSrcClass * klass)
       G_SIGNAL_RUN_FIRST | G_SIGNAL_RUN_CLEANUP, 0, NULL, NULL,
       g_cclosure_marshal_generic, G_TYPE_NONE, 1, GST_TYPE_ELEMENT);
 
+  /**
+   * GstRTSPSrc::request-rtcp-key:
+   * @rtspsrc: a #GstRTSPSrc
+   * @num: the stream number
+   *
+   * Signal emited to get the crypto parameters relevant to the RTCP
+   * stream. User should provide the key and the RTCP encryption ciphers
+   * and authentication, and return them wrapped in a GstCaps.
+   *
+   * Since: 1.4
+   */
+  gst_rtspsrc_signals[SIGNAL_REQUEST_RTCP_KEY] =
+      g_signal_new ("request-rtcp-key", G_TYPE_FROM_CLASS (klass),
+      G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, GST_TYPE_CAPS, 1, G_TYPE_UINT);
+
   gstelement_class->send_event = gst_rtspsrc_send_event;
   gstelement_class->provide_clock = gst_rtspsrc_provide_clock;
   gstelement_class->change_state = gst_rtspsrc_change_state;
@@ -1537,8 +1559,8 @@ gst_rtspsrc_stream_free (GstRTSPSrc * src, GstRTSPStream * stream)
     gst_object_unref (stream->srtpenc);
   if (stream->srtpdec)
     gst_object_unref (stream->srtpdec);
-  if (stream->key)
-    gst_buffer_unref (stream->key);
+  if (stream->srtcpparams)
+    gst_caps_unref (stream->srtcpparams);
   if (stream->rtcppad)
     gst_object_unref (stream->rtcppad);
   if (stream->session)
@@ -1738,6 +1760,18 @@ parse_keymgmt (const gchar * keymgmt, GstCaps * caps)
               break;
           }
           break;
+        case GST_MIKEY_SP_SRTP_ENC_KEY_LEN:
+          switch (param->val[0]) {
+            case AES_128_KEY_LEN:
+              srtp_cipher = "aes-128-icm";
+              break;
+            case AES_256_KEY_LEN:
+              srtp_cipher = "aes-256-icm";
+              break;
+            default:
+              break;
+          }
+          break;
         case GST_MIKEY_SP_SRTP_AUTH_ALG:
           switch (param->val[0]) {
             case 0:
@@ -1751,6 +1785,18 @@ parse_keymgmt (const gchar * keymgmt, GstCaps * caps)
               break;
           }
           break;
+        case GST_MIKEY_SP_SRTP_AUTH_KEY_LEN:
+          switch (param->val[0]) {
+            case HMAC_32_KEY_LEN:
+              srtp_auth = "hmac-sha1-32";
+              break;
+            case HMAC_80_KEY_LEN:
+              srtp_auth = "hmac-sha1-80";
+              break;
+            default:
+              break;
+          }
+          break;
         case GST_MIKEY_SP_SRTP_SRTP_ENC:
           break;
         case GST_MIKEY_SP_SRTP_SRTCP_ENC:
@@ -3006,12 +3052,40 @@ request_rtcp_encoder (GstElement * rtpbin, guint session,
     return NULL;
 
   if (stream->srtpenc == NULL) {
+    GstStructure *s;
+
     name = g_strdup_printf ("srtpenc_%u", session);
     stream->srtpenc = gst_element_factory_make ("srtpenc", name);
     g_free (name);
 
-    /* key has been made before */
-    g_object_set (stream->srtpenc, "key", stream->key, NULL);
+    /* get RTCP crypto parameters from caps */
+    s = gst_caps_get_structure (stream->srtcpparams, 0);
+    if (s) {
+      GstBuffer *buf;
+      const gchar *str;
+      GType ciphertype, authtype;
+      GValue rtcp_cipher = G_VALUE_INIT, rtcp_auth = G_VALUE_INIT;
+
+      ciphertype = g_type_from_name ("GstSrtpCipherType");
+      authtype = g_type_from_name ("GstSrtpAuthType");
+      g_value_init (&rtcp_cipher, ciphertype);
+      g_value_init (&rtcp_auth, authtype);
+
+      str = gst_structure_get_string (s, "srtcp-cipher");
+      gst_value_deserialize (&rtcp_cipher, str);
+      str = gst_structure_get_string (s, "srtcp-auth");
+      gst_value_deserialize (&rtcp_auth, str);
+      gst_structure_get (s, "srtp-key", GST_TYPE_BUFFER, &buf, NULL);
+
+      g_object_set_property (G_OBJECT (stream->srtpenc), "rtcp-cipher",
+          &rtcp_cipher);
+      g_object_set_property (G_OBJECT (stream->srtpenc), "rtcp-auth",
+          &rtcp_auth);
+      g_object_set (stream->srtpenc, "key", buf, NULL);
+
+      g_value_unset (&rtcp_cipher);
+      g_value_unset (&rtcp_auth);
+    }
   }
   name = g_strdup_printf ("rtcp_sink_%d", session);
   pad = gst_element_get_request_pad (stream->srtpenc, name);
@@ -5812,27 +5886,102 @@ failed:
   }
 }
 
+static guint8
+enc_key_length_from_cipher_name (const gchar * cipher)
+{
+  if (g_strcmp0 (cipher, "aes-128-icm") == 0)
+    return AES_128_KEY_LEN;
+  else if (g_strcmp0 (cipher, "aes-256-icm") == 0)
+    return AES_256_KEY_LEN;
+  else {
+    GST_ERROR ("encryption algorithm '%s' not supported", cipher);
+    return 0;
+  }
+}
+
+static guint8
+auth_key_length_from_auth_name (const gchar * auth)
+{
+  if (g_strcmp0 (auth, "hmac-sha1-32") == 0)
+    return HMAC_32_KEY_LEN;
+  else if (g_strcmp0 (auth, "hmac-sha1-80") == 0)
+    return HMAC_80_KEY_LEN;
+  else {
+    GST_ERROR ("authentication algorithm '%s' not supported", auth);
+    return 0;
+  }
+}
+
+static GstCaps *
+signal_get_srtcp_params (GstRTSPSrc * src, GstRTSPStream * stream)
+{
+  GstCaps *caps = NULL;
+
+  g_signal_emit (src, gst_rtspsrc_signals[SIGNAL_REQUEST_RTCP_KEY], 0,
+      stream->id, &caps);
+
+  if (caps != NULL)
+    GST_DEBUG_OBJECT (src, "SRTP parameters received");
+
+  return caps;
+}
+
+static GstCaps *
+default_srtcp_params (void)
+{
+  guint i;
+  GstCaps *caps;
+  GstBuffer *buf;
+  guint8 *key_data;
+#define KEY_SIZE 30
+
+  /* create a random key */
+  key_data = g_malloc (KEY_SIZE);
+  for (i = 0; i < KEY_SIZE; i += 4)
+    GST_WRITE_UINT32_BE (key_data + i, g_random_int ());
+
+  buf = gst_buffer_new_wrapped (key_data, KEY_SIZE);
+
+  caps = gst_caps_new_simple ("application/x-srtp",
+      "srtp-key", GST_TYPE_BUFFER, buf,
+      "srtcp-cipher", G_TYPE_STRING, "aes-128-icm",
+      "srtcp-auth", G_TYPE_STRING, "hmac-sha1-80", NULL);
+
+  return caps;
+}
+
 static gchar *
 gst_rtspsrc_stream_make_keymgmt (GstRTSPSrc * src, GstRTSPStream * stream)
 {
   GBytes *bytes;
   gchar *result, *base64;
-  guint8 *key_data;
   const guint8 *data;
   gsize size;
-  guint i;
   GstMIKEYMessage *msg;
   GstMIKEYPayload *payload, *pkd;
   guint8 byte;
-#define KEY_SIZE 30
+  GstStructure *s;
+  GstMapInfo info;
+  GstBuffer *srtpkey;
+  const GValue *val;
+  const gchar *srtcpcipher, *srtcpauth;
 
-  key_data = g_malloc (KEY_SIZE);
-  for (i = 0; i < KEY_SIZE; i += 4)
-    GST_WRITE_UINT32_BE (key_data + i, g_random_int ());
+  stream->srtcpparams = signal_get_srtcp_params (src, stream);
+  if (stream->srtcpparams == NULL)
+    stream->srtcpparams = default_srtcp_params ();
+
+  s = gst_caps_get_structure (stream->srtcpparams, 0);
+
+  srtcpcipher = gst_structure_get_string (s, "srtcp-cipher");
+  srtcpauth = gst_structure_get_string (s, "srtcp-auth");
+  val = gst_structure_get_value (s, "srtp-key");
 
-  if (stream->key)
-    gst_buffer_unref (stream->key);
-  stream->key = gst_buffer_new_wrapped (key_data, KEY_SIZE);
+  if (srtcpcipher == NULL || srtcpauth == NULL || val == NULL) {
+    GST_ERROR_OBJECT (src, "could not find the right SRTP parameters in caps");
+    return NULL;
+  }
+
+  srtpkey = gst_value_get_buffer (val);
 
   msg = gst_mikey_message_new ();
   /* unencrypted MIKEY message, we send this over TLS so this is allowed */
@@ -5852,9 +6001,17 @@ gst_rtspsrc_stream_make_keymgmt (GstRTSPSrc * src, GstRTSPStream * stream)
   /* only AES-CM is supported */
   byte = 1;
   gst_mikey_payload_sp_add_param (payload, GST_MIKEY_SP_SRTP_ENC_ALG, 1, &byte);
+  /* encryption key length */
+  byte = enc_key_length_from_cipher_name (srtcpcipher);
+  gst_mikey_payload_sp_add_param (payload, GST_MIKEY_SP_SRTP_ENC_KEY_LEN, 1,
+      &byte);
   /* only HMAC-SHA1 */
   gst_mikey_payload_sp_add_param (payload, GST_MIKEY_SP_SRTP_AUTH_ALG, 1,
       &byte);
+  /* authentication key length */
+  byte = auth_key_length_from_auth_name (srtcpauth);
+  gst_mikey_payload_sp_add_param (payload, GST_MIKEY_SP_SRTP_AUTH_KEY_LEN, 1,
+      &byte);
   /* we enable encryption on RTP and RTCP */
   gst_mikey_payload_sp_add_param (payload, GST_MIKEY_SP_SRTP_SRTP_ENC, 1,
       &byte);
@@ -5870,8 +6027,10 @@ gst_rtspsrc_stream_make_keymgmt (GstRTSPSrc * src, GstRTSPStream * stream)
   gst_mikey_payload_kemac_set (payload, GST_MIKEY_ENC_NULL, GST_MIKEY_MAC_NULL);
   /* add the key in KEMAC */
   pkd = gst_mikey_payload_new (GST_MIKEY_PT_KEY_DATA);
-  gst_mikey_payload_key_data_set_key (pkd, GST_MIKEY_KD_TEK, KEY_SIZE,
-      key_data);
+  gst_buffer_map (srtpkey, &info, GST_MAP_READ);
+  gst_mikey_payload_key_data_set_key (pkd, GST_MIKEY_KD_TEK, info.size,
+      info.data);
+  gst_buffer_unmap (srtpkey, &info);
   gst_mikey_payload_kemac_add_sub (payload, pkd);
   gst_mikey_message_add_payload (msg, payload);
 
diff --git a/gst/rtsp/gstrtspsrc.h b/gst/rtsp/gstrtspsrc.h
index f38f6fcee6566f2076b104b3cedf4ccc43aa2578..e90d0599298010dbdfec7b1efd18cc1ecb118b12 100644
--- a/gst/rtsp/gstrtspsrc.h
+++ b/gst/rtsp/gstrtspsrc.h
@@ -137,7 +137,7 @@ struct _GstRTSPStream {
   guint32       seqbase;
   guint64       timebase;
   GstElement   *srtpdec;
-  GstBuffer    *key;
+  GstCaps      *srtcpparams;
   GstElement   *srtpenc;
   guint32       send_ssrc;
 
diff --git a/gst/udp/gstdynudpsink.c b/gst/udp/gstdynudpsink.c
index 328e9020a3d02693de6d2dd9b0b5fd5e5202b99c..9c2b6bbd98cb96c65bb4808659d72cebd15301ab 100644
--- a/gst/udp/gstdynudpsink.c
+++ b/gst/udp/gstdynudpsink.c
@@ -21,10 +21,6 @@
  * Boston, MA 02110-1301, USA.
  */
 
-/* FIXME 0.11: suppress warnings for deprecated API such as GValueArray
- * with newer GLib versions (>= 2.31.0) */
-#define GLIB_DISABLE_DEPRECATION_WARNINGS
-
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
@@ -139,7 +135,8 @@ gst_dynudpsink_class_init (GstDynUDPSinkClass * klass)
 
   gst_element_class_set_static_metadata (gstelement_class, "UDP packet sender",
       "Sink/Network",
-      "Send data over the network via UDP",
+      "Send data over the network via UDP with packet destinations picked up "
+      "dynamically from meta on the buffers passed",
       "Philippe Khalaf <burger@speedy.org>");
 
   gstbasesink_class->render = gst_dynudpsink_render;
@@ -267,9 +264,18 @@ gst_dynudpsink_render (GstBaseSink * bsink, GstBuffer * buffer)
 
 send_error:
   {
-    GST_DEBUG ("got send error %s", err->message);
+    GstFlowReturn flow_ret;
+
+    if (g_error_matches (err, G_IO_ERROR, G_IO_ERROR_CANCELLED)) {
+      GST_DEBUG_OBJECT (sink, "send cancelled");
+      flow_ret = GST_FLOW_FLUSHING;
+    } else {
+      GST_ELEMENT_ERROR (sink, RESOURCE, WRITE, (NULL),
+          ("send error: %s", err->message));
+      flow_ret = GST_FLOW_ERROR;
+    }
     g_clear_error (&err);
-    return GST_FLOW_ERROR;
+    return flow_ret;
   }
 invalid_family:
   {
diff --git a/gst/udp/gstmultiudpsink.c b/gst/udp/gstmultiudpsink.c
index 988de2deb7611e0263797d9cd2d2a76f3cb1b198..d3af62e7e68e2da6696ab6681c950ae52e37bde8 100644
--- a/gst/udp/gstmultiudpsink.c
+++ b/gst/udp/gstmultiudpsink.c
@@ -29,10 +29,6 @@
  * It can be combined with rtp payload encoders to implement RTP streaming.
  */
 
-/* FIXME 0.11: suppress warnings for deprecated API such as GValueArray
- * with newer GLib versions (>= 2.31.0) */
-#define GLIB_DISABLE_DEPRECATION_WARNINGS
-
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
@@ -356,7 +352,8 @@ gst_multiudpsink_class_init (GstMultiUDPSinkClass * klass)
 
   gst_element_class_set_static_metadata (gstelement_class, "UDP packet sender",
       "Sink/Network",
-      "Send data over the network via UDP",
+      "Send data over the network via UDP to one or multiple recipients "
+      "which can be added or removed at runtime using action signals",
       "Wim Taymans <wim.taymans@gmail.com>");
 
   gstbasesink_class->render = gst_multiudpsink_render;
@@ -529,7 +526,7 @@ gst_multiudpsink_render (GstBaseSink * bsink, GstBuffer * buffer)
   gint num, no_clients;
   GError *err = NULL;
 
-  sink = GST_MULTIUDPSINK (bsink);
+  sink = GST_MULTIUDPSINK_CAST (bsink);
 
   n_mem = gst_buffer_n_memory (buffer);
   if (n_mem == 0)
@@ -542,7 +539,7 @@ gst_multiudpsink_render (GstBaseSink * bsink, GstBuffer * buffer)
 
   size = 0;
   for (i = 0; i < n_mem; i++) {
-    mem = gst_buffer_get_memory (buffer, i);
+    mem = gst_buffer_peek_memory (buffer, i);
     gst_memory_map (mem, &map[i], GST_MAP_READ);
 
     vec[i].buffer = map[i].data;
@@ -616,10 +613,8 @@ gst_multiudpsink_render (GstBaseSink * bsink, GstBuffer * buffer)
   g_mutex_unlock (&sink->client_lock);
 
   /* unmap all memory again */
-  for (i = 0; i < n_mem; i++) {
+  for (i = 0; i < n_mem; i++)
     gst_memory_unmap (map[i].memory, &map[i]);
-    gst_memory_unref (map[i].memory);
-  }
 
   GST_LOG_OBJECT (sink, "sent %" G_GSIZE_FORMAT " bytes to %d (of %d) clients",
       size, num, no_clients);
@@ -637,10 +632,8 @@ flushing:
     g_clear_error (&err);
 
     /* unmap all memory */
-    for (i = 0; i < n_mem; i++) {
+    for (i = 0; i < n_mem; i++)
       gst_memory_unmap (map[i].memory, &map[i]);
-      gst_memory_unref (map[i].memory);
-    }
 
     return GST_FLOW_FLUSHING;
   }
@@ -1330,9 +1323,8 @@ gst_multiudpsink_remove (GstMultiUDPSink * sink, const gchar * host, gint port)
   client->refcount--;
   if (client->refcount == 0) {
     GInetSocketAddress *saddr = G_INET_SOCKET_ADDRESS (client->addr);
+    GSocketFamily family = g_socket_address_get_family (client->addr);
     GInetAddress *addr = g_inet_socket_address_get_address (saddr);
-    GSocketFamily family =
-        g_socket_address_get_family (G_SOCKET_ADDRESS (saddr));
     GSocket *socket;
 
     /* Select socket to send from for this address */
diff --git a/gst/udp/gstmultiudpsink.h b/gst/udp/gstmultiudpsink.h
index a1be566b65e0364fbb0ae6a15ad8a332b15d58fe..9b126bb6cb81bc6ff11af9932e6d93999a684079 100644
--- a/gst/udp/gstmultiudpsink.h
+++ b/gst/udp/gstmultiudpsink.h
@@ -33,6 +33,7 @@ G_BEGIN_DECLS
 #define GST_MULTIUDPSINK_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_MULTIUDPSINK,GstMultiUDPSinkClass))
 #define GST_IS_MULTIUDPSINK(obj)         (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_MULTIUDPSINK))
 #define GST_IS_MULTIUDPSINK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_MULTIUDPSINK))
+#define GST_MULTIUDPSINK_CAST(obj)       ((GstMultiUDPSink*)(obj))
 
 typedef struct _GstMultiUDPSink GstMultiUDPSink;
 typedef struct _GstMultiUDPSinkClass GstMultiUDPSinkClass;
diff --git a/gst/videobox/gstvideobox.c b/gst/videobox/gstvideobox.c
index 5df258839c18871a7a014d5b6c84b0aa16e1bc2f..861bcaea3197a43093e93e17aa4379c107ada5ba 100644
--- a/gst/videobox/gstvideobox.c
+++ b/gst/videobox/gstvideobox.c
@@ -2862,22 +2862,27 @@ gst_video_box_transform_caps (GstBaseTransform * trans,
       for (j = 0; j < gst_value_list_get_size (fval); j++) {
         lval = gst_value_list_get_value (fval, j);
         if ((str = g_value_get_string (lval))) {
-          if (strstr (str, "RGB") || strstr (str, "BGR") ||
-              strcmp (str, "AYUV") == 0)
+          if (strcmp (str, "AYUV") == 0) {
+            seen_yuv = TRUE;
+            seen_rgb = TRUE;
+            break;
+          } else if (strstr (str, "RGB") || strstr (str, "BGR")) {
             seen_rgb = TRUE;
-          else if (strcmp (str, "I420") == 0 || strcmp (str, "YV12") == 0 ||
-              strcmp (str, "AYUV") == 0)
+          } else if (strcmp (str, "I420") == 0 || strcmp (str, "YV12") == 0) {
             seen_yuv = TRUE;
+          }
         }
       }
     } else if (fval && G_VALUE_HOLDS_STRING (fval)) {
       if ((str = g_value_get_string (fval))) {
-        if (strstr (str, "RGB") || strstr (str, "BGR") ||
-            strcmp (str, "AYUV") == 0)
+        if (strcmp (str, "AYUV") == 0) {
+          seen_yuv = TRUE;
           seen_rgb = TRUE;
-        else if (strcmp (str, "I420") == 0 || strcmp (str, "YV12") == 0 ||
-            strcmp (str, "AYUV") == 0)
+        } else if (strstr (str, "RGB") || strstr (str, "BGR")) {
+          seen_rgb = TRUE;
+        } else if (strcmp (str, "I420") == 0 || strcmp (str, "YV12") == 0) {
           seen_yuv = TRUE;
+        }
       }
     }
 
diff --git a/gst/wavparse/gstwavparse.c b/gst/wavparse/gstwavparse.c
index e50a82d94d060ca2fd60a23cd4735372268d7ea3..7e5f043b3c763a364cfde1b9bc52da46a2a346b0 100644
--- a/gst/wavparse/gstwavparse.c
+++ b/gst/wavparse/gstwavparse.c
@@ -1037,6 +1037,7 @@ gst_wavparse_stream_headers (GstWavParse * wav)
   gchar *codec_name = NULL;
   GstEvent **event_p;
   gint64 upstream_size = 0;
+  GstStructure *s;
 
   /* search for "_fmt" chunk, which should be first */
   while (!wav->got_fmt) {
@@ -1107,6 +1108,15 @@ gst_wavparse_stream_headers (GstWavParse * wav)
     if (!caps)
       goto unknown_format;
 
+    /* If we got raw audio from upstream, we remove the codec_data field,
+     * which may have been added if the wav header included an extended
+     * chunk. We want to keep it for non raw audio.
+     */
+    s = gst_caps_get_structure (caps, 0);
+    if (s && gst_structure_has_name (s, "audio/x-raw")) {
+      gst_structure_remove_field (s, "codec_data");
+    }
+
     /* do more sanity checks of header fields
      * (these can be sanitized by gst_riff_create_audio_caps()
      */
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 689ae8f1c855dedebeeb1dfb3eccad7268e8e0f7..95cfae150962a9412481a3cf3d098f648151f524 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -21,5 +21,8 @@ sys/sunaudio/gstsunaudiomixertrack.c
 sys/v4l2/gstv4l2bufferpool.c
 sys/v4l2/gstv4l2object.c
 sys/v4l2/gstv4l2radio.c
+sys/v4l2/gstv4l2sink.c
+sys/v4l2/gstv4l2transform.c
+sys/v4l2/gstv4l2videodec.c
 sys/v4l2/v4l2_calls.c
 sys/ximage/gstximagesrc.c
diff --git a/po/af.gmo b/po/af.gmo
index 74c7195ad9fa9e4347b2b5d57e677a09940ddd47..26669c6eb3a9795f84c25e9e1c4821d0d764d775 100644
Binary files a/po/af.gmo and b/po/af.gmo differ
diff --git a/po/af.po b/po/af.po
index 7dde409af90c42cac0afb759125331c6545af8e3..0b5b79743b04aea014cb45d558682e3911961273 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: 2014-05-21 12:10+0200\n"
+"POT-Creation-Date: 2014-06-22 17:33+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"
@@ -289,6 +289,34 @@ msgstr "Kon nie oudio-toestel \"%s\" toemaak nie."
 msgid "Failed to change mute state for device '%s'."
 msgstr "Kon nie buffers vanaf toestel \"%s\" verkry nie."
 
+msgid "Failed to allocated required memory."
+msgstr ""
+
+#, c-format
+msgid "Converter on device %s has no supported input format"
+msgstr ""
+
+#, c-format
+msgid "Converter on device %s has no supported output format"
+msgstr ""
+
+#, c-format
+msgid "Encoder on device %s has no supported input format"
+msgstr ""
+
+#, c-format
+msgid "Encoder on device %s has no supported output format"
+msgstr ""
+
+msgid "Failed to allocate required memory."
+msgstr ""
+
+msgid "Failed to start decoding thread."
+msgstr ""
+
+msgid "Failed to process frame."
+msgstr ""
+
 #, c-format
 msgid ""
 "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if "
diff --git a/po/az.gmo b/po/az.gmo
index 7233630ad6a0aa90cda9c144543c0e0b34d3dc0e..f0eb9df611db336a27b80229450af42825c55c6e 100644
Binary files a/po/az.gmo and b/po/az.gmo differ
diff --git a/po/az.po b/po/az.po
index edf7b4fe997005143f521b689cf6735ccb0bd45b..aebc3318378c9eebd39346c55a8d81bcf4f6e0bd 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: 2014-05-21 12:10+0200\n"
+"POT-Creation-Date: 2014-06-22 17:33+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"
@@ -290,6 +290,34 @@ msgstr "\"%s\" audio avadanlığı bağlana bilmədi."
 msgid "Failed to change mute state for device '%s'."
 msgstr "\"%s\" avadanlığından bufferlər alına bilmədi."
 
+msgid "Failed to allocated required memory."
+msgstr ""
+
+#, c-format
+msgid "Converter on device %s has no supported input format"
+msgstr ""
+
+#, c-format
+msgid "Converter on device %s has no supported output format"
+msgstr ""
+
+#, c-format
+msgid "Encoder on device %s has no supported input format"
+msgstr ""
+
+#, c-format
+msgid "Encoder on device %s has no supported output format"
+msgstr ""
+
+msgid "Failed to allocate required memory."
+msgstr ""
+
+msgid "Failed to start decoding thread."
+msgstr ""
+
+msgid "Failed to process frame."
+msgstr ""
+
 #, c-format
 msgid ""
 "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if "
diff --git a/po/bg.gmo b/po/bg.gmo
index 2c7b118759e4f6858e21435b7d2abdcc365c6628..86a6d7daf6941a251806df60314b23c8683f4543 100644
Binary files a/po/bg.gmo and b/po/bg.gmo differ
diff --git a/po/bg.po b/po/bg.po
index cb34d69b720468cedbd2920abd59a9310b7972a9..90b7e8c2c0c5b13d11d94e49980e7b8c9bd3a49d 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: 2014-05-21 12:10+0200\n"
+"POT-Creation-Date: 2014-06-22 17:33+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"
@@ -303,6 +303,38 @@ msgstr "Неуспешно задаване на вход %d на устройс
 msgid "Failed to change mute state for device '%s'."
 msgstr "Неуспешно получаване на силата на сигнала на устройство „%s“."
 
+msgid "Failed to allocated required memory."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported input format"
+msgstr "Драйверът за устройството „%s“ не поддържа познати методи за запис."
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported output format"
+msgstr ""
+"Устройството за видео вход не приема новите настройки за честотата на кадри."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported input format"
+msgstr ""
+"Устройството за видео вход не приема новите настройки за честотата на кадри."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported output format"
+msgstr ""
+"Устройството за видео вход не приема новите настройки за честотата на кадри."
+
+msgid "Failed to allocate required memory."
+msgstr ""
+
+#, fuzzy
+msgid "Failed to start decoding thread."
+msgstr "Неуспешно декодиране на изображение, формат JPEG."
+
+msgid "Failed to process frame."
+msgstr ""
+
 #, c-format
 msgid ""
 "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if "
diff --git a/po/ca.gmo b/po/ca.gmo
index 42f33e60e8c52044aeca612875f7c57f3813def9..d0637a1c3fc699747d4be47f72eeacf97eaef6c7 100644
Binary files a/po/ca.gmo and b/po/ca.gmo differ
diff --git a/po/ca.po b/po/ca.po
index bd5467dc682effb1ca774da948a376f14d683eb6..2424aaf7f6be1c84717ec444574e60c6a2233dc6 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: 2014-05-21 12:10+0200\n"
+"POT-Creation-Date: 2014-06-22 17:33+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"
@@ -320,6 +320,43 @@ msgstr "No s'ha pogut establir l'entrada %d en el dispositiu %s."
 msgid "Failed to change mute state for device '%s'."
 msgstr "No s'ha pogut obtenir la intensitat del senyal per al dispositiu «%s»."
 
+msgid "Failed to allocated required memory."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported input format"
+msgstr ""
+"El controlador del dispositiu «%s» no és compatible amb cap mètode de "
+"captura conegut."
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported output format"
+msgstr ""
+"El dispositiu d'entrada de vídeo no ha acceptat el paràmetre nou de "
+"fotogrames per segon."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported input format"
+msgstr ""
+"El dispositiu d'entrada de vídeo no ha acceptat el paràmetre nou de "
+"fotogrames per segon."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported output format"
+msgstr ""
+"El dispositiu d'entrada de vídeo no ha acceptat el paràmetre nou de "
+"fotogrames per segon."
+
+msgid "Failed to allocate required memory."
+msgstr ""
+
+#, fuzzy
+msgid "Failed to start decoding thread."
+msgstr "Ha fallat en descodificar la imatge JPEG"
+
+msgid "Failed to process frame."
+msgstr ""
+
 #, c-format
 msgid ""
 "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if "
diff --git a/po/cs.gmo b/po/cs.gmo
index 3c80eb4f42f8cafabaaca45cf55fd6ccfdaee5f9..451f42a24d031c65cbababf56b1229355943c8a5 100644
Binary files a/po/cs.gmo and b/po/cs.gmo differ
diff --git a/po/cs.po b/po/cs.po
index ec92e447945e126bffd5496e279e3cd2aeff8c25..78c3922425649dad35f5d3b48774b45d39eda772 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: 2014-05-21 12:10+0200\n"
+"POT-Creation-Date: 2014-06-22 17:33+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"
@@ -305,6 +305,35 @@ msgstr "Nezdařilo se nastavení vstupu %d u zařízení „%s“."
 msgid "Failed to change mute state for device '%s'."
 msgstr "Selhala změna stavu zapnutí/vypnutí zvuku u zařízení „%s“."
 
+msgid "Failed to allocated required memory."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported input format"
+msgstr "Ovladač zařízení „%s“ nepodporuje V/V metodu %d"
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported output format"
+msgstr "Videozařízení nepřijalo nové nastavení snímkové rychlosti."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported input format"
+msgstr "Videozařízení nepřijalo nové nastavení snímkové rychlosti."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported output format"
+msgstr "Videozařízení nepřijalo nové nastavení snímkové rychlosti."
+
+msgid "Failed to allocate required memory."
+msgstr ""
+
+#, fuzzy
+msgid "Failed to start decoding thread."
+msgstr "Selhalo dekódování obrázku JPEG"
+
+msgid "Failed to process frame."
+msgstr ""
+
 #, c-format
 msgid ""
 "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if "
diff --git a/po/da.gmo b/po/da.gmo
index 60f05e1ce2edc4b0f420f2b1844c17741e6f49ff..faca88d8de858094b1b9c8ef2739aa6012405863 100644
Binary files a/po/da.gmo and b/po/da.gmo differ
diff --git a/po/da.po b/po/da.po
index 96fcdc3490d8a27eafdf53be8593e1ce748a1344..60da5aaf0849ab5606aa4a172a9403143c7d766f 100644
--- a/po/da.po
+++ b/po/da.po
@@ -1,19 +1,19 @@
 # Danish translation of gst-plugins-good.
-# Copyright (C) 2013 gst.
+# Copyright (C) 2014 gst.
 # This file is distributed under the same license as the gst-plugins-good package.
 #
 # Mogens Jaeger <mogens@jaeger.tf>, 2007.
-# Joe Hansen <joedalton2@yahoo.dk>, 2008, 2009, 2010, 2011, 2012, 2013.
+# Joe Hansen <joedalton2@yahoo.dk>, 2008, 2009, 2010, 2011, 2012, 2013, 2014.
 #
 # gain -> forhøjelse
 # boost -> øgning?
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: gst-plugins-good-1.2.1\n"
+"Project-Id-Version: gst-plugins-good-1.3.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-21 12:10+0200\n"
-"PO-Revision-Date: 2013-12-08 23:54+0200\n"
+"POT-Creation-Date: 2014-06-22 17:33+0200\n"
+"PO-Revision-Date: 2014-05-24 23:54+0200\n"
 "Last-Translator: Joe Hansen <joedalton2@yahoo.dk>\n"
 "Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
 "Language: da\n"
@@ -248,9 +248,9 @@ msgstr "Enheden »%s« kan ikke optage med %dx%d"
 msgid "Device '%s' cannot capture in the specified format"
 msgstr "Enheden »%s« kan ikke optage i det angivne format"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Device '%s' does support non-contiguous planes"
-msgstr "Enheden »%s« understøtter ikke videooptagelse"
+msgstr "Enheden »%s« understøtter ikke planer, der ikke hænger sammen"
 
 #, c-format
 msgid "Could not get parameters on device '%s'"
@@ -259,30 +259,27 @@ msgstr "Kunne ikke hente parametre fra enhed »%s«"
 msgid "Video device did not accept new frame rate setting."
 msgstr "Videoenheden accepterede ikke ny indstilling for billedrate."
 
-#, fuzzy
 msgid "Video device did not provide output format."
-msgstr "Videoenheden accepterede ikke ny indstilling for billedrate."
+msgstr "Videoenheden angav ikke uddataformat."
 
 msgid "Video device returned invalid dimensions."
-msgstr ""
+msgstr "Videoenhed returnerede ugyldige dimensioner."
 
-#, fuzzy
+# http://en.wikipedia.org/wiki/Interlaced_video
 msgid "Video devices uses an unsupported interlacing method."
-msgstr "Driveren til enhed »%s« understøtter ikke IO-metoden %d"
+msgstr "Videoenheder bruger en interlace-metode, der ikke er understøttet."
 
 msgid "Video devices uses an unsupported pixel format."
-msgstr ""
+msgstr "Videoenheder bruger et billedpunktsformat, der ikke er understøttet."
 
-#, fuzzy
 msgid "Failed to configure internal buffer pool."
-msgstr "Videoenhed kunne ikke oprette mellemlagerkø."
+msgstr "Kunne ikke konfigurere intern mellemlagerkø."
 
-#, fuzzy
 msgid "Video device did not suggest any buffer size."
-msgstr "Videoenhed kunne ikke oprette mellemlagerkø."
+msgstr "Videoenhed foreslog ikke en mellemlagerstørrelse."
 
 msgid "No downstream pool to import from."
-msgstr ""
+msgstr "Ingen nedstrømskø at importere fra."
 
 #, c-format
 msgid "Failed to get settings of tuner %d on device '%s'."
@@ -308,6 +305,35 @@ msgstr "Kunne ikke sætte inddata %d for enhed %s."
 msgid "Failed to change mute state for device '%s'."
 msgstr "Kunne ikke ændre tilstand for tænk/slut for enhed »%s«."
 
+msgid "Failed to allocated required memory."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported input format"
+msgstr "Videoenheder bruger et billedpunktsformat, der ikke er understøttet."
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported output format"
+msgstr "Videoenheder bruger et billedpunktsformat, der ikke er understøttet."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported input format"
+msgstr "Videoenheder bruger et billedpunktsformat, der ikke er understøttet."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported output format"
+msgstr "Videoenheder bruger et billedpunktsformat, der ikke er understøttet."
+
+msgid "Failed to allocate required memory."
+msgstr ""
+
+#, fuzzy
+msgid "Failed to start decoding thread."
+msgstr "Mislykkedes i at afkode JPEG-billede"
+
+msgid "Failed to process frame."
+msgstr ""
+
 #, c-format
 msgid ""
 "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if "
@@ -352,13 +378,13 @@ msgstr "Enhed »%s« er ikke en optageenhed."
 msgid "Device '%s' is not a output device."
 msgstr "Enhed »%s« er ikke en uddataenhed."
 
-#, fuzzy, c-format
+#, c-format
 msgid "Device '%s' is not a M2M device."
-msgstr "Enhed »%s« er ikke en uddataenhed."
+msgstr "Enhed »%s« er ikke en M2M-enhed."
 
-#, fuzzy, c-format
+#, c-format
 msgid "Could not dup device '%s' for reading and writing."
-msgstr "Kunne ikke tilgå enhed »%s«."
+msgstr "Kunne ikke dup enhed »%s« for læsning og skrivning."
 
 #, c-format
 msgid "Failed to set norm for device '%s'."
diff --git a/po/de.gmo b/po/de.gmo
index 5a8f4ebc978d006f452d3f0cd329143b500b4f2d..071af5b8c6eead9a9d298e63d5cedcf641069ab3 100644
Binary files a/po/de.gmo and b/po/de.gmo differ
diff --git a/po/de.po b/po/de.po
index 5bc42349d81dbba5c95d40d4f3c1cb8ec146bbf2..6427ed78b8080bdd00786287cd9a5763ca53d9a8 100644
--- a/po/de.po
+++ b/po/de.po
@@ -1,4 +1,4 @@
-# German translations for gst-plugins-good 1.1.4
+# German translations for gst-plugins-good 1.3.2
 # Copyright (C) 2007 Free Software Foundation, Inc.
 # This file is distributed under the same license as the gst-plugins-good package.
 #
@@ -12,10 +12,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: gst-plugins-good 1.1.4\n"
+"Project-Id-Version: gst-plugins-good 1.3.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-21 12:10+0200\n"
-"PO-Revision-Date: 2013-09-21 12:39+0100\n"
+"POT-Creation-Date: 2014-06-22 17:33+0200\n"
+"PO-Revision-Date: 2014-05-22 17:31+0100\n"
 "Last-Translator: Christian Kirbach <christian.kirbach@gmail.com>\n"
 "Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
 "Language: de\n"
@@ -257,9 +257,9 @@ msgstr "Das Gerät »%s« kann nicht bei %dx%d aufnehmen"
 msgid "Device '%s' cannot capture in the specified format"
 msgstr "Das angegebene Format kann nicht vom Gerät »%s« ausgelesen werden"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Device '%s' does support non-contiguous planes"
-msgstr "Gerät »%s« unterstützt keine Videoaufnahme"
+msgstr "Gerät »%s« unterstützt getrennte Ebenen"
 
 #, c-format
 msgid "Could not get parameters on device '%s'"
@@ -270,32 +270,28 @@ msgstr ""
 "Das Video-Eingabegerät akzeptierte nicht die neue Einstellung zur "
 "Bildwiederholungsrate."
 
-#, fuzzy
 msgid "Video device did not provide output format."
-msgstr ""
-"Das Video-Eingabegerät akzeptierte nicht die neue Einstellung zur "
-"Bildwiederholungsrate."
+msgstr "Das Video-Gerät gab kein Ausgabeformat an."
 
 msgid "Video device returned invalid dimensions."
-msgstr ""
+msgstr "Das Video-Gerät gab ungültige Abmessungen zurück."
 
-#, fuzzy
 msgid "Video devices uses an unsupported interlacing method."
-msgstr "Der Treiber von Gerät »%s« unterstützt nicht die EA-Methode %d"
+msgstr ""
+"Video-Geräte verwendet eine nicht unterstützt Methode der "
+"Zeilenverschachtelung."
 
 msgid "Video devices uses an unsupported pixel format."
-msgstr ""
+msgstr "Das Video-Gerät verwendet ein nicht unterstütztes Pixelformat."
 
-#, fuzzy
 msgid "Failed to configure internal buffer pool."
-msgstr "Das Videogerät konnte keinen Puffer-Pool erstellen"
+msgstr "Einrichten des internen Puffer-Pools ist fehlgeschlagen."
 
-#, fuzzy
 msgid "Video device did not suggest any buffer size."
-msgstr "Das Videogerät konnte keinen Puffer-Pool erstellen"
+msgstr "Das Videogerät gab keine Puffer-Größe an."
 
 msgid "No downstream pool to import from."
-msgstr ""
+msgstr "Es gibt keinen Downstream-Pool, aus dem importiert werden kann."
 
 #, c-format
 msgid "Failed to get settings of tuner %d on device '%s'."
@@ -322,6 +318,35 @@ msgstr "Festlegen der Eingabe »%d« des Geräts »%s« schlug fehl."
 msgid "Failed to change mute state for device '%s'."
 msgstr "Ändern des Stummzustands von Gerät »%s« schlug fehl."
 
+msgid "Failed to allocated required memory."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported input format"
+msgstr "Das Video-Gerät verwendet ein nicht unterstütztes Pixelformat."
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported output format"
+msgstr "Das Video-Gerät verwendet ein nicht unterstütztes Pixelformat."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported input format"
+msgstr "Das Video-Gerät verwendet ein nicht unterstütztes Pixelformat."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported output format"
+msgstr "Das Video-Gerät verwendet ein nicht unterstütztes Pixelformat."
+
+msgid "Failed to allocate required memory."
+msgstr ""
+
+#, fuzzy
+msgid "Failed to start decoding thread."
+msgstr "Dekodieren des JPEG-Bildes schlug fehl"
+
+msgid "Failed to process frame."
+msgstr ""
+
 #, c-format
 msgid ""
 "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if "
@@ -367,11 +392,11 @@ msgstr "»%s« ist kein Aufnahmegerät."
 msgid "Device '%s' is not a output device."
 msgstr "»%s« ist kein Wiedergabegerät."
 
-#, fuzzy, c-format
+#, c-format
 msgid "Device '%s' is not a M2M device."
-msgstr "»%s« ist kein Wiedergabegerät."
+msgstr "Gerät »%s« ist kein M2M-Gerät."
 
-#, fuzzy, c-format
+#, c-format
 msgid "Could not dup device '%s' for reading and writing."
 msgstr "Gerät »%s« konnte nicht zum Lesen oder Schreiben geöffnet werden."
 
diff --git a/po/el.gmo b/po/el.gmo
index 6da46442245bf9f110a5e0bf53fc139a1897427b..fee4b314eb7faccdb9eb153086bb67fdfa3f89f5 100644
Binary files a/po/el.gmo and b/po/el.gmo differ
diff --git a/po/el.po b/po/el.po
index 577daba10272d4ff49a04e17f714c0f99960d563..bb7bf400163022bbb244f314cfd13a0705f26417 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: 2014-05-21 12:10+0200\n"
+"POT-Creation-Date: 2014-06-22 17:33+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"
@@ -303,6 +303,35 @@ msgstr "Αποτυχία ρύθμισης εισαγωγής %d στην συσ
 msgid "Failed to change mute state for device '%s'."
 msgstr "Αποτυχία ανάγνωσης ισχύς σήματος για την συσκευή '%s'."
 
+msgid "Failed to allocated required memory."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported input format"
+msgstr "Ο οδηγός της συσκευής '%s' δεν υποστηρίζει κάποια γνωστή μέθοδο λήψης."
+
+#, c-format
+msgid "Converter on device %s has no supported output format"
+msgstr ""
+
+#, c-format
+msgid "Encoder on device %s has no supported input format"
+msgstr ""
+
+#, c-format
+msgid "Encoder on device %s has no supported output format"
+msgstr ""
+
+msgid "Failed to allocate required memory."
+msgstr ""
+
+#, fuzzy
+msgid "Failed to start decoding thread."
+msgstr "Αποτυχία αποκωδικοποίησης της εικόνας JPEG"
+
+msgid "Failed to process frame."
+msgstr ""
+
 #, c-format
 msgid ""
 "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if "
diff --git a/po/en_GB.gmo b/po/en_GB.gmo
index 138dcdfe204431e24c542aaaeaa5416ebeffb58c..7a6518e9e59833091e9de55474d6d670f3c4aef9 100644
Binary files a/po/en_GB.gmo and b/po/en_GB.gmo differ
diff --git a/po/en_GB.po b/po/en_GB.po
index f71db27aeb9b06b1cf282c199d2da3458473758b..274c54f8b7bfca071c2789a139653156d2605c5e 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: 2014-05-21 12:10+0200\n"
+"POT-Creation-Date: 2014-06-22 17:33+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"
@@ -289,6 +289,34 @@ msgstr "Could not close audio device \"%s\"."
 msgid "Failed to change mute state for device '%s'."
 msgstr "Could not get buffers from device \"%s\"."
 
+msgid "Failed to allocated required memory."
+msgstr ""
+
+#, c-format
+msgid "Converter on device %s has no supported input format"
+msgstr ""
+
+#, c-format
+msgid "Converter on device %s has no supported output format"
+msgstr ""
+
+#, c-format
+msgid "Encoder on device %s has no supported input format"
+msgstr ""
+
+#, c-format
+msgid "Encoder on device %s has no supported output format"
+msgstr ""
+
+msgid "Failed to allocate required memory."
+msgstr ""
+
+msgid "Failed to start decoding thread."
+msgstr ""
+
+msgid "Failed to process frame."
+msgstr ""
+
 #, c-format
 msgid ""
 "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if "
diff --git a/po/eo.gmo b/po/eo.gmo
index ad7a95d9fcba0fd30f128dff6980d77449b0a0d8..a37dfe1566f7d901764c61f36e5092043f4a9ba0 100644
Binary files a/po/eo.gmo and b/po/eo.gmo differ
diff --git a/po/eo.po b/po/eo.po
index 29f96c7e7006b8599bb01ebaba2e2e56786b4894..1fe9d6abfdc66b398bb017f181e55be4abc9557b 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: 2014-05-21 12:10+0200\n"
+"POT-Creation-Date: 2014-06-22 17:33+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"
@@ -285,6 +285,34 @@ msgstr ""
 msgid "Failed to change mute state for device '%s'."
 msgstr ""
 
+msgid "Failed to allocated required memory."
+msgstr ""
+
+#, c-format
+msgid "Converter on device %s has no supported input format"
+msgstr ""
+
+#, c-format
+msgid "Converter on device %s has no supported output format"
+msgstr ""
+
+#, c-format
+msgid "Encoder on device %s has no supported input format"
+msgstr ""
+
+#, c-format
+msgid "Encoder on device %s has no supported output format"
+msgstr ""
+
+msgid "Failed to allocate required memory."
+msgstr ""
+
+msgid "Failed to start decoding thread."
+msgstr ""
+
+msgid "Failed to process frame."
+msgstr ""
+
 #, c-format
 msgid ""
 "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if "
diff --git a/po/es.gmo b/po/es.gmo
index bea6c0c831cba7ed4f58bb7f79e884ec2a05c7ad..1a0ad565b985378be2996a864f237cb888caa95e 100644
Binary files a/po/es.gmo and b/po/es.gmo differ
diff --git a/po/es.po b/po/es.po
index b3a7305fc477bf5b62eb3eca2355628e3119f740..d1e1fbf6cd0655c889a135fb61f4be567463f708 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: 2014-05-21 12:10+0200\n"
+"POT-Creation-Date: 2014-06-22 17:33+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"
@@ -321,6 +321,43 @@ msgstr "Falló al establecer la entrada %d en el dispositivo %s."
 msgid "Failed to change mute state for device '%s'."
 msgstr "Falló al obtener la potencia de la señal para el dispositivo «%s»."
 
+msgid "Failed to allocated required memory."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported input format"
+msgstr ""
+"El controlador del dispositivo «%s» no soporta ningún método de captura "
+"conocido."
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported output format"
+msgstr ""
+"El dispositivo de entrada de vídeo no aceptó el ajuste de la nueva tasa de "
+"fotogramas."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported input format"
+msgstr ""
+"El dispositivo de entrada de vídeo no aceptó el ajuste de la nueva tasa de "
+"fotogramas."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported output format"
+msgstr ""
+"El dispositivo de entrada de vídeo no aceptó el ajuste de la nueva tasa de "
+"fotogramas."
+
+msgid "Failed to allocate required memory."
+msgstr ""
+
+#, fuzzy
+msgid "Failed to start decoding thread."
+msgstr "Falló al decodificar la imagen JPEG"
+
+msgid "Failed to process frame."
+msgstr ""
+
 #, c-format
 msgid ""
 "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if "
diff --git a/po/eu.gmo b/po/eu.gmo
index 2529dfece4670df153b0619e168f67aae98bb182..b89b2b90e3bd478912e2401100b6bf168c7e919b 100644
Binary files a/po/eu.gmo and b/po/eu.gmo differ
diff --git a/po/eu.po b/po/eu.po
index 2abc3e544f4fb545a5f1dbffbcb687604fce71a0..52303df367dee6b66fff53d0adeeaf145c8a9364 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: 2014-05-21 12:10+0200\n"
+"POT-Creation-Date: 2014-06-22 17:33+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"
@@ -318,6 +318,42 @@ msgstr "Huts egin du '%2$s' gailuko %1$d. sarrera ezartzean."
 msgid "Failed to change mute state for device '%s'."
 msgstr "Huts egin du '%s' gailuaren seinalearen indarra eskuratzean."
 
+msgid "Failed to allocated required memory."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported input format"
+msgstr ""
+"'%s' gailuaren kontrolatzaileak ez du onartzen kaptura-metodo ezagunik."
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported output format"
+msgstr ""
+"Bideoaren sarrerako gailuak ez du fotograma-tamainaren ezarpen berria "
+"onartzen."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported input format"
+msgstr ""
+"Bideoaren sarrerako gailuak ez du fotograma-tamainaren ezarpen berria "
+"onartzen."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported output format"
+msgstr ""
+"Bideoaren sarrerako gailuak ez du fotograma-tamainaren ezarpen berria "
+"onartzen."
+
+msgid "Failed to allocate required memory."
+msgstr ""
+
+#, fuzzy
+msgid "Failed to start decoding thread."
+msgstr "Huts egin du JPEG irudia deskodetzean"
+
+msgid "Failed to process frame."
+msgstr ""
+
 #, c-format
 msgid ""
 "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if "
diff --git a/po/fi.gmo b/po/fi.gmo
index 4956ea7e7a05e57583b6c11226bddfe8af50dda7..dae34175a4d9b447e5bdcdc80bb90712a3da4319 100644
Binary files a/po/fi.gmo and b/po/fi.gmo differ
diff --git a/po/fi.po b/po/fi.po
index bed2a60990cc5d7b18f240cc366ac58d9710d7ef..c6e4cc4e809d5b90160379bf055e62d957d77abd 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: 2014-05-21 12:10+0200\n"
+"POT-Creation-Date: 2014-06-22 17:33+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"
@@ -307,6 +307,35 @@ msgstr "Sisääntuloa %d ei voitu asettaa laitteelle %s."
 msgid "Failed to change mute state for device '%s'."
 msgstr "Laitteelta ”%s” ei saatu signaalinvoimakkuutta."
 
+msgid "Failed to allocated required memory."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported input format"
+msgstr "Laitteen ”%s” ajuri ei tue mitään tunnettua kaappaustapaa."
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported output format"
+msgstr "Videosyötelaite ei hyväksy uutta kehysnopeusasetusta."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported input format"
+msgstr "Videosyötelaite ei hyväksy uutta kehysnopeusasetusta."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported output format"
+msgstr "Videosyötelaite ei hyväksy uutta kehysnopeusasetusta."
+
+msgid "Failed to allocate required memory."
+msgstr ""
+
+#, fuzzy
+msgid "Failed to start decoding thread."
+msgstr "JPEG-kuvan purku epäonnistui"
+
+msgid "Failed to process frame."
+msgstr ""
+
 #, c-format
 msgid ""
 "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if "
diff --git a/po/fr.gmo b/po/fr.gmo
index a8c353b93fce179ef461be0c66da70df137de948..ab7cdff4fe8108f601b535a1393371b567b0b72d 100644
Binary files a/po/fr.gmo and b/po/fr.gmo differ
diff --git a/po/fr.po b/po/fr.po
index 3c1f10c4b9585a955f70478b1f21b8b177926779..65fbdd95fcf9aeb6c470fec0cbda44ca95f73825 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: 2014-05-21 12:10+0200\n"
+"POT-Creation-Date: 2014-06-22 17:33+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"
@@ -319,6 +319,43 @@ msgstr "Impossible de définir l'entrée %d du périphérique %s."
 msgid "Failed to change mute state for device '%s'."
 msgstr "Impossible d'obtenir la force du signal du périphérique « %s »."
 
+msgid "Failed to allocated required memory."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported input format"
+msgstr ""
+"Le pilote du périphérique « %s » ne prend en charge aucune méthode "
+"d'enregistrement connue."
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported output format"
+msgstr ""
+"Le périphérique d'entrée vidéo n'a pas accepté le nouveau paramètre de "
+"fréquence d'image."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported input format"
+msgstr ""
+"Le périphérique d'entrée vidéo n'a pas accepté le nouveau paramètre de "
+"fréquence d'image."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported output format"
+msgstr ""
+"Le périphérique d'entrée vidéo n'a pas accepté le nouveau paramètre de "
+"fréquence d'image."
+
+msgid "Failed to allocate required memory."
+msgstr ""
+
+#, fuzzy
+msgid "Failed to start decoding thread."
+msgstr "Échec de décodage de l'image JPEG"
+
+msgid "Failed to process frame."
+msgstr ""
+
 #, c-format
 msgid ""
 "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if "
diff --git a/po/gl.gmo b/po/gl.gmo
index 56d006583a7122b755c69bcb94b19b928b134412..f461e6c59a13f668533612e63a0f4b50a0c81d3f 100644
Binary files a/po/gl.gmo and b/po/gl.gmo differ
diff --git a/po/gl.po b/po/gl.po
index 1c560746d0b6e5535c45933b9c6450712f5e4c80..5d0b9a997d6af937638b31d46e4f0ab1f1c21ec4 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: 2014-05-21 12:10+0200\n"
+"POT-Creation-Date: 2014-06-22 17:33+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"
@@ -314,6 +314,38 @@ msgid "Failed to change mute state for device '%s'."
 msgstr ""
 "Produciuse un erro ao cambiar o estado de enmudecido para o dispositivo «%s»."
 
+msgid "Failed to allocated required memory."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported input format"
+msgstr "O controlador do dispositivo «%s» non admite o método IO %d"
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported output format"
+msgstr ""
+"O dispositivo de vídeo non acepta a nova configuración de taxa de marcos."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported input format"
+msgstr ""
+"O dispositivo de vídeo non acepta a nova configuración de taxa de marcos."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported output format"
+msgstr ""
+"O dispositivo de vídeo non acepta a nova configuración de taxa de marcos."
+
+msgid "Failed to allocate required memory."
+msgstr ""
+
+#, fuzzy
+msgid "Failed to start decoding thread."
+msgstr "Produciuse un erro ao descodificar a imaxe JPEG"
+
+msgid "Failed to process frame."
+msgstr ""
+
 #, c-format
 msgid ""
 "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if "
diff --git a/po/gst-plugins-good-1.0.pot b/po/gst-plugins-good-1.0.pot
index 0d863d065575d6da6290fc74cd2f90001b26d4f2..4984aba1ed9b68d06ee0bcad6781a9f80b3fd55b 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.3.2\n"
+"Project-Id-Version: gst-plugins-good 1.3.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-21 12:10+0200\n"
+"POT-Creation-Date: 2014-06-22 17:33+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"
@@ -41,32 +41,32 @@ msgstr ""
 msgid "No URL set."
 msgstr ""
 
-#: ext/soup/gstsouphttpsrc.c:1146
+#: ext/soup/gstsouphttpsrc.c:1205
 msgid "Server does not support seeking."
 msgstr ""
 
-#: ext/soup/gstsouphttpsrc.c:1420
+#: ext/soup/gstsouphttpsrc.c:1479
 msgid "Could not resolve server name."
 msgstr ""
 
-#: ext/soup/gstsouphttpsrc.c:1426
+#: ext/soup/gstsouphttpsrc.c:1485
 msgid "Could not establish connection to server."
 msgstr ""
 
-#: ext/soup/gstsouphttpsrc.c:1431
+#: ext/soup/gstsouphttpsrc.c:1490
 msgid "Secure connection setup failed."
 msgstr ""
 
-#: ext/soup/gstsouphttpsrc.c:1441
+#: ext/soup/gstsouphttpsrc.c:1500
 msgid ""
 "A network error occured, or the server closed the connection unexpectedly."
 msgstr ""
 
-#: ext/soup/gstsouphttpsrc.c:1448
+#: ext/soup/gstsouphttpsrc.c:1507
 msgid "Server sent bad data."
 msgstr ""
 
-#: gst/avi/gstavidemux.c:5704
+#: gst/avi/gstavidemux.c:5678
 msgid "Internal data stream error."
 msgstr ""
 
@@ -78,54 +78,54 @@ msgstr ""
 msgid "This file contains no playable streams."
 msgstr ""
 
-#: gst/isomp4/qtdemux.c:621 gst/isomp4/qtdemux.c:4705
-#: gst/isomp4/qtdemux.c:4772 gst/isomp4/qtdemux.c:5008
+#: gst/isomp4/qtdemux.c:621 gst/isomp4/qtdemux.c:4666
+#: gst/isomp4/qtdemux.c:4733 gst/isomp4/qtdemux.c:4969
 msgid "This file is invalid and cannot be played."
 msgstr ""
 
-#: gst/isomp4/qtdemux.c:2301
+#: gst/isomp4/qtdemux.c:2294
 msgid "Cannot play stream because it is encrypted with PlayReady DRM."
 msgstr ""
 
-#: gst/isomp4/qtdemux.c:2864 gst/isomp4/qtdemux.c:2940
-#: gst/isomp4/qtdemux.c:2983 gst/isomp4/qtdemux.c:5710
-#: gst/isomp4/qtdemux.c:5717 gst/isomp4/qtdemux.c:6359
-#: gst/isomp4/qtdemux.c:6788 gst/isomp4/qtdemux.c:6795
-#: gst/isomp4/qtdemux.c:8627
+#: gst/isomp4/qtdemux.c:2857 gst/isomp4/qtdemux.c:2933
+#: gst/isomp4/qtdemux.c:2976 gst/isomp4/qtdemux.c:5671
+#: gst/isomp4/qtdemux.c:5678 gst/isomp4/qtdemux.c:6321
+#: gst/isomp4/qtdemux.c:6750 gst/isomp4/qtdemux.c:6757
+#: gst/isomp4/qtdemux.c:8692
 msgid "This file is corrupt and cannot be played."
 msgstr ""
 
-#: gst/isomp4/qtdemux.c:3074
+#: gst/isomp4/qtdemux.c:3067
 msgid "Invalid atom size."
 msgstr ""
 
-#: gst/isomp4/qtdemux.c:3142
+#: gst/isomp4/qtdemux.c:3135
 msgid "This file is incomplete and cannot be played."
 msgstr ""
 
-#: gst/isomp4/qtdemux.c:7448
+#: gst/isomp4/qtdemux.c:7511
 msgid "The video in this file might not play correctly."
 msgstr ""
 
-#: gst/isomp4/qtdemux.c:8668
+#: gst/isomp4/qtdemux.c:8733
 #, c-format
 msgid "This file contains too many streams. Only playing first %d"
 msgstr ""
 
-#: gst/rtsp/gstrtspsrc.c:6306
+#: gst/rtsp/gstrtspsrc.c:6465
 msgid ""
 "No supported stream was found. You might need to install a GStreamer RTSP "
 "extension plugin for Real media streams."
 msgstr ""
 
-#: gst/rtsp/gstrtspsrc.c:6311
+#: gst/rtsp/gstrtspsrc.c:6470
 msgid ""
 "No supported stream was found. You might need to allow more transport "
 "protocols or may otherwise be missing the right GStreamer RTSP extension "
 "plugin."
 msgstr ""
 
-#: gst/wavparse/gstwavparse.c:2167
+#: gst/wavparse/gstwavparse.c:2177
 msgid "Internal data flow error."
 msgstr ""
 
@@ -252,90 +252,90 @@ msgstr ""
 msgid "AUX 2 Out"
 msgstr ""
 
-#: sys/v4l2/gstv4l2bufferpool.c:1476
+#: sys/v4l2/gstv4l2bufferpool.c:1496
 #, c-format
 msgid "Error reading %d bytes from device '%s'."
 msgstr ""
 
-#: sys/v4l2/gstv4l2object.c:1062
+#: sys/v4l2/gstv4l2object.c:1058
 #, c-format
 msgid "Failed to enumerate possible video formats device '%s' can work with"
 msgstr ""
 
-#: sys/v4l2/gstv4l2object.c:2297
+#: sys/v4l2/gstv4l2object.c:2293
 #, c-format
 msgid "Could not map buffers from device '%s'"
 msgstr ""
 
-#: sys/v4l2/gstv4l2object.c:2305
+#: sys/v4l2/gstv4l2object.c:2301
 #, c-format
 msgid "The driver of device '%s' does not support the IO method %d"
 msgstr ""
 
-#: sys/v4l2/gstv4l2object.c:2312
+#: sys/v4l2/gstv4l2object.c:2308
 #, c-format
 msgid "The driver of device '%s' does not support any known IO method."
 msgstr ""
 
-#: sys/v4l2/gstv4l2object.c:2805
+#: sys/v4l2/gstv4l2object.c:2801
 #, c-format
 msgid "Device '%s' does not support video capture"
 msgstr ""
 
-#: sys/v4l2/gstv4l2object.c:2814
+#: sys/v4l2/gstv4l2object.c:2810
 #, c-format
 msgid "Device '%s' is busy"
 msgstr ""
 
-#: sys/v4l2/gstv4l2object.c:2820 sys/v4l2/gstv4l2object.c:2831
+#: sys/v4l2/gstv4l2object.c:2816 sys/v4l2/gstv4l2object.c:2827
 #, c-format
 msgid "Device '%s' cannot capture at %dx%d"
 msgstr ""
 
-#: sys/v4l2/gstv4l2object.c:2840
+#: sys/v4l2/gstv4l2object.c:2836
 #, c-format
 msgid "Device '%s' cannot capture in the specified format"
 msgstr ""
 
-#: sys/v4l2/gstv4l2object.c:2851
+#: sys/v4l2/gstv4l2object.c:2847
 #, c-format
 msgid "Device '%s' does support non-contiguous planes"
 msgstr ""
 
-#: sys/v4l2/gstv4l2object.c:2861
+#: sys/v4l2/gstv4l2object.c:2857
 #, c-format
 msgid "Could not get parameters on device '%s'"
 msgstr ""
 
-#: sys/v4l2/gstv4l2object.c:2869
+#: sys/v4l2/gstv4l2object.c:2865
 msgid "Video device did not accept new frame rate setting."
 msgstr ""
 
-#: sys/v4l2/gstv4l2object.c:2962
+#: sys/v4l2/gstv4l2object.c:2958
 msgid "Video device did not provide output format."
 msgstr ""
 
-#: sys/v4l2/gstv4l2object.c:2968
+#: sys/v4l2/gstv4l2object.c:2964
 msgid "Video device returned invalid dimensions."
 msgstr ""
 
-#: sys/v4l2/gstv4l2object.c:2976
+#: sys/v4l2/gstv4l2object.c:2972
 msgid "Video devices uses an unsupported interlacing method."
 msgstr ""
 
-#: sys/v4l2/gstv4l2object.c:2983
+#: sys/v4l2/gstv4l2object.c:2979
 msgid "Video devices uses an unsupported pixel format."
 msgstr ""
 
-#: sys/v4l2/gstv4l2object.c:3364
+#: sys/v4l2/gstv4l2object.c:3392
 msgid "Failed to configure internal buffer pool."
 msgstr ""
 
-#: sys/v4l2/gstv4l2object.c:3370
+#: sys/v4l2/gstv4l2object.c:3398
 msgid "Video device did not suggest any buffer size."
 msgstr ""
 
-#: sys/v4l2/gstv4l2object.c:3382
+#: sys/v4l2/gstv4l2object.c:3413
 msgid "No downstream pool to import from."
 msgstr ""
 
@@ -359,7 +359,7 @@ msgstr ""
 msgid "Failed to get radio input on device '%s'. "
 msgstr ""
 
-#: sys/v4l2/gstv4l2radio.c:202 sys/v4l2/v4l2_calls.c:1092
+#: sys/v4l2/gstv4l2radio.c:202 sys/v4l2/v4l2_calls.c:1067
 #, c-format
 msgid "Failed to set input %d on device %s."
 msgstr ""
@@ -369,6 +369,42 @@ msgstr ""
 msgid "Failed to change mute state for device '%s'."
 msgstr ""
 
+#: sys/v4l2/gstv4l2sink.c:605
+msgid "Failed to allocated required memory."
+msgstr ""
+
+#: sys/v4l2/gstv4l2transform.c:143
+#, c-format
+msgid "Converter on device %s has no supported input format"
+msgstr ""
+
+#: sys/v4l2/gstv4l2transform.c:150
+#, c-format
+msgid "Converter on device %s has no supported output format"
+msgstr ""
+
+#: sys/v4l2/gstv4l2videodec.c:141
+#, c-format
+msgid "Encoder on device %s has no supported input format"
+msgstr ""
+
+#: sys/v4l2/gstv4l2videodec.c:148
+#, c-format
+msgid "Encoder on device %s has no supported output format"
+msgstr ""
+
+#: sys/v4l2/gstv4l2videodec.c:572
+msgid "Failed to allocate required memory."
+msgstr ""
+
+#: sys/v4l2/gstv4l2videodec.c:586
+msgid "Failed to start decoding thread."
+msgstr ""
+
+#: sys/v4l2/gstv4l2videodec.c:594
+msgid "Failed to process frame."
+msgstr ""
+
 #: sys/v4l2/v4l2_calls.c:89
 #, c-format
 msgid ""
@@ -396,91 +432,91 @@ msgstr ""
 msgid "Failed getting controls attributes on device '%s'."
 msgstr ""
 
-#: sys/v4l2/v4l2_calls.c:616
+#: sys/v4l2/v4l2_calls.c:605
 #, c-format
 msgid "Cannot identify device '%s'."
 msgstr ""
 
-#: sys/v4l2/v4l2_calls.c:623
+#: sys/v4l2/v4l2_calls.c:612
 #, c-format
 msgid "This isn't a device '%s'."
 msgstr ""
 
-#: sys/v4l2/v4l2_calls.c:630
+#: sys/v4l2/v4l2_calls.c:619
 #, c-format
 msgid "Could not open device '%s' for reading and writing."
 msgstr ""
 
-#: sys/v4l2/v4l2_calls.c:637
+#: sys/v4l2/v4l2_calls.c:626
 #, c-format
 msgid "Device '%s' is not a capture device."
 msgstr ""
 
-#: sys/v4l2/v4l2_calls.c:645
+#: sys/v4l2/v4l2_calls.c:634
 #, c-format
 msgid "Device '%s' is not a output device."
 msgstr ""
 
-#: sys/v4l2/v4l2_calls.c:653
+#: sys/v4l2/v4l2_calls.c:642
 #, c-format
 msgid "Device '%s' is not a M2M device."
 msgstr ""
 
-#: sys/v4l2/v4l2_calls.c:715
+#: sys/v4l2/v4l2_calls.c:693
 #, c-format
 msgid "Could not dup device '%s' for reading and writing."
 msgstr ""
 
-#: sys/v4l2/v4l2_calls.c:802
+#: sys/v4l2/v4l2_calls.c:777
 #, c-format
 msgid "Failed to set norm for device '%s'."
 msgstr ""
 
-#: sys/v4l2/v4l2_calls.c:840
+#: sys/v4l2/v4l2_calls.c:815
 #, c-format
 msgid "Failed to get current tuner frequency for device '%s'."
 msgstr ""
 
-#: sys/v4l2/v4l2_calls.c:882
+#: sys/v4l2/v4l2_calls.c:857
 #, c-format
 msgid "Failed to set current tuner frequency for device '%s' to %lu Hz."
 msgstr ""
 
-#: sys/v4l2/v4l2_calls.c:916
+#: sys/v4l2/v4l2_calls.c:891
 #, c-format
 msgid "Failed to get signal strength for device '%s'."
 msgstr ""
 
-#: sys/v4l2/v4l2_calls.c:952
+#: sys/v4l2/v4l2_calls.c:927
 #, c-format
 msgid "Failed to get value for control %d on device '%s'."
 msgstr ""
 
-#: sys/v4l2/v4l2_calls.c:987
+#: sys/v4l2/v4l2_calls.c:962
 #, c-format
 msgid "Failed to set value %d for control %d on device '%s'."
 msgstr ""
 
-#: sys/v4l2/v4l2_calls.c:1067
+#: sys/v4l2/v4l2_calls.c:1042
 #, c-format
 msgid "Failed to get current input on device '%s'. May be it is a radio device"
 msgstr ""
 
-#: sys/v4l2/v4l2_calls.c:1124
+#: sys/v4l2/v4l2_calls.c:1099
 #, c-format
 msgid ""
 "Failed to get current output on device '%s'. May be it is a radio device"
 msgstr ""
 
-#: sys/v4l2/v4l2_calls.c:1149
+#: sys/v4l2/v4l2_calls.c:1124
 #, c-format
 msgid "Failed to set output %d on device %s."
 msgstr ""
 
-#: sys/ximage/gstximagesrc.c:788
+#: sys/ximage/gstximagesrc.c:790
 msgid "Changing resolution at runtime is not yet supported."
 msgstr ""
 
-#: sys/ximage/gstximagesrc.c:802
+#: sys/ximage/gstximagesrc.c:804
 msgid "Cannot operate without a clock"
 msgstr ""
diff --git a/po/hr.gmo b/po/hr.gmo
index 680af9fa523d655c0035c59703b55f9585c1353f..5868e40b1d484327e98504cbdd719c656db225a1 100644
Binary files a/po/hr.gmo and b/po/hr.gmo differ
diff --git a/po/hr.po b/po/hr.po
index bc441e86a16f34f466c0742d8a0550a65ddc3896..a25164b3c95f0556502ce97c06028a0856081335 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: 2014-05-21 12:10+0200\n"
+"POT-Creation-Date: 2014-06-22 17:33+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"
@@ -301,6 +301,35 @@ msgstr "Nisam uspio postaviti ulaz %d na uređaj %s."
 msgid "Failed to change mute state for device '%s'."
 msgstr "Nisam uspio dobiti snagu signala za uređaj „%s”."
 
+msgid "Failed to allocated required memory."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported input format"
+msgstr "Upravljački program uređaja „%s” ne podržava poznate metode snimanja."
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported output format"
+msgstr "Ulazni video uređaj nije prihvatio nove postavke broja okvira."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported input format"
+msgstr "Ulazni video uređaj nije prihvatio nove postavke broja okvira."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported output format"
+msgstr "Ulazni video uređaj nije prihvatio nove postavke broja okvira."
+
+msgid "Failed to allocate required memory."
+msgstr ""
+
+#, fuzzy
+msgid "Failed to start decoding thread."
+msgstr "Nisam uspio dekodirati JPEG sliku"
+
+msgid "Failed to process frame."
+msgstr ""
+
 #, c-format
 msgid ""
 "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if "
diff --git a/po/hu.gmo b/po/hu.gmo
index 7d546e9a3966fc5ee39a2e7bbc40827de14ae4ea..a20d0c0a40becf0f5e881bf0baee2d61aace4bde 100644
Binary files a/po/hu.gmo and b/po/hu.gmo differ
diff --git a/po/hu.po b/po/hu.po
index 7cbc16947627cbe9c7b24879d5603453b94bc7aa..e00592cd7f71be72fcf76de76c50ef6a9f14ba9b 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -7,10 +7,10 @@
 # Balázs Úr <urbalazs@gmail.com>, 2014.
 msgid ""
 msgstr ""
-"Project-Id-Version: gst-plugins-good 1.2.1\n"
+"Project-Id-Version: gst-plugins-good 1.3.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-21 12:10+0200\n"
-"PO-Revision-Date: 2014-03-20 18:55+0100\n"
+"POT-Creation-Date: 2014-06-22 17:33+0200\n"
+"PO-Revision-Date: 2014-05-23 21:00+0200\n"
 "Last-Translator: Balázs Úr <urbalazs@gmail.com>\n"
 "Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n"
 "Language: hu\n"
@@ -18,7 +18,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "X-Rosetta-Export-Date: 2007-07-27 19:18:15+0000\n"
-"X-Generator: Lokalize 1.2\n"
+"X-Generator: Lokalize 1.5\n"
 "X-Rosetta-Export-Date: 2007-07-27 19:18:15+0000\n"
 "Plural-Forms:  nplurals=2; plural=(n != 1);\n"
 
@@ -249,9 +249,9 @@ msgstr "A(z) „%s” eszköz nem képes felvenni %dx%d felbontásban"
 msgid "Device '%s' cannot capture in the specified format"
 msgstr "A(z) „%s” eszköz nem képes felvenni a megadott formátumban"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Device '%s' does support non-contiguous planes"
-msgstr "A(z) „%s” eszköz nem támogatja a videofelvételt"
+msgstr "A(z) „%s” eszköz nem támogatja a nem szomszédos síkokat"
 
 #, c-format
 msgid "Could not get parameters on device '%s'"
@@ -260,27 +260,23 @@ msgstr "Nem kérhetők le a(z) „%s” eszköz paraméterei"
 msgid "Video device did not accept new frame rate setting."
 msgstr "A videoeszköz nem fogadta el az új képkockasebesség-beállítást."
 
-#, fuzzy
 msgid "Video device did not provide output format."
-msgstr "A videoeszköz nem fogadta el az új képkockasebesség-beállítást."
+msgstr "A videoeszköz nem szolgáltatott kimeneti formátumot."
 
 msgid "Video device returned invalid dimensions."
-msgstr ""
+msgstr "A videoeszköz érvénytelen dimenziókkal tért vissza."
 
-#, fuzzy
 msgid "Video devices uses an unsupported interlacing method."
-msgstr "A(z) „%s” eszköz illesztőprogramja nem támogatja a(z) %d. IO módot"
+msgstr "A videoeszközök nem támogatott váltottsoros módot használnak."
 
 msgid "Video devices uses an unsupported pixel format."
-msgstr ""
+msgstr "A videoeszközök nem támogatott képpontformátumot használnak."
 
-#, fuzzy
 msgid "Failed to configure internal buffer pool."
-msgstr "A videoeszköz nem tudott létrehozni puffertárolót."
+msgstr "Nem sikerült beállítani a belső puffertárolót."
 
-#, fuzzy
 msgid "Video device did not suggest any buffer size."
-msgstr "A videoeszköz nem tudott létrehozni puffertárolót."
+msgstr "A videoeszköz nem javasolt semmilyen pufferméretet."
 
 msgid "No downstream pool to import from."
 msgstr ""
@@ -309,6 +305,35 @@ msgstr "A(z) %d. bemenet beállítása meghiúsult a(z) „%s” eszközön."
 msgid "Failed to change mute state for device '%s'."
 msgstr "A némítási állapot módosítása meghiúsult a(z) „%s” eszközön."
 
+msgid "Failed to allocated required memory."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported input format"
+msgstr "A videoeszközök nem támogatott képpontformátumot használnak."
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported output format"
+msgstr "A videoeszközök nem támogatott képpontformátumot használnak."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported input format"
+msgstr "A videoeszközök nem támogatott képpontformátumot használnak."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported output format"
+msgstr "A videoeszközök nem támogatott képpontformátumot használnak."
+
+msgid "Failed to allocate required memory."
+msgstr ""
+
+#, fuzzy
+msgid "Failed to start decoding thread."
+msgstr "A JPEG kép visszafejtése meghiúsult"
+
+msgid "Failed to process frame."
+msgstr ""
+
 #, c-format
 msgid ""
 "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if "
@@ -353,9 +378,9 @@ msgstr "A(z) „%s” eszköz nem rögzítőeszköz."
 msgid "Device '%s' is not a output device."
 msgstr "A(z) „%s” eszköz nem kimeneti eszköz."
 
-#, fuzzy, c-format
+#, c-format
 msgid "Device '%s' is not a M2M device."
-msgstr "A(z) „%s” eszköz nem kimeneti eszköz."
+msgstr "A(z) „%s” eszköz nem M2M eszköz."
 
 #, fuzzy, c-format
 msgid "Could not dup device '%s' for reading and writing."
diff --git a/po/id.gmo b/po/id.gmo
index d7b9bcc702351bef352b6cc3edee580f5a4e5f90..f45fb835bc7c5a5c9f410cf0035c217752caf235 100644
Binary files a/po/id.gmo and b/po/id.gmo differ
diff --git a/po/id.po b/po/id.po
index 381bd160210eec1f6b40f693b5134fc594cee1cb..0053e6278d2a68635c7f59b0ac96fcc249772671 100644
--- a/po/id.po
+++ b/po/id.po
@@ -1,16 +1,16 @@
 # Indonesian translations for gst-plugins-good package.
 # This file is put in the public domain.
 #
-# Andhika Padmawan <andhika.padmawan@gmail.com>, 2011.
+# Andhika Padmawan <andhika.padmawan@gmail.com>, 2011-2014.
 # Andika Triwidada <andika@gmail.com>, 2013.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: gst-plugins-good 1.1.4\n"
+"Project-Id-Version: gst-plugins-good 1.3.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-21 12:10+0200\n"
-"PO-Revision-Date: 2013-10-15 16:26+0700\n"
-"Last-Translator: Andika Triwidada <andika@gmail.com>\n"
+"POT-Creation-Date: 2014-06-22 17:33+0200\n"
+"PO-Revision-Date: 2014-06-01 09:52+0700\n"
+"Last-Translator: Andhika Padmawan <andhika.padmawan@gmail.com>\n"
 "Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n"
 "Language: id\n"
 "MIME-Version: 1.0\n"
@@ -244,9 +244,9 @@ msgstr "Divais '%s' tak dapat menangkap di %dx%d"
 msgid "Device '%s' cannot capture in the specified format"
 msgstr "Divais '%s' tak dapat menangkap dalam format yang ditentukan"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Device '%s' does support non-contiguous planes"
-msgstr "Divais '%s' tak mendukung penangkapan video"
+msgstr "Divais '%s' tak mendukung pesawat tak bersinggungan"
 
 #, c-format
 msgid "Could not get parameters on device '%s'"
@@ -255,30 +255,26 @@ msgstr "Tak bisa mendapatkan parameter di divais '%s'"
 msgid "Video device did not accept new frame rate setting."
 msgstr "Divais video tak menerima pengaturan laju bingkai baru."
 
-#, fuzzy
 msgid "Video device did not provide output format."
-msgstr "Divais video tak menerima pengaturan laju bingkai baru."
+msgstr "Divais video tak menyediakan format keluaran."
 
 msgid "Video device returned invalid dimensions."
-msgstr ""
+msgstr "Divais video mengembalikan dimensi tidak sah."
 
-#, fuzzy
 msgid "Video devices uses an unsupported interlacing method."
-msgstr "Driver dari divais '%s' tak mendukung metode IO %d"
+msgstr "Divais video menggunakan metode penyilangan yang tidak didukung."
 
 msgid "Video devices uses an unsupported pixel format."
-msgstr ""
+msgstr "Divais video menggunakan format pixel yang tidak didukung."
 
-#, fuzzy
 msgid "Failed to configure internal buffer pool."
-msgstr "Divais video tak bisa membuat pul singgahan."
+msgstr "Gagal mengatur pul singgahan internal."
 
-#, fuzzy
 msgid "Video device did not suggest any buffer size."
-msgstr "Divais video tak bisa membuat pul singgahan."
+msgstr "Divais video tak menyarankan ukuran singgahan apapun."
 
 msgid "No downstream pool to import from."
-msgstr ""
+msgstr "Tak ada pul downstream untuk diimpor."
 
 #, c-format
 msgid "Failed to get settings of tuner %d on device '%s'."
@@ -304,6 +300,35 @@ msgstr "Gagal mengatur masukan %d di divais %s."
 msgid "Failed to change mute state for device '%s'."
 msgstr "Gagal mengubah keadaan bisu untuk divais '%s'."
 
+msgid "Failed to allocated required memory."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported input format"
+msgstr "Divais video menggunakan format pixel yang tidak didukung."
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported output format"
+msgstr "Divais video menggunakan format pixel yang tidak didukung."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported input format"
+msgstr "Divais video menggunakan format pixel yang tidak didukung."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported output format"
+msgstr "Divais video menggunakan format pixel yang tidak didukung."
+
+msgid "Failed to allocate required memory."
+msgstr ""
+
+#, fuzzy
+msgid "Failed to start decoding thread."
+msgstr "Gagal untuk mengawasandi citra JPEG"
+
+msgid "Failed to process frame."
+msgstr ""
+
 #, c-format
 msgid ""
 "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if "
@@ -348,11 +373,11 @@ msgstr "Divais '%s' bukan divais penangkap."
 msgid "Device '%s' is not a output device."
 msgstr "Divais '%s' bukan divais keluaran."
 
-#, fuzzy, c-format
+#, c-format
 msgid "Device '%s' is not a M2M device."
-msgstr "Divais '%s' bukan divais keluaran."
+msgstr "Divais '%s' bukan divais M2M."
 
-#, fuzzy, c-format
+#, c-format
 msgid "Could not dup device '%s' for reading and writing."
 msgstr "Tak dapat membuka divais '%s' untuk dibaca dan ditulis."
 
diff --git a/po/it.gmo b/po/it.gmo
index 6236c1210b9f07efab3f5fe5d22d477fdb4dc138..8b48581b5424039ebff60c9496f73ad00858ea16 100644
Binary files a/po/it.gmo and b/po/it.gmo differ
diff --git a/po/it.po b/po/it.po
index 48e93f60c3c072c0fafc45e564a5cd92dd1f4e20..775b0156f970dfab46fa71ce8ea50e1122ae753c 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: 2014-05-21 12:10+0200\n"
+"POT-Creation-Date: 2014-06-22 17:33+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"
@@ -309,6 +309,38 @@ msgstr "Impostazione dell'ingresso %d sul device «%s» non riuscita."
 msgid "Failed to change mute state for device '%s'."
 msgstr "Recupero dell'intensità del segnale per il device «%s» non riuscito."
 
+msgid "Failed to allocated required memory."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported input format"
+msgstr "Il driver del device «%s» non supporta alcun metodo di cattura noto."
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported output format"
+msgstr ""
+"Il device di ingresso video non accetta la nuova impostazione sul frame rate."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported input format"
+msgstr ""
+"Il device di ingresso video non accetta la nuova impostazione sul frame rate."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported output format"
+msgstr ""
+"Il device di ingresso video non accetta la nuova impostazione sul frame rate."
+
+msgid "Failed to allocate required memory."
+msgstr ""
+
+#, fuzzy
+msgid "Failed to start decoding thread."
+msgstr "Decodifica dell'immagine JPEG non riuscita"
+
+msgid "Failed to process frame."
+msgstr ""
+
 #, c-format
 msgid ""
 "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if "
diff --git a/po/ja.gmo b/po/ja.gmo
index dcf41d691e4cea1f16bbfaf8c1f102f3678cc02a..c47584d02b971040498c1d8a9f929e23f20898a3 100644
Binary files a/po/ja.gmo and b/po/ja.gmo differ
diff --git a/po/ja.po b/po/ja.po
index 5271debc6f2f43484cb1549e9aabcbfa8a4d464c..b10fdec7d484ba352c4cb9507b35d30b6a06bca2 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: 2014-05-21 12:10+0200\n"
+"POT-Creation-Date: 2014-06-22 17:33+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"
@@ -315,6 +315,35 @@ msgstr "デバイス '%2$s' 上の入力%1$d の設定に失敗しました。"
 msgid "Failed to change mute state for device '%s'."
 msgstr "デバイス '%s' のミュート状態の変更に失敗しました"
 
+msgid "Failed to allocated required memory."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported input format"
+msgstr "デバイス '%s' のドライバはIOメソッド%dをサポートしていません"
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported output format"
+msgstr "ビデオデバイスが新しいフレームレート設定を受け付けません。"
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported input format"
+msgstr "ビデオデバイスが新しいフレームレート設定を受け付けません。"
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported output format"
+msgstr "ビデオデバイスが新しいフレームレート設定を受け付けません。"
+
+msgid "Failed to allocate required memory."
+msgstr ""
+
+#, fuzzy
+msgid "Failed to start decoding thread."
+msgstr "JPEG画像のデコードに失敗しました"
+
+msgid "Failed to process frame."
+msgstr ""
+
 #, c-format
 msgid ""
 "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if "
diff --git a/po/lt.gmo b/po/lt.gmo
index 3b1b17f7a8c748de3fad414b7c69f15226b4ff14..a70f260056369e09dd5b537f999ccd3c256b0121 100644
Binary files a/po/lt.gmo and b/po/lt.gmo differ
diff --git a/po/lt.po b/po/lt.po
index 00307524fdde86fd3d831c09f9433b633cfc0da2..c5362f1f51975fbcf0f9986e1777d515f04f3aae 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: 2014-05-21 12:10+0200\n"
+"POT-Creation-Date: 2014-06-22 17:33+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"
@@ -303,6 +303,35 @@ msgstr "Nepavyko nustatyti įvesties %d įrenginyje %s."
 msgid "Failed to change mute state for device '%s'."
 msgstr "Nepavyko gauti įrenginio „%s“ signalo stiprumo."
 
+msgid "Failed to allocated required memory."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported input format"
+msgstr "Įrenginio „%s“ tvarkyklė nepalaiko jokių žinomų įrašymo būdų."
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported output format"
+msgstr "Vaizdo įvesties įrenginys nepriėmė naujų kadrų dažnio nustatymų."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported input format"
+msgstr "Vaizdo įvesties įrenginys nepriėmė naujų kadrų dažnio nustatymų."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported output format"
+msgstr "Vaizdo įvesties įrenginys nepriėmė naujų kadrų dažnio nustatymų."
+
+msgid "Failed to allocate required memory."
+msgstr ""
+
+#, fuzzy
+msgid "Failed to start decoding thread."
+msgstr "Nepavyko dekoduoti JPEG paveikslÄ—lio"
+
+msgid "Failed to process frame."
+msgstr ""
+
 #, c-format
 msgid ""
 "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if "
diff --git a/po/lv.gmo b/po/lv.gmo
index da0df5716edb0060774e1872f7653e06bf6ebf93..fa1896e0e2c5257134a020f48bd8d01cafe07d60 100644
Binary files a/po/lv.gmo and b/po/lv.gmo differ
diff --git a/po/lv.po b/po/lv.po
index 54bcea0ceed1ff957138ad3d17acd172b4776fb4..debceca022a28854e197e560ad1a5b3ca86c3ac4 100644
--- a/po/lv.po
+++ b/po/lv.po
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins-good 1.2.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-21 12:10+0200\n"
+"POT-Creation-Date: 2014-06-22 17:33+0200\n"
 "PO-Revision-Date: 2014-04-20 16:38+0300\n"
 "Last-Translator: Rihards Prieditis <rprieditis@gmail.com>\n"
 "Language-Team: Latvian <translation-team-lv@lists.sourceforge.net>\n"
@@ -302,6 +302,35 @@ msgstr "Neizdevās iestatīt ievadi %d uz ierīces %s."
 msgid "Failed to change mute state for device '%s'."
 msgstr "Neizdevās mainīt apklusināšanas stāvokli ierīcei “%s”."
 
+msgid "Failed to allocated required memory."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported input format"
+msgstr "Ierīces \"%s\" draiveris neatbalsta IO metodi %d"
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported output format"
+msgstr "Video ierīce nepieņēma jaunos kadru ātruma iestatījumus."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported input format"
+msgstr "Video ierīce nepieņēma jaunos kadru ātruma iestatījumus."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported output format"
+msgstr "Video ierīce nepieņēma jaunos kadru ātruma iestatījumus."
+
+msgid "Failed to allocate required memory."
+msgstr ""
+
+#, fuzzy
+msgid "Failed to start decoding thread."
+msgstr "Neizdevās atkodēt JPEG attēlu"
+
+msgid "Failed to process frame."
+msgstr ""
+
 #, c-format
 msgid ""
 "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if "
diff --git a/po/mt.gmo b/po/mt.gmo
index a9caed31bfe3479d71c4a7890282dd24ecf8ca55..f4c50be0a2fee08d8fdd8eef4eaaf1e05aefaa8a 100644
Binary files a/po/mt.gmo and b/po/mt.gmo differ
diff --git a/po/mt.po b/po/mt.po
index bd52aa5e8c34eb2fd62914429eebca686e76cd9b..9d43124939a3b8ca06759f088da9609628168333 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: 2014-05-21 12:10+0200\n"
+"POT-Creation-Date: 2014-06-22 17:33+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"
@@ -302,6 +302,39 @@ msgstr "Problema biex nissettja input %d fuq apparat %s."
 msgid "Failed to change mute state for device '%s'."
 msgstr "Problema biex inġib signal strength fuq l-apparat '%s'."
 
+msgid "Failed to allocated required memory."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported input format"
+msgstr ""
+"Id-driver tal-apparat '%s' ma jissapportja l-ebda capture method mifhum."
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported output format"
+msgstr ""
+"Apparat li jaqra video input ma aċċettax is-settings ġodda tal-frame rate."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported input format"
+msgstr ""
+"Apparat li jaqra video input ma aċċettax is-settings ġodda tal-frame rate."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported output format"
+msgstr ""
+"Apparat li jaqra video input ma aċċettax is-settings ġodda tal-frame rate."
+
+msgid "Failed to allocate required memory."
+msgstr ""
+
+#, fuzzy
+msgid "Failed to start decoding thread."
+msgstr "Problem fid-decoding tal-istampa JPEG"
+
+msgid "Failed to process frame."
+msgstr ""
+
 #, c-format
 msgid ""
 "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if "
diff --git a/po/nb.gmo b/po/nb.gmo
index f01008f86e8d74b7e78570571dd8ac44992ebf5f..fed902763684623988d8d923f2f0cc70e59f49c3 100644
Binary files a/po/nb.gmo and b/po/nb.gmo differ
diff --git a/po/nb.po b/po/nb.po
index 41fc4cc3942b4a403a69a42650815728292d5538..dd0fde69581de5cb3535a21765be7d95bef5351b 100644
--- a/po/nb.po
+++ b/po/nb.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins-good 1.2.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-21 12:10+0200\n"
+"POT-Creation-Date: 2014-06-22 17:33+0200\n"
 "PO-Revision-Date: 2014-01-22 17:49+0100\n"
 "Last-Translator: Johnny A. Solbu <johnny@solbu.net>\n"
 "Language-Team: Norwegian Bokmaal <i18n-nb@lister.ping.uio.no>\n"
@@ -300,6 +300,35 @@ msgstr "Klarte ikke å sette inngang %d på enhet %s."
 msgid "Failed to change mute state for device '%s'."
 msgstr "Klarte ikke å endre dempe-modus for enheten «%s»."
 
+msgid "Failed to allocated required memory."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported input format"
+msgstr "Driveren av enheten «%s» støtter ikke IO metoden %d"
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported output format"
+msgstr "Videoenheten aksepterte ikke ny bildefrekvensinnstilling."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported input format"
+msgstr "Videoenheten aksepterte ikke ny bildefrekvensinnstilling."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported output format"
+msgstr "Videoenheten aksepterte ikke ny bildefrekvensinnstilling."
+
+msgid "Failed to allocate required memory."
+msgstr ""
+
+#, fuzzy
+msgid "Failed to start decoding thread."
+msgstr "Klarte ikke å dekode JPEG-bilde"
+
+msgid "Failed to process frame."
+msgstr ""
+
 #, c-format
 msgid ""
 "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if "
diff --git a/po/nl.gmo b/po/nl.gmo
index 741a49b4044a821d0fa2acada97c516af77acbca..b1cccca4aa89f6776a81482187ce8b250dc633f2 100644
Binary files a/po/nl.gmo and b/po/nl.gmo differ
diff --git a/po/nl.po b/po/nl.po
index c8024d8d135c910ddd8994d6e0cd2ad311a4ea20..3425c00744f69fa4f1fdca240ef3c497a954660c 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -1,13 +1,13 @@
-# translation of gst-plugins-good-1.1.4.nl.po to Dutch
+# translation of gst-plugins-good-1.3.2.nl.po to Dutch
 # This file is put in the public domain.
 #
-# Freek de Kruijf <f.de.kruijf@gmail.com>, 2007, 2008, 2009, 2010, 2011, 2012, 2013.
+# Freek de Kruijf <f.de.kruijf@gmail.com>, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014.
 msgid ""
 msgstr ""
-"Project-Id-Version: gst-plugins-good 1.1.4\n"
+"Project-Id-Version: gst-plugins-good 1.3.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-21 12:10+0200\n"
-"PO-Revision-Date: 2013-09-15 13:31+0200\n"
+"POT-Creation-Date: 2014-06-22 17:33+0200\n"
+"PO-Revision-Date: 2014-05-22 00:41+0200\n"
 "Last-Translator: Freek de Kruijf <f.de.kruijf@gmail.com>\n"
 "Language-Team: Dutch <vertaling@vrijschrift.org>\n"
 "Language: nl\n"
@@ -243,9 +243,9 @@ msgstr "Apparaat '%s' kan geen opname maken met %dx%d"
 msgid "Device '%s' cannot capture in the specified format"
 msgstr "Apparaat '%s' kan geen opname maken in het gespecificeerde formaat"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Device '%s' does support non-contiguous planes"
-msgstr "Apparaat '%s' ondersteunt het opnemen van video niet"
+msgstr "Apparaat '%s' ondersteunt niet-continue vlakken"
 
 #, c-format
 msgid "Could not get parameters on device '%s'"
@@ -254,30 +254,27 @@ msgstr "Kan de parameters op apparaat '%s' niet verkrijgen"
 msgid "Video device did not accept new frame rate setting."
 msgstr "Videoapparaat heeft de nieuwe frame-snelheid niet geaccepteerd."
 
-#, fuzzy
 msgid "Video device did not provide output format."
-msgstr "Videoapparaat heeft de nieuwe frame-snelheid niet geaccepteerd."
+msgstr "Videoapparaat leverde geen uitvoerformaat."
 
 msgid "Video device returned invalid dimensions."
-msgstr ""
+msgstr "Video-apparaat gaf ongeldige afmetingen terug."
 
-#, fuzzy
 msgid "Video devices uses an unsupported interlacing method."
-msgstr "Het stuurprogramma van apparaat '%s' ondersteunt de IO-methode %d niet"
+msgstr ""
+"Video-apparaat gebruikt een niet ondersteunde methode voor interlacing."
 
 msgid "Video devices uses an unsupported pixel format."
-msgstr ""
+msgstr "Video-apparaat gebruikt een niet ondersteund pixelformaat."
 
-#, fuzzy
 msgid "Failed to configure internal buffer pool."
-msgstr "Videoapparaat kon geen bufferpool aanmaken."
+msgstr "Instellen van interne bufferpool is mislukt."
 
-#, fuzzy
 msgid "Video device did not suggest any buffer size."
-msgstr "Videoapparaat kon geen bufferpool aanmaken."
+msgstr "Videoapparaat gaf geen suggestie voor een buffergrootte."
 
 msgid "No downstream pool to import from."
-msgstr ""
+msgstr "Geen downstream pool om van te importeren."
 
 #, c-format
 msgid "Failed to get settings of tuner %d on device '%s'."
@@ -303,6 +300,35 @@ msgstr "Kan invoer %d op apparaat '%s' niet instellen."
 msgid "Failed to change mute state for device '%s'."
 msgstr "De gedempte status van apparaat '%s' wijzigen is mislukt."
 
+msgid "Failed to allocated required memory."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported input format"
+msgstr "Video-apparaat gebruikt een niet ondersteund pixelformaat."
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported output format"
+msgstr "Video-apparaat gebruikt een niet ondersteund pixelformaat."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported input format"
+msgstr "Video-apparaat gebruikt een niet ondersteund pixelformaat."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported output format"
+msgstr "Video-apparaat gebruikt een niet ondersteund pixelformaat."
+
+msgid "Failed to allocate required memory."
+msgstr ""
+
+#, fuzzy
+msgid "Failed to start decoding thread."
+msgstr "Kan de JPEG-afbeelding niet decoderen"
+
+msgid "Failed to process frame."
+msgstr ""
+
 #, c-format
 msgid ""
 "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if "
@@ -347,13 +373,13 @@ msgstr "Apparaat '%s' is geen opnameapparaat."
 msgid "Device '%s' is not a output device."
 msgstr "Apparaat '%s' is geen uitvoerapparaat."
 
-#, fuzzy, c-format
+#, c-format
 msgid "Device '%s' is not a M2M device."
-msgstr "Apparaat '%s' is geen uitvoerapparaat."
+msgstr "Apparaat '%s' is geen M2M-apparaat."
 
-#, fuzzy, c-format
+#, c-format
 msgid "Could not dup device '%s' for reading and writing."
-msgstr "Kan apparaat '%s' niet openen voor lezen en schrijven."
+msgstr "Kan geen dup doen op apparaat '%s' voor lezen en schrijven."
 
 #, c-format
 msgid "Failed to set norm for device '%s'."
diff --git a/po/or.gmo b/po/or.gmo
index 436d886bb4cebb167ba675cd1506d63cb9113849..720af411ed10e275fa1aff475294ff4f2b78595e 100644
Binary files a/po/or.gmo and b/po/or.gmo differ
diff --git a/po/or.po b/po/or.po
index c5b0ea1ef589a3f326b97e8caa4641d88c37d203..5cc2276dd0cedb4a46434b7ed64f92d803555d38 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: 2014-05-21 12:10+0200\n"
+"POT-Creation-Date: 2014-06-22 17:33+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"
@@ -293,6 +293,34 @@ msgstr "\"%s\" ଧ୍ବନି ଯନ୍ତ୍ର ବନ୍ଦ କରିହେ
 msgid "Failed to change mute state for device '%s'."
 msgstr "\"%s\" ଯନ୍ତ୍ରରୁ ଅସ୍ଥାୟୀ ସଞ୍ଚୟ ସ୍ଥାନ ଆଣିହେଲା ନାହିଁ."
 
+msgid "Failed to allocated required memory."
+msgstr ""
+
+#, c-format
+msgid "Converter on device %s has no supported input format"
+msgstr ""
+
+#, c-format
+msgid "Converter on device %s has no supported output format"
+msgstr ""
+
+#, c-format
+msgid "Encoder on device %s has no supported input format"
+msgstr ""
+
+#, c-format
+msgid "Encoder on device %s has no supported output format"
+msgstr ""
+
+msgid "Failed to allocate required memory."
+msgstr ""
+
+msgid "Failed to start decoding thread."
+msgstr ""
+
+msgid "Failed to process frame."
+msgstr ""
+
 #, c-format
 msgid ""
 "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if "
diff --git a/po/pl.gmo b/po/pl.gmo
index 287116282dd4b2c7425b7a9f72447e92aa25c3e5..60d02bf2d1ee340c15b3bf52f98cc7b856f97d9b 100644
Binary files a/po/pl.gmo and b/po/pl.gmo differ
diff --git a/po/pl.po b/po/pl.po
index 831975eff45bfa621252e859663b5d080b83a982..ee30221c01827135f1b89775ac59cb0e713cbd5f 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -1,13 +1,13 @@
 # Polish translation for gst-plugins-good.
 # This file is distributed under the same license as the gst-plugins-good package.
-# Jakub Bogusz <qboosh@pld-linux.org>, 2007-2013.
+# Jakub Bogusz <qboosh@pld-linux.org>, 2007-2014.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: gst-plugins-good 1.1.4\n"
+"Project-Id-Version: gst-plugins-good 1.3.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-21 12:10+0200\n"
-"PO-Revision-Date: 2013-09-15 11:26+0200\n"
+"POT-Creation-Date: 2014-06-22 17:33+0200\n"
+"PO-Revision-Date: 2014-05-22 18:29+0200\n"
 "Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n"
 "Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
 "Language: pl\n"
@@ -240,9 +240,9 @@ msgstr "Urządzenie '%s' nie potrafi przechwytywać obrazu %dx%d"
 msgid "Device '%s' cannot capture in the specified format"
 msgstr "Urządzenie '%s' nie potrafi przechwytywać obrazu w podanym formacie"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Device '%s' does support non-contiguous planes"
-msgstr "Urządzenie '%s' nie obsługuje przechwytywania obrazu"
+msgstr "Urządzenie '%s' obsługuje nieciągłe powierzchnie"
 
 #, c-format
 msgid "Could not get parameters on device '%s'"
@@ -252,31 +252,26 @@ msgid "Video device did not accept new frame rate setting."
 msgstr ""
 "Urządzenie obrazu nie przyjęło nowego ustawienia częstotliwości klatek."
 
-#, fuzzy
 msgid "Video device did not provide output format."
-msgstr ""
-"Urządzenie obrazu nie przyjęło nowego ustawienia częstotliwości klatek."
+msgstr "Urządzenie obrazu nie przekazało formatu wyjściowego."
 
 msgid "Video device returned invalid dimensions."
-msgstr ""
+msgstr "Urządzenie obrazu zwróciło błędne wymiary."
 
-#, fuzzy
 msgid "Video devices uses an unsupported interlacing method."
-msgstr "Sterownik urządzenia '%s' nie obsługuje metody we/wy %d"
+msgstr "Urzędzenie obrazu wykorzystuje nie obsługiwany sposób przeplotu."
 
 msgid "Video devices uses an unsupported pixel format."
-msgstr ""
+msgstr "Urządzenie obrazu wykorzystuje nie obsługiwany format piksela."
 
-#, fuzzy
 msgid "Failed to configure internal buffer pool."
-msgstr "Urzędzenie obrazu nie mogło utworzyć puli buforów."
+msgstr "Nie udało się skonfigurować wewnętrznej puli buforów."
 
-#, fuzzy
 msgid "Video device did not suggest any buffer size."
-msgstr "Urzędzenie obrazu nie mogło utworzyć puli buforów."
+msgstr "Urzędzenie obrazu nie zasugerowało żadnego rozmiaru bufora."
 
 msgid "No downstream pool to import from."
-msgstr ""
+msgstr "Brak oddolnej puli do zaimportowania."
 
 #, c-format
 msgid "Failed to get settings of tuner %d on device '%s'."
@@ -302,6 +297,35 @@ msgstr "Nie udało się ustawić wejścia %d urządzenia %s."
 msgid "Failed to change mute state for device '%s'."
 msgstr "Nie udało się zmienić stanu wyciszenia dla urządzenia '%s'."
 
+msgid "Failed to allocated required memory."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported input format"
+msgstr "Urządzenie obrazu wykorzystuje nie obsługiwany format piksela."
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported output format"
+msgstr "Urządzenie obrazu wykorzystuje nie obsługiwany format piksela."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported input format"
+msgstr "Urządzenie obrazu wykorzystuje nie obsługiwany format piksela."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported output format"
+msgstr "Urządzenie obrazu wykorzystuje nie obsługiwany format piksela."
+
+msgid "Failed to allocate required memory."
+msgstr ""
+
+#, fuzzy
+msgid "Failed to start decoding thread."
+msgstr "Nie udało się zdekodować obrazu JPEG"
+
+msgid "Failed to process frame."
+msgstr ""
+
 #, c-format
 msgid ""
 "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if "
@@ -346,13 +370,13 @@ msgstr "UrzÄ…dzenie '%s' nie jest urzÄ…dzeniem przechwytujÄ…cym."
 msgid "Device '%s' is not a output device."
 msgstr "Urządzenie '%s' nie jest urządzeniem wyjściowym."
 
-#, fuzzy, c-format
+#, c-format
 msgid "Device '%s' is not a M2M device."
-msgstr "Urządzenie '%s' nie jest urządzeniem wyjściowym."
+msgstr "UrzÄ…dzenie '%s' nie jest urzÄ…dzeniem M2M."
 
-#, fuzzy, c-format
+#, c-format
 msgid "Could not dup device '%s' for reading and writing."
-msgstr "Nie udało się otworzyć urządzenia '%s' do odczytu i zapisu."
+msgstr "Nie udało się wykonać dup urządzenia '%s' do odczytu i zapisu."
 
 #, c-format
 msgid "Failed to set norm for device '%s'."
diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo
index d2b1905bb9b839db553d6b93aae31403998f16f6..3bdf9ee669f5ff1a571b3beeaf9a23d9c5be00e8 100644
Binary files a/po/pt_BR.gmo and b/po/pt_BR.gmo differ
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 6f1685300ea24ee2cc3a6b26e9e5c50029a13ff4..c9c1cbc5ae6668a7beb96e5e7f30540ea9cbcbe4 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins-good-1.2.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-21 12:10+0200\n"
+"POT-Creation-Date: 2014-06-22 17:33+0200\n"
 "PO-Revision-Date: 2013-12-29 17:48-0200\n"
 "Last-Translator: Fabrício Godoy <skarllot@gmail.com>\n"
 "Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge."
@@ -311,6 +311,35 @@ msgstr "Falha ao definir a entrada %d no dispositivo %s."
 msgid "Failed to change mute state for device '%s'."
 msgstr "Falha ao alternar entre com e sem áudio para o dispositivo \"%s\"."
 
+msgid "Failed to allocated required memory."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported input format"
+msgstr "O driver do dispositivo \"%s\" não tem suporte ao método %d de E/S"
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported output format"
+msgstr "O dispositivo de vídeo não aceita definir uma nova taxa de quadros."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported input format"
+msgstr "O dispositivo de vídeo não aceita definir uma nova taxa de quadros."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported output format"
+msgstr "O dispositivo de vídeo não aceita definir uma nova taxa de quadros."
+
+msgid "Failed to allocate required memory."
+msgstr ""
+
+#, fuzzy
+msgid "Failed to start decoding thread."
+msgstr "Falha ao decodificar a imagem JPEG"
+
+msgid "Failed to process frame."
+msgstr ""
+
 #, c-format
 msgid ""
 "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if "
diff --git a/po/ro.gmo b/po/ro.gmo
index 62b216a4b0caedd77791c3b4055a54096efc243d..2cbc8b60f183daac71b60c7e3c23e0733592e11c 100644
Binary files a/po/ro.gmo and b/po/ro.gmo differ
diff --git a/po/ro.po b/po/ro.po
index 9821052d73d005c27b97d878eda0887cd0538dc3..22f86a331a6025bafd9ebaccd22ec2e42ca7dbb3 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: 2014-05-21 12:10+0200\n"
+"POT-Creation-Date: 2014-06-22 17:33+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"
@@ -315,6 +315,40 @@ msgstr "Definirea valorii %d pentru dispozitivul „%s” a eșuat."
 msgid "Failed to change mute state for device '%s'."
 msgstr "Obținerea nivelului semnalului pentru dispozitivul „%s” a eșuat."
 
+msgid "Failed to allocated required memory."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported input format"
+msgstr ""
+"Driverul pentru dispozitivul „%s” nu suport nici o metodă de captură "
+"cunoscută."
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported output format"
+msgstr ""
+"Dispozitivul de intrare video nu a acceptat noua configurare de rate cadre."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported input format"
+msgstr ""
+"Dispozitivul de intrare video nu a acceptat noua configurare de rate cadre."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported output format"
+msgstr ""
+"Dispozitivul de intrare video nu a acceptat noua configurare de rate cadre."
+
+msgid "Failed to allocate required memory."
+msgstr ""
+
+#, fuzzy
+msgid "Failed to start decoding thread."
+msgstr "Nu s-a putut decoda imaginea JPEG"
+
+msgid "Failed to process frame."
+msgstr ""
+
 #, c-format
 msgid ""
 "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if "
diff --git a/po/ru.gmo b/po/ru.gmo
index def8c09f2a750230bc2d1eba0bad4510333af7d6..9c45cae2aed9e5fe0ba396ec58eb462c549dd143 100644
Binary files a/po/ru.gmo and b/po/ru.gmo differ
diff --git a/po/ru.po b/po/ru.po
index 6176f554250a781ceee1556dfaff2e77a4f1fad7..56e254f8974536a05eaedc32858e8bdbbfd746ec 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -3,21 +3,21 @@
 #
 # Артём Попов <artfwo@gmail.com>, 2009.
 # Pavel Maryanov <acid_jack@ukr.net>, 2009.
-# Yuri Kozlov <yuray@komyakino.ru>, 2011, 2012, 2013.
+# Yuri Kozlov <yuray@komyakino.ru>, 2011, 2012, 2013, 2014.
 # Pavel Maryanov <acid@jack.kiev.ua>, 2013.
 msgid ""
 msgstr ""
-"Project-Id-Version: gst-plugins-good 1.2.1\n"
+"Project-Id-Version: gst-plugins-good 1.3.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-21 12:10+0200\n"
-"PO-Revision-Date: 2013-12-08 12:55+0400\n"
+"POT-Creation-Date: 2014-06-22 17:33+0200\n"
+"PO-Revision-Date: 2014-05-22 19:53+0400\n"
 "Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n"
 "Language-Team: Russian <gnu@mx.ru>\n"
 "Language: ru\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Lokalize 1.4\n"
+"X-Generator: Lokalize 1.5\n"
 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
 "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 
@@ -251,9 +251,10 @@ msgstr "Устройство «%s» не может осуществлять з
 msgid "Device '%s' cannot capture in the specified format"
 msgstr "Устройство «%s» не может осуществлять захват в указанном формате"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Device '%s' does support non-contiguous planes"
-msgstr "Устройство «%s» не поддерживает захват видео"
+msgstr ""
+"Устройство «%s» поддерживает прерывистые матрицы (non-contiguous planes)"
 
 #, c-format
 msgid "Could not get parameters on device '%s'"
@@ -262,30 +263,26 @@ msgstr "Не удалось получить параметры устройст
 msgid "Video device did not accept new frame rate setting."
 msgstr "Видео-устройство не приняло новое значение настройки кадровой частоты."
 
-#, fuzzy
 msgid "Video device did not provide output format."
-msgstr "Видео-устройство не приняло новое значение настройки кадровой частоты."
+msgstr "Видео-устройство не предоставило выходной формат."
 
 msgid "Video device returned invalid dimensions."
-msgstr ""
+msgstr "Видео-устройство вернуло некорректные размеры."
 
-#, fuzzy
 msgid "Video devices uses an unsupported interlacing method."
-msgstr "Драйвер устройства «%s» не поддерживает метод ввода-вывода %d"
+msgstr "Видео-устройства используют неподдерживаемый метод черезстрочности."
 
 msgid "Video devices uses an unsupported pixel format."
-msgstr ""
+msgstr "Видео-устройства используют неподдерживаемый формат пикселей."
 
-#, fuzzy
 msgid "Failed to configure internal buffer pool."
-msgstr "Видео-устройство не может создать буферный пул."
+msgstr "Ошибка при настройке внутреннего буферного пула."
 
-#, fuzzy
 msgid "Video device did not suggest any buffer size."
-msgstr "Видео-устройство не может создать буферный пул."
+msgstr "Видео-устройство не предложило какой-либо размер буфера."
 
 msgid "No downstream pool to import from."
-msgstr ""
+msgstr "Неоткуда импортировать пул нисходящего потока."
 
 #, c-format
 msgid "Failed to get settings of tuner %d on device '%s'."
@@ -311,6 +308,35 @@ msgstr "Не удалось выбрать вход %d для устройств
 msgid "Failed to change mute state for device '%s'."
 msgstr "Не удалось изменить состояние приглушения для устройства «%s»."
 
+msgid "Failed to allocated required memory."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported input format"
+msgstr "Видео-устройства используют неподдерживаемый формат пикселей."
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported output format"
+msgstr "Видео-устройства используют неподдерживаемый формат пикселей."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported input format"
+msgstr "Видео-устройства используют неподдерживаемый формат пикселей."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported output format"
+msgstr "Видео-устройства используют неподдерживаемый формат пикселей."
+
+msgid "Failed to allocate required memory."
+msgstr ""
+
+#, fuzzy
+msgid "Failed to start decoding thread."
+msgstr "Не удалось декодировать JPEG-изображение"
+
+msgid "Failed to process frame."
+msgstr ""
+
 #, c-format
 msgid ""
 "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if "
@@ -355,13 +381,13 @@ msgstr "Устройство «%s» не является устройством
 msgid "Device '%s' is not a output device."
 msgstr "Устройство «%s» не является устройством вывода."
 
-#, fuzzy, c-format
+#, c-format
 msgid "Device '%s' is not a M2M device."
-msgstr "Устройство «%s» не является устройством вывода."
+msgstr "Устройство «%s» не является устройством M2M."
 
-#, fuzzy, c-format
+#, c-format
 msgid "Could not dup device '%s' for reading and writing."
-msgstr "Не удалось открыть устройство «%s» для чтения и записи."
+msgstr "Не удалось сделать дубликат устройства «%s» для чтения и записи."
 
 #, c-format
 msgid "Failed to set norm for device '%s'."
diff --git a/po/sk.gmo b/po/sk.gmo
index 2f9cedf8504cc30dcf16c41204d555396fd906a9..9c7fc801f96ef1fa9fcd746826c11564838183e3 100644
Binary files a/po/sk.gmo and b/po/sk.gmo differ
diff --git a/po/sk.po b/po/sk.po
index 3f37ae0cb8bc0761a9fbdede28aef078d4ab4116..c85bc58c45b696381262d19d723847fee88e2ef3 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins-good 1.2.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-21 12:10+0200\n"
+"POT-Creation-Date: 2014-06-22 17:33+0200\n"
 "PO-Revision-Date: 2014-01-30 11:08+0100\n"
 "Last-Translator: Peter Tuharsky <tuharsky@misbb.sk>\n"
 "Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"
@@ -303,6 +303,35 @@ msgstr "Nepodarilo sa nastaviť vstup %d na zariadení %s."
 msgid "Failed to change mute state for device '%s'."
 msgstr "Nepodarilo sa zmeniť stav stlmenia pre zariadenie '%s'."
 
+msgid "Failed to allocated required memory."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported input format"
+msgstr "Tento ovládač zariadenia '%s' nepodporuje IO metódu %d"
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported output format"
+msgstr "Video zariadenie odmietlo nové nastavenie frekvencie snímok."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported input format"
+msgstr "Video zariadenie odmietlo nové nastavenie frekvencie snímok."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported output format"
+msgstr "Video zariadenie odmietlo nové nastavenie frekvencie snímok."
+
+msgid "Failed to allocate required memory."
+msgstr ""
+
+#, fuzzy
+msgid "Failed to start decoding thread."
+msgstr "Nepodarilo sa dekódovať obrázok JPEG"
+
+msgid "Failed to process frame."
+msgstr ""
+
 #, c-format
 msgid ""
 "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if "
diff --git a/po/sl.gmo b/po/sl.gmo
index a3ae907f809a6d70df9dba887c9c74d1fccc40ef..dd91019bdb92a0376dd90938c94fef83d40685c0 100644
Binary files a/po/sl.gmo and b/po/sl.gmo differ
diff --git a/po/sl.po b/po/sl.po
index a581fed7b941989b574e6d6525e5468d6a04dca3..402a1c3b14fc3f432a9f0f4697327f3d504b89d4 100644
--- a/po/sl.po
+++ b/po/sl.po
@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gst-plugins-good-1.2.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-21 12:10+0200\n"
+"POT-Creation-Date: 2014-06-22 17:33+0200\n"
 "PO-Revision-Date: 2014-04-09 22:52+0100\n"
 "Last-Translator: Klemen Košir <klemen913@gmail.com>\n"
 "Language-Team: Slovenian <translation-team-sl@lists.sourceforge.net>\n"
@@ -308,6 +308,35 @@ msgid "Failed to change mute state for device '%s'."
 msgstr ""
 "Med nastavljanjem stanja glasnosti na napravi \"%s\" je prišlo do napake."
 
+msgid "Failed to allocated required memory."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported input format"
+msgstr "Gonilnik naprave \"%s\" ne podpira nobenega načina I/O %d."
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported output format"
+msgstr "Napravi ni mogoče določiti novih nastavitev hitrosti sličic."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported input format"
+msgstr "Napravi ni mogoče določiti novih nastavitev hitrosti sličic."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported output format"
+msgstr "Napravi ni mogoče določiti novih nastavitev hitrosti sličic."
+
+msgid "Failed to allocate required memory."
+msgstr ""
+
+#, fuzzy
+msgid "Failed to start decoding thread."
+msgstr "Napaka med dekodiranjem JPEG slike"
+
+msgid "Failed to process frame."
+msgstr ""
+
 #, c-format
 msgid ""
 "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if "
diff --git a/po/sq.gmo b/po/sq.gmo
index 6e62dd0817c01d29eeda9a6066d149bf380a7e71..f04bbc3d47f6a9a4dd436b2504281c8db8183e34 100644
Binary files a/po/sq.gmo and b/po/sq.gmo differ
diff --git a/po/sq.po b/po/sq.po
index 2061e2be6daa9f0fbd2c60236e9d48bef58fc4fa..44c4972fe88c519fb9aa541418ef2c0be8731114 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: 2014-05-21 12:10+0200\n"
+"POT-Creation-Date: 2014-06-22 17:33+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"
@@ -289,6 +289,34 @@ msgstr "E pamundur mbyllja e dispozitivit audio \"%s\"."
 msgid "Failed to change mute state for device '%s'."
 msgstr "E pamundur marrja e buffers nga dispozitivi \"%s\"."
 
+msgid "Failed to allocated required memory."
+msgstr ""
+
+#, c-format
+msgid "Converter on device %s has no supported input format"
+msgstr ""
+
+#, c-format
+msgid "Converter on device %s has no supported output format"
+msgstr ""
+
+#, c-format
+msgid "Encoder on device %s has no supported input format"
+msgstr ""
+
+#, c-format
+msgid "Encoder on device %s has no supported output format"
+msgstr ""
+
+msgid "Failed to allocate required memory."
+msgstr ""
+
+msgid "Failed to start decoding thread."
+msgstr ""
+
+msgid "Failed to process frame."
+msgstr ""
+
 #, c-format
 msgid ""
 "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if "
diff --git a/po/sr.gmo b/po/sr.gmo
index 7c05ceb70be3eb5be2da0c49b494b2e9613ac68c..82a13af2a7d42bd07dcf7050f957566d0e3b875b 100644
Binary files a/po/sr.gmo and b/po/sr.gmo differ
diff --git a/po/sr.po b/po/sr.po
index 0658a7cdbdfa44c7921ba61e5f2094d9b1c7b689..441ecf23359a86a2b00b890938344670423f4b9e 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -1,14 +1,14 @@
 # Serbian translation of gst-plugins
-# Copyright (C) 2004 Free Software Foundation, Inc.
+# Copyright (C) 2014 Free Software Foundation, Inc.
 # This file is distributed under the same license as the gst-plugins-good package.
 # Danilo Segan <dsegan@gmx.net>, 2004.
-# Мирослав Николић <miroslavnikolic@rocketmail.com>, 2011, 2013.
+# Мирослав Николић <miroslavnikolic@rocketmail.com>, 2011-2014.
 msgid ""
 msgstr ""
-"Project-Id-Version: gst-plugins-good-1.1.4\n"
+"Project-Id-Version: gst-plugins-good-1.3.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-21 12:10+0200\n"
-"PO-Revision-Date: 2013-10-04 12:15+0200\n"
+"POT-Creation-Date: 2014-06-22 17:33+0200\n"
+"PO-Revision-Date: 2014-06-18 19:56+0200\n"
 "Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
 "Language-Team: Serbian <(nothing)>\n"
 "Language: sr\n"
@@ -17,7 +17,6 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
 "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Project-Style: gnome\n"
 
 msgid "Jack server not found"
 msgstr "Нисам пронашао сервер утичнице"
@@ -244,9 +243,9 @@ msgstr "Уређај „%s“ не може да снима на %dx%d"
 msgid "Device '%s' cannot capture in the specified format"
 msgstr "Уређај „%s“ не може да снима у наведеном запису"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Device '%s' does support non-contiguous planes"
-msgstr "Уређај „%s“ не подржава видео снимање"
+msgstr "Уређај „%s“ не подржава не-непрекидне равни"
 
 #, c-format
 msgid "Could not get parameters on device '%s'"
@@ -255,30 +254,26 @@ msgstr "Не могу да добавим параметре на уређају
 msgid "Video device did not accept new frame rate setting."
 msgstr "Видео уређај не прихвата нове поставке протока кадрова."
 
-#, fuzzy
 msgid "Video device did not provide output format."
-msgstr "Видео уређај не прихвата нове поставке протока кадрова."
+msgstr "Видео уређај не обезбеђује излазни запис."
 
 msgid "Video device returned invalid dimensions."
-msgstr ""
+msgstr "Видео уређај је вратио неисправне димензије."
 
-#, fuzzy
 msgid "Video devices uses an unsupported interlacing method."
-msgstr "Управљачки програм уређаја „%s“ не подржава УИ начин %d"
+msgstr "Видео уређаји користе неподржани метод преплитања."
 
 msgid "Video devices uses an unsupported pixel format."
-msgstr ""
+msgstr "Видео уређаји користе неподржани запис сличице."
 
-#, fuzzy
 msgid "Failed to configure internal buffer pool."
-msgstr "Видео уређај не може да направи смештај међумеморије."
+msgstr "Нисам успео да подесим унутрашњи смештај међумеморије."
 
-#, fuzzy
 msgid "Video device did not suggest any buffer size."
-msgstr "Видео уређај не може да направи смештај међумеморије."
+msgstr "Видео уређај не предлаже величину међумеморије."
 
 msgid "No downstream pool to import from."
-msgstr ""
+msgstr "Нема смештаја доњег тока из кога увести."
 
 #, c-format
 msgid "Failed to get settings of tuner %d on device '%s'."
@@ -304,6 +299,35 @@ msgstr "Нисам успео да подесим улаз %d на уређај
 msgid "Failed to change mute state for device '%s'."
 msgstr "Нисам успео да изменим стање утишаности за уређај „%s“."
 
+msgid "Failed to allocated required memory."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported input format"
+msgstr "Видео уређаји користе неподржани запис сличице."
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported output format"
+msgstr "Видео уређаји користе неподржани запис сличице."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported input format"
+msgstr "Видео уређаји користе неподржани запис сличице."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported output format"
+msgstr "Видео уређаји користе неподржани запис сличице."
+
+msgid "Failed to allocate required memory."
+msgstr ""
+
+#, fuzzy
+msgid "Failed to start decoding thread."
+msgstr "Нисам успео да декодирам ЈПЕГ слику"
+
+msgid "Failed to process frame."
+msgstr ""
+
 #, c-format
 msgid ""
 "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if "
@@ -348,13 +372,13 @@ msgstr "Уређај „%s“ није уређај за снимање."
 msgid "Device '%s' is not a output device."
 msgstr "Уређај „%s“ није излазни уређај."
 
-#, fuzzy, c-format
+#, c-format
 msgid "Device '%s' is not a M2M device."
-msgstr "Уређај „%s“ није излазни уређај."
+msgstr "Уређај „%s“ није М2М уређај."
 
-#, fuzzy, c-format
+#, c-format
 msgid "Could not dup device '%s' for reading and writing."
-msgstr "Не могу да покренем уређај „%s“ ради читања и уписа."
+msgstr "Не могу да удвостручим уређај „%s“ ради читања и уписа."
 
 #, c-format
 msgid "Failed to set norm for device '%s'."
diff --git a/po/sv.gmo b/po/sv.gmo
index 4d4fcb67f8057fbec55a735935b121bfe2609ade..954a1b38fb3d8becc02041cac625376b439d0089 100644
Binary files a/po/sv.gmo and b/po/sv.gmo differ
diff --git a/po/sv.po b/po/sv.po
index 4a36f3eedc78d2d3ee4a367219f7b4fcc47178d9..2e2e963ec799334659a1bf48e6ef9d44272f64e6 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: 2014-05-21 12:10+0200\n"
+"POT-Creation-Date: 2014-06-22 17:33+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"
@@ -306,6 +306,35 @@ msgstr "Kunde inte ställa in ingång %d på enheten %s."
 msgid "Failed to change mute state for device '%s'."
 msgstr "Misslyckades med att få tag på signalstyrka för enheten \"%s\"."
 
+msgid "Failed to allocated required memory."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported input format"
+msgstr "Drivrutinen för enheten \"%s\" saknar stöd för någon känd fångstmetod."
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported output format"
+msgstr "Videoingångsenheten accepterade inte ny inställning för bildfrekvens."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported input format"
+msgstr "Videoingångsenheten accepterade inte ny inställning för bildfrekvens."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported output format"
+msgstr "Videoingångsenheten accepterade inte ny inställning för bildfrekvens."
+
+msgid "Failed to allocate required memory."
+msgstr ""
+
+#, fuzzy
+msgid "Failed to start decoding thread."
+msgstr "Misslyckades med att avkoda JPEG-bild"
+
+msgid "Failed to process frame."
+msgstr ""
+
 #, c-format
 msgid ""
 "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if "
diff --git a/po/tr.gmo b/po/tr.gmo
index bb266c554a937c82597962b4f4974262231c1d38..b9749c1a825fa4ca7e207bc08a2ca86f5d5b37c1 100644
Binary files a/po/tr.gmo and b/po/tr.gmo differ
diff --git a/po/tr.po b/po/tr.po
index 13d74624774ff1ccdc070eb9d43faadb6bac1358..cad211b75aef8e9400b4142165ae67d83bc61e01 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: 2014-05-21 12:10+0200\n"
+"POT-Creation-Date: 2014-06-22 17:33+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"
@@ -299,6 +299,35 @@ msgstr "Giriş değeri olarak bu %d şu aygıtta %s ayarlanamadı."
 msgid "Failed to change mute state for device '%s'."
 msgstr "Aygıt '%s' susturulmaya ayarlanamadı."
 
+msgid "Failed to allocated required memory."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported input format"
+msgstr "Bu aygıtın sürücüsü '%s' IO yöntemini desteklemiyor %d"
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported output format"
+msgstr "Bu aygıtın sürücüsü '%s' IO yöntemini desteklemiyor %d"
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported input format"
+msgstr "Bu aygıtın sürücüsü '%s' IO yöntemini desteklemiyor %d"
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported output format"
+msgstr "Bu aygıtın sürücüsü '%s' IO yöntemini desteklemiyor %d"
+
+msgid "Failed to allocate required memory."
+msgstr ""
+
+#, fuzzy
+msgid "Failed to start decoding thread."
+msgstr "JPEG görüntüsünü çözümlenemedi"
+
+msgid "Failed to process frame."
+msgstr ""
+
 #, c-format
 msgid ""
 "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if "
diff --git a/po/uk.gmo b/po/uk.gmo
index 8d0b02895c913e83216a421c73d2bc5782840471..b38ff02506d5fe2b367ea43e18ea5fdb0e258052 100644
Binary files a/po/uk.gmo and b/po/uk.gmo differ
diff --git a/po/uk.po b/po/uk.po
index 5f8081199738fe3114818f2093f6e0d841ef5b89..664b6f3e2cc9d3bcd290c8646701c1a09c1de2b0 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -3,13 +3,13 @@
 # This file is distributed under the same license as the gst-plugins-good package.
 #
 # Maxim V. Dziumanenko <dziumanenko@gmail.com>, 2004-2007.
-# Yuri Chornoivan <yurchor@ukr.net>, 2011, 2012, 2013.
+# Yuri Chornoivan <yurchor@ukr.net>, 2011, 2012, 2013, 2014.
 msgid ""
 msgstr ""
-"Project-Id-Version: gst-plugins-good 1.1.4\n"
+"Project-Id-Version: gst-plugins-good 1.3.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2014-05-21 12:10+0200\n"
-"PO-Revision-Date: 2013-09-14 22:23+0300\n"
+"POT-Creation-Date: 2014-06-22 17:33+0200\n"
+"PO-Revision-Date: 2014-05-22 07:28+0300\n"
 "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
 "Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>\n"
 "Language: uk\n"
@@ -251,9 +251,10 @@ msgstr "Пристрій \"%s\" не здатний захоплювати ві
 msgid "Device '%s' cannot capture in the specified format"
 msgstr "Пристрій \"%s\" не здатний захоплювати відео у вказаному форматі"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Device '%s' does support non-contiguous planes"
-msgstr "Пристрій «%s» не може захоплювати відеодані"
+msgstr ""
+"У пристрої «%s» не передбачено можливості використання розривних площин"
 
 #, c-format
 msgid "Could not get parameters on device '%s'"
@@ -263,31 +264,26 @@ msgid "Video device did not accept new frame rate setting."
 msgstr ""
 "Відеопристроєм не підтримується нове значення параметра частоти кадрів."
 
-#, fuzzy
 msgid "Video device did not provide output format."
-msgstr ""
-"Відеопристроєм не підтримується нове значення параметра частоти кадрів."
+msgstr "Відеопристроєм не надано даних щодо формату виведення."
 
 msgid "Video device returned invalid dimensions."
-msgstr ""
+msgstr "Відеопристроєм повернуто некоректні розмірності."
 
-#, fuzzy
 msgid "Video devices uses an unsupported interlacing method."
-msgstr "Драйвер пристрою «%s» не підтримує метод введення-виведення даних %d"
+msgstr "Драйвер пристрою «%s» не підтримує метод черезрядкового виведення."
 
 msgid "Video devices uses an unsupported pixel format."
-msgstr ""
+msgstr "Відеопристрій використовує непідтримуваний формат пікселів."
 
-#, fuzzy
 msgid "Failed to configure internal buffer pool."
-msgstr "Відеопристрою не вдалося створити сховище буферизованих даних."
+msgstr "Не вдалося налаштувати вбудований буфер."
 
-#, fuzzy
 msgid "Video device did not suggest any buffer size."
-msgstr "Відеопристрою не вдалося створити сховище буферизованих даних."
+msgstr "Відеопристроєм не запропоновано жодного розміру буфера."
 
 msgid "No downstream pool to import from."
-msgstr ""
+msgstr "Немає підлеглого буфера для імпортування даних."
 
 #, c-format
 msgid "Failed to get settings of tuner %d on device '%s'."
@@ -313,6 +309,35 @@ msgstr "Не вдалося встановити ввід %d пристрою «
 msgid "Failed to change mute state for device '%s'."
 msgstr "Не вдалося змінити стан вимикання звуку на пристрої «%s»."
 
+msgid "Failed to allocated required memory."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported input format"
+msgstr "Відеопристрій використовує непідтримуваний формат пікселів."
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported output format"
+msgstr "Відеопристрій використовує непідтримуваний формат пікселів."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported input format"
+msgstr "Відеопристрій використовує непідтримуваний формат пікселів."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported output format"
+msgstr "Відеопристрій використовує непідтримуваний формат пікселів."
+
+msgid "Failed to allocate required memory."
+msgstr ""
+
+#, fuzzy
+msgid "Failed to start decoding thread."
+msgstr "Помилка при декодуванні зображення JPEG"
+
+msgid "Failed to process frame."
+msgstr ""
+
 #, c-format
 msgid ""
 "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if "
@@ -357,13 +382,13 @@ msgstr "Пристрій «%s» не є пристроєм захоплення.
 msgid "Device '%s' is not a output device."
 msgstr "Пристрій «%s» не є пристроєм виведення даних."
 
-#, fuzzy, c-format
+#, c-format
 msgid "Device '%s' is not a M2M device."
-msgstr "Пристрій «%s» не є пристроєм виведення даних."
+msgstr "Пристрій «%s» не є пристроєм M2M."
 
-#, fuzzy, c-format
+#, c-format
 msgid "Could not dup device '%s' for reading and writing."
-msgstr "Не вдалося відкрити пристрій «%s» для читання та запису."
+msgstr "Не вдалося здублювати пристрій «%s» для читання та запису."
 
 #, c-format
 msgid "Failed to set norm for device '%s'."
diff --git a/po/vi.gmo b/po/vi.gmo
index fc8ae9409fff89081a9b65189eef37e7a62ef311..40bb2aed26d1f5ec1b2f9cc8310f9f76e964f436 100644
Binary files a/po/vi.gmo and b/po/vi.gmo differ
diff --git a/po/vi.po b/po/vi.po
index 2172b42a0499b640acdcc6db4d949f5526844e68..43fb4cc6c07d20c91740b802fcb74dfa17e25287 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: 2014-05-21 12:10+0200\n"
+"POT-Creation-Date: 2014-06-22 17:33+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"
@@ -309,6 +309,35 @@ msgstr "Gặp lỗi khi đặt dữ liệu nhập %d vào thiết bị “%s”.
 msgid "Failed to change mute state for device '%s'."
 msgstr "Gặp lỗi khi thay đổi trạng thái ngắt tiếng cho thiết bị “%s”."
 
+msgid "Failed to allocated required memory."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported input format"
+msgstr "Trình điều khiển của thiết bị “%s” không hỗ trợ phương pháp VR %d"
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported output format"
+msgstr "Thiết bị video không chấp nhận cài đặt về tốc độ khung hình mới."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported input format"
+msgstr "Thiết bị video không chấp nhận cài đặt về tốc độ khung hình mới."
+
+#, fuzzy, c-format
+msgid "Encoder on device %s has no supported output format"
+msgstr "Thiết bị video không chấp nhận cài đặt về tốc độ khung hình mới."
+
+msgid "Failed to allocate required memory."
+msgstr ""
+
+#, fuzzy
+msgid "Failed to start decoding thread."
+msgstr "Gặp lỗi khi giải mã ảnh JPEG"
+
+msgid "Failed to process frame."
+msgstr ""
+
 #, c-format
 msgid ""
 "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if "
diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo
index c6816cf940a7ef02d7d442e02abebc21e8211270..bd7d7ef315b87552418cf5584e4ca720436b94f4 100644
Binary files a/po/zh_CN.gmo and b/po/zh_CN.gmo differ
diff --git a/po/zh_CN.po b/po/zh_CN.po
index 1127515407fd5dee8dd35c4ac0a6776c3f9fc77c..7e2e1d64b2edaf2a942fb5662b6c85a22f3fbeca 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: 2014-05-21 12:10+0200\n"
+"POT-Creation-Date: 2014-06-22 17:33+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"
@@ -298,6 +298,35 @@ msgstr "设置设备 %2$s 上的输入 %1$d 时出错。"
 msgid "Failed to change mute state for device '%s'."
 msgstr "获取设备‘%s’的信号长度时出错。"
 
+msgid "Failed to allocated required memory."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Converter on device %s has no supported input format"
+msgstr "设备‘%s’的驱动不支持任何已知的捕获方式。"
+
+#, c-format
+msgid "Converter on device %s has no supported output format"
+msgstr ""
+
+#, c-format
+msgid "Encoder on device %s has no supported input format"
+msgstr ""
+
+#, c-format
+msgid "Encoder on device %s has no supported output format"
+msgstr ""
+
+msgid "Failed to allocate required memory."
+msgstr ""
+
+#, fuzzy
+msgid "Failed to start decoding thread."
+msgstr "解码 JPEG 图像出错"
+
+msgid "Failed to process frame."
+msgstr ""
+
 #, c-format
 msgid ""
 "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if "
diff --git a/po/zh_HK.gmo b/po/zh_HK.gmo
index c7c60a992091ef1b05716d1235baf473441c42e3..f7087e0ee95b90b177a472ed5faec5b80eb09284 100644
Binary files a/po/zh_HK.gmo and b/po/zh_HK.gmo differ
diff --git a/po/zh_HK.po b/po/zh_HK.po
index bd7bf836f0cf19b9010ec1b877ea4d578f4e50fe..052535bcbcd8dac4d4f1df69e46f3c2abc7c7982 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: 2014-05-21 12:10+0200\n"
+"POT-Creation-Date: 2014-06-22 17:33+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"
@@ -284,6 +284,34 @@ msgstr ""
 msgid "Failed to change mute state for device '%s'."
 msgstr ""
 
+msgid "Failed to allocated required memory."
+msgstr ""
+
+#, c-format
+msgid "Converter on device %s has no supported input format"
+msgstr ""
+
+#, c-format
+msgid "Converter on device %s has no supported output format"
+msgstr ""
+
+#, c-format
+msgid "Encoder on device %s has no supported input format"
+msgstr ""
+
+#, c-format
+msgid "Encoder on device %s has no supported output format"
+msgstr ""
+
+msgid "Failed to allocate required memory."
+msgstr ""
+
+msgid "Failed to start decoding thread."
+msgstr ""
+
+msgid "Failed to process frame."
+msgstr ""
+
 #, c-format
 msgid ""
 "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if "
diff --git a/po/zh_TW.gmo b/po/zh_TW.gmo
index b1af7483274ce5f069593949c6229ca4f96daec8..61a44027bf3afd35862286875be240bd10b4b33e 100644
Binary files a/po/zh_TW.gmo and b/po/zh_TW.gmo differ
diff --git a/po/zh_TW.po b/po/zh_TW.po
index 1e82da2c52eacd7841bc1ac5f4441bbda2286660..8fdf23ab052680a6aacb74a9efc663c5cff5e664 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: 2014-05-21 12:10+0200\n"
+"POT-Creation-Date: 2014-06-22 17:33+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"
@@ -284,6 +284,34 @@ msgstr ""
 msgid "Failed to change mute state for device '%s'."
 msgstr ""
 
+msgid "Failed to allocated required memory."
+msgstr ""
+
+#, c-format
+msgid "Converter on device %s has no supported input format"
+msgstr ""
+
+#, c-format
+msgid "Converter on device %s has no supported output format"
+msgstr ""
+
+#, c-format
+msgid "Encoder on device %s has no supported input format"
+msgstr ""
+
+#, c-format
+msgid "Encoder on device %s has no supported output format"
+msgstr ""
+
+msgid "Failed to allocate required memory."
+msgstr ""
+
+msgid "Failed to start decoding thread."
+msgstr ""
+
+msgid "Failed to process frame."
+msgstr ""
+
 #, c-format
 msgid ""
 "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if "
diff --git a/sys/oss/gstosshelper.c b/sys/oss/gstosshelper.c
index 9fc2701323cb48bd5ca845f6b39701a20ac5536c..e649e008297b29da73a287ba9bd646c04b53260f 100644
--- a/sys/oss/gstosshelper.c
+++ b/sys/oss/gstosshelper.c
@@ -81,80 +81,76 @@ static int gst_oss_helper_rate_int_compare (gconstpointer a, gconstpointer b);
 GstCaps *
 gst_oss_helper_probe_caps (gint fd)
 {
+#if G_BYTE_ORDER == G_LITTLE_ENDIAN
+  const guint probe_formats[] = { AFMT_S16_LE, AFMT_U16_LE, AFMT_U8, AFMT_S8 };
+#else
+  const guint probe_formats[] = { AFMT_S16_BE, AFMT_U16_BE, AFMT_U8, AFMT_S8 };
+#endif
   GstOssProbe *probe;
-  int i;
+  int i, f;
   gboolean ret;
   GstStructure *structure;
-  unsigned int format_bit;
-  unsigned int format_mask;
   GstCaps *caps;
 
   /* FIXME test make sure we're not currently playing */
   /* FIXME test both mono and stereo */
 
-  format_mask = AFMT_U8 | AFMT_S8;
-
-  if (G_BYTE_ORDER == G_LITTLE_ENDIAN)
-    format_mask |= AFMT_S16_LE | AFMT_U16_LE;
-  else
-    format_mask |= AFMT_S16_BE | AFMT_U16_BE;
-
   caps = gst_caps_new_empty ();
 
   /* assume that the most significant bit of format_mask is 0 */
-  for (format_bit = 1 << 31; format_bit > 0; format_bit >>= 1) {
-    if (format_bit & format_mask) {
-      GValue rate_value = { 0 };
-
-      probe = g_new0 (GstOssProbe, 1);
-      probe->fd = fd;
-      probe->format = format_bit;
-      /* FIXME: this is not working for all cards, see bug #518474 */
-      probe->n_channels = 2;
-
-      ret = gst_oss_helper_rate_probe_check (probe);
-      if (probe->min == -1 || probe->max == -1) {
-        g_array_free (probe->rates, TRUE);
-        g_free (probe);
-        continue;
-      }
+  for (f = 0; f < G_N_ELEMENTS (probe_formats); ++f) {
+    GValue rate_value = { 0 };
 
-      if (ret) {
-        GValue value = { 0 };
+    probe = g_new0 (GstOssProbe, 1);
+    probe->fd = fd;
+    probe->format = probe_formats[f];
+    /* FIXME: this is not working for all cards, see bug #518474 */
+    probe->n_channels = 2;
 
-        g_array_sort (probe->rates, gst_oss_helper_rate_int_compare);
+    ret = gst_oss_helper_rate_probe_check (probe);
+    if (probe->min == -1 || probe->max == -1) {
+      g_array_free (probe->rates, TRUE);
+      g_free (probe);
+      continue;
+    }
 
-        g_value_init (&rate_value, GST_TYPE_LIST);
-        g_value_init (&value, G_TYPE_INT);
+    if (ret) {
+      GValue value = { 0 };
 
-        for (i = 0; i < probe->rates->len; i++) {
-          g_value_set_int (&value, g_array_index (probe->rates, int, i));
+      g_array_sort (probe->rates, gst_oss_helper_rate_int_compare);
 
-          gst_value_list_append_value (&rate_value, &value);
-        }
+      g_value_init (&rate_value, GST_TYPE_LIST);
+      g_value_init (&value, G_TYPE_INT);
 
-        g_value_unset (&value);
-      } else {
-        /* one big range */
-        g_value_init (&rate_value, GST_TYPE_INT_RANGE);
-        gst_value_set_int_range (&rate_value, probe->min, probe->max);
+      for (i = 0; i < probe->rates->len; i++) {
+        g_value_set_int (&value, g_array_index (probe->rates, int, i));
+
+        gst_value_list_append_value (&rate_value, &value);
       }
 
-      g_array_free (probe->rates, TRUE);
-      g_free (probe);
+      g_value_unset (&value);
+    } else {
+      /* one big range */
+      g_value_init (&rate_value, GST_TYPE_INT_RANGE);
+      gst_value_set_int_range (&rate_value, probe->min, probe->max);
+    }
 
-      structure = gst_oss_helper_get_format_structure (format_bit);
-      gst_structure_set (structure, "channels", GST_TYPE_INT_RANGE, 1, 2, NULL);
-      gst_structure_set_value (structure, "rate", &rate_value);
-      g_value_unset (&rate_value);
+    g_array_free (probe->rates, TRUE);
+    g_free (probe);
 
-      gst_caps_append_structure (caps, structure);
-    }
+    structure = gst_oss_helper_get_format_structure (probe_formats[f]);
+    gst_structure_set (structure, "channels", GST_TYPE_INT_RANGE, 1, 2, NULL);
+    gst_structure_set_value (structure, "rate", &rate_value);
+    g_value_unset (&rate_value);
+
+    gst_caps_append_structure (caps, structure);
   }
 
   if (gst_caps_is_empty (caps)) {
     /* fixme: make user-visible */
     GST_WARNING ("Your OSS device could not be probed correctly");
+  } else {
+    caps = gst_caps_simplify (caps);
   }
 
   GST_DEBUG ("probed caps: %" GST_PTR_FORMAT, caps);
diff --git a/sys/v4l2/gstv4l2allocator.c b/sys/v4l2/gstv4l2allocator.c
index dc93b2be61a31c07cc7f0447795912d66c9863ac..416770b5b6c6b96e0781ab347e025401bc4c0ab4 100644
--- a/sys/v4l2/gstv4l2allocator.c
+++ b/sys/v4l2/gstv4l2allocator.c
@@ -765,6 +765,8 @@ gst_v4l2_allocator_stop (GstV4l2Allocator * allocator)
   if (v4l2_ioctl (allocator->video_fd, VIDIOC_REQBUFS, &breq) < 0)
     goto reqbufs_failed;
 
+  allocator->count = 0;
+
   g_atomic_int_set (&allocator->active, FALSE);
 
 done:
@@ -1219,6 +1221,8 @@ gst_v4l2_allocator_qbuf (GstV4l2Allocator * allocator,
   gboolean ret = TRUE;
   gint i;
 
+  g_return_val_if_fail (g_atomic_int_get (&allocator->active), FALSE);
+
   /* update sizes */
   if (V4L2_TYPE_IS_MULTIPLANAR (allocator->type)) {
     for (i = 0; i < group->n_mem; i++)
@@ -1266,6 +1270,8 @@ gst_v4l2_allocator_dqbuf (GstV4l2Allocator * allocator)
 
   GstV4l2MemoryGroup *group = NULL;
 
+  g_return_val_if_fail (g_atomic_int_get (&allocator->active), FALSE);
+
   buffer.type = allocator->type;
   buffer.memory = allocator->memory;
 
diff --git a/sys/v4l2/gstv4l2bufferpool.c b/sys/v4l2/gstv4l2bufferpool.c
index f213769d92737a959bafb8f23463bca08ce69c11..f5c74c8f2cc174bddee19c4bac070653ee70fec2 100644
--- a/sys/v4l2/gstv4l2bufferpool.c
+++ b/sys/v4l2/gstv4l2bufferpool.c
@@ -194,7 +194,7 @@ gst_v4l2_buffer_pool_import_userptr (GstV4l2BufferPool * pool,
   if (!gst_v4l2_is_buffer_valid (dest, &group))
     goto not_our_buffer;
 
-  if (!V4L2_TYPE_IS_OUTPUT (pool->obj->type))
+  if (V4L2_TYPE_IS_OUTPUT (pool->obj->type))
     flags = GST_MAP_READ;
   else
     flags = GST_MAP_WRITE;
@@ -406,7 +406,7 @@ gst_v4l2_buffer_pool_alloc_buffer (GstBufferPool * bpool, GstBuffer ** buffer,
 allocation_failed:
   {
     GST_ERROR_OBJECT (pool, "failed to allocate buffer");
-    return FALSE;
+    return GST_FLOW_ERROR;
   }
 }
 
@@ -520,80 +520,69 @@ wrong_config:
 }
 
 static gboolean
-start_streaming (GstV4l2BufferPool * pool)
+gst_v4l2_buffer_pool_streamon (GstV4l2BufferPool * pool)
 {
   GstV4l2Object *obj = pool->obj;
 
-  GST_DEBUG_OBJECT (pool, "start streaming");
-
-  if (pool->streaming)
-    return TRUE;
-
   switch (obj->mode) {
-    case GST_V4L2_IO_RW:
-      break;
     case GST_V4L2_IO_MMAP:
     case GST_V4L2_IO_USERPTR:
     case GST_V4L2_IO_DMABUF:
     case GST_V4L2_IO_DMABUF_IMPORT:
-    {
-      /* For capture device, we need to re-enqueue buffers before be can let
-       * the driver stream again */
-      if (!V4L2_TYPE_IS_OUTPUT (obj->type) && pool->vallocator) {
-        GstBufferPool *bpool = GST_BUFFER_POOL (pool);
-        GstBufferPoolAcquireParams params = { 0 };
-        gsize num_allocated, num_to_queue;
-        GstFlowReturn ret;
-
-        num_allocated = gst_v4l2_allocator_num_allocated (pool->vallocator);
-        num_to_queue = num_allocated - pool->num_queued;
+      if (!pool->streaming) {
+        if (v4l2_ioctl (pool->video_fd, VIDIOC_STREAMON, &obj->type) < 0)
+          goto streamon_failed;
 
-        while (num_to_queue > 0) {
-          GstBuffer *buf;
+        pool->streaming = TRUE;
 
-          params.flags = GST_BUFFER_POOL_ACQUIRE_FLAG_DONTWAIT;
-          ret = GST_BUFFER_POOL_CLASS (parent_class)->acquire_buffer (bpool,
-              &buf, &params);
+        GST_DEBUG_OBJECT (pool, "Started streaming");
+      }
+      break;
+    default:
+      break;
+  }
 
-          if (ret != GST_FLOW_OK)
-            goto requeue_failed;
+  return TRUE;
 
-          gst_v4l2_buffer_pool_release_buffer (bpool, buf);
-          num_to_queue--;
-        }
+streamon_failed:
+  {
+    GST_ERROR_OBJECT (pool, "error with STREAMON %d (%s)", errno,
+        g_strerror (errno));
+    return FALSE;
+  }
+}
 
-        if (num_allocated != pool->num_queued)
-          goto requeue_failed;
-      }
+static gboolean
+gst_v4l2_buffer_pool_streamoff (GstV4l2BufferPool * pool)
+{
+  GstV4l2Object *obj = pool->obj;
 
-      if (v4l2_ioctl (pool->video_fd, VIDIOC_STREAMON, &obj->type) < 0)
-        goto start_failed;
+  switch (obj->mode) {
+    case GST_V4L2_IO_MMAP:
+    case GST_V4L2_IO_USERPTR:
+    case GST_V4L2_IO_DMABUF:
+    case GST_V4L2_IO_DMABUF_IMPORT:
+      if (pool->streaming) {
+        if (v4l2_ioctl (pool->video_fd, VIDIOC_STREAMOFF, &obj->type) < 0)
+          goto streamoff_failed;
 
-      GST_DEBUG_OBJECT (pool, "STREAMON");
+        pool->streaming = FALSE;
 
+        GST_DEBUG_OBJECT (pool, "Stopped streaming");
+      }
       break;
-    }
     default:
-      g_assert_not_reached ();
       break;
   }
 
-  pool->streaming = TRUE;
-
   return TRUE;
 
-  /* ERRORS */
-start_failed:
+streamoff_failed:
   {
-    GST_ERROR_OBJECT (pool, "error with STREAMON %d (%s)", errno,
+    GST_ERROR_OBJECT (pool, "error with STREAMOFF %d (%s)", errno,
         g_strerror (errno));
     return FALSE;
   }
-requeue_failed:
-  {
-    GST_ERROR_OBJECT (pool, "failed to re-enqueue buffers");
-    return FALSE;
-  }
 }
 
 static void
@@ -618,42 +607,43 @@ static gboolean
 gst_v4l2_buffer_pool_start (GstBufferPool * bpool)
 {
   GstV4l2BufferPool *pool = GST_V4L2_BUFFER_POOL (bpool);
+  GstBufferPoolClass *pclass = GST_BUFFER_POOL_CLASS (parent_class);
   GstV4l2Object *obj = pool->obj;
   GstStructure *config;
   GstCaps *caps;
   guint size, min_buffers, max_buffers;
-  guint num_buffers = 0, copy_threshold = 0;
+  guint max_latency, min_latency, copy_threshold = 0;
+  gboolean can_allocate = FALSE;
+
+  GST_DEBUG_OBJECT (pool, "activating pool");
 
   config = gst_buffer_pool_get_config (bpool);
   if (!gst_buffer_pool_config_get_params (config, &caps, &size, &min_buffers,
           &max_buffers))
     goto wrong_config;
 
+  /* TODO Also consider min_buffers_for_output when implemented */
+  min_latency = MAX (GST_V4L2_MIN_BUFFERS, obj->min_buffers_for_capture);
+
   switch (obj->mode) {
     case GST_V4L2_IO_RW:
-      /* this value also instructs the latency calculation to have min_buffers
-       * frame latency max */
-      num_buffers = min_buffers;
+      can_allocate = TRUE;
       break;
     case GST_V4L2_IO_DMABUF:
     case GST_V4L2_IO_MMAP:
     {
       guint count;
 
-      if (GST_V4L2_ALLOCATOR_CAN_ALLOCATE (pool->vallocator, MMAP)) {
-        num_buffers = min_buffers;
-      } else {
-        num_buffers = max_buffers;
-      }
+      can_allocate = GST_V4L2_ALLOCATOR_CAN_ALLOCATE (pool->vallocator, MMAP);
 
       /* first, lets request buffers, and see how many we can get: */
-      GST_DEBUG_OBJECT (pool, "requesting %d MMAP buffers", num_buffers);
+      GST_DEBUG_OBJECT (pool, "requesting %d MMAP buffers", min_buffers);
 
-      count = gst_v4l2_allocator_start (pool->vallocator, num_buffers,
+      count = gst_v4l2_allocator_start (pool->vallocator, min_buffers,
           V4L2_MEMORY_MMAP);
 
       if (count < GST_V4L2_MIN_BUFFERS) {
-        num_buffers = count;
+        min_buffers = count;
         goto no_buffers;
       }
 
@@ -662,12 +652,11 @@ gst_v4l2_buffer_pool_start (GstBufferPool * bpool)
        * falling back to copy if the pipeline needed more buffers. This also
        * prevent having to do REQBUFS(N)/REQBUFS(0) everytime configure is
        * called. */
-      if (count != num_buffers) {
+      if (count != min_buffers) {
         GST_WARNING_OBJECT (pool, "using %u buffers instead of %u",
-            count, num_buffers);
-        num_buffers = count;
-        copy_threshold =
-            MAX (GST_V4L2_MIN_BUFFERS, obj->min_buffers_for_capture);
+            count, min_buffers);
+        min_buffers = count;
+        copy_threshold = min_latency;
 
         /* The initial minimum could be provide either by GstBufferPool or
          * driver needs. */
@@ -680,60 +669,59 @@ gst_v4l2_buffer_pool_start (GstBufferPool * bpool)
     {
       guint count;
 
-      if (GST_V4L2_ALLOCATOR_CAN_ALLOCATE (pool->vallocator, USERPTR)) {
-        num_buffers = min_buffers;
-      } else {
-        num_buffers = max_buffers;
-      }
+      can_allocate =
+          GST_V4L2_ALLOCATOR_CAN_ALLOCATE (pool->vallocator, USERPTR);
 
-      GST_DEBUG_OBJECT (pool, "requesting %d USERPTR buffers", num_buffers);
+      GST_DEBUG_OBJECT (pool, "requesting %d USERPTR buffers", min_buffers);
 
-      count = gst_v4l2_allocator_start (pool->vallocator, num_buffers,
+      count = gst_v4l2_allocator_start (pool->vallocator, min_buffers,
           V4L2_MEMORY_USERPTR);
 
       /* There is no rational to not get what we asked */
-      if (count < num_buffers) {
-        num_buffers = count;
+      if (count < min_buffers) {
+        min_buffers = count;
         goto no_buffers;
       }
 
-      min_buffers = num_buffers = count;
+      min_buffers = count;
       break;
     }
     case GST_V4L2_IO_DMABUF_IMPORT:
     {
       guint count;
 
-      if (GST_V4L2_ALLOCATOR_CAN_ALLOCATE (pool->vallocator, DMABUF)) {
-        num_buffers = min_buffers;
-      } else {
-        num_buffers = max_buffers;
-      }
+      can_allocate = GST_V4L2_ALLOCATOR_CAN_ALLOCATE (pool->vallocator, DMABUF);
 
-      GST_DEBUG_OBJECT (pool, "requesting %d DMABUF buffers", num_buffers);
+      GST_DEBUG_OBJECT (pool, "requesting %d DMABUF buffers", min_buffers);
 
-      count = gst_v4l2_allocator_start (pool->vallocator, num_buffers,
+      count = gst_v4l2_allocator_start (pool->vallocator, min_buffers,
           V4L2_MEMORY_DMABUF);
 
       /* There is no rational to not get what we asked */
-      if (count < num_buffers) {
-        num_buffers = count;
+      if (count < min_buffers) {
+        min_buffers = count;
         goto no_buffers;
       }
 
-      min_buffers = num_buffers = count;
+      min_buffers = count;
       break;
     }
     default:
-      num_buffers = 0;
+      min_buffers = 0;
       copy_threshold = 0;
       g_assert_not_reached ();
       break;
   }
 
+  if (can_allocate)
+    max_latency = max_buffers;
+  else
+    max_latency = min_buffers;
+
   pool->size = size;
   pool->copy_threshold = copy_threshold;
-  pool->num_buffers = num_buffers;
+  pool->max_latency = max_latency;
+  pool->min_latency = min_latency;
   pool->num_queued = 0;
 
   if (max_buffers < min_buffers)
@@ -741,7 +729,7 @@ gst_v4l2_buffer_pool_start (GstBufferPool * bpool)
 
   gst_buffer_pool_config_set_params (config, caps, size, min_buffers,
       max_buffers);
-  GST_BUFFER_POOL_CLASS (parent_class)->set_config (bpool, config);
+  pclass->set_config (bpool, config);
   gst_structure_free (config);
 
   if (pool->other_pool)
@@ -749,22 +737,14 @@ gst_v4l2_buffer_pool_start (GstBufferPool * bpool)
       goto other_pool_failed;
 
   /* now, allocate the buffers: */
-  if (!GST_BUFFER_POOL_CLASS (parent_class)->start (bpool))
+  if (!pclass->start (bpool))
     goto start_failed;
 
-  /* we can start capturing now, we wait for the playback case until we queued
-   * the first buffer */
-  if (!V4L2_TYPE_IS_OUTPUT (obj->type))
-    if (!start_streaming (pool))
-      goto start_failed;
-
   if (!V4L2_TYPE_IS_OUTPUT (obj->type))
     pool->group_released_handler =
         g_signal_connect_swapped (pool->vallocator, "group-released",
         G_CALLBACK (gst_v4l2_buffer_pool_group_released), pool);
 
-  gst_poll_set_flushing (obj->poll, FALSE);
-
   return TRUE;
 
   /* ERRORS */
@@ -778,7 +758,7 @@ no_buffers:
   {
     GST_ERROR_OBJECT (pool,
         "we received %d buffer from device '%s', we want at least %d",
-        num_buffers, obj->videodev, GST_V4L2_MIN_BUFFERS);
+        min_buffers, obj->videodev, GST_V4L2_MIN_BUFFERS);
     gst_structure_free (config);
     return FALSE;
   }
@@ -795,26 +775,103 @@ other_pool_failed:
   }
 }
 
-
 static gboolean
-stop_streaming (GstV4l2BufferPool * pool)
+gst_v4l2_buffer_pool_stop (GstBufferPool * bpool)
 {
-  GstV4l2Object *obj = pool->obj;
+  GstV4l2BufferPool *pool = GST_V4L2_BUFFER_POOL (bpool);
+  GstBufferPoolClass *pclass = GST_BUFFER_POOL_CLASS (parent_class);
+  gboolean ret;
   gint i;
 
-  GST_DEBUG_OBJECT (pool, "stopping stream");
+  GST_DEBUG_OBJECT (pool, "stopping pool");
+
+  if (pool->group_released_handler > 0) {
+    g_signal_handler_disconnect (pool->vallocator,
+        pool->group_released_handler);
+    pool->group_released_handler = 0;
+  }
+
+  if (pool->other_pool) {
+    gst_object_unref (pool->other_pool);
+    pool->other_pool = NULL;
+  }
+
+  if (!gst_v4l2_buffer_pool_streamoff (pool))
+    goto streamoff_failed;
+
+  gst_v4l2_allocator_flush (pool->vallocator);
+
+  for (i = 0; i < VIDEO_MAX_FRAME; i++) {
+    if (pool->buffers[i]) {
+      GstBuffer *buffer = pool->buffers[i];
+
+      pool->buffers[i] = NULL;
 
-  gst_poll_set_flushing (obj->poll, TRUE);
+      if (V4L2_TYPE_IS_OUTPUT (pool->obj->type))
+        gst_buffer_unref (buffer);
+      else
+        pclass->release_buffer (bpool, buffer);
 
-  if (!pool->streaming) {
-    /* it avoid error: STREAMOFF 22 (Invalid argument) when
-     * attempting to stop a stream not previously started */
-    GST_DEBUG_OBJECT (pool, "no need to stop, was not previously started");
-    return TRUE;
+      g_atomic_int_add (&pool->num_queued, -1);
+    }
   }
 
-  pool->flushing = TRUE;
+  ret = GST_BUFFER_POOL_CLASS (parent_class)->stop (bpool);
 
+  if (ret) {
+    GstV4l2Return vret;
+
+    vret = gst_v4l2_allocator_stop (pool->vallocator);
+
+    if (vret == GST_V4L2_BUSY)
+      GST_WARNING_OBJECT (pool, "some buffers are still outstanding");
+
+    ret = (vret == GST_V4L2_OK);
+  }
+
+  return ret;
+
+  /* ERRORS */
+streamoff_failed:
+  GST_ERROR_OBJECT (pool, "device refused to stop streaming");
+  return FALSE;
+}
+
+static void
+gst_v4l2_buffer_pool_flush_start (GstBufferPool * bpool)
+{
+  GstV4l2BufferPool *pool = GST_V4L2_BUFFER_POOL (bpool);
+
+  GST_DEBUG_OBJECT (pool, "start flushing");
+
+  gst_poll_set_flushing (pool->poll, TRUE);
+
+  if (pool->other_pool)
+    gst_buffer_pool_set_flushing (pool->other_pool, TRUE);
+}
+
+static void
+gst_v4l2_buffer_pool_flush_stop (GstBufferPool * bpool)
+{
+  GstV4l2BufferPool *pool = GST_V4L2_BUFFER_POOL (bpool);
+  GstV4l2Object *obj = pool->obj;
+  gint i;
+
+  GST_DEBUG_OBJECT (pool, "stop flushing");
+
+  /* If we haven't started streaming yet, simply call streamon */
+  if (!pool->streaming)
+    goto streamon;
+
+  if (pool->other_pool)
+    gst_buffer_pool_set_flushing (pool->other_pool, FALSE);
+
+  if (!gst_v4l2_buffer_pool_streamoff (pool))
+    goto stop_failed;
+
+  gst_v4l2_allocator_flush (pool->vallocator);
+
+  /* Reset our state */
   switch (obj->mode) {
     case GST_V4L2_IO_RW:
       break;
@@ -825,135 +882,95 @@ stop_streaming (GstV4l2BufferPool * pool)
     {
       gsize num_allocated;
 
-      if (v4l2_ioctl (pool->video_fd, VIDIOC_STREAMOFF, &obj->type) < 0)
-        goto stop_failed;
-
-      GST_DEBUG_OBJECT (pool, "STREAMOFF");
-
-      gst_v4l2_allocator_flush (pool->vallocator);
-
       num_allocated = gst_v4l2_allocator_num_allocated (pool->vallocator);
 
       for (i = 0; i < num_allocated; i++) {
+        /* Re-enqueue buffers */
         if (pool->buffers[i]) {
           GstBufferPool *bpool = (GstBufferPool *) pool;
           GstBuffer *buffer = pool->buffers[i];
 
           pool->buffers[i] = NULL;
-          pool->num_queued--;
 
-          /* Remove qdata, this will unmap any map data in userptr */
+          /* Remove qdata, this will unmap any map data in
+           * userptr/dmabuf-import */
           gst_mini_object_set_qdata (GST_MINI_OBJECT (buffer),
               GST_V4L2_IMPORT_QUARK, NULL, NULL);
 
           if (V4L2_TYPE_IS_OUTPUT (obj->type))
             gst_buffer_unref (buffer);
           else
-            /* Give back the outstanding buffer to the pool */
-            GST_BUFFER_POOL_CLASS (parent_class)->release_buffer (bpool,
-                buffer);
+            gst_v4l2_buffer_pool_release_buffer (bpool, buffer);
+
+          g_atomic_int_add (&pool->num_queued, -1);
         }
       }
-      g_return_val_if_fail (pool->num_queued == 0, FALSE);
 
       break;
     }
     default:
-      g_return_val_if_reached (FALSE);
+      g_assert_not_reached ();
       break;
   }
 
-  pool->flushing = FALSE;
-  pool->streaming = FALSE;
-
-  return TRUE;
-
-  /* ERRORS */
-stop_failed:
-  {
-    GST_ERROR_OBJECT (pool, "error with STREAMOFF %d (%s)", errno,
-        g_strerror (errno));
-    return FALSE;
-  }
-}
-
-static gboolean
-gst_v4l2_buffer_pool_stop (GstBufferPool * bpool)
-{
-  gboolean ret;
-  GstV4l2BufferPool *pool = GST_V4L2_BUFFER_POOL (bpool);
-  GstV4l2Object *obj = pool->obj;
-
-  GST_DEBUG_OBJECT (pool, "stopping pool");
-
-  if (pool->group_released_handler > 0) {
-    g_signal_handler_disconnect (pool->vallocator,
-        pool->group_released_handler);
-    pool->group_released_handler = 0;
-  }
-
-  gst_poll_set_flushing (obj->poll, TRUE);
-  if (!stop_streaming (pool))
-    goto stop_failed;
-
-  ret = GST_BUFFER_POOL_CLASS (parent_class)->stop (bpool);
-
-  if (ret) {
-    GstV4l2Return vret;
-
-    vret = gst_v4l2_allocator_stop (pool->vallocator);
+streamon:
+  /* Start streaming on capture device only */
+  if (!V4L2_TYPE_IS_OUTPUT (obj->type))
+    gst_v4l2_buffer_pool_streamon (pool);
 
-    if (vret == GST_V4L2_BUSY) {
-      GST_WARNING_OBJECT (pool, "allocated buffer need to be reclaimed");
-      /* FIXME deal with reclaiming */
-    } else if (vret == GST_V4L2_ERROR) {
-      ret = FALSE;
-    }
-  }
+  gst_poll_set_flushing (pool->poll, FALSE);
 
-  return ret;
+  return;
 
   /* ERRORS */
 stop_failed:
   {
-    GST_ERROR_OBJECT (pool, "error with STREAMOFF %d (%s)", errno,
-        g_strerror (errno));
-    return FALSE;
+    GST_ERROR_OBJECT (pool, "device refused to flush");
   }
 }
 
 static GstFlowReturn
-gst_v4l2_object_poll (GstV4l2Object * v4l2object)
+gst_v4l2_buffer_pool_poll (GstV4l2BufferPool * pool)
 {
   gint ret;
 
-  if (v4l2object->can_poll_device) {
-    GST_LOG_OBJECT (v4l2object->element, "polling device");
-    ret = gst_poll_wait (v4l2object->poll, GST_CLOCK_TIME_NONE);
-    if (G_UNLIKELY (ret < 0)) {
-      if (errno == EBUSY)
+  if (!pool->can_poll_device)
+    goto done;
+
+  GST_LOG_OBJECT (pool, "polling device");
+
+again:
+  ret = gst_poll_wait (pool->poll, GST_CLOCK_TIME_NONE);
+  if (G_UNLIKELY (ret < 0)) {
+    switch (errno) {
+      case EBUSY:
         goto stopped;
-      if (errno == ENXIO) {
-        GST_WARNING_OBJECT (v4l2object->element,
-            "v4l2 device doesn't support polling. Disabling");
-        v4l2object->can_poll_device = FALSE;
-      } else {
-        if (errno != EAGAIN && errno != EINTR)
-          goto select_error;
-      }
+      case EAGAIN:
+      case EINTR:
+        goto again;
+      case ENXIO:
+        GST_WARNING_OBJECT (pool,
+            "v4l2 device doesn't support polling. Disabling"
+            " using libv4l2 in this case may cause deadlocks");
+        pool->can_poll_device = FALSE;
+        goto done;
+      default:
+        goto select_error;
     }
   }
+
+done:
   return GST_FLOW_OK;
 
   /* ERRORS */
 stopped:
   {
-    GST_DEBUG ("stop called");
+    GST_DEBUG_OBJECT (pool, "stop called");
     return GST_FLOW_FLUSHING;
   }
 select_error:
   {
-    GST_ELEMENT_ERROR (v4l2object->element, RESOURCE, READ, (NULL),
+    GST_ELEMENT_ERROR (pool->obj->element, RESOURCE, READ, (NULL),
         ("poll error %d: %s (%d)", ret, g_strerror (errno), errno));
     return GST_FLOW_ERROR;
   }
@@ -978,12 +995,12 @@ gst_v4l2_buffer_pool_qbuf (GstV4l2BufferPool * pool, GstBuffer * buf)
 
   GST_LOG_OBJECT (pool, "queuing buffer %i", index);
 
+  g_atomic_int_inc (&pool->num_queued);
+  pool->buffers[index] = buf;
+
   if (!gst_v4l2_allocator_qbuf (pool->vallocator, group))
     goto queue_failed;
 
-  pool->buffers[index] = buf;
-  pool->num_queued++;
-
   return GST_FLOW_OK;
 
 already_queued:
@@ -996,6 +1013,8 @@ queue_failed:
     GST_ERROR_OBJECT (pool, "could not queue a buffer %i", index);
     /* Mark broken buffer to the allocator */
     GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_TAG_MEMORY);
+    g_atomic_int_add (&pool->num_queued, -1);
+    pool->buffers[index] = NULL;
     return GST_FLOW_ERROR;
   }
 }
@@ -1010,7 +1029,7 @@ gst_v4l2_buffer_pool_dqbuf (GstV4l2BufferPool * pool, GstBuffer ** buffer)
   GstV4l2MemoryGroup *group;
   gint i;
 
-  if ((res = gst_v4l2_object_poll (obj)) != GST_FLOW_OK)
+  if ((res = gst_v4l2_buffer_pool_poll (pool)) != GST_FLOW_OK)
     goto poll_failed;
 
   GST_LOG_OBJECT (pool, "dequeueing a buffer");
@@ -1028,7 +1047,7 @@ gst_v4l2_buffer_pool_dqbuf (GstV4l2BufferPool * pool, GstBuffer ** buffer)
 
   /* mark the buffer outstanding */
   pool->buffers[group->buffer.index] = NULL;
-  pool->num_queued--;
+  g_atomic_int_add (&pool->num_queued, -1);
 
   timestamp = GST_TIMEVAL_TO_TIME (group->buffer.timestamp);
 
@@ -1092,17 +1111,14 @@ gst_v4l2_buffer_pool_acquire_buffer (GstBufferPool * bpool, GstBuffer ** buffer,
 {
   GstFlowReturn ret;
   GstV4l2BufferPool *pool = GST_V4L2_BUFFER_POOL (bpool);
+  GstBufferPoolClass *pclass = GST_BUFFER_POOL_CLASS (parent_class);
   GstV4l2Object *obj = pool->obj;
 
   GST_DEBUG_OBJECT (pool, "acquire");
 
-  if (GST_BUFFER_POOL_IS_FLUSHING (bpool))
-    goto flushing;
-
   /* If this is being called to resurect a lost buffer */
   if (params && params->flags & GST_V4L2_POOL_ACQUIRE_FLAG_RESURECT) {
-    ret = GST_BUFFER_POOL_CLASS (parent_class)->acquire_buffer (bpool, buffer,
-        params);
+    ret = pclass->acquire_buffer (bpool, buffer, params);
     goto done;
   }
 
@@ -1114,8 +1130,7 @@ gst_v4l2_buffer_pool_acquire_buffer (GstBufferPool * bpool, GstBuffer ** buffer,
         case GST_V4L2_IO_RW:
         {
           /* take empty buffer from the pool */
-          ret = GST_BUFFER_POOL_CLASS (parent_class)->acquire_buffer (bpool,
-              buffer, params);
+          ret = pclass->acquire_buffer (bpool, buffer, params);
           break;
         }
         case GST_V4L2_IO_DMABUF:
@@ -1129,12 +1144,11 @@ gst_v4l2_buffer_pool_acquire_buffer (GstBufferPool * bpool, GstBuffer ** buffer,
             goto done;
 
           /* start copying buffers when we are running low on buffers */
-          if (pool->num_queued < pool->copy_threshold) {
+          if (g_atomic_int_get (&pool->num_queued) < pool->copy_threshold) {
             GstBuffer *copy;
 
             if (GST_V4L2_ALLOCATOR_CAN_ALLOCATE (pool->vallocator, MMAP)) {
-              if (GST_BUFFER_POOL_CLASS (parent_class)->acquire_buffer (bpool,
-                      &copy, params) == GST_FLOW_OK) {
+              if (pclass->acquire_buffer (bpool, &copy, params) == GST_FLOW_OK) {
                 gst_v4l2_buffer_pool_release_buffer (bpool, copy);
                 break;
               }
@@ -1172,8 +1186,7 @@ gst_v4l2_buffer_pool_acquire_buffer (GstBufferPool * bpool, GstBuffer ** buffer,
       switch (obj->mode) {
         case GST_V4L2_IO_RW:
           /* get an empty buffer */
-          ret = GST_BUFFER_POOL_CLASS (parent_class)->acquire_buffer (bpool,
-              buffer, params);
+          ret = pclass->acquire_buffer (bpool, buffer, params);
           break;
 
         case GST_V4L2_IO_MMAP:
@@ -1181,8 +1194,7 @@ gst_v4l2_buffer_pool_acquire_buffer (GstBufferPool * bpool, GstBuffer ** buffer,
         case GST_V4L2_IO_USERPTR:
         case GST_V4L2_IO_DMABUF_IMPORT:
           /* get a free unqueued buffer */
-          ret = GST_BUFFER_POOL_CLASS (parent_class)->acquire_buffer (bpool,
-              buffer, params);
+          ret = pclass->acquire_buffer (bpool, buffer, params);
           break;
 
         default:
@@ -1199,19 +1211,13 @@ gst_v4l2_buffer_pool_acquire_buffer (GstBufferPool * bpool, GstBuffer ** buffer,
   }
 done:
   return ret;
-
-  /* ERRORS */
-flushing:
-  {
-    GST_DEBUG_OBJECT (pool, "We are flushing");
-    return GST_FLOW_FLUSHING;
-  }
 }
 
 static void
 gst_v4l2_buffer_pool_release_buffer (GstBufferPool * bpool, GstBuffer * buffer)
 {
   GstV4l2BufferPool *pool = GST_V4L2_BUFFER_POOL (bpool);
+  GstBufferPoolClass *pclass = GST_BUFFER_POOL_CLASS (parent_class);
   GstV4l2Object *obj = pool->obj;
 
   GST_DEBUG_OBJECT (pool, "release buffer %p", buffer);
@@ -1224,7 +1230,7 @@ gst_v4l2_buffer_pool_release_buffer (GstBufferPool * bpool, GstBuffer * buffer)
       switch (obj->mode) {
         case GST_V4L2_IO_RW:
           /* release back in the pool */
-          GST_BUFFER_POOL_CLASS (parent_class)->release_buffer (bpool, buffer);
+          pclass->release_buffer (bpool, buffer);
           break;
 
         case GST_V4L2_IO_DMABUF:
@@ -1232,23 +1238,17 @@ gst_v4l2_buffer_pool_release_buffer (GstBufferPool * bpool, GstBuffer * buffer)
         case GST_V4L2_IO_USERPTR:
         case GST_V4L2_IO_DMABUF_IMPORT:
         {
-          if (pool->flushing) {
-            /* put back on outstanding list */
-            GST_BUFFER_POOL_CLASS (parent_class)->release_buffer (bpool,
-                buffer);
-          } else if (gst_v4l2_is_buffer_valid (buffer, NULL)) {
+          if (gst_v4l2_is_buffer_valid (buffer, NULL)) {
             /* queue back in the device */
             if (pool->other_pool)
               gst_v4l2_buffer_pool_prepare_buffer (pool, buffer, NULL);
             if (gst_v4l2_buffer_pool_qbuf (pool, buffer) != GST_FLOW_OK)
-              GST_BUFFER_POOL_CLASS (parent_class)->release_buffer (bpool,
-                  buffer);
+              pclass->release_buffer (bpool, buffer);
           } else {
             /* Simply release invalide/modified buffer, the allocator will
              * give it back later */
             GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_TAG_MEMORY);
-            GST_BUFFER_POOL_CLASS (parent_class)->release_buffer (bpool,
-                buffer);
+            pclass->release_buffer (bpool, buffer);
           }
           break;
         }
@@ -1263,7 +1263,7 @@ gst_v4l2_buffer_pool_release_buffer (GstBufferPool * bpool, GstBuffer * buffer)
       switch (obj->mode) {
         case GST_V4L2_IO_RW:
           /* release back in the pool */
-          GST_BUFFER_POOL_CLASS (parent_class)->release_buffer (bpool, buffer);
+          pclass->release_buffer (bpool, buffer);
           break;
 
         case GST_V4L2_IO_MMAP:
@@ -1278,8 +1278,7 @@ gst_v4l2_buffer_pool_release_buffer (GstBufferPool * bpool, GstBuffer * buffer)
             /* Simply release invalide/modified buffer, the allocator will
              * give it back later */
             GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_TAG_MEMORY);
-            GST_BUFFER_POOL_CLASS (parent_class)->release_buffer (bpool,
-                buffer);
+            pclass->release_buffer (bpool, buffer);
             break;
           }
 
@@ -1297,8 +1296,7 @@ gst_v4l2_buffer_pool_release_buffer (GstBufferPool * bpool, GstBuffer * buffer)
             gst_v4l2_allocator_reset_group (pool->vallocator, group);
 
             /* playback, put the buffer back in the queue to refill later. */
-            GST_BUFFER_POOL_CLASS (parent_class)->release_buffer (bpool,
-                buffer);
+            pclass->release_buffer (bpool, buffer);
           } else {
             /* We keep a ref on queued buffer, so this should never happen */
             g_assert_not_reached ();
@@ -1332,6 +1330,8 @@ gst_v4l2_buffer_pool_finalize (GObject * object)
   if (pool->video_fd >= 0)
     v4l2_close (pool->video_fd);
 
+  gst_poll_free (pool->poll);
+
   if (pool->vallocator)
     gst_object_unref (pool->vallocator);
 
@@ -1352,6 +1352,8 @@ gst_v4l2_buffer_pool_finalize (GObject * object)
 static void
 gst_v4l2_buffer_pool_init (GstV4l2BufferPool * pool)
 {
+  pool->poll = gst_poll_new (TRUE);
+  pool->can_poll_device = TRUE;
 }
 
 static void
@@ -1368,6 +1370,8 @@ gst_v4l2_buffer_pool_class_init (GstV4l2BufferPoolClass * klass)
   bufferpool_class->alloc_buffer = gst_v4l2_buffer_pool_alloc_buffer;
   bufferpool_class->acquire_buffer = gst_v4l2_buffer_pool_acquire_buffer;
   bufferpool_class->release_buffer = gst_v4l2_buffer_pool_release_buffer;
+  bufferpool_class->flush_start = gst_v4l2_buffer_pool_flush_start;
+  bufferpool_class->flush_stop = gst_v4l2_buffer_pool_flush_stop;
 }
 
 /**
@@ -1385,6 +1389,7 @@ gst_v4l2_buffer_pool_new (GstV4l2Object * obj, GstCaps * caps)
   GstStructure *config;
   gchar *name, *parent_name;
   gint fd;
+  GstPollFD pollfd = GST_POLL_FD_INIT;
 
   fd = v4l2_dup (obj->video_fd);
   if (fd < 0)
@@ -1400,11 +1405,21 @@ gst_v4l2_buffer_pool_new (GstV4l2Object * obj, GstCaps * caps)
       "name", name, NULL);
   g_free (name);
 
+  pollfd.fd = fd;
+  gst_poll_add_fd (pool->poll, &pollfd);
+  if (V4L2_TYPE_IS_OUTPUT (obj->type))
+    gst_poll_fd_ctl_write (pool->poll, &pollfd, TRUE);
+  else
+    gst_poll_fd_ctl_read (pool->poll, &pollfd, TRUE);
+
   pool->video_fd = fd;
   pool->obj = obj;
+  pool->can_poll_device = TRUE;
 
   pool->vallocator =
       gst_v4l2_allocator_new (GST_OBJECT (pool), obj->video_fd, &obj->format);
+  if (pool->vallocator == NULL)
+    goto allocator_failed;
 
   gst_object_ref (obj->element);
 
@@ -1422,6 +1437,11 @@ dup_failed:
     GST_ERROR ("failed to dup fd %d (%s)", errno, g_strerror (errno));
     return NULL;
   }
+allocator_failed:
+  {
+    GST_ERROR_OBJECT (pool, "Failed to create V4L2 allocator");
+    return NULL;
+  }
 }
 
 static GstFlowReturn
@@ -1440,7 +1460,7 @@ gst_v4l2_do_read (GstV4l2BufferPool * pool, GstBuffer * buf)
   gst_buffer_map (buf, &map, GST_MAP_WRITE);
 
   do {
-    if ((res = gst_v4l2_object_poll (obj)) != GST_FLOW_OK)
+    if ((res = gst_v4l2_buffer_pool_poll (pool)) != GST_FLOW_OK)
       goto poll_error;
 
     amount = v4l2_read (obj->video_fd, map.data, toread);
@@ -1508,6 +1528,9 @@ gst_v4l2_buffer_pool_process (GstV4l2BufferPool * pool, GstBuffer ** buf)
 
   g_return_val_if_fail (gst_buffer_pool_is_active (bpool), GST_FLOW_ERROR);
 
+  if (GST_BUFFER_POOL_IS_FLUSHING (pool))
+    return GST_FLOW_FLUSHING;
+
   switch (obj->type) {
     case V4L2_BUF_TYPE_VIDEO_CAPTURE:
     case V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE:
@@ -1595,13 +1618,31 @@ gst_v4l2_buffer_pool_process (GstV4l2BufferPool * pool, GstBuffer ** buf)
         case GST_V4L2_IO_DMABUF:
         case GST_V4L2_IO_MMAP:
         {
-          GstBuffer *to_queue;
+          GstBuffer *to_queue = NULL;
+          GstV4l2MemoryGroup *group;
+          gint index;
 
-          if ((*buf)->pool == bpool) {
-            /* nothing, we can queue directly */
-            to_queue = gst_buffer_ref (*buf);
-            GST_LOG_OBJECT (pool, "processing buffer from our pool");
-          } else {
+          if ((*buf)->pool != bpool)
+            goto copying;
+
+          if (!gst_v4l2_is_buffer_valid (*buf, &group))
+            goto copying;
+
+          index = group->buffer.index;
+
+          GST_LOG_OBJECT (pool, "processing buffer %i from our pool", index);
+
+          index = group->buffer.index;
+          if (pool->buffers[index] != NULL) {
+            GST_LOG_OBJECT (pool, "buffer %i already queued, copying", index);
+            goto copying;
+          }
+
+          /* we can queue directly */
+          to_queue = gst_buffer_ref (*buf);
+
+        copying:
+          if (to_queue == NULL) {
             GstBufferPoolAcquireParams params = { 0 };
 
             GST_LOG_OBJECT (pool, "alloc buffer from our pool");
@@ -1626,15 +1667,12 @@ gst_v4l2_buffer_pool_process (GstV4l2BufferPool * pool, GstBuffer ** buf)
 
           /* if we are not streaming yet (this is the first buffer, start
            * streaming now */
-          if (!pool->streaming) {
-            if (!start_streaming (pool)) {
-              gst_buffer_unref (to_queue);
-              goto start_failed;
-            }
+          if (!gst_v4l2_buffer_pool_streamon (pool)) {
+            gst_buffer_unref (to_queue);
+            goto start_failed;
           }
 
-          if (pool->num_queued ==
-              gst_v4l2_allocator_num_allocated (pool->vallocator)) {
+          if (g_atomic_int_get (&pool->num_queued) >= pool->min_latency) {
             GstBuffer *out;
             /* all buffers are queued, try to dequeue one and release it back
              * into the pool so that _acquire can get to it again. */
@@ -1661,81 +1699,37 @@ done:
   /* ERRORS */
 copy_failed:
   {
-    GST_ERROR_OBJECT (obj->element, "failed to copy buffer");
+    GST_ERROR_OBJECT (pool, "failed to copy buffer");
     return ret;
   }
 eos:
   {
-    GST_DEBUG_OBJECT (obj->element, "end of stream reached");
+    GST_DEBUG_OBJECT (pool, "end of stream reached");
     return GST_FLOW_EOS;
   }
 acquire_failed:
   {
-    GST_WARNING_OBJECT (obj->element, "failed to acquire a buffer: %s",
-        gst_flow_get_name (ret));
+    if (ret == GST_FLOW_FLUSHING)
+      GST_DEBUG_OBJECT (pool, "flushing");
+    else
+      GST_WARNING_OBJECT (pool, "failed to acquire a buffer: %s",
+          gst_flow_get_name (ret));
     return ret;
   }
 prepare_failed:
   {
-    GST_ERROR_OBJECT (obj->element, "failed to prepare data");
+    GST_ERROR_OBJECT (pool, "failed to prepare data");
     return ret;
   }
 queue_failed:
   {
-    GST_ERROR_OBJECT (obj->element, "failed to queue buffer");
+    GST_ERROR_OBJECT (pool, "failed to queue buffer");
     return ret;
   }
-start_failed:
-  {
-    GST_ERROR_OBJECT (obj->element, "failed to start streaming");
-    return GST_FLOW_ERROR;
-  }
-}
-
-
-/**
- * gst_v4l2_buffer_pool_stop_streaming:
- * @bpool: a #GstBufferPool
- *
- * First, set obj->poll to be flushing
- * Call STREAMOFF to clear QUEUED flag on every driver buffers.
- * Then release all buffers that are in pool->buffers array.
- *
- * Returns: TRUE on success.
- */
-gboolean
-gst_v4l2_buffer_pool_stop_streaming (GstV4l2BufferPool * pool)
-{
-  GST_DEBUG_OBJECT (pool, "stop streaming");
-
-  if (!stop_streaming (pool))
-    goto stop_failed;
-
-  return TRUE;
-
-  /* ERRORS */
-stop_failed:
-  {
-    GST_ERROR_OBJECT (pool, "failed to stop streaming");
-    return FALSE;
-  }
-}
-
-gboolean
-gst_v4l2_buffer_pool_start_streaming (GstV4l2BufferPool * pool)
-{
-  GST_DEBUG_OBJECT (pool, "start straming");
-
-  if (!start_streaming (pool))
-    goto start_failed;
-
-  return TRUE;
-
-  /* ERRORS */
 start_failed:
   {
     GST_ERROR_OBJECT (pool, "failed to start streaming");
-    return FALSE;
+    return GST_FLOW_ERROR;
   }
 }
 
diff --git a/sys/v4l2/gstv4l2bufferpool.h b/sys/v4l2/gstv4l2bufferpool.h
index 3459637d5187ae5aa314cfc5afa75f66b47ae287..65486bff8ee1aebac97e3ebeb02c1f6f8826857c 100644
--- a/sys/v4l2/gstv4l2bufferpool.h
+++ b/sys/v4l2/gstv4l2bufferpool.h
@@ -50,6 +50,8 @@ struct _GstV4l2BufferPool
 
   GstV4l2Object *obj;        /* the v4l2 object */
   gint video_fd;             /* a dup(2) of the v4l2object's video_fd */
+  GstPoll *poll;             /* a poll for video_fd */
+  gboolean can_poll_device;
 
   GstV4l2Allocator *vallocator;
   GstAllocator *allocator;
@@ -60,7 +62,8 @@ struct _GstV4l2BufferPool
 
   gboolean add_videometa;    /* set if video meta should be added */
 
-  guint num_buffers;         /* number of buffers we use */
+  guint min_latency;         /* number of buffers we will hold */
+  guint max_latency;         /* number of buffers we can hold */
   guint num_queued;          /* number of buffers queued in the driver */
   guint copy_threshold;      /* when our pool runs lower, start handing out copies */
 
@@ -84,9 +87,6 @@ GstBufferPool *     gst_v4l2_buffer_pool_new     (GstV4l2Object *obj, GstCaps *c
 
 GstFlowReturn       gst_v4l2_buffer_pool_process (GstV4l2BufferPool * bpool, GstBuffer ** buf);
 
-gboolean            gst_v4l2_buffer_pool_stop_streaming   (GstV4l2BufferPool * pool);
-gboolean            gst_v4l2_buffer_pool_start_streaming  (GstV4l2BufferPool * pool);
-
 void                gst_v4l2_buffer_pool_set_other_pool (GstV4l2BufferPool * pool,
                                                          GstBufferPool * other_pool);
 
diff --git a/sys/v4l2/gstv4l2devicemonitor.c b/sys/v4l2/gstv4l2devicemonitor.c
index ef967bc41f7d317d4bf78bc5346ab5c32867a193..f3f1c0bb27ced29a324805c5037dc518c8253034 100644
--- a/sys/v4l2/gstv4l2devicemonitor.c
+++ b/sys/v4l2/gstv4l2devicemonitor.c
@@ -458,7 +458,7 @@ gst_v4l2_device_new (const gchar * device_path, const gchar * device_name,
   }
 
   gstdev = g_object_new (GST_TYPE_V4L2_DEVICE, "device-path", device_path,
-      "display-name", device_name, "caps", caps, "klass", klass, NULL);
+      "display-name", device_name, "caps", caps, "device-class", klass, NULL);
 
   gstdev->element = element;
 
diff --git a/sys/v4l2/gstv4l2object.c b/sys/v4l2/gstv4l2object.c
index f868d56b10a63e7121118da1ca2ccb1e28ee0559..69990ff0229ce559cdeb49dd796dee8b4e10ddd4 100644
--- a/sys/v4l2/gstv4l2object.c
+++ b/sys/v4l2/gstv4l2object.c
@@ -431,7 +431,6 @@ gst_v4l2_object_new (GstElement * element,
   v4l2object->update_fps_func = update_fps_func;
 
   v4l2object->video_fd = -1;
-  v4l2object->poll = gst_poll_new (TRUE);
   v4l2object->active = FALSE;
   v4l2object->videodev = g_strdup (default_device);
 
@@ -461,9 +460,6 @@ gst_v4l2_object_destroy (GstV4l2Object * v4l2object)
   if (v4l2object->videodev)
     g_free (v4l2object->videodev);
 
-  if (v4l2object->poll)
-    gst_poll_free (v4l2object->poll);
-
   if (v4l2object->channel)
     g_free (v4l2object->channel);
 
@@ -3043,19 +3039,27 @@ gst_v4l2_object_caps_equal (GstV4l2Object * v4l2object, GstCaps * caps)
 gboolean
 gst_v4l2_object_unlock (GstV4l2Object * v4l2object)
 {
-  GST_LOG_OBJECT (v4l2object->element, "flush poll");
-  gst_poll_set_flushing (v4l2object->poll, TRUE);
+  gboolean ret = TRUE;
 
-  return TRUE;
+  GST_LOG_OBJECT (v4l2object->element, "start flushing");
+
+  if (v4l2object->pool && gst_buffer_pool_is_active (v4l2object->pool))
+    gst_buffer_pool_set_flushing (v4l2object->pool, TRUE);
+
+  return ret;
 }
 
 gboolean
 gst_v4l2_object_unlock_stop (GstV4l2Object * v4l2object)
 {
-  GST_LOG_OBJECT (v4l2object->element, "flush stop poll");
-  gst_poll_set_flushing (v4l2object->poll, FALSE);
+  gboolean ret = TRUE;
 
-  return TRUE;
+  GST_LOG_OBJECT (v4l2object->element, "stop flushing");
+
+  if (v4l2object->pool && gst_buffer_pool_is_active (v4l2object->pool))
+    gst_buffer_pool_set_flushing (v4l2object->pool, FALSE);
+
+  return ret;
 }
 
 gboolean
@@ -3143,6 +3147,8 @@ gst_v4l2_object_decide_allocation (GstV4l2Object * obj, GstQuery * query)
   gboolean has_video_meta;
   gboolean can_share_own_pool, pushing_from_our_pool = FALSE;
   struct v4l2_control ctl = { 0, };
+  GstAllocator *allocator = NULL;
+  GstAllocationParams params = { 0 };
 
   GST_DEBUG_OBJECT (obj->element, "decide allocation");
 
@@ -3156,6 +3162,9 @@ gst_v4l2_object_decide_allocation (GstV4l2Object * obj, GstQuery * query)
       goto pool_failed;
   }
 
+  if (gst_query_get_n_allocation_params (query) > 0)
+    gst_query_parse_nth_allocation_param (query, 0, &allocator, &params);
+
   if (gst_query_get_n_allocation_pools (query) > 0) {
     gst_query_parse_nth_allocation_pool (query, 0, &pool, &size, &min, &max);
     update = TRUE;
@@ -3259,19 +3268,20 @@ gst_v4l2_object_decide_allocation (GstV4l2Object * obj, GstQuery * query)
      * driver and 1 more, so we don't endup up with everything downstream or
      * held by the decoder. */
     own_min = min + obj->min_buffers_for_capture + 1;
-
-    /* Update min/max so the base class does not reset our settings */
-    min = own_min;
-    max = 0;
   } else {
     /* In this case we'll have to configure two buffer pool. For our buffer
      * pool, we'll need what the driver one, and one more, so we can dequeu */
     own_min = obj->min_buffers_for_capture + 1;
+    own_min = MAX (own_min, GST_V4L2_MIN_BUFFERS);
 
     /* for the downstream pool, we keep what downstream wants, though ensure
      * at least a minimum if downstream didn't suggest anything (we are
      * expecting the base class to create a default one for the context) */
     min = MAX (min, GST_V4L2_MIN_BUFFERS);
+
+    /* To import we need the other pool to hold at least own_min */
+    if (obj->pool == pool)
+      min += own_min;
   }
 
   /* Request a bigger max, if one was suggested but it's too small */
@@ -3285,16 +3295,17 @@ gst_v4l2_object_decide_allocation (GstV4l2Object * obj, GstQuery * query)
   /* If already configured/active, skip it */
   /* FIXME not entirely correct, See bug 728268 */
   if (gst_buffer_pool_is_active (obj->pool)) {
-    gst_buffer_pool_config_get_params (config, NULL, &size, &min, &max);
+    gst_structure_free (config);
     goto setup_other_pool;
   }
 
-  if (obj->need_video_meta) {
+  if (obj->need_video_meta || has_video_meta) {
     GST_DEBUG_OBJECT (obj->element, "activate Video Meta");
     gst_buffer_pool_config_add_option (config,
         GST_BUFFER_POOL_OPTION_VIDEO_META);
   }
 
+  gst_buffer_pool_config_set_allocator (config, allocator, &params);
   gst_buffer_pool_config_set_params (config, caps, size, own_min, 0);
 
   GST_DEBUG_OBJECT (obj->element, "setting own pool config to %"
@@ -3308,9 +3319,6 @@ gst_v4l2_object_decide_allocation (GstV4l2Object * obj, GstQuery * query)
         GST_PTR_FORMAT, config);
 
     /* our pool will adjust the maximum buffer, which we are fine with */
-    if (obj->pool == pool)
-      gst_buffer_pool_config_get_params (config, NULL, &size, &min, &max);
-
     if (!gst_buffer_pool_set_config (obj->pool, config))
       goto config_failed;
   }
@@ -3322,10 +3330,11 @@ setup_other_pool:
     other_pool = pool;
 
   if (other_pool) {
-    if (gst_buffer_pool_is_active (obj->pool))
+    if (gst_buffer_pool_is_active (other_pool))
       goto done;
 
-    config = gst_buffer_pool_get_config (pool);
+    config = gst_buffer_pool_get_config (other_pool);
+    gst_buffer_pool_config_set_allocator (config, allocator, &params);
     gst_buffer_pool_config_set_params (config, caps, size, min, max);
 
     GST_DEBUG_OBJECT (obj->element, "setting other pool config to %"
@@ -3338,16 +3347,35 @@ setup_other_pool:
           GST_BUFFER_POOL_OPTION_VIDEO_META);
     }
 
-    /* TODO check return value, validate changes and confirm */
-    gst_buffer_pool_set_config (pool, config);
+    if (!gst_buffer_pool_set_config (other_pool, config)) {
+      config = gst_buffer_pool_get_config (other_pool);
+
+      if (!gst_buffer_pool_config_validate_params (config, caps, size, min,
+              max)) {
+        gst_structure_free (config);
+        goto config_failed;
+      }
+
+      if (!gst_buffer_pool_set_config (other_pool, config))
+        goto config_failed;
+    }
   }
 
+  /* For simplicity, simply read back the active configuration, so our base
+   * class get the right information */
+  config = gst_buffer_pool_get_config (pool);
+  gst_buffer_pool_config_get_params (config, NULL, &size, &min, &max);
+  gst_structure_free (config);
+
 done:
   if (update)
     gst_query_set_nth_allocation_pool (query, 0, pool, size, min, max);
   else
     gst_query_add_allocation_pool (query, pool, size, min, max);
 
+  if (allocator)
+    gst_object_unref (allocator);
+
   if (pool)
     gst_object_unref (pool);
 
@@ -3372,6 +3400,9 @@ no_size:
   }
 cleanup:
   {
+    if (allocator)
+      gst_object_unref (allocator);
+
     if (pool)
       gst_object_unref (pool);
     return FALSE;
diff --git a/sys/v4l2/gstv4l2object.h b/sys/v4l2/gstv4l2object.h
index dbab52744484469cfa0afb8763e2b22f264d93dc..c13cd645680c5e176e36de9d8dc07d1cc2f3e8be 100644
--- a/sys/v4l2/gstv4l2object.h
+++ b/sys/v4l2/gstv4l2object.h
@@ -88,8 +88,6 @@ struct _GstV4l2Object {
   /* the video-device's file descriptor */
   gint video_fd;
   GstV4l2IOMode mode;
-  GstPoll * poll;
-  gboolean can_poll_device;
 
   gboolean active;
   gboolean streaming;
diff --git a/sys/v4l2/gstv4l2sink.c b/sys/v4l2/gstv4l2sink.c
index 93f20bb818cc98fc6337585ff3fbe2a9adc581ca..e9b6efbd84ace411765cd0c1c1c540ad85a92aa1 100644
--- a/sys/v4l2/gstv4l2sink.c
+++ b/sys/v4l2/gstv4l2sink.c
@@ -114,11 +114,7 @@ static gboolean gst_v4l2sink_propose_allocation (GstBaseSink * bsink,
     GstQuery * query);
 static GstCaps *gst_v4l2sink_get_caps (GstBaseSink * bsink, GstCaps * filter);
 static gboolean gst_v4l2sink_set_caps (GstBaseSink * bsink, GstCaps * caps);
-#if 0
-static GstFlowReturn gst_v4l2sink_buffer_alloc (GstBaseSink * bsink,
-    guint64 offset, guint size, GstCaps * caps, GstBuffer ** buf);
-#endif
-static GstFlowReturn gst_v4l2sink_show_frame (GstBaseSink * bsink,
+static GstFlowReturn gst_v4l2sink_show_frame (GstVideoSink * bsink,
     GstBuffer * buf);
 
 static void
@@ -127,10 +123,12 @@ gst_v4l2sink_class_init (GstV4l2SinkClass * klass)
   GObjectClass *gobject_class;
   GstElementClass *element_class;
   GstBaseSinkClass *basesink_class;
+  GstVideoSinkClass *videosink_class;
 
   gobject_class = G_OBJECT_CLASS (klass);
   element_class = GST_ELEMENT_CLASS (klass);
   basesink_class = GST_BASE_SINK_CLASS (klass);
+  videosink_class = GST_VIDEO_SINK_CLASS (klass);
 
   gobject_class->finalize = (GObjectFinalizeFunc) gst_v4l2sink_finalize;
   gobject_class->set_property = gst_v4l2sink_set_property;
@@ -187,7 +185,8 @@ gst_v4l2sink_class_init (GstV4l2SinkClass * klass)
   basesink_class->set_caps = GST_DEBUG_FUNCPTR (gst_v4l2sink_set_caps);
   basesink_class->propose_allocation =
       GST_DEBUG_FUNCPTR (gst_v4l2sink_propose_allocation);
-  basesink_class->render = GST_DEBUG_FUNCPTR (gst_v4l2sink_show_frame);
+
+  videosink_class->show_frame = GST_DEBUG_FUNCPTR (gst_v4l2sink_show_frame);
 
   klass->v4l2_class_devices = NULL;
 
@@ -536,15 +535,36 @@ static gboolean
 gst_v4l2sink_propose_allocation (GstBaseSink * bsink, GstQuery * query)
 {
   GstV4l2Sink *v4l2sink = GST_V4L2SINK (bsink);
-  return gst_v4l2_object_propose_allocation (v4l2sink->v4l2object, query);
+  gboolean last_sample_enabled;
+
+  if (!gst_v4l2_object_propose_allocation (v4l2sink->v4l2object, query))
+    return FALSE;
+
+  g_object_get (bsink, "enable-last-sample", &last_sample_enabled, NULL);
+
+  if (last_sample_enabled) {
+    GstBufferPool *pool;
+    guint size, min, max;
+
+    gst_query_parse_nth_allocation_pool (query, 0, &pool, &size, &min, &max);
+
+    /* we need 1 more, otherwise we'll run out of buffers at preroll */
+    min++;
+    if (max < min)
+      max = min;
+
+    gst_query_set_nth_allocation_pool (query, 0, pool, size, min, max);
+  }
+
+  return TRUE;
 }
 
 /* called after A/V sync to render frame */
 static GstFlowReturn
-gst_v4l2sink_show_frame (GstBaseSink * bsink, GstBuffer * buf)
+gst_v4l2sink_show_frame (GstVideoSink * vsink, GstBuffer * buf)
 {
   GstFlowReturn ret;
-  GstV4l2Sink *v4l2sink = GST_V4L2SINK (bsink);
+  GstV4l2Sink *v4l2sink = GST_V4L2SINK (vsink);
   GstV4l2Object *obj = v4l2sink->v4l2object;
   GstBufferPool *bpool = GST_BUFFER_POOL (obj->pool);
 
@@ -557,7 +577,7 @@ gst_v4l2sink_show_frame (GstBaseSink * bsink, GstBuffer * buf)
     GstStructure *config;
 
     /* this pool was not activated, configure and activate */
-    GST_DEBUG_OBJECT (bsink, "activating pool");
+    GST_DEBUG_OBJECT (v4l2sink, "activating pool");
 
     config = gst_buffer_pool_get_config (bpool);
     gst_buffer_pool_config_add_option (config,
@@ -576,12 +596,12 @@ gst_v4l2sink_show_frame (GstBaseSink * bsink, GstBuffer * buf)
   /* ERRORS */
 not_negotiated:
   {
-    GST_ERROR_OBJECT (bsink, "not negotiated");
+    GST_ERROR_OBJECT (v4l2sink, "not negotiated");
     return GST_FLOW_NOT_NEGOTIATED;
   }
 activate_failed:
   {
-    GST_ELEMENT_ERROR (bsink, RESOURCE, SETTINGS,
+    GST_ELEMENT_ERROR (v4l2sink, RESOURCE, SETTINGS,
         (_("Failed to allocated required memory.")),
         ("Buffer pool activation failed"));
     return GST_FLOW_ERROR;
diff --git a/sys/v4l2/gstv4l2src.c b/sys/v4l2/gstv4l2src.c
index 12a30df2c5111141fc05e4d63aa9198f8cb60ecf..1386333e706420dd89acb90cb2b2acd6b6774e5c 100644
--- a/sys/v4l2/gstv4l2src.c
+++ b/sys/v4l2/gstv4l2src.c
@@ -505,7 +505,7 @@ gst_v4l2src_query (GstBaseSrc * bsrc, GstQuery * query)
 
       /* max latency is total duration of the frame buffer */
       if (obj->pool != NULL)
-        num_buffers = GST_V4L2_BUFFER_POOL_CAST (obj->pool)->num_buffers;
+        num_buffers = GST_V4L2_BUFFER_POOL_CAST (obj->pool)->max_latency;
 
       if (num_buffers == 0)
         max_latency = -1;
diff --git a/sys/v4l2/gstv4l2transform.c b/sys/v4l2/gstv4l2transform.c
index a314bd0efe6217ac34197bc43633e4723ce75fa7..4ccddbba75ec4cedb8de8d97da8981a75c043240 100644
--- a/sys/v4l2/gstv4l2transform.c
+++ b/sys/v4l2/gstv4l2transform.c
@@ -533,19 +533,6 @@ gst_v4l2_transform_sink_event (GstBaseTransform * trans, GstEvent * event)
       gst_v4l2_object_unlock (self->v4l2output);
       gst_v4l2_object_unlock (self->v4l2capture);
       break;
-    case GST_EVENT_FLUSH_STOP:
-      GST_DEBUG_OBJECT (self, "flush stop");
-
-      if (self->v4l2output->pool) {
-        gst_v4l2_buffer_pool_stop_streaming (GST_V4L2_BUFFER_POOL
-            (self->v4l2output->pool));
-        gst_v4l2_buffer_pool_start_streaming (GST_V4L2_BUFFER_POOL
-            (self->v4l2capture->pool));
-        gst_v4l2_object_unlock_stop (self->v4l2output);
-      }
-      if (self->v4l2capture->pool)
-        gst_v4l2_buffer_pool_stop_streaming (GST_V4L2_BUFFER_POOL
-            (self->v4l2capture->pool));
     default:
       break;
   }
@@ -555,12 +542,9 @@ gst_v4l2_transform_sink_event (GstBaseTransform * trans, GstEvent * event)
   switch (GST_EVENT_TYPE (event)) {
     case GST_EVENT_FLUSH_STOP:
       /* Buffer should be back now */
-      if (self->v4l2capture->pool) {
-        gst_v4l2_buffer_pool_start_streaming (GST_V4L2_BUFFER_POOL
-            (self->v4l2capture->pool));
-        gst_v4l2_object_unlock_stop (self->v4l2capture);
-      }
-      GST_DEBUG_OBJECT (self, "flush stop done");
+      GST_DEBUG_OBJECT (self, "flush stop");
+      gst_v4l2_object_unlock_stop (self->v4l2capture);
+      gst_v4l2_object_unlock_stop (self->v4l2output);
       break;
     default:
       break;
diff --git a/sys/v4l2/gstv4l2videodec.c b/sys/v4l2/gstv4l2videodec.c
index 1b4a051c731b46ce8f3d546ea6b57642ed0d985a..f3e03c78d18339847e7b2c15497bfb40633f9fce 100644
--- a/sys/v4l2/gstv4l2videodec.c
+++ b/sys/v4l2/gstv4l2videodec.c
@@ -259,23 +259,23 @@ gst_v4l2_video_dec_flush (GstVideoDecoder * decoder)
 {
   GstV4l2VideoDec *self = GST_V4L2_VIDEO_DEC (decoder);
 
-  GST_DEBUG_OBJECT (self, "Flushing");
+  GST_DEBUG_OBJECT (self, "Flushed");
 
-  /* Wait for capture thread to stop */
-  GST_VIDEO_DECODER_STREAM_UNLOCK (decoder);
-  gst_v4l2_object_unlock (self->v4l2capture);
-  gst_pad_stop_task (decoder->srcpad);
-  GST_VIDEO_DECODER_STREAM_LOCK (decoder);
+  /* Ensure the processing thread has stopped for the reverse playback
+   * discount case */
+  if (g_atomic_int_get (&self->processing)) {
+    GST_VIDEO_DECODER_STREAM_UNLOCK (decoder);
 
-  self->output_flow = GST_FLOW_OK;
+    gst_v4l2_object_unlock (self->v4l2output);
+    gst_v4l2_object_unlock (self->v4l2capture);
+    gst_pad_stop_task (decoder->srcpad);
+    GST_VIDEO_DECODER_STREAM_UNLOCK (decoder);
+  }
 
-  if (self->v4l2output->pool)
-    gst_v4l2_buffer_pool_stop_streaming (GST_V4L2_BUFFER_POOL
-        (self->v4l2output->pool));
+  self->output_flow = GST_FLOW_OK;
 
-  if (self->v4l2capture->pool)
-    gst_v4l2_buffer_pool_stop_streaming (GST_V4L2_BUFFER_POOL
-        (self->v4l2capture->pool));
+  gst_v4l2_object_unlock_stop (self->v4l2output);
+  gst_v4l2_object_unlock_stop (self->v4l2capture);
 
   return TRUE;
 }
@@ -293,7 +293,7 @@ gst_v4l2_video_dec_finish (GstVideoDecoder * decoder)
   GstFlowReturn ret = GST_FLOW_OK;
   GstBuffer *buffer;
 
-  if (!self->processing)
+  if (!g_atomic_int_get (&self->processing))
     goto done;
 
   GST_DEBUG_OBJECT (self, "Finishing decoding");
@@ -308,14 +308,12 @@ gst_v4l2_video_dec_finish (GstVideoDecoder * decoder)
             v4l2output->pool), &buffer);
     gst_buffer_unref (buffer);
   }
-  GST_VIDEO_DECODER_STREAM_LOCK (decoder);
 
-  /* Ensure the processing thread has stopped */
-  if (g_atomic_int_get (&self->processing)) {
-    gst_v4l2_object_unlock (self->v4l2capture);
-    gst_pad_stop_task (decoder->srcpad);
-    g_assert (g_atomic_int_get (&self->processing) == FALSE);
-  }
+  /* and ensure the processing thread has stopped in case another error
+   * occured. */
+  gst_v4l2_object_unlock (self->v4l2capture);
+  gst_pad_stop_task (decoder->srcpad);
+  GST_VIDEO_DECODER_STREAM_LOCK (decoder);
 
   if (ret == GST_FLOW_FLUSHING)
     ret = self->output_flow;
@@ -420,6 +418,20 @@ beach:
   gst_pad_pause_task (decoder->srcpad);
 }
 
+static void
+gst_v4l2_video_dec_loop_stopped (GstV4l2VideoDec * self)
+{
+  /* When flushing, decoding thread may never run */
+  if (g_atomic_int_get (&self->processing)) {
+    GST_DEBUG_OBJECT (self, "Early stop of decoding thread");
+    self->output_flow = GST_FLOW_FLUSHING;
+    g_atomic_int_set (&self->processing, FALSE);
+  }
+
+  GST_DEBUG_OBJECT (self, "Decoding task destroyed: %s",
+      gst_flow_get_name (self->output_flow));
+}
+
 static GstFlowReturn
 gst_v4l2_video_dec_handle_frame (GstVideoDecoder * decoder,
     GstVideoCodecFrame * frame)
@@ -475,11 +487,9 @@ gst_v4l2_video_dec_handle_frame (GstVideoDecoder * decoder,
     }
 
     GST_VIDEO_DECODER_STREAM_UNLOCK (decoder);
-    gst_v4l2_object_unlock_stop (self->v4l2output);
     ret =
         gst_v4l2_buffer_pool_process (GST_V4L2_BUFFER_POOL (self->
             v4l2output->pool), &codec_data);
-    gst_v4l2_object_unlock (self->v4l2output);
     GST_VIDEO_DECODER_STREAM_LOCK (decoder);
 
     gst_buffer_unref (codec_data);
@@ -508,8 +518,9 @@ gst_v4l2_video_dec_handle_frame (GstVideoDecoder * decoder,
   }
 
   if (g_atomic_int_get (&self->processing) == FALSE) {
-    /* It possible that the processing thread stopped due to an error */
-    if (self->output_flow != GST_FLOW_OK) {
+    /* It's possible that the processing thread stopped due to an error */
+    if (self->output_flow != GST_FLOW_OK &&
+        self->output_flow != GST_FLOW_FLUSHING) {
       GST_DEBUG_OBJECT (self, "Processing loop stopped with error, leaving");
       ret = self->output_flow;
       goto drop;
@@ -517,19 +528,13 @@ gst_v4l2_video_dec_handle_frame (GstVideoDecoder * decoder,
 
     GST_DEBUG_OBJECT (self, "Starting decoding thread");
 
-    /* Enable processing input */
-    if (!gst_v4l2_buffer_pool_start_streaming (GST_V4L2_BUFFER_POOL
-            (self->v4l2capture->pool)))
-      goto start_streaming_failed;
-
-    gst_v4l2_object_unlock_stop (self->v4l2output);
-    gst_v4l2_object_unlock_stop (self->v4l2capture);
-
     /* Start the processing task, when it quits, the task will disable input
      * processing to unlock input if draining, or prevent potential block */
     g_atomic_int_set (&self->processing, TRUE);
-    gst_pad_start_task (decoder->srcpad,
-        (GstTaskFunction) gst_v4l2_video_dec_loop, self, NULL);
+    if (!gst_pad_start_task (decoder->srcpad,
+            (GstTaskFunction) gst_v4l2_video_dec_loop, self,
+            (GDestroyNotify) gst_v4l2_video_dec_loop_stopped))
+      goto start_task_failed;
   }
 
   if (frame->input_buffer) {
@@ -542,6 +547,9 @@ gst_v4l2_video_dec_handle_frame (GstVideoDecoder * decoder,
     if (ret == GST_FLOW_FLUSHING) {
       if (g_atomic_int_get (&self->processing) == FALSE)
         ret = self->output_flow;
+      goto drop;
+    } else if (ret != GST_FLOW_OK) {
+      goto process_failed;
     }
 
     /* No need to keep input arround */
@@ -558,25 +566,36 @@ not_negotiated:
     ret = GST_FLOW_NOT_NEGOTIATED;
     goto drop;
   }
-start_streaming_failed:
-  {
-    GST_ELEMENT_ERROR (self, RESOURCE, SETTINGS,
-        (_("Failed to re-enabled decoder.")),
-        ("Could not re-enqueue and start streaming on decide."));
-    return GST_FLOW_ERROR;
-  }
 activate_failed:
   {
     GST_ELEMENT_ERROR (self, RESOURCE, SETTINGS,
         (_("Failed to allocate required memory.")),
         ("Buffer pool activation failed"));
-    return GST_FLOW_ERROR;
+    ret = GST_FLOW_ERROR;
+    goto drop;
   }
 flushing:
   {
     ret = GST_FLOW_FLUSHING;
     goto drop;
   }
+
+start_task_failed:
+  {
+    GST_ELEMENT_ERROR (self, RESOURCE, FAILED,
+        (_("Failed to start decoding thread.")), (NULL));
+    g_atomic_int_set (&self->processing, FALSE);
+    ret = GST_FLOW_ERROR;
+    goto drop;
+  }
+process_failed:
+  {
+    GST_ELEMENT_ERROR (self, RESOURCE, FAILED,
+        (_("Failed to process frame.")),
+        ("Maybe be due to not enough memory or failing driver"));
+    ret = GST_FLOW_ERROR;
+    goto drop;
+  }
 drop:
   {
     gst_video_decoder_drop_frame (decoder, frame);
@@ -686,16 +705,31 @@ static gboolean
 gst_v4l2_video_dec_sink_event (GstVideoDecoder * decoder, GstEvent * event)
 {
   GstV4l2VideoDec *self = GST_V4L2_VIDEO_DEC (decoder);
+  gboolean ret;
 
   switch (GST_EVENT_TYPE (event)) {
     case GST_EVENT_FLUSH_START:
+      GST_DEBUG_OBJECT (self, "flush start");
       gst_v4l2_object_unlock (self->v4l2output);
       gst_v4l2_object_unlock (self->v4l2capture);
+      break;
     default:
       break;
   }
 
-  return GST_VIDEO_DECODER_CLASS (parent_class)->sink_event (decoder, event);
+  ret = GST_VIDEO_DECODER_CLASS (parent_class)->sink_event (decoder, event);
+
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_FLUSH_START:
+      /* The processing thread should stop now, wait for it */
+      gst_pad_stop_task (decoder->srcpad);
+      GST_DEBUG_OBJECT (self, "flush start done");
+      break;
+    default:
+      break;
+  }
+
+  return ret;
 }
 
 static GstStateChangeReturn
@@ -703,11 +737,13 @@ gst_v4l2_video_dec_change_state (GstElement * element,
     GstStateChange transition)
 {
   GstV4l2VideoDec *self = GST_V4L2_VIDEO_DEC (element);
+  GstVideoDecoder *decoder = GST_VIDEO_DECODER (element);
 
   if (transition == GST_STATE_CHANGE_PAUSED_TO_READY) {
     g_atomic_int_set (&self->active, FALSE);
     gst_v4l2_object_unlock (self->v4l2output);
     gst_v4l2_object_unlock (self->v4l2capture);
+    gst_pad_stop_task (decoder->srcpad);
   }
 
   return GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
diff --git a/sys/v4l2/v4l2_calls.c b/sys/v4l2/v4l2_calls.c
index 793685380b0c04674f78ba68abfa9f46af4cde5f..d1cc2842dbbae55b9a0285eb2424f2a6921d136b 100644
--- a/sys/v4l2/v4l2_calls.c
+++ b/sys/v4l2/v4l2_calls.c
@@ -514,7 +514,6 @@ gst_v4l2_open (GstV4l2Object * v4l2object)
 {
   struct stat st;
   int libv4l2_fd;
-  GstPollFD pollfd = GST_POLL_FD_INIT;
 
   GST_DEBUG_OBJECT (v4l2object->element, "Trying to open device %s",
       v4l2object->videodev);
@@ -551,8 +550,6 @@ gst_v4l2_open (GstV4l2Object * v4l2object)
   if (libv4l2_fd != -1)
     v4l2object->video_fd = libv4l2_fd;
 
-  v4l2object->can_poll_device = TRUE;
-
   /* get capabilities, error will be posted */
   if (!gst_v4l2_get_capabilities (v4l2object))
     goto error;
@@ -589,14 +586,6 @@ gst_v4l2_open (GstV4l2Object * v4l2object)
       "Opened device '%s' (%s) successfully",
       v4l2object->vcap.card, v4l2object->videodev);
 
-  pollfd.fd = v4l2object->video_fd;
-  gst_poll_add_fd (v4l2object->poll, &pollfd);
-  if (v4l2object->type == V4L2_BUF_TYPE_VIDEO_CAPTURE
-      || v4l2object->type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE)
-    gst_poll_fd_ctl_read (v4l2object->poll, &pollfd, TRUE);
-  else
-    gst_poll_fd_ctl_write (v4l2object->poll, &pollfd, TRUE);
-
   if (v4l2object->extra_controls)
     gst_v4l2_set_controls (v4l2object, v4l2object->extra_controls);
 
@@ -672,8 +661,6 @@ error:
 gboolean
 gst_v4l2_dup (GstV4l2Object * v4l2object, GstV4l2Object * other)
 {
-  GstPollFD pollfd = GST_POLL_FD_INIT;
-
   GST_DEBUG_OBJECT (v4l2object->element, "Trying to dup device %s",
       other->videodev);
 
@@ -696,16 +683,7 @@ gst_v4l2_dup (GstV4l2Object * v4l2object, GstV4l2Object * other)
       "Cloned device '%s' (%s) successfully",
       v4l2object->vcap.card, v4l2object->videodev);
 
-  pollfd.fd = v4l2object->video_fd;
-  gst_poll_add_fd (v4l2object->poll, &pollfd);
-  if (v4l2object->type == V4L2_BUF_TYPE_VIDEO_CAPTURE
-      || v4l2object->type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE)
-    gst_poll_fd_ctl_read (v4l2object->poll, &pollfd, TRUE);
-  else
-    gst_poll_fd_ctl_write (v4l2object->poll, &pollfd, TRUE);
-
   v4l2object->never_interlaced = other->never_interlaced;
-  v4l2object->can_poll_device = TRUE;
 
   return TRUE;
 
@@ -728,7 +706,6 @@ not_open:
 gboolean
 gst_v4l2_close (GstV4l2Object * v4l2object)
 {
-  GstPollFD pollfd = GST_POLL_FD_INIT;
   GST_DEBUG_OBJECT (v4l2object->element, "Trying to close %s",
       v4l2object->videodev);
 
@@ -737,8 +714,6 @@ gst_v4l2_close (GstV4l2Object * v4l2object)
 
   /* close device */
   v4l2_close (v4l2object->video_fd);
-  pollfd.fd = v4l2object->video_fd;
-  gst_poll_remove_fd (v4l2object->poll, &pollfd);
   v4l2object->video_fd = -1;
 
   /* empty lists */
diff --git a/sys/ximage/gstximagesrc.c b/sys/ximage/gstximagesrc.c
index cdb4a1d971db9928a915f9c810040f0c7e620412..17f4a4e97177f44225068c7fa9921fc981c92746 100644
--- a/sys/ximage/gstximagesrc.c
+++ b/sys/ximage/gstximagesrc.c
@@ -460,13 +460,15 @@ gst_ximage_src_ximage_get (GstXImageSrc * ximagesrc)
 
     meta = GST_META_XIMAGE_GET (ximage);
 
-    if ((meta->width != ximagesrc->width) ||
-        (meta->height != ximagesrc->height)) {
-      gst_ximage_buffer_free (ximage);
-    }
-
     ximagesrc->buffer_pool = g_slist_delete_link (ximagesrc->buffer_pool,
         ximagesrc->buffer_pool);
+
+    if ((meta->width == ximagesrc->width) ||
+        (meta->height == ximagesrc->height))
+      break;
+
+    gst_ximage_buffer_free (ximage);
+    ximage = NULL;
   }
   g_mutex_unlock (&ximagesrc->pool_lock);
 
diff --git a/tests/check/elements/rtp-payloading.c b/tests/check/elements/rtp-payloading.c
index 32d785fdaf9400a049527d307596c18d3fd8c5e1..2ce7a5cdeb21227939902c2ec9ede19d16a62ea2 100644
--- a/tests/check/elements/rtp-payloading.c
+++ b/tests/check/elements/rtp-payloading.c
@@ -79,6 +79,16 @@ rtp_pipeline_chain_list (GstPad * pad, GstObject * parent, GstBufferList * list)
   return GST_FLOW_OK;
 }
 
+static GstFlowReturn
+rtp_pipeline_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
+{
+  GstBufferList *list;
+
+  list = gst_buffer_list_new_sized (1);
+  gst_buffer_list_add (list, buf);
+  return rtp_pipeline_chain_list (pad, parent, list);
+}
+
 /*
  * RTP bus callback.
  */
@@ -303,6 +313,8 @@ rtp_pipeline_enable_lists (rtp_pipeline * p, guint mtu_size)
   pad = gst_element_get_static_pad (p->rtpdepay, "sink");
   gst_pad_set_chain_list_function (pad,
       GST_DEBUG_FUNCPTR (rtp_pipeline_chain_list));
+  /* .. to satisfy this silly test code in case someone dares push a buffer */
+  gst_pad_set_chain_function (pad, GST_DEBUG_FUNCPTR (rtp_pipeline_chain));
   gst_object_unref (pad);
 }
 
diff --git a/tests/check/elements/rtprtx.c b/tests/check/elements/rtprtx.c
index 9c6206a1fb3ba56eab91b387e5d93cddebe03132..706f2910b70e309639481a28bba9adbb0a99aa9d 100644
--- a/tests/check/elements/rtprtx.c
+++ b/tests/check/elements/rtprtx.c
@@ -416,6 +416,8 @@ start_test_drop_and_check_results (GstElement * bin, GstElement * rtppayloader,
   receive_rtxdata->seqnum_offset = 0;
   receive_rtxdata->seqnum_prev = 0;
 
+  *eos = FALSE;
+
   /* retrieve offset before going to paused */
   g_object_get (G_OBJECT (rtppayloader), "seqnum-offset",
       &receive_rtxdata->seqnum_offset, NULL);
diff --git a/win32/common/config.h b/win32/common/config.h
index e69e143e6e2b404d74fde1f6aff4301ff5f40986..4fd135c6ff6f8d7874c7264bc6ca6227d000df4e 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 "2014-05-21"
+#define GST_PACKAGE_RELEASE_DATETIME "2014-06-22"
 
 /* Define if static plugins should be built */
 #undef GST_PLUGIN_BUILD_STATIC
@@ -372,7 +372,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.3.2"
+#define PACKAGE_STRING "GStreamer Good Plug-ins 1.3.3"
 
 /* Define to the one symbol short name of this package. */
 #define PACKAGE_TARNAME "gst-plugins-good"
@@ -381,7 +381,7 @@
 #undef PACKAGE_URL
 
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "1.3.2"
+#define PACKAGE_VERSION "1.3.3"
 
 /* directory where plugins are located */
 #ifdef _DEBUG
@@ -415,7 +415,7 @@
 #undef TARGET_CPU
 
 /* Version number of package */
-#define VERSION "1.3.2"
+#define VERSION "1.3.3"
 
 /* old wavpack API */
 #undef WAVPACK_OLD_API