Merge tag 'upstream/1.10.0'

Upstream version 1.10.0
diff --git a/ChangeLog b/ChangeLog
index 081a7ed..a0c700e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,9 +1,797 @@
-=== release 1.9.90 ===
+=== release 1.10.0 ===
 
-2016-09-30  Sebastian Dröge <slomo@coaxion.net>
+2016-11-01  Sebastian Dröge <slomo@coaxion.net>
 
 	* configure.ac:
-	  releasing 1.9.90
+	  releasing 1.10.0
+
+2016-11-01 17:42:37 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* po/ky.po:
+	* po/sv.po:
+	  po: Update translations
+
+2016-10-31 19:26:31 +0600  Artem Martynovich <artem.martynovich@gmail.com>
+
+	* sys/directsound/gstdirectsoundsrc.c:
+	  directsoundsrc: Correctly cast mixer to uintptr
+	  https://bugzilla.gnome.org/show_bug.cgi?id=773720
+
+2016-10-28 10:05:20 +0200  Michael Olbrich <m.olbrich@pengutronix.de>
+
+	* ext/hls/gsthlsdemux.c:
+	  hlsdemux: don't try to access non-existant iframe variant
+	  If the playlist does not contain any iframe variants then
+	  demux->master->iframe_variants is NULL. If the previous variant is an
+	  iframe variant then there is at least one iframe variant and
+	  demux->master->iframe_variants->data can be safely used.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=773635
+
+2016-10-23 12:02:00 +0300  sezero <sezero@users.sourceforge.net>
+
+	* ext/timidity/gsttimidity.c:
+	  timidity: add support for libtimidity-0.2.x
+	  mid_istream_open_mem() doesn't accept an autofree argument as of
+	  libtimidity >= 0.2.0
+	  https://bugzilla.gnome.org/show_bug.cgi?id=772503
+
+2016-10-26 14:51:01 +0200  Daiki Ueno <dueno@redhat.com>
+
+	* ext/dtls/gstdtlscertificate.c:
+	* ext/dtls/gstdtlsconnection.c:
+	  dtls: port to OpenSSL 1.1.0
+	  Changes are:
+	  - Use the wrapper functions to access opaque data types.  To preserve
+	  backward compatibility, define fallback definitions
+	  - Remove the use of idiom "pqueue_size(ssl->d1->sent_messages)", since
+	  there is no replacement
+	  - Use RSA_generate_key_ex instead of the deprecated RSA_generate_key
+	  https://bugzilla.gnome.org/show_bug.cgi?id=773540
+
+2016-10-29 11:31:28 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/rawparse/gstrawbaseparse.c:
+	  rawparse: pass flow returns upstream
+	  rawvideoparse wouldn't error out on not-negotiated,
+	  but would just keep on going, because it didn't pass
+	  the flow return value back to the parent class and
+	  thus upstream, so the source wouldnt' stop streaming.
+
+2016-10-28 07:17:56 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
+
+	* gst-libs/gst/gl/Makefile.am:
+	* gst-libs/gst/gl/win32/Makefile.am:
+	  build: Also need to define GST_EXPORTS for Autotools
+	  The change to use GST_EXPORT for symbols under Windows requires
+	  GST_EXPORTS for internal use, and that is also needed under Autotools.
+	  The same thing is done for gstreamer-1.0.dll in -core.
+
+2016-10-28 06:23:02 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
+
+	* gst-libs/gst/gl/gstglapi.h:
+	* gst-libs/gst/gl/gstglshader.c:
+	* gst-libs/gst/gl/gstglsl_private.h:
+	  gstgl: Re-enable WINAPI on _MSC_VER
+	  The calling convention may be deprecated, but we still need it for
+	  OpenGL. The build issue was caused by an incorrect syntax being used for
+	  the WINAPI (__stdcall) prototype in function pointers which was accepted
+	  by GCC but is rejected by MSVC.
+
+2016-10-27 23:09:38 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
+
+	* win32/common/libgstgl.def:
+	  Just remove win32/common/libgstgl.def
+	  It was always wrong since the symbols being exported in gstgl-1.0.dll
+	  are platform-specific, and the check we do in dist checks it on all
+	  platforms (which usually means Linux) and the list is instead
+	  Linux-specific right now.
+	  Even if we fix that, it can still never be right because it depends on
+	  your configuration even on a specific platform. For instance, when we
+	  start building EGL support on Windows using ANGLE, the symbol list will
+	  change depending on whether that is enabled or not.
+	  We also don't need this anymore since we use GST_EXPORT for all
+	  functions exported on Windows now.
+
+2016-10-27 09:25:20 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
+
+	* ext/gl/gstglstereosplit.c:
+	* ext/openh264/gstopenh264enc.cpp:
+	* gst/videoparsers/gsth264parse.c:
+	  plugins: Use explicit type conversion from enums
+	  MSVC warns about this because it's a C++ compiler, and this actually
+	  results in useful things such as the incorrect 'gboolean' return value
+	  for functions that return GstFlowReturn, so let's do explicit
+	  conversions to reduce the noise and increase its efficacy.
+
+2016-10-27 09:11:26 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
+
+	* ext/dash/gstdashdemux.c:
+	* ext/gl/gstgltransformation.c:
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+	* gst-libs/gst/gl/gstglcolorconvert.c:
+	* gst-libs/gst/gl/gstglviewconvert.c:
+	* gst/fieldanalysis/gstfieldanalysis.c:
+	* gst/freeverb/gstfreeverb.c:
+	* gst/gaudieffects/gstgaussblur.c:
+	* gst/speed/gstspeed.c:
+	* gst/stereo/gststereo.c:
+	  Explicitly define float constants as float
+	  With MSVC, this gives the following warning:
+	  warning C4305: 'function': truncation from 'double' to 'gfloat'
+	  Apparently, MSVC does not figure out what type to use for constants
+	  based on the assignment. This warning is very spammy, so let's try to
+	  fix it.
+
+2016-10-27 09:08:41 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
+
+	* ext/dts/gstdtsdec.c:
+	* ext/faad/gstfaad.c:
+	* ext/gl/gstglviewconvert.c:
+	* ext/schroedinger/gstschrodec.c:
+	* gst-libs/gst/audio/gstaudioaggregator.c:
+	  Fix incorrect return type in several functions
+	  All these should return GstFlowReturn, not gboolean
+
+2016-10-27 09:06:33 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
+
+	* meson.build:
+	  meson: Don't warn about C4146 with MSVC
+	  The error is:
+	  unary minus operator applied to unsigned type, result still unsigned
+	  This is a commonly-done operation in gstreamer and it's done on purpose.
+	  It's just noise.
+
+2016-10-27 08:17:58 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
+
+	* gst-libs/gst/gl/gstglapi.h:
+	* gst-libs/gst/gl/gstglbasefilter.h:
+	* gst-libs/gst/gl/gstglbasememory.h:
+	* gst-libs/gst/gl/gstglbuffer.h:
+	* gst-libs/gst/gl/gstglbufferpool.h:
+	* gst-libs/gst/gl/gstglcolorconvert.h:
+	* gst-libs/gst/gl/gstglcontext.h:
+	* gst-libs/gst/gl/gstglcontrolbindingproxy.h:
+	* gst-libs/gst/gl/gstgldebug.h:
+	* gst-libs/gst/gl/gstgldisplay.h:
+	* gst-libs/gst/gl/gstglfeature.h:
+	* gst-libs/gst/gl/gstglfilter.h:
+	* gst-libs/gst/gl/gstglformat.h:
+	* gst-libs/gst/gl/gstglframebuffer.h:
+	* gst-libs/gst/gl/gstglmemory.h:
+	* gst-libs/gst/gl/gstglmemorypbo.h:
+	* gst-libs/gst/gl/gstgloverlaycompositor.h:
+	* gst-libs/gst/gl/gstglquery.h:
+	* gst-libs/gst/gl/gstglshader.h:
+	* gst-libs/gst/gl/gstglshaderstrings.h:
+	* gst-libs/gst/gl/gstglsl.h:
+	* gst-libs/gst/gl/gstglslstage.h:
+	* gst-libs/gst/gl/gstglsyncmeta.h:
+	* gst-libs/gst/gl/gstglupload.h:
+	* gst-libs/gst/gl/gstglutils.h:
+	* gst-libs/gst/gl/gstglviewconvert.h:
+	* gst-libs/gst/gl/gstglwindow.h:
+	  gstgl: Add GST_EXPORT to all symbols used on Windows
+	  This is a requirement for those symbols to be exported in gstgl-1.0.dll
+	  when building with the MSVC compiler
+
+2016-10-27 07:29:36 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
+
+	* gst-libs/gst/gl/meson.build:
+	  meson: Add support for building WGL on Windows
+	  Currently only tested with MSVC.
+
+2016-10-27 09:10:03 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
+
+	* ext/gl/gstgloverlay.c:
+	  ext/gl: Don't define boolean on Windows with MSVC
+	  The headers we include already define boolean on Windows with MSVC, and
+	  it leads to a typedef redefinition error with jpeglib.h which tries to
+	  redefine it in jmorecfg.h
+
+2016-10-27 07:30:19 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
+
+	* gst-libs/gst/gl/gstglapi.h:
+	  gstgl: Porting fixes for MSVC with Meson
+	  GL/gl.h needs windows.h on MSVC
+	  WINAPI should not be used with MSVC. It also causes a build error.
+
+2016-10-23 22:13:33 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/parsechannels.c:
+	  dvb/parsechannels: collapse notes on channel_name encoding conflict
+
+2016-10-23 22:00:30 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/parsechannels.c:
+	  dvb/parsechannels: rename ZAP parser for clarity
+	  This function only does ZAP parsing. Additionally, remove redundant
+	  comment while at it.
+
+2016-10-23 21:37:46 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	* sys/dvb/parsechannels.c:
+	  dvb: fix gtk-doc syntax for wrongly formatted comments
+
+2016-10-21 00:37:03 -0700  Scott D Phillips <scott.d.phillips@intel.com>
+
+	* ext/hls/meson.build:
+	  meson: hls: Only build when any crypto_dep is found
+	  https://bugzilla.gnome.org/show_bug.cgi?id=773114
+
+2016-10-21 00:39:32 -0700  Scott D Phillips <scott.d.phillips@intel.com>
+
+	* sys/directsound/meson.build:
+	  meson: directsound: Add ole32 library dependency
+	  https://bugzilla.gnome.org/show_bug.cgi?id=773114
+
+2016-10-17 09:35:41 -0700  Scott D Phillips <scott.d.phillips@intel.com>
+
+	* sys/winscreencap/meson.build:
+	  meson: winscreencap depends on gstvideo
+	  https://bugzilla.gnome.org/show_bug.cgi?id=773114
+
+2016-10-21 00:35:09 -0700  Scott D Phillips <scott.d.phillips@intel.com>
+
+	* meson.build:
+	  meson: Remove gstreamer-check-1.0 dependency
+	  It will later be added under tests/check
+	  https://bugzilla.gnome.org/show_bug.cgi?id=773114
+
+2016-10-21 13:10:47 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglsyncmeta.c:
+	  glsyncmeta: don't glFinish() everytime a sync point is set
+	  At minimum, we only need to glFlush() if we are in a shared GL context
+	  environment.  Move the glFinish() to when the actual wait is requested
+	  which may be never.  Improves the throughput on older GL systems without
+	  GL3/GLES3 and/or fence sync objects.
+
+2016-07-16 15:29:42 -0300  Thiago Santos <thiagossantos@gmail.com>
+
+	* ext/dash/gstmpdparser.c:
+	  dash: do not use invalid stream duration
+	  If it is is unknown, consider it infinite
+	  https://bugzilla.gnome.org/show_bug.cgi?id=768460
+
+2016-07-16 15:15:21 -0300  Thiago Santos <thiagossantos@gmail.com>
+
+	* ext/dash/gstmpdparser.c:
+	  dash: properly inherit segmentlist from period
+	  Representation can inherit SegmentList from Period if none is available
+	  from the AdaptationSet
+	  https://bugzilla.gnome.org/show_bug.cgi?id=768460
+
+2016-10-19 16:11:58 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/gstopengl.c:
+	* ext/gl/meson.build:
+	* gst-libs/gst/gl/dispmanx/gstglwindow_dispmanx_egl.h:
+	* gst-libs/gst/gl/egl/gstegl.h:
+	* gst-libs/gst/gl/meson.build:
+	* meson_options.txt:
+	  meson: gl: add support for building with dispmanx on the rpi
+
+2016-10-18 22:29:19 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/egl/gsteglimage.c:
+	* gst-libs/gst/gl/egl/gstglmemoryegl.c:
+	  gl/eglimage: Fix passing the destroy function to gst_egl_image_new_wrapped
+	  The function pointer and the user data arguments were swapped in both
+	  uses.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=769382
+
+2016-10-18 13:01:04 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
+
+	* gst/segmentclip/meson.build:
+	  meson: Add missing gstvideo dep to segmentclip
+	  In file included from ../subprojects/gst-plugins-base/gst-libs/gst/video/video.h:27:0,
+	  from ../subprojects/gst-plugins-bad/gst/segmentclip/gstvideosegmentclip.c:25:
+	  ../subprojects/gst-plugins-base/gst-libs/gst/video/video-format.h:27:39: fatal error: gst/video/video-enumtypes.h: No such file or directory
+	  #include <gst/video/video-enumtypes.h>
+	  ^
+	  compilation terminated.
+	  https://ci.gstreamer.net/job/GStreamer-master-meson/269/console
+
+2016-10-11 17:06:23 +0530  Munez <munezbn.dev@gmail.com>
+
+	* gst-libs/gst/gl/dispmanx/gstglwindow_dispmanx_egl.c:
+	* gst-libs/gst/gl/dispmanx/gstglwindow_dispmanx_egl.h:
+	  Implemented gst_video_overlay_set_window_handle()
+	  https://bugzilla.gnome.org/show_bug.cgi?id=772608
+
+2016-10-18 14:11:26 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/meson.build:
+	  meson: gl: fix detection of glx without gl
+	  We need to check for libGL if we may use desktop OpenGL *or* GLX.
+
+2016-10-18 14:10:32 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/meson.build:
+	  meson: gl: fix incorrect error string
+	  Use the winsys variable for an incorrect winsys provided
+
+2016-10-16 12:40:22 +0200  Sergey Borovkov <sergey.borovkov@wireload.net>
+
+	* ext/qt/qtwindow.cc:
+	  qt: Fix failing build on RPI
+	  https://bugzilla.gnome.org/show_bug.cgi?id=773026
+
+2016-10-11 16:58:48 +0530  Munez <munezbn.dev@gmail.com>
+
+	* gst-libs/gst/gl/dispmanx/gstglwindow_dispmanx_egl.c:
+	  gl/dispmanx: egl_show should resize the window only if there is no render rectangle set
+	  https://bugzilla.gnome.org/show_bug.cgi?id=772699
+
+2016-10-11 16:55:17 +0530  Munez <munezbn.dev@gmail.com>
+
+	* gst-libs/gst/gl/dispmanx/gstglwindow_dispmanx_egl.c:
+	  gl/dispmanx: Fix set_render_rectangle typo
+	  https://bugzilla.gnome.org/show_bug.cgi?id=772698
+
+2016-03-18 14:09:37 +0000  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* gst/mpegtsmux/tsmux/tsmux.c:
+	  mpegtsmux: fix buffer size mismatch in M2TS mode
+	  In M2TS mode, we need an extra 4 bytes in the buffer, so need
+	  to ensure the buffer can contain these. The allocation site
+	  does not know the mode, so this is done in all cases.
+
+2016-10-15 22:19:02 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
+
+	* meson.build:
+	  meson: Don't set c_std to gnu99
+	  Use the default for each compiler on every platform instead. This
+	  improves our compatibility with compilers that don't have gnu99 as
+	  a c_std.
+
+2016-10-14 14:41:42 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: fix 'delivery system'-related messages
+	  * Rephrase tune error to be delsys-neutral
+	  * Refer to the actual check in the 'missing sanity check' warnings
+	  * Use "Delivery system" instead of 'delsys'. The
+	  latter is OK as a shorthand in the code but not
+	  even a real word
+
+2016-10-11 18:48:06 +0200  Joan Pau Beltran <joanpau.beltran@socib.cat>
+
+	* gst/bayer/gstbayer2rgb.c:
+	* gst/bayer/gstrgb2bayer.c:
+	  bayer: fix _transform_caps method to preserve fields in given caps
+	  https://bugzilla.gnome.org/show_bug.cgi?id=758717
+
+2016-09-29 12:49:39 -0400  Arun Raghavan <arun@arunraghavan.net>
+
+	* ext/wayland/gstwaylandsink.c:
+	  waylandsink: Properly configure internal pool
+	  There was a small omission in the code. It still worked, but the pool
+	  configuration may not have been optimimal.
+
+2016-10-12 18:20:27 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* common:
+	  common: sync to latest revision
+	  Fixes accidental common change when commit patch.
+
+2016-10-11 11:11:16 +0200  Edward Hervey <edward@centricular.com>
+
+	* gst/mpegtsdemux/mpegtsbase.c:
+	* gst/mpegtsdemux/mpegtsbase.h:
+	* gst/mpegtsdemux/tsdemux.c:
+	  mpegtsdemux: Implement efficient program updates
+	  If the parent bin can handle it, only add/remove the new/gone stream
+	  instead of re-adding/re-moving everything
+	  https://bugzilla.gnome.org/show_bug.cgi?id=772742
+
+2016-10-12 14:35:21 +0200  Edward Hervey <edward@centricular.com>
+
+	* gst/mpegtsdemux/mpegtsbase.c:
+	  mpegtsdemux: Ensure we always get an upstream stream-id
+	  This was a regression.
+	  We only have a upstream-id via STREAM_START if we were in push-mode.
+	  In pull-mode we need to create one.
+	  Note: It would be good to eventually have that method (copied from
+	  gst_pad_get_stream_id_internal()) public in the future
+
+2016-10-11 16:47:37 +0200  Edward Hervey <edward@centricular.com>
+
+	* gst/mpegtsdemux/mpegtsbase.c:
+	* gst/mpegtsdemux/tsdemux.c:
+	  mpegtsdemux: Fix issues with GST_DISABLE_GST_DEBUG
+	  Some variables were hidden or unused
+
+2015-07-29 15:52:05 +0200  Edward Hervey <edward@centricular.com>
+
+	* gst/mpegtsdemux/mpegtsbase.c:
+	* gst/mpegtsdemux/mpegtsbase.h:
+	* gst/mpegtsdemux/tsdemux.c:
+	  mpegtsdemux: Switch to using GstStream/GstStreamCollection
+	  For each MpegTSBaseStream, we have a GstStream object which
+	  subclasses can extend with information.
+	  For each program a GstStreamCollection is created with all
+	  GstStream from each stream.
+
+2016-10-11 10:50:17 +0200  Edward Hervey <edward@centricular.com>
+
+	* gst/mpegtsdemux/mpegtsbase.c:
+	  mpegtsbase: Remove duplicated code
+	  Just have one function to check for private section streams
+
+2016-10-10 17:00:39 +0200  Arnaud Vrac <avrac@freebox.fr>
+
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+	  adaptivedemux: fix buffer size print format
+	  https://bugzilla.gnome.org/show_bug.cgi?id=772706
+
+2016-10-10 16:52:58 +0200  Arnaud Vrac <avrac@freebox.fr>
+
+	* common:
+	* ext/hls/gsthlsdemux.h:
+	  hlsdemux: fix hls demux stream type inheritance
+	  GstHLSDemuxStream inherits GstAdaptiveDemuxStream, not
+	  GstAdaptiveDemux. Fixes memory corruption issues.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=772704
+
+2016-10-09 06:42:30 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/parsechannels.c:
+	  dvb/parsechannels: parse guard interval as a fraction
+	  Fixes wrong default failover when parsing libdvbv5 formatted
+	  channel configuration files.
+
+2016-10-09 03:23:19 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/parsechannels.c:
+	  dvb/parsechannels: add prototypes and reorganize for clarity
+
+2016-10-08 07:18:15 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/dvbbasebin.c:
+	* sys/dvb/gstdvbsrc.c:
+	* sys/dvb/gstdvbsrc.h:
+	  Update my email address
+
+2016-10-08 05:33:34 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/cam.h:
+	* sys/dvb/camapplication.h:
+	* sys/dvb/camapplicationinfo.h:
+	* sys/dvb/camconditionalaccess.h:
+	* sys/dvb/camdevice.h:
+	* sys/dvb/camresourcemanager.h:
+	* sys/dvb/camsession.h:
+	* sys/dvb/camswclient.h:
+	* sys/dvb/camtransport.h:
+	* sys/dvb/camutils.h:
+	  dvb: drop trailing whitespace and c&p leftovers
+
+2016-10-08 05:20:47 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/parsechannels.c:
+	  dvb/parsechannels: parse DVB-T hierarchy from v5 config file
+	  Avoids relying on the H/W default when the information
+	  can be extracted from the configuration file.
+
+2016-10-08 04:55:20 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/parsechannels.c:
+	  dvb/parsechannels: parse DVB-T lp and hp code rates
+
+2016-10-08 14:08:06 +0200  Edward Hervey <edward@centricular.com>
+
+	* gst/mpegtsdemux/mpegtsbase.c:
+	  mpegts: Also clear packetizer on TIME DISCONT
+	  When dealing with TIME-based input, the incoming stream could have
+	  potentially changed completely.
+	  In order to check whether it did or not, we need to re-check all sections
+	  (PAT, PMT...). If it didn't, we will keep using the existing streams/pad,
+	  and if it did we will act as if there was a program switch.
+	  Fixes HLS streaming with decodebin3/playbin3
+
+2016-10-02 09:34:51 +0200  Edward Hervey <edward@centricular.com>
+
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.h:
+	  adaptivedemux: Calculate values before queue2
+	  In order to calculate the *actual* bitrate for downloading a fragment
+	  we need to take into account the time since we requested the fragment.
+	  Without this, the bitrate calculations (previously reported by queue2)
+	  would be biased since they wouldn't take into account the request latency
+	  (that is the time between the moment we request a specific URI and the
+	  moment we receive the first byte of that request).
+	  Such examples were it would be biased would be high-bandwith but high-latency
+	  networks. If you download 5MB in 500ms, but it takes 200ms to get the first
+	  byte, queue2 would report 80Mbit/s (5Mb in 500ms) , but taking the request
+	  into account it is only 57Mbit/s (5Mb in 700ms).
+	  While this would not cause too much issues if the above fragment represented
+	  a much longer duration (5s of content), it would cause issues with short
+	  ones (say 1s, or when doing keyframe-only requests which are even shorter)
+	  where the code would expect to be able to download up to 80Mbit/s ... whereas
+	  if we take the request time into account it's much lower (and we would
+	  therefore end up doing late requests).
+	  Also calculate the request latency for debugging purposes and further
+	  usage (it could allow us to figure out the maximum request rate for
+	  example).
+	  https://bugzilla.gnome.org/show_bug.cgi?id=733959
+	  https://bugzilla.gnome.org/show_bug.cgi?id=772330
+
+2016-10-06 15:54:00 +0900  Jimmy Ohn <yongjin.ohn@lge.com>
+
+	* ext/opencv/gstopencvutils.cpp:
+	  opencv: Fix memory leak by gst_caps_to_string
+	  gst_caps_to_string function returned allocated memory.
+	  So, It should be freed using g_free function.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=772499
+
+2016-10-05 18:32:09 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglwindow.c:
+	  glwindow: don't use g_thread_join() to join the navigation thread
+	  Using g_thread_join() in _finalize() handlers may result in a deadlock
+	  joining the current thread when the last reference is held by a signal
+	  handler.
+	  e.g.:
+	  error 'Resource deadlock avoided' during 'pthread_join (pt->system_thread, NULL)'
+	  The backtrace looks like this:
+	  [...]
+	  g_thread_join ()
+	  gst_gl_window_finalize ()
+	  gst_gl_window_x11_finalize ()
+	  g_object_unref ()
+	  g_value_unset ()
+	  g_signal_emit_valist ()
+	  g_signal_emit ()
+	  gst_gl_window_send_mouse_event ()
+	  gst_gl_window_mouse_event_cb ()
+	  g_main_dispatch ()
+	  [..]
+	  g_main_loop_run ()
+	  gst_gl_window_navigation_thread ()
+	  g_thread_proxy ()
+	  start_thread ()
+	  clone ()
+
+2016-10-05 18:28:48 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/gstgluploadelement.c:
+	  gluploadelement: fix leak of upload library object
+	  When only linking the element, the upload object will be created from
+	  _transform_caps() but will never be unreffed as the only case is in _stop().
+	  Add an unref if non-NULL to a new finalize handler for this case.
+
+2016-10-05 12:11:19 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkdisplay.c:
+	  vkdisplay: hold a weakref on the list of windows
+	  It's possible that the window may have been destroyed when a winsys
+	  event comes in for it.
+	  Fixes an assertion in make -C tests/check generic/states.check
+
+2016-10-05 11:37:04 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkdevice.c:
+	  vkdevice: only unref the gstcontext query if non-NULL
+	  Fixes an assertion in make -C tests/check generic/states.check
+
+2016-09-29 11:45:57 +1000  Matthew Waters <matthew@centricular.com>
+
+	* tests/check/libs/gstglcolorconvert.c:
+	* tests/check/libs/gstglupload.c:
+	  tests/gl: make sure all GL commands are executed on the GL thread
+	  e.g. the final glGetError() must also be completed on the GL thread
+
+2016-09-28 18:04:21 +1000  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/win32/Makefile.am:
+	* gst-libs/gst/gl/win32/gstglwindow_win32_egl.c:
+	* gst-libs/gst/gl/win32/gstglwindow_win32_egl.h:
+	  gl/win32: remove egl implementation
+	  It hasn't been used in ages and is dead code.
+
+2016-09-13 22:07:05 +0900  Wonchul Lee <wonchul.lee@collabora.com>
+
+	* gst-libs/gst/mpegts/gstmpegtsdescriptor.h:
+	* gst/mpegtsdemux/gstmpegdesc.h:
+	* gst/mpegtsdemux/tsdemux.c:
+	  tsdemux: Add conditions to identify ATSC EAC3
+	  https://bugzilla.gnome.org/show_bug.cgi?id=770528
+
+2016-09-26 15:23:52 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/parsechannels.c:
+	  dvb/parsechannels: make parsing errors delsys-neutral
+	  DVB is a group of delivery standards but we support
+	  several others. While at this, make message formating
+	  more congruent.
+
+2016-09-30 11:35:41 -0300  Thibault Saunier <thibault.saunier@osg.samsung.com>
+
+	* hooks/pre-commit.hook:
+	* meson.build:
+	  meson: Setup pre-commit hooks when configuring
+
+2016-09-30 11:41:34 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* meson.build:
+	  meson: update version
+
+2016-09-30 13:42:06 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/player/gstplayer.c:
+	  player: Remove Return documentation for function returning void
+
+=== release 1.9.90 ===
+
+2016-09-30 13:02:55 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* ChangeLog:
+	* NEWS:
+	* RELEASE:
+	* configure.ac:
+	* docs/plugins/inspect/plugin-accurip.xml:
+	* docs/plugins/inspect/plugin-adpcmdec.xml:
+	* docs/plugins/inspect/plugin-adpcmenc.xml:
+	* docs/plugins/inspect/plugin-aiff.xml:
+	* docs/plugins/inspect/plugin-asfmux.xml:
+	* docs/plugins/inspect/plugin-assrender.xml:
+	* docs/plugins/inspect/plugin-audiofxbad.xml:
+	* docs/plugins/inspect/plugin-audiomixer.xml:
+	* docs/plugins/inspect/plugin-audiovisualizers.xml:
+	* docs/plugins/inspect/plugin-autoconvert.xml:
+	* docs/plugins/inspect/plugin-bayer.xml:
+	* docs/plugins/inspect/plugin-bluez.xml:
+	* docs/plugins/inspect/plugin-bs2b.xml:
+	* docs/plugins/inspect/plugin-bz2.xml:
+	* docs/plugins/inspect/plugin-camerabin.xml:
+	* docs/plugins/inspect/plugin-chromaprint.xml:
+	* docs/plugins/inspect/plugin-coloreffects.xml:
+	* docs/plugins/inspect/plugin-compositor.xml:
+	* docs/plugins/inspect/plugin-curl.xml:
+	* docs/plugins/inspect/plugin-dashdemux.xml:
+	* docs/plugins/inspect/plugin-dataurisrc.xml:
+	* docs/plugins/inspect/plugin-debugutilsbad.xml:
+	* docs/plugins/inspect/plugin-decklink.xml:
+	* docs/plugins/inspect/plugin-dtls.xml:
+	* docs/plugins/inspect/plugin-dtsdec.xml:
+	* docs/plugins/inspect/plugin-dvb.xml:
+	* docs/plugins/inspect/plugin-dvbsuboverlay.xml:
+	* docs/plugins/inspect/plugin-dvdspu.xml:
+	* docs/plugins/inspect/plugin-faac.xml:
+	* docs/plugins/inspect/plugin-faad.xml:
+	* docs/plugins/inspect/plugin-fbdevsink.xml:
+	* docs/plugins/inspect/plugin-festival.xml:
+	* docs/plugins/inspect/plugin-fieldanalysis.xml:
+	* docs/plugins/inspect/plugin-flite.xml:
+	* docs/plugins/inspect/plugin-fluidsynthmidi.xml:
+	* docs/plugins/inspect/plugin-freeverb.xml:
+	* docs/plugins/inspect/plugin-frei0r.xml:
+	* docs/plugins/inspect/plugin-gaudieffects.xml:
+	* docs/plugins/inspect/plugin-gdp.xml:
+	* docs/plugins/inspect/plugin-geometrictransform.xml:
+	* docs/plugins/inspect/plugin-gmedec.xml:
+	* docs/plugins/inspect/plugin-gsm.xml:
+	* docs/plugins/inspect/plugin-gstgtk.xml:
+	* docs/plugins/inspect/plugin-gstsiren.xml:
+	* docs/plugins/inspect/plugin-hls.xml:
+	* docs/plugins/inspect/plugin-id3tag.xml:
+	* docs/plugins/inspect/plugin-inter.xml:
+	* docs/plugins/inspect/plugin-interlace.xml:
+	* docs/plugins/inspect/plugin-ivfparse.xml:
+	* docs/plugins/inspect/plugin-ivtc.xml:
+	* docs/plugins/inspect/plugin-jp2kdecimator.xml:
+	* docs/plugins/inspect/plugin-jpegformat.xml:
+	* docs/plugins/inspect/plugin-kate.xml:
+	* docs/plugins/inspect/plugin-ladspa.xml:
+	* docs/plugins/inspect/plugin-midi.xml:
+	* docs/plugins/inspect/plugin-mimic.xml:
+	* docs/plugins/inspect/plugin-mms.xml:
+	* docs/plugins/inspect/plugin-modplug.xml:
+	* docs/plugins/inspect/plugin-mpeg2enc.xml:
+	* docs/plugins/inspect/plugin-mpegpsdemux.xml:
+	* docs/plugins/inspect/plugin-mpegpsmux.xml:
+	* docs/plugins/inspect/plugin-mpegtsdemux.xml:
+	* docs/plugins/inspect/plugin-mpegtsmux.xml:
+	* docs/plugins/inspect/plugin-mplex.xml:
+	* docs/plugins/inspect/plugin-mxf.xml:
+	* docs/plugins/inspect/plugin-netsim.xml:
+	* docs/plugins/inspect/plugin-ofa.xml:
+	* docs/plugins/inspect/plugin-openal.xml:
+	* docs/plugins/inspect/plugin-opencv.xml:
+	* docs/plugins/inspect/plugin-openexr.xml:
+	* docs/plugins/inspect/plugin-opengl.xml:
+	* docs/plugins/inspect/plugin-openjpeg.xml:
+	* docs/plugins/inspect/plugin-opusparse.xml:
+	* docs/plugins/inspect/plugin-pcapparse.xml:
+	* docs/plugins/inspect/plugin-pnm.xml:
+	* docs/plugins/inspect/plugin-qt.xml:
+	* docs/plugins/inspect/plugin-rawparse.xml:
+	* docs/plugins/inspect/plugin-removesilence.xml:
+	* docs/plugins/inspect/plugin-resindvd.xml:
+	* docs/plugins/inspect/plugin-rfbsrc.xml:
+	* docs/plugins/inspect/plugin-rsvg.xml:
+	* docs/plugins/inspect/plugin-rtmp.xml:
+	* docs/plugins/inspect/plugin-rtponvif.xml:
+	* docs/plugins/inspect/plugin-schro.xml:
+	* docs/plugins/inspect/plugin-sdp.xml:
+	* docs/plugins/inspect/plugin-segmentclip.xml:
+	* docs/plugins/inspect/plugin-shm.xml:
+	* docs/plugins/inspect/plugin-smooth.xml:
+	* docs/plugins/inspect/plugin-smoothstreaming.xml:
+	* docs/plugins/inspect/plugin-sndfile.xml:
+	* docs/plugins/inspect/plugin-soundtouch.xml:
+	* docs/plugins/inspect/plugin-spandsp.xml:
+	* docs/plugins/inspect/plugin-speed.xml:
+	* docs/plugins/inspect/plugin-srtp.xml:
+	* docs/plugins/inspect/plugin-stereo.xml:
+	* docs/plugins/inspect/plugin-subenc.xml:
+	* docs/plugins/inspect/plugin-teletext.xml:
+	* docs/plugins/inspect/plugin-uvch264.xml:
+	* docs/plugins/inspect/plugin-vcdsrc.xml:
+	* docs/plugins/inspect/plugin-videofiltersbad.xml:
+	* docs/plugins/inspect/plugin-videoframe_audiolevel.xml:
+	* docs/plugins/inspect/plugin-videoparsersbad.xml:
+	* docs/plugins/inspect/plugin-videosignal.xml:
+	* docs/plugins/inspect/plugin-vmnc.xml:
+	* docs/plugins/inspect/plugin-voaacenc.xml:
+	* docs/plugins/inspect/plugin-voamrwbenc.xml:
+	* docs/plugins/inspect/plugin-waylandsink.xml:
+	* docs/plugins/inspect/plugin-webp.xml:
+	* docs/plugins/inspect/plugin-webrtcdsp.xml:
+	* docs/plugins/inspect/plugin-wildmidi.xml:
+	* docs/plugins/inspect/plugin-x265.xml:
+	* docs/plugins/inspect/plugin-y4mdec.xml:
+	* docs/plugins/inspect/plugin-yadif.xml:
+	* docs/plugins/inspect/plugin-zbar.xml:
+	* gst-plugins-bad.doap:
+	* win32/common/config.h:
+	  Release 1.9.90
+
+2016-09-30 12:19:32 +0300  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/ky.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:
+	  Update .po files
 
 2016-09-30 11:44:47 +0300  Sebastian Dröge <sebastian@centricular.com>
 
diff --git a/NEWS b/NEWS
index 072b2df..547de7f 100644
--- a/NEWS
+++ b/NEWS
@@ -1 +1,1114 @@
-This is GStreamer 1.9.90
+# GStreamer 1.10 Release Notes
+
+**GStreamer 1.10.0 was released on 1st November 2016.**
+
+The GStreamer team is proud to announce a new major feature release in the
+stable 1.x API series of your favourite cross-platform multimedia framework!
+
+As always, this release is again packed with new features, bug fixes and other
+improvements.
+
+See [https://gstreamer.freedesktop.org/releases/1.10/][latest] for the latest
+version of this document.
+
+*Last updated: Tuesday 1 Nov 2016, 15:00 UTC [(log)][gitlog]*
+
+[latest]: https://gstreamer.freedesktop.org/releases/1.10/
+[gitlog]: https://cgit.freedesktop.org/gstreamer/www/log/src/htdocs/releases/1.10/release-notes-1.10.md
+
+## Introduction
+
+The GStreamer team is proud to announce a new major feature release in the
+stable 1.x API series of your favourite cross-platform multimedia framework!
+
+As always, this release is again packed with new features, bug fixes and other
+improvements.
+
+## Highlights
+
+- Several convenience APIs have been added to make developers' lives easier
+- A new `GstStream` API provides applications a more meaningful view of the
+  structure of streams, simplifying the process of dealing with media in
+  complex container formats
+- Experimental `decodebin3` and `playbin3` elements which bring a number of
+  improvements which were hard to implement within `decodebin` and `playbin`
+- A new `parsebin` element to automatically unpack and parse a stream, stopping
+  just short of decoding
+- Experimental new `meson`-based build system, bringing faster build and much
+  better Windows support (including for building with Visual Studio)
+- A new `gst-docs` module has been created, and we are in the process of moving
+  our documentation to a markdown-based format for easier maintenance and
+  updates
+- A new `gst-examples` module has been create, which contains example
+  GStreamer applications and is expected to grow with many more examples in
+  the future
+- Various OpenGL and OpenGL|ES-related fixes and improvements for greater
+  efficiency on desktop and mobile platforms, and Vulkan support on Wayland was
+  also added
+- Extensive improvements to the VAAPI plugins for improved robustness and
+  efficiency
+- Lots of fixes and improvements across the board, spanning RTP/RTSP, V4L2,
+  Bluetooth, audio conversion, echo cancellation, and more!
+
+## Major new features and changes
+
+### Noteworthy new API, features and other changes
+
+#### Core API additions
+
+##### Receive property change notifications via bus messages
+
+New API was added to receive element property change notifications via
+bus messages. So far, applications had to connect a callback to an element's
+`notify::property-name` signal via the GObject API, which was inconvenient for
+at least two reasons: one had to implement a signal callback function, and that
+callback function would usually be called from one of the streaming threads, so
+one had to marshal (send) any information gathered or pending requests to the
+main application thread which was tedious and error-prone.
+
+Enter [`gst_element_add_property_notify_watch()`][notify-watch] and
+[`gst_element_add_property_deep_notify_watch()`][deep-notify-watch] which will
+watch for changes of a property on the specified element, either only for this
+element or recursively for a whole bin or pipeline. Whenever such a
+property change happens, a `GST_MESSAGE_PROPERTY_NOTIFY` message will be posted
+on the pipeline bus with details of the element, the property and the new
+property value, all of which can be retrieved later from the message in the
+application via [`gst_message_parse_property_notify()`][parse-notify]. Unlike
+the GstBus watch functions, this API does not rely on a running GLib main loop.
+
+The above can be used to be notified asynchronously of caps changes in the
+pipeline, or volume changes on an audio sink element, for example.
+
+[notify-watch]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#gst-element-add-property-notify-watch
+[deep-notify-watch]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#gst-element-add-property-deep-notify-watch
+[parse-notify]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstMessage.html#gst-message-parse-property-notify
+
+##### GstBin "deep" element-added and element-removed signals
+
+GstBin has gained `"deep-element-added"` and `"deep-element-removed"` signals
+which makes it easier for applications and higher-level plugins to track when
+elements are added or removed from a complex pipeline with multiple sub-bins.
+
+`playbin` makes use of this to implement the new `"element-setup"` signal which
+can be used to configure elements as they are added to `playbin`, just like the
+existing `"source-setup"` signal which can be used to configure the source
+element created.
+
+##### Error messages can contain additional structured details
+
+It is often useful to provide additional, structured information in error,
+warning or info messages for applications (or higher-level elements) to make
+intelligent decisions based on them. To allow this, error, warning and info
+messages now have API for adding arbitrary additional information to them
+using a `GstStructure`:
+[`GST_ELEMENT_ERROR_WITH_DETAILS`][element-error-with-details] and
+corresponding API for the other message types.
+
+This is now used e.g. by the new [`GST_ELEMENT_FLOW_ERROR`][element-flow-error]
+API to include the actual flow error in the error message, and the
+[souphttpsrc element][souphttpsrc-detailed-errors] to provide the HTTP
+status code, and the URL (if any) to which a redirection has happened.
+
+[element-error-with-details]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#GST-ELEMENT-ERROR-WITH-DETAILS:CAPS
+[element-flow-error]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#GST-ELEMENT-FLOW-ERROR:CAPS
+[souphttpsrc-detailed-errors]: https://cgit.freedesktop.org/gstreamer/gst-plugins-good/tree/ext/soup/gstsouphttpsrc.c?id=60d30db912a1aedd743e66b9dcd2e21d71fbb24f#n1318
+
+##### Redirect messages have official API now
+
+Sometimes, elements need to redirect the current stream URL and tell the
+application to proceed with this new URL, possibly using a different
+protocol too (thus changing the pipeline configuration). Until now, this was
+informally implemented using `ELEMENT` messages on the bus.
+
+Now this has been formalized in the form of a new `GST_MESSAGE_REDIRECT` message.
+A new redirect message can be created using [`gst_message_new_redirect()`][new-redirect].
+If needed, multiple redirect locations can be specified by calling
+[`gst_message_add_redirect_entry()`][add-redirect] to add further redirect
+entries, all with metadata, so the application can decide which is
+most suitable (e.g. depending on the bitrate tags).
+
+[new-redirect]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstMessage.html#gst-message-new-redirect
+[add-redirect]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstMessage.html#gst-message-add-redirect-entry
+
+##### New pad linking convenience functions that automatically create ghost pads
+
+New pad linking convenience functions were added:
+[`gst_pad_link_maybe_ghosting()`][pad-maybe-ghost] and
+[`gst_pad_link_maybe_ghosting_full()`][pad-maybe-ghost-full] which were
+previously internal to GStreamer have now been exposed for general use.
+
+The existing pad link functions will refuse to link pads or elements at
+different levels in the pipeline hierarchy, requiring the developer to
+create ghost pads where necessary. These new utility functions will
+automatically create ghostpads as needed when linking pads at different
+levels of the hierarchy (e.g. from an element inside a bin to one that's at
+the same level in the hierarchy as the bin, or in another bin).
+
+[pad-maybe-ghost]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#gst-pad-link-maybe-ghosting
+[pad-maybe-ghost-full]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#gst-pad-link-maybe-ghosting-full
+
+##### Miscellaneous
+
+Pad probes: IDLE and BLOCK probes now work slightly differently in pull mode,
+so that push and pull mode have opposite scenarios for idle and blocking probes.
+In push mode, it will block with some data type and IDLE won't have any data.
+In pull mode, it will block _before_ getting a buffer and will be IDLE once some
+data has been obtained. ([commit][commit-pad-probes], [bug][bug-pad-probes])
+
+[commit-pad-probes]: https://cgit.freedesktop.org/gstreamer/gstreamer/commit/gst/gstpad.c?id=368ee8a336d0c868d81fdace54b24431a8b48cbf
+[bug-pad-probes]: https://bugzilla.gnome.org/show_bug.cgi?id=761211
+
+[`gst_parse_launch_full()`][parse-launch-full] can now be made to return a
+`GstBin` instead of a top-level pipeline by passing the new
+`GST_PARSE_FLAG_PLACE_IN_BIN` flag.
+
+[parse-launch-full]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstParse.html#gst-parse-launch-full
+
+The default GStreamer debug log handler can now be removed before
+calling `gst_init()`, so that it will never get installed and won't be active
+during initialization.
+
+A new [`STREAM_GROUP_DONE` event][stream-group-done-event] was added. In some
+ways it works similar to the `EOS` event in that it can be used to unblock
+downstream elements which may be waiting for further data, such as for example
+`input-selector`. Unlike `EOS`, further data flow may happen after the
+`STREAM_GROUP_DONE` event though (and without the need to flush the pipeline).
+This is used to unblock input-selector when switching between streams in
+adaptive streaming scenarios (e.g. HLS).
+
+[stream-group-done-event]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html#gst-event-new-stream-group-done
+
+The `gst-launch-1.0` command line tool will now print unescaped caps in verbose
+mode (enabled by the -v switch).
+
+[`gst_element_call_async()`][call-async] has been added as convenience API for
+plugin developers. It is useful for one-shot operations that need to be done
+from a thread other than the current streaming thread. It is backed by a
+thread-pool that is shared by all elements.
+
+[call-async]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#gst-element-call-async
+
+Various race conditions have been fixed around the `GstPoll` API used by e.g.
+`GstBus` and `GstBufferPool`. Some of these manifested themselves primarily
+on Windows.
+
+`GstAdapter` can now keep track of discontinuities signalled via the `DISCONT`
+buffer flag, and has gained [new API][new-adapter-api] to track PTS, DTS and
+offset at the last discont. This is useful for plugins implementing advanced
+trick mode scenarios.
+
+[new-adapter-api]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/GstAdapter.html#gst-adapter-pts-at-discont
+
+`GstTestClock` gained a new [`"clock-type"` property][clock-type-prop].
+
+[clock-type-prop]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/GstTestClock.html#GstTestClock--clock-type
+
+#### GstStream API for stream announcement and stream selection
+
+New stream listing and stream selection API: new API has been added to
+provide high-level abstractions for streams ([`GstStream`][stream-api])
+and collections of streams ([`GstStreamCollections`][stream-collection-api]).
+
+##### Stream listing
+
+A [`GstStream`][stream-api] contains all the information pertinent to a stream,
+such as stream id, caps, tags, flags and stream type(s); it can represent a
+single elementary stream (e.g. audio, video, subtitles, etc.) or a container
+stream. This will depend on the context. In a decodebin3/playbin3 one
+it will typically be elementary streams that can be selected and unselected.
+
+A [`GstStreamCollection`][stream-collection-api] represents a group of streams
+and is used to announce or publish all available streams. A GstStreamCollection
+is immutable - once created it won't change. If the available streams change,
+e.g. because a new stream appeared or some streams disappeared, a new stream
+collection will be published. This new stream collection may contain streams
+from the previous collection if those streams persist, or completely new ones.
+Stream collections do not yet list all theoretically available streams,
+e.g. other available DVD angles or alternative resolutions/bitrate of the same
+stream in case of adaptive streaming.
+
+New events and messages have been added to notify or update other elements and
+the application about which streams are currently available and/or selected.
+This way, we can easily and seamlessly let the application know whenever the
+available streams change, as happens frequently with digital television streams
+for example. The new system is also more flexible. For example, it is now also
+possible for the application to select multiple streams of the same type
+(e.g. in a transcoding/transmuxing scenario).
+
+A [`STREAM_COLLECTION` message][stream-collection-msg] is posted on the bus
+to inform the parent bin (e.g. `playbin3`, `decodebin3`) and/or the application
+about what streams are available, so you no longer have to hunt for this
+information at different places. The available information includes number of
+streams of each type, caps, tags etc.  Bins and/or the application can intercept
+the message synchronously to select and deselect streams before any data is
+produced - for the case where elements such as the demuxers support the new
+stream API, not necessarily in the parsebin compatibility fallback case.
+
+Similarly, there is also a [`STREAM_COLLECTION` event][stream-collection-event]
+to inform downstream elements of the available streams. This event can be used
+by elements to aggregate streams from multiple inputs into one single collection.
+
+The `STREAM_START` event was extended so that it can also contain a GstStream
+object with all information about the current stream, see
+[`gst_event_set_stream()`][event-set-stream] and
+[`gst_event_parse_stream()`][event-parse-stream].
+[`gst_pad_get_stream()`][pad-get-stream] is a new utility function that can be
+used to look up the GstStream from the `STREAM_START` sticky event on a pad.
+
+[stream-api]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstStream.html
+[stream-collection-api]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstStreamCollection.html
+[stream-collection-msg]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstMessage.html#gst-message-new-stream-collection
+[stream-collection-event]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html#gst-event-new-stream-collection
+[event-set-stream]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html#gst-event-set-stream
+[event-parse-stream]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html#gst-event-parse-stream
+[pad-get-stream]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#gst-pad-get-stream
+
+##### Stream selection
+
+Once the available streams have been published, streams can be selected via
+their stream ID using the new `SELECT_STREAMS` event, which can be created
+with [`gst_event_new_select_streams()`][event-select-streams]. The new API
+supports selecting multiple streams per stream type. In the future, we may also
+implement explicit deselection of streams that will never be used, so
+elements can skip these and never expose them or output data for them in the
+first place.
+
+The application is then notified of the currently selected streams via the
+new `STREAMS_SELECTED` message on the pipeline bus, containing both the current
+stream collection as well as the selected streams. This might be posted in
+response to the application sending a `SELECT_STREAMS` event or when
+`decodebin3` or `playbin3` decide on the streams to be initially selected without
+application input.
+
+[event-select-streams]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html#gst-event-new-select-streams
+
+##### Further reading
+
+See further below for some notes on the new elements supporting this new
+stream API, namely: `decodebin3`, `playbin3` and `parsebin`.
+
+More information about the new API and the new elements can also be found here:
+
+- GStreamer [stream selection design docs][streams-design]
+- Edward Hervey's talk ["The new streams API: Design and usage"][streams-talk] ([slides][streams-slides])
+- Edward Hervey's talk ["Decodebin3: Dealing with modern playback use cases"][db3-talk] ([slides][db3-slides])
+
+[streams-design]: https://cgit.freedesktop.org/gstreamer/gstreamer/tree/docs/design/part-stream-selection.txt
+[streams-talk]: https://gstconf.ubicast.tv/videos/the-new-gststream-api-design-and-usage/
+[streams-slides]: https://gstreamer.freedesktop.org/data/events/gstreamer-conference/2016/Edward%20Hervey%20-%20The%20New%20Streams%20API%20Design%20and%20Usage.pdf
+[db3-talk]: https://gstconf.ubicast.tv/videos/decodebin3-or-dealing-with-modern-playback-use-cases/
+[db3-slides]: https://gstreamer.freedesktop.org/data/events/gstreamer-conference/2015/Edward%20Hervey%20-%20decodebin3.pdf
+
+#### Audio conversion and resampling API
+
+The audio conversion library received a completely new and rewritten audio
+resampler, complementing the audio conversion routines moved into the audio
+library in the [previous release][release-notes-1.8]. Integrating the resampler
+with the other audio conversion library allows us to implement generic
+conversion much more efficiently, as format conversion and resampling can now
+be done in the same processing loop instead of having to do it in separate
+steps (our element implementations do not make use of this yet though).
+
+The new audio resampler library is a combination of some of the best features
+of other samplers such as ffmpeg, speex and SRC. It natively supports S16, S32,
+F32 and F64 formats and uses optimized x86 and neon assembly for most of its
+processing. It also has support for dynamically changing sample rates by incrementally
+updating the filter tables using linear or cubic interpolation. According to
+some benchmarks, it's one of the fastest and most accurate resamplers around.
+
+The `audioresample` plugin has been ported to the new audio library functions
+to make use of the new resampler.
+
+[release-notes-1.8]: https://gstreamer.freedesktop.org/releases/1.8/
+
+#### Support for SMPTE timecodes
+
+Support for SMPTE timecodes was added to the GStreamer video library. This
+comes with an abstraction for timecodes, [`GstVideoTimeCode`][video-timecode]
+and a [`GstMeta`][video-timecode-meta] that can be placed on video buffers for
+carrying the timecode information for each frame. Additionally there is
+various API for making handling of timecodes easy and to do various
+calculations with them.
+
+A new plugin called [`timecode`][timecode-plugin] was added, that contains an
+element called `timecodestamper` for putting the timecode meta on video frames
+based on counting the frames and another element called `timecodewait` that
+drops all video (and audio) until a specific timecode is reached.
+
+Additionally support was added to the Decklink plugin for including the
+timecode information when sending video out or capturing it via SDI, the
+`qtmux` element is able to write timecode information into the MOV container,
+and the `timeoverlay` element can overlay timecodes on top of the video.
+
+More information can be found in the [talk about timecodes][timecode-talk] at
+the GStreamer Conference 2016.
+
+[video-timecode]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstvideo.html#GstVideoTimeCode
+[video-timecode-meta]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstvideometa.html#gst-buffer-add-video-time-code-meta
+[timecode-plugin]: https://cgit.freedesktop.org/gstreamer/gst-plugins-bad/tree/gst/timecode
+[timecode-talk]: https://gstconf.ubicast.tv/videos/smpte-timecodes-in-gstreamer/
+
+#### GStreamer OpenMAX IL plugin
+
+The last gst-omx release, 1.2.0, was in July 2014. It was about time to get
+a new one out with all the improvements that have happened in the meantime.
+From now on, we will try to release gst-omx together with all other modules.
+
+This release features a lot of bugfixes, improved support for the Raspberry Pi
+and in general improved support for zerocopy rendering via EGL and a few minor
+new features.
+
+At this point, gst-omx is known to work best on the Raspberry Pi platform but
+it is also known to work on various other platforms. Unfortunately, we are
+not including configurations for any other platforms, so if you happen to use
+gst-omx: please send us patches with your configuration and code changes!
+
+### New Elements
+
+#### decodebin3, playbin3, parsebin (experimental)
+
+This release features new decoding and playback elements as experimental
+technology previews: `decodebin3` and `playbin3` will soon supersede the
+existing `decodebin` and `playbin` elements. We skipped the number 2 because
+it was already used back in the 0.10 days, which might cause confusion.
+Experimental technology preview means that everything should work fine already,
+but we can't guarantee there won't be minor behavioural changes in the
+next cycle. In any case, please test and report any problems back.
+
+Before we go into detail about what these new elements improve, let's look at
+the new [`parsebin`][parsebin] element. It works similarly to `decodebin` and
+`decodebin3`, only that it stops one step short and does not plug any actual
+decoder elements. It will only plug parsers, tag readers, demuxers and
+depayloaders. Also note that parsebin does not contain any queueing element.
+
+[`decodebin3`'s][decodebin3] internal architecture is slightly different from
+the existing `decodebin` element and fixes many long-standing issues with our
+decoding engine. For one, data is now fed into the internal `multiqueue` element
+*after* it has been parsed and timestamped, which means that the `multiqueue`
+element now has more knowledge and is able to calculate the interleaving of the
+various streams, thus minimizing memory requirements and doing away with magic
+values for buffering limits that were conceived when videos were 240p or 360p.
+Anyone who has tried to play back 4k video streams with decodebin2
+will have noticed the limitations of that approach. The improved timestamp
+tracking also enables `multiqueue` to keep streams of the same type (audio,
+video) aligned better, making sure switching between streams of the same type
+is very fast.
+
+Another major improvement in `decodebin3` is that it will no longer decode
+streams that are not being used. With the old `decodebin` and `playbin`, when
+there were 8 audio streams we would always decode all 8 streams even
+if 7 were not actually used. This caused a lot of CPU overhead, which was
+particularly problematic on embedded devices. When switching between streams
+`decodebin3` will try hard to re-use existing decoders. This is useful when
+switching between multiple streams of the same type if they are encoded in the
+same format.
+
+Re-using decoders is also useful when the available streams change on the fly,
+as might happen with radio streams (chained Oggs), digital television
+broadcasts, when adaptive streaming streams change bitrate, or when switching
+gaplessly to the next title. In order to guarantee a seamless transition, the
+old `decodebin2` would plug a second decoder for the new stream while finishing
+up the old stream. With `decodebin3`, this is no longer needed - at least not
+when the new and old format are the same. This will be particularly useful
+on embedded systems where it is often not possible to run multiple decoders
+at the same time, or when tearing down and setting up decoders is fairly
+expensive.
+
+`decodebin3` also allows for multiple input streams, not just a single one.
+This will be useful, in the future, for gapless playback, or for feeding
+multiple external subtitle streams to decodebin/playbin.
+
+`playbin3` uses `decodebin3` internally, and will supercede `playbin`.
+It was decided that it would be too risky to make the old `playbin` use the
+new `decodebin3` in a backwards-compatible way. The new architecture
+makes it awkward, if not impossible, to maintain perfect backwards compatibility
+in some aspects, hence `playbin3` was born, and developers can migrate to the
+new element and new API at their own pace.
+
+All of these new elements make use of the new `GstStream` API for listing and
+selecting streams, as described above. `parsebin` provides backwards
+compatibility for demuxers and parsers which do not advertise their streams
+using the new API yet (which is most).
+
+The new elements are not entirely feature-complete yet: `playbin3` does not
+support so-called decodersinks yet where the data is not decoded inside
+GStreamer but passed directly for decoding to the sink. `decodebin3` is missing
+the various `autoplug-*` signals to influence which decoders get autoplugged
+in which order. We're looking to add back this functionality, but it will probably
+be in a different way, with a single unified signal and using GstStream perhaps.
+
+For more information on these new elements, check out Edward Hervey's talk
+[*decodebin3 - dealing with modern playback use cases*][db3-talk]
+
+[parsebin]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-plugins/html/gst-plugins-base-plugins-parsebin.html
+[decodebin3]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-plugins/html/gst-plugins-base-plugins-decodebin3.html
+[db3-talk]: https://gstconf.ubicast.tv/videos/decodebin3-or-dealing-with-modern-playback-use-cases/
+
+#### LV2 ported from 0.10 and switched from slv2 to lilv2
+
+The LV2 wrapper plugin has been ported to 1.0 and moved from using the
+deprecated slv2 library to its replacement liblv2. We support sources and
+filter elements. lv2 is short for *Linux Audio Developer's Simple Plugin API
+(LADSPA) version 2* and is an open standard for audio plugins which includes
+support for audio synthesis (generation), digital signal processing of digital
+audio, and MIDI. The new lv2 plugin supersedes the existing LADSPA plugin.
+
+#### WebRTC DSP Plugin for echo-cancellation, gain control and noise suppression
+
+A set of new elements ([webrtcdsp][webrtcdsp], [webrtcechoprobe][webrtcechoprobe])
+based on the WebRTC DSP software stack can now be used to improve your audio
+voice communication pipelines. They support echo cancellation, gain control,
+noise suppression and more. For more details you may read
+[Nicolas' blog post][webrtc-blog-post].
+
+[webrtcdsp]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-plugins/html/gst-plugins-bad-plugins-webrtcdsp.html
+[webrtcechoprobe]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-plugins/html/gst-plugins-bad-plugins-webrtcechoprobe.html
+[webrtc-blog-post]: https://ndufresne.ca/2016/06/gstreamer-echo-canceller/
+
+#### Fraunhofer FDK AAC encoder and decoder
+
+New encoder and decoder elements wrapping the Fraunhofer FDK AAC library have
+been added (`fdkaacdec`, `fdkaacdec`). The Fraunhofer FDK AAC encoder is
+generally considered to be a very high-quality AAC encoder, but unfortunately
+it comes under a non-free license with the option to obtain a paid, commercial
+license.
+
+### Noteworthy element features and additions
+
+#### Major RTP and RTSP improvements
+
+- The RTSP server and source element, as well as the RTP jitterbuffer now support
+  remote clock synchronization according to [RFC7273][https://tools.ietf.org/html/rfc7273].
+- Support for application and profile specific RTCP packets was added.
+- The H265/HEVC payloader/depayloader is again in sync with the final RFC.
+- Seeking stability of the RTSP source and server was improved a lot and
+  runs stably now, even when doing scrub-seeking.
+- The RTSP server received various major bugfixes, including for regressions that
+  caused the IP/port address pool to not be considered, or NAT hole punching
+  to not work anymore. [Bugzilla #766612][https://bugzilla.gnome.org/show_bug.cgi?id=766612]
+- Various other bugfixes that improve the stability of RTP and RTSP, including
+  many new unit / integration tests.
+
+#### Improvements to splitmuxsrc and splitmuxsink
+
+- The splitmux element received reliability and error handling improvements,
+  removing at least one deadlock case. `splitmuxsrc` now stops cleanly at the end
+  of the segment when handling seeks with a stop time. We fixed a bug with large
+  amounts of downstream buffering causing incorrect out-of-sequence playback.
+
+- `splitmuxsrc` now has a `"format-location"` signal to directly specify the list
+  of files to play from.
+
+- `splitmuxsink` can now optionally send force-keyunit events to upstream
+  elements to allow splitting files more accurately instead of having to wait
+  for upstream to provide a new keyframe by itself.
+
+#### OpenGL/GLES improvements
+
+##### iOS and macOS (OS/X)
+
+- We now create OpenGL|ES 3.x contexts on iOS by default with a fallback to
+  OpenGL|ES 2.x if that fails.
+- Various zerocopy decoding fixes and enhancements with the
+  encoding/decoding/capturing elements.
+- libdispatch is now used on all Apple platforms instead of GMainLoop, removing
+  the expensive poll()/pthread_*() overhead.
+
+##### New API
+
+- `GstGLFramebuffer` - for wrapping OpenGL frame buffer objects.  It provides
+  facilities for attaching `GstGLMemory` objects to the necessary attachment
+  points, binding and unbinding and running a user-supplied function with the
+  framebuffer bound.
+- `GstGLRenderbuffer` (a `GstGLBaseMemory` subclass) - for wrapping OpenGL
+  render buffer objects that are typically used for depth/stencil buffers or
+  for color buffers where we don't care about the output.
+- `GstGLMemoryEGL` (a `GstGLMemory` subclass) - for combining `EGLImage`s with a GL
+  texture that replaces `GstEGLImageMemory` bringing the improvements made to the
+  other `GstGLMemory` implementations.  This fixes a performance regression in
+  zerocopy decoding on the Raspberry Pi when used with an updated gst-omx.
+
+##### Miscellaneous improvements
+
+- `gltestsrc` is now usable on devices/platforms with OpenGL 3.x and OpenGL|ES
+  and has completed or gained support for new patterns in line with the
+  existing ones in `videotestsrc`.
+- `gldeinterlace` is now available on devices/platforms with OpenGL|ES
+  implementations.
+- The dispmanx backend (used on the Raspberry Pi) now supports the
+  `gst_video_overlay_set_window_handle()` and
+  `gst_video_overlay_set_render_rectangle()` functions.
+- The `gltransformation` element now correctly transforms mouse coordinates (in
+  window space) to stream coordinates for both perspective and orthographic
+  projections.
+- The `gltransformation` element now detects if the
+  `GstVideoAffineTransformationMeta` is supported downstream and will efficiently
+  pass its transformation downstream. This is a performance improvement as it
+  results in less processing being required.
+- The wayland implementation now uses the multi-threaded safe event-loop API
+  allowing correct usage in applications that call wayland functions from
+  multiple threads.
+- Support for native 90 degree rotations and horizontal/vertical flips
+  in `glimagesink`.
+
+#### Vulkan
+
+- The Vulkan elements now work under Wayland and have received numerous
+  bugfixes.
+
+#### QML elements
+
+- `qmlglsink` video sink now works on more platforms, notably, Windows, Wayland,
+  and Qt's eglfs (for embedded devices with an OpenGL implementation) including
+  the Raspberry Pi.
+- New element `qmlglsrc` to record a QML scene into a GStreamer pipeline.
+
+#### KMS video sink
+
+- New element `kmssink` to render video using Direct Rendering Manager
+  (DRM) and Kernel Mode Setting (KMS) subsystems in the Linux
+  kernel. It is oriented to be used mostly in embedded systems.
+
+#### Wayland video sink
+
+- `waylandsink` now supports the wl_viewporter extension allowing
+  video scaling and cropping to be delegated to the Wayland
+  compositor. This extension is also been made optional, so that it can
+  also work on current compositors that don't support it. It also now has
+  support for the video meta, allowing zero-copy operations in more
+  cases.
+
+#### DVB improvements
+
+- `dvbsrc` now has better delivery-system autodetection and several
+  new parameter sanity-checks to improve its resilience to configuration
+  omissions and errors. Superfluous polling continues to be trimmed down,
+  and the debugging output has been made more consistent and precise.
+  Additionally, the channel-configuration parser now supports the new dvbv5
+  format, enabling `dvbbasebin` to automatically playback content transmitted
+  on delivery systems that previously required manual description, like ISDB-T.
+
+#### DASH, HLS and adaptivedemux
+
+- HLS now has support for Alternate Rendition audio and video tracks. Full
+  support for Alternate Rendition subtitle tracks will be in an upcoming release.
+- DASH received support for keyframe-only trick modes if the
+  `GST_SEEK_FLAG_TRICKMODE_KEY_UNITS` flag is given when seeking. It will
+  only download keyframes then, which should help with high-speed playback.
+  Changes to skip over multiple frames based on bandwidth and other metrics
+  will be added in the near future.
+- Lots of reliability fixes around seek handling and bitrate switching.
+
+#### Bluetooth improvements
+
+- The `avdtpsrc` element now supports metadata such as track title, artist
+  name, and more, which devices can send via AVRCP. These are published as
+  tags on the pipeline.
+- The `a2dpsink` element received some love and was cleaned up so that it
+  actually works after the initial GStreamer 1.0 port.
+
+#### GStreamer VAAPI
+
+- All the decoders have been split, one plugin feature per codec. So
+  far, the available ones, depending on the driver, are:
+  `vaapimpeg2dec`, `vaapih264dec`, `vaapih265dec`, `vaapivc1dec`, `vaapivp8dec`,
+  `vaapivp9dec` and `vaapijpegdec` (which already was split).
+- Improvements when mapping VA surfaces into memory. It now differentiates
+  between negotiation caps and allocations caps, since the allocation
+  memory for surfaces may be bigger than one that is going to be
+  mapped.
+- `vaapih265enc` now supports constant bitrate mode (CBR).
+- Since several VA drivers are unmaintained, we decide to keep a whitelist
+  with the va drivers we actually test, which is mostly the i915 and to a lesser
+  degree gallium from the mesa project. Exporting the environment variable
+  `GST_VAAPI_ALL_DRIVERS` disables the whitelist.
+- Plugin features are registered at run-time, according to their support by
+  the loaded VA driver. So only the decoders and encoder supported by the
+  system are registered. Since the driver can change, some dependencies are
+  tracked to invalidate the GStreamer registry and reload the plugin.
+- `dmabuf` importation from upstream has been improved, gaining performance.
+- `vaapipostproc` now can negotiate buffer transformations via caps.
+- Decoders now can do I-frame only reverse playback. This decodes I-frames
+  only because the surface pool is smaller than the required by the GOP to show all the
+  frames.
+- The upload of frames onto native GL textures has been optimized too, keeping
+  a cache of the internal structures for the offered textures by the sink.
+
+#### V4L2 changes
+
+- More pixels formats are now supported
+- Decoder is now using `G_SELECTION` instead of the deprecated `G_CROP`
+- Decoder now uses the `STOP` command to handle EOS
+- Transform element can now scale the pixel aspect ratio
+- Colorimetry support has been improved even more
+- We now support the `OUTPUT_OVERLAY` type of video node in v4l2sink
+
+#### Miscellaneous
+
+- `multiqueue`'s input pads gained a new `"group-id"` property which
+  can be used to group input streams. Typically one will assign
+  different id numbers to audio, video and subtitle streams for
+  example. This way `multiqueue` can make sure streams of the same
+  type advance in lockstep if some of the streams are unlinked and the
+  `"sync-by-running-time"` property is set. This is used in
+  decodebin3/playbin3 to implement almost-instantaneous stream
+  switching.  The grouping is required because different downstream
+  paths (audio, video, etc.)  may have different buffering/latency
+  etc. so might be consuming data from multiqueue with a slightly
+  different phase, and if we track different stream groups separately
+  we minimize stream switching delays and buffering inside the
+  `multiqueue`.
+- `alsasrc` now supports ALSA drivers without a position for each
+  channel, this is common in some professional or industrial hardware.
+- `libvpx` based decoders (`vp8dec` and `vp9dec`) now create multiple threads on
+  computers with multiple CPUs automatically.
+- `rfbsrc` - used for capturing from a VNC server - has seen a lot of
+  debugging. It now supports the latest version of the RFB
+  protocol and uses GIO everywhere.
+- `tsdemux` can now read ATSC E-AC-3 streams.
+- New `GstVideoDirection` video orientation interface for rotating, flipping
+  and mirroring video in 90° steps. It is implemented by the `videoflip` and
+  `glvideoflip` elements currently.
+- It is now possible to give `appsrc` a duration in time, and there is now a
+  non-blocking try-pull API for `appsink` that returns NULL if nothing is
+  available right now.
+- `x264enc` has support now for chroma-site and colorimetry settings
+- A new JPEG2000 parser element was added, and the JPEG2000 caps were cleaned
+  up and gained more information needed in combination with RTP and various
+  container formats.
+- Reverse playback support for `videorate` and `deinterlace` was implemented
+- Various improvements everywhere for reverse playback and `KEY_UNITS` trick mode
+- New cleaned up `rawaudioparse` and `rawvideoparse` elements that replace the
+  old `audioparse` and `videoparse` elements. There are compatibility element
+  factories registered with the old names to allow existing code to continue
+  to work.
+- The Decklink plugin gained support for 10 bit video SMPTE timecodes, and
+  generally got many bugfixes for various issues.
+- New API in `GstPlayer` for setting the multiview mode for stereoscopic
+  video, setting an HTTP/RTSP user agent and a time offset between audio and
+  video. In addition to that, there were various bugfixes and the new
+  gst-examples module contains Android, iOS, GTK+ and Qt example applications.
+- `GstBin` has new API for suppressing various `GstElement` or `GstObject`
+  flags that would otherwise be affected by added/removed child elements. This
+  new API allows `GstBin` subclasses to handle for themselves if they
+  should be considered a sink or source element, for example.
+- The `subparse` element can handle WebVTT streams now.
+- A new `sdpsrc` element was added that can read an SDP from a file, or get it
+  as a string as property and then sets up an RTP pipeline accordingly.
+
+### Plugin moves
+
+No plugins were moved this cycle. We'll make up for it next cycle, promise!
+
+### Rewritten memory leak tracer
+
+GStreamer has had basic functionality to trace allocation and freeing of
+both mini-objects (buffers, events, caps, etc.) and objects in the form of the
+internal `GstAllocTrace` tracing system. This API was never exposed in the
+1.x API series though. When requested, this would dump a list of objects and
+mini-objects at exit time which had still not been freed at that point,
+enabled with an environment variable. This subsystem has now been removed
+in favour of a new implementation based on the recently-added tracing framework.
+
+Tracing hooks have been added to trace the creation and destruction of
+GstObjects and mini-objects, and a new tracer plugin has been written using
+those new hooks to track which objects are still live and which are not. If
+GStreamer has been compiled against the libunwind library, the new leaks tracer
+will remember where objects were allocated from as well. By default the leaks
+tracer will simply output a warning if leaks have been detected on `gst_deinit()`.
+
+If the `GST_LEAKS_TRACER_SIG` environment variable is set, the leaks tracer
+will also handle the following UNIX signals:
+
+ - `SIGUSR1`: log alive objects
+ - `SIGUSR2`: create a checkpoint and print a list of objects created and
+   destroyed since the previous checkpoint.
+
+Unfortunately this will not work on Windows due to no signals, however.
+
+If the `GST_LEAKS_TRACER_STACK_TRACE` environment variable is set, the leaks
+tracer will also log the creation stack trace of leaked objects. This may
+significantly increase memory consumption however.
+
+New `MAY_BE_LEAKED` flags have been added to GstObject and GstMiniObject, so
+that objects and mini-objects that are likely to stay around forever can be
+flagged and blacklisted from the leak output.
+
+To give the new leak tracer a spin, simply call any GStreamer application such
+as `gst-launch-1.0` or `gst-play-1.0` like this:
+
+    GST_TRACERS=leaks gst-launch-1.0 videotestsrc num-buffers=10 ! fakesink
+
+If there are any leaks, a warning will be raised at the end.
+
+It is also possible to trace only certain types of objects or mini-objects:
+
+    GST_TRACERS="leaks(GstEvent,GstMessage)" gst-launch-1.0 videotestsrc num-buffers=10 ! fakesink
+
+This dedicated leaks tracer is much much faster than valgrind since all code is
+executed natively instead of being instrumented. This makes it very suitable
+for use on slow machines or embedded devices. It is however limited to certain
+types of leaks and won't catch memory leaks when the allocation has been made
+via plain old `malloc()` or `g_malloc()` or other means. It will also not trace
+non-GstObject GObjects.
+
+The goal is to enable leak tracing on GStreamer's Continuous-Integration and
+testing system, both for the regular unit tests (make check) and media tests
+(gst-validate), so that accidental leaks in common code paths can be detected
+and fixed quickly.
+
+For more information about the new tracer, check out Guillaume Desmottes's
+["Tracking Memory Leaks"][leaks-talk] talk or his [blog post][leaks-blog] about
+the topic.
+
+[leaks-talk]: https://gstconf.ubicast.tv/videos/tracking-memory-leaks/
+[leaks-blog]: https://blog.desmottes.be/?post/2016/06/20/GStreamer-leaks-tracer
+
+### GES and NLE changes
+
+- Clip priorities are now handled by the layers, and the GESTimelineElement
+  priority property is now deprecated and unused
+- Enhanced (de)interlacing support to always use the `deinterlace` element
+  and expose needed properties to users
+- Allow reusing clips children after removing the clip from a layer
+- We are now testing many more rendering formats in the gst-validate
+  test suite, and failures have been fixed.
+- Also many bugs have been fixed in this cycle!
+
+### GStreamer validate changes
+
+This cycle has been focused on making GstValidate more than just a validating
+tool, but also a tool to help developers debug their GStreamer issues. When
+reporting issues, we try to gather as much information as possible and expose
+it to end users in a useful way. For an example of such enhancements, check out
+Thibault Saunier's [blog post](improving-debugging-gstreamer-validate) about
+the new Not Negotiated Error reporting mechanism.
+
+Playbin3 support has been added so we can run validate tests with `playbin3`
+instead of playbin.
+
+We are now able to properly communicate between `gst-validate-launcher` and
+launched subprocesses with actual IPC between them. That has enabled the test
+launcher to handle failing tests specifying the exact expected issue(s).
+
+[improving-debugging-gstreamer-validate]: https://blogs.s-osg.org/improving-debugging-gstreamer-validate/
+
+### gst-libav changes
+
+gst-libav uses the recently released ffmpeg 3.2 now, which brings a lot of
+improvements and bugfixes from the ffmpeg team in addition to various new
+codec mappings on the GStreamer side and quite a few bugfixes to the GStreamer
+integration to make it more robust.
+
+## Build and Dependencies
+
+### Experimental support for Meson as build system
+
+#### Overview
+
+We have have added support for building GStreamer using the
+[Meson build system][meson]. This is currently experimental, but should work
+fine at least on Linux using the gcc or clang toolchains and on Windows using
+the MingW or MSVC toolchains.
+
+Autotools remains the primary build system for the time being, but we hope to
+someday replace it and will steadily work towards that goal.
+
+More information about the background and implications of all this and where
+we're hoping to go in future with this can be found in [Tim's mail][meson-mail]
+to the gstreamer-devel mailing list.
+
+For more information on Meson check out [these videos][meson-videos] and also
+the [Meson talk][meson-gstconf] at the GStreamer Conference.
+
+Immediate benefits for Linux users are faster builds and rebuilds. At the time
+of writing the Meson build of GStreamer is used by default in GNOME's jhbuild
+system.
+
+The Meson build currently still lacks many of the fine-grained configuration
+options to enable/disable specific plugins. These will be added back in due
+course.
+
+Note: The meson build files are not distributed in the source tarballs, you will
+need to get GStreamer from git if you want try it out.
+
+[meson]: http://mesonbuild.com/
+[meson-mail]: https://lists.freedesktop.org/archives/gstreamer-devel/2016-September/060231.html
+[meson-videos]: http://mesonbuild.com/videos.html
+[meson-gstconf]: https://gstconf.ubicast.tv/videos/gstreamer-development-on-windows-ans-faster-builds-everywhere-with-meson/
+
+#### Windows Visual Studio toolchain support
+
+Windows users might appreciate being able to build GStreamer using the MSVC
+toolchain, which is not possible using autotools. This means that it will be
+possible to debug GStreamer and applications in Visual Studio, for example.
+We require VS2015 or newer for this at the moment.
+
+There are two ways to build GStreamer using the MSVC toolchain:
+
+1. Using the MSVC command-line tools (`cl.exe` etc.) via Meson's "ninja" backend.
+2. Letting Meson's "vs2015" backend generate Visual Studio project files that
+   can be opened in Visual Studio and compiled from there.
+
+This is currently only for adventurous souls though. All the bits are in place,
+but support for all of this has not been merged into GStreamer's cerbero build
+tool yet at the time of writing. This will hopefully happen in the next cycle,
+but for now this means that those wishing to compile GStreamer with MSVC will
+have to get their hands dirty.
+
+There are also no binary SDK builds using the MSVC toolchain yet.
+
+For more information on GStreamer builds using Meson and the Windows toolchain
+check out Nirbheek Chauhan's blog post ["Building and developing GStreamer using Visual Studio"][msvc-blog].
+
+[msvc-blog]: http://blog.nirbheek.in/2016/07/building-and-developing-gstreamer-using.html
+
+### Dependencies
+
+#### gstreamer
+
+libunwind was added as an optional dependency. It is used only for debugging
+and tracing purposes.
+
+The `opencv` plugin in gst-plugins-bad can now be built against OpenCV
+version 3.1, previously only 2.3-2.5 were supported.
+
+#### gst-plugins-ugly
+
+- `mpeg2dec` now requires at least libmpeg2 0.5.1 (from 2008).
+
+#### gst-plugins-bad
+
+- `gltransformation` now requires at least graphene 1.4.0.
+
+- `lv2` now plugin requires at least lilv 0.16 instead of slv2.
+
+### Packaging notes
+
+Packagers please note that the `gst/gstconfig.h` public header file in the
+GStreamer core library moved back from being an architecture dependent include
+to being architecture independent, and thus it is no longer installed into
+`$(libdir)/gstreamer-1.0/include/gst` but into the normal include directory
+where it lives happily ever after with all the other public header files. The
+reason for this is that we now check whether the target supports unaligned
+memory access based on predefined compiler macros at compile time instead of
+checking it at configure time.
+
+## Platform-specific improvements
+
+### Android
+
+#### New universal binaries for all supported ABIs
+
+We now provide a "universal" tarball to allow building apps against all the
+architectures currently supported (x86, x86-64, armeabi, armeabi-v7a,
+armeabi-v8a). This is needed for building with recent versions of the Android
+NDK which defaults to building against all supported ABIs. Use [the Android
+player example][android-player-example-build] as a reference for the required
+changes.
+
+[android-player-example-build]: https://cgit.freedesktop.org/gstreamer/gst-examples/commit/playback/player/android?id=a5cdde9119f038a1eb365aca20faa9741a38e788
+
+#### Miscellaneous
+
+- New `ahssrc` element that allows reading the hardware sensors, e.g. compass
+  or accelerometer.
+
+### macOS (OS/X) and iOS
+
+- Support for querying available devices on OS/X via the GstDeviceProvider
+  API was added.
+- It is now possible to create OpenGL|ES 3.x contexts on iOS and use them in
+  combination with the VideoToolbox based decoder element.
+- many OpenGL/GLES improvements, see OpenGL section above
+
+### Windows
+
+- gstconfig.h: Always use dllexport/import on Windows with MSVC
+- Miscellaneous fixes to make libs and plugins compile with the MVSC toolchain
+- MSVC toolchain support (see Meson section above for more details)
+
+## New Modules for Documentation, Examples, Meson Build
+
+Three new git modules have been added recently:
+
+### gst-docs
+
+This is a new module where we will maintain documentation in the markdown
+format.
+
+It contains the former gstreamer.com SDK tutorials which have kindly been made
+available by Fluendo under a Creative Commons license. The tutorials have been
+reviewed and updated for GStreamer 1.x and will be available as part of the
+[official GStreamer documentation][doc] going forward. The old gstreamer.com
+site will then be shut down with redirects pointing to the updated tutorials.
+
+Some of the existing docbook XML-formatted documentation from the GStreamer
+core module such as the *Application Development Manual* and the *Plugin
+Writer's Guide* have been converted to markdown as well and will be maintained
+in the gst-docs module in future. They will be removed from the GStreamer core
+module in the next cycle.
+
+This is just the beginning. Our goal is to provide a more cohesive documentation
+experience for our users going forward, and easier to create and maintain
+documentation for developers. There is a lot more work to do, get in touch if
+you want to help out.
+
+If you encounter any problems or spot any omissions or outdated content in the
+new documentation, please [file a bug in bugzilla][doc-bug] to let us know.
+
+We will probably release gst-docs as a separate tarball for distributions to
+package in the next cycle.
+
+[doc]: http://gstreamer.freedesktop.org/documentation/
+[doc-bug]: https://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer&component=documentation
+
+### gst-examples
+
+A new [module][examples-git] has been added for examples. It does not contain
+much yet, currently it only contains a small [http-launch][http-launch] utility
+that serves a pipeline over http as well as various [GstPlayer playback frontends][puis]
+for Android, iOS, Gtk+ and Qt.
+
+More examples will be added over time. The examples in this repository should
+be more useful and more substantial than most of the examples we ship as part
+of our other modules, and also written in a way that makes them good example
+code. If you have ideas for examples, let us know.
+
+No decision has been made yet if this module will be released and/or packaged.
+It probably makes sense to do so though.
+
+[examples-git]: https://cgit.freedesktop.org/gstreamer/gst-examples/tree/
+[http-launch]: https://cgit.freedesktop.org/gstreamer/gst-examples/tree/network/http-launch/
+[puis]: https://cgit.freedesktop.org/gstreamer/gst-examples/tree/playback/player
+
+### gst-build
+
+[gst-build][gst-build-git] is a new meta module to build GStreamer using the
+new Meson build system. This module is not required to build GStreamer with
+Meson, it is merely for convenience and aims to provide a development setup
+similar to the existing `gst-uninstalled` setup.
+
+gst-build makes use of Meson's [subproject feature][meson-subprojects] and sets
+up the various GStreamer modules as subprojects, so they can all be updated and
+built in parallel.
+
+This module is still very new and highly experimental. It should work at least
+on Linux and Windows (OS/X needs some build fixes). Let us know of any issues
+you encounter by popping into the `#gstreamer` IRC channel or by
+[filing a bug][gst-build-bug].
+
+This module will probably not be released or packaged (does not really make sense).
+
+[gst-build-git]: https://cgit.freedesktop.org/gstreamer/gst-build/tree/
+[gst-build-bug]: https://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer&component=gst-build
+[meson-subprojects]: https://github.com/mesonbuild/meson/wiki/Subprojects
+
+## Contributors
+
+Aaron Boxer, Aleix Conchillo Flaqué, Alessandro Decina, Alexandru Băluț, Alex
+Ashley, Alex-P. Natsios, Alistair Buxton, Allen Zhang, Andreas Naumann, Andrew
+Eikum, Andy Devar, Anthony G. Basile, Arjen Veenhuizen, Arnaud Vrac, Artem
+Martynovich, Arun Raghavan, Aurélien Zanelli, Barun Kumar Singh, Bernhard
+Miller, Brad Lackey, Branko Subasic, Carlos Garcia Campos, Carlos Rafael
+Giani, Christoffer Stengren, Daiki Ueno, Damian Ziobro, Danilo Cesar Lemes de
+Paula, David Buchmann, Dimitrios Katsaros, Duncan Palmer, Edward Hervey,
+Emmanuel Poitier, Enrico Jorns, Enrique Ocaña González, Fabrice Bellet,
+Florian Zwoch, Florin Apostol, Francisco Velazquez, Frédéric Bertolus, Fredrik
+Fornwall, Gaurav Gupta, George Kiagiadakis, Georg Lippitsch, Göran Jönsson,
+Graham Leggett, Gregoire Gentil, Guillaume Desmottes, Gwang Yoon Hwang, Haakon
+Sporsheim, Haihua Hu, Havard Graff, Heinrich Fink, Hoonhee Lee, Hyunjun Ko,
+Iain Lane, Ian, Ian Jamison, Jagyum Koo, Jake Foytik, Jakub Adam, Jan
+Alexander Steffens (heftig), Jan Schmidt, Javier Martinez Canillas, Jerome
+Laheurte, Jesper Larsen, Jie Jiang, Jihae Yi, Jimmy Ohn, Jinwoo Ahn, Joakim
+Johansson, Joan Pau Beltran, Jonas Holmberg, Jonathan Matthew, Jonathan Roy,
+Josep Torra, Julien Isorce, Jun Ji, Jürgen Slowack, Justin Kim, Kazunori
+Kobayashi, Kieran Bingham, Kipp Cannon, Koop Mast, Kouhei Sutou, Kseniia, Kyle
+Schwarz, Kyungyong Kim, Linus Svensson, Luis de Bethencourt, Marcin Kolny,
+Marcin Lewandowski, Marianna Smidth Buschle, Mario Sanchez Prada, Mark
+Combellack, Mark Nauwelaerts, Martin Kelly, Matej Knopp, Mathieu Duponchelle,
+Mats Lindestam, Matthew Gruenke, Matthew Waters, Michael Olbrich, Michal Lazo,
+Miguel París Díaz, Mikhail Fludkov, Minjae Kim, Mohan R, Munez, Nicola Murino,
+Nicolas Dufresne, Nicolas Huet, Nikita Bobkov, Nirbheek Chauhan, Olivier
+Crête, Paolo Pettinato, Patricia Muscalu, Paulo Neves, Peng Liu, Peter
+Seiderer, Philippe Normand, Philippe Renon, Philipp Zabel, Pierre Lamot, Piotr
+Drąg, Prashant Gotarne, Raffaele Rossi, Ray Strode, Reynaldo H. Verdejo
+Pinochet, Santiago Carot-Nemesio, Scott D Phillips, Sebastian Dröge, Sebastian
+Rasmussen, Sergei Saveliev, Sergey Borovkov, Sergey Mamonov, Sergio Torres
+Soldado, Seungha Yang, sezero, Song Bing, Sreerenj Balachandran, Stefan Sauer,
+Stephen, Steven Hoving, Stian Selnes, Thiago Santos, Thibault Saunier, Thijs
+Vermeir, Thomas Bluemel, Thomas Jones, Thomas Klausner, Thomas Scheuermann,
+Tim-Philipp Müller, Ting-Wei Lan, Tom Schoonjans, Ursula Maplehurst, Vanessa
+Chipirras Navalon, Víctor Manuel Jáquez Leal, Vincent Penquerc'h, Vineeth TM,
+Vivia Nikolaidou, Vootele Vesterblom, Wang Xin-yu (王昕宇), William Manley,
+Wim Taymans, Wonchul Lee, Xabier Rodriguez Calvar, Xavier Claessens, xlazom00,
+Yann Jouanin, Zaheer Abbas Merali
+
+... and many others who have contributed bug reports, translations, sent
+suggestions or helped testing.
+
+## Bugs fixed in 1.10
+
+More than [750 bugs][bugs-fixed-in-1.10] have been fixed during
+the development of 1.10.
+
+This list does not include issues that have been cherry-picked into the
+stable 1.8 branch and fixed there as well, all fixes that ended up in the
+1.8 branch are also included in 1.10.
+
+This list also does not include issues that have been fixed without a bug
+report in bugzilla, so the actual number of fixes is much higher.
+
+[bugs-fixed-in-1.10]: https://bugzilla.gnome.org/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&classification=Platform&limit=0&list_id=164074&order=bug_id&product=GStreamer&query_format=advanced&resolution=FIXED&target_milestone=1.8.1&target_milestone=1.8.2&target_milestone=1.8.3&target_milestone=1.8.4&target_milestone=1.9.1&target_milestone=1.9.2&target_milestone=1.9.90&target_milestone=1.10.0
+
+## Stable 1.10 branch
+
+After the 1.10.0 release there will be several 1.10.x bug-fix releases which
+will contain bug fixes which have been deemed suitable for a stable branch,
+but no new features or intrusive changes will be added to a bug-fix release
+usually. The 1.10.x bug-fix releases will be made from the git 1.10 branch,
+which is a stable branch.
+
+### 1.10.0
+
+1.10.0 was released on 1st November 2016.
+
+## Known Issues
+
+- iOS builds with iOS 6 SDK and old C++ STL. You need to select iOS 6 instead
+  of 7 or 8 in your projects settings to be able to link applications.
+  [Bug #766366](https://bugzilla.gnome.org/show_bug.cgi?id=766366)
+- Code signing for Apple platforms has some problems currently, requiring
+  manual work to get your application signed. [Bug #771860](https://bugzilla.gnome.org/show_bug.cgi?id=771860)
+- Building applications with Android NDK r13 on Windows does not work. Other
+  platforms and earlier/later versions of the NDK are not affected.
+  [Bug #772842](https://bugzilla.gnome.org/show_bug.cgi?id=772842)
+- The new leaks tracer may deadlock the application (or exhibit other undefined
+  behaviour) when `SIGUSR` handling is enabled via the `GST_LEAKS_TRACER_SIG`
+  environment variable. [Bug #770373](https://bugzilla.gnome.org/show_bug.cgi?id=770373)
+- vp8enc crashes on 32 bit Windows, but was working fine in 1.6. 64 bit Windows is unaffected.
+  [Bug #763663](https://bugzilla.gnome.org/show_bug.cgi?id=763663)
+
+## Schedule for 1.12
+
+Our next major feature release will be 1.12, and 1.11 will be the unstable
+development version leading up to the stable 1.12 release. The development
+of 1.11/1.12 will happen in the git master branch.
+
+The plan for the 1.12 development cycle is yet to be confirmed, but it is
+expected that feature freeze will be around early/mid-January,
+followed by several 1.11 pre-releases and the new 1.12 stable release
+in March.
+
+1.12 will be backwards-compatible to the stable 1.10, 1.8, 1.6, 1.4, 1.2 and
+1.0 release series.
+
+- - -
+
+*These release notes have been prepared by Olivier Crête, Sebastian Dröge,
+Nicolas Dufresne, Edward Hervey, Víctor Manuel Jáquez Leal, Tim-Philipp
+Müller, Reynaldo H. Verdejo Pinochet, Arun Raghavan, Thibault Saunier,
+Jan Schmidt, Wim Taymans, Matthew Waters*
+
+*License: [CC BY-SA 4.0](http://creativecommons.org/licenses/by-sa/4.0/)*
+
diff --git a/RELEASE b/RELEASE
index e70dea5..a0ba5a9 100644
--- a/RELEASE
+++ b/RELEASE
@@ -1,13 +1,15 @@
 
-Release notes for GStreamer Bad Plugins 1.9.90
+Release notes for GStreamer Bad Plugins 1.10.0
 
-The GStreamer team is pleased to announce the first release candidate of the
-stable 1.10 release series. The 1.10 release series is adding new features on
-top of the 1.0, 1.2, 1.4, 1.6 and 1.8 series and is part of the API and
-ABI-stable 1.x release series of the GStreamer multimedia framework.
+The GStreamer team is pleased to announce the first release of the new stable
+1.10 release series. The 1.10 release series is adding new features on top of
+the 1.0, 1.2, 1.4, 1.6 and 1.8 series and is part of the API and ABI-stable 1.x
+release series of the GStreamer multimedia framework.
 
 
-Binaries for Android, iOS, Mac OS X and Windows will be provided in the next days.
+Binaries for Android, iOS, Mac OS X and Windows will be provided shortly after
+the source release by the GStreamer project during the stable 1.10 release
+series.
 
 
 "That an accusation?"
@@ -58,29 +60,25 @@
 
 Bugs fixed in this release
      
-      * 738079 : wayland: Destory the scaler interface while finalizing display object
-      * 761987 : waylandsink relies on wl_scaler
-      * 766018 : gl/dispmanx: Implements set_render_rectangle to adjust the position of window
-      * 767422 : kmssink: Uses scaled size to specify input buffer region
-      * 767671 : waylandsink: update from scaler protocol to viewporter protocol
-      * 768158 : waylandsink : memory leak of gst_wayland_sink_get_caps() and scaler of wldisplay
-      * 770146 : kmssink won't compile
-      * 770221 : rtponviftimestamp: Implement property " Immediate " 
-      * 770455 : fdkaacdec: asserts on HE-AAC v2 sample
-      * 770925 : qmlglsink: check qt_context_ first in GstQSGTexture::bind()
-      * 770933 : srtpenc: deadlock in create_session
-      * 771021 : Duplicate GL_CFLAGS in gst-libs/gst/gl/Makefile.am
-      * 771023 : tests/examples/gl/clutter/Makefile.am references deprecated variable $(GST_PLUGINS_GL_LIBS)
-      * 771198 : mpegtsdemux: Trying to set NULL string on field 'title' on taglist
-      * 771382 : dvbsuboverlay: map with READWRITE for overlay blend
-      * 771780 : build: add missing $(GST_PLUGINS_BASE_LIBS)
-      * 771794 : wayland/Makefile.am: add missing libs
-      * 771817 : dx9screencapsrc: throw error for invalid screen index
-      * 771871 : lv2 plugin doesn't do processing in case of mono sound
-      * 771970 : h265parse: Fix parsing of multiple NALs in the hvcC box
-      * 772067 : fdkaacenc: fix enc ! dec case
-      * 772108 : fdkaacenc: set framed=true on src caps
-      * 772186 : fdkaac: misc memory related fixes
+      * 758717 : bayer: pixel aspect ratio not forwarded when transforming caps
+      * 762717 : mpegtsmux: m2ts-mode crashes (abort)
+      * 769382 : qmlglsink: eglmemory memory leak on rpi
+      * 770528 : tsdemux: add support ATSC EAC3
+      * 770587 : qtkitvideosrc: 'QTKit/QTKit.h' file not found (macOS Sierra)
+      * 772330 : adaptivedemux: Improve bitrate estimation
+      * 772499 : opencv: Fix memory leak by gst_caps_to_string
+      * 772503 : gsttimidity: add support for timidity-0.2.x
+      * 772698 : dispmanx: set_render_rectangle functions is buggy
+      * 772699 : dispmanx: dispmanx_egl_show() should call window_resize() only when there is no render rect is set
+      * 772704 : hlsdemux: fix GstHLSDemuxStream type inheritance
+      * 772706 : adaptivedemux: fix buffer size print format
+      * 772742 : mpegtsdemux: Implement efficient program updates
+      * 773026 : qmlglsink build fails for rpi
+      * 773423 : cerbero: Build fixes on macOS Sierra and Xcode 8
+      * 773540 : dtls: port to OpenSSL 1.1.0
+      * 773635 : hlsdemux: don't try to access non-existant iframe variant
+      * 773720 : directsoundsrc: incorrect cast of WinAPI function argument
+      * 772608 : rpi/dispmanx: Implement gst_video_overlay_set_window_handle() for dispmanx window
 
 ==== Download ====
 
@@ -117,30 +115,25 @@
         
 Contributors to this release
     
-      * Alessandro Decina
-      * Alistair Buxton
+      * Arnaud Vrac
+      * Artem Martynovich
       * Arun Raghavan
-      * Florian Zwoch
-      * Graham Leggett
-      * Gwang Yoon Hwang
-      * Haihua Hu
-      * Hyunjun Ko
-      * Jan Schmidt
-      * Joakim Johansson
-      * Julien Isorce
-      * Kyungyong Kim
-      * Martin Kelly
+      * Daiki Ueno
+      * Edward Hervey
+      * Jimmy Ohn
+      * Joan Pau Beltran
       * Matthew Waters
-      * Nicolas Dufresne
-      * Olivier Crête
-      * Philippe Normand
+      * Michael Olbrich
+      * Munez
+      * Nirbheek Chauhan
+      * Reynaldo H. Verdejo Pinochet
       * Scott D Phillips
       * Sebastian Dröge
-      * Sergey Mamonov
+      * Sergey Borovkov
       * Thiago Santos
       * Thibault Saunier
       * Tim-Philipp Müller
       * Vincent Penquerc'h
-      * Víctor Manuel Jáquez Leal
       * Wonchul Lee
+      * sezero
  
\ No newline at end of file
diff --git a/configure b/configure
index 2508148..7997d3b 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 Bad Plug-ins 1.9.90.
+# Generated by GNU Autoconf 2.69 for GStreamer Bad Plug-ins 1.10.0.
 #
 # Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer>.
 #
@@ -591,8 +591,8 @@
 # Identity of this package.
 PACKAGE_NAME='GStreamer Bad Plug-ins'
 PACKAGE_TARNAME='gst-plugins-bad'
-PACKAGE_VERSION='1.9.90'
-PACKAGE_STRING='GStreamer Bad Plug-ins 1.9.90'
+PACKAGE_VERSION='1.10.0'
+PACKAGE_STRING='GStreamer Bad Plug-ins 1.10.0'
 PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer'
 PACKAGE_URL=''
 
@@ -2689,7 +2689,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures GStreamer Bad Plug-ins 1.9.90 to adapt to many kinds of systems.
+\`configure' configures GStreamer Bad Plug-ins 1.10.0 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -2761,7 +2761,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of GStreamer Bad Plug-ins 1.9.90:";;
+     short | recursive ) echo "Configuration of GStreamer Bad Plug-ins 1.10.0:";;
    esac
   cat <<\_ACEOF
 
@@ -3485,7 +3485,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-GStreamer Bad Plug-ins configure 1.9.90
+GStreamer Bad Plug-ins configure 1.10.0
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -4458,7 +4458,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by GStreamer Bad Plug-ins $as_me 1.9.90, which was
+It was created by GStreamer Bad Plug-ins $as_me 1.10.0, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -5440,7 +5440,7 @@
 
 # Define the identity of the package.
  PACKAGE='gst-plugins-bad'
- VERSION='1.9.90'
+ VERSION='1.10.0'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -5651,9 +5651,9 @@
 
 
 
-  PACKAGE_VERSION_MAJOR=$(echo 1.9.90 | cut -d'.' -f1)
-  PACKAGE_VERSION_MINOR=$(echo 1.9.90 | cut -d'.' -f2)
-  PACKAGE_VERSION_MICRO=$(echo 1.9.90 | cut -d'.' -f3)
+  PACKAGE_VERSION_MAJOR=$(echo 1.10.0 | cut -d'.' -f1)
+  PACKAGE_VERSION_MINOR=$(echo 1.10.0 | cut -d'.' -f2)
+  PACKAGE_VERSION_MICRO=$(echo 1.10.0 | cut -d'.' -f3)
 
 
 
@@ -5664,7 +5664,7 @@
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking nano version" >&5
 $as_echo_n "checking nano version... " >&6; }
 
-  NANO=$(echo 1.9.90 | cut -d'.' -f4)
+  NANO=$(echo 1.10.0 | cut -d'.' -f4)
 
   if test x"$NANO" = x || test "x$NANO" = "x0" ; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: 0 (release)" >&5
@@ -10508,10 +10508,10 @@
 done
 
 
-  GST_CURRENT=990
+  GST_CURRENT=1000
   GST_REVISION=0
-  GST_AGE=990
-  GST_LIBVERSION=990:0:990
+  GST_AGE=1000
+  GST_LIBVERSION=1000:0:1000
 
 
 
@@ -15139,8 +15139,8 @@
 
 
 
-GST_REQ=1.9.90
-GSTPB_REQ=1.9.90
+GST_REQ=1.10.0
+GSTPB_REQ=1.10.0
 
 
 
@@ -61312,7 +61312,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by GStreamer Bad Plug-ins $as_me 1.9.90, which was
+This file was extended by GStreamer Bad Plug-ins $as_me 1.10.0, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -61378,7 +61378,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-GStreamer Bad Plug-ins config.status 1.9.90
+GStreamer Bad Plug-ins config.status 1.10.0
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff --git a/configure.ac b/configure.ac
index 8402afd..676a24a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3,7 +3,7 @@
 dnl initialize autoconf
 dnl when going to/from release please set the nano (fourth number) right !
 dnl releases only do Wall, git and prerelease does Werror too
-AC_INIT([GStreamer Bad Plug-ins],[1.9.90],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gst-plugins-bad])
+AC_INIT([GStreamer Bad Plug-ins],[1.10.0],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gst-plugins-bad])
 
 AG_GST_INIT
 
@@ -51,11 +51,11 @@
 dnl - interfaces added -> increment AGE
 dnl - interfaces removed -> AGE = 0
 dnl sets GST_LT_LDFLAGS
-AS_LIBTOOL(GST, 990, 0, 990)
+AS_LIBTOOL(GST, 1000, 0, 1000)
 
 dnl *** required versions of GStreamer stuff ***
-GST_REQ=1.9.90
-GSTPB_REQ=1.9.90
+GST_REQ=1.10.0
+GSTPB_REQ=1.10.0
 
 dnl *** autotools stuff ****
 
diff --git a/docs/libs/html/gst-plugins-bad-libs-1.0.devhelp2 b/docs/libs/html/gst-plugins-bad-libs-1.0.devhelp2
index e120295..231b967 100644
--- a/docs/libs/html/gst-plugins-bad-libs-1.0.devhelp2
+++ b/docs/libs/html/gst-plugins-bad-libs-1.0.devhelp2
@@ -1411,6 +1411,7 @@
     <keyword type="constant" name="GST_MTS_DESC_ATSC_REDISTRIBUTION_CONTROL" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ATSC-REDISTRIBUTION-CONTROL:CAPS"/>
     <keyword type="constant" name="GST_MTS_DESC_ATSC_GENRE" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ATSC-GENRE:CAPS"/>
     <keyword type="constant" name="GST_MTS_DESC_ATSC_PRIVATE_INFORMATION" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ATSC-PRIVATE-INFORMATION:CAPS"/>
+    <keyword type="constant" name="GST_MTS_DESC_ATSC_EAC3" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ATSC-EAC3:CAPS"/>
     <keyword type="constant" name="GST_MTS_DESC_ATSC_ENHANCED_SIGNALING" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ATSC-ENHANCED-SIGNALING:CAPS"/>
     <keyword type="constant" name="GST_MTS_DESC_ATSC_DATA_SERVICE" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ATSC-DATA-SERVICE:CAPS"/>
     <keyword type="constant" name="GST_MTS_DESC_ATSC_PID_COUNT" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ATSC-PID-COUNT:CAPS"/>
diff --git a/docs/libs/html/gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html b/docs/libs/html/gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html
index d8ac88d..20abc98 100644
--- a/docs/libs/html/gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html
+++ b/docs/libs/html/gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html
@@ -138,6 +138,11 @@
 <td> </td>
 </tr>
 <tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-ATSC-EAC3:CAPS"></a>GST_MTS_DESC_ATSC_EAC3</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
 <td class="enum_member_name"><p><a name="GST-MTS-DESC-ATSC-ENHANCED-SIGNALING:CAPS"></a>GST_MTS_DESC_ATSC_ENHANCED_SIGNALING</p></td>
 <td> </td>
 <td> </td>
diff --git a/docs/libs/html/gst-plugins-bad-libs-gstplayer.html b/docs/libs/html/gst-plugins-bad-libs-gstplayer.html
index 46959b8..23ffb58 100644
--- a/docs/libs/html/gst-plugins-bad-libs-gstplayer.html
+++ b/docs/libs/html/gst-plugins-bad-libs-gstplayer.html
@@ -1635,6 +1635,7 @@
 <pre class="programlisting"><span class="returnvalue">void</span>
 gst_player_set_subtitle_uri (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>,
                              <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *uri</code></em>);</pre>
+<p>Sets the external subtitle URI.</p>
 <div class="refsect3">
 <a name="gst-player-set-subtitle-uri.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -1657,11 +1658,6 @@
 </tbody>
 </table></div>
 </div>
-<div class="refsect3">
-<a name="gst-player-set-subtitle-uri.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a></p>
-<p>Sets the external subtitle URI.</p>
-</div>
 </div>
 <hr>
 <div class="refsect2">
diff --git a/docs/libs/html/home.png b/docs/libs/html/home.png
index 4bf6d92..884ce1d 100644
--- a/docs/libs/html/home.png
+++ b/docs/libs/html/home.png
Binary files differ
diff --git a/docs/libs/html/index.html b/docs/libs/html/index.html
index 9ea1815..e389966 100644
--- a/docs/libs/html/index.html
+++ b/docs/libs/html/index.html
@@ -15,7 +15,7 @@
 <div>
 <div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">GStreamer Bad Plugins 1.0 Library Reference Manual</p></th></tr></table></div>
 <div><p class="releaseinfo">
-      for GStreamer Bad Library 1.0 (1.9.90)
+      for GStreamer Bad Library 1.0 (1.10.0)
       <a class="ulink" href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-libs/html/" target="_top">http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-libs/html/</a>.
     </p></div>
 </div>
diff --git a/docs/libs/html/left-insensitive.png b/docs/libs/html/left-insensitive.png
index 82cba0a..148fbff 100644
--- a/docs/libs/html/left-insensitive.png
+++ b/docs/libs/html/left-insensitive.png
Binary files differ
diff --git a/docs/libs/html/left.png b/docs/libs/html/left.png
index 8444ec0..efdeee7 100644
--- a/docs/libs/html/left.png
+++ b/docs/libs/html/left.png
Binary files differ
diff --git a/docs/libs/html/right-insensitive.png b/docs/libs/html/right-insensitive.png
index 7a90b99..ba481f5 100644
--- a/docs/libs/html/right-insensitive.png
+++ b/docs/libs/html/right-insensitive.png
Binary files differ
diff --git a/docs/libs/html/right.png b/docs/libs/html/right.png
index 55f3359..2e537ba 100644
--- a/docs/libs/html/right.png
+++ b/docs/libs/html/right.png
Binary files differ
diff --git a/docs/libs/html/up-insensitive.png b/docs/libs/html/up-insensitive.png
index fdb8cc7..9317461 100644
--- a/docs/libs/html/up-insensitive.png
+++ b/docs/libs/html/up-insensitive.png
Binary files differ
diff --git a/docs/libs/html/up.png b/docs/libs/html/up.png
index c1aad52..5ecf9ab 100644
--- a/docs/libs/html/up.png
+++ b/docs/libs/html/up.png
Binary files differ
diff --git a/docs/plugins/gst-plugins-bad-plugins.hierarchy b/docs/plugins/gst-plugins-bad-plugins.hierarchy
index 2a879f1..48dcb39 100644
--- a/docs/plugins/gst-plugins-bad-plugins.hierarchy
+++ b/docs/plugins/gst-plugins-bad-plugins.hierarchy
@@ -336,6 +336,8 @@
           GstId3Mux
         GstTeletextDec
         GstTimeCodeWait
+        GstTtmlParse
+        GstTtmlRender
         GstUvcH264MjpgDemux
         GstVideoDecoder
           GstLibde265Dec
@@ -463,6 +465,10 @@
         MXFMetadataEventTrack
         MXFMetadataStaticTrack
         MXFMetadataTimelineTrack
+  PangoContext
+  PangoFontMap
+    PangoFcFontMap
+      PangoCairoFcFontMap
 GInterface
   AtkImplementorIface
   GTypePlugin
@@ -477,3 +483,4 @@
   GstWaylandVideo
   GtkBuildable
   MXFDescriptiveMetadataFrameworkInterface
+  PangoCairoFontMap
diff --git a/docs/plugins/gst-plugins-bad-plugins.interfaces b/docs/plugins/gst-plugins-bad-plugins.interfaces
index 53b47ca..617aefa 100644
--- a/docs/plugins/gst-plugins-bad-plugins.interfaces
+++ b/docs/plugins/gst-plugins-bad-plugins.interfaces
@@ -106,5 +106,6 @@
 MXFDMS1ProductionClipFramework MXFDescriptiveMetadataFrameworkInterface
 MXFDMS1ProductionFramework MXFDescriptiveMetadataFrameworkInterface
 MXFDMS1SceneFramework MXFDescriptiveMetadataFrameworkInterface
+PangoCairoFcFontMap PangoCairoFontMap
 RsnDvdBin GstChildProxy GstURIHandler
 VdpSink GstImplementsInterface GstNavigation GstXOverlay
diff --git a/docs/plugins/gst-plugins-bad-plugins.prerequisites b/docs/plugins/gst-plugins-bad-plugins.prerequisites
index 2a018ad..3c77d7a 100644
--- a/docs/plugins/gst-plugins-bad-plugins.prerequisites
+++ b/docs/plugins/gst-plugins-bad-plugins.prerequisites
@@ -4,3 +4,4 @@
 GstWaylandVideo GstVideoOverlay
 GtkBuildable GObject
 MXFDescriptiveMetadataFrameworkInterface MXFDescriptiveMetadata
+PangoCairoFontMap PangoFontMap
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-dvbsrc.html b/docs/plugins/html/gst-plugins-bad-plugins-dvbsrc.html
index 200f335..cbe4127 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-dvbsrc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-dvbsrc.html
@@ -445,7 +445,7 @@
 <tr>
 <td><p><span class="term">author</span></p></td>
 <td>P2P-VCR, C-Lab, University of Paderborn, Zaheer Abbas Merali &lt;zaheerabbas at merali dot org&gt;
-Reynaldo H. Verdejo Pinochet &lt;r.verdejo@sisa.samsung.com&gt;</td>
+Reynaldo H. Verdejo Pinochet &lt;reynaldo@osg.samsung.com&gt;</td>
 </tr>
 <tr>
 <td><p><span class="term">class</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-aiff.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-aiff.html
index 6e327dd..8ff2401 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-aiff.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-aiff.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-assrender.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-assrender.html
index ee5d10a..475f3e3 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-assrender.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-assrender.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-audiomixer.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-audiomixer.html
index d256d43..b4d340d 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-audiomixer.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-audiomixer.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-audiovisualizers.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-audiovisualizers.html
index d3f4cfb..bdbf62c 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-audiovisualizers.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-audiovisualizers.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-autoconvert.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-autoconvert.html
index 9722137..8428ce0 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-autoconvert.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-autoconvert.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-bayer.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-bayer.html
index 2544cc9..58f8a76 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-bayer.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-bayer.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-bs2b.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-bs2b.html
index a76b16a..77b3234 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-bs2b.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-bs2b.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-bz2.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-bz2.html
index a67543f..aa7abe5 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-bz2.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-bz2.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-camerabin.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-camerabin.html
index 51b318b..8cd2dc7 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-camerabin.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-camerabin.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-coloreffects.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-coloreffects.html
index 2ba036c..6c4ad4c 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-coloreffects.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-coloreffects.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-curl.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-curl.html
index 148e9a6..f977098 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-curl.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-curl.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-dataurisrc.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-dataurisrc.html
index ed4791b..70c84cd 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-dataurisrc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-dataurisrc.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-debugutilsbad.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-debugutilsbad.html
index 6275c4f..94872a2 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-debugutilsbad.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-debugutilsbad.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-dtsdec.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-dtsdec.html
index 109c6cc..122b115 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-dtsdec.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-dtsdec.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-dvb.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-dvb.html
index 2c53c08..c12bb0c 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-dvb.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-dvb.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-dvdspu.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-dvdspu.html
index a2426f3..b793944 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-dvdspu.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-dvdspu.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-faac.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-faac.html
index c035d4b..16d48ab 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-faac.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-faac.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-faad.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-faad.html
index 1fc0441..b67c01f 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-faad.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-faad.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-festival.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-festival.html
index 1d1fb62..0bec728 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-festival.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-festival.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-gaudieffects.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-gaudieffects.html
index 6d0882f..4b5b5c9 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-gaudieffects.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-gaudieffects.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-geometrictransform.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-geometrictransform.html
index b98cdc8..6670f3f 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-geometrictransform.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-geometrictransform.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-gsm.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-gsm.html
index f311365..6c2ca9e 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-gsm.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-gsm.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-jpegformat.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-jpegformat.html
index ae48467..5430eb8 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-jpegformat.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-jpegformat.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mimic.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mimic.html
index 7269da0..99501fc 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mimic.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mimic.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mms.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mms.html
index 56ab726..a4f6075 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mms.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mms.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-modplug.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-modplug.html
index 7ed88c4..4067195 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-modplug.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-modplug.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpeg2enc.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpeg2enc.html
index 49929e9..c619535 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpeg2enc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpeg2enc.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpegpsmux.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpegpsmux.html
index 91fb6c5..87da4c5 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpegpsmux.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpegpsmux.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpegtsmux.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpegtsmux.html
index 03e1d51..712d369 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpegtsmux.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpegtsmux.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mplex.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mplex.html
index fbf186f..6ff49ff 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mplex.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mplex.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-ofa.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-ofa.html
index 6fc9cbc..75c0fb0 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-ofa.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-ofa.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-openal.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-openal.html
index 0873040..b39d39b 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-openal.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-openal.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-opencv.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-opencv.html
index 0c4871e..9974fce 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-opencv.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-opencv.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-opengl.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-opengl.html
index dcb49bd..c435781 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-opengl.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-opengl.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-pcapparse.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-pcapparse.html
index c3bb0d8..cfdbb84 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-pcapparse.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-pcapparse.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-rawparse.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-rawparse.html
index 8047c5d..15f244e 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-rawparse.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-rawparse.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-rfbsrc.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-rfbsrc.html
index 2944369..585fee8 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-rfbsrc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-rfbsrc.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-rtmp.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-rtmp.html
index cefdd06..3892e51 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-rtmp.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-rtmp.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-sdp.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-sdp.html
index cd13383..646bd3a 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-sdp.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-sdp.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-shm.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-shm.html
index a164b64..4f83946 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-shm.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-shm.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-soundtouch.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-soundtouch.html
index 77d8ff7..7328634 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-soundtouch.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-soundtouch.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-speed.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-speed.html
index 186f130..7d53c48 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-speed.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-speed.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-voaacenc.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-voaacenc.html
index a5325a0..d6ccc75 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-voaacenc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-voaacenc.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-voamrwbenc.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-voamrwbenc.html
index 6a7cae4..47b3db3 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-voamrwbenc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-voamrwbenc.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-webrtcdsp.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-webrtcdsp.html
index fcdcb55..8b2f08a 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-webrtcdsp.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-webrtcdsp.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-zbar.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-zbar.html
index aa8399c..0aefe5e 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-zbar.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-zbar.html
@@ -41,7 +41,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.90</td>
+<td>1.10.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/home.png b/docs/plugins/html/home.png
index 4bf6d92..884ce1d 100644
--- a/docs/plugins/html/home.png
+++ b/docs/plugins/html/home.png
Binary files differ
diff --git a/docs/plugins/html/index.html b/docs/plugins/html/index.html
index 377c722..62e2a06 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 Bad Plugins 1.0 Plugins Reference Manual</p></th></tr></table></div>
 <div><p class="releaseinfo">
-      for GStreamer Bad Plugins 1.0 (1.9.90)
+      for GStreamer Bad Plugins 1.0 (1.10.0)
       The latest version of this documentation can be found on-line at
       <a class="ulink" href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad/html/" target="_top">http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad/html/</a>.
     </p></div>
diff --git a/docs/plugins/html/left-insensitive.png b/docs/plugins/html/left-insensitive.png
index 82cba0a..148fbff 100644
--- a/docs/plugins/html/left-insensitive.png
+++ b/docs/plugins/html/left-insensitive.png
Binary files differ
diff --git a/docs/plugins/html/left.png b/docs/plugins/html/left.png
index 8444ec0..efdeee7 100644
--- a/docs/plugins/html/left.png
+++ b/docs/plugins/html/left.png
Binary files differ
diff --git a/docs/plugins/html/right-insensitive.png b/docs/plugins/html/right-insensitive.png
index 7a90b99..ba481f5 100644
--- a/docs/plugins/html/right-insensitive.png
+++ b/docs/plugins/html/right-insensitive.png
Binary files differ
diff --git a/docs/plugins/html/right.png b/docs/plugins/html/right.png
index 55f3359..2e537ba 100644
--- a/docs/plugins/html/right.png
+++ b/docs/plugins/html/right.png
Binary files differ
diff --git a/docs/plugins/html/up-insensitive.png b/docs/plugins/html/up-insensitive.png
index fdb8cc7..9317461 100644
--- a/docs/plugins/html/up-insensitive.png
+++ b/docs/plugins/html/up-insensitive.png
Binary files differ
diff --git a/docs/plugins/html/up.png b/docs/plugins/html/up.png
index c1aad52..5ecf9ab 100644
--- a/docs/plugins/html/up.png
+++ b/docs/plugins/html/up.png
Binary files differ
diff --git a/docs/plugins/inspect/plugin-accurip.xml b/docs/plugins/inspect/plugin-accurip.xml
index 9729820..5b11dc5 100644
--- a/docs/plugins/inspect/plugin-accurip.xml
+++ b/docs/plugins/inspect/plugin-accurip.xml
@@ -3,7 +3,7 @@
   <description>Computes an AccurateRip CRC</description>
   <filename>../../gst/accurip/.libs/libgstaccurip.so</filename>
   <basename>libgstaccurip.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-adpcmdec.xml b/docs/plugins/inspect/plugin-adpcmdec.xml
index 8181e9d..1d9b04c 100644
--- a/docs/plugins/inspect/plugin-adpcmdec.xml
+++ b/docs/plugins/inspect/plugin-adpcmdec.xml
@@ -3,7 +3,7 @@
   <description>ADPCM decoder</description>
   <filename>../../gst/adpcmdec/.libs/libgstadpcmdec.so</filename>
   <basename>libgstadpcmdec.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-adpcmenc.xml b/docs/plugins/inspect/plugin-adpcmenc.xml
index c72a003..9576c76 100644
--- a/docs/plugins/inspect/plugin-adpcmenc.xml
+++ b/docs/plugins/inspect/plugin-adpcmenc.xml
@@ -3,7 +3,7 @@
   <description>ADPCM encoder</description>
   <filename>../../gst/adpcmenc/.libs/libgstadpcmenc.so</filename>
   <basename>libgstadpcmenc.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-aiff.xml b/docs/plugins/inspect/plugin-aiff.xml
index 7690007..f0d5040 100644
--- a/docs/plugins/inspect/plugin-aiff.xml
+++ b/docs/plugins/inspect/plugin-aiff.xml
@@ -3,7 +3,7 @@
   <description>Create and parse Audio Interchange File Format (AIFF) files</description>
   <filename>../../gst/aiff/.libs/libgstaiff.so</filename>
   <basename>libgstaiff.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-asfmux.xml b/docs/plugins/inspect/plugin-asfmux.xml
index 962c5c2..bac2fec 100644
--- a/docs/plugins/inspect/plugin-asfmux.xml
+++ b/docs/plugins/inspect/plugin-asfmux.xml
@@ -3,7 +3,7 @@
   <description>ASF Muxer Plugin</description>
   <filename>../../gst/asfmux/.libs/libgstasfmux.so</filename>
   <basename>libgstasfmux.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-assrender.xml b/docs/plugins/inspect/plugin-assrender.xml
index 7197bc2..73c64fa 100644
--- a/docs/plugins/inspect/plugin-assrender.xml
+++ b/docs/plugins/inspect/plugin-assrender.xml
@@ -3,7 +3,7 @@
   <description>ASS/SSA subtitle renderer</description>
   <filename>../../ext/assrender/.libs/libgstassrender.so</filename>
   <basename>libgstassrender.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-audiofxbad.xml b/docs/plugins/inspect/plugin-audiofxbad.xml
index 24420b7..b5e2f8f 100644
--- a/docs/plugins/inspect/plugin-audiofxbad.xml
+++ b/docs/plugins/inspect/plugin-audiofxbad.xml
@@ -3,7 +3,7 @@
   <description>Audio filters from gst-plugins-bad</description>
   <filename>../../gst/audiofxbad/.libs/libgstaudiofxbad.so</filename>
   <basename>libgstaudiofxbad.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins</package>
diff --git a/docs/plugins/inspect/plugin-audiomixer.xml b/docs/plugins/inspect/plugin-audiomixer.xml
index c4389ac..368778b 100644
--- a/docs/plugins/inspect/plugin-audiomixer.xml
+++ b/docs/plugins/inspect/plugin-audiomixer.xml
@@ -3,7 +3,7 @@
   <description>Mixes multiple audio streams</description>
   <filename>../../gst/audiomixer/.libs/libgstaudiomixer.so</filename>
   <basename>libgstaudiomixer.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-audiovisualizers.xml b/docs/plugins/inspect/plugin-audiovisualizers.xml
index 5eb954a..c56f4fd 100644
--- a/docs/plugins/inspect/plugin-audiovisualizers.xml
+++ b/docs/plugins/inspect/plugin-audiovisualizers.xml
@@ -3,7 +3,7 @@
   <description>Creates video visualizations of audio input</description>
   <filename>../../gst/audiovisualizers/.libs/libgstaudiovisualizers.so</filename>
   <basename>libgstaudiovisualizers.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-autoconvert.xml b/docs/plugins/inspect/plugin-autoconvert.xml
index 3dd5e3c..b7d40f9 100644
--- a/docs/plugins/inspect/plugin-autoconvert.xml
+++ b/docs/plugins/inspect/plugin-autoconvert.xml
@@ -3,7 +3,7 @@
   <description>Selects convertor element based on caps</description>
   <filename>../../gst/autoconvert/.libs/libgstautoconvert.so</filename>
   <basename>libgstautoconvert.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-bayer.xml b/docs/plugins/inspect/plugin-bayer.xml
index be37ae7..2c10c0f 100644
--- a/docs/plugins/inspect/plugin-bayer.xml
+++ b/docs/plugins/inspect/plugin-bayer.xml
@@ -3,7 +3,7 @@
   <description>Elements to convert Bayer images</description>
   <filename>../../gst/bayer/.libs/libgstbayer.so</filename>
   <basename>libgstbayer.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-bluez.xml b/docs/plugins/inspect/plugin-bluez.xml
index 2d82903..b38a754 100644
--- a/docs/plugins/inspect/plugin-bluez.xml
+++ b/docs/plugins/inspect/plugin-bluez.xml
@@ -3,7 +3,7 @@
   <description>Bluez-based bluetooth support</description>
   <filename>../../sys/bluez/.libs/libgstbluez.so</filename>
   <basename>libgstbluez.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-bs2b.xml b/docs/plugins/inspect/plugin-bs2b.xml
index 7730094..2c6ff15 100644
--- a/docs/plugins/inspect/plugin-bs2b.xml
+++ b/docs/plugins/inspect/plugin-bs2b.xml
@@ -3,7 +3,7 @@
   <description>Improve headphone listening of stereo audio recordsusing the bs2b library.</description>
   <filename>../../ext/bs2b/.libs/libgstbs2b.so</filename>
   <basename>libgstbs2b.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-bz2.xml b/docs/plugins/inspect/plugin-bz2.xml
index 2222b52..b1d781b 100644
--- a/docs/plugins/inspect/plugin-bz2.xml
+++ b/docs/plugins/inspect/plugin-bz2.xml
@@ -3,7 +3,7 @@
   <description>Compress or decompress streams</description>
   <filename>../../ext/bz2/.libs/libgstbz2.so</filename>
   <basename>libgstbz2.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-camerabin.xml b/docs/plugins/inspect/plugin-camerabin.xml
index 44328b6..fbb006b 100644
--- a/docs/plugins/inspect/plugin-camerabin.xml
+++ b/docs/plugins/inspect/plugin-camerabin.xml
@@ -3,7 +3,7 @@
   <description>Take image snapshots and record movies from camera</description>
   <filename>../../gst/camerabin2/.libs/libgstcamerabin2.so</filename>
   <basename>libgstcamerabin2.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-chromaprint.xml b/docs/plugins/inspect/plugin-chromaprint.xml
index c1c6339..50848db 100644
--- a/docs/plugins/inspect/plugin-chromaprint.xml
+++ b/docs/plugins/inspect/plugin-chromaprint.xml
@@ -3,7 +3,7 @@
   <description>Calculate Chromaprint fingerprint from audio files</description>
   <filename>../../ext/chromaprint/.libs/libgstchromaprint.so</filename>
   <basename>libgstchromaprint.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-coloreffects.xml b/docs/plugins/inspect/plugin-coloreffects.xml
index 88f560b..c403768 100644
--- a/docs/plugins/inspect/plugin-coloreffects.xml
+++ b/docs/plugins/inspect/plugin-coloreffects.xml
@@ -3,7 +3,7 @@
   <description>Color Look-up Table filters</description>
   <filename>../../gst/coloreffects/.libs/libgstcoloreffects.so</filename>
   <basename>libgstcoloreffects.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-compositor.xml b/docs/plugins/inspect/plugin-compositor.xml
index e062cae..98a5e58 100644
--- a/docs/plugins/inspect/plugin-compositor.xml
+++ b/docs/plugins/inspect/plugin-compositor.xml
@@ -3,7 +3,7 @@
   <description>Compositor</description>
   <filename>../../gst/compositor/.libs/libgstcompositor.so</filename>
   <basename>libgstcompositor.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-curl.xml b/docs/plugins/inspect/plugin-curl.xml
index 3c4d289..8d574f8 100644
--- a/docs/plugins/inspect/plugin-curl.xml
+++ b/docs/plugins/inspect/plugin-curl.xml
@@ -3,7 +3,7 @@
   <description>libcurl-based elements</description>
   <filename>../../ext/curl/.libs/libgstcurl.so</filename>
   <basename>libgstcurl.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-dashdemux.xml b/docs/plugins/inspect/plugin-dashdemux.xml
index 2600781..1c5b496 100644
--- a/docs/plugins/inspect/plugin-dashdemux.xml
+++ b/docs/plugins/inspect/plugin-dashdemux.xml
@@ -3,7 +3,7 @@
   <description>DASH demuxer plugin</description>
   <filename>../../ext/dash/.libs/libgstdashdemux.so</filename>
   <basename>libgstdashdemux.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins</package>
diff --git a/docs/plugins/inspect/plugin-dataurisrc.xml b/docs/plugins/inspect/plugin-dataurisrc.xml
index 5b2b024..c0effb4 100644
--- a/docs/plugins/inspect/plugin-dataurisrc.xml
+++ b/docs/plugins/inspect/plugin-dataurisrc.xml
@@ -3,7 +3,7 @@
   <description>data: URI source</description>
   <filename>../../gst/dataurisrc/.libs/libgstdataurisrc.so</filename>
   <basename>libgstdataurisrc.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-dc1394.xml b/docs/plugins/inspect/plugin-dc1394.xml
index ce07d4c..4e096ab 100644
--- a/docs/plugins/inspect/plugin-dc1394.xml
+++ b/docs/plugins/inspect/plugin-dc1394.xml
@@ -3,7 +3,7 @@
   <description>1394 IIDC video source</description>
   <filename>../../ext/dc1394/.libs/libgstdc1394.so</filename>
   <basename>libgstdc1394.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-debugutilsbad.xml b/docs/plugins/inspect/plugin-debugutilsbad.xml
index 6b1cbbf..7b9ea93 100644
--- a/docs/plugins/inspect/plugin-debugutilsbad.xml
+++ b/docs/plugins/inspect/plugin-debugutilsbad.xml
@@ -3,7 +3,7 @@
   <description>Collection of elements that may or may not be useful for debugging</description>
   <filename>../../gst/debugutils/.libs/libgstdebugutilsbad.so</filename>
   <basename>libgstdebugutilsbad.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-decklink.xml b/docs/plugins/inspect/plugin-decklink.xml
index 595f04b..2d3ab73 100644
--- a/docs/plugins/inspect/plugin-decklink.xml
+++ b/docs/plugins/inspect/plugin-decklink.xml
@@ -3,7 +3,7 @@
   <description>Blackmagic Decklink plugin</description>
   <filename>../../sys/decklink/.libs/libgstdecklink.so</filename>
   <basename>libgstdecklink.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins</package>
diff --git a/docs/plugins/inspect/plugin-dfbvideosink.xml b/docs/plugins/inspect/plugin-dfbvideosink.xml
index 6b8aad1..8cff1a0 100644
--- a/docs/plugins/inspect/plugin-dfbvideosink.xml
+++ b/docs/plugins/inspect/plugin-dfbvideosink.xml
@@ -3,7 +3,7 @@
   <description>DirectFB video output plugin</description>
   <filename>../../ext/directfb/.libs/libgstdfbvideosink.so</filename>
   <basename>libgstdfbvideosink.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-dtls.xml b/docs/plugins/inspect/plugin-dtls.xml
index 11e57eb..75ce204 100644
--- a/docs/plugins/inspect/plugin-dtls.xml
+++ b/docs/plugins/inspect/plugin-dtls.xml
@@ -3,7 +3,7 @@
   <description>DTLS decoder and encoder plugins</description>
   <filename>../../ext/dtls/.libs/libgstdtls.so</filename>
   <basename>libgstdtls.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>BSD</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-dtsdec.xml b/docs/plugins/inspect/plugin-dtsdec.xml
index f22f4d4..5c5b600 100644
--- a/docs/plugins/inspect/plugin-dtsdec.xml
+++ b/docs/plugins/inspect/plugin-dtsdec.xml
@@ -3,7 +3,7 @@
   <description>Decodes DTS audio streams</description>
   <filename>../../ext/dts/.libs/libgstdtsdec.so</filename>
   <basename>libgstdtsdec.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>GPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-dvb.xml b/docs/plugins/inspect/plugin-dvb.xml
index 496fd3f..aa146f3 100644
--- a/docs/plugins/inspect/plugin-dvb.xml
+++ b/docs/plugins/inspect/plugin-dvb.xml
@@ -3,7 +3,7 @@
   <description>DVB elements</description>
   <filename>../../sys/dvb/.libs/libgstdvb.so</filename>
   <basename>libgstdvb.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
@@ -15,7 +15,7 @@
       <class>Source/Bin/Video</class>
       <description>Access descramble and split DVB streams</description>
       <author>Alessandro Decina &lt;alessandro@nnva.org&gt;
-Reynaldo H. Verdejo Pinochet &lt;r.verdejo@sisa.samsung.com&gt;</author>
+Reynaldo H. Verdejo Pinochet &lt;reynaldo@osg.samsung.com&gt;</author>
       <pads>
         <caps>
           <name>src</name>
@@ -37,7 +37,7 @@
       <class>Source/Video</class>
       <description>Digital Video Broadcast Source</description>
       <author>P2P-VCR, C-Lab, University of Paderborn, Zaheer Abbas Merali &lt;zaheerabbas at merali dot org&gt;
-Reynaldo H. Verdejo Pinochet &lt;r.verdejo@sisa.samsung.com&gt;</author>
+Reynaldo H. Verdejo Pinochet &lt;reynaldo@osg.samsung.com&gt;</author>
       <pads>
         <caps>
           <name>src</name>
diff --git a/docs/plugins/inspect/plugin-dvbsuboverlay.xml b/docs/plugins/inspect/plugin-dvbsuboverlay.xml
index 67fde65..17d13b4 100644
--- a/docs/plugins/inspect/plugin-dvbsuboverlay.xml
+++ b/docs/plugins/inspect/plugin-dvbsuboverlay.xml
@@ -3,7 +3,7 @@
   <description>DVB subtitle renderer</description>
   <filename>../../gst/dvbsuboverlay/.libs/libgstdvbsuboverlay.so</filename>
   <basename>libgstdvbsuboverlay.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-dvdspu.xml b/docs/plugins/inspect/plugin-dvdspu.xml
index 6a348d3..cf30722 100644
--- a/docs/plugins/inspect/plugin-dvdspu.xml
+++ b/docs/plugins/inspect/plugin-dvdspu.xml
@@ -3,7 +3,7 @@
   <description>DVD Sub-picture Overlay element</description>
   <filename>../../gst/dvdspu/.libs/libgstdvdspu.so</filename>
   <basename>libgstdvdspu.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-faac.xml b/docs/plugins/inspect/plugin-faac.xml
index dc3829d..0fb0ba5 100644
--- a/docs/plugins/inspect/plugin-faac.xml
+++ b/docs/plugins/inspect/plugin-faac.xml
@@ -3,7 +3,7 @@
   <description>Free AAC Encoder (FAAC)</description>
   <filename>../../ext/faac/.libs/libgstfaac.so</filename>
   <basename>libgstfaac.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-faad.xml b/docs/plugins/inspect/plugin-faad.xml
index e0ee1e2..a302a1a 100644
--- a/docs/plugins/inspect/plugin-faad.xml
+++ b/docs/plugins/inspect/plugin-faad.xml
@@ -3,7 +3,7 @@
   <description>Free AAC Decoder (FAAD)</description>
   <filename>../../ext/faad/.libs/libgstfaad.so</filename>
   <basename>libgstfaad.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>GPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-fbdevsink.xml b/docs/plugins/inspect/plugin-fbdevsink.xml
index da67c24..a00e75f 100644
--- a/docs/plugins/inspect/plugin-fbdevsink.xml
+++ b/docs/plugins/inspect/plugin-fbdevsink.xml
@@ -3,7 +3,7 @@
   <description>Linux framebuffer video sink</description>
   <filename>../../sys/fbdev/.libs/libgstfbdevsink.so</filename>
   <basename>libgstfbdevsink.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-fdkaac.xml b/docs/plugins/inspect/plugin-fdkaac.xml
index 4365715..3fc0236 100644
--- a/docs/plugins/inspect/plugin-fdkaac.xml
+++ b/docs/plugins/inspect/plugin-fdkaac.xml
@@ -3,7 +3,7 @@
   <description>Fraunhofer FDK AAC Codec plugin</description>
   <filename>../../ext/fdkaac/.libs/libgstfdkaac.so</filename>
   <basename>libgstfdkaac.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-festival.xml b/docs/plugins/inspect/plugin-festival.xml
index 6b0151d..75e6ee4 100644
--- a/docs/plugins/inspect/plugin-festival.xml
+++ b/docs/plugins/inspect/plugin-festival.xml
@@ -3,7 +3,7 @@
   <description>Synthesizes plain text into audio</description>
   <filename>../../gst/festival/.libs/libgstfestival.so</filename>
   <basename>libgstfestival.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-fieldanalysis.xml b/docs/plugins/inspect/plugin-fieldanalysis.xml
index e7f5c68..fc73f23 100644
--- a/docs/plugins/inspect/plugin-fieldanalysis.xml
+++ b/docs/plugins/inspect/plugin-fieldanalysis.xml
@@ -3,7 +3,7 @@
   <description>Video field analysis</description>
   <filename>../../gst/fieldanalysis/.libs/libgstfieldanalysis.so</filename>
   <basename>libgstfieldanalysis.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer</package>
diff --git a/docs/plugins/inspect/plugin-flite.xml b/docs/plugins/inspect/plugin-flite.xml
index 92ea44b..8babca5 100644
--- a/docs/plugins/inspect/plugin-flite.xml
+++ b/docs/plugins/inspect/plugin-flite.xml
@@ -3,7 +3,7 @@
   <description>Flite speech synthesizer plugin</description>
   <filename>../../ext/flite/.libs/libgstflite.so</filename>
   <basename>libgstflite.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-fluidsynthmidi.xml b/docs/plugins/inspect/plugin-fluidsynthmidi.xml
index 30d5654..5b63d7a 100644
--- a/docs/plugins/inspect/plugin-fluidsynthmidi.xml
+++ b/docs/plugins/inspect/plugin-fluidsynthmidi.xml
@@ -3,7 +3,7 @@
   <description>Fluidsynth MIDI Plugin</description>
   <filename>../../ext/fluidsynth/.libs/libgstfluidsynthmidi.so</filename>
   <basename>libgstfluidsynthmidi.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-freeverb.xml b/docs/plugins/inspect/plugin-freeverb.xml
index 7acd8b2..4d29137 100644
--- a/docs/plugins/inspect/plugin-freeverb.xml
+++ b/docs/plugins/inspect/plugin-freeverb.xml
@@ -3,7 +3,7 @@
   <description>Reverberation/room effect</description>
   <filename>../../gst/freeverb/.libs/libgstfreeverb.so</filename>
   <basename>libgstfreeverb.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-frei0r.xml b/docs/plugins/inspect/plugin-frei0r.xml
index 622fe38..8eaa2f0 100644
--- a/docs/plugins/inspect/plugin-frei0r.xml
+++ b/docs/plugins/inspect/plugin-frei0r.xml
@@ -3,7 +3,7 @@
   <description>frei0r plugin library</description>
   <filename>../../gst/frei0r/.libs/libgstfrei0r.so</filename>
   <basename>libgstfrei0r.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-gaudieffects.xml b/docs/plugins/inspect/plugin-gaudieffects.xml
index 6156ff5..6aff77a 100644
--- a/docs/plugins/inspect/plugin-gaudieffects.xml
+++ b/docs/plugins/inspect/plugin-gaudieffects.xml
@@ -3,7 +3,7 @@
   <description>Gaudi video effects.</description>
   <filename>../../gst/gaudieffects/.libs/libgstgaudieffects.so</filename>
   <basename>libgstgaudieffects.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer</package>
diff --git a/docs/plugins/inspect/plugin-gdp.xml b/docs/plugins/inspect/plugin-gdp.xml
index 041ef87..4c96c3a 100644
--- a/docs/plugins/inspect/plugin-gdp.xml
+++ b/docs/plugins/inspect/plugin-gdp.xml
@@ -3,7 +3,7 @@
   <description>Payload/depayload GDP packets</description>
   <filename>../../gst/gdp/.libs/libgstgdp.so</filename>
   <basename>libgstgdp.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-geometrictransform.xml b/docs/plugins/inspect/plugin-geometrictransform.xml
index 2ab3a93..4bbf732 100644
--- a/docs/plugins/inspect/plugin-geometrictransform.xml
+++ b/docs/plugins/inspect/plugin-geometrictransform.xml
@@ -3,7 +3,7 @@
   <description>Various geometric image transform elements</description>
   <filename>../../gst/geometrictransform/.libs/libgstgeometrictransform.so</filename>
   <basename>libgstgeometrictransform.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-gmedec.xml b/docs/plugins/inspect/plugin-gmedec.xml
index 1f7b6bd..b90a0ce 100644
--- a/docs/plugins/inspect/plugin-gmedec.xml
+++ b/docs/plugins/inspect/plugin-gmedec.xml
@@ -3,7 +3,7 @@
   <description>GME Audio Decoder</description>
   <filename>../../ext/gme/.libs/libgstgme.so</filename>
   <basename>libgstgme.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-gsm.xml b/docs/plugins/inspect/plugin-gsm.xml
index 11d0a92..4dc669d 100644
--- a/docs/plugins/inspect/plugin-gsm.xml
+++ b/docs/plugins/inspect/plugin-gsm.xml
@@ -3,7 +3,7 @@
   <description>GSM encoder/decoder</description>
   <filename>../../ext/gsm/.libs/libgstgsm.so</filename>
   <basename>libgstgsm.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-gstgtk.xml b/docs/plugins/inspect/plugin-gstgtk.xml
index 90999f5..995b6a3 100644
--- a/docs/plugins/inspect/plugin-gstgtk.xml
+++ b/docs/plugins/inspect/plugin-gstgtk.xml
@@ -3,7 +3,7 @@
   <description>Gtk+ sink</description>
   <filename>../../ext/gtk/.libs/libgstgtksink.so</filename>
   <basename>libgstgtksink.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-gstsiren.xml b/docs/plugins/inspect/plugin-gstsiren.xml
index d18d8e5..a84232d 100644
--- a/docs/plugins/inspect/plugin-gstsiren.xml
+++ b/docs/plugins/inspect/plugin-gstsiren.xml
@@ -3,7 +3,7 @@
   <description>Siren encoder/decoder/payloader/depayloader plugins</description>
   <filename>../../gst/siren/.libs/libgstsiren.so</filename>
   <basename>libgstsiren.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-hls.xml b/docs/plugins/inspect/plugin-hls.xml
index ffdfbaa..483408a 100644
--- a/docs/plugins/inspect/plugin-hls.xml
+++ b/docs/plugins/inspect/plugin-hls.xml
@@ -3,7 +3,7 @@
   <description>HTTP Live Streaming (HLS)</description>
   <filename>../../ext/hls/.libs/libgsthls.so</filename>
   <basename>libgsthls.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins</package>
diff --git a/docs/plugins/inspect/plugin-id3tag.xml b/docs/plugins/inspect/plugin-id3tag.xml
index 5b28a22..fc96b17 100644
--- a/docs/plugins/inspect/plugin-id3tag.xml
+++ b/docs/plugins/inspect/plugin-id3tag.xml
@@ -3,7 +3,7 @@
   <description>ID3 v1 and v2 muxing plugin</description>
   <filename>../../gst/id3tag/.libs/libgstid3tag.so</filename>
   <basename>libgstid3tag.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-inter.xml b/docs/plugins/inspect/plugin-inter.xml
index c672970..67cfc9c 100644
--- a/docs/plugins/inspect/plugin-inter.xml
+++ b/docs/plugins/inspect/plugin-inter.xml
@@ -3,7 +3,7 @@
   <description>plugin for inter-pipeline communication</description>
   <filename>../../gst/inter/.libs/libgstinter.so</filename>
   <basename>libgstinter.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins</package>
diff --git a/docs/plugins/inspect/plugin-interlace.xml b/docs/plugins/inspect/plugin-interlace.xml
index cfb1597..e248900 100644
--- a/docs/plugins/inspect/plugin-interlace.xml
+++ b/docs/plugins/inspect/plugin-interlace.xml
@@ -3,7 +3,7 @@
   <description>Create an interlaced video stream</description>
   <filename>../../gst/interlace/.libs/libgstinterlace.so</filename>
   <basename>libgstinterlace.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-ivfparse.xml b/docs/plugins/inspect/plugin-ivfparse.xml
index 283c6d5..1aca419 100644
--- a/docs/plugins/inspect/plugin-ivfparse.xml
+++ b/docs/plugins/inspect/plugin-ivfparse.xml
@@ -3,7 +3,7 @@
   <description>IVF parser</description>
   <filename>../../gst/ivfparse/.libs/libgstivfparse.so</filename>
   <basename>libgstivfparse.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-ivtc.xml b/docs/plugins/inspect/plugin-ivtc.xml
index d5f5ee3..bee5c5b 100644
--- a/docs/plugins/inspect/plugin-ivtc.xml
+++ b/docs/plugins/inspect/plugin-ivtc.xml
@@ -3,7 +3,7 @@
   <description>Inverse Telecine</description>
   <filename>../../gst/ivtc/.libs/libgstivtc.so</filename>
   <basename>libgstivtc.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins</package>
diff --git a/docs/plugins/inspect/plugin-jp2kdecimator.xml b/docs/plugins/inspect/plugin-jp2kdecimator.xml
index 14d2946..9be52e4 100644
--- a/docs/plugins/inspect/plugin-jp2kdecimator.xml
+++ b/docs/plugins/inspect/plugin-jp2kdecimator.xml
@@ -3,7 +3,7 @@
   <description>JPEG2000 decimator</description>
   <filename>../../gst/jp2kdecimator/.libs/libgstjp2kdecimator.so</filename>
   <basename>libgstjp2kdecimator.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-jpegformat.xml b/docs/plugins/inspect/plugin-jpegformat.xml
index 3ee62d4..f915f49 100644
--- a/docs/plugins/inspect/plugin-jpegformat.xml
+++ b/docs/plugins/inspect/plugin-jpegformat.xml
@@ -3,7 +3,7 @@
   <description>JPEG interchange format plugin</description>
   <filename>../../gst/jpegformat/.libs/libgstjpegformat.so</filename>
   <basename>libgstjpegformat.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-kate.xml b/docs/plugins/inspect/plugin-kate.xml
index 0d2f12f..db6297b 100644
--- a/docs/plugins/inspect/plugin-kate.xml
+++ b/docs/plugins/inspect/plugin-kate.xml
@@ -3,7 +3,7 @@
   <description>Kate plugin</description>
   <filename>../../ext/kate/.libs/libgstkate.so</filename>
   <basename>libgstkate.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-ladspa.xml b/docs/plugins/inspect/plugin-ladspa.xml
index 44f1cb5..6845b6b 100644
--- a/docs/plugins/inspect/plugin-ladspa.xml
+++ b/docs/plugins/inspect/plugin-ladspa.xml
@@ -3,7 +3,7 @@
   <description>LADSPA plugin</description>
   <filename>../../ext/ladspa/.libs/libgstladspa.so</filename>
   <basename>libgstladspa.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-libde265.xml b/docs/plugins/inspect/plugin-libde265.xml
index d0ebbd7..930a03e 100644
--- a/docs/plugins/inspect/plugin-libde265.xml
+++ b/docs/plugins/inspect/plugin-libde265.xml
@@ -3,7 +3,7 @@
   <description>HEVC/H.265 decoder using libde265</description>
   <filename>../../ext/libde265/.libs/libgstlibde265.so</filename>
   <basename>libgstlibde265.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-midi.xml b/docs/plugins/inspect/plugin-midi.xml
index eb3c2fb..3bb0798 100644
--- a/docs/plugins/inspect/plugin-midi.xml
+++ b/docs/plugins/inspect/plugin-midi.xml
@@ -3,7 +3,7 @@
   <description>Parse MIDI files</description>
   <filename>../../gst/midi/.libs/libgstmidi.so</filename>
   <basename>libgstmidi.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-mimic.xml b/docs/plugins/inspect/plugin-mimic.xml
index 3f92873..79e8795 100644
--- a/docs/plugins/inspect/plugin-mimic.xml
+++ b/docs/plugins/inspect/plugin-mimic.xml
@@ -3,7 +3,7 @@
   <description>Mimic codec</description>
   <filename>../../ext/mimic/.libs/libgstmimic.so</filename>
   <basename>libgstmimic.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-mms.xml b/docs/plugins/inspect/plugin-mms.xml
index 82e5caf..b81a8eb 100644
--- a/docs/plugins/inspect/plugin-mms.xml
+++ b/docs/plugins/inspect/plugin-mms.xml
@@ -3,7 +3,7 @@
   <description>Microsoft Multi Media Server streaming protocol support</description>
   <filename>../../ext/libmms/.libs/libgstmms.so</filename>
   <basename>libgstmms.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-modplug.xml b/docs/plugins/inspect/plugin-modplug.xml
index 2807757..20f25d6 100644
--- a/docs/plugins/inspect/plugin-modplug.xml
+++ b/docs/plugins/inspect/plugin-modplug.xml
@@ -3,7 +3,7 @@
   <description>.MOD audio decoding</description>
   <filename>../../ext/modplug/.libs/libgstmodplug.so</filename>
   <basename>libgstmodplug.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-mpeg2enc.xml b/docs/plugins/inspect/plugin-mpeg2enc.xml
index ba3edcc..f5c35f5 100644
--- a/docs/plugins/inspect/plugin-mpeg2enc.xml
+++ b/docs/plugins/inspect/plugin-mpeg2enc.xml
@@ -3,7 +3,7 @@
   <description>High-quality MPEG-1/2 video encoder</description>
   <filename>../../ext/mpeg2enc/.libs/libgstmpeg2enc.so</filename>
   <basename>libgstmpeg2enc.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>GPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-mpegpsdemux.xml b/docs/plugins/inspect/plugin-mpegpsdemux.xml
index 9aaefd1..d662518 100644
--- a/docs/plugins/inspect/plugin-mpegpsdemux.xml
+++ b/docs/plugins/inspect/plugin-mpegpsdemux.xml
@@ -3,7 +3,7 @@
   <description>MPEG-PS demuxer</description>
   <filename>../../gst/mpegdemux/.libs/libgstmpegpsdemux.so</filename>
   <basename>libgstmpegpsdemux.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>unknown</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-mpegpsmux.xml b/docs/plugins/inspect/plugin-mpegpsmux.xml
index 6d2f3b6..8f6068c 100644
--- a/docs/plugins/inspect/plugin-mpegpsmux.xml
+++ b/docs/plugins/inspect/plugin-mpegpsmux.xml
@@ -3,7 +3,7 @@
   <description>MPEG-PS muxer</description>
   <filename>../../gst/mpegpsmux/.libs/libgstmpegpsmux.so</filename>
   <basename>libgstmpegpsmux.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-mpegtsdemux.xml b/docs/plugins/inspect/plugin-mpegtsdemux.xml
index 21c3f61..a2ad9ee 100644
--- a/docs/plugins/inspect/plugin-mpegtsdemux.xml
+++ b/docs/plugins/inspect/plugin-mpegtsdemux.xml
@@ -3,7 +3,7 @@
   <description>MPEG TS demuxer</description>
   <filename>../../gst/mpegtsdemux/.libs/libgstmpegtsdemux.so</filename>
   <basename>libgstmpegtsdemux.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-mpegtsmux.xml b/docs/plugins/inspect/plugin-mpegtsmux.xml
index 282221d..1eb6cdf 100644
--- a/docs/plugins/inspect/plugin-mpegtsmux.xml
+++ b/docs/plugins/inspect/plugin-mpegtsmux.xml
@@ -3,7 +3,7 @@
   <description>MPEG-TS muxer</description>
   <filename>../../gst/mpegtsmux/.libs/libgstmpegtsmux.so</filename>
   <basename>libgstmpegtsmux.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-mplex.xml b/docs/plugins/inspect/plugin-mplex.xml
index 80e5f10..b220a36 100644
--- a/docs/plugins/inspect/plugin-mplex.xml
+++ b/docs/plugins/inspect/plugin-mplex.xml
@@ -3,7 +3,7 @@
   <description>High-quality MPEG/DVD/SVCD/VCD video/audio multiplexer</description>
   <filename>../../ext/mplex/.libs/libgstmplex.so</filename>
   <basename>libgstmplex.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>GPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-musepack.xml b/docs/plugins/inspect/plugin-musepack.xml
index a72faed..d46512e 100644
--- a/docs/plugins/inspect/plugin-musepack.xml
+++ b/docs/plugins/inspect/plugin-musepack.xml
@@ -3,7 +3,7 @@
   <description>Musepack decoder</description>
   <filename>../../ext/musepack/.libs/libgstmusepack.so</filename>
   <basename>libgstmusepack.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-mxf.xml b/docs/plugins/inspect/plugin-mxf.xml
index 6ad04ae..0eb6136 100644
--- a/docs/plugins/inspect/plugin-mxf.xml
+++ b/docs/plugins/inspect/plugin-mxf.xml
@@ -3,7 +3,7 @@
   <description>MXF plugin library</description>
   <filename>../../gst/mxf/.libs/libgstmxf.so</filename>
   <basename>libgstmxf.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-netsim.xml b/docs/plugins/inspect/plugin-netsim.xml
index 67f751a..5a3a0e3 100644
--- a/docs/plugins/inspect/plugin-netsim.xml
+++ b/docs/plugins/inspect/plugin-netsim.xml
@@ -3,7 +3,7 @@
   <description>Network Simulator</description>
   <filename>../../gst/netsim/.libs/libgstnetsim.so</filename>
   <basename>libgstnetsim.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-ofa.xml b/docs/plugins/inspect/plugin-ofa.xml
index 2a02549..b142347 100644
--- a/docs/plugins/inspect/plugin-ofa.xml
+++ b/docs/plugins/inspect/plugin-ofa.xml
@@ -3,7 +3,7 @@
   <description>Calculate MusicIP fingerprint from audio files</description>
   <filename>../../ext/ofa/.libs/libgstofa.so</filename>
   <basename>libgstofa.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>GPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-openal.xml b/docs/plugins/inspect/plugin-openal.xml
index 37dea49..4c74d58 100644
--- a/docs/plugins/inspect/plugin-openal.xml
+++ b/docs/plugins/inspect/plugin-openal.xml
@@ -3,7 +3,7 @@
   <description>OpenAL plugin library</description>
   <filename>../../ext/openal/.libs/libgstopenal.so</filename>
   <basename>libgstopenal.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-opencv.xml b/docs/plugins/inspect/plugin-opencv.xml
index 3d26a3a..776f46a 100644
--- a/docs/plugins/inspect/plugin-opencv.xml
+++ b/docs/plugins/inspect/plugin-opencv.xml
@@ -3,7 +3,7 @@
   <description>GStreamer OpenCV Plugins</description>
   <filename>../../ext/opencv/.libs/libgstopencv.so</filename>
   <basename>libgstopencv.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-openexr.xml b/docs/plugins/inspect/plugin-openexr.xml
index 481dbde..158b84e 100644
--- a/docs/plugins/inspect/plugin-openexr.xml
+++ b/docs/plugins/inspect/plugin-openexr.xml
@@ -3,7 +3,7 @@
   <description>OpenEXR image plugin</description>
   <filename>../../ext/openexr/.libs/libgstopenexr.so</filename>
   <basename>libgstopenexr.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-opengl.xml b/docs/plugins/inspect/plugin-opengl.xml
index bb24b3c..7c2d348 100644
--- a/docs/plugins/inspect/plugin-opengl.xml
+++ b/docs/plugins/inspect/plugin-opengl.xml
@@ -3,7 +3,7 @@
   <description>OpenGL plugin</description>
   <filename>../../ext/gl/.libs/libgstopengl.so</filename>
   <basename>libgstopengl.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-openh264.xml b/docs/plugins/inspect/plugin-openh264.xml
index a6d162f..492462b 100644
--- a/docs/plugins/inspect/plugin-openh264.xml
+++ b/docs/plugins/inspect/plugin-openh264.xml
@@ -3,7 +3,7 @@
   <description>OpenH264 encoder/decoder plugin</description>
   <filename>../../ext/openh264/.libs/libgstopenh264.so</filename>
   <basename>libgstopenh264.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>BSD</license>
   <source>gst-plugins-bad</source>
   <package>OpenWebRTC GStreamer plugins</package>
diff --git a/docs/plugins/inspect/plugin-openjpeg.xml b/docs/plugins/inspect/plugin-openjpeg.xml
index 55650b7..ed9cfca 100644
--- a/docs/plugins/inspect/plugin-openjpeg.xml
+++ b/docs/plugins/inspect/plugin-openjpeg.xml
@@ -3,7 +3,7 @@
   <description>OpenJPEG-based JPEG2000 image decoder/encoder</description>
   <filename>../../ext/openjpeg/.libs/libgstopenjpeg.so</filename>
   <basename>libgstopenjpeg.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-opusparse.xml b/docs/plugins/inspect/plugin-opusparse.xml
index 7b79224..f265659 100644
--- a/docs/plugins/inspect/plugin-opusparse.xml
+++ b/docs/plugins/inspect/plugin-opusparse.xml
@@ -3,7 +3,7 @@
   <description>OPUS parse plugin</description>
   <filename>../../ext/opus/.libs/libgstopusparse.so</filename>
   <basename>libgstopusparse.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-pcapparse.xml b/docs/plugins/inspect/plugin-pcapparse.xml
index 125a414..621701e 100644
--- a/docs/plugins/inspect/plugin-pcapparse.xml
+++ b/docs/plugins/inspect/plugin-pcapparse.xml
@@ -3,7 +3,7 @@
   <description>Element parsing raw pcap streams</description>
   <filename>../../gst/pcapparse/.libs/libgstpcapparse.so</filename>
   <basename>libgstpcapparse.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer</package>
diff --git a/docs/plugins/inspect/plugin-pnm.xml b/docs/plugins/inspect/plugin-pnm.xml
index 63dd52c..cf1e5d9 100644
--- a/docs/plugins/inspect/plugin-pnm.xml
+++ b/docs/plugins/inspect/plugin-pnm.xml
@@ -3,7 +3,7 @@
   <description>PNM plugin</description>
   <filename>../../gst/pnm/.libs/libgstpnm.so</filename>
   <basename>libgstpnm.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-qt.xml b/docs/plugins/inspect/plugin-qt.xml
index 4520a55..db83ede 100644
--- a/docs/plugins/inspect/plugin-qt.xml
+++ b/docs/plugins/inspect/plugin-qt.xml
@@ -3,7 +3,7 @@
   <description>Qt gl plugin</description>
   <filename>../../ext/qt/.libs/libgstqmlgl.so</filename>
   <basename>libgstqmlgl.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-rawparse.xml b/docs/plugins/inspect/plugin-rawparse.xml
index 12561f2..5742d65 100644
--- a/docs/plugins/inspect/plugin-rawparse.xml
+++ b/docs/plugins/inspect/plugin-rawparse.xml
@@ -3,7 +3,7 @@
   <description>Parses byte streams into raw frames</description>
   <filename>../../gst/rawparse/.libs/libgstrawparse.so</filename>
   <basename>libgstrawparse.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-removesilence.xml b/docs/plugins/inspect/plugin-removesilence.xml
index a42f5a1..db1dff4 100644
--- a/docs/plugins/inspect/plugin-removesilence.xml
+++ b/docs/plugins/inspect/plugin-removesilence.xml
@@ -3,7 +3,7 @@
   <description>Removes silence from an audio stream</description>
   <filename>../../gst/removesilence/.libs/libgstremovesilence.so</filename>
   <basename>libgstremovesilence.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-resindvd.xml b/docs/plugins/inspect/plugin-resindvd.xml
index ea7d78d..ceff0be 100644
--- a/docs/plugins/inspect/plugin-resindvd.xml
+++ b/docs/plugins/inspect/plugin-resindvd.xml
@@ -3,7 +3,7 @@
   <description>Resin DVD playback elements</description>
   <filename>../../ext/resindvd/.libs/libgstresindvd.so</filename>
   <basename>libgstresindvd.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>GPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer</package>
diff --git a/docs/plugins/inspect/plugin-rfbsrc.xml b/docs/plugins/inspect/plugin-rfbsrc.xml
index 4eceeb4..003cdf3 100644
--- a/docs/plugins/inspect/plugin-rfbsrc.xml
+++ b/docs/plugins/inspect/plugin-rfbsrc.xml
@@ -3,7 +3,7 @@
   <description>Connects to a VNC server and decodes RFB stream</description>
   <filename>../../gst/librfb/.libs/libgstrfbsrc.so</filename>
   <basename>libgstrfbsrc.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-rsvg.xml b/docs/plugins/inspect/plugin-rsvg.xml
index 114b381..9e2cfdd 100644
--- a/docs/plugins/inspect/plugin-rsvg.xml
+++ b/docs/plugins/inspect/plugin-rsvg.xml
@@ -3,7 +3,7 @@
   <description>RSVG plugin library</description>
   <filename>../../ext/rsvg/.libs/libgstrsvg.so</filename>
   <basename>libgstrsvg.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-rtmp.xml b/docs/plugins/inspect/plugin-rtmp.xml
index b00032a..178edd2 100644
--- a/docs/plugins/inspect/plugin-rtmp.xml
+++ b/docs/plugins/inspect/plugin-rtmp.xml
@@ -3,7 +3,7 @@
   <description>RTMP source and sink</description>
   <filename>../../ext/rtmp/.libs/libgstrtmp.so</filename>
   <basename>libgstrtmp.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-rtponvif.xml b/docs/plugins/inspect/plugin-rtponvif.xml
index 0be0859..a5e2c6c 100644
--- a/docs/plugins/inspect/plugin-rtponvif.xml
+++ b/docs/plugins/inspect/plugin-rtponvif.xml
@@ -3,7 +3,7 @@
   <description>ONVIF Streaming features</description>
   <filename>../../gst/onvif/.libs/libgstrtponvif.so</filename>
   <basename>libgstrtponvif.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>unknown</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-sbc.xml b/docs/plugins/inspect/plugin-sbc.xml
index 1fc4802..41d3d37 100644
--- a/docs/plugins/inspect/plugin-sbc.xml
+++ b/docs/plugins/inspect/plugin-sbc.xml
@@ -3,7 +3,7 @@
   <description>SBC bluetooth audio support</description>
   <filename>../../ext/sbc/.libs/libgstsbc.so</filename>
   <basename>libgstsbc.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-schro.xml b/docs/plugins/inspect/plugin-schro.xml
index 895408a..52df29c 100644
--- a/docs/plugins/inspect/plugin-schro.xml
+++ b/docs/plugins/inspect/plugin-schro.xml
@@ -3,7 +3,7 @@
   <description>Schroedinger plugin</description>
   <filename>../../ext/schroedinger/.libs/libgstschro.so</filename>
   <basename>libgstschro.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-sdp.xml b/docs/plugins/inspect/plugin-sdp.xml
index 9213522..783fe11 100644
--- a/docs/plugins/inspect/plugin-sdp.xml
+++ b/docs/plugins/inspect/plugin-sdp.xml
@@ -3,7 +3,7 @@
   <description>configure streaming sessions using SDP</description>
   <filename>../../gst/sdp/.libs/libgstsdpelem.so</filename>
   <basename>libgstsdpelem.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-segmentclip.xml b/docs/plugins/inspect/plugin-segmentclip.xml
index 0ddc74b..927bdbc 100644
--- a/docs/plugins/inspect/plugin-segmentclip.xml
+++ b/docs/plugins/inspect/plugin-segmentclip.xml
@@ -3,7 +3,7 @@
   <description>Segment clip elements</description>
   <filename>../../gst/segmentclip/.libs/libgstsegmentclip.so</filename>
   <basename>libgstsegmentclip.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-shm.xml b/docs/plugins/inspect/plugin-shm.xml
index 6eec4e9..53cc1de 100644
--- a/docs/plugins/inspect/plugin-shm.xml
+++ b/docs/plugins/inspect/plugin-shm.xml
@@ -3,7 +3,7 @@
   <description>shared memory sink source</description>
   <filename>../../sys/shm/.libs/libgstshm.so</filename>
   <basename>libgstshm.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-smooth.xml b/docs/plugins/inspect/plugin-smooth.xml
index b61c704..acc23a0 100644
--- a/docs/plugins/inspect/plugin-smooth.xml
+++ b/docs/plugins/inspect/plugin-smooth.xml
@@ -3,7 +3,7 @@
   <description>Apply a smooth filter to an image</description>
   <filename>../../gst/smooth/.libs/libgstsmooth.so</filename>
   <basename>libgstsmooth.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-smoothstreaming.xml b/docs/plugins/inspect/plugin-smoothstreaming.xml
index 5bdbf5d..56673a9 100644
--- a/docs/plugins/inspect/plugin-smoothstreaming.xml
+++ b/docs/plugins/inspect/plugin-smoothstreaming.xml
@@ -3,7 +3,7 @@
   <description>Microsoft&apos;s Smooth Streaming format support </description>
   <filename>../../ext/smoothstreaming/.libs/libgstsmoothstreaming.so</filename>
   <basename>libgstsmoothstreaming.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-sndfile.xml b/docs/plugins/inspect/plugin-sndfile.xml
index e395b55..983d350 100644
--- a/docs/plugins/inspect/plugin-sndfile.xml
+++ b/docs/plugins/inspect/plugin-sndfile.xml
@@ -3,7 +3,7 @@
   <description>use libsndfile to read and write various audio formats</description>
   <filename>../../ext/sndfile/.libs/libgstsndfile.so</filename>
   <basename>libgstsndfile.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-soundtouch.xml b/docs/plugins/inspect/plugin-soundtouch.xml
index d58527a..9ff612e 100644
--- a/docs/plugins/inspect/plugin-soundtouch.xml
+++ b/docs/plugins/inspect/plugin-soundtouch.xml
@@ -3,7 +3,7 @@
   <description>Audio Pitch Controller &amp; BPM Detection</description>
   <filename>../../ext/soundtouch/.libs/libgstsoundtouch.so</filename>
   <basename>libgstsoundtouch.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-spandsp.xml b/docs/plugins/inspect/plugin-spandsp.xml
index 9a28b4d..4820c8f 100644
--- a/docs/plugins/inspect/plugin-spandsp.xml
+++ b/docs/plugins/inspect/plugin-spandsp.xml
@@ -3,7 +3,7 @@
   <description>libspandsp plugin</description>
   <filename>../../ext/spandsp/.libs/libgstspandsp.so</filename>
   <basename>libgstspandsp.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-speed.xml b/docs/plugins/inspect/plugin-speed.xml
index 23061c9..13e3780 100644
--- a/docs/plugins/inspect/plugin-speed.xml
+++ b/docs/plugins/inspect/plugin-speed.xml
@@ -3,7 +3,7 @@
   <description>Set speed/pitch on audio/raw streams (resampler)</description>
   <filename>../../gst/speed/.libs/libgstspeed.so</filename>
   <basename>libgstspeed.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-srtp.xml b/docs/plugins/inspect/plugin-srtp.xml
index f199aa4..524926b 100644
--- a/docs/plugins/inspect/plugin-srtp.xml
+++ b/docs/plugins/inspect/plugin-srtp.xml
@@ -3,7 +3,7 @@
   <description>GStreamer SRTP</description>
   <filename>../../ext/srtp/.libs/libgstsrtp.so</filename>
   <basename>libgstsrtp.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer</package>
diff --git a/docs/plugins/inspect/plugin-stereo.xml b/docs/plugins/inspect/plugin-stereo.xml
index 7d9b11c..aea2fa1 100644
--- a/docs/plugins/inspect/plugin-stereo.xml
+++ b/docs/plugins/inspect/plugin-stereo.xml
@@ -3,7 +3,7 @@
   <description>Muck with the stereo signal, enhance it&apos;s &apos;stereo-ness&apos;</description>
   <filename>../../gst/stereo/.libs/libgststereo.so</filename>
   <basename>libgststereo.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-subenc.xml b/docs/plugins/inspect/plugin-subenc.xml
index 4f9be08..75ae114 100644
--- a/docs/plugins/inspect/plugin-subenc.xml
+++ b/docs/plugins/inspect/plugin-subenc.xml
@@ -3,7 +3,7 @@
   <description>subtitle encoders</description>
   <filename>../../gst/subenc/.libs/libgstsubenc.so</filename>
   <basename>libgstsubenc.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-teletext.xml b/docs/plugins/inspect/plugin-teletext.xml
index efa22a5..ce31f6c 100644
--- a/docs/plugins/inspect/plugin-teletext.xml
+++ b/docs/plugins/inspect/plugin-teletext.xml
@@ -3,7 +3,7 @@
   <description>Teletext plugin</description>
   <filename>../../ext/teletextdec/.libs/libgstteletextdec.so</filename>
   <basename>libgstteletextdec.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer</package>
diff --git a/docs/plugins/inspect/plugin-timecode.xml b/docs/plugins/inspect/plugin-timecode.xml
index 3fa3d28..c9b1c25 100644
--- a/docs/plugins/inspect/plugin-timecode.xml
+++ b/docs/plugins/inspect/plugin-timecode.xml
@@ -3,7 +3,7 @@
   <description>Timecode-related elements</description>
   <filename>../../gst/timecode/.libs/libgsttimecode.so</filename>
   <basename>libgsttimecode.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-ttmlsubs.xml b/docs/plugins/inspect/plugin-ttmlsubs.xml
new file mode 100644
index 0000000..4d10360
--- /dev/null
+++ b/docs/plugins/inspect/plugin-ttmlsubs.xml
@@ -0,0 +1,61 @@
+<plugin>
+  <name>ttmlsubs</name>
+  <description>TTML subtitle handling</description>
+  <filename>../../ext/ttml/.libs/libgstttmlsubs.so</filename>
+  <basename>libgstttmlsubs.so</basename>
+  <version>1.9.90</version>
+  <license>LGPL</license>
+  <source>gst-plugins-bad</source>
+  <package>gst-ttml</package>
+  <origin>http://www.bbc.co.uk/rd</origin>
+  <elements>
+    <element>
+      <name>ttmlparse</name>
+      <longname>TTML subtitle parser</longname>
+      <class>Codec/Parser/Subtitle</class>
+      <description>Parses TTML subtitle files</description>
+      <author>GStreamer maintainers &lt;gstreamer-devel@lists.sourceforge.net&gt;, Chris Bass &lt;dash@rd.bbc.co.uk&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>application/ttml+xml</details>
+        </caps>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>text/x-raw(meta:GstSubtitleMeta)</details>
+        </caps>
+      </pads>
+    </element>
+    <element>
+      <name>ttmlrender</name>
+      <longname>TTML subtitle renderer</longname>
+      <class>Overlay/Subtitle</class>
+      <description>Renders timed-text subtitles on top of video buffers</description>
+      <author>David Schleef &lt;ds@schleef.org&gt;, Zeeshan Ali &lt;zeeshan.ali@nokia.com&gt;, Chris Bass &lt;dash@rd.bbc.co.uk&gt;</author>
+      <pads>
+        <caps>
+          <name>text_sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>text/x-raw(meta:GstSubtitleMeta)</details>
+        </caps>
+        <caps>
+          <name>video_sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>video/x-raw, format=(string){ BGRx, RGBx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, I420, YV12, AYUV, YUY2, UYVY, v308, Y41B, Y42B, Y444, NV12, NV21, A420, YUV9, YVU9, IYU1, GRAY8 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, IYU2, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE, P010_10LE, P010_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+        </caps>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>video/x-raw, format=(string){ BGRx, RGBx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, I420, YV12, AYUV, YUY2, UYVY, v308, Y41B, Y42B, Y444, NV12, NV21, A420, YUV9, YVU9, IYU1, GRAY8 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, IYU2, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE, P010_10LE, P010_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+        </caps>
+      </pads>
+    </element>
+  </elements>
+</plugin>
\ No newline at end of file
diff --git a/docs/plugins/inspect/plugin-uvch264.xml b/docs/plugins/inspect/plugin-uvch264.xml
index ff1f16c..99aba64 100644
--- a/docs/plugins/inspect/plugin-uvch264.xml
+++ b/docs/plugins/inspect/plugin-uvch264.xml
@@ -3,7 +3,7 @@
   <description>UVC compliant H264 encoding cameras plugin</description>
   <filename>../../sys/uvch264/.libs/libgstuvch264.so</filename>
   <basename>libgstuvch264.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-vcdsrc.xml b/docs/plugins/inspect/plugin-vcdsrc.xml
index 485eb6e..e04bd95 100644
--- a/docs/plugins/inspect/plugin-vcdsrc.xml
+++ b/docs/plugins/inspect/plugin-vcdsrc.xml
@@ -3,7 +3,7 @@
   <description>Asynchronous read from VCD disk</description>
   <filename>../../sys/vcd/.libs/libgstvcdsrc.so</filename>
   <basename>libgstvcdsrc.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-videofiltersbad.xml b/docs/plugins/inspect/plugin-videofiltersbad.xml
index 43ecbc2..689bc63 100644
--- a/docs/plugins/inspect/plugin-videofiltersbad.xml
+++ b/docs/plugins/inspect/plugin-videofiltersbad.xml
@@ -3,7 +3,7 @@
   <description>Video filters in gst-plugins-bad</description>
   <filename>../../gst/videofilters/.libs/libgstvideofiltersbad.so</filename>
   <basename>libgstvideofiltersbad.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins</package>
diff --git a/docs/plugins/inspect/plugin-videoframe_audiolevel.xml b/docs/plugins/inspect/plugin-videoframe_audiolevel.xml
index 870e41f..9830c6a 100644
--- a/docs/plugins/inspect/plugin-videoframe_audiolevel.xml
+++ b/docs/plugins/inspect/plugin-videoframe_audiolevel.xml
@@ -3,7 +3,7 @@
   <description>Video frame-synchronized audio level</description>
   <filename>../../gst/videoframe_audiolevel/.libs/libgstvideoframe_audiolevel.so</filename>
   <basename>libgstvideoframe_audiolevel.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-videoparsersbad.xml b/docs/plugins/inspect/plugin-videoparsersbad.xml
index a78dab5..9fc4999 100644
--- a/docs/plugins/inspect/plugin-videoparsersbad.xml
+++ b/docs/plugins/inspect/plugin-videoparsersbad.xml
@@ -3,7 +3,7 @@
   <description>videoparsers</description>
   <filename>../../gst/videoparsers/.libs/libgstvideoparsersbad.so</filename>
   <basename>libgstvideoparsersbad.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-videosignal.xml b/docs/plugins/inspect/plugin-videosignal.xml
index e4ff947..c7e8c44 100644
--- a/docs/plugins/inspect/plugin-videosignal.xml
+++ b/docs/plugins/inspect/plugin-videosignal.xml
@@ -3,7 +3,7 @@
   <description>Various video signal analysers</description>
   <filename>../../gst/videosignal/.libs/libgstvideosignal.so</filename>
   <basename>libgstvideosignal.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-vmnc.xml b/docs/plugins/inspect/plugin-vmnc.xml
index 9d8642d..549d891 100644
--- a/docs/plugins/inspect/plugin-vmnc.xml
+++ b/docs/plugins/inspect/plugin-vmnc.xml
@@ -3,7 +3,7 @@
   <description>VmWare Video Codec plugins</description>
   <filename>../../gst/vmnc/.libs/libgstvmnc.so</filename>
   <basename>libgstvmnc.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-voaacenc.xml b/docs/plugins/inspect/plugin-voaacenc.xml
index 1ae9bc7..40afdd5 100644
--- a/docs/plugins/inspect/plugin-voaacenc.xml
+++ b/docs/plugins/inspect/plugin-voaacenc.xml
@@ -3,7 +3,7 @@
   <description>AAC audio encoder</description>
   <filename>../../ext/voaacenc/.libs/libgstvoaacenc.so</filename>
   <basename>libgstvoaacenc.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-voamrwbenc.xml b/docs/plugins/inspect/plugin-voamrwbenc.xml
index a7fed37..2552a28 100644
--- a/docs/plugins/inspect/plugin-voamrwbenc.xml
+++ b/docs/plugins/inspect/plugin-voamrwbenc.xml
@@ -3,7 +3,7 @@
   <description>Adaptive Multi-Rate Wide-Band Encoder</description>
   <filename>../../ext/voamrwbenc/.libs/libgstvoamrwbenc.so</filename>
   <basename>libgstvoamrwbenc.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>unknown</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-waylandsink.xml b/docs/plugins/inspect/plugin-waylandsink.xml
index cb600c0..c809fd6 100644
--- a/docs/plugins/inspect/plugin-waylandsink.xml
+++ b/docs/plugins/inspect/plugin-waylandsink.xml
@@ -3,7 +3,7 @@
   <description>Wayland Video Sink</description>
   <filename>../../ext/wayland/.libs/libgstwaylandsink.so</filename>
   <basename>libgstwaylandsink.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-webp.xml b/docs/plugins/inspect/plugin-webp.xml
index b20639c..ca6ed22 100644
--- a/docs/plugins/inspect/plugin-webp.xml
+++ b/docs/plugins/inspect/plugin-webp.xml
@@ -3,7 +3,7 @@
   <description>WebP plugin</description>
   <filename>../../ext/webp/.libs/libgstwebp.so</filename>
   <basename>libgstwebp.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-webrtcdsp.xml b/docs/plugins/inspect/plugin-webrtcdsp.xml
index 1c6dab8..1eed4f6 100644
--- a/docs/plugins/inspect/plugin-webrtcdsp.xml
+++ b/docs/plugins/inspect/plugin-webrtcdsp.xml
@@ -3,7 +3,7 @@
   <description>Voice pre-processing using WebRTC Audio Processing Library</description>
   <filename>../../ext/webrtcdsp/.libs/libgstwebrtcdsp.so</filename>
   <basename>libgstwebrtcdsp.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>WebRTCDsp</package>
diff --git a/docs/plugins/inspect/plugin-wildmidi.xml b/docs/plugins/inspect/plugin-wildmidi.xml
index 980616d..4674b69 100644
--- a/docs/plugins/inspect/plugin-wildmidi.xml
+++ b/docs/plugins/inspect/plugin-wildmidi.xml
@@ -3,7 +3,7 @@
   <description>Wildmidi Plugin</description>
   <filename>../../ext/timidity/.libs/libgstwildmidi.so</filename>
   <basename>libgstwildmidi.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>GPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-x265.xml b/docs/plugins/inspect/plugin-x265.xml
index 35096e0..46cbc16 100644
--- a/docs/plugins/inspect/plugin-x265.xml
+++ b/docs/plugins/inspect/plugin-x265.xml
@@ -3,7 +3,7 @@
   <description>x265-based H265 plugins</description>
   <filename>../../ext/x265/.libs/libgstx265.so</filename>
   <basename>libgstx265.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>GPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-y4mdec.xml b/docs/plugins/inspect/plugin-y4mdec.xml
index 89347c8..7d5d63a 100644
--- a/docs/plugins/inspect/plugin-y4mdec.xml
+++ b/docs/plugins/inspect/plugin-y4mdec.xml
@@ -3,7 +3,7 @@
   <description>Demuxes/decodes YUV4MPEG streams</description>
   <filename>../../gst/y4m/.libs/libgsty4mdec.so</filename>
   <basename>libgsty4mdec.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins</package>
diff --git a/docs/plugins/inspect/plugin-yadif.xml b/docs/plugins/inspect/plugin-yadif.xml
index 06ee672..768b214 100644
--- a/docs/plugins/inspect/plugin-yadif.xml
+++ b/docs/plugins/inspect/plugin-yadif.xml
@@ -3,7 +3,7 @@
   <description>YADIF deinterlacing filter</description>
   <filename>../../gst/yadif/.libs/libgstyadif.so</filename>
   <basename>libgstyadif.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>GPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins</package>
diff --git a/docs/plugins/inspect/plugin-zbar.xml b/docs/plugins/inspect/plugin-zbar.xml
index f640b2e..5defa8b 100644
--- a/docs/plugins/inspect/plugin-zbar.xml
+++ b/docs/plugins/inspect/plugin-zbar.xml
@@ -3,7 +3,7 @@
   <description>zbar barcode scanner</description>
   <filename>../../ext/zbar/.libs/libgstzbar.so</filename>
   <basename>libgstzbar.so</basename>
-  <version>1.9.90</version>
+  <version>1.10.0</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/ext/dash/gstdashdemux.c b/ext/dash/gstdashdemux.c
index 6e24747..242a7c2 100644
--- a/ext/dash/gstdashdemux.c
+++ b/ext/dash/gstdashdemux.c
@@ -198,7 +198,7 @@
 
 /* Default values for properties */
 #define DEFAULT_MAX_BUFFERING_TIME       30     /* in seconds */
-#define DEFAULT_BANDWIDTH_USAGE         0.8     /* 0 to 1     */
+#define DEFAULT_BANDWIDTH_USAGE         0.8f    /* 0 to 1     */
 #define DEFAULT_MAX_BITRATE               0     /* in bit/s  */
 #define DEFAULT_MAX_VIDEO_WIDTH           0
 #define DEFAULT_MAX_VIDEO_HEIGHT          0
diff --git a/ext/dash/gstmpdparser.c b/ext/dash/gstmpdparser.c
index 10f0149..e6d7283 100644
--- a/ext/dash/gstmpdparser.c
+++ b/ext/dash/gstmpdparser.c
@@ -110,7 +110,8 @@
 gst_mpdparser_parse_representation_base_type (GstRepresentationBaseType **
     pointer, xmlNode * a_node);
 static gboolean gst_mpdparser_parse_representation_node (GList ** list,
-    xmlNode * a_node, GstAdaptationSetNode * parent);
+    xmlNode * a_node, GstAdaptationSetNode * parent,
+    GstPeriodNode * period_node);
 static gboolean gst_mpdparser_parse_adaptation_set_node (GList ** list,
     xmlNode * a_node, GstPeriodNode * parent);
 static void gst_mpdparser_parse_subset_node (GList ** list, xmlNode * a_node);
@@ -1640,6 +1641,8 @@
     }
   }
 
+  has_timeline = mult_seg_base_type->SegmentTimeline != NULL;
+
   if (!has_duration && !has_timeline) {
     GST_ERROR ("segment has neither duration nor timeline");
     goto error;
@@ -1794,7 +1797,7 @@
 
 static gboolean
 gst_mpdparser_parse_representation_node (GList ** list, xmlNode * a_node,
-    GstAdaptationSetNode * parent)
+    GstAdaptationSetNode * parent, GstPeriodNode * period_node)
 {
   xmlNode *cur_node;
   GstRepresentationNode *new_representation;
@@ -1830,7 +1833,9 @@
           goto error;
       } else if (xmlStrcmp (cur_node->name, (xmlChar *) "SegmentList") == 0) {
         if (!gst_mpdparser_parse_segment_list_node
-            (&new_representation->SegmentList, cur_node, parent->SegmentList))
+            (&new_representation->SegmentList, cur_node,
+                parent->SegmentList ? parent->
+                SegmentList : period_node->SegmentList))
           goto error;
       } else if (xmlStrcmp (cur_node->name, (xmlChar *) "BaseURL") == 0) {
         gst_mpdparser_parse_baseURL_node (&new_representation->BaseURLs,
@@ -1961,7 +1966,7 @@
     if (cur_node->type == XML_ELEMENT_NODE) {
       if (xmlStrcmp (cur_node->name, (xmlChar *) "Representation") == 0) {
         if (!gst_mpdparser_parse_representation_node
-            (&new_adap_set->Representations, cur_node, new_adap_set))
+            (&new_adap_set->Representations, cur_node, new_adap_set, parent))
           goto error;
       }
     }
@@ -3342,7 +3347,8 @@
   for (idx = 0, iter = client->periods; iter; idx++, iter = g_list_next (iter)) {
     stream_period = iter->data;
     if (stream_period->start <= time_offset
-        && stream_period->start + stream_period->duration > time_offset) {
+        && (!GST_CLOCK_TIME_IS_VALID (stream_period->duration)
+            || stream_period->start + stream_period->duration > time_offset)) {
       period_idx = idx;
       break;
     }
diff --git a/ext/dtls/gstdtlscertificate.c b/ext/dtls/gstdtlscertificate.c
index 95fbb83..c1c9602 100644
--- a/ext/dtls/gstdtlscertificate.c
+++ b/ext/dtls/gstdtlscertificate.c
@@ -199,7 +199,22 @@
     priv->private_key = NULL;
     return;
   }
+
+  /* XXX: RSA_generate_key is actually deprecated in 0.9.8 */
+#if OPENSSL_VERSION_NUMBER < 0x10100001L
   rsa = RSA_generate_key (2048, RSA_F4, NULL, NULL);
+#else
+  rsa = RSA_new ();
+  if (rsa != NULL) {
+    BIGNUM *e = BN_new ();
+    if (e != NULL && BN_set_word (e, RSA_F4)
+        && RSA_generate_key_ex (rsa, 2048, e, NULL)) {
+      RSA_free (rsa);
+      rsa = NULL;
+    }
+    BN_free (e);
+  }
+#endif
 
   if (!rsa) {
     GST_WARNING_OBJECT (self, "failed to generate RSA");
diff --git a/ext/dtls/gstdtlsconnection.c b/ext/dtls/gstdtlsconnection.c
index 36f6d63..728f5a7 100644
--- a/ext/dtls/gstdtlsconnection.c
+++ b/ext/dtls/gstdtlsconnection.c
@@ -42,6 +42,8 @@
 #include <openssl/err.h>
 #include <openssl/ssl.h>
 
+#include <string.h>
+
 GST_DEBUG_CATEGORY_STATIC (gst_dtls_connection_debug);
 #define GST_CAT_DEFAULT gst_dtls_connection_debug
 G_DEFINE_TYPE_WITH_CODE (GstDtlsConnection, gst_dtls_connection, G_TYPE_OBJECT,
@@ -216,6 +218,38 @@
   G_OBJECT_CLASS (gst_dtls_connection_parent_class)->finalize (gobject);
 }
 
+#if OPENSSL_VERSION_NUMBER < 0x10100001L
+static void
+BIO_set_data (BIO * bio, void *ptr)
+{
+  bio->ptr = ptr;
+}
+
+static void *
+BIO_get_data (BIO * bio)
+{
+  return bio->ptr;
+}
+
+static void
+BIO_set_shutdown (BIO * bio, int shutdown)
+{
+  bio->shutdown = shutdown;
+}
+
+static void
+BIO_set_init (BIO * bio, int init)
+{
+  bio->init = init;
+}
+
+static X509 *
+X509_STORE_CTX_get0_cert (X509_STORE_CTX * ctx)
+{
+  return ctx->cert;
+}
+#endif
+
 static void
 gst_dtls_connection_set_property (GObject * object, guint prop_id,
     const GValue * value, GParamSpec * pspec)
@@ -239,7 +273,7 @@
       priv->bio = BIO_new (BIO_s_gst_dtls_connection ());
       g_return_if_fail (priv->bio);
 
-      priv->bio->ptr = self;
+      BIO_set_data (priv->bio, self);
       SSL_set_bio (priv->ssl, priv->bio, priv->bio);
 
       SSL_set_verify (priv->ssl,
@@ -573,6 +607,7 @@
   states |= (! !SSL_want_write (priv->ssl) << 20);
   states |= (! !SSL_want_read (priv->ssl) << 24);
 
+#if OPENSSL_VERSION_NUMBER < 0x10100001L
   GST_LOG_OBJECT (self, "%s: role=%s buf=(%d,%p:%d/%d) %x|%x %s",
       str,
       priv->is_client ? "client" : "server",
@@ -581,6 +616,15 @@
       priv->bio_buffer_offset,
       priv->bio_buffer_len,
       states, SSL_get_state (priv->ssl), SSL_state_string_long (priv->ssl));
+#else
+  GST_LOG_OBJECT (self, "%s: role=%s buf=(%p:%d/%d) %x|%x %s",
+      str,
+      priv->is_client ? "client" : "server",
+      priv->bio_buffer,
+      priv->bio_buffer_offset,
+      priv->bio_buffer_len,
+      states, SSL_get_state (priv->ssl), SSL_state_string_long (priv->ssl));
+#endif
 }
 
 static void
@@ -737,7 +781,7 @@
   self = SSL_get_ex_data (ssl, connection_ex_index);
   g_return_val_if_fail (GST_IS_DTLS_CONNECTION (self), FALSE);
 
-  pem = _gst_dtls_x509_to_pem (x509_ctx->cert);
+  pem = _gst_dtls_x509_to_pem (X509_STORE_CTX_get0_cert (x509_ctx));
 
   if (!pem) {
     GST_WARNING_OBJECT (self,
@@ -749,7 +793,8 @@
       gint len;
 
       len =
-          X509_NAME_print_ex (bio, X509_get_subject_name (x509_ctx->cert), 1,
+          X509_NAME_print_ex (bio,
+          X509_get_subject_name (X509_STORE_CTX_get0_cert (x509_ctx)), 1,
           XN_FLAG_MULTILINE);
       BIO_read (bio, buffer, len);
       buffer[len] = '\0';
@@ -777,6 +822,7 @@
     ########  ####  #######
 */
 
+#if OPENSSL_VERSION_NUMBER < 0x10100001L
 static BIO_METHOD custom_bio_methods = {
   BIO_TYPE_BIO,
   "stream",
@@ -795,11 +841,34 @@
 {
   return &custom_bio_methods;
 }
+#else
+static BIO_METHOD *custom_bio_methods;
+
+static BIO_METHOD *
+BIO_s_gst_dtls_connection (void)
+{
+  if (custom_bio_methods != NULL)
+    return custom_bio_methods;
+
+  custom_bio_methods = BIO_meth_new (BIO_TYPE_BIO, "stream");
+  if (custom_bio_methods == NULL
+      || !BIO_meth_set_write (custom_bio_methods, bio_method_write)
+      || !BIO_meth_set_read (custom_bio_methods, bio_method_read)
+      || !BIO_meth_set_ctrl (custom_bio_methods, bio_method_ctrl)
+      || !BIO_meth_set_create (custom_bio_methods, bio_method_new)
+      || !BIO_meth_set_destroy (custom_bio_methods, bio_method_free)) {
+    BIO_meth_free (custom_bio_methods);
+    return NULL;
+  }
+
+  return custom_bio_methods;
+}
+#endif
 
 static int
 bio_method_write (BIO * bio, const char *data, int size)
 {
-  GstDtlsConnection *self = GST_DTLS_CONNECTION (bio->ptr);
+  GstDtlsConnection *self = GST_DTLS_CONNECTION (BIO_get_data (bio));
 
   GST_LOG_OBJECT (self, "BIO: writing %d", size);
 
@@ -824,7 +893,7 @@
 static int
 bio_method_read (BIO * bio, char *out_buffer, int size)
 {
-  GstDtlsConnection *self = GST_DTLS_CONNECTION (bio->ptr);
+  GstDtlsConnection *self = GST_DTLS_CONNECTION (BIO_get_data (bio));
   GstDtlsConnectionPrivate *priv = self->priv;
   guint internal_size;
   gint copy_size;
@@ -868,7 +937,7 @@
 static long
 bio_method_ctrl (BIO * bio, int cmd, long arg1, void *arg2)
 {
-  GstDtlsConnection *self = GST_DTLS_CONNECTION (bio->ptr);
+  GstDtlsConnection *self = GST_DTLS_CONNECTION (BIO_get_data (bio));
   GstDtlsConnectionPrivate *priv = self->priv;
 
   switch (cmd) {
@@ -916,8 +985,8 @@
 {
   GST_LOG_OBJECT (NULL, "BIO: new");
 
-  bio->shutdown = 0;
-  bio->init = 1;
+  BIO_set_shutdown (bio, 0);
+  BIO_set_init (bio, 1);
 
   return 1;
 }
@@ -930,6 +999,6 @@
     return 0;
   }
 
-  GST_LOG_OBJECT (GST_DTLS_CONNECTION (bio->ptr), "BIO free");
+  GST_LOG_OBJECT (GST_DTLS_CONNECTION (BIO_get_data (bio)), "BIO free");
   return 0;
 }
diff --git a/ext/dts/gstdtsdec.c b/ext/dts/gstdtsdec.c
index 70ffbc7..1c91ce1 100644
--- a/ext/dts/gstdtsdec.c
+++ b/ext/dts/gstdtsdec.c
@@ -131,7 +131,7 @@
 static gboolean gst_dtsdec_start (GstAudioDecoder * dec);
 static gboolean gst_dtsdec_stop (GstAudioDecoder * dec);
 static gboolean gst_dtsdec_set_format (GstAudioDecoder * bdec, GstCaps * caps);
-static gboolean gst_dtsdec_parse (GstAudioDecoder * dec, GstAdapter * adapter,
+static GstFlowReturn gst_dtsdec_parse (GstAudioDecoder * dec, GstAdapter * adapter,
     gint * offset, gint * length);
 static GstFlowReturn gst_dtsdec_handle_frame (GstAudioDecoder * dec,
     GstBuffer * buffer);
diff --git a/ext/faad/gstfaad.c b/ext/faad/gstfaad.c
index 07cca30..09d927c 100644
--- a/ext/faad/gstfaad.c
+++ b/ext/faad/gstfaad.c
@@ -93,7 +93,7 @@
 static gboolean gst_faad_start (GstAudioDecoder * dec);
 static gboolean gst_faad_stop (GstAudioDecoder * dec);
 static gboolean gst_faad_set_format (GstAudioDecoder * dec, GstCaps * caps);
-static gboolean gst_faad_parse (GstAudioDecoder * dec, GstAdapter * adapter,
+static GstFlowReturn gst_faad_parse (GstAudioDecoder * dec, GstAdapter * adapter,
     gint * offset, gint * length);
 static GstFlowReturn gst_faad_handle_frame (GstAudioDecoder * dec,
     GstBuffer * buffer);
diff --git a/ext/gl/gstgloverlay.c b/ext/gl/gstgloverlay.c
index e7b4c0a..b39baf4 100644
--- a/ext/gl/gstgloverlay.c
+++ b/ext/gl/gstgloverlay.c
@@ -44,6 +44,9 @@
 
 #include <stdio.h>
 #include <stdlib.h>
+#ifdef _MSC_VER
+#define HAVE_BOOLEAN
+#endif
 #include <jpeglib.h>
 #include <png.h>
 
diff --git a/ext/gl/gstglstereosplit.c b/ext/gl/gstglstereosplit.c
index 1eaa440..744a7f2 100644
--- a/ext/gl/gstglstereosplit.c
+++ b/ext/gl/gstglstereosplit.c
@@ -247,7 +247,8 @@
     GstVideoMultiviewFlags flags, mask;
 
     gst_structure_remove_field (st, "multiview-mode");
-    if (gst_structure_get_flagset (st, "multiview-flags", &flags, &mask)) {
+    if (gst_structure_get_flagset (st, "multiview-flags", (guint*) &flags,
+        (guint*) &mask)) {
       flags &= keep_flags;
       mask = keep_flags;
       gst_structure_set (st, "multiview-flags",
diff --git a/ext/gl/gstgltransformation.c b/ext/gl/gstgltransformation.c
index a4df304..1fcf902 100644
--- a/ext/gl/gstgltransformation.c
+++ b/ext/gl/gstgltransformation.c
@@ -251,7 +251,7 @@
   filter->shader = NULL;
   filter->fov = 90;
   filter->aspect = 1.0;
-  filter->znear = 0.1;
+  filter->znear = 0.1f;
   filter->zfar = 100;
 
   filter->xscale = 1.0;
diff --git a/ext/gl/gstgluploadelement.c b/ext/gl/gstgluploadelement.c
index d3ed276..f9e52f6 100644
--- a/ext/gl/gstgluploadelement.c
+++ b/ext/gl/gstgluploadelement.c
@@ -62,10 +62,23 @@
     GST_STATIC_CAPS ("video/x-raw(ANY)"));
 
 static void
+gst_gl_upload_element_finalize (GObject * object)
+{
+  GstGLUploadElement *upload = GST_GL_UPLOAD_ELEMENT (object);
+
+  if (upload->upload)
+    gst_object_unref (upload->upload);
+  upload->upload = NULL;
+
+  G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static void
 gst_gl_upload_element_class_init (GstGLUploadElementClass * klass)
 {
   GstBaseTransformClass *bt_class = GST_BASE_TRANSFORM_CLASS (klass);
   GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
+  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
   GstCaps *upload_caps;
 
   bt_class->transform_caps = _gst_gl_upload_element_transform_caps;
@@ -91,6 +104,8 @@
   gst_element_class_set_metadata (element_class,
       "OpenGL uploader", "Filter/Video",
       "Uploads data into OpenGL", "Matthew Waters <matthew@centricular.com>");
+
+  gobject_class->finalize = gst_gl_upload_element_finalize;
 }
 
 static void
diff --git a/ext/gl/gstglviewconvert.c b/ext/gl/gstglviewconvert.c
index ba05a11..617df44 100644
--- a/ext/gl/gstglviewconvert.c
+++ b/ext/gl/gstglviewconvert.c
@@ -88,7 +88,7 @@
 static GstFlowReturn
 gst_gl_view_convert_element_submit_input_buffer (GstBaseTransform * trans,
     gboolean is_discont, GstBuffer * input);
-static gboolean
+static GstFlowReturn
 gst_gl_view_convert_element_generate_output_buffer (GstBaseTransform * bt,
     GstBuffer ** outbuf);
 
diff --git a/ext/gl/gstopengl.c b/ext/gl/gstopengl.c
index 9bd754d..4a8c4d6 100644
--- a/ext/gl/gstopengl.c
+++ b/ext/gl/gstopengl.c
@@ -90,7 +90,7 @@
 extern GType gst_ca_opengl_layer_sink_bin_get_type (void);
 #endif
 
-#ifdef USE_EGL_RPI
+#if GST_GL_HAVE_WINDOW_DISPMANX
 extern void bcm_host_init (void);
 #endif
 
@@ -107,7 +107,7 @@
 {
   GST_DEBUG_CATEGORY_INIT (gst_gl_gstgl_debug, "gstopengl", 0, "gstopengl");
 
-#ifdef USE_EGL_RPI
+#if GST_GL_HAVE_WINDOW_DISPMANX
   GST_DEBUG ("Initialize BCM host");
   bcm_host_init ();
 #endif
@@ -236,7 +236,6 @@
           GST_RANK_NONE, GST_TYPE_GL_DEINTERLACE)) {
     return FALSE;
   }
-
 #if HAVE_JPEG
 #if HAVE_PNG
   if (!gst_element_register (plugin, "gloverlay",
diff --git a/ext/hls/gsthlsdemux.c b/ext/hls/gsthlsdemux.c
index a4eaacd..bb91f30 100644
--- a/ext/hls/gsthlsdemux.c
+++ b/ext/hls/gsthlsdemux.c
@@ -1574,14 +1574,16 @@
     GST_M3U8_CLIENT_UNLOCK (demux->client);
     gst_hls_demux_set_current_variant (demux, previous_variant);
     /*  Try a lower bitrate (or stop if we just tried the lowest) */
-    lowest_variant = demux->master->variants->data;
-    lowest_ivariant = demux->master->iframe_variants->data;
-    if (previous_variant->iframe && new_bandwidth == lowest_ivariant->bandwidth)
-      return FALSE;
-    if (!previous_variant->iframe && new_bandwidth == lowest_variant->bandwidth)
-      return FALSE;
-    else
-      return gst_hls_demux_change_playlist (demux, new_bandwidth - 1, changed);
+    if (previous_variant->iframe) {
+      lowest_ivariant = demux->master->iframe_variants->data;
+      if (new_bandwidth == lowest_ivariant->bandwidth)
+        return FALSE;
+    } else {
+      lowest_variant = demux->master->variants->data;
+      if (new_bandwidth == lowest_variant->bandwidth)
+        return FALSE;
+    }
+    return gst_hls_demux_change_playlist (demux, new_bandwidth - 1, changed);
   }
 
   return TRUE;
diff --git a/ext/hls/gsthlsdemux.h b/ext/hls/gsthlsdemux.h
index 3b6a4c0..f2bc238 100644
--- a/ext/hls/gsthlsdemux.h
+++ b/ext/hls/gsthlsdemux.h
@@ -83,7 +83,7 @@
 
 struct _GstHLSDemuxStream
 {
-  GstAdaptiveDemux adaptive_demux_stream;
+  GstAdaptiveDemuxStream adaptive_demux_stream;
 
   GstHLSTSReaderType stream_type;
 
diff --git a/ext/opencv/gstopencvutils.cpp b/ext/opencv/gstopencvutils.cpp
index 57b660d..640486b 100644
--- a/ext/opencv/gstopencvutils.cpp
+++ b/ext/opencv/gstopencvutils.cpp
@@ -34,6 +34,7 @@
   GstVideoInfo info;
   gint depth = 0;
   guint i;
+  gchar *caps_str;
 
   if (!gst_video_info_from_caps (&info, caps)) {
     GST_ERROR ("Failed to get the videoinfo from caps");
@@ -49,8 +50,10 @@
   else if (GST_VIDEO_INFO_IS_GRAY (&info))
     *channels = 1;
   else {
+    caps_str = gst_caps_to_string (caps);
     g_set_error (err, GST_CORE_ERROR, GST_CORE_ERROR_NEGOTIATION,
-        "Unsupported caps %s", gst_caps_to_string (caps));
+        "Unsupported caps %s", caps_str);
+    g_free (caps_str);
     return FALSE;
   }
 
diff --git a/ext/openh264/gstopenh264enc.cpp b/ext/openh264/gstopenh264enc.cpp
index a5e488f..ad18120 100644
--- a/ext/openh264/gstopenh264enc.cpp
+++ b/ext/openh264/gstopenh264enc.cpp
@@ -794,9 +794,9 @@
       openh264enc->time_per_frame = (GST_SECOND / openh264enc->framerate);
       openh264enc->previous_timestamp = frame->pts;
     } else {
-      openh264enc->time_per_frame =
-          openh264enc->time_per_frame * 0.8 + (frame->pts -
-          openh264enc->previous_timestamp) * 0.2;
+      openh264enc->time_per_frame = (guint64)
+          (openh264enc->time_per_frame * 0.8 + (frame->pts -
+          openh264enc->previous_timestamp) * 0.2);
       openh264enc->previous_timestamp = frame->pts;
       if (openh264enc->frame_count % 10 == 0) {
         fps = GST_SECOND / (gdouble) openh264enc->time_per_frame;
diff --git a/ext/qt/qtwindow.cc b/ext/qt/qtwindow.cc
index 4702891..c3fd564 100644
--- a/ext/qt/qtwindow.cc
+++ b/ext/qt/qtwindow.cc
@@ -34,6 +34,11 @@
 #include <QtQuick/QQuickWindow>
 #include <QOpenGLFramebufferObject>
 
+/* compatability definitions... */
+#ifndef GL_READ_FRAMEBUFFER
+#define GL_READ_FRAMEBUFFER 0x8CA8
+#endif
+
 /**
  * SECTION:
  *
diff --git a/ext/schroedinger/gstschrodec.c b/ext/schroedinger/gstschrodec.c
index 359a594..693e31c 100644
--- a/ext/schroedinger/gstschrodec.c
+++ b/ext/schroedinger/gstschrodec.c
@@ -93,7 +93,7 @@
     gboolean at_eos);
 static GstFlowReturn gst_schro_dec_handle_frame (GstVideoDecoder * decoder,
     GstVideoCodecFrame * frame);
-static gboolean gst_schro_dec_finish (GstVideoDecoder * base_video_decoder);
+static GstFlowReturn gst_schro_dec_finish (GstVideoDecoder * base_video_decoder);
 static void gst_schrodec_send_tags (GstSchroDec * schro_dec);
 static gboolean gst_schro_dec_decide_allocation (GstVideoDecoder * decoder,
     GstQuery * query);
@@ -557,7 +557,7 @@
   return gst_schro_dec_process (schro_dec, FALSE);
 }
 
-gboolean
+GstFlowReturn
 gst_schro_dec_finish (GstVideoDecoder * base_video_decoder)
 {
   GstSchroDec *schro_dec;
diff --git a/ext/timidity/gsttimidity.c b/ext/timidity/gsttimidity.c
index 2078694..0b3f376 100644
--- a/ext/timidity/gsttimidity.c
+++ b/ext/timidity/gsttimidity.c
@@ -628,8 +628,12 @@
 
     GST_DEBUG_OBJECT (timidity, "Parsing song");
 
+#if defined(LIBTIMIDITY_VERSION) && LIBTIMIDITY_VERSION < 0x000200L
     stream =
         mid_istream_open_mem (timidity->mididata, timidity->mididata_size, 0);
+#else
+    stream = mid_istream_open_mem (timidity->mididata, timidity->mididata_size);
+#endif
 
     timidity->song = mid_song_load (stream, timidity->song_options);
     mid_istream_close (stream);
diff --git a/ext/vulkan/vkdevice.c b/ext/vulkan/vkdevice.c
index 5c2b279..1f7aad8 100644
--- a/ext/vulkan/vkdevice.c
+++ b/ext/vulkan/vkdevice.c
@@ -544,12 +544,12 @@
     gst_query_parse_context (query, &context);
     if (context)
       gst_context_get_vulkan_device (context, device);
+
+    gst_query_unref (query);
   }
 
   GST_DEBUG_OBJECT (element, "found device %p", *device);
 
-  gst_query_unref (query);
-
   if (*device)
     return TRUE;
 
diff --git a/ext/vulkan/vkdisplay.c b/ext/vulkan/vkdisplay.c
index 096f251..550134c 100644
--- a/ext/vulkan/vkdisplay.c
+++ b/ext/vulkan/vkdisplay.c
@@ -284,8 +284,12 @@
   window = klass->create_window (display);
 
   if (window) {
+    GWeakRef *ref = g_new0 (GWeakRef, 1);
+
+    g_weak_ref_set (ref, window);
+
     GST_OBJECT_LOCK (display);
-    display->windows = g_list_prepend (display->windows, window);
+    display->windows = g_list_prepend (display->windows, ref);
     GST_OBJECT_UNLOCK (display);
   }
 
@@ -298,6 +302,31 @@
   return gst_vulkan_window_new (display);
 }
 
+static gint
+_compare_vulkan_window (GWeakRef * ref, GstVulkanWindow * window)
+{
+  GstVulkanWindow *other = g_weak_ref_get (ref);
+  gboolean equal = window == other;
+
+  gst_object_unref (other);
+
+  return !equal;
+}
+
+static GList *
+_find_window_list_item (GstVulkanDisplay * display, GstVulkanWindow * window)
+{
+  GList *l;
+
+  if (!window)
+    return NULL;
+
+  l = g_list_find_custom (display->windows, window,
+      (GCompareFunc) _compare_vulkan_window);
+
+  return l;
+}
+
 gboolean
 gst_vulkan_display_remove_window (GstVulkanDisplay * display,
     GstVulkanWindow * window)
@@ -306,9 +335,11 @@
   GList *l;
 
   GST_OBJECT_LOCK (display);
-  l = g_list_find (display->windows, window);
+  l = _find_window_list_item (display, window);
   if (l) {
     display->windows = g_list_delete_link (display->windows, l);
+    g_weak_ref_clear (l->data);
+    g_free (l->data);
     ret = TRUE;
   }
   GST_OBJECT_UNLOCK (display);
diff --git a/ext/wayland/gstwaylandsink.c b/ext/wayland/gstwaylandsink.c
index 6e7510b..4b39ae1 100644
--- a/ext/wayland/gstwaylandsink.c
+++ b/ext/wayland/gstwaylandsink.c
@@ -670,7 +670,7 @@
 
         config = gst_buffer_pool_get_config (sink->pool);
         gst_buffer_pool_config_get_params (config, &caps, &size, NULL, NULL);
-        gst_buffer_pool_config_set_params (config, caps, size, 0, 0);
+        gst_buffer_pool_config_set_params (config, caps, size, 2, 0);
 
         /* This is a video pool, it should not fail with basic setings */
         if (!gst_buffer_pool_set_config (sink->pool, config) ||
diff --git a/gst-libs/gst/adaptivedemux/gstadaptivedemux.c b/gst-libs/gst/adaptivedemux/gstadaptivedemux.c
index 715893c..bf311d3 100644
--- a/gst-libs/gst/adaptivedemux/gstadaptivedemux.c
+++ b/gst-libs/gst/adaptivedemux/gstadaptivedemux.c
@@ -133,7 +133,7 @@
 #define MAX_DOWNLOAD_ERROR_COUNT 3
 #define DEFAULT_FAILED_COUNT 3
 #define DEFAULT_CONNECTION_SPEED 0
-#define DEFAULT_BITRATE_LIMIT 0.8
+#define DEFAULT_BITRATE_LIMIT 0.8f
 #define SRC_QUEUE_MAX_BYTES 20 * 1024 * 1024    /* For safety. Large enough to hold a segment. */
 #define NUM_LOOKBACK_FRAGMENTS 3
 
@@ -1882,8 +1882,7 @@
     return demux->connection_speed;
   }
 
-  g_object_get (stream->queue, "avg-in-rate", &fragment_bitrate, NULL);
-  fragment_bitrate *= 8;
+  fragment_bitrate = stream->last_bitrate;
   GST_DEBUG_OBJECT (demux, "Download bitrate is : %" G_GUINT64_FORMAT " bps",
       fragment_bitrate);
 
@@ -2353,6 +2352,58 @@
   return gst_pad_peer_query (stream->pad, query);
 }
 
+static GstPadProbeReturn
+_uri_handler_probe (GstPad * pad, GstPadProbeInfo * info,
+    GstAdaptiveDemuxStream * stream)
+{
+  GstPadProbeReturn ret = GST_PAD_PROBE_OK;
+
+  if (GST_PAD_PROBE_INFO_TYPE (info) & GST_PAD_PROBE_TYPE_BUFFER) {
+    GstBuffer *buf = GST_PAD_PROBE_INFO_BUFFER (info);
+    if (stream->fragment_bytes_downloaded == 0) {
+      stream->last_latency =
+          gst_adaptive_demux_get_monotonic_time (stream->demux) -
+          (stream->download_start_time * GST_USECOND);
+      GST_DEBUG_OBJECT (pad,
+          "FIRST BYTE since download_start %" GST_TIME_FORMAT,
+          GST_TIME_ARGS (stream->last_latency));
+    }
+    stream->fragment_bytes_downloaded += gst_buffer_get_size (buf);
+    GST_LOG_OBJECT (pad,
+        "Received buffer, size %" G_GSIZE_FORMAT " total %" G_GUINT64_FORMAT,
+        gst_buffer_get_size (buf), stream->fragment_bytes_downloaded);
+  } else if (GST_PAD_PROBE_INFO_TYPE (info) &
+      GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM) {
+    GstEvent *ev = GST_PAD_PROBE_INFO_EVENT (info);
+    GST_LOG_OBJECT (pad, "Received event %s %" GST_PTR_FORMAT,
+        GST_EVENT_TYPE_NAME (ev), ev);
+    switch (GST_EVENT_TYPE (ev)) {
+      case GST_EVENT_SEGMENT:
+        stream->fragment_bytes_downloaded = 0;
+        break;
+      case GST_EVENT_EOS:
+      {
+        stream->last_download_time =
+            gst_adaptive_demux_get_monotonic_time (stream->demux) -
+            (stream->download_start_time * GST_USECOND);
+        stream->last_bitrate =
+            gst_util_uint64_scale (stream->fragment_bytes_downloaded,
+            8 * GST_SECOND, stream->last_download_time);
+        GST_DEBUG_OBJECT (pad,
+            "EOS since download_start %" GST_TIME_FORMAT " bitrate %"
+            G_GUINT64_FORMAT " bps", GST_TIME_ARGS (stream->last_download_time),
+            stream->last_bitrate);
+        /* Calculate bitrate since URI request */
+      }
+        break;
+      default:
+        break;
+    }
+  }
+
+  return ret;
+}
+
 /* must be called with manifest_lock taken.
  * Can temporarily release manifest_lock
  */
@@ -2563,6 +2614,10 @@
       return FALSE;
     }
 
+    /* Add a downstream event and data probe */
+    gst_pad_add_probe (uri_handler_src, GST_PAD_PROBE_TYPE_DATA_DOWNSTREAM,
+        (GstPadProbeCallback) _uri_handler_probe, stream, NULL);
+
     g_object_unref (queue_sink);
     g_object_unref (uri_handler_src);
     queue_src = gst_element_get_static_pad (queue, "src");
diff --git a/gst-libs/gst/adaptivedemux/gstadaptivedemux.h b/gst-libs/gst/adaptivedemux/gstadaptivedemux.h
index e876600..780f4d9 100644
--- a/gst-libs/gst/adaptivedemux/gstadaptivedemux.h
+++ b/gst-libs/gst/adaptivedemux/gstadaptivedemux.h
@@ -167,6 +167,15 @@
   gint64 download_total_bytes;
   guint64 current_download_rate;
 
+  /* amount of data downloaded in current fragment (pre-queue2) */
+  guint64 fragment_bytes_downloaded;
+  /* bitrate of the previous fragment (pre-queue2) */
+  guint64 last_bitrate;
+  /* latency (request to first byte) and full download time (request to EOS)
+   * of previous fragment (pre-queue2) */
+  GstClockTime last_latency;
+  GstClockTime last_download_time;
+
   /* Average for the last fragments */
   guint64 moving_bitrate;
   guint moving_index;
diff --git a/gst-libs/gst/audio/gstaudioaggregator.c b/gst-libs/gst/audio/gstaudioaggregator.c
index a09b8a4..8d66225 100644
--- a/gst-libs/gst/audio/gstaudioaggregator.c
+++ b/gst-libs/gst/audio/gstaudioaggregator.c
@@ -74,7 +74,7 @@
 G_DEFINE_TYPE (GstAudioAggregatorPad, gst_audio_aggregator_pad,
     GST_TYPE_AGGREGATOR_PAD);
 
-static gboolean
+static GstFlowReturn
 gst_audio_aggregator_pad_flush_pad (GstAggregatorPad * aggpad,
     GstAggregator * aggregator);
 
@@ -118,7 +118,7 @@
 }
 
 
-static gboolean
+static GstFlowReturn
 gst_audio_aggregator_pad_flush_pad (GstAggregatorPad * aggpad,
     GstAggregator * aggregator)
 {
@@ -131,7 +131,7 @@
   gst_buffer_replace (&pad->priv->buffer, NULL);
   GST_OBJECT_UNLOCK (aggpad);
 
-  return TRUE;
+  return GST_FLOW_OK;
 }
 
 
diff --git a/gst-libs/gst/gl/Makefile.am b/gst-libs/gst/gl/Makefile.am
index 5572d2d..196bdee 100644
--- a/gst-libs/gst/gl/Makefile.am
+++ b/gst-libs/gst/gl/Makefile.am
@@ -129,6 +129,7 @@
 nodist_configexecinclude_HEADERS = $(built_sys_header_configure)
 
 libgstgl_@GST_API_VERSION@_la_CFLAGS = \
+	-DGST_EXPORTS \
 	-I$(top_srcdir)/gst-libs \
 	-I$(top_builddir)/gst-libs \
 	$(GST_PLUGINS_BASE_CFLAGS) \
diff --git a/gst-libs/gst/gl/Makefile.in b/gst-libs/gst/gl/Makefile.in
index 43eb799..894d93b 100644
--- a/gst-libs/gst/gl/Makefile.in
+++ b/gst-libs/gst/gl/Makefile.in
@@ -971,6 +971,7 @@
 configexecincludedir = $(libdir)/gstreamer-@GST_API_VERSION@/include/gst/gl
 nodist_configexecinclude_HEADERS = $(built_sys_header_configure)
 libgstgl_@GST_API_VERSION@_la_CFLAGS = \
+	-DGST_EXPORTS \
 	-I$(top_srcdir)/gst-libs \
 	-I$(top_builddir)/gst-libs \
 	$(GST_PLUGINS_BASE_CFLAGS) \
diff --git a/gst-libs/gst/gl/dispmanx/gstglwindow_dispmanx_egl.c b/gst-libs/gst/gl/dispmanx/gstglwindow_dispmanx_egl.c
index d06424c..80827b9 100644
--- a/gst-libs/gst/gl/dispmanx/gstglwindow_dispmanx_egl.c
+++ b/gst-libs/gst/gl/dispmanx/gstglwindow_dispmanx_egl.c
@@ -95,6 +95,9 @@
   window_egl->native.element = 0;
   window_egl->native.width = 0;
   window_egl->native.height = 0;
+  window_egl->foreign.element = 0;
+  window_egl->foreign.width = 0;
+  window_egl->foreign.height = 0;
   window_egl->render_rect.x = 0;
   window_egl->render_rect.y = 0;
   window_egl->render_rect.w = 0;
@@ -122,7 +125,7 @@
 
   window_egl = GST_GL_WINDOW_DISPMANX_EGL (window);
 
-  if (window_egl->native.element) {
+  if (window_egl->native.element && window_egl->native.element != window_egl->foreign.element) {
     dispman_update = vc_dispmanx_update_start (0);
     vc_dispmanx_element_remove (dispman_update, window_egl->native.element);
     vc_dispmanx_update_submit_sync (dispman_update);
@@ -175,6 +178,21 @@
 gst_gl_window_dispmanx_egl_set_window_handle (GstGLWindow * window,
     guintptr handle)
 {
+  GstGLWindowDispmanxEGL *window_egl = GST_GL_WINDOW_DISPMANX_EGL (window);
+  EGL_DISPMANX_WINDOW_T *foreign_window = (EGL_DISPMANX_WINDOW_T *)handle;
+  DISPMANX_UPDATE_HANDLE_T dispman_update;
+
+  GST_DEBUG_OBJECT (window, "set window handle with size %dx%d", foreign_window->width, foreign_window->height);
+
+  if (window_egl->native.element) {
+    dispman_update = vc_dispmanx_update_start (0);
+    vc_dispmanx_element_remove (dispman_update, window_egl->native.element);
+    vc_dispmanx_update_submit_sync (dispman_update);
+  }
+
+  window_egl->native.element = window_egl->foreign.element = foreign_window->element;
+  window_egl->native.width =  window_egl->foreign.width = foreign_window->width;
+  window_egl->native.height =  window_egl->foreign.height = foreign_window->height;
 }
 
 static void
@@ -263,7 +281,7 @@
 {
   GstGLWindowDispmanxEGL *window_egl = GST_GL_WINDOW_DISPMANX_EGL (window);
   window_egl->render_rect.x = x;
-  window_egl->render_rect.y = x;
+  window_egl->render_rect.y = y;
   window_egl->render_rect.w = width;
   window_egl->render_rect.h = height;
 
@@ -278,8 +296,10 @@
   GstGLWindowDispmanxEGL *window_egl = GST_GL_WINDOW_DISPMANX_EGL (window);
 
   if (!window_egl->visible) {
-    window_resize (window_egl, window_egl->preferred_width,
-        window_egl->preferred_height, TRUE);
+    if (window_egl->render_rect.w <= 0 || window_egl->render_rect.h <= 0) {
+      window_resize (window_egl, window_egl->preferred_width,
+          window_egl->preferred_height, TRUE);
+    }
     window_egl->visible = TRUE;
   }
 }
diff --git a/gst-libs/gst/gl/dispmanx/gstglwindow_dispmanx_egl.h b/gst-libs/gst/gl/dispmanx/gstglwindow_dispmanx_egl.h
index f0663e2..5680f07 100644
--- a/gst-libs/gst/gl/dispmanx/gstglwindow_dispmanx_egl.h
+++ b/gst-libs/gst/gl/dispmanx/gstglwindow_dispmanx_egl.h
@@ -25,7 +25,7 @@
 #include <gst/gl/gl.h>
 #include <gst/gl/egl/gstegl.h>
 
-#if defined (USE_EGL_RPI) && defined(__GNUC__)
+#if defined(__GNUC__)
 #ifndef __VCCOREVER__
 #define __VCCOREVER__ 0x04000000
 #endif
@@ -37,7 +37,7 @@
 
 #include <bcm_host.h>
 
-#if defined (USE_EGL_RPI) && defined(__GNUC__)
+#if defined(__GNUC__)
 #pragma GCC reset_options
 #pragma GCC diagnostic pop
 #endif
@@ -64,6 +64,7 @@
   uint32_t dp_height;
   uint32_t dp_width;
   EGL_DISPMANX_WINDOW_T native;
+  EGL_DISPMANX_WINDOW_T foreign;
 
   gint preferred_width;
   gint preferred_height;
diff --git a/gst-libs/gst/gl/egl/gstegl.h b/gst-libs/gst/gl/egl/gstegl.h
index 2a31f82..d73658c 100644
--- a/gst-libs/gst/gl/egl/gstegl.h
+++ b/gst-libs/gst/gl/egl/gstegl.h
@@ -23,7 +23,7 @@
 
 #include <gst/gl/gstglconfig.h>
 
-#if defined (USE_EGL_RPI) && defined(__GNUC__)
+#if GST_GL_HAVE_WINDOW_DISPMANX && defined(__GNUC__)
 #ifndef __VCCOREVER__
 #define __VCCOREVER__ 0x04000000
 #endif
@@ -41,7 +41,7 @@
 #include <EGL/egl.h>
 #include <EGL/eglext.h>
 
-#if defined (USE_EGL_RPI) && defined(__GNUC__)
+#if GST_GL_HAVE_WINDOW_DISPMANX && defined(__GNUC__)
 #pragma GCC reset_options
 #pragma GCC diagnostic pop
 #endif
diff --git a/gst-libs/gst/gl/egl/gsteglimage.c b/gst-libs/gst/gl/egl/gsteglimage.c
index 5d2a0a0..16441e1 100644
--- a/gst-libs/gst/gl/egl/gsteglimage.c
+++ b/gst-libs/gst/gl/egl/gsteglimage.c
@@ -317,6 +317,6 @@
 
   return gst_egl_image_new_wrapped (context, img, type,
       GST_VIDEO_GL_TEXTURE_ORIENTATION_X_NORMAL_Y_NORMAL,
-      (GstEGLImageDestroyNotify) _destroy_egl_image, NULL);
+      NULL, (GstEGLImageDestroyNotify) _destroy_egl_image);
 }
 #endif /* GST_GL_HAVE_DMABUF */
diff --git a/gst-libs/gst/gl/egl/gstglmemoryegl.c b/gst-libs/gst/gl/egl/gstglmemoryegl.c
index cde47ca..2af2288 100644
--- a/gst-libs/gst/gl/egl/gstglmemoryegl.c
+++ b/gst-libs/gst/gl/egl/gstglmemoryegl.c
@@ -173,7 +173,7 @@
     }
 
     gl_mem->image = gst_egl_image_new_wrapped (context, image, 0, 0,
-        (GstEGLImageDestroyNotify) _destroy_egl_image, NULL);
+        NULL, (GstEGLImageDestroyNotify) _destroy_egl_image);
   } else {
     gl->ActiveTexture (GL_TEXTURE0 + gl_mem->mem.plane);
     gl->BindTexture (GL_TEXTURE_2D, gl_mem->mem.tex_id);
diff --git a/gst-libs/gst/gl/gstglapi.h b/gst-libs/gst/gl/gstglapi.h
index 93b60b7..3088920 100644
--- a/gst-libs/gst/gl/gstglapi.h
+++ b/gst-libs/gst/gl/gstglapi.h
@@ -62,6 +62,9 @@
 #   include <OpenGL/gl3.h>
 #  endif
 # else
+#  if defined(_MSC_VER)
+#   include <windows.h>
+#  endif
 #  include <GL/gl.h>
 #  if defined(__WIN32__) || defined(_WIN32)
 #   include <GL/glext.h>
@@ -73,7 +76,7 @@
 #pragma GCC diagnostic pop
 #endif
 
-#ifdef WINAPI
+#if defined(WINAPI)
 #define GSTGLAPI WINAPI
 #else
 #define GSTGLAPI
@@ -171,10 +174,14 @@
 #undef GST_GL_EXT_FUNCTION
 #undef GST_GL_EXT_END
 
+GST_EXPORT
 gchar * gst_gl_api_to_string (GstGLAPI api);
+GST_EXPORT
 GstGLAPI gst_gl_api_from_string (const gchar * api_s);
 
+GST_EXPORT
 gchar * gst_gl_platform_to_string (GstGLPlatform platform);
+GST_EXPORT
 GstGLPlatform gst_gl_platform_from_string (const gchar * platform_s);
 
 G_END_DECLS
diff --git a/gst-libs/gst/gl/gstglbasefilter.h b/gst-libs/gst/gl/gstglbasefilter.h
index f893127..aa5b946 100644
--- a/gst-libs/gst/gl/gstglbasefilter.h
+++ b/gst-libs/gst/gl/gstglbasefilter.h
@@ -31,6 +31,7 @@
 
 G_BEGIN_DECLS
 
+GST_EXPORT
 GType gst_gl_base_filter_get_type(void);
 #define GST_TYPE_GL_BASE_FILTER            (gst_gl_base_filter_get_type())
 #define GST_GL_BASE_FILTER(obj)            (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_GL_BASE_FILTER,GstGLBaseFilter))
diff --git a/gst-libs/gst/gl/gstglbasememory.h b/gst-libs/gst/gl/gstglbasememory.h
index 22129d0..980eb40 100644
--- a/gst-libs/gst/gl/gstglbasememory.h
+++ b/gst-libs/gst/gl/gstglbasememory.h
@@ -30,6 +30,7 @@
 G_BEGIN_DECLS
 
 #define GST_TYPE_GL_BASE_MEMORY_ALLOCATOR (gst_gl_base_memory_allocator_get_type())
+GST_EXPORT
 GType gst_gl_base_memory_allocator_get_type(void);
 
 #define GST_IS_GL_BASE_MEMORY_ALLOCATOR(obj)              (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_GL_BASE_MEMORY_ALLOCATOR))
@@ -41,6 +42,7 @@
 
 #define GST_GL_BASE_MEMORY_CAST(mem) ((GstGLBaseMemory *)mem)
 
+GST_EXPORT
 GQuark gst_gl_base_memory_error_quark (void);
 #define GST_GL_BASE_MEMORY_ERROR (gst_gl_base_memory_error_quark ())
 
@@ -136,6 +138,7 @@
 typedef void    (*GstGLAllocationParamsFreeFunc)    (gpointer params);
 
 #define GST_TYPE_GL_ALLOCATION_PARAMS (gst_gl_allocation_params_get_type())
+GST_EXPORT
 GType gst_gl_allocation_params_get_type (void);
 
 #define GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_ALLOC (1 << 0)
@@ -195,12 +198,16 @@
                                                              GDestroyNotify notify);
 
 /* free with gst_gl_allocation_params_free */
+GST_EXPORT
 GstGLAllocationParams * gst_gl_allocation_params_copy       (GstGLAllocationParams * src);
+GST_EXPORT
 void                    gst_gl_allocation_params_free       (GstGLAllocationParams * params);
 
 /* subclass usage */
+GST_EXPORT
 void                    gst_gl_allocation_params_free_data  (GstGLAllocationParams * params);
 /* subclass usage */
+GST_EXPORT
 void                    gst_gl_allocation_params_copy_data  (GstGLAllocationParams * src,
                                                              GstGLAllocationParams * dest);
 
@@ -345,9 +352,12 @@
  */
 #define GST_GL_BASE_MEMORY_ALLOCATOR_NAME   "GLBaseMemory"
 
+GST_EXPORT
 void          gst_gl_base_memory_init_once (void);
+GST_EXPORT
 gboolean      gst_is_gl_base_memory        (GstMemory * mem);
 
+GST_EXPORT
 void          gst_gl_base_memory_init      (GstGLBaseMemory * mem,
                                             GstAllocator * allocator,
                                             GstMemory * parent,
@@ -357,12 +367,15 @@
                                             gpointer user_data,
                                             GDestroyNotify notify);
 
+GST_EXPORT
 gboolean      gst_gl_base_memory_alloc_data (GstGLBaseMemory * gl_mem);
+GST_EXPORT
 gboolean      gst_gl_base_memory_memcpy     (GstGLBaseMemory * src,
                                              GstGLBaseMemory * dest,
                                              gssize offset,
                                              gssize size);
 
+GST_EXPORT
 GstGLBaseMemory *   gst_gl_base_memory_alloc    (GstGLBaseMemoryAllocator * allocator,
                                                  GstGLAllocationParams * params);
 
diff --git a/gst-libs/gst/gl/gstglbuffer.h b/gst-libs/gst/gl/gstglbuffer.h
index e481536..c6ef6a5 100644
--- a/gst-libs/gst/gl/gstglbuffer.h
+++ b/gst-libs/gst/gl/gstglbuffer.h
@@ -30,6 +30,7 @@
 G_BEGIN_DECLS
 
 #define GST_TYPE_GL_BUFFER_ALLOCATOR (gst_gl_buffer_allocator_get_type())
+GST_EXPORT
 GType gst_gl_buffer_allocator_get_type(void);
 
 #define GST_IS_GL_BUFFER_ALLOCATOR(obj)              (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_GL_ALLOCATOR))
@@ -79,6 +80,7 @@
   gpointer                  _padding[GST_PADDING];
 };
 
+GST_EXPORT
 GstGLBufferAllocationParams *   gst_gl_buffer_allocation_params_new     (GstGLContext * context,
                                                                          gsize alloc_size,
                                                                          GstAllocationParams * alloc_params,
@@ -120,9 +122,12 @@
  */
 #define GST_GL_BUFFER_ALLOCATOR_NAME   "GLBuffer"
 
+GST_EXPORT
 void          gst_gl_buffer_init_once (void);
+GST_EXPORT
 gboolean      gst_is_gl_buffer        (GstMemory * mem);
 
+GST_EXPORT
 GstGLBuffer * gst_gl_buffer_alloc     (GstGLContext * context,
                                        guint gl_target,
                                        guint gl_usage,
diff --git a/gst-libs/gst/gl/gstglbufferpool.h b/gst-libs/gst/gl/gstglbufferpool.h
index a136955..bfe5371 100644
--- a/gst-libs/gst/gl/gstglbufferpool.h
+++ b/gst-libs/gst/gl/gstglbufferpool.h
@@ -30,6 +30,7 @@
 G_BEGIN_DECLS
 
 /* buffer pool functions */
+GST_EXPORT
 GType gst_gl_buffer_pool_get_type (void);
 #define GST_TYPE_GL_BUFFER_POOL      (gst_gl_buffer_pool_get_type())
 #define GST_IS_GL_BUFFER_POOL(obj)   (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_GL_BUFFER_POOL))
@@ -66,9 +67,12 @@
   gpointer _padding[GST_PADDING];
 };
 
+GST_EXPORT
 GstBufferPool *gst_gl_buffer_pool_new (GstGLContext * context);
 
+GST_EXPORT
 GstGLAllocationParams * gst_buffer_pool_config_get_gl_allocation_params    (GstStructure * config);
+GST_EXPORT
 void                    gst_buffer_pool_config_set_gl_allocation_params    (GstStructure * config,
                                                                             GstGLAllocationParams * params);
 
diff --git a/gst-libs/gst/gl/gstglcolorconvert.c b/gst-libs/gst/gl/gstglcolorconvert.c
index e9eb88a..908a53e 100644
--- a/gst-libs/gst/gl/gstglcolorconvert.c
+++ b/gst-libs/gst/gl/gstglcolorconvert.c
@@ -69,19 +69,19 @@
  * Y = [16..235] (of 255)
  * Cb/Cr = [16..240] (of 255)
  */
-static const gfloat from_yuv_bt601_offset[] = {-0.0625, -0.5, -0.5};
-static const gfloat from_yuv_bt601_rcoeff[] = {1.164, 0.000, 1.596};
-static const gfloat from_yuv_bt601_gcoeff[] = {1.164,-0.391,-0.813};
-static const gfloat from_yuv_bt601_bcoeff[] = {1.164, 2.018, 0.000};
+static const gfloat from_yuv_bt601_offset[] = {-0.0625f, -0.5f, -0.5f};
+static const gfloat from_yuv_bt601_rcoeff[] = {1.164f, 0.000f, 1.596f};
+static const gfloat from_yuv_bt601_gcoeff[] = {1.164f,-0.391f,-0.813f};
+static const gfloat from_yuv_bt601_bcoeff[] = {1.164f, 2.018f, 0.000f};
 
 /* BT. 709 standard with the following ranges:
  * Y = [16..235] (of 255)
  * Cb/Cr = [16..240] (of 255)
  */
-static const gfloat from_yuv_bt709_offset[] = {-0.0625, -0.5, -0.5};
-static const gfloat from_yuv_bt709_rcoeff[] = {1.164, 0.000, 1.787};
-static const gfloat from_yuv_bt709_gcoeff[] = {1.164,-0.213,-0.531};
-static const gfloat from_yuv_bt709_bcoeff[] = {1.164,2.112, 0.000};
+static const gfloat from_yuv_bt709_offset[] = {-0.0625f, -0.5f, -0.5f};
+static const gfloat from_yuv_bt709_rcoeff[] = {1.164f, 0.000f, 1.787f};
+static const gfloat from_yuv_bt709_gcoeff[] = {1.164f,-0.213f,-0.531f};
+static const gfloat from_yuv_bt709_bcoeff[] = {1.164f,2.112f, 0.000f};
 
 #define RGB_TO_YUV_COEFFICIENTS \
       "uniform vec3 offset;\n" \
@@ -94,19 +94,19 @@
  * Y = [16..235] (of 255)
  * Cb/Cr = [16..240] (of 255)
  */
-static const gfloat from_rgb_bt601_offset[] = {0.0625, 0.5, 0.5};
-static const gfloat from_rgb_bt601_ycoeff[] = {0.256816, 0.504154, 0.0979137};
-static const gfloat from_rgb_bt601_ucoeff[] = {-0.148246, -0.29102, 0.439266};
-static const gfloat from_rgb_bt601_vcoeff[] = {0.439271, -0.367833, -0.071438};
+static const gfloat from_rgb_bt601_offset[] = {0.0625f, 0.5f, 0.5f};
+static const gfloat from_rgb_bt601_ycoeff[] = {0.256816f, 0.504154f, 0.0979137f};
+static const gfloat from_rgb_bt601_ucoeff[] = {-0.148246f, -0.29102f, 0.439266f};
+static const gfloat from_rgb_bt601_vcoeff[] = {0.439271f, -0.367833f, -0.071438f};
 
 /* BT. 709 standard with the following ranges:
  * Y = [16..235] (of 255)
  * Cb/Cr = [16..240] (of 255)
  */
-static const gfloat from_rgb_bt709_offset[] = {0.0625, 0.5, 0.5};
-static const gfloat from_rgb_bt709_ycoeff[] = { 0.182604, 0.614526, 0.061976 };
-static const gfloat from_rgb_bt709_ucoeff[] = { -0.100640, -0.338688, 0.439327 };
-static const gfloat from_rgb_bt709_vcoeff[] = { 0.440654, -0.400285, -0.040370 };
+static const gfloat from_rgb_bt709_offset[] = {0.0625f, 0.5f, 0.5f};
+static const gfloat from_rgb_bt709_ycoeff[] = {0.182604f, 0.614526f, 0.061976f};
+static const gfloat from_rgb_bt709_ucoeff[] = {-0.100640f, -0.338688f, 0.439327f};
+static const gfloat from_rgb_bt709_vcoeff[] = {0.440654f, -0.400285f, -0.040370f};
 
 /* GRAY16 to RGB conversion
  *  data transfered as GL_LUMINANCE_ALPHA then convert back to GRAY16 
diff --git a/gst-libs/gst/gl/gstglcolorconvert.h b/gst-libs/gst/gl/gstglcolorconvert.h
index d978e7e..efae55e 100644
--- a/gst-libs/gst/gl/gstglcolorconvert.h
+++ b/gst-libs/gst/gl/gstglcolorconvert.h
@@ -28,6 +28,7 @@
 
 G_BEGIN_DECLS
 
+GST_EXPORT
 GType gst_gl_color_convert_get_type (void);
 #define GST_TYPE_GL_COLOR_CONVERT (gst_gl_color_convert_get_type())
 #define GST_GL_COLOR_CONVERT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_GL_COLOR_CONVERT,GstGLColorConvert))
@@ -112,22 +113,28 @@
     "framerate = " GST_VIDEO_FPS_RANGE ", "                             \
     "texture-target = (string) { 2D, rectangle, external-oes }"
 
+GST_EXPORT
 GstGLColorConvert * gst_gl_color_convert_new (GstGLContext * context);
 
+GST_EXPORT
 GstCaps *   gst_gl_color_convert_transform_caps (GstGLContext * convert,
                                                  GstPadDirection direction,
                                                  GstCaps * caps,
                                                  GstCaps * filter);
+GST_EXPORT
 GstCaps *   gst_gl_color_convert_fixate_caps    (GstGLContext * convert,
                                                  GstPadDirection direction,
                                                  GstCaps * caps,
                                                  GstCaps * other);
+GST_EXPORT
 gboolean    gst_gl_color_convert_set_caps    (GstGLColorConvert * convert,
                                               GstCaps           * in_caps,
                                               GstCaps           * out_caps);
+GST_EXPORT
 gboolean    gst_gl_color_convert_decide_allocation (GstGLColorConvert   * convert,
                                                     GstQuery            * query);
 
+GST_EXPORT
 GstBuffer * gst_gl_color_convert_perform    (GstGLColorConvert * convert, GstBuffer * inbuf);
 
 G_END_DECLS
diff --git a/gst-libs/gst/gl/gstglcontext.h b/gst-libs/gst/gl/gstglcontext.h
index 83e159d..699a73f 100644
--- a/gst-libs/gst/gl/gstglcontext.h
+++ b/gst-libs/gst/gl/gstglcontext.h
@@ -33,9 +33,11 @@
 #define GST_IS_GL_CONTEXT(o)        (G_TYPE_CHECK_INSTANCE_TYPE((o), GST_GL_TYPE_CONTEXT))
 #define GST_IS_GL_CONTEXT_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE((k), GST_GL_TYPE_CONTEXT))
 #define GST_GL_CONTEXT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS((o), GST_GL_TYPE_CONTEXT, GstGLContextClass))
+GST_EXPORT
 GType gst_gl_context_get_type     (void);
 
 #define GST_GL_CONTEXT_ERROR (gst_gl_context_error_quark ())
+GST_EXPORT
 GQuark gst_gl_context_error_quark (void);
 
 /**
@@ -115,45 +117,71 @@
 
 /* methods */
 
+GST_EXPORT
 GstGLContext * gst_gl_context_new  (GstGLDisplay *display);
+GST_EXPORT
 GstGLContext * gst_gl_context_new_wrapped (GstGLDisplay *display,
                                            guintptr handle,
                                            GstGLPlatform context_type,
                                            GstGLAPI available_apis);
 
+GST_EXPORT
 gboolean      gst_gl_context_activate         (GstGLContext *context, gboolean activate);
+GST_EXPORT
 GThread *     gst_gl_context_get_thread       (GstGLContext *context);
+GST_EXPORT
 GstGLContext * gst_gl_context_get_current     (void);
 
+GST_EXPORT
 GstGLDisplay * gst_gl_context_get_display (GstGLContext *context);
+GST_EXPORT
 gpointer      gst_gl_context_get_proc_address (GstGLContext *context, const gchar *name);
+GST_EXPORT
 GstGLPlatform gst_gl_context_get_gl_platform  (GstGLContext *context);
+GST_EXPORT
 GstGLAPI      gst_gl_context_get_gl_api       (GstGLContext *context);
+GST_EXPORT
 guintptr      gst_gl_context_get_gl_context   (GstGLContext *context);
+GST_EXPORT
 gboolean      gst_gl_context_can_share        (GstGLContext * context, GstGLContext *other_context);
 
+GST_EXPORT
 gboolean      gst_gl_context_create           (GstGLContext *context, GstGLContext *other_context, GError ** error);
+GST_EXPORT
 void          gst_gl_context_destroy          (GstGLContext *context);
 
+GST_EXPORT
 gpointer      gst_gl_context_default_get_proc_address (GstGLAPI gl_api, const gchar *name);
+GST_EXPORT
 gpointer      gst_gl_context_get_proc_address_with_platform (GstGLPlatform context_type, GstGLAPI gl_api, const gchar *name);
 
+GST_EXPORT
 gboolean      gst_gl_context_set_window (GstGLContext *context, GstGLWindow *window);
+GST_EXPORT
 GstGLWindow * gst_gl_context_get_window (GstGLContext *context);
 
+GST_EXPORT
 void          gst_gl_context_get_gl_version (GstGLContext *context, gint *maj, gint *min);
+GST_EXPORT
 gboolean      gst_gl_context_check_gl_version (GstGLContext * context, GstGLAPI api, gint maj, gint min);
+GST_EXPORT
 gboolean      gst_gl_context_check_feature (GstGLContext *context, const gchar *feature);
 
+GST_EXPORT
 guintptr      gst_gl_context_get_current_gl_context     (GstGLPlatform context_type);
+GST_EXPORT
 GstGLAPI      gst_gl_context_get_current_gl_api         (GstGLPlatform platform, guint *major, guint *minor);
 
+GST_EXPORT
 gboolean      gst_gl_context_is_shared                  (GstGLContext * context);
+GST_EXPORT
 void          gst_gl_context_set_shared_with            (GstGLContext * context, GstGLContext * share);
 
+GST_EXPORT
 gboolean gst_gl_context_fill_info (GstGLContext * context, GError ** error);
 
 /* FIXME: remove */
+GST_EXPORT
 void gst_gl_context_thread_add (GstGLContext * context,
     GstGLContextThreadFunc func, gpointer data);
 
diff --git a/gst-libs/gst/gl/gstglcontrolbindingproxy.h b/gst-libs/gst/gl/gstglcontrolbindingproxy.h
index b3a9310..8a205a8 100644
--- a/gst-libs/gst/gl/gstglcontrolbindingproxy.h
+++ b/gst-libs/gst/gl/gstglcontrolbindingproxy.h
@@ -25,6 +25,7 @@
 
 G_BEGIN_DECLS
 
+GST_EXPORT
 GType gst_gl_control_binding_proxy_get_type (void);
 #define GST_TYPE_GL_CONTROL_BINDING_PROXY  (gst_gl_control_binding_proxy_get_type())
 
@@ -44,11 +45,13 @@
   GstControlBindingClass parent_class;
 };
 
+GST_EXPORT
 GstControlBinding *     gst_gl_control_binding_proxy_new            (GstObject * object,
                                                                      const gchar * property_name,
                                                                      GstObject * ref_object,
                                                                      const gchar * ref_property_name);
 
+GST_EXPORT
 void                    gst_gl_object_add_control_binding_proxy     (GstObject * object,
                                                                      GstObject * ref_object,
                                                                      const gchar * prop);
diff --git a/gst-libs/gst/gl/gstgldebug.h b/gst-libs/gst/gl/gstgldebug.h
index f131428..36ba3a6 100644
--- a/gst-libs/gst/gl/gstgldebug.h
+++ b/gst-libs/gst/gl/gstgldebug.h
@@ -55,11 +55,17 @@
   gpointer _padding[GST_PADDING];
 };
 
+GST_EXPORT
 GstGLAsyncDebug *   gst_gl_async_debug_new                      (void);
+GST_EXPORT
 void                gst_gl_async_debug_free                     (GstGLAsyncDebug * ad);
+GST_EXPORT
 void                gst_gl_async_debug_init                     (GstGLAsyncDebug * ad);
+GST_EXPORT
 void                gst_gl_async_debug_unset                    (GstGLAsyncDebug * ad);
+GST_EXPORT
 void                gst_gl_async_debug_freeze                   (GstGLAsyncDebug * ad);
+GST_EXPORT
 void                gst_gl_async_debug_thaw                     (GstGLAsyncDebug * ad);
 
 /**
@@ -113,9 +119,12 @@
 
 #if !defined(GST_DISABLE_GST_DEBUG)
 
+GST_EXPORT
 void        gst_gl_insert_debug_marker              (GstGLContext * context,
                                                      const gchar * format, ...) G_GNUC_PRINTF (2, 3);
+GST_EXPORT
 void        gst_gl_async_debug_output_log_msg       (GstGLAsyncDebug * ad);
+GST_EXPORT
 void        gst_gl_async_debug_store_log_msg        (GstGLAsyncDebug * ad,
                                                      GstDebugCategory * cat,
                                                      GstDebugLevel level,
@@ -124,6 +133,7 @@
                                                      gint line,
                                                      GObject * object,
                                                      const gchar * format, ...) G_GNUC_PRINTF (8, 9);
+GST_EXPORT
 void        gst_gl_async_debug_store_log_msg_valist (GstGLAsyncDebug * ad,
                                                      GstDebugCategory * cat,
                                                      GstDebugLevel level,
diff --git a/gst-libs/gst/gl/gstgldisplay.h b/gst-libs/gst/gl/gstgldisplay.h
index bc00b68..a02e904 100644
--- a/gst-libs/gst/gl/gstgldisplay.h
+++ b/gst-libs/gst/gl/gstgldisplay.h
@@ -30,6 +30,7 @@
 
 G_BEGIN_DECLS
 
+GST_EXPORT
 GType gst_gl_display_get_type (void);
 
 #define GST_TYPE_GL_DISPLAY             (gst_gl_display_get_type())
@@ -90,26 +91,37 @@
   gpointer _padding[GST_PADDING];
 };
 
+GST_EXPORT
 GstGLDisplay *gst_gl_display_new (void);
 
 #define gst_gl_display_lock(display)        GST_OBJECT_LOCK (display)
 #define gst_gl_display_unlock(display)      GST_OBJECT_UNLOCK (display)
 
+GST_EXPORT
 guintptr         gst_gl_display_get_handle             (GstGLDisplay * display);
+GST_EXPORT
 GstGLDisplayType gst_gl_display_get_handle_type        (GstGLDisplay * display);
+GST_EXPORT
 void             gst_gl_display_filter_gl_api          (GstGLDisplay * display,
                                                         GstGLAPI gl_api);
+GST_EXPORT
 GstGLAPI         gst_gl_display_get_gl_api             (GstGLDisplay * display);
+GST_EXPORT
 GstGLAPI         gst_gl_display_get_gl_api_unlocked    (GstGLDisplay * display);
 
 #define GST_GL_DISPLAY_CONTEXT_TYPE "gst.gl.GLDisplay"
+GST_EXPORT
 void     gst_context_set_gl_display (GstContext * context, GstGLDisplay * display);
+GST_EXPORT
 gboolean gst_context_get_gl_display (GstContext * context, GstGLDisplay ** display);
 
+GST_EXPORT
 gboolean  gst_gl_display_create_context (GstGLDisplay * display,
     GstGLContext * other_context, GstGLContext ** p_context, GError **error);
+GST_EXPORT
 GstGLContext * gst_gl_display_get_gl_context_for_thread (GstGLDisplay * display,
     GThread * thread);
+GST_EXPORT
 gboolean gst_gl_display_add_context (GstGLDisplay * display,
     GstGLContext * context);
 
diff --git a/gst-libs/gst/gl/gstglfeature.h b/gst-libs/gst/gl/gstglfeature.h
index f1ae142..b75c3e1 100644
--- a/gst-libs/gst/gl/gstglfeature.h
+++ b/gst-libs/gst/gl/gstglfeature.h
@@ -94,7 +94,7 @@
   const GstGLFeatureFunction *functions;
 };
 
-gboolean
+GST_EXPORT gboolean
 gst_gl_check_extension (const char *name, const gchar * ext);
 
 G_GNUC_INTERNAL gboolean
diff --git a/gst-libs/gst/gl/gstglfilter.h b/gst-libs/gst/gl/gstglfilter.h
index cdebe57..6538abd 100644
--- a/gst-libs/gst/gl/gstglfilter.h
+++ b/gst-libs/gst/gl/gstglfilter.h
@@ -30,6 +30,7 @@
 
 G_BEGIN_DECLS
 
+GST_EXPORT
 GType gst_gl_filter_get_type(void);
 #define GST_TYPE_GL_FILTER            (gst_gl_filter_get_type())
 #define GST_GL_FILTER(obj)            (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_GL_FILTER,GstGLFilter))
@@ -120,16 +121,20 @@
   gpointer                      _padding[GST_PADDING];
 };
 
+GST_EXPORT
 gboolean gst_gl_filter_filter_texture (GstGLFilter * filter, GstBuffer * inbuf,
                                        GstBuffer * outbuf);
 
+GST_EXPORT
 gboolean gst_gl_filter_render_to_target             (GstGLFilter *filter,
                                                      GstGLMemory * input,
                                                      GstGLMemory * output,
                                                      GstGLFilterRenderFunc func,
                                                      gpointer data);
 
+GST_EXPORT
 void gst_gl_filter_draw_fullscreen_quad             (GstGLFilter *filter);
+GST_EXPORT
 void gst_gl_filter_render_to_target_with_shader     (GstGLFilter * filter,
                                                      GstGLMemory * input,
                                                      GstGLMemory * output,
diff --git a/gst-libs/gst/gl/gstglformat.h b/gst-libs/gst/gl/gstglformat.h
index e4e6e37..9bcb302 100644
--- a/gst-libs/gst/gl/gstglformat.h
+++ b/gst-libs/gst/gl/gstglformat.h
@@ -97,21 +97,31 @@
   GST_GL_DEPTH24_STENCIL8               = 0x88F0,
 } GstGLFormat;
 
+GST_EXPORT
 guint                   gst_gl_format_type_n_bytes                  (guint format,
                                                                      guint type);
+GST_EXPORT
 guint                   gst_gl_texture_type_n_bytes                 (GstVideoGLTextureType tex_format);
+GST_EXPORT
 guint                   gst_gl_format_from_gl_texture_type          (GstVideoGLTextureType tex_format);
+GST_EXPORT
 GstVideoGLTextureType   gst_gl_texture_type_from_format             (GstGLContext * context,
                                                                      GstVideoFormat v_format,
                                                                      guint plane);
+GST_EXPORT
 guint                   gst_gl_sized_gl_format_from_gl_format_type  (GstGLContext * context,
                                                                      guint format,
                                                                      guint type);
 
+GST_EXPORT
 GstGLTextureTarget      gst_gl_texture_target_from_string           (const gchar * str);
+GST_EXPORT
 const gchar *           gst_gl_texture_target_to_string             (GstGLTextureTarget target);
+GST_EXPORT
 guint                   gst_gl_texture_target_to_gl                 (GstGLTextureTarget target);
+GST_EXPORT
 GstGLTextureTarget      gst_gl_texture_target_from_gl               (guint target);
+GST_EXPORT
 const gchar *           gst_gl_texture_target_to_buffer_pool_option (GstGLTextureTarget target);
 
 G_END_DECLS
diff --git a/gst-libs/gst/gl/gstglframebuffer.h b/gst-libs/gst/gl/gstglframebuffer.h
index 6298af1..99ea4ea 100644
--- a/gst-libs/gst/gl/gstglframebuffer.h
+++ b/gst-libs/gst/gl/gstglframebuffer.h
@@ -25,6 +25,7 @@
 
 G_BEGIN_DECLS
 
+GST_EXPORT
 GType gst_gl_framebuffer_get_type (void);
 
 #define GST_TYPE_GL_FRAMEBUFFER             (gst_gl_framebuffer_get_type())
@@ -67,25 +68,34 @@
   gpointer          _padding[GST_PADDING];
 };
 
+GST_EXPORT
 GstGLFramebuffer *      gst_gl_framebuffer_new                      (GstGLContext *context);
+GST_EXPORT
 GstGLFramebuffer *      gst_gl_framebuffer_new_with_default_depth   (GstGLContext *context,
                                                                      guint width,
                                                                      guint height);
 
+GST_EXPORT
 guint                   gst_gl_framebuffer_get_id                   (GstGLFramebuffer * fb);
 
+GST_EXPORT
 void                    gst_gl_framebuffer_attach                   (GstGLFramebuffer * fb,
                                                                      guint attachment_point,
                                                                      GstGLBaseMemory * mem);
+GST_EXPORT
 void                    gst_gl_framebuffer_bind                     (GstGLFramebuffer * fb);
+GST_EXPORT
 void                    gst_gl_context_clear_framebuffer            (GstGLContext * context);
 
+GST_EXPORT
 void                    gst_gl_framebuffer_get_effective_dimensions (GstGLFramebuffer * fb,
                                                                      guint * width,
                                                                      guint * height);
 
+GST_EXPORT
 gboolean                gst_gl_context_check_framebuffer_status     (GstGLContext * context);
 
+GST_EXPORT
 gboolean                gst_gl_framebuffer_draw_to_texture          (GstGLFramebuffer * fb,
                                                                      GstGLMemory * mem,
                                                                      GstGLFramebufferFunc cb,
diff --git a/gst-libs/gst/gl/gstglmemory.h b/gst-libs/gst/gl/gstglmemory.h
index d632564..6cdcdce 100644
--- a/gst-libs/gst/gl/gstglmemory.h
+++ b/gst-libs/gst/gl/gstglmemory.h
@@ -31,6 +31,7 @@
 G_BEGIN_DECLS
 
 #define GST_TYPE_GL_MEMORY_ALLOCATOR (gst_gl_memory_allocator_get_type())
+GST_EXPORT
 GType gst_gl_memory_allocator_get_type(void);
 
 #define GST_IS_GL_MEMORY_ALLOCATOR(obj)              (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_GL_MEMORY_ALLOCATOR))
@@ -101,6 +102,7 @@
   gpointer               _padding[GST_PADDING];
 };
 
+GST_EXPORT
 gboolean        gst_gl_video_allocation_params_init_full        (GstGLVideoAllocationParams * params,
                                                                  gsize struct_size,
                                                                  guint alloc_flags,
@@ -117,6 +119,7 @@
                                                                  gpointer gl_handle,
                                                                  gpointer user_data,
                                                                  GDestroyNotify notify);
+GST_EXPORT
 GstGLVideoAllocationParams * gst_gl_video_allocation_params_new (GstGLContext * context,
                                                                  GstAllocationParams * alloc_params,
                                                                  GstVideoInfo * v_info,
@@ -124,6 +127,7 @@
                                                                  GstVideoAlignment * valign,
                                                                  GstGLTextureTarget target,
                                                                  GstVideoGLTextureType tex_type);
+GST_EXPORT
 GstGLVideoAllocationParams * gst_gl_video_allocation_params_new_wrapped_data    (GstGLContext * context,
                                                                                  GstAllocationParams * alloc_params,
                                                                                  GstVideoInfo * v_info,
@@ -135,6 +139,7 @@
                                                                                  gpointer user_data,
                                                                                  GDestroyNotify notify);
 
+GST_EXPORT
 GstGLVideoAllocationParams * gst_gl_video_allocation_params_new_wrapped_texture (GstGLContext * context,
                                                                                  GstAllocationParams * alloc_params,
                                                                                  GstVideoInfo * v_info,
@@ -146,6 +151,7 @@
                                                                                  gpointer user_data,
                                                                                  GDestroyNotify notify);
 
+GST_EXPORT
 GstGLVideoAllocationParams * gst_gl_video_allocation_params_new_wrapped_gl_handle (GstGLContext * context,
                                                                                  GstAllocationParams * alloc_params,
                                                                                  GstVideoInfo * v_info,
@@ -158,8 +164,10 @@
                                                                                  GDestroyNotify notify);
 
 /* subclass usage */
+GST_EXPORT
 void            gst_gl_video_allocation_params_free_data    (GstGLVideoAllocationParams * params);
 /* subclass usage */
+GST_EXPORT
 void            gst_gl_video_allocation_params_copy_data    (GstGLVideoAllocationParams * src_vid,
                                                              GstGLVideoAllocationParams * dest_vid);
 
@@ -202,9 +210,12 @@
  */
 #define GST_GL_MEMORY_ALLOCATOR_NAME   "GLMemory"
 
+GST_EXPORT
 void            gst_gl_memory_init_once (void);
+GST_EXPORT
 gboolean        gst_is_gl_memory (GstMemory * mem);
 
+GST_EXPORT
 void            gst_gl_memory_init              (GstGLMemory * mem,
                                                  GstAllocator * allocator,
                                                  GstMemory * parent,
@@ -218,12 +229,14 @@
                                                  gpointer user_data,
                                                  GDestroyNotify notify);
 
+GST_EXPORT
 gboolean        gst_gl_memory_copy_into         (GstGLMemory *gl_mem,
                                                  guint tex_id,
                                                  GstGLTextureTarget target,
                                                  GstVideoGLTextureType tex_type,
                                                  gint width,
                                                  gint height);
+GST_EXPORT
 gboolean        gst_gl_memory_copy_teximage     (GstGLMemory * src,
                                                  guint tex_id,
                                                  GstGLTextureTarget out_target,
@@ -231,18 +244,26 @@
                                                  gint width,
                                                  gint height);
 
+GST_EXPORT
 gboolean        gst_gl_memory_read_pixels       (GstGLMemory * gl_mem,
                                                  gpointer read_pointer);
+GST_EXPORT
 void            gst_gl_memory_texsubimage       (GstGLMemory * gl_mem,
                                                  gpointer read_pointer);
 
 /* accessors */
+GST_EXPORT
 gint                    gst_gl_memory_get_texture_width     (GstGLMemory * gl_mem);
+GST_EXPORT
 gint                    gst_gl_memory_get_texture_height    (GstGLMemory * gl_mem);
+GST_EXPORT
 GstVideoGLTextureType   gst_gl_memory_get_texture_type      (GstGLMemory * gl_mem);
+GST_EXPORT
 GstGLTextureTarget      gst_gl_memory_get_texture_target    (GstGLMemory * gl_mem);
+GST_EXPORT
 guint                   gst_gl_memory_get_texture_id        (GstGLMemory * gl_mem);
 
+GST_EXPORT
 gboolean                gst_gl_memory_setup_buffer          (GstGLMemoryAllocator * allocator,
                                                              GstBuffer * buffer,
                                                              GstGLVideoAllocationParams * params,
@@ -250,6 +271,7 @@
                                                              gpointer *wrapped_data,
                                                              gsize n_wrapped_pointers);
 
+GST_EXPORT
 GstGLMemoryAllocator *  gst_gl_memory_allocator_get_default (GstGLContext *context);
 
 G_END_DECLS
diff --git a/gst-libs/gst/gl/gstglmemorypbo.h b/gst-libs/gst/gl/gstglmemorypbo.h
index 830c0f4..66ee6b8 100644
--- a/gst-libs/gst/gl/gstglmemorypbo.h
+++ b/gst-libs/gst/gl/gstglmemorypbo.h
@@ -32,6 +32,7 @@
 G_BEGIN_DECLS
 
 #define GST_TYPE_GL_MEMORY_PBO_ALLOCATOR (gst_gl_memory_pbo_allocator_get_type())
+GST_EXPORT
 GType gst_gl_memory_pbo_allocator_get_type(void);
 
 #define GST_IS_GL_MEMORY_PBO_ALLOCATOR(obj)              (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_GL_MEMORY_PBO_ALLOCATOR))
@@ -64,12 +65,17 @@
  */
 #define GST_GL_MEMORY_PBO_ALLOCATOR_NAME   "GLMemoryPBO"
 
+GST_EXPORT
 void          gst_gl_memory_pbo_init_once               (void);
+GST_EXPORT
 gboolean      gst_is_gl_memory_pbo                      (GstMemory * mem);
 
+GST_EXPORT
 void          gst_gl_memory_pbo_download_transfer       (GstGLMemoryPBO * gl_mem);
+GST_EXPORT
 void          gst_gl_memory_pbo_upload_transfer         (GstGLMemoryPBO * gl_mem);
 
+GST_EXPORT
 gboolean      gst_gl_memory_pbo_copy_into_texture       (GstGLMemoryPBO *gl_mem,
                                                          guint tex_id,
                                                          GstGLTextureTarget target,
diff --git a/gst-libs/gst/gl/gstgloverlaycompositor.h b/gst-libs/gst/gl/gstgloverlaycompositor.h
index dc8434a..0f4f1b2 100644
--- a/gst-libs/gst/gl/gstgloverlaycompositor.h
+++ b/gst-libs/gst/gl/gstgloverlaycompositor.h
@@ -33,6 +33,7 @@
 
 G_BEGIN_DECLS
 
+GST_EXPORT
 GType gst_gl_overlay_compositor_get_type (void);
 
 /**
@@ -71,15 +72,20 @@
   gpointer _padding[GST_PADDING];
 };
 
+GST_EXPORT
 GstGLOverlayCompositor *gst_gl_overlay_compositor_new (GstGLContext * context);
 
+GST_EXPORT
 void gst_gl_overlay_compositor_free_overlays (GstGLOverlayCompositor * compositor);
 
+GST_EXPORT
 void gst_gl_overlay_compositor_upload_overlays (GstGLOverlayCompositor * compositor,
         GstBuffer * buf);
 
+GST_EXPORT
 void gst_gl_overlay_compositor_draw_overlays (GstGLOverlayCompositor * compositor);
 
+GST_EXPORT
 GstCaps * gst_gl_overlay_compositor_add_caps(GstCaps * caps);
 
 G_END_DECLS
diff --git a/gst-libs/gst/gl/gstglquery.h b/gst-libs/gst/gl/gstglquery.h
index 33777d4..c364a0b 100644
--- a/gst-libs/gst/gl/gstglquery.h
+++ b/gst-libs/gst/gl/gstglquery.h
@@ -47,17 +47,25 @@
   gpointer          _padding[GST_PADDING];
 };
 
+GST_EXPORT
 void                gst_gl_query_init               (GstGLQuery * query,
                                                      GstGLContext * context,
                                                      GstGLQueryType query_type);
+GST_EXPORT
 void                gst_gl_query_unset              (GstGLQuery * query);
+GST_EXPORT
 GstGLQuery *        gst_gl_query_new                (GstGLContext * context,
                                                      GstGLQueryType query_type);
+GST_EXPORT
 void                gst_gl_query_free               (GstGLQuery * query);
 
+GST_EXPORT
 void                gst_gl_query_start              (GstGLQuery * query);
+GST_EXPORT
 void                gst_gl_query_end                (GstGLQuery * query);
+GST_EXPORT
 void                gst_gl_query_counter            (GstGLQuery * query);
+GST_EXPORT
 guint64             gst_gl_query_result             (GstGLQuery * query);
 
 #define gst_gl_query_start_log_valist(query,cat,level,object,format,varargs) \
diff --git a/gst-libs/gst/gl/gstglshader.c b/gst-libs/gst/gl/gstglshader.c
index 9f09236..c161308 100644
--- a/gst-libs/gst/gl/gstglshader.c
+++ b/gst-libs/gst/gl/gstglshader.c
@@ -48,22 +48,22 @@
 
 typedef struct _GstGLShaderVTable
 {
-  GLuint GSTGLAPI (*CreateProgram) (void);
-  void GSTGLAPI (*DeleteProgram) (GLuint program);
-  void GSTGLAPI (*UseProgram) (GLuint program);
-  void GSTGLAPI (*GetAttachedShaders) (GLuint program, GLsizei maxcount,
+  GLuint (GSTGLAPI *CreateProgram) (void);
+  void (GSTGLAPI *DeleteProgram) (GLuint program);
+  void (GSTGLAPI *UseProgram) (GLuint program);
+  void (GSTGLAPI *GetAttachedShaders) (GLuint program, GLsizei maxcount,
       GLsizei * count, GLuint * shaders);
 
-  GLuint GSTGLAPI (*CreateShader) (GLenum shaderType);
-  void GSTGLAPI (*DeleteShader) (GLuint shader);
-  void GSTGLAPI (*AttachShader) (GLuint program, GLuint shader);
-  void GSTGLAPI (*DetachShader) (GLuint program, GLuint shader);
+  GLuint (GSTGLAPI *CreateShader) (GLenum shaderType);
+  void (GSTGLAPI *DeleteShader) (GLuint shader);
+  void (GSTGLAPI *AttachShader) (GLuint program, GLuint shader);
+  void (GSTGLAPI *DetachShader) (GLuint program, GLuint shader);
 
-  void GSTGLAPI (*GetShaderiv) (GLuint program, GLenum pname, GLint * params);
-  void GSTGLAPI (*GetProgramiv) (GLuint program, GLenum pname, GLint * params);
-  void GSTGLAPI (*GetShaderInfoLog) (GLuint shader, GLsizei maxLength,
+  void (GSTGLAPI *GetShaderiv) (GLuint program, GLenum pname, GLint * params);
+  void (GSTGLAPI *GetProgramiv) (GLuint program, GLenum pname, GLint * params);
+  void (GSTGLAPI *GetShaderInfoLog) (GLuint shader, GLsizei maxLength,
       GLsizei * length, char *log);
-  void GSTGLAPI (*GetProgramInfoLog) (GLuint shader, GLsizei maxLength,
+  void (GSTGLAPI *GetProgramInfoLog) (GLuint shader, GLsizei maxLength,
       GLsizei * length, char *log);
 } GstGLShaderVTable;
 
diff --git a/gst-libs/gst/gl/gstglshader.h b/gst-libs/gst/gl/gstglshader.h
index 2164f21..96ad48b 100644
--- a/gst-libs/gst/gl/gstglshader.h
+++ b/gst-libs/gst/gl/gstglshader.h
@@ -26,6 +26,7 @@
 
 G_BEGIN_DECLS
 
+GST_EXPORT
 GType gst_gl_shader_get_type (void);
 #define GST_GL_TYPE_SHADER         (gst_gl_shader_get_type())
 #define GST_GL_SHADER(o)           (G_TYPE_CHECK_INSTANCE_CAST((o), GST_GL_TYPE_SHADER, GstGLShader))
@@ -51,60 +52,104 @@
   GstObjectClass parent_class;
 };
 
+GST_EXPORT
 GstGLShader * gst_gl_shader_new                     (GstGLContext *context);
+GST_EXPORT
 GstGLShader * gst_gl_shader_new_with_stages         (GstGLContext * context, GError ** error, ...);
+GST_EXPORT
 GstGLShader * gst_gl_shader_new_link_with_stages    (GstGLContext * context, GError ** error, ...);
+GST_EXPORT
 GstGLShader * gst_gl_shader_new_default             (GstGLContext * context, GError ** error);
 
+GST_EXPORT
 gboolean gst_gl_shader_attach                       (GstGLShader * shader, GstGLSLStage * stage);
+GST_EXPORT
 gboolean gst_gl_shader_attach_unlocked              (GstGLShader * shader, GstGLSLStage * stage);
 
+GST_EXPORT
 void     gst_gl_shader_detach                       (GstGLShader * shader, GstGLSLStage * stage);
+GST_EXPORT
 void     gst_gl_shader_detach_unlocked              (GstGLShader * shader, GstGLSLStage * stage);
 
+GST_EXPORT
 gboolean gst_gl_shader_compile_attach_stage         (GstGLShader * shader,
                                                      GstGLSLStage *stage,
                                                      GError ** error);
+GST_EXPORT
 gboolean gst_gl_shader_link                         (GstGLShader * shader, GError ** error);
+GST_EXPORT
 gboolean gst_gl_shader_is_linked                    (GstGLShader *shader);
 
+GST_EXPORT
 int gst_gl_shader_get_program_handle                (GstGLShader * shader);
 
+GST_EXPORT
 void gst_gl_shader_release                          (GstGLShader *shader);
+GST_EXPORT
 void gst_gl_shader_release_unlocked                 (GstGLShader * shader);
+GST_EXPORT
 void gst_gl_shader_use                              (GstGLShader *shader);
+GST_EXPORT
 void gst_gl_context_clear_shader                    (GstGLContext *context);
 
+GST_EXPORT
 void gst_gl_shader_set_uniform_1i           (GstGLShader *shader, const gchar *name, gint value);
+GST_EXPORT
 void gst_gl_shader_set_uniform_1iv          (GstGLShader *shader, const gchar *name, guint count, gint *value);
+GST_EXPORT
 void gst_gl_shader_set_uniform_1f           (GstGLShader *shader, const gchar *name, gfloat value);
+GST_EXPORT
 void gst_gl_shader_set_uniform_1fv          (GstGLShader *shader, const gchar *name, guint count, gfloat *value);
+GST_EXPORT
 void gst_gl_shader_set_uniform_2i           (GstGLShader *shader, const gchar *name, gint v0,     gint v1);
+GST_EXPORT
 void gst_gl_shader_set_uniform_2iv          (GstGLShader *shader, const gchar *name, guint count, gint *value);
+GST_EXPORT
 void gst_gl_shader_set_uniform_2f           (GstGLShader *shader, const gchar *name, gfloat v0,   gfloat v1);
+GST_EXPORT
 void gst_gl_shader_set_uniform_2fv          (GstGLShader *shader, const gchar *name, guint count, gfloat *value);
+GST_EXPORT
 void gst_gl_shader_set_uniform_3i           (GstGLShader *shader, const gchar *name, gint v0,     gint v1,       gint v2);
+GST_EXPORT
 void gst_gl_shader_set_uniform_3iv          (GstGLShader *shader, const gchar *name, guint count, gint * value);
+GST_EXPORT
 void gst_gl_shader_set_uniform_3f           (GstGLShader *shader, const gchar *name, gfloat v0,   gfloat v1,     gfloat v2);
+GST_EXPORT
 void gst_gl_shader_set_uniform_3fv          (GstGLShader *shader, const gchar *name, guint count, gfloat *value);
+GST_EXPORT
 void gst_gl_shader_set_uniform_4i           (GstGLShader *shader, const gchar *name, gint v0,     gint v1,       gint v2,   gint v3);
+GST_EXPORT
 void gst_gl_shader_set_uniform_4iv          (GstGLShader *shader, const gchar *name, guint count, gint *value);
+GST_EXPORT
 void gst_gl_shader_set_uniform_4f           (GstGLShader *shader, const gchar *name, gfloat v0,   gfloat v1,     gfloat v2, gfloat v3);
+GST_EXPORT
 void gst_gl_shader_set_uniform_4fv          (GstGLShader *shader, const gchar *name, guint count, gfloat *value);
+GST_EXPORT
 void gst_gl_shader_set_uniform_matrix_2fv   (GstGLShader *shader, const gchar *name, gint count, gboolean transpose, const gfloat* value);
+GST_EXPORT
 void gst_gl_shader_set_uniform_matrix_3fv   (GstGLShader *shader, const gchar *name, gint count, gboolean transpose, const gfloat* value);
+GST_EXPORT
 void gst_gl_shader_set_uniform_matrix_4fv   (GstGLShader *shader, const gchar *name, gint count, gboolean transpose, const gfloat* value);
 #if GST_GL_HAVE_OPENGL
+GST_EXPORT
 void gst_gl_shader_set_uniform_matrix_2x3fv (GstGLShader *shader, const gchar *name, gint count, gboolean transpose, const gfloat* value);
+GST_EXPORT
 void gst_gl_shader_set_uniform_matrix_2x4fv (GstGLShader *shader, const gchar *name, gint count, gboolean transpose, const gfloat* value);
+GST_EXPORT
 void gst_gl_shader_set_uniform_matrix_3x2fv (GstGLShader *shader, const gchar *name, gint count, gboolean transpose, const gfloat* value);
+GST_EXPORT
 void gst_gl_shader_set_uniform_matrix_3x4fv (GstGLShader *shader, const gchar *name, gint count, gboolean transpose, const gfloat* value);
+GST_EXPORT
 void gst_gl_shader_set_uniform_matrix_4x2fv (GstGLShader *shader, const gchar *name, gint count, gboolean transpose, const gfloat* value);
+GST_EXPORT
 void gst_gl_shader_set_uniform_matrix_4x3fv (GstGLShader *shader, const gchar *name, gint count, gboolean transpose, const gfloat* value);
 #endif
 
+GST_EXPORT
 gint gst_gl_shader_get_attribute_location  (GstGLShader *shader, const gchar *name);
+GST_EXPORT
 void gst_gl_shader_bind_attribute_location (GstGLShader * shader, guint index, const gchar * name);
+GST_EXPORT
 void gst_gl_shader_bind_frag_data_location (GstGLShader * shader, guint index, const gchar * name);
 
 G_END_DECLS
diff --git a/gst-libs/gst/gl/gstglshaderstrings.h b/gst-libs/gst/gl/gstglshaderstrings.h
index 89d88b0..0e56471 100644
--- a/gst-libs/gst/gl/gstglshaderstrings.h
+++ b/gst-libs/gst/gl/gstglshaderstrings.h
@@ -25,12 +25,17 @@
 
 G_BEGIN_DECLS
 
-extern const gchar *gst_gl_shader_string_vertex_default;
-extern const gchar *gst_gl_shader_string_fragment_default;
+GST_EXPORT
+const gchar *gst_gl_shader_string_vertex_default;
+GST_EXPORT
+const gchar *gst_gl_shader_string_fragment_default;
 
-extern const gchar *gst_gl_shader_string_vertex_mat4_texture_transform;
-extern const gchar *gst_gl_shader_string_vertex_mat4_vertex_transform;
-extern const gchar *gst_gl_shader_string_fragment_external_oes_default;
+GST_EXPORT
+const gchar *gst_gl_shader_string_vertex_mat4_texture_transform;
+GST_EXPORT
+const gchar *gst_gl_shader_string_vertex_mat4_vertex_transform;
+GST_EXPORT
+const gchar *gst_gl_shader_string_fragment_external_oes_default;
 
 G_END_DECLS
 
diff --git a/gst-libs/gst/gl/gstglsl.h b/gst-libs/gst/gl/gstglsl.h
index 9f051f6..097fea2 100644
--- a/gst-libs/gst/gl/gstglsl.h
+++ b/gst-libs/gst/gl/gstglsl.h
@@ -25,6 +25,7 @@
 
 G_BEGIN_DECLS
 
+GST_EXPORT
 GQuark gst_glsl_error_quark (void);
 #define GST_GLSL_ERROR (gst_glsl_error_quark ())
 
@@ -70,23 +71,32 @@
   GST_GLSL_PROFILE_ANY = -1,
 } GstGLSLProfile;
 
+GST_EXPORT
 GstGLSLVersion gst_glsl_version_from_string         (const gchar * string);
+GST_EXPORT
 const gchar *  gst_glsl_version_to_string           (GstGLSLVersion version);
 
+GST_EXPORT
 GstGLSLProfile gst_glsl_profile_from_string         (const gchar * string);
+GST_EXPORT
 const gchar *  gst_glsl_profile_to_string           (GstGLSLProfile profile);
 
+GST_EXPORT
 gchar *        gst_glsl_version_profile_to_string   (GstGLSLVersion version,
                                                      GstGLSLProfile profile);
+GST_EXPORT
 gboolean       gst_glsl_version_profile_from_string (const gchar * string,
                                                      GstGLSLVersion * version,
                                                      GstGLSLProfile * profile);
 
+GST_EXPORT
 gboolean       gst_glsl_string_get_version_profile  (const gchar *s,
                                                      GstGLSLVersion * version,
                                                      GstGLSLProfile * profile);
 
+GST_EXPORT
 GstGLSLVersion gst_gl_version_to_glsl_version       (GstGLAPI gl_api, gint maj, gint min);
+GST_EXPORT
 gboolean       gst_gl_context_supports_glsl_profile_version (GstGLContext * context,
                                                              GstGLSLVersion version,
                                                              GstGLSLProfile profile);
diff --git a/gst-libs/gst/gl/gstglsl_private.h b/gst-libs/gst/gl/gstglsl_private.h
index 755170d..08addeb 100644
--- a/gst-libs/gst/gl/gstglsl_private.h
+++ b/gst-libs/gst/gl/gstglsl_private.h
@@ -36,22 +36,22 @@
 {
   gboolean initialized;
 
-  GLuint GSTGLAPI (*CreateProgram) (void);
-  void GSTGLAPI (*DeleteProgram) (GLuint program);
-  void GSTGLAPI (*UseProgram) (GLuint program);
-  void GSTGLAPI (*GetAttachedShaders) (GLuint program, GLsizei maxcount,
+  GLuint (GSTGLAPI *CreateProgram) (void);
+  void (GSTGLAPI *DeleteProgram) (GLuint program);
+  void (GSTGLAPI *UseProgram) (GLuint program);
+  void (GSTGLAPI *GetAttachedShaders) (GLuint program, GLsizei maxcount,
       GLsizei * count, GLuint * shaders);
 
-  GLuint GSTGLAPI (*CreateShader) (GLenum shaderType);
-  void GSTGLAPI (*DeleteShader) (GLuint shader);
-  void GSTGLAPI (*AttachShader) (GLuint program, GLuint shader);
-  void GSTGLAPI (*DetachShader) (GLuint program, GLuint shader);
+  GLuint (GSTGLAPI *CreateShader) (GLenum shaderType);
+  void (GSTGLAPI *DeleteShader) (GLuint shader);
+  void (GSTGLAPI *AttachShader) (GLuint program, GLuint shader);
+  void (GSTGLAPI *DetachShader) (GLuint program, GLuint shader);
 
-  void GSTGLAPI (*GetShaderiv) (GLuint program, GLenum pname, GLint * params);
-  void GSTGLAPI (*GetProgramiv) (GLuint program, GLenum pname, GLint * params);
-  void GSTGLAPI (*GetShaderInfoLog) (GLuint shader, GLsizei maxLength,
+  void (GSTGLAPI *GetShaderiv) (GLuint program, GLenum pname, GLint * params);
+  void (GSTGLAPI *GetProgramiv) (GLuint program, GLenum pname, GLint * params);
+  void (GSTGLAPI *GetShaderInfoLog) (GLuint shader, GLsizei maxLength,
       GLsizei * length, char *log);
-  void GSTGLAPI (*GetProgramInfoLog) (GLuint shader, GLsizei maxLength,
+  void (GSTGLAPI *GetProgramInfoLog) (GLuint shader, GLsizei maxLength,
       GLsizei * length, char *log);
 } GstGLSLFuncs;
 
diff --git a/gst-libs/gst/gl/gstglslstage.h b/gst-libs/gst/gl/gstglslstage.h
index 3521e22..b011006 100644
--- a/gst-libs/gst/gl/gstglslstage.h
+++ b/gst-libs/gst/gl/gstglslstage.h
@@ -62,13 +62,17 @@
   gpointer _padding[GST_PADDING];
 };
 
+GST_EXPORT
 GType          gst_glsl_stage_get_type          (void);
+GST_EXPORT
 GstGLSLStage * gst_glsl_stage_new               (GstGLContext * context, guint type);
+GST_EXPORT
 GstGLSLStage * gst_glsl_stage_new_with_string   (GstGLContext * context,
                                                  guint type,
                                                  GstGLSLVersion version,
                                                  GstGLSLProfile profile,
                                                  const gchar * str);
+GST_EXPORT
 GstGLSLStage * gst_glsl_stage_new_with_strings  (GstGLContext * context,
                                                  guint type,
                                                  GstGLSLVersion version,
@@ -76,18 +80,26 @@
                                                  gint n_strings,
                                                  const gchar ** str);
 
+GST_EXPORT
 GstGLSLStage * gst_glsl_stage_new_default_fragment (GstGLContext * context);
+GST_EXPORT
 GstGLSLStage * gst_glsl_stage_new_default_vertex   (GstGLContext * context);
 
+GST_EXPORT
 guint          gst_glsl_stage_get_handle        (GstGLSLStage * stage);
+GST_EXPORT
 GstGLSLProfile gst_glsl_stage_get_profile       (GstGLSLStage * stage);
+GST_EXPORT
 GstGLSLVersion gst_glsl_stage_get_version       (GstGLSLStage * stage);
+GST_EXPORT
 guint          gst_glsl_stage_get_shader_type   (GstGLSLStage * stage);
+GST_EXPORT
 gboolean       gst_glsl_stage_set_strings       (GstGLSLStage * stage,
                                                  GstGLSLVersion version,
                                                  GstGLSLProfile profile,
                                                  gint n_strings,
                                                  const gchar ** str);
+GST_EXPORT
 gboolean       gst_glsl_stage_compile           (GstGLSLStage * stage,
                                                  GError ** error);
 
diff --git a/gst-libs/gst/gl/gstglsyncmeta.c b/gst-libs/gst/gl/gstglsyncmeta.c
index b4061d3..582784c 100644
--- a/gst-libs/gst/gl/gstglsyncmeta.c
+++ b/gst-libs/gst/gl/gstglsyncmeta.c
@@ -53,16 +53,11 @@
     }
     sync_meta->data =
         (gpointer) gl->FenceSync (GL_SYNC_GPU_COMMANDS_COMPLETE, 0);
-
-    if (gst_gl_context_is_shared (context))
-      /* if we only have a single context, the wait will flush for us */
-      gl->Flush ();
     GST_LOG ("setting sync object %p", sync_meta->data);
-  } else {
-    /* XXX: this a little over the top if the CPU is never going to
-     * access the data, however this is the legacy path, so... */
-    gl->Finish ();
   }
+
+  if (gst_gl_context_is_shared (context))
+    gl->Flush ();
 }
 
 static void
@@ -89,6 +84,8 @@
           gl->ClientWaitSync ((GLsync) sync_meta->data,
           GL_SYNC_FLUSH_COMMANDS_BIT, 1000000000 /* 1s */ );
     } while (res == GL_TIMEOUT_EXPIRED);
+  } else {
+    gl->Finish ();
   }
 }
 
diff --git a/gst-libs/gst/gl/gstglsyncmeta.h b/gst-libs/gst/gl/gstglsyncmeta.h
index e5eb17b..f980064 100644
--- a/gst-libs/gst/gl/gstglsyncmeta.h
+++ b/gst-libs/gst/gl/gstglsyncmeta.h
@@ -49,16 +49,23 @@
   void (*free_gl) (GstGLSyncMeta * sync, GstGLContext * context);
 };
 
+GST_EXPORT
 GType gst_gl_sync_meta_api_get_type (void);
+GST_EXPORT
 const GstMetaInfo * gst_gl_sync_meta_get_info (void);
 
 #define gst_buffer_get_gl_sync_meta(b) ((GstGLSyncMeta*)gst_buffer_get_meta((b),GST_GL_SYNC_META_API_TYPE))
 
+GST_EXPORT
 GstGLSyncMeta *     gst_buffer_add_gl_sync_meta         (GstGLContext * context, GstBuffer *buffer);
+GST_EXPORT
 GstGLSyncMeta *     gst_buffer_add_gl_sync_meta_full    (GstGLContext * context, GstBuffer * buffer,
                                                          gpointer data);
+GST_EXPORT
 void                gst_gl_sync_meta_set_sync_point     (GstGLSyncMeta * sync, GstGLContext * context);
+GST_EXPORT
 void                gst_gl_sync_meta_wait               (GstGLSyncMeta * sync, GstGLContext * context);
+GST_EXPORT
 void                gst_gl_sync_meta_wait_cpu           (GstGLSyncMeta * sync, GstGLContext * context);
 
 G_END_DECLS
diff --git a/gst-libs/gst/gl/gstglupload.h b/gst-libs/gst/gl/gstglupload.h
index 3e00298..7b94929 100644
--- a/gst-libs/gst/gl/gstglupload.h
+++ b/gst-libs/gst/gl/gstglupload.h
@@ -27,6 +27,7 @@
 
 G_BEGIN_DECLS
 
+GST_EXPORT
 GType gst_gl_upload_get_type (void);
 #define GST_TYPE_GL_UPLOAD (gst_gl_upload_get_type())
 #define GST_GL_UPLOAD(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_GL_UPLOAD,GstGLUpload))
@@ -82,28 +83,36 @@
   gpointer _padding[GST_PADDING];
 };
 
+GST_EXPORT
 GstCaps *     gst_gl_upload_get_input_template_caps (void);
 
+GST_EXPORT
 GstGLUpload * gst_gl_upload_new                    (GstGLContext * context);
 
+GST_EXPORT
 void          gst_gl_upload_set_context            (GstGLUpload * upload,
                                                     GstGLContext * context);
 
+GST_EXPORT
 GstCaps *     gst_gl_upload_transform_caps         (GstGLUpload * upload,
                                                     GstGLContext * context,
                                                     GstPadDirection direction,
                                                     GstCaps * caps,
                                                     GstCaps * filter);
+GST_EXPORT
 gboolean      gst_gl_upload_set_caps               (GstGLUpload * upload,
                                                     GstCaps * in_caps,
                                                     GstCaps * out_caps);
+GST_EXPORT
 void          gst_gl_upload_get_caps               (GstGLUpload * upload,
                                                     GstCaps ** in_caps,
                                                     GstCaps ** out_caps);
+GST_EXPORT
 void          gst_gl_upload_propose_allocation     (GstGLUpload * upload,
                                                     GstQuery * decide_query,
                                                     GstQuery * query);
 
+GST_EXPORT
 GstGLUploadReturn gst_gl_upload_perform_with_buffer (GstGLUpload * upload,
                                                     GstBuffer * buffer,
                                                     GstBuffer ** outbuf_ptr);
diff --git a/gst-libs/gst/gl/gstglutils.h b/gst-libs/gst/gl/gstglutils.h
index a714759..297e462 100644
--- a/gst-libs/gst/gl/gstglutils.h
+++ b/gst-libs/gst/gl/gstglutils.h
@@ -28,33 +28,47 @@
 
 G_BEGIN_DECLS
 
+GST_EXPORT
 gboolean gst_gl_context_gen_shader (GstGLContext * context,
     const gchar * shader_vertex_source,
     const gchar * shader_fragment_source, GstGLShader ** shader);
+GST_EXPORT
 void gst_gl_context_del_shader (GstGLContext * context, GstGLShader * shader);
 
+GST_EXPORT
 gboolean gst_gl_ensure_element_data (gpointer element,
     GstGLDisplay **display_ptr, GstGLContext ** other_context_ptr);
+GST_EXPORT
 gboolean gst_gl_handle_set_context (GstElement * element, GstContext * context, 
     GstGLDisplay ** display, GstGLContext ** other_context);
+GST_EXPORT
 gboolean gst_gl_handle_context_query (GstElement * element, GstQuery * query, 
     GstGLDisplay ** display, GstGLContext ** other_context);
 
+GST_EXPORT
 gboolean gst_gl_run_query (GstElement * element,
     GstQuery * query, GstPadDirection direction);
+GST_EXPORT
 gsize gst_gl_get_plane_data_size (GstVideoInfo * info, GstVideoAlignment * align,
     guint plane);
+GST_EXPORT
 gsize gst_gl_get_plane_start (GstVideoInfo * info, GstVideoAlignment * valign,
     guint plane);
+GST_EXPORT
 GstCaps * gst_gl_caps_replace_all_caps_features (const GstCaps * caps,
     const gchar * feature_name);
 
+GST_EXPORT
 gboolean gst_gl_value_set_texture_target_from_mask (GValue * value,
     GstGLTextureTarget target_mask);
+GST_EXPORT
 gboolean gst_gl_value_set_texture_target (GValue * value, GstGLTextureTarget target);
+GST_EXPORT
 GstGLTextureTarget gst_gl_value_get_texture_target_mask (const GValue * value);
 
+GST_EXPORT
 void gst_gl_multiply_matrix4 (const gfloat * a, const gfloat * b, gfloat * result);
+GST_EXPORT
 void gst_gl_get_affine_transformation_meta_as_ndc (GstVideoAffineTransformationMeta *
     meta, gfloat * matrix);
 
diff --git a/gst-libs/gst/gl/gstglviewconvert.c b/gst-libs/gst/gl/gstglviewconvert.c
index c409e3a..5fa06eb 100644
--- a/gst-libs/gst/gl/gstglviewconvert.c
+++ b/gst-libs/gst/gl/gstglviewconvert.c
@@ -132,17 +132,17 @@
 /* These match the order and number of DOWNMIX_ANAGLYPH_* modes */
 static GLfloat downmix_matrices[][2][9] = {
   {                             /* Green-Magenta Dubois */
-        {-0.062, 0.284, -0.015, -0.158, 0.668, -0.027, -0.039, 0.143, 0.021},
-        {0.529, -0.016, 0.009, 0.705, -0.015, 0.075, 0.024, -0.065, 0.937}
+        {-0.062f, 0.284f, -0.015f, -0.158f, 0.668f, -0.027f, -0.039f, 0.143f, 0.021f},
+        {0.529f, -0.016f, 0.009f, 0.705f, -0.015f, 0.075f, 0.024f, -0.065f, 0.937f}
       },
   {                             /* Red-Cyan Dubois */
         /* Source of this matrix: http://www.site.uottawa.ca/~edubois/anaglyph/LeastSquaresHowToPhotoshop.pdf */
-        {0.437, -0.062, -0.048, 0.449, -0.062, -0.050, 0.164, -0.024, -0.017},
-        {-0.011, 0.377, -0.026, -0.032, 0.761, -0.093, -0.007, 0.009, 1.234}
+        {0.437f, -0.062f, -0.048f, 0.449f, -0.062f, -0.050f, 0.164f, -0.024f, -0.017f},
+        {-0.011f, 0.377f, -0.026f, -0.032f, 0.761f, -0.093f, -0.007f, 0.009f, 1.234f}
       },
   {                             /* Amber-blue Dubois */
-        {1.062, -0.026, -0.038, -0.205, 0.908, -0.173, 0.299, 0.068, 0.022},
-        {-0.016, 0.006, 0.094, -0.123, 0.062, 0.185, -0.017, -0.017, 0.911}
+        {1.062f, -0.026f, -0.038f, -0.205f, 0.908f, -0.173f, 0.299f, 0.068f, 0.022f},
+        {-0.016f, 0.006f, 0.094f, -0.123f, 0.062f, 0.185f, -0.017f, -0.017f, 0.911f}
       }
 };
 
diff --git a/gst-libs/gst/gl/gstglviewconvert.h b/gst-libs/gst/gl/gstglviewconvert.h
index 4783dd1..8f3ee8a 100644
--- a/gst-libs/gst/gl/gstglviewconvert.h
+++ b/gst-libs/gst/gl/gstglviewconvert.h
@@ -33,6 +33,7 @@
 #define GST_GL_VIEW_CONVERT_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS((obj) ,GST_TYPE_GL_VIEW_CONVERT,GstGLViewConvertClass))
 
 #define GST_TYPE_GL_STEREO_DOWNMIX_MODE_TYPE gst_gl_stereo_downmix_mode_get_type()
+GST_EXPORT
 GType gst_gl_stereo_downmix_mode_get_type (void);
 
 enum _GstGLStereoDownmix {
@@ -84,21 +85,31 @@
   gpointer                  _padding[GST_PADDING];
 };
 
+GST_EXPORT
 GType gst_gl_view_convert_get_type (void);
+GST_EXPORT
 GstGLViewConvert * gst_gl_view_convert_new (void);
 
+GST_EXPORT
 gboolean  gst_gl_view_convert_set_caps (GstGLViewConvert * viewconvert, GstCaps * in_caps, GstCaps * out_caps);
+GST_EXPORT
 GstCaps * gst_gl_view_convert_transform_caps (GstGLViewConvert * viewconvert,
     GstPadDirection direction, GstCaps * caps, GstCaps * filter);
+GST_EXPORT
 GstCaps * gst_gl_view_convert_fixate_caps (GstGLViewConvert *viewconvert,
     GstPadDirection direction, GstCaps * caps, GstCaps * othercaps);
+GST_EXPORT
 GstFlowReturn gst_gl_view_convert_submit_input_buffer (GstGLViewConvert *viewconvert,
     gboolean is_discont, GstBuffer * input);
+GST_EXPORT
 GstFlowReturn gst_gl_view_convert_get_output (GstGLViewConvert *viewconvert,
     GstBuffer ** outbuf_ptr);
 
+GST_EXPORT
 GstBuffer * gst_gl_view_convert_perform (GstGLViewConvert * viewconvert, GstBuffer *inbuf);
+GST_EXPORT
 void gst_gl_view_convert_reset (GstGLViewConvert * viewconvert);
+GST_EXPORT
 void gst_gl_view_convert_set_context (GstGLViewConvert *viewconvert, GstGLContext * context);
 
 G_END_DECLS
diff --git a/gst-libs/gst/gl/gstglwindow.c b/gst-libs/gst/gl/gstglwindow.c
index b74d397..0588f1d 100644
--- a/gst-libs/gst/gl/gstglwindow.c
+++ b/gst-libs/gst/gl/gstglwindow.c
@@ -101,6 +101,7 @@
   GMainLoop *navigation_loop;
   GMutex nav_lock;
   GCond nav_create_cond;
+  GCond nav_destroy_cond;
   gboolean nav_alive;
   GMutex sync_message_lock;
   GCond sync_message_cond;
@@ -335,12 +336,16 @@
   GstGLWindowPrivate *priv = window->priv;
 
   GST_INFO ("quit navigation loop");
+
+  g_mutex_lock (&window->priv->nav_lock);
   if (window->priv->navigation_loop) {
     g_main_loop_quit (window->priv->navigation_loop);
     /* wait until navigation thread finished */
-    g_thread_join (window->priv->navigation_thread);
+    while (window->priv->nav_alive)
+      g_cond_wait (&window->priv->nav_destroy_cond, &window->priv->nav_lock);
     window->priv->navigation_thread = NULL;
   }
+  g_mutex_unlock (&window->priv->nav_lock);
 
   if (priv->loop)
     g_main_loop_unref (priv->loop);
@@ -353,6 +358,7 @@
   g_mutex_clear (&window->lock);
   g_mutex_clear (&window->priv->nav_lock);
   g_cond_clear (&window->priv->nav_create_cond);
+  g_cond_clear (&window->priv->nav_destroy_cond);
   g_mutex_clear (&window->priv->sync_message_lock);
   g_cond_clear (&window->priv->sync_message_cond);
   gst_object_unref (window->display);
@@ -939,6 +945,7 @@
 
   g_main_loop_run (window->priv->navigation_loop);
 
+  g_mutex_lock (&window->priv->nav_lock);
   g_main_context_pop_thread_default (window->priv->navigation_context);
 
   g_main_loop_unref (window->priv->navigation_loop);
@@ -946,6 +953,10 @@
   window->priv->navigation_loop = NULL;
   window->priv->navigation_context = NULL;
 
+  window->priv->nav_alive = FALSE;
+  g_cond_signal (&window->priv->nav_destroy_cond);
+  g_mutex_unlock (&window->priv->nav_lock);
+
   GST_INFO ("navigation loop exited\n");
 
   return NULL;
diff --git a/gst-libs/gst/gl/gstglwindow.h b/gst-libs/gst/gl/gstglwindow.h
index 1cf5c3e..730be00 100644
--- a/gst-libs/gst/gl/gstglwindow.h
+++ b/gst-libs/gst/gl/gstglwindow.h
@@ -140,55 +140,73 @@
   gpointer _reserved[GST_PADDING];
 };
 
+GST_EXPORT
 GQuark gst_gl_window_error_quark (void);
+GST_EXPORT
 GType gst_gl_window_get_type     (void);
 
+GST_EXPORT
 GstGLWindow * gst_gl_window_new  (GstGLDisplay *display);
 
 /* callbacks */
+GST_EXPORT
 void     gst_gl_window_set_draw_callback    (GstGLWindow *window,
                                              GstGLWindowCB callback,
                                              gpointer data,
                                              GDestroyNotify destroy_notify);
+GST_EXPORT
 void     gst_gl_window_set_resize_callback  (GstGLWindow *window,
                                              GstGLWindowResizeCB callback,
                                              gpointer data,
                                              GDestroyNotify destroy_notify);
+GST_EXPORT
 void     gst_gl_window_set_close_callback   (GstGLWindow *window,
                                              GstGLWindowCB callback,
                                              gpointer data,
                                              GDestroyNotify destroy_notify);
 
+GST_EXPORT
 void     gst_gl_window_set_window_handle    (GstGLWindow *window, guintptr handle);
+GST_EXPORT
 guintptr gst_gl_window_get_window_handle    (GstGLWindow *window);
 
 /* loop/events */
+GST_EXPORT
 void     gst_gl_window_run                  (GstGLWindow *window);
+GST_EXPORT
 void     gst_gl_window_quit                 (GstGLWindow *window);
+GST_EXPORT
 gboolean gst_gl_window_is_running           (GstGLWindow *window);
+GST_EXPORT
 void     gst_gl_window_send_message         (GstGLWindow *window,
                                              GstGLWindowCB callback,
                                              gpointer data);
+GST_EXPORT
 void     gst_gl_window_send_message_async   (GstGLWindow *window,
                                              GstGLWindowCB callback,
                                              gpointer data,
                                              GDestroyNotify destroy);
 
 /* navigation */
+GST_EXPORT
 void     gst_gl_window_handle_events        (GstGLWindow * window,
                                              gboolean handle_events);
 
+GST_EXPORT
 void     gst_gl_window_send_key_event       (GstGLWindow * window,
                                              const char * event_type,
                                              const char * key_str);
+GST_EXPORT
 void     gst_gl_window_send_key_event_async (GstGLWindow * window,
                                              const char * event_type,
                                              const char * key_str);
+GST_EXPORT
 void     gst_gl_window_send_mouse_event     (GstGLWindow * window,
                                              const char * event_type,
                                              int button,
                                              double posx,
                                              double posy);
+GST_EXPORT
 void     gst_gl_window_send_mouse_event_async (GstGLWindow * window,
                                              const char * event_type,
                                              int button,
@@ -196,15 +214,21 @@
                                              double posy);
 
 /* surfaces/rendering */
+GST_EXPORT
 void     gst_gl_window_queue_resize         (GstGLWindow *window);
+GST_EXPORT
 void     gst_gl_window_draw                 (GstGLWindow *window);
+GST_EXPORT
 void     gst_gl_window_show                 (GstGLWindow *window);
+GST_EXPORT
 void     gst_gl_window_set_preferred_size   (GstGLWindow * window,
                                              gint width,
                                              gint height);
+GST_EXPORT
 void     gst_gl_window_get_surface_dimensions (GstGLWindow * window,
                                                guint * width,
                                                guint * height);
+GST_EXPORT
 gboolean gst_gl_window_set_render_rectangle   (GstGLWindow * window,
                                                gint x,
                                                gint y,
@@ -212,9 +236,12 @@
                                                gint height);
 
 /* subclass usage only */
+GST_EXPORT
 void     gst_gl_window_resize               (GstGLWindow *window, guint width, guint height);
 
+GST_EXPORT
 GstGLContext * gst_gl_window_get_context    (GstGLWindow *window);
+GST_EXPORT
 guintptr       gst_gl_window_get_display    (GstGLWindow *window);
 
 GST_DEBUG_CATEGORY_EXTERN (gst_gl_window_debug);
diff --git a/gst-libs/gst/gl/win32/Makefile.am b/gst-libs/gst/gl/win32/Makefile.am
index 80da958..ed3cc63 100644
--- a/gst-libs/gst/gl/win32/Makefile.am
+++ b/gst-libs/gst/gl/win32/Makefile.am
@@ -14,12 +14,9 @@
 libgstgl_win32_la_SOURCES += gstglcontext_wgl.c
 noinst_HEADERS += gstglcontext_wgl.h
 endif
-#if USE_EGL
-#libgstgl_win32_la_SOURCES += gstglwindow_win32_egl.c
-#noinst_HEADERS += gstglwindow_win32_egl.h
-#endif
 
 libgstgl_win32_la_CFLAGS = \
+	-DGST_EXPORTS \
 	-I$(top_srcdir)/gst-libs \
 	-I$(top_builddir)/gst-libs \
 	$(GL_CFLAGS) \
diff --git a/gst-libs/gst/gl/win32/Makefile.in b/gst-libs/gst/gl/win32/Makefile.in
index 9fc5848..af1584f 100644
--- a/gst-libs/gst/gl/win32/Makefile.in
+++ b/gst-libs/gst/gl/win32/Makefile.in
@@ -771,11 +771,8 @@
 	$(am__append_1)
 noinst_HEADERS = gstglwindow_win32.h win32_message_source.h \
 	$(am__append_2)
-#if USE_EGL
-#libgstgl_win32_la_SOURCES += gstglwindow_win32_egl.c
-#noinst_HEADERS += gstglwindow_win32_egl.h
-#endif
 libgstgl_win32_la_CFLAGS = \
+	-DGST_EXPORTS \
 	-I$(top_srcdir)/gst-libs \
 	-I$(top_builddir)/gst-libs \
 	$(GL_CFLAGS) \
diff --git a/gst-libs/gst/mpegts/gstmpegtsdescriptor.h b/gst-libs/gst/mpegts/gstmpegtsdescriptor.h
index 33d46f5..87c7343 100644
--- a/gst-libs/gst/mpegts/gstmpegtsdescriptor.h
+++ b/gst-libs/gst/mpegts/gstmpegtsdescriptor.h
@@ -174,6 +174,7 @@
   GST_MTS_DESC_ATSC_REDISTRIBUTION_CONTROL      = 0xAA,
   GST_MTS_DESC_ATSC_GENRE                       = 0xAB,
   GST_MTS_DESC_ATSC_PRIVATE_INFORMATION         = 0xAD,
+  GST_MTS_DESC_ATSC_EAC3                        = 0xCC,
 
   /* ATSC A/53:3 2009 */
   GST_MTS_DESC_ATSC_ENHANCED_SIGNALING          = 0xB2,
diff --git a/gst-libs/gst/player/gstplayer.c b/gst-libs/gst/player/gstplayer.c
index 62cd800..313bca5 100644
--- a/gst-libs/gst/player/gstplayer.c
+++ b/gst-libs/gst/player/gstplayer.c
@@ -3169,8 +3169,6 @@
  * @player: #GstPlayer instance
  * @uri: subtitle URI
  *
- * Returns: %TRUE or %FALSE
- *
  * Sets the external subtitle URI.
  */
 void
diff --git a/gst-plugins-bad.doap b/gst-plugins-bad.doap
index ec65d38..33223e2 100644
--- a/gst-plugins-bad.doap
+++ b/gst-plugins-bad.doap
@@ -35,6 +35,16 @@
 
  <release>
   <Version>
+   <revision>1.10.0</revision>
+   <branch>master</branch>
+   <name></name>
+   <created>2016-11-01</created>
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.10.0.tar.xz" />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
    <revision>1.9.90</revision>
    <branch>master</branch>
    <name></name>
diff --git a/gst-plugins-bad.spec b/gst-plugins-bad.spec
index 2ee8b4d..2ed7b84 100644
--- a/gst-plugins-bad.spec
+++ b/gst-plugins-bad.spec
@@ -6,7 +6,7 @@
 
 Summary: GStreamer streaming media framework "bad" plug-ins
 Name: %{gstreamer}-plugins-bad
-Version: 1.9.90
+Version: 1.10.0
 Release: 1.gst
 # The freeze and nfs plugins are LGPLv2 (only)
 License: LGPLv2+ and LGPLv2
diff --git a/gst/bayer/gstbayer2rgb.c b/gst/bayer/gstbayer2rgb.c
index 0b6f232..bf723b1 100644
--- a/gst/bayer/gstbayer2rgb.c
+++ b/gst/bayer/gstbayer2rgb.c
@@ -286,42 +286,35 @@
 gst_bayer2rgb_transform_caps (GstBaseTransform * base,
     GstPadDirection direction, GstCaps * caps, GstCaps * filter)
 {
+  GstBayer2RGB *bayer2rgb;
+  GstCaps *res_caps, *tmp_caps;
   GstStructure *structure;
-  GstCaps *newcaps;
-  GstStructure *newstruct;
+  guint i, caps_size;
 
-  GST_DEBUG_OBJECT (base, "transforming caps from %" GST_PTR_FORMAT, caps);
+  bayer2rgb = GST_BAYER2RGB (base);
 
-  structure = gst_caps_get_structure (caps, 0);
-
-  if (direction == GST_PAD_SRC) {
-    newcaps = gst_caps_from_string ("video/x-bayer,"
-        "format=(string){bggr,grbg,gbrg,rggb}");
-  } else {
-    newcaps = gst_caps_new_empty_simple ("video/x-raw");
+  res_caps = gst_caps_copy (caps);
+  caps_size = gst_caps_get_size (res_caps);
+  for (i = 0; i < caps_size; i++) {
+    structure = gst_caps_get_structure (res_caps, i);
+    if (direction == GST_PAD_SINK) {
+      gst_structure_set_name (structure, "video/x-raw");
+      gst_structure_remove_field (structure, "format");
+    } else {
+      gst_structure_set_name (structure, "video/x-bayer");
+      gst_structure_remove_fields (structure, "format", "colorimetry",
+          "chroma-site", NULL);
+    }
   }
-  newstruct = gst_caps_get_structure (newcaps, 0);
-
-  gst_structure_set_value (newstruct, "width",
-      gst_structure_get_value (structure, "width"));
-  gst_structure_set_value (newstruct, "height",
-      gst_structure_get_value (structure, "height"));
-  gst_structure_set_value (newstruct, "framerate",
-      gst_structure_get_value (structure, "framerate"));
-
-  if (filter != NULL) {
-    GstCaps *icaps;
-
-    GST_DEBUG_OBJECT (base, "                filter %" GST_PTR_FORMAT, filter);
-
-    icaps = gst_caps_intersect_full (filter, newcaps, GST_CAPS_INTERSECT_FIRST);
-    gst_caps_unref (newcaps);
-    newcaps = icaps;
+  if (filter) {
+    tmp_caps = res_caps;
+    res_caps =
+        gst_caps_intersect_full (filter, tmp_caps, GST_CAPS_INTERSECT_FIRST);
+    gst_caps_unref (tmp_caps);
   }
-
-  GST_DEBUG_OBJECT (base, "                  into %" GST_PTR_FORMAT, newcaps);
-
-  return newcaps;
+  GST_DEBUG_OBJECT (bayer2rgb, "transformed %" GST_PTR_FORMAT " into %"
+      GST_PTR_FORMAT, caps, res_caps);
+  return res_caps;
 }
 
 static gboolean
diff --git a/gst/bayer/gstrgb2bayer.c b/gst/bayer/gstrgb2bayer.c
index 9ef5c89..21e7811 100644
--- a/gst/bayer/gstrgb2bayer.c
+++ b/gst/bayer/gstrgb2bayer.c
@@ -126,41 +126,35 @@
 gst_rgb2bayer_transform_caps (GstBaseTransform * trans,
     GstPadDirection direction, GstCaps * caps, GstCaps * filter)
 {
+  GstRGB2Bayer *rgb2bayer;
+  GstCaps *res_caps, *tmp_caps;
   GstStructure *structure;
-  GstStructure *new_structure;
-  GstCaps *newcaps;
-  const GValue *value;
+  guint i, caps_size;
 
-  GST_DEBUG_OBJECT (trans, "transforming caps (from) %" GST_PTR_FORMAT, caps);
+  rgb2bayer = GST_RGB_2_BAYER (trans);
 
-  structure = gst_caps_get_structure (caps, 0);
-
-  if (direction == GST_PAD_SRC) {
-    newcaps = gst_caps_new_empty_simple ("video/x-raw");
-  } else {
-    newcaps = gst_caps_new_empty_simple ("video/x-bayer");
+  res_caps = gst_caps_copy (caps);
+  caps_size = gst_caps_get_size (res_caps);
+  for (i = 0; i < caps_size; i++) {
+    structure = gst_caps_get_structure (res_caps, i);
+    if (direction == GST_PAD_SRC) {
+      gst_structure_set_name (structure, "video/x-raw");
+      gst_structure_remove_field (structure, "format");
+    } else {
+      gst_structure_set_name (structure, "video/x-bayer");
+      gst_structure_remove_fields (structure, "format", "colorimetry",
+          "chroma-site", NULL);
+    }
   }
-  new_structure = gst_caps_get_structure (newcaps, 0);
-
-  value = gst_structure_get_value (structure, "width");
-  gst_structure_set_value (new_structure, "width", value);
-
-  value = gst_structure_get_value (structure, "height");
-  gst_structure_set_value (new_structure, "height", value);
-
-  value = gst_structure_get_value (structure, "framerate");
-  gst_structure_set_value (new_structure, "framerate", value);
-
-  GST_DEBUG_OBJECT (trans, "transforming caps (into) %" GST_PTR_FORMAT,
-      newcaps);
-
   if (filter) {
-    GstCaps *tmpcaps = newcaps;
-    newcaps = gst_caps_intersect (newcaps, filter);
-    gst_caps_unref (tmpcaps);
+    tmp_caps = res_caps;
+    res_caps =
+        gst_caps_intersect_full (filter, tmp_caps, GST_CAPS_INTERSECT_FIRST);
+    gst_caps_unref (tmp_caps);
   }
-
-  return newcaps;
+  GST_DEBUG_OBJECT (rgb2bayer, "transformed %" GST_PTR_FORMAT " into %"
+      GST_PTR_FORMAT, caps, res_caps);
+  return res_caps;
 }
 
 static gboolean
diff --git a/gst/fieldanalysis/gstfieldanalysis.c b/gst/fieldanalysis/gstfieldanalysis.c
index ac6bf60..2b01b51 100644
--- a/gst/fieldanalysis/gstfieldanalysis.c
+++ b/gst/fieldanalysis/gstfieldanalysis.c
@@ -1442,7 +1442,7 @@
     /* compare the fields within the buffer, if the buffer exhibits combing it
      * could be interlaced or a mixed telecine frame */
     res0->f = filter->same_frame (filter, &history);
-    res0->t = res0->b = res0->t_b = res0->b_t = G_MAXINT64;
+    res0->t = res0->b = res0->t_b = res0->b_t = G_MAXFLOAT;
     if (filter->nframes == 1)
       GST_DEBUG_OBJECT (filter, "Scores: f %f, t , b , t_b , b_t ", res0->f);
     if (res0->f <= filter->frame_thresh) {
diff --git a/gst/freeverb/gstfreeverb.c b/gst/freeverb/gstfreeverb.c
index e4263e5..536452e 100644
--- a/gst/freeverb/gstfreeverb.c
+++ b/gst/freeverb/gstfreeverb.c
@@ -181,7 +181,7 @@
   gfloat *buf = allpass->buffer;
 
   for (i = 0; i < len; i++) {
-    buf[i] = DC_OFFSET;         /* this is not 100 % correct. */
+    buf[i] = (gfloat) DC_OFFSET;         /* this is not 100 % correct. */
   }
 }
 
@@ -246,7 +246,7 @@
   gfloat *buf = comb->buffer;
 
   for (i = 0; i < len; i++) {
-    buf[i] = DC_OFFSET;         /* This is not 100 % correct. */
+    buf[i] = (gfloat) DC_OFFSET;         /* This is not 100 % correct. */
   }
 }
 
@@ -406,7 +406,7 @@
           G_PARAM_STATIC_STRINGS));
   g_object_class_install_property (gobject_class, PROP_DAMPING,
       g_param_spec_float ("damping", "Damping", "Damping of high frequencies",
-          0.0, 1.0, 0.2,
+          0.0, 1.0, 0.2f,
           G_PARAM_CONSTRUCT | G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE |
           G_PARAM_STATIC_STRINGS));
   g_object_class_install_property (gobject_class, PROP_PAN_WIDTH,
@@ -720,8 +720,8 @@
     }
 
     /* Remove the DC offset */
-    out_l1 -= DC_OFFSET;
-    out_r1 -= DC_OFFSET;
+    out_l1 -= (gfloat) DC_OFFSET;
+    out_r1 -= (gfloat) DC_OFFSET;
 
     /* Calculate output */
     out_l2 = out_l1 * priv->wet1 + out_r1 * priv->wet2 + input_2 * priv->dry;
@@ -767,8 +767,8 @@
     }
 
     /* Remove the DC offset */
-    out_l1 -= DC_OFFSET;
-    out_r1 -= DC_OFFSET;
+    out_l1 -= (gfloat) DC_OFFSET;
+    out_r1 -= (gfloat) DC_OFFSET;
 
     /* Calculate output */
     out_l2 = out_l1 * priv->wet1 + out_r1 * priv->wet2 + input_2l * priv->dry;
@@ -816,8 +816,8 @@
     }
 
     /* Remove the DC offset */
-    out_l1 -= DC_OFFSET;
-    out_r1 -= DC_OFFSET;
+    out_l1 -= (gfloat) DC_OFFSET;
+    out_r1 -= (gfloat) DC_OFFSET;
 
     /* Calculate output */
     out_l2 = out_l1 * priv->wet1 + out_r1 * priv->wet2 + input_2 * priv->dry;
@@ -861,8 +861,8 @@
     }
 
     /* Remove the DC offset */
-    out_l1 -= DC_OFFSET;
-    out_r1 -= DC_OFFSET;
+    out_l1 -= (gfloat) DC_OFFSET;
+    out_r1 -= (gfloat) DC_OFFSET;
 
     /* Calculate output */
     out_l2 = out_l1 * priv->wet1 + out_r1 * priv->wet2 + input_2l * priv->dry;
diff --git a/gst/gaudieffects/gstgaussblur.c b/gst/gaudieffects/gstgaussblur.c
index 4e3dc59..9c1e097 100644
--- a/gst/gaudieffects/gstgaussblur.c
+++ b/gst/gaudieffects/gstgaussblur.c
@@ -178,7 +178,7 @@
 static void
 gst_gaussianblur_init (GstGaussianBlur * gb)
 {
-  gb->sigma = DEFAULT_SIGMA;
+  gb->sigma = (gfloat) DEFAULT_SIGMA;
   gb->cur_sigma = -1.0;
 }
 
diff --git a/gst/mpegtsdemux/gstmpegdesc.h b/gst/mpegtsdemux/gstmpegdesc.h
index bd9235f..e4e6743 100644
--- a/gst/mpegtsdemux/gstmpegdesc.h
+++ b/gst/mpegtsdemux/gstmpegdesc.h
@@ -233,5 +233,6 @@
 #define DRF_ID_HEVC       0x48455643
 #define DRF_ID_KLVA       0x4b4c5641   /* defined in RP217 */
 #define DRF_ID_OPUS       0x4f707573
+#define DRF_ID_EAC3       0x45414333   /* defined in A/52 Annex G */
 
 #endif /* __GST_MPEG_DESC_H__ */
diff --git a/gst/mpegtsdemux/mpegtsbase.c b/gst/mpegtsdemux/mpegtsbase.c
index 659faad..a36ed41 100644
--- a/gst/mpegtsdemux/mpegtsbase.c
+++ b/gst/mpegtsdemux/mpegtsbase.c
@@ -210,6 +210,11 @@
   g_hash_table_foreach_remove (base->programs, (GHRFunc) remove_each_program,
       base);
 
+  base->streams_aware = GST_OBJECT_PARENT (base)
+      && GST_OBJECT_FLAG_IS_SET (GST_OBJECT_PARENT (base),
+      GST_BIN_FLAG_STREAMS_AWARE);
+  GST_DEBUG_OBJECT (base, "Streams aware : %d", base->streams_aware);
+
   if (klass->reset)
     klass->reset (base);
 }
@@ -328,11 +333,52 @@
   return gst_mpegts_find_descriptor (pmt->descriptors, tag);
 }
 
+static gchar *
+_get_upstream_id (GstElement * element, GstPad * sinkpad)
+{
+  gchar *upstream_id = gst_pad_get_stream_id (sinkpad);
+
+  if (!upstream_id) {
+    /* Try to create one from the upstream URI, else use a randome number */
+    GstQuery *query;
+    gchar *uri = NULL;
+
+    /* Try to generate one from the URI query and
+     * if it fails take a random number instead */
+    query = gst_query_new_uri ();
+    if (gst_element_query (element, query)) {
+      gst_query_parse_uri (query, &uri);
+    }
+
+    if (uri) {
+      GChecksum *cs;
+
+      /* And then generate an SHA256 sum of the URI */
+      cs = g_checksum_new (G_CHECKSUM_SHA256);
+      g_checksum_update (cs, (const guchar *) uri, strlen (uri));
+      g_free (uri);
+      upstream_id = g_strdup (g_checksum_get_string (cs));
+      g_checksum_free (cs);
+    } else {
+      /* Just get some random number if the URI query fails */
+      GST_FIXME_OBJECT (element, "Creating random stream-id, consider "
+          "implementing a deterministic way of creating a stream-id");
+      upstream_id =
+          g_strdup_printf ("%08x%08x%08x%08x", g_random_int (), g_random_int (),
+          g_random_int (), g_random_int ());
+    }
+
+    gst_query_unref (query);
+  }
+  return upstream_id;
+}
+
 static MpegTSBaseProgram *
 mpegts_base_new_program (MpegTSBase * base,
     gint program_number, guint16 pmt_pid)
 {
   MpegTSBaseProgram *program;
+  gchar *upstream_id, *stream_id;
 
   GST_DEBUG_OBJECT (base, "program_number : %d, pmt_pid : %d",
       program_number, pmt_pid);
@@ -344,6 +390,12 @@
   program->streams = g_new0 (MpegTSBaseStream *, 0x2000);
   program->patcount = 0;
 
+  upstream_id = _get_upstream_id ((GstElement *) base, base->sinkpad);
+  stream_id = g_strdup_printf ("%s:%d", upstream_id, program_number);
+  program->collection = gst_stream_collection_new (stream_id);
+  g_free (stream_id);
+  g_free (upstream_id);
+
   return program;
 }
 
@@ -398,6 +450,16 @@
 }
 
 static void
+mpegts_base_free_stream (MpegTSBaseStream * stream)
+{
+  if (stream->stream_object)
+    gst_object_unref (stream->stream_object);
+  if (stream->stream_id)
+    g_free (stream->stream_id);
+  g_free (stream);
+}
+
+static void
 mpegts_base_free_program (MpegTSBaseProgram * program)
 {
   GList *tmp;
@@ -407,8 +469,10 @@
     program->pmt = NULL;
   }
 
+  /* FIXME FIXME FIXME FREE STREAM OBJECT ! */
   for (tmp = program->stream_list; tmp; tmp = tmp->next)
-    g_free (tmp->data);
+    mpegts_base_free_stream ((MpegTSBaseStream *) tmp->data);
+
   if (program->stream_list)
     g_list_free (program->stream_list);
 
@@ -416,6 +480,8 @@
 
   if (program->tags)
     gst_tag_list_unref (program->tags);
+  if (program->collection)
+    gst_object_unref (program->collection);
 
   g_free (program);
 }
@@ -465,6 +531,9 @@
 
   GST_DEBUG ("pid:0x%04x, stream_type:0x%03x", pid, stream_type);
 
+  /* FIXME : PID information/nature might change through time.
+   * We therefore *do* want to be able to replace an existing stream
+   * with updated information */
   if (G_UNLIKELY (program->streams[pid])) {
     if (stream_type != 0xff)
       GST_WARNING ("Stream already present !");
@@ -472,9 +541,15 @@
   }
 
   bstream = g_malloc0 (base->stream_size);
+  bstream->stream_id =
+      g_strdup_printf ("%s/%08x",
+      gst_stream_collection_get_upstream_id (program->collection), pid);
   bstream->pid = pid;
   bstream->stream_type = stream_type;
   bstream->stream = stream;
+  /* We don't yet know the stream type, subclasses will fill that */
+  bstream->stream_object = gst_stream_new (bstream->stream_id, NULL,
+      GST_STREAM_TYPE_UNKNOWN, GST_STREAM_FLAG_NONE);
   if (stream) {
     bstream->registration_id =
         get_registration_from_descriptors (stream->descriptors);
@@ -482,12 +557,14 @@
         bstream->pid, SAFE_FOURCC_ARGS (bstream->registration_id));
   }
 
-
   program->streams[pid] = bstream;
   program->stream_list = g_list_append (program->stream_list, bstream);
 
   if (klass->stream_added)
-    klass->stream_added (base, bstream, program);
+    if (klass->stream_added (base, bstream, program))
+      gst_stream_collection_add_stream (program->collection,
+          (GstStream *) gst_object_ref (bstream->stream_object));
+
 
   return bstream;
 }
@@ -514,10 +591,124 @@
     klass->stream_removed (base, stream);
 
   program->stream_list = g_list_remove_all (program->stream_list, stream);
-  g_free (stream);
+  mpegts_base_free_stream (stream);
   program->streams[pid] = NULL;
 }
 
+/* Check if pmtstream is already present in the program */
+static inline gboolean
+_stream_in_pmt (const GstMpegtsPMT * pmt, MpegTSBaseStream * stream)
+{
+  guint i, nbstreams = pmt->streams->len;
+
+  for (i = 0; i < nbstreams; i++) {
+    GstMpegtsPMTStream *pmt_stream = g_ptr_array_index (pmt->streams, i);
+
+    if (pmt_stream->pid == stream->pid &&
+        pmt_stream->stream_type == stream->stream_type)
+      return TRUE;
+  }
+
+  return FALSE;
+}
+
+static inline gboolean
+_pmt_stream_in_program (MpegTSBaseProgram * program,
+    GstMpegtsPMTStream * stream)
+{
+  MpegTSBaseStream *old_stream = program->streams[stream->pid];
+  if (!old_stream)
+    return FALSE;
+  return old_stream->stream_type == stream->stream_type;
+}
+
+static gboolean
+mpegts_base_update_program (MpegTSBase * base, MpegTSBaseProgram * program,
+    GstMpegtsSection * section, const GstMpegtsPMT * pmt)
+{
+  MpegTSBaseClass *klass = GST_MPEGTS_BASE_GET_CLASS (base);
+  const gchar *stream_id =
+      gst_stream_collection_get_upstream_id (program->collection);
+  GstStreamCollection *collection;
+  GList *tmp, *toremove;
+  guint i, nbstreams;
+
+  /* Create new collection */
+  collection = gst_stream_collection_new (stream_id);
+  gst_object_unref (program->collection);
+  program->collection = collection;
+
+  /* Replace section and pmt with the new one */
+  gst_mpegts_section_unref (program->section);
+  program->section = gst_mpegts_section_ref (section);
+  program->pmt = pmt;
+
+  /* Copy over gststream that still exist into the collection */
+  for (tmp = program->stream_list; tmp; tmp = tmp->next) {
+    MpegTSBaseStream *stream = (MpegTSBaseStream *) tmp->data;
+    if (_stream_in_pmt (pmt, stream)) {
+      gst_stream_collection_add_stream (program->collection,
+          gst_object_ref (stream->stream_object));
+    }
+  }
+
+  /* Add new streams (will also create and add gststream to the collection) */
+  nbstreams = pmt->streams->len;
+  for (i = 0; i < nbstreams; i++) {
+    GstMpegtsPMTStream *stream = g_ptr_array_index (pmt->streams, i);
+    if (!_pmt_stream_in_program (program, stream))
+      mpegts_base_program_add_stream (base, program, stream->pid,
+          stream->stream_type, stream);
+  }
+
+  /* Call subclass update */
+  if (klass->update_program)
+    klass->update_program (base, program);
+
+  /* Remove streams no longer present */
+  toremove = NULL;
+  for (tmp = program->stream_list; tmp; tmp = tmp->next) {
+    MpegTSBaseStream *stream = (MpegTSBaseStream *) tmp->data;
+    if (!_stream_in_pmt (pmt, stream))
+      toremove = g_list_prepend (toremove, stream);
+  }
+  for (tmp = toremove; tmp; tmp = tmp->next) {
+    MpegTSBaseStream *stream = (MpegTSBaseStream *) tmp->data;
+    mpegts_base_program_remove_stream (base, program, stream->pid);
+  }
+  return TRUE;
+}
+
+
+static gboolean
+_stream_is_private_section (GstMpegtsPMTStream * stream)
+{
+  switch (stream->stream_type) {
+    case GST_MPEGTS_STREAM_TYPE_SCTE_DSMCC_DCB:
+    case GST_MPEGTS_STREAM_TYPE_SCTE_SIGNALING:
+    {
+      guint32 registration_id =
+          get_registration_from_descriptors (stream->descriptors);
+      /* Not a private section stream */
+      if (registration_id != DRF_ID_CUEI && registration_id != DRF_ID_ETV1)
+        return FALSE;
+    }
+    case GST_MPEGTS_STREAM_TYPE_PRIVATE_SECTIONS:
+    case GST_MPEGTS_STREAM_TYPE_MHEG:
+    case GST_MPEGTS_STREAM_TYPE_DSM_CC:
+    case GST_MPEGTS_STREAM_TYPE_DSMCC_A:
+    case GST_MPEGTS_STREAM_TYPE_DSMCC_B:
+    case GST_MPEGTS_STREAM_TYPE_DSMCC_C:
+    case GST_MPEGTS_STREAM_TYPE_DSMCC_D:
+    case GST_MPEGTS_STREAM_TYPE_SL_FLEXMUX_SECTIONS:
+    case GST_MPEGTS_STREAM_TYPE_METADATA_SECTIONS:
+      /* known PSI streams */
+      return TRUE;
+    default:
+      return FALSE;
+  }
+}
+
 /* Return TRUE if programs are equal */
 static gboolean
 mpegts_base_is_same_program (MpegTSBase * base, MpegTSBaseProgram * oldprogram,
@@ -573,6 +764,68 @@
   return TRUE;
 }
 
+/* Return TRUE if program is an update
+ *
+ * A program is equal if:
+ * * The program number is the same (will be if it enters this function)
+ * * AND The PMT PID is equal to the old one
+ * * AND It contains at least one stream from the previous program
+ *
+ * Changes that are acceptable are therefore:
+ * * New streams appearing
+ * * Old streams going away
+ * * PCR PID changing
+ *
+ * Unclear changes:
+ * * PMT PID being changed ?
+ * * Properties of elementary stream being changed ? (new tags ? metadata ?)
+ */
+static gboolean
+mpegts_base_is_program_update (MpegTSBase * base,
+    MpegTSBaseProgram * oldprogram, guint16 new_pmt_pid,
+    const GstMpegtsPMT * new_pmt)
+{
+  guint i, nbstreams;
+  MpegTSBaseStream *oldstream;
+
+  if (oldprogram->pmt_pid != new_pmt_pid) {
+    /* FIXME/CHECK: Can a program be updated by just changing its PID
+     * in the PAT ? */
+    GST_DEBUG ("Different pmt_pid (new:0x%04x, old:0x%04x)", new_pmt_pid,
+        oldprogram->pmt_pid);
+    return FALSE;
+  }
+
+  /* Check if at least one stream from the previous program is still present
+   * in the new program */
+
+  /* Check the streams */
+  nbstreams = new_pmt->streams->len;
+  for (i = 0; i < nbstreams; ++i) {
+    GstMpegtsPMTStream *stream = g_ptr_array_index (new_pmt->streams, i);
+
+    oldstream = oldprogram->streams[stream->pid];
+    if (!oldstream) {
+      GST_DEBUG ("New stream 0x%04x not present in old program", stream->pid);
+    } else if (oldstream->stream_type != stream->stream_type) {
+      GST_DEBUG
+          ("New stream 0x%04x has a different stream type (new:%d, old:%d)",
+          stream->pid, stream->stream_type, oldstream->stream_type);
+    } else if (!_stream_is_private_section (stream)) {
+      /* FIXME : We should actually be checking a bit deeper,
+       * especially for private streams (where the differentiation is
+       * done at the registration level) */
+      GST_DEBUG
+          ("Stream 0x%04x is identical (stream_type %d) ! Program is an update",
+          stream->pid, stream->stream_type);
+      return TRUE;
+    }
+  }
+
+  GST_DEBUG ("Program is not an update of the previous one");
+  return FALSE;
+}
+
 static void
 mpegts_base_deactivate_program (MpegTSBase * base, MpegTSBaseProgram * program)
 {
@@ -595,35 +848,11 @@
       /* Only unset the is_pes/known_psi bit if the PID isn't used in any other active
        * program */
       if (!mpegts_pid_in_active_programs (base, stream->pid)) {
-        switch (stream->stream_type) {
-          case GST_MPEGTS_STREAM_TYPE_SCTE_DSMCC_DCB:
-          case GST_MPEGTS_STREAM_TYPE_SCTE_SIGNALING:
-          {
-            guint32 registration_id =
-                get_registration_from_descriptors (stream->descriptors);
-
-            /* Not a private section stream */
-            if (registration_id != DRF_ID_CUEI
-                && registration_id != DRF_ID_ETV1)
-              break;
-            /* Fall through on purpose - remove this PID from known_psi */
-          }
-          case GST_MPEGTS_STREAM_TYPE_PRIVATE_SECTIONS:
-          case GST_MPEGTS_STREAM_TYPE_MHEG:
-          case GST_MPEGTS_STREAM_TYPE_DSM_CC:
-          case GST_MPEGTS_STREAM_TYPE_DSMCC_A:
-          case GST_MPEGTS_STREAM_TYPE_DSMCC_B:
-          case GST_MPEGTS_STREAM_TYPE_DSMCC_C:
-          case GST_MPEGTS_STREAM_TYPE_DSMCC_D:
-          case GST_MPEGTS_STREAM_TYPE_SL_FLEXMUX_SECTIONS:
-          case GST_MPEGTS_STREAM_TYPE_METADATA_SECTIONS:
-            /* Set known PSI streams */
-            if (base->parse_private_sections)
-              MPEGTS_BIT_UNSET (base->known_psi, stream->pid);
-            break;
-          default:
-            MPEGTS_BIT_UNSET (base->is_pes, stream->pid);
-            break;
+        if (_stream_is_private_section (stream)) {
+          if (base->parse_private_sections)
+            MPEGTS_BIT_UNSET (base->known_psi, stream->pid);
+        } else {
+          MPEGTS_BIT_UNSET (base->is_pes, stream->pid);
         }
       }
     }
@@ -672,49 +901,24 @@
 
   for (i = 0; i < pmt->streams->len; ++i) {
     GstMpegtsPMTStream *stream = g_ptr_array_index (pmt->streams, i);
-
-    switch (stream->stream_type) {
-      case GST_MPEGTS_STREAM_TYPE_SCTE_DSMCC_DCB:
-      case GST_MPEGTS_STREAM_TYPE_SCTE_SIGNALING:
-      {
-        guint32 registration_id =
-            get_registration_from_descriptors (stream->descriptors);
-        /* Not a private section stream */
-        if (registration_id != DRF_ID_CUEI && registration_id != DRF_ID_ETV1)
-          break;
-        /* Fall through on purpose - remove this PID from known_psi */
+    if (_stream_is_private_section (stream)) {
+      if (base->parse_private_sections)
+        MPEGTS_BIT_SET (base->known_psi, stream->pid);
+    } else {
+      if (G_UNLIKELY (MPEGTS_BIT_IS_SET (base->is_pes, stream->pid)))
+        GST_FIXME
+            ("Refcounting issue. Setting twice a PID (0x%04x) as known PES",
+            stream->pid);
+      if (G_UNLIKELY (MPEGTS_BIT_IS_SET (base->known_psi, stream->pid))) {
+        GST_FIXME
+            ("Refcounting issue. Setting a known PSI PID (0x%04x) as known PES",
+            stream->pid);
+        MPEGTS_BIT_UNSET (base->known_psi, stream->pid);
       }
-      case GST_MPEGTS_STREAM_TYPE_PRIVATE_SECTIONS:
-      case GST_MPEGTS_STREAM_TYPE_MHEG:
-      case GST_MPEGTS_STREAM_TYPE_DSM_CC:
-      case GST_MPEGTS_STREAM_TYPE_DSMCC_A:
-      case GST_MPEGTS_STREAM_TYPE_DSMCC_B:
-      case GST_MPEGTS_STREAM_TYPE_DSMCC_C:
-      case GST_MPEGTS_STREAM_TYPE_DSMCC_D:
-      case GST_MPEGTS_STREAM_TYPE_SL_FLEXMUX_SECTIONS:
-      case GST_MPEGTS_STREAM_TYPE_METADATA_SECTIONS:
-        /* Set known PSI streams */
-        if (base->parse_private_sections)
-          MPEGTS_BIT_SET (base->known_psi, stream->pid);
-        break;
-      default:
-        if (G_UNLIKELY (MPEGTS_BIT_IS_SET (base->is_pes, stream->pid)))
-          GST_FIXME
-              ("Refcounting issue. Setting twice a PID (0x%04x) as known PES",
-              stream->pid);
-        if (G_UNLIKELY (MPEGTS_BIT_IS_SET (base->known_psi, stream->pid))) {
-          GST_FIXME
-              ("Refcounting issue. Setting a known PSI PID (0x%04x) as known PES",
-              stream->pid);
-          MPEGTS_BIT_UNSET (base->known_psi, stream->pid);
-        }
-
-        MPEGTS_BIT_SET (base->is_pes, stream->pid);
-        break;
+      MPEGTS_BIT_SET (base->is_pes, stream->pid);
     }
     mpegts_base_program_add_stream (base, program,
         stream->pid, stream->stream_type, stream);
-
   }
   /* We add the PCR pid last. If that PID is already used by one of the media
    * streams above, no new stream will be created */
@@ -876,6 +1080,14 @@
   if (G_UNLIKELY (old_program == NULL))
     goto no_program;
 
+  if (base->streams_aware
+      && mpegts_base_is_program_update (base, old_program, section->pid, pmt)) {
+    GST_FIXME ("We are streams_aware and new program is an update");
+    /* The program is an update, and we can add/remove pads dynamically */
+    mpegts_base_update_program (base, old_program, section, pmt);
+    goto beach;
+  }
+
   if (G_UNLIKELY (mpegts_base_is_same_program (base, old_program, section->pid,
               pmt)))
     goto same_program;
@@ -903,14 +1115,18 @@
     g_hash_table_insert (base->programs,
         GINT_TO_POINTER (program_number), program);
     initial_program = FALSE;
-  } else
+  } else {
+    GST_DEBUG ("Program update, re-using same program");
     program = old_program;
+  }
 
   /* activate program */
   /* Ownership of pmt_info is given to the program */
   mpegts_base_activate_program (base, program, section->pid, section, pmt,
       initial_program);
 
+beach:
+  GST_DEBUG ("Done activating program");
   return TRUE;
 
 no_program:
@@ -1164,9 +1380,10 @@
      * we want to drop all previous observations (hard:TRUE) from
      * the packetizer */
     if (base->mode == BASE_MODE_PUSHING
-        && base->segment.format == GST_FORMAT_TIME)
+        && base->segment.format == GST_FORMAT_TIME) {
       mpegts_packetizer_flush (base->packetizer, TRUE);
-    else
+      mpegts_packetizer_clear (base->packetizer);
+    } else
       mpegts_packetizer_flush (base->packetizer, FALSE);
   }
 
@@ -1383,8 +1600,7 @@
 
 error:
   {
-    const gchar *reason = gst_flow_get_name (ret);
-    GST_DEBUG_OBJECT (base, "Pausing task, reason %s", reason);
+    GST_DEBUG_OBJECT (base, "Pausing task, reason %s", gst_flow_get_name (ret));
     if (ret == GST_FLOW_EOS) {
       if (!GST_MPEGTS_BASE_GET_CLASS (base)->push_event (base,
               gst_event_new_eos ()))
diff --git a/gst/mpegtsdemux/mpegtsbase.h b/gst/mpegtsdemux/mpegtsbase.h
index ecb15ac..0dd7859 100644
--- a/gst/mpegtsdemux/mpegtsbase.h
+++ b/gst/mpegtsdemux/mpegtsbase.h
@@ -64,6 +64,8 @@
   guint32             registration_id;
 
   GstMpegtsPMTStream *stream;
+  GstStream          *stream_object;
+  gchar              *stream_id;
 };
 
 struct _MpegTSBaseProgram
@@ -82,6 +84,8 @@
   GList              *stream_list;
   gint                patcount;
 
+  GstStreamCollection *collection;
+
   /* Pending Tags for the program */
   GstTagList *tags;
   guint event_id;
@@ -153,6 +157,10 @@
   /* Whether to push data and/or sections to subclasses */
   gboolean push_data;
   gboolean push_section;
+
+  /* Whether the parent bin is streams-aware, meaning we can
+   * add/remove streams at any point in time */
+  gboolean streams_aware;
 };
 
 struct _MpegTSBaseClass {
@@ -169,13 +177,14 @@
   void (*program_started) (MpegTSBase *base, MpegTSBaseProgram *program);
   /* program_stopped gets called when pat no longer has program's pmt */
   void (*program_stopped) (MpegTSBase *base, MpegTSBaseProgram *program);
+  void (*update_program) (MpegTSBase *base, MpegTSBaseProgram *program);
   /* Whether mpegtbase can deactivate/free a program or whether the subclass will do it
    * If the subclass responds TRUE, it should call mpegts_base_deactivate_and_free_program()
    * when it wants to remove it */
   gboolean (*can_remove_program) (MpegTSBase *base, MpegTSBaseProgram *program);
 
   /* stream_added is called whenever a new stream has been identified */
-  void (*stream_added) (MpegTSBase *base, MpegTSBaseStream *stream, MpegTSBaseProgram *program);
+  gboolean (*stream_added) (MpegTSBase *base, MpegTSBaseStream *stream, MpegTSBaseProgram *program);
   /* stream_removed is called whenever a stream is no longer referenced */
   void (*stream_removed) (MpegTSBase *base, MpegTSBaseStream *stream);
 
diff --git a/gst/mpegtsdemux/tsdemux.c b/gst/mpegtsdemux/tsdemux.c
index 0ac95bd..fe0c3a6 100644
--- a/gst/mpegtsdemux/tsdemux.c
+++ b/gst/mpegtsdemux/tsdemux.c
@@ -281,6 +281,8 @@
 
 /* mpegtsbase methods */
 static void
+gst_ts_demux_update_program (MpegTSBase * base, MpegTSBaseProgram * program);
+static void
 gst_ts_demux_program_started (MpegTSBase * base, MpegTSBaseProgram * program);
 static void
 gst_ts_demux_program_stopped (MpegTSBase * base, MpegTSBaseProgram * program);
@@ -293,7 +295,7 @@
     GstMpegtsSection * section);
 static void gst_ts_demux_flush (MpegTSBase * base, gboolean hard);
 static GstFlowReturn gst_ts_demux_drain (MpegTSBase * base);
-static void
+static gboolean
 gst_ts_demux_stream_added (MpegTSBase * base, MpegTSBaseStream * stream,
     MpegTSBaseProgram * program);
 static void
@@ -385,6 +387,7 @@
   ts_class->push_event = GST_DEBUG_FUNCPTR (push_event);
   ts_class->program_started = GST_DEBUG_FUNCPTR (gst_ts_demux_program_started);
   ts_class->program_stopped = GST_DEBUG_FUNCPTR (gst_ts_demux_program_stopped);
+  ts_class->update_program = GST_DEBUG_FUNCPTR (gst_ts_demux_update_program);
   ts_class->can_remove_program = gst_ts_demux_can_remove_program;
   ts_class->stream_added = gst_ts_demux_stream_added;
   ts_class->stream_removed = gst_ts_demux_stream_removed;
@@ -1507,10 +1510,24 @@
       caps = gst_caps_new_empty_simple ("audio/x-ac3");
       break;
     case ST_PS_AUDIO_EAC3:
+    {
       /* ATSC_ENHANCED_AC3 */
+      if (bstream->registration_id == DRF_ID_EAC3 ||
+          mpegts_get_descriptor_from_stream (bstream, GST_MTS_DESC_ATSC_EAC3)) {
+        is_audio = TRUE;
+        caps = gst_caps_new_empty_simple ("audio/x-eac3");
+        break;
+      }
+
+      GST_ELEMENT_WARNING (demux, STREAM, DEMUX,
+          ("Assuming ATSC E-AC3 audio stream."),
+          ("ATSC E-AC3 stream type found but no guarantee way found to "
+              "differentiate among other standards (DVB, ISDB and etc..)"));
+
       is_audio = TRUE;
       caps = gst_caps_new_empty_simple ("audio/x-eac3");
       break;
+    }
     case ST_PS_AUDIO_LPCM2:
       is_audio = TRUE;
       caps = gst_caps_new_empty_simple ("audio/x-private2-lpcm");
@@ -1535,7 +1552,7 @@
       caps = gst_caps_new_empty_simple ("video/x-cavs");
       break;
     default:
-      GST_WARNING ("Non-media stream (stream_type:0x%x). Not creating pad",
+      GST_DEBUG ("Non-media stream (stream_type:0x%x). Not creating pad",
           bstream->stream_type);
       break;
   }
@@ -1547,11 +1564,15 @@
       name =
           g_strdup_printf ("audio_%01x_%04x", demux->program_generation,
           bstream->pid);
+      gst_stream_set_stream_type (bstream->stream_object,
+          GST_STREAM_TYPE_AUDIO);
     } else if (is_video) {
       template = gst_static_pad_template_get (&video_template);
       name =
           g_strdup_printf ("video_%01x_%04x", demux->program_generation,
           bstream->pid);
+      gst_stream_set_stream_type (bstream->stream_object,
+          GST_STREAM_TYPE_VIDEO);
     } else if (is_private) {
       template = gst_static_pad_template_get (&private_template);
       name =
@@ -1562,6 +1583,7 @@
       name =
           g_strdup_printf ("subpicture_%01x_%04x", demux->program_generation,
           bstream->pid);
+      gst_stream_set_stream_type (bstream->stream_object, GST_STREAM_TYPE_TEXT);
     } else
       g_assert_not_reached ();
 
@@ -1569,16 +1591,14 @@
 
   if (template && name && caps) {
     GstEvent *event;
-    gchar *stream_id;
+    const gchar *stream_id;
 
     GST_LOG ("stream:%p creating pad with name %s and caps %" GST_PTR_FORMAT,
         stream, name, caps);
     pad = gst_pad_new_from_template (template, name);
     gst_pad_set_active (pad, TRUE);
     gst_pad_use_fixed_caps (pad);
-    stream_id =
-        gst_pad_create_stream_id_printf (pad, GST_ELEMENT_CAST (base), "%08x",
-        bstream->pid);
+    stream_id = gst_stream_get_stream_id (bstream->stream_object);
 
     event = gst_pad_get_sticky_event (base->sinkpad, GST_EVENT_STREAM_START, 0);
     if (event) {
@@ -1592,19 +1612,24 @@
       demux->group_id = gst_util_group_id_next ();
     }
     event = gst_event_new_stream_start (stream_id);
+    gst_event_set_stream (event, bstream->stream_object);
     if (demux->have_group_id)
       gst_event_set_group_id (event, demux->group_id);
-    if (sparse)
+    if (sparse) {
       gst_event_set_stream_flags (event, GST_STREAM_FLAG_SPARSE);
+      gst_stream_set_stream_flags (bstream->stream_object,
+          GST_STREAM_FLAG_SPARSE);
+    }
     stream->sparse = sparse;
 
     gst_pad_push_event (pad, event);
-    g_free (stream_id);
     gst_pad_set_caps (pad, caps);
+    gst_stream_set_caps (bstream->stream_object, caps);
     if (!stream->taglist)
       stream->taglist = gst_tag_list_new_empty ();
     gst_pb_utils_add_codec_description_to_tag_list (stream->taglist, NULL,
         caps);
+    gst_stream_set_tags (bstream->stream_object, stream->taglist);
     gst_pad_set_query_function (pad, gst_ts_demux_srcpad_query);
     gst_pad_set_event_function (pad, gst_ts_demux_srcpad_event);
   }
@@ -1618,7 +1643,7 @@
   return pad;
 }
 
-static void
+static gboolean
 gst_ts_demux_stream_added (MpegTSBase * base, MpegTSBaseStream * bstream,
     MpegTSBaseProgram * program)
 {
@@ -1661,6 +1686,8 @@
     stream->pending_ts = program->pcr_pid < 0x1fff;
     stream->continuity_counter = CONTINUITY_UNSET;
   }
+
+  return (stream->pad != NULL);
 }
 
 static void
@@ -1802,6 +1829,34 @@
   return TRUE;
 }
 
+static void
+gst_ts_demux_update_program (MpegTSBase * base, MpegTSBaseProgram * program)
+{
+  GstTSDemux *demux = GST_TS_DEMUX (base);
+  GList *tmp;
+
+  GST_DEBUG ("Updating program %d", program->program_number);
+  /* Emit collection message */
+  gst_element_post_message ((GstElement *) base,
+      gst_message_new_stream_collection ((GstObject *) base,
+          program->collection));
+
+  /* Add all streams, then fire no-more-pads */
+  for (tmp = program->stream_list; tmp; tmp = tmp->next) {
+    TSDemuxStream *stream = (TSDemuxStream *) tmp->data;
+    if (!stream->pad) {
+      activate_pad_for_stream (demux, stream);
+      if (stream->sparse) {
+        /* force sending of pending sticky events which have been stored on the
+         * pad already and which otherwise would only be sent on the first buffer
+         * or serialized event (which means very late in case of subtitle streams),
+         * and playsink waits for stream-start or another serialized event */
+        GST_DEBUG_OBJECT (stream->pad, "sparse stream, pushing GAP event");
+        gst_pad_push_event (stream->pad, gst_event_new_gap (0, 0));
+      }
+    }
+  }
+}
 
 static void
 gst_ts_demux_program_started (MpegTSBase * base, MpegTSBaseProgram * program)
@@ -1823,6 +1878,11 @@
     /* Increment the program_generation counter */
     demux->program_generation = (demux->program_generation + 1) & 0xf;
 
+    /* Emit collection message */
+    gst_element_post_message ((GstElement *) base,
+        gst_message_new_stream_collection ((GstObject *) base,
+            program->collection));
+
     /* If this is not the initial program, we need to calculate
      * a new segment */
     if (demux->segment_event) {
diff --git a/gst/mpegtsmux/tsmux/tsmux.c b/gst/mpegtsmux/tsmux/tsmux.c
index 638de15..ee28704 100644
--- a/gst/mpegtsmux/tsmux/tsmux.c
+++ b/gst/mpegtsmux/tsmux/tsmux.c
@@ -853,6 +853,7 @@
   gsize data_size = 0;
   gsize payload_written;
   guint len = 0, offset = 0, payload_len = 0;
+  guint extra_alloc_bytes = 0;
 
   g_return_val_if_fail (section != NULL, FALSE);
   g_return_val_if_fail (mux != NULL, FALSE);
@@ -907,12 +908,35 @@
     TS_DEBUG ("Creating packet buffer at offset "
         "%" G_GSIZE_FORMAT " with length %u", payload_written, payload_len);
 
+    /* If in M2TS mode, we will need to resize to 4 bytes after the end
+       of the buffer. For performance reasons, we will now try to include
+       4 extra bytes from the source buffer, then resize down, to avoid
+       having an extra 4 byte GstMemory appended. If the source buffer
+       does not have enough data for this, a new GstMemory will be used */
+    if (gst_buffer_get_size (section_buffer) - (payload_written +
+            payload_len) >= 4) {
+      /* enough space */
+      extra_alloc_bytes = 4;
+    }
     packet_buffer = gst_buffer_copy_region (section_buffer, GST_BUFFER_COPY_ALL,
-        payload_written, payload_len);
+        payload_written, payload_len + extra_alloc_bytes);
 
     /* Prepend the header to the section data */
     gst_buffer_prepend_memory (packet_buffer, mem);
 
+    /* add an extra 4 bytes if it could not be reserved already */
+    if (extra_alloc_bytes == 4) {
+      /* we allocated those already, resize */
+      gst_buffer_set_size (packet_buffer,
+          gst_buffer_get_size (packet_buffer) - extra_alloc_bytes);
+    } else {
+      void *ptr = g_malloc (4);
+      GstMemory *extra =
+          gst_memory_new_wrapped (GST_MEMORY_FLAG_READONLY, ptr, 4, 0, 0, ptr,
+          g_free);
+      gst_buffer_append_memory (packet_buffer, extra);
+    }
+
     TS_DEBUG ("Writing %d bytes to section. %d bytes remaining",
         len, section->pi.stream_avail - len);
 
diff --git a/gst/rawparse/gstrawbaseparse.c b/gst/rawparse/gstrawbaseparse.c
index e90f400..c2ccee5 100644
--- a/gst/rawparse/gstrawbaseparse.c
+++ b/gst/rawparse/gstrawbaseparse.c
@@ -590,8 +590,8 @@
     new_caps_event = NULL;
   }
 
-  gst_base_parse_finish_frame (parse, frame, out_size + frame->overhead);
-
+  flow_ret =
+      gst_base_parse_finish_frame (parse, frame, out_size + frame->overhead);
 
   return flow_ret;
 
diff --git a/gst/speed/gstspeed.c b/gst/speed/gstspeed.c
index 72a907d..7518de2 100644
--- a/gst/speed/gstspeed.c
+++ b/gst/speed/gstspeed.c
@@ -390,7 +390,7 @@
 
   g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_SPEED,
       g_param_spec_float ("speed", "speed", "speed",
-          0.1, 40.0, 1.0,
+          0.1f, 40.0, 1.0,
           G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS));
 
   gst_element_class_set_static_metadata (gstelement_class, "Speed",
diff --git a/gst/stereo/gststereo.c b/gst/stereo/gststereo.c
index f7e013b..3599010 100644
--- a/gst/stereo/gststereo.c
+++ b/gst/stereo/gststereo.c
@@ -102,7 +102,7 @@
 
   g_object_class_install_property (gobject_class, PROP_STEREO,
       g_param_spec_float ("stereo", "stereo", "stereo",
-          0.0, 1.0, 0.1,
+          0.0, 1.0, 0.1f,
           G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE | G_PARAM_STATIC_STRINGS));
 
   trans_class->transform_ip = GST_DEBUG_FUNCPTR (gst_stereo_transform_ip);
@@ -112,7 +112,7 @@
 gst_stereo_init (GstStereo * stereo)
 {
   stereo->active = TRUE;
-  stereo->stereo = 0.1;
+  stereo->stereo = 0.1f;
 }
 
 static GstFlowReturn
diff --git a/gst/videoparsers/gsth264parse.c b/gst/videoparsers/gsth264parse.c
index 095a645..be2f462 100644
--- a/gst/videoparsers/gsth264parse.c
+++ b/gst/videoparsers/gsth264parse.c
@@ -1829,7 +1829,8 @@
       /* Pass through or set output stereo/multiview config */
       if (s && gst_structure_has_field (s, "multiview-mode")) {
         caps_mview_mode = gst_structure_get_string (s, "multiview-mode");
-        gst_structure_get_flagset (s, "multiview-flags", &mview_flags, NULL);
+        gst_structure_get_flagset (s, "multiview-flags", (guint*) &mview_flags,
+            NULL);
       } else if (mview_mode != GST_VIDEO_MULTIVIEW_MODE_NONE) {
         if (gst_video_multiview_guess_half_aspect (mview_mode,
                 width, height, par_n, par_d)) {
diff --git a/po/af.gmo b/po/af.gmo
index 0c11cda..a57cde0 100644
--- a/po/af.gmo
+++ b/po/af.gmo
Binary files differ
diff --git a/po/af.po b/po/af.po
index afc2616..64a6133 100644
--- a/po/af.po
+++ b/po/af.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins 0.7.6\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-09-30 12:19+0300\n"
+"POT-Creation-Date: 2016-11-01 17:49+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"
@@ -126,30 +126,30 @@
 msgid "Could not open file \"%s\" for reading."
 msgstr "Kon nie lêer \"%s\" oopmaak om te lees nie."
 
-msgid "Couldn't find DVB channel configuration file"
+msgid "Couldn't find channel configuration file"
 msgstr ""
 
 #, c-format
-msgid "Couldn't load DVB channel configuration file: %s"
+msgid "Couldn't load channel configuration file: '%s'"
 msgstr ""
 
 #, c-format
-msgid "Couldn't find details for DVB channel %s"
+msgid "Couldn't find details for channel '%s'"
 msgstr ""
 
 #, c-format
-msgid "No properties for the DVB channel %s"
+msgid "No properties for channel '%s'"
 msgstr ""
 
+#, fuzzy, c-format
+msgid "Failed to set properties for channel '%s'"
+msgstr "Kon nie beheertoestel \"%s\" toemaak nie."
+
 #, c-format
-msgid "Failed to set properties for the DVB channel %s"
+msgid "Couldn't find channel configuration file: '%s'"
 msgstr ""
 
-#, c-format
-msgid "Couldn't find DVB channel configuration file: %s"
-msgstr ""
-
-msgid "DVB channel configuration file doesn't contain any channels"
+msgid "Channel configuration file doesn't contain any channels"
 msgstr ""
 
 #~ msgid "Could not write to file \"%s\"."
diff --git a/po/az.gmo b/po/az.gmo
index f1eb31e..605ab71 100644
--- a/po/az.gmo
+++ b/po/az.gmo
Binary files differ
diff --git a/po/az.po b/po/az.po
index bae75a2..1d1ebbb 100644
--- a/po/az.po
+++ b/po/az.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-0.8.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-09-30 12:19+0300\n"
+"POT-Creation-Date: 2016-11-01 17:49+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"
@@ -127,30 +127,30 @@
 msgid "Could not open file \"%s\" for reading."
 msgstr "\"%s\" faylı oxuma üçün açıla bilmədi."
 
-msgid "Couldn't find DVB channel configuration file"
+msgid "Couldn't find channel configuration file"
 msgstr ""
 
 #, c-format
-msgid "Couldn't load DVB channel configuration file: %s"
+msgid "Couldn't load channel configuration file: '%s'"
 msgstr ""
 
 #, c-format
-msgid "Couldn't find details for DVB channel %s"
+msgid "Couldn't find details for channel '%s'"
 msgstr ""
 
 #, c-format
-msgid "No properties for the DVB channel %s"
+msgid "No properties for channel '%s'"
 msgstr ""
 
+#, fuzzy, c-format
+msgid "Failed to set properties for channel '%s'"
+msgstr "\"%s\" idarə avadanlığı bağlana bilmədi."
+
 #, c-format
-msgid "Failed to set properties for the DVB channel %s"
+msgid "Couldn't find channel configuration file: '%s'"
 msgstr ""
 
-#, c-format
-msgid "Couldn't find DVB channel configuration file: %s"
-msgstr ""
-
-msgid "DVB channel configuration file doesn't contain any channels"
+msgid "Channel configuration file doesn't contain any channels"
 msgstr ""
 
 #~ msgid "Could not write to file \"%s\"."
diff --git a/po/bg.gmo b/po/bg.gmo
index 0a21e7f..afc5d30 100644
--- a/po/bg.gmo
+++ b/po/bg.gmo
Binary files differ
diff --git a/po/bg.po b/po/bg.po
index 8b52a90..ce0a532 100644
--- a/po/bg.po
+++ b/po/bg.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.7.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-09-30 12:19+0300\n"
+"POT-Creation-Date: 2016-11-01 17:49+0200\n"
 "PO-Revision-Date: 2016-02-21 21:03+0200\n"
 "Last-Translator: Alexander Shopov <ash@kambanaria.org>\n"
 "Language-Team: Bulgarian <dict@ludost.net>\n"
@@ -128,36 +128,38 @@
 msgid "Could not open file \"%s\" for reading."
 msgstr "Файлът „%s“ не може да се отвори за четене."
 
-msgid "Couldn't find DVB channel configuration file"
+#, fuzzy
+msgid "Couldn't find channel configuration file"
 msgstr ""
 "Файлът с настройките на цифровото видеоръзпръскване (DVB) не може да бъде "
 "открит"
 
-#, c-format
-msgid "Couldn't load DVB channel configuration file: %s"
+#, fuzzy, c-format
+msgid "Couldn't load channel configuration file: '%s'"
 msgstr ""
 "Файлът с настройките на цифровото видеоръзпръскване (DVB) „%s“ не може да "
 "бъде прочетен"
 
-#, c-format
-msgid "Couldn't find details for DVB channel %s"
+#, fuzzy, c-format
+msgid "Couldn't find details for channel '%s'"
 msgstr "Липсват данни за канала за цифрово видеоръзпръскване (DVB) „%s“"
 
 #, fuzzy, c-format
-msgid "No properties for the DVB channel %s"
+msgid "No properties for channel '%s'"
 msgstr "Липсват данни за канала за цифрово видеоръзпръскване (DVB) „%s“"
 
 #, fuzzy, c-format
-msgid "Failed to set properties for the DVB channel %s"
+msgid "Failed to set properties for channel '%s'"
 msgstr "Липсват данни за канала за цифрово видеоръзпръскване (DVB) „%s“"
 
 #, fuzzy, c-format
-msgid "Couldn't find DVB channel configuration file: %s"
+msgid "Couldn't find channel configuration file: '%s'"
 msgstr ""
 "Файлът с настройките на цифровото видеоръзпръскване (DVB) не може да бъде "
 "открит"
 
-msgid "DVB channel configuration file doesn't contain any channels"
+#, fuzzy
+msgid "Channel configuration file doesn't contain any channels"
 msgstr ""
 "Файлът с настройките на цифровото видеоръзпръскване (DVB) не съдържа никакви "
 "канали"
diff --git a/po/ca.gmo b/po/ca.gmo
index a3d82a1..a364e57 100644
--- a/po/ca.gmo
+++ b/po/ca.gmo
Binary files differ
diff --git a/po/ca.po b/po/ca.po
index 3c63fa6..42ca5a5 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 0.10.21.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-09-30 12:19+0300\n"
+"POT-Creation-Date: 2016-11-01 17:49+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"
@@ -128,30 +128,30 @@
 msgid "Could not open file \"%s\" for reading."
 msgstr "No s'ha pogut obrir el fitxer «%s» per a la lectura."
 
-msgid "Couldn't find DVB channel configuration file"
+msgid "Couldn't find channel configuration file"
 msgstr ""
 
 #, c-format
-msgid "Couldn't load DVB channel configuration file: %s"
+msgid "Couldn't load channel configuration file: '%s'"
 msgstr ""
 
 #, c-format
-msgid "Couldn't find details for DVB channel %s"
+msgid "Couldn't find details for channel '%s'"
 msgstr ""
 
 #, c-format
-msgid "No properties for the DVB channel %s"
+msgid "No properties for channel '%s'"
 msgstr ""
 
+#, fuzzy, c-format
+msgid "Failed to set properties for channel '%s'"
+msgstr "No s'ha pogut obrir el dispositiu de DVD «%s»."
+
 #, c-format
-msgid "Failed to set properties for the DVB channel %s"
+msgid "Couldn't find channel configuration file: '%s'"
 msgstr ""
 
-#, c-format
-msgid "Couldn't find DVB channel configuration file: %s"
-msgstr ""
-
-msgid "DVB channel configuration file doesn't contain any channels"
+msgid "Channel configuration file doesn't contain any channels"
 msgstr ""
 
 #~ msgid "Internal data flow error."
diff --git a/po/cs.gmo b/po/cs.gmo
index 58531f8..7b8e5bb 100644
--- a/po/cs.gmo
+++ b/po/cs.gmo
Binary files differ
diff --git a/po/cs.po b/po/cs.po
index 4d6c56e..57929d0 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -11,7 +11,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.6.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-09-30 12:19+0300\n"
+"POT-Creation-Date: 2016-11-01 17:49+0200\n"
 "PO-Revision-Date: 2015-10-15 20:54+0200\n"
 "Last-Translator: Marek Černocký <marek@manet.cz>\n"
 "Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n"
@@ -134,30 +134,32 @@
 msgid "Could not open file \"%s\" for reading."
 msgstr "Nezdařilo se otevření souboru „%s“ ke čtení."
 
-msgid "Couldn't find DVB channel configuration file"
+#, fuzzy
+msgid "Couldn't find channel configuration file"
 msgstr "Nelze najít soubor s nastavením kanálů DVB"
 
-#, c-format
-msgid "Couldn't load DVB channel configuration file: %s"
+#, fuzzy, c-format
+msgid "Couldn't load channel configuration file: '%s'"
 msgstr "Nelze načíst soubor s nastavením kanálu DVB: %s"
 
-#, c-format
-msgid "Couldn't find details for DVB channel %s"
+#, fuzzy, c-format
+msgid "Couldn't find details for channel '%s'"
 msgstr "Nelze najít podrobnosti ke kanálu DVB %s"
 
 #, fuzzy, c-format
-msgid "No properties for the DVB channel %s"
+msgid "No properties for channel '%s'"
 msgstr "Nelze najít podrobnosti ke kanálu DVB %s"
 
 #, fuzzy, c-format
-msgid "Failed to set properties for the DVB channel %s"
+msgid "Failed to set properties for channel '%s'"
 msgstr "Nelze najít podrobnosti ke kanálu DVB %s"
 
 #, fuzzy, c-format
-msgid "Couldn't find DVB channel configuration file: %s"
+msgid "Couldn't find channel configuration file: '%s'"
 msgstr "Nelze najít soubor s nastavením kanálů DVB"
 
-msgid "DVB channel configuration file doesn't contain any channels"
+#, fuzzy
+msgid "Channel configuration file doesn't contain any channels"
 msgstr "Soubor s nastavením kanálů DVB neobsahuje žádné kanály"
 
 #~ msgid "Internal data flow error."
diff --git a/po/da.gmo b/po/da.gmo
index 3fde8f2..68bbac1 100644
--- a/po/da.gmo
+++ b/po/da.gmo
Binary files differ
diff --git a/po/da.po b/po/da.po
index ed4a584..9b2943d 100644
--- a/po/da.po
+++ b/po/da.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad-1.6.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-09-30 12:19+0300\n"
+"POT-Creation-Date: 2016-11-01 17:49+0200\n"
 "PO-Revision-Date: 2015-12-05 11:28+0200\n"
 "Last-Translator: Joe Hansen <joedalton2@yahoo.dk>\n"
 "Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
@@ -126,30 +126,32 @@
 msgid "Could not open file \"%s\" for reading."
 msgstr "Kunne ikke åbne filen »%s« for læsning."
 
-msgid "Couldn't find DVB channel configuration file"
+#, fuzzy
+msgid "Couldn't find channel configuration file"
 msgstr "Kunne ikke finde DVB-kanalens konfigurationsfil"
 
-#, c-format
-msgid "Couldn't load DVB channel configuration file: %s"
+#, fuzzy, c-format
+msgid "Couldn't load channel configuration file: '%s'"
 msgstr "Kunne ikke indlæse DVB-kanalens konfigurationsfil: %s"
 
-#, c-format
-msgid "Couldn't find details for DVB channel %s"
+#, fuzzy, c-format
+msgid "Couldn't find details for channel '%s'"
 msgstr "Kunne ikke finde detaljer for DVB-kanalen %s"
 
 #, fuzzy, c-format
-msgid "No properties for the DVB channel %s"
+msgid "No properties for channel '%s'"
 msgstr "Kunne ikke finde detaljer for DVB-kanalen %s"
 
 #, fuzzy, c-format
-msgid "Failed to set properties for the DVB channel %s"
+msgid "Failed to set properties for channel '%s'"
 msgstr "Kunne ikke finde detaljer for DVB-kanalen %s"
 
 #, fuzzy, c-format
-msgid "Couldn't find DVB channel configuration file: %s"
+msgid "Couldn't find channel configuration file: '%s'"
 msgstr "Kunne ikke finde DVB-kanalens konfigurationsfil"
 
-msgid "DVB channel configuration file doesn't contain any channels"
+#, fuzzy
+msgid "Channel configuration file doesn't contain any channels"
 msgstr "DVB-kanalens konfigurationsfil indeholder ikke nogen kanaler"
 
 #~ msgid "Internal data flow error."
diff --git a/po/de.gmo b/po/de.gmo
index 4f6245c..c3ffede 100644
--- a/po/de.gmo
+++ b/po/de.gmo
Binary files differ
diff --git a/po/de.po b/po/de.po
index 64537bb..aa6165e 100644
--- a/po/de.po
+++ b/po/de.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.6.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-09-30 12:19+0300\n"
+"POT-Creation-Date: 2016-11-01 17:49+0200\n"
 "PO-Revision-Date: 2015-10-21 00:15+0200\n"
 "Last-Translator: Christian Kirbach <christian.kirbach@gmail.com>\n"
 "Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
@@ -136,30 +136,32 @@
 msgid "Could not open file \"%s\" for reading."
 msgstr "Datei »%s« konnte nicht zum Lesen geöffnet werden."
 
-msgid "Couldn't find DVB channel configuration file"
+#, fuzzy
+msgid "Couldn't find channel configuration file"
 msgstr "DVB Kanal-Konfigurationsdatei konnte nicht gefunden werden"
 
-#, c-format
-msgid "Couldn't load DVB channel configuration file: %s"
+#, fuzzy, c-format
+msgid "Couldn't load channel configuration file: '%s'"
 msgstr "DVB Kanal-Konfigurationsdatei konnte nicht geladen werden: %s"
 
-#, c-format
-msgid "Couldn't find details for DVB channel %s"
+#, fuzzy, c-format
+msgid "Couldn't find details for channel '%s'"
 msgstr "Details zu DVB-Kanal %s konnten nicht gefunden werden"
 
 #, fuzzy, c-format
-msgid "No properties for the DVB channel %s"
+msgid "No properties for channel '%s'"
 msgstr "Details zu DVB-Kanal %s konnten nicht gefunden werden"
 
 #, fuzzy, c-format
-msgid "Failed to set properties for the DVB channel %s"
+msgid "Failed to set properties for channel '%s'"
 msgstr "Details zu DVB-Kanal %s konnten nicht gefunden werden"
 
 #, fuzzy, c-format
-msgid "Couldn't find DVB channel configuration file: %s"
+msgid "Couldn't find channel configuration file: '%s'"
 msgstr "DVB Kanal-Konfigurationsdatei konnte nicht gefunden werden"
 
-msgid "DVB channel configuration file doesn't contain any channels"
+#, fuzzy
+msgid "Channel configuration file doesn't contain any channels"
 msgstr "DVB Kanal-Konfigurationsdatei enthält keine Kanäle"
 
 #~ msgid "Internal data flow error."
diff --git a/po/el.gmo b/po/el.gmo
index 7d5900e..a8d08f0 100644
--- a/po/el.gmo
+++ b/po/el.gmo
Binary files differ
diff --git a/po/el.po b/po/el.po
index 1b6e0c1..23b9f0f 100644
--- a/po/el.po
+++ b/po/el.po
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 0.10.21.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-09-30 12:19+0300\n"
+"POT-Creation-Date: 2016-11-01 17:49+0200\n"
 "PO-Revision-Date: 2012-05-05 19:17+0100\n"
 "Last-Translator: Savvas Radevic <vicedar@gmail.com>\n"
 "Language-Team: Greek <team@lists.gnome.gr>\n"
@@ -129,30 +129,30 @@
 msgid "Could not open file \"%s\" for reading."
 msgstr "Αδυναμία ανοίγματος αρχείου \"%s\" για ανάγνωση."
 
-msgid "Couldn't find DVB channel configuration file"
+msgid "Couldn't find channel configuration file"
 msgstr ""
 
 #, c-format
-msgid "Couldn't load DVB channel configuration file: %s"
+msgid "Couldn't load channel configuration file: '%s'"
 msgstr ""
 
 #, c-format
-msgid "Couldn't find details for DVB channel %s"
+msgid "Couldn't find details for channel '%s'"
 msgstr ""
 
 #, c-format
-msgid "No properties for the DVB channel %s"
+msgid "No properties for channel '%s'"
 msgstr ""
 
+#, fuzzy, c-format
+msgid "Failed to set properties for channel '%s'"
+msgstr "Αποτυχία ανοίγματος της συσκευής DVD '%s'."
+
 #, c-format
-msgid "Failed to set properties for the DVB channel %s"
+msgid "Couldn't find channel configuration file: '%s'"
 msgstr ""
 
-#, c-format
-msgid "Couldn't find DVB channel configuration file: %s"
-msgstr ""
-
-msgid "DVB channel configuration file doesn't contain any channels"
+msgid "Channel configuration file doesn't contain any channels"
 msgstr ""
 
 #~ msgid "Internal data flow error."
diff --git a/po/en_GB.gmo b/po/en_GB.gmo
index 7e4eec7..b98b223 100644
--- a/po/en_GB.gmo
+++ b/po/en_GB.gmo
Binary files differ
diff --git a/po/en_GB.po b/po/en_GB.po
index f4eea15..2b2892d 100644
--- a/po/en_GB.po
+++ b/po/en_GB.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins 0.8.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-09-30 12:19+0300\n"
+"POT-Creation-Date: 2016-11-01 17:49+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"
@@ -125,30 +125,30 @@
 msgid "Could not open file \"%s\" for reading."
 msgstr "Could not open file \"%s\" for reading."
 
-msgid "Couldn't find DVB channel configuration file"
+msgid "Couldn't find channel configuration file"
 msgstr ""
 
 #, c-format
-msgid "Couldn't load DVB channel configuration file: %s"
+msgid "Couldn't load channel configuration file: '%s'"
 msgstr ""
 
 #, c-format
-msgid "Couldn't find details for DVB channel %s"
+msgid "Couldn't find details for channel '%s'"
 msgstr ""
 
 #, c-format
-msgid "No properties for the DVB channel %s"
+msgid "No properties for channel '%s'"
 msgstr ""
 
+#, fuzzy, c-format
+msgid "Failed to set properties for channel '%s'"
+msgstr "Could not close control device \"%s\"."
+
 #, c-format
-msgid "Failed to set properties for the DVB channel %s"
+msgid "Couldn't find channel configuration file: '%s'"
 msgstr ""
 
-#, c-format
-msgid "Couldn't find DVB channel configuration file: %s"
-msgstr ""
-
-msgid "DVB channel configuration file doesn't contain any channels"
+msgid "Channel configuration file doesn't contain any channels"
 msgstr ""
 
 #~ msgid "Could not write to file \"%s\"."
diff --git a/po/eo.gmo b/po/eo.gmo
index bd10fce..5ffa96b 100644
--- a/po/eo.gmo
+++ b/po/eo.gmo
Binary files differ
diff --git a/po/eo.po b/po/eo.po
index 45e2583..885ecb4 100644
--- a/po/eo.po
+++ b/po/eo.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 0.10.21.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-09-30 12:19+0300\n"
+"POT-Creation-Date: 2016-11-01 17:49+0200\n"
 "PO-Revision-Date: 2011-06-04 22:18+0200\n"
 "Last-Translator: Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>\n"
 "Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n"
@@ -126,30 +126,30 @@
 msgid "Could not open file \"%s\" for reading."
 msgstr "Ne eblis malfermi la dosieron \"%s\" por legi."
 
-msgid "Couldn't find DVB channel configuration file"
+msgid "Couldn't find channel configuration file"
 msgstr ""
 
 #, c-format
-msgid "Couldn't load DVB channel configuration file: %s"
+msgid "Couldn't load channel configuration file: '%s'"
 msgstr ""
 
 #, c-format
-msgid "Couldn't find details for DVB channel %s"
+msgid "Couldn't find details for channel '%s'"
 msgstr ""
 
 #, c-format
-msgid "No properties for the DVB channel %s"
+msgid "No properties for channel '%s'"
 msgstr ""
 
+#, fuzzy, c-format
+msgid "Failed to set properties for channel '%s'"
+msgstr "Fiaskis malfermi la DVD-aparaton \"%s\"."
+
 #, c-format
-msgid "Failed to set properties for the DVB channel %s"
+msgid "Couldn't find channel configuration file: '%s'"
 msgstr ""
 
-#, c-format
-msgid "Couldn't find DVB channel configuration file: %s"
-msgstr ""
-
-msgid "DVB channel configuration file doesn't contain any channels"
+msgid "Channel configuration file doesn't contain any channels"
 msgstr ""
 
 #~ msgid "Internal data flow error."
diff --git a/po/es.gmo b/po/es.gmo
index 238d0a9..82ab8d8 100644
--- a/po/es.gmo
+++ b/po/es.gmo
Binary files differ
diff --git a/po/es.po b/po/es.po
index 898a4ec..058c7de 100644
--- a/po/es.po
+++ b/po/es.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 0.10.21.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-09-30 12:19+0300\n"
+"POT-Creation-Date: 2016-11-01 17:49+0200\n"
 "PO-Revision-Date: 2011-10-02 15:47+0200\n"
 "Last-Translator: Jorge González González <aloriel@gmail.com>\n"
 "Language-Team: Spanish <es@li.org>\n"
@@ -127,30 +127,30 @@
 msgstr "No se pudo abrir el archivo «%s» para leer."
 
 #, fuzzy
-msgid "Couldn't find DVB channel configuration file"
+msgid "Couldn't find channel configuration file"
 msgstr "Configuración del canal del mezclador virtual"
 
 #, fuzzy, c-format
-msgid "Couldn't load DVB channel configuration file: %s"
+msgid "Couldn't load channel configuration file: '%s'"
 msgstr "Configuración del canal del mezclador virtual"
 
 #, c-format
-msgid "Couldn't find details for DVB channel %s"
+msgid "Couldn't find details for channel '%s'"
 msgstr ""
 
 #, c-format
-msgid "No properties for the DVB channel %s"
-msgstr ""
-
-#, c-format
-msgid "Failed to set properties for the DVB channel %s"
+msgid "No properties for channel '%s'"
 msgstr ""
 
 #, fuzzy, c-format
-msgid "Couldn't find DVB channel configuration file: %s"
+msgid "Failed to set properties for channel '%s'"
+msgstr "Falló abrir el dispositivo DVD «%s»."
+
+#, fuzzy, c-format
+msgid "Couldn't find channel configuration file: '%s'"
 msgstr "Configuración del canal del mezclador virtual"
 
-msgid "DVB channel configuration file doesn't contain any channels"
+msgid "Channel configuration file doesn't contain any channels"
 msgstr ""
 
 #~ msgid "Internal data flow error."
diff --git a/po/eu.gmo b/po/eu.gmo
index 3fedd14..29013b5 100644
--- a/po/eu.gmo
+++ b/po/eu.gmo
Binary files differ
diff --git a/po/eu.po b/po/eu.po
index 52c80e5..a778c4a 100644
--- a/po/eu.po
+++ b/po/eu.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad-0.10.17.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-09-30 12:19+0300\n"
+"POT-Creation-Date: 2016-11-01 17:49+0200\n"
 "PO-Revision-Date: 2010-03-25 12:30+0100\n"
 "Last-Translator: Mikel Olasagasti Uranga <hey_neken@mundurat.net>\n"
 "Language-Team: Basque <translation-team-eu@lists.sourceforge.net>\n"
@@ -127,30 +127,30 @@
 msgid "Could not open file \"%s\" for reading."
 msgstr "Ezin izan da \"%s\" fitxategia ireki irakurtzeko."
 
-msgid "Couldn't find DVB channel configuration file"
+msgid "Couldn't find channel configuration file"
 msgstr ""
 
 #, c-format
-msgid "Couldn't load DVB channel configuration file: %s"
+msgid "Couldn't load channel configuration file: '%s'"
 msgstr ""
 
 #, c-format
-msgid "Couldn't find details for DVB channel %s"
+msgid "Couldn't find details for channel '%s'"
 msgstr ""
 
 #, c-format
-msgid "No properties for the DVB channel %s"
+msgid "No properties for channel '%s'"
 msgstr ""
 
+#, fuzzy, c-format
+msgid "Failed to set properties for channel '%s'"
+msgstr "Huts egin du '%s' DVD gailua irekitzean."
+
 #, c-format
-msgid "Failed to set properties for the DVB channel %s"
+msgid "Couldn't find channel configuration file: '%s'"
 msgstr ""
 
-#, c-format
-msgid "Couldn't find DVB channel configuration file: %s"
-msgstr ""
-
-msgid "DVB channel configuration file doesn't contain any channels"
+msgid "Channel configuration file doesn't contain any channels"
 msgstr ""
 
 #~ msgid "Internal data flow error."
diff --git a/po/fi.gmo b/po/fi.gmo
index d61e65e..ef20085 100644
--- a/po/fi.gmo
+++ b/po/fi.gmo
Binary files differ
diff --git a/po/fi.po b/po/fi.po
index c86d78e..dabbbf8 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -11,7 +11,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 0.10.13.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-09-30 12:19+0300\n"
+"POT-Creation-Date: 2016-11-01 17:49+0200\n"
 "PO-Revision-Date: 2009-08-12 22:13+0300\n"
 "Last-Translator: Tommi Vainikainen <Tommi.Vainikainen@iki.fi>\n"
 "Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
@@ -131,30 +131,30 @@
 msgstr "Tiedostoa \"%s\" ei voi avata luettavaksi."
 
 #, fuzzy
-msgid "Couldn't find DVB channel configuration file"
+msgid "Couldn't find channel configuration file"
 msgstr "Näennäinen mikserikanava-asetus"
 
 #, fuzzy, c-format
-msgid "Couldn't load DVB channel configuration file: %s"
+msgid "Couldn't load channel configuration file: '%s'"
 msgstr "Näennäinen mikserikanava-asetus"
 
 #, c-format
-msgid "Couldn't find details for DVB channel %s"
+msgid "Couldn't find details for channel '%s'"
 msgstr ""
 
 #, c-format
-msgid "No properties for the DVB channel %s"
-msgstr ""
-
-#, c-format
-msgid "Failed to set properties for the DVB channel %s"
+msgid "No properties for channel '%s'"
 msgstr ""
 
 #, fuzzy, c-format
-msgid "Couldn't find DVB channel configuration file: %s"
+msgid "Failed to set properties for channel '%s'"
+msgstr "DVD-laitetta \"%s\" ei voitu avata."
+
+#, fuzzy, c-format
+msgid "Couldn't find channel configuration file: '%s'"
 msgstr "Näennäinen mikserikanava-asetus"
 
-msgid "DVB channel configuration file doesn't contain any channels"
+msgid "Channel configuration file doesn't contain any channels"
 msgstr ""
 
 #~ msgid "Internal data flow error."
diff --git a/po/fr.gmo b/po/fr.gmo
index d7d5691..f400826 100644
--- a/po/fr.gmo
+++ b/po/fr.gmo
Binary files differ
diff --git a/po/fr.po b/po/fr.po
index 024fa49..ae25b1c 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.7.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-09-30 12:19+0300\n"
+"POT-Creation-Date: 2016-11-01 17:49+0200\n"
 "PO-Revision-Date: 2016-02-20 16:27+0100\n"
 "Last-Translator: Stéphane Aulery <lkppo@free.fr>\n"
 "Language-Team: French <traduc@traduc.org>\n"
@@ -130,30 +130,32 @@
 msgid "Could not open file \"%s\" for reading."
 msgstr "Impossible d’ouvrir le fichier « %s » en lecture."
 
-msgid "Couldn't find DVB channel configuration file"
+#, fuzzy
+msgid "Couldn't find channel configuration file"
 msgstr "Impossible de trouver le fichier de configuration de canal DVB"
 
-#, c-format
-msgid "Couldn't load DVB channel configuration file: %s"
+#, fuzzy, c-format
+msgid "Couldn't load channel configuration file: '%s'"
 msgstr "Impossible de charger le fichier de configuration de canal DVB : %s"
 
-#, c-format
-msgid "Couldn't find details for DVB channel %s"
+#, fuzzy, c-format
+msgid "Couldn't find details for channel '%s'"
 msgstr "Impossible de trouver des informations sur le canal DVB %s"
 
 #, fuzzy, c-format
-msgid "No properties for the DVB channel %s"
+msgid "No properties for channel '%s'"
 msgstr "Impossible de trouver des informations sur le canal DVB %s"
 
 #, fuzzy, c-format
-msgid "Failed to set properties for the DVB channel %s"
+msgid "Failed to set properties for channel '%s'"
 msgstr "Impossible de trouver des informations sur le canal DVB %s"
 
 #, fuzzy, c-format
-msgid "Couldn't find DVB channel configuration file: %s"
+msgid "Couldn't find channel configuration file: '%s'"
 msgstr "Impossible de trouver le fichier de configuration de canal DVB"
 
-msgid "DVB channel configuration file doesn't contain any channels"
+#, fuzzy
+msgid "Channel configuration file doesn't contain any channels"
 msgstr "Le fichier de configuration de canal DVB ne contient aucun canal"
 
 #~ msgid "Internal data flow error."
diff --git a/po/gl.gmo b/po/gl.gmo
index 7173231..8cb3550 100644
--- a/po/gl.gmo
+++ b/po/gl.gmo
Binary files differ
diff --git a/po/gl.po b/po/gl.po
index 027a614..a45ff76 100644
--- a/po/gl.po
+++ b/po/gl.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 0.10.21.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-09-30 12:19+0300\n"
+"POT-Creation-Date: 2016-11-01 17:49+0200\n"
 "PO-Revision-Date: 2011-09-05 12:50+0200\n"
 "Last-Translator: Fran Dieguez <frandieguez@ubuntu.com>\n"
 "Language-Team: Galician <proxecto@trasno.net>\n"
@@ -128,30 +128,30 @@
 msgid "Could not open file \"%s\" for reading."
 msgstr "Non foi posíbel abrir o ficheiro «%s» para ler."
 
-msgid "Couldn't find DVB channel configuration file"
+msgid "Couldn't find channel configuration file"
 msgstr ""
 
 #, c-format
-msgid "Couldn't load DVB channel configuration file: %s"
+msgid "Couldn't load channel configuration file: '%s'"
 msgstr ""
 
 #, c-format
-msgid "Couldn't find details for DVB channel %s"
+msgid "Couldn't find details for channel '%s'"
 msgstr ""
 
 #, c-format
-msgid "No properties for the DVB channel %s"
+msgid "No properties for channel '%s'"
 msgstr ""
 
+#, fuzzy, c-format
+msgid "Failed to set properties for channel '%s'"
+msgstr "Produciuse un fallo ao abrir o dispositivo DVD «%s»."
+
 #, c-format
-msgid "Failed to set properties for the DVB channel %s"
+msgid "Couldn't find channel configuration file: '%s'"
 msgstr ""
 
-#, c-format
-msgid "Couldn't find DVB channel configuration file: %s"
-msgstr ""
-
-msgid "DVB channel configuration file doesn't contain any channels"
+msgid "Channel configuration file doesn't contain any channels"
 msgstr ""
 
 #~ msgid "Internal data flow error."
diff --git a/po/gst-plugins-bad-1.0.pot b/po/gst-plugins-bad-1.0.pot
index a21ccb3..06185d2 100644
--- a/po/gst-plugins-bad-1.0.pot
+++ b/po/gst-plugins-bad-1.0.pot
@@ -5,9 +5,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: gst-plugins-bad 1.9.90\n"
+"Project-Id-Version: gst-plugins-bad 1.10.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-09-30 12:19+0300\n"
+"POT-Creation-Date: 2016-11-01 17:49+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"
@@ -102,16 +102,16 @@
 msgid "Subpicture format was not configured before data flow"
 msgstr ""
 
-#: gst-libs/gst/adaptivedemux/gstadaptivedemux.c:3056
+#: gst-libs/gst/adaptivedemux/gstadaptivedemux.c:3111
 msgid "Failed to get fragment URL."
 msgstr ""
 
-#: gst-libs/gst/adaptivedemux/gstadaptivedemux.c:3407
+#: gst-libs/gst/adaptivedemux/gstadaptivedemux.c:3462
 msgid "Couldn't download fragments"
 msgstr ""
 
-#: gst-libs/gst/adaptivedemux/gstadaptivedemux.c:3496
-#: gst/mpegtsdemux/mpegtsbase.c:1392
+#: gst-libs/gst/adaptivedemux/gstadaptivedemux.c:3551
+#: gst/mpegtsdemux/mpegtsbase.c:1608
 msgid "Internal data stream error."
 msgstr ""
 
@@ -129,60 +129,60 @@
 msgid "Could not open file \"%s\" for writing."
 msgstr ""
 
-#: sys/dvb/gstdvbsrc.c:1567 sys/dvb/gstdvbsrc.c:1780
+#: sys/dvb/gstdvbsrc.c:1571 sys/dvb/gstdvbsrc.c:1784
 #, c-format
 msgid "Device \"%s\" does not exist."
 msgstr ""
 
-#: sys/dvb/gstdvbsrc.c:1571
+#: sys/dvb/gstdvbsrc.c:1575
 #, c-format
 msgid "Could not open frontend device \"%s\"."
 msgstr ""
 
-#: sys/dvb/gstdvbsrc.c:1590
+#: sys/dvb/gstdvbsrc.c:1594
 #, c-format
 msgid "Could not get settings from frontend device \"%s\"."
 msgstr ""
 
-#: sys/dvb/gstdvbsrc.c:1607
+#: sys/dvb/gstdvbsrc.c:1611
 #, c-format
 msgid "Cannot enumerate delivery systems from frontend device \"%s\"."
 msgstr ""
 
-#: sys/dvb/gstdvbsrc.c:1784
+#: sys/dvb/gstdvbsrc.c:1788
 #, c-format
 msgid "Could not open file \"%s\" for reading."
 msgstr ""
 
-#: sys/dvb/parsechannels.c:359
-msgid "Couldn't find DVB channel configuration file"
+#: sys/dvb/parsechannels.c:410
+msgid "Couldn't find channel configuration file"
 msgstr ""
 
-#: sys/dvb/parsechannels.c:362 sys/dvb/parsechannels.c:518
+#: sys/dvb/parsechannels.c:413 sys/dvb/parsechannels.c:563
 #, c-format
-msgid "Couldn't load DVB channel configuration file: %s"
+msgid "Couldn't load channel configuration file: '%s'"
 msgstr ""
 
-#: sys/dvb/parsechannels.c:371 sys/dvb/parsechannels.c:803
+#: sys/dvb/parsechannels.c:421 sys/dvb/parsechannels.c:846
 #, c-format
-msgid "Couldn't find details for DVB channel %s"
+msgid "Couldn't find details for channel '%s'"
 msgstr ""
 
-#: sys/dvb/parsechannels.c:381
+#: sys/dvb/parsechannels.c:430
 #, c-format
-msgid "No properties for the DVB channel %s"
+msgid "No properties for channel '%s'"
 msgstr ""
 
-#: sys/dvb/parsechannels.c:391
+#: sys/dvb/parsechannels.c:439
 #, c-format
-msgid "Failed to set properties for the DVB channel %s"
+msgid "Failed to set properties for channel '%s'"
 msgstr ""
 
-#: sys/dvb/parsechannels.c:515
+#: sys/dvb/parsechannels.c:560
 #, c-format
-msgid "Couldn't find DVB channel configuration file: %s"
+msgid "Couldn't find channel configuration file: '%s'"
 msgstr ""
 
-#: sys/dvb/parsechannels.c:525
-msgid "DVB channel configuration file doesn't contain any channels"
+#: sys/dvb/parsechannels.c:570
+msgid "Channel configuration file doesn't contain any channels"
 msgstr ""
diff --git a/po/hr.gmo b/po/hr.gmo
index b15b5c8..05a8898 100644
--- a/po/hr.gmo
+++ b/po/hr.gmo
Binary files differ
diff --git a/po/hr.po b/po/hr.po
index 0f18211..ade3d34 100644
--- a/po/hr.po
+++ b/po/hr.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.7.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-09-30 12:19+0300\n"
+"POT-Creation-Date: 2016-11-01 17:49+0200\n"
 "PO-Revision-Date: 2016-05-27 12:45-0700\n"
 "Last-Translator: Božidar Putanec <bozidarp@yahoo.com>\n"
 "Language-Team: Croatian <lokalizacija@linux.hr>\n"
@@ -133,30 +133,32 @@
 msgid "Could not open file \"%s\" for reading."
 msgstr "Datoteku „%s“ nije moguće otvoriti za čitanje."
 
-msgid "Couldn't find DVB channel configuration file"
+#, fuzzy
+msgid "Couldn't find channel configuration file"
 msgstr "Konfiguracijsku datoteku za DVB kanal nije moguće pronaći"
 
-#, c-format
-msgid "Couldn't load DVB channel configuration file: %s"
+#, fuzzy, c-format
+msgid "Couldn't load channel configuration file: '%s'"
 msgstr "Nije moguće učitati konfiguracijsku datoteku za DVB kanal: %s"
 
-#, c-format
-msgid "Couldn't find details for DVB channel %s"
+#, fuzzy, c-format
+msgid "Couldn't find details for channel '%s'"
 msgstr "Pojedinosti za DVB kanal %s nije moguće pronaći"
 
 #, fuzzy, c-format
-msgid "No properties for the DVB channel %s"
+msgid "No properties for channel '%s'"
 msgstr "Pojedinosti za DVB kanal %s nije moguće pronaći"
 
 #, fuzzy, c-format
-msgid "Failed to set properties for the DVB channel %s"
+msgid "Failed to set properties for channel '%s'"
 msgstr "Pojedinosti za DVB kanal %s nije moguće pronaći"
 
 #, fuzzy, c-format
-msgid "Couldn't find DVB channel configuration file: %s"
+msgid "Couldn't find channel configuration file: '%s'"
 msgstr "Konfiguracijsku datoteku za DVB kanal nije moguće pronaći"
 
-msgid "DVB channel configuration file doesn't contain any channels"
+#, fuzzy
+msgid "Channel configuration file doesn't contain any channels"
 msgstr "Konfiguracijska datoteka za DVB kanal ne sadrži nijedan kanal"
 
 #~ msgid "Internal data flow error."
diff --git a/po/hu.gmo b/po/hu.gmo
index c4ee658..b3f5957 100644
--- a/po/hu.gmo
+++ b/po/hu.gmo
Binary files differ
diff --git a/po/hu.po b/po/hu.po
index 1079e61..7d624c7 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.6.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-09-30 12:19+0300\n"
+"POT-Creation-Date: 2016-11-01 17:49+0200\n"
 "PO-Revision-Date: 2015-11-20 23:46+0100\n"
 "Last-Translator: Balázs Úr <urbalazs@gmail.com>\n"
 "Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n"
@@ -131,30 +131,32 @@
 msgid "Could not open file \"%s\" for reading."
 msgstr "A fájl („%s”) nem nyitható meg olvasásra."
 
-msgid "Couldn't find DVB channel configuration file"
+#, fuzzy
+msgid "Couldn't find channel configuration file"
 msgstr "Nem található DVB-csatorna beállítófájl"
 
-#, c-format
-msgid "Couldn't load DVB channel configuration file: %s"
+#, fuzzy, c-format
+msgid "Couldn't load channel configuration file: '%s'"
 msgstr "Nem sikerült betölteni a DVB-csatorna beállítófájlt: %s"
 
-#, c-format
-msgid "Couldn't find details for DVB channel %s"
+#, fuzzy, c-format
+msgid "Couldn't find details for channel '%s'"
 msgstr "Nem találhatók a(z) %s DVB-csatorna részletei"
 
 #, fuzzy, c-format
-msgid "No properties for the DVB channel %s"
+msgid "No properties for channel '%s'"
 msgstr "Nem találhatók a(z) %s DVB-csatorna részletei"
 
 #, fuzzy, c-format
-msgid "Failed to set properties for the DVB channel %s"
+msgid "Failed to set properties for channel '%s'"
 msgstr "Nem találhatók a(z) %s DVB-csatorna részletei"
 
 #, fuzzy, c-format
-msgid "Couldn't find DVB channel configuration file: %s"
+msgid "Couldn't find channel configuration file: '%s'"
 msgstr "Nem található DVB-csatorna beállítófájl"
 
-msgid "DVB channel configuration file doesn't contain any channels"
+#, fuzzy
+msgid "Channel configuration file doesn't contain any channels"
 msgstr "A DVB-csatorna beállítófájl nem tartalmaz egyetlen csatornát sem"
 
 #~ msgid "Internal data flow error."
diff --git a/po/id.gmo b/po/id.gmo
index 4744a0b..9565cf6 100644
--- a/po/id.gmo
+++ b/po/id.gmo
Binary files differ
diff --git a/po/id.po b/po/id.po
index 5792ac2..dfafca7 100644
--- a/po/id.po
+++ b/po/id.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.3.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-09-30 12:19+0300\n"
+"POT-Creation-Date: 2016-11-01 17:49+0200\n"
 "PO-Revision-Date: 2014-05-31 22:16+0700\n"
 "Last-Translator: Andhika Padmawan <andhika.padmawan@gmail.com>\n"
 "Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n"
@@ -128,30 +128,32 @@
 msgid "Could not open file \"%s\" for reading."
 msgstr "Tak dapat membuka berkas \"%s\" untuk dibaca."
 
-msgid "Couldn't find DVB channel configuration file"
+#, fuzzy
+msgid "Couldn't find channel configuration file"
 msgstr "Tak bisa temukan berkas konfigurasi kanal DVB"
 
-#, c-format
-msgid "Couldn't load DVB channel configuration file: %s"
+#, fuzzy, c-format
+msgid "Couldn't load channel configuration file: '%s'"
 msgstr "Tak bisa memuat berka konfigurasi kanal DVB: %s"
 
-#, c-format
-msgid "Couldn't find details for DVB channel %s"
+#, fuzzy, c-format
+msgid "Couldn't find details for channel '%s'"
 msgstr "Tak bisa temukan rincian untuk kanal DVB %s"
 
 #, fuzzy, c-format
-msgid "No properties for the DVB channel %s"
+msgid "No properties for channel '%s'"
 msgstr "Tak bisa temukan rincian untuk kanal DVB %s"
 
 #, fuzzy, c-format
-msgid "Failed to set properties for the DVB channel %s"
+msgid "Failed to set properties for channel '%s'"
 msgstr "Tak bisa temukan rincian untuk kanal DVB %s"
 
 #, fuzzy, c-format
-msgid "Couldn't find DVB channel configuration file: %s"
+msgid "Couldn't find channel configuration file: '%s'"
 msgstr "Tak bisa temukan berkas konfigurasi kanal DVB"
 
-msgid "DVB channel configuration file doesn't contain any channels"
+#, fuzzy
+msgid "Channel configuration file doesn't contain any channels"
 msgstr "Berkas konfigurasi kanal DVB tak memuat kanal apapun"
 
 #~ msgid "Internal data flow error."
diff --git a/po/it.gmo b/po/it.gmo
index 7368349..722561b 100644
--- a/po/it.gmo
+++ b/po/it.gmo
Binary files differ
diff --git a/po/it.po b/po/it.po
index 160c36d..7fdde5a 100644
--- a/po/it.po
+++ b/po/it.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 0.10.13.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-09-30 12:19+0300\n"
+"POT-Creation-Date: 2016-11-01 17:49+0200\n"
 "PO-Revision-Date: 2009-08-14 00:12+0200\n"
 "Last-Translator: Luca Ferretti <elle.uca@infinito.it>\n"
 "Language-Team: Italian <tp@lists.linux.it>\n"
@@ -124,30 +124,30 @@
 msgid "Could not open file \"%s\" for reading."
 msgstr "Impossibile aprire il file «%s» in lettura."
 
-msgid "Couldn't find DVB channel configuration file"
+msgid "Couldn't find channel configuration file"
 msgstr ""
 
 #, c-format
-msgid "Couldn't load DVB channel configuration file: %s"
+msgid "Couldn't load channel configuration file: '%s'"
 msgstr ""
 
 #, c-format
-msgid "Couldn't find details for DVB channel %s"
+msgid "Couldn't find details for channel '%s'"
 msgstr ""
 
 #, c-format
-msgid "No properties for the DVB channel %s"
+msgid "No properties for channel '%s'"
 msgstr ""
 
+#, fuzzy, c-format
+msgid "Failed to set properties for channel '%s'"
+msgstr "Apertura del device DVD «%s» non riuscita."
+
 #, c-format
-msgid "Failed to set properties for the DVB channel %s"
+msgid "Couldn't find channel configuration file: '%s'"
 msgstr ""
 
-#, c-format
-msgid "Couldn't find DVB channel configuration file: %s"
-msgstr ""
-
-msgid "DVB channel configuration file doesn't contain any channels"
+msgid "Channel configuration file doesn't contain any channels"
 msgstr ""
 
 #~ msgid "Internal data flow error."
diff --git a/po/ja.gmo b/po/ja.gmo
index c7668ab..35ba533 100644
--- a/po/ja.gmo
+++ b/po/ja.gmo
Binary files differ
diff --git a/po/ja.po b/po/ja.po
index d813aea..55b65d6 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 0.10.21.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-09-30 12:19+0300\n"
+"POT-Creation-Date: 2016-11-01 17:49+0200\n"
 "PO-Revision-Date: 2011-04-26 19:38+0900\n"
 "Last-Translator: Makoto Kato <makoto.kt@gmail.com>\n"
 "Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
@@ -127,30 +127,30 @@
 msgstr "読み込み用にファイル \"%s\" を開くことができません。"
 
 #, fuzzy
-msgid "Couldn't find DVB channel configuration file"
+msgid "Couldn't find channel configuration file"
 msgstr "仮想ミックスチャンネル設定"
 
 #, fuzzy, c-format
-msgid "Couldn't load DVB channel configuration file: %s"
+msgid "Couldn't load channel configuration file: '%s'"
 msgstr "仮想ミックスチャンネル設定"
 
 #, c-format
-msgid "Couldn't find details for DVB channel %s"
+msgid "Couldn't find details for channel '%s'"
 msgstr ""
 
 #, c-format
-msgid "No properties for the DVB channel %s"
-msgstr ""
-
-#, c-format
-msgid "Failed to set properties for the DVB channel %s"
+msgid "No properties for channel '%s'"
 msgstr ""
 
 #, fuzzy, c-format
-msgid "Couldn't find DVB channel configuration file: %s"
+msgid "Failed to set properties for channel '%s'"
+msgstr "DVDデバイス '%s' のオープンに失敗しました。"
+
+#, fuzzy, c-format
+msgid "Couldn't find channel configuration file: '%s'"
 msgstr "仮想ミックスチャンネル設定"
 
-msgid "DVB channel configuration file doesn't contain any channels"
+msgid "Channel configuration file doesn't contain any channels"
 msgstr ""
 
 #~ msgid "Internal data flow error."
diff --git a/po/ky.gmo b/po/ky.gmo
index 6afd057..4bc7c84 100644
--- a/po/ky.gmo
+++ b/po/ky.gmo
Binary files differ
diff --git a/po/ky.po b/po/ky.po
index 65ccb6c..eb8153d 100644
--- a/po/ky.po
+++ b/po/ky.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 0.10.5\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-09-30 12:19+0300\n"
+"POT-Creation-Date: 2016-11-01 17:49+0200\n"
 "PO-Revision-Date: 2007-11-13 17:16+0600\n"
 "Last-Translator: Ilyas Bakirov <just_ilyas@yahoo.com>\n"
 "Language-Team: Kirghiz <i18n-team-ky-kyrgyz@lists.sourceforge.net>\n"
@@ -124,28 +124,28 @@
 msgid "Could not open file \"%s\" for reading."
 msgstr "\"%s\"  файлы окууга ачылган жок."
 
-msgid "Couldn't find DVB channel configuration file"
+msgid "Couldn't find channel configuration file"
 msgstr ""
 
 #, c-format
-msgid "Couldn't load DVB channel configuration file: %s"
+msgid "Couldn't load channel configuration file: '%s'"
 msgstr ""
 
 #, c-format
-msgid "Couldn't find details for DVB channel %s"
+msgid "Couldn't find details for channel '%s'"
 msgstr ""
 
 #, c-format
-msgid "No properties for the DVB channel %s"
+msgid "No properties for channel '%s'"
 msgstr ""
 
 #, c-format
-msgid "Failed to set properties for the DVB channel %s"
+msgid "Failed to set properties for channel '%s'"
 msgstr ""
 
 #, c-format
-msgid "Couldn't find DVB channel configuration file: %s"
+msgid "Couldn't find channel configuration file: '%s'"
 msgstr ""
 
-msgid "DVB channel configuration file doesn't contain any channels"
+msgid "Channel configuration file doesn't contain any channels"
 msgstr ""
diff --git a/po/lt.gmo b/po/lt.gmo
index 5a7c491..3359d4f 100644
--- a/po/lt.gmo
+++ b/po/lt.gmo
Binary files differ
diff --git a/po/lt.po b/po/lt.po
index 3b0995f..de8474c 100644
--- a/po/lt.po
+++ b/po/lt.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad-0.10.6.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-09-30 12:19+0300\n"
+"POT-Creation-Date: 2016-11-01 17:49+0200\n"
 "PO-Revision-Date: 2008-05-14 02:13+0300\n"
 "Last-Translator: Gintautas Miliauskas <gintas@akl.lt>\n"
 "Language-Team: Lithuanian <komp_lt@konferencijos.lt>\n"
@@ -127,30 +127,30 @@
 msgid "Could not open file \"%s\" for reading."
 msgstr "Nepavyko atverti failo „%s“ skaitymui."
 
-msgid "Couldn't find DVB channel configuration file"
+msgid "Couldn't find channel configuration file"
 msgstr ""
 
 #, c-format
-msgid "Couldn't load DVB channel configuration file: %s"
+msgid "Couldn't load channel configuration file: '%s'"
 msgstr ""
 
 #, c-format
-msgid "Couldn't find details for DVB channel %s"
+msgid "Couldn't find details for channel '%s'"
 msgstr ""
 
 #, c-format
-msgid "No properties for the DVB channel %s"
+msgid "No properties for channel '%s'"
 msgstr ""
 
+#, fuzzy, c-format
+msgid "Failed to set properties for channel '%s'"
+msgstr "Nepavyko atverti išorinės pusės įrenginio „%s“."
+
 #, c-format
-msgid "Failed to set properties for the DVB channel %s"
+msgid "Couldn't find channel configuration file: '%s'"
 msgstr ""
 
-#, c-format
-msgid "Couldn't find DVB channel configuration file: %s"
-msgstr ""
-
-msgid "DVB channel configuration file doesn't contain any channels"
+msgid "Channel configuration file doesn't contain any channels"
 msgstr ""
 
 #, fuzzy
diff --git a/po/lv.gmo b/po/lv.gmo
index d66ee0f..5c6b8b0 100644
--- a/po/lv.gmo
+++ b/po/lv.gmo
Binary files differ
diff --git a/po/lv.po b/po/lv.po
index 536869a..fe3ae19 100644
--- a/po/lv.po
+++ b/po/lv.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.2.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-09-30 12:19+0300\n"
+"POT-Creation-Date: 2016-11-01 17:49+0200\n"
 "PO-Revision-Date: 2014-04-20 15:52+0300\n"
 "Last-Translator: Rihards Prieditis <rprieditis@gmail.com>\n"
 "Language-Team: Latvian <translation-team-lv@lists.sourceforge.net>\n"
@@ -133,30 +133,32 @@
 msgid "Could not open file \"%s\" for reading."
 msgstr "Nevarēja atvērt datni “%s” lasīšanai."
 
-msgid "Couldn't find DVB channel configuration file"
+#, fuzzy
+msgid "Couldn't find channel configuration file"
 msgstr "Nevarēja atrast DVB kanāla konfigurācijas datni"
 
-#, c-format
-msgid "Couldn't load DVB channel configuration file: %s"
+#, fuzzy, c-format
+msgid "Couldn't load channel configuration file: '%s'"
 msgstr "Nevarēja ielādēt DVB kanāla konfigurācijas datni: %s"
 
-#, c-format
-msgid "Couldn't find details for DVB channel %s"
+#, fuzzy, c-format
+msgid "Couldn't find details for channel '%s'"
 msgstr "Nevarēja atrast sīkāku informāciju par DVB kanālu %s"
 
 #, fuzzy, c-format
-msgid "No properties for the DVB channel %s"
+msgid "No properties for channel '%s'"
 msgstr "Nevarēja atrast sīkāku informāciju par DVB kanālu %s"
 
 #, fuzzy, c-format
-msgid "Failed to set properties for the DVB channel %s"
+msgid "Failed to set properties for channel '%s'"
 msgstr "Nevarēja atrast sīkāku informāciju par DVB kanālu %s"
 
 #, fuzzy, c-format
-msgid "Couldn't find DVB channel configuration file: %s"
+msgid "Couldn't find channel configuration file: '%s'"
 msgstr "Nevarēja atrast DVB kanāla konfigurācijas datni"
 
-msgid "DVB channel configuration file doesn't contain any channels"
+#, fuzzy
+msgid "Channel configuration file doesn't contain any channels"
 msgstr "DVB kanāla konfigurācijas datne nesatur nevienu kanālu"
 
 #~ msgid "Internal data flow error."
diff --git a/po/mt.gmo b/po/mt.gmo
index b5e536a..d40775a 100644
--- a/po/mt.gmo
+++ b/po/mt.gmo
Binary files differ
diff --git a/po/mt.po b/po/mt.po
index a31a907..c3a145d 100644
--- a/po/mt.po
+++ b/po/mt.po
@@ -5,7 +5,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad-0.10.8.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-09-30 12:19+0300\n"
+"POT-Creation-Date: 2016-11-01 17:49+0200\n"
 "PO-Revision-Date: 2008-10-26 20:27+0100\n"
 "Last-Translator: Michel Bugeja <michelbugeja@rabatmalta.com>\n"
 "Language-Team: Maltese <translation-team-mt@lists.sourceforge.net>\n"
@@ -127,30 +127,30 @@
 msgstr "Ma nistax naqra mill-fajl \"%s\"."
 
 #, fuzzy
-msgid "Couldn't find DVB channel configuration file"
+msgid "Couldn't find channel configuration file"
 msgstr "Virtual mixer channel configuration"
 
 #, fuzzy, c-format
-msgid "Couldn't load DVB channel configuration file: %s"
+msgid "Couldn't load channel configuration file: '%s'"
 msgstr "Virtual mixer channel configuration"
 
 #, c-format
-msgid "Couldn't find details for DVB channel %s"
+msgid "Couldn't find details for channel '%s'"
 msgstr ""
 
 #, c-format
-msgid "No properties for the DVB channel %s"
-msgstr ""
-
-#, c-format
-msgid "Failed to set properties for the DVB channel %s"
+msgid "No properties for channel '%s'"
 msgstr ""
 
 #, fuzzy, c-format
-msgid "Couldn't find DVB channel configuration file: %s"
+msgid "Failed to set properties for channel '%s'"
+msgstr "Problema biex niftaħ apparat tad-DVD '%s'."
+
+#, fuzzy, c-format
+msgid "Couldn't find channel configuration file: '%s'"
 msgstr "Virtual mixer channel configuration"
 
-msgid "DVB channel configuration file doesn't contain any channels"
+msgid "Channel configuration file doesn't contain any channels"
 msgstr ""
 
 #~ msgid "Internal data flow error."
diff --git a/po/nb.gmo b/po/nb.gmo
index 396abde..3b16a7e 100644
--- a/po/nb.gmo
+++ b/po/nb.gmo
Binary files differ
diff --git a/po/nb.po b/po/nb.po
index 745045c..102e074 100644
--- a/po/nb.po
+++ b/po/nb.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.6.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-09-30 12:19+0300\n"
+"POT-Creation-Date: 2016-11-01 17:49+0200\n"
 "PO-Revision-Date: 2015-12-22 21:08+0100\n"
 "Last-Translator: Johnny A. Solbu <johnny@solbu.net>\n"
 "Language-Team: Norwegian Bokmaal <i18n-nb@lister.ping.uio.no>\n"
@@ -125,30 +125,32 @@
 msgid "Could not open file \"%s\" for reading."
 msgstr "Kunne ikke åpne filen «%s» for lesing."
 
-msgid "Couldn't find DVB channel configuration file"
+#, fuzzy
+msgid "Couldn't find channel configuration file"
 msgstr "Kunne ikke finne DVB-kanal-konfigurasjonsfil"
 
-#, c-format
-msgid "Couldn't load DVB channel configuration file: %s"
+#, fuzzy, c-format
+msgid "Couldn't load channel configuration file: '%s'"
 msgstr "Kunne ikke finne DVB-kanalkonfigurasjonsfil: %s"
 
-#, c-format
-msgid "Couldn't find details for DVB channel %s"
+#, fuzzy, c-format
+msgid "Couldn't find details for channel '%s'"
 msgstr "Kunne ikke finne detaljer for DVB-kanal %s"
 
 #, fuzzy, c-format
-msgid "No properties for the DVB channel %s"
+msgid "No properties for channel '%s'"
 msgstr "Kunne ikke finne detaljer for DVB-kanal %s"
 
 #, fuzzy, c-format
-msgid "Failed to set properties for the DVB channel %s"
+msgid "Failed to set properties for channel '%s'"
 msgstr "Kunne ikke finne detaljer for DVB-kanal %s"
 
 #, fuzzy, c-format
-msgid "Couldn't find DVB channel configuration file: %s"
+msgid "Couldn't find channel configuration file: '%s'"
 msgstr "Kunne ikke finne DVB-kanal-konfigurasjonsfil"
 
-msgid "DVB channel configuration file doesn't contain any channels"
+#, fuzzy
+msgid "Channel configuration file doesn't contain any channels"
 msgstr "DVB-kanalkonfigurasjonsfilen inneholder ingen kanaler"
 
 #~ msgid "Internal data flow error."
diff --git a/po/nl.gmo b/po/nl.gmo
index c0e4769..4bd8b96 100644
--- a/po/nl.gmo
+++ b/po/nl.gmo
Binary files differ
diff --git a/po/nl.po b/po/nl.po
index 8d26663..0e429fd 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.7.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-09-30 12:19+0300\n"
+"POT-Creation-Date: 2016-11-01 17:49+0200\n"
 "PO-Revision-Date: 2016-02-20 12:35+0100\n"
 "Last-Translator: Freek de Kruijf <f.de.kruijf@gmail.com>\n"
 "Language-Team: Dutch <vertaling@vrijschrift.org>\n"
@@ -130,30 +130,32 @@
 msgid "Could not open file \"%s\" for reading."
 msgstr "Kan bestand \"%s\" niet openen om te lezen."
 
-msgid "Couldn't find DVB channel configuration file"
+#, fuzzy
+msgid "Couldn't find channel configuration file"
 msgstr "Kon het instellingenbestand van het DVB-kanaal niet vinden"
 
-#, c-format
-msgid "Couldn't load DVB channel configuration file: %s"
+#, fuzzy, c-format
+msgid "Couldn't load channel configuration file: '%s'"
 msgstr "Kon het instellingenbestand \"%s\" van het DVB-kanaal niet laden"
 
-#, c-format
-msgid "Couldn't find details for DVB channel %s"
+#, fuzzy, c-format
+msgid "Couldn't find details for channel '%s'"
 msgstr "Kon de details voor het DVB-kanaal %s niet vinden"
 
 #, fuzzy, c-format
-msgid "No properties for the DVB channel %s"
+msgid "No properties for channel '%s'"
 msgstr "Kon de details voor het DVB-kanaal %s niet vinden"
 
 #, fuzzy, c-format
-msgid "Failed to set properties for the DVB channel %s"
+msgid "Failed to set properties for channel '%s'"
 msgstr "Kon de details voor het DVB-kanaal %s niet vinden"
 
 #, fuzzy, c-format
-msgid "Couldn't find DVB channel configuration file: %s"
+msgid "Couldn't find channel configuration file: '%s'"
 msgstr "Kon het instellingenbestand van het DVB-kanaal niet vinden"
 
-msgid "DVB channel configuration file doesn't contain any channels"
+#, fuzzy
+msgid "Channel configuration file doesn't contain any channels"
 msgstr "Het instellingenbestand van het DVB-kanaal bevat geen kanalen"
 
 #~ msgid "Internal data flow error."
diff --git a/po/or.gmo b/po/or.gmo
index 319cc21..86a352f 100644
--- a/po/or.gmo
+++ b/po/or.gmo
Binary files differ
diff --git a/po/or.po b/po/or.po
index 86a10ee..4b623a3 100644
--- a/po/or.po
+++ b/po/or.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-0.8.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-09-30 12:19+0300\n"
+"POT-Creation-Date: 2016-11-01 17:49+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"
@@ -127,30 +127,30 @@
 msgid "Could not open file \"%s\" for reading."
 msgstr "\"%s\" ଫାଇଲ ପଢ଼ିବା ପାଇଁ ଖୋଲିହେଲା ନାହିଁ."
 
-msgid "Couldn't find DVB channel configuration file"
+msgid "Couldn't find channel configuration file"
 msgstr ""
 
 #, c-format
-msgid "Couldn't load DVB channel configuration file: %s"
+msgid "Couldn't load channel configuration file: '%s'"
 msgstr ""
 
 #, c-format
-msgid "Couldn't find details for DVB channel %s"
+msgid "Couldn't find details for channel '%s'"
 msgstr ""
 
 #, c-format
-msgid "No properties for the DVB channel %s"
+msgid "No properties for channel '%s'"
 msgstr ""
 
+#, fuzzy, c-format
+msgid "Failed to set properties for channel '%s'"
+msgstr "\"%s\" ନିୟନ୍ତ୍ରଣ ଯନ୍ତ୍ର ବନ୍ଦ କରିହେଲା ନାହିଁ."
+
 #, c-format
-msgid "Failed to set properties for the DVB channel %s"
+msgid "Couldn't find channel configuration file: '%s'"
 msgstr ""
 
-#, c-format
-msgid "Couldn't find DVB channel configuration file: %s"
-msgstr ""
-
-msgid "DVB channel configuration file doesn't contain any channels"
+msgid "Channel configuration file doesn't contain any channels"
 msgstr ""
 
 #~ msgid "Could not write to file \"%s\"."
diff --git a/po/pl.gmo b/po/pl.gmo
index a1ea176..57ecafd 100644
--- a/po/pl.gmo
+++ b/po/pl.gmo
Binary files differ
diff --git a/po/pl.po b/po/pl.po
index 1bd5f3b..4941947 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.6.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-09-30 12:19+0300\n"
+"POT-Creation-Date: 2016-11-01 17:49+0200\n"
 "PO-Revision-Date: 2015-10-15 20:50+0200\n"
 "Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n"
 "Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
@@ -126,30 +126,32 @@
 msgid "Could not open file \"%s\" for reading."
 msgstr "Nie udało się otworzyć pliku \"%s\" do odczytu."
 
-msgid "Couldn't find DVB channel configuration file"
+#, fuzzy
+msgid "Couldn't find channel configuration file"
 msgstr "Nie udało się odnaleźć pliku konfiguracyjnego kanałów DVB"
 
-#, c-format
-msgid "Couldn't load DVB channel configuration file: %s"
+#, fuzzy, c-format
+msgid "Couldn't load channel configuration file: '%s'"
 msgstr "Nie udało się wczytać pliku konfiguracyjnego kanałów DVB: %s"
 
-#, c-format
-msgid "Couldn't find details for DVB channel %s"
+#, fuzzy, c-format
+msgid "Couldn't find details for channel '%s'"
 msgstr "Nie udało się odnaleźć szczegółów dla kanału DVB %s"
 
 #, fuzzy, c-format
-msgid "No properties for the DVB channel %s"
+msgid "No properties for channel '%s'"
 msgstr "Nie udało się odnaleźć szczegółów dla kanału DVB %s"
 
 #, fuzzy, c-format
-msgid "Failed to set properties for the DVB channel %s"
+msgid "Failed to set properties for channel '%s'"
 msgstr "Nie udało się odnaleźć szczegółów dla kanału DVB %s"
 
 #, fuzzy, c-format
-msgid "Couldn't find DVB channel configuration file: %s"
+msgid "Couldn't find channel configuration file: '%s'"
 msgstr "Nie udało się odnaleźć pliku konfiguracyjnego kanałów DVB"
 
-msgid "DVB channel configuration file doesn't contain any channels"
+#, fuzzy
+msgid "Channel configuration file doesn't contain any channels"
 msgstr "Plik konfiguracyjny kanałów DVB nie zawiera żadnych kanałów"
 
 #~ msgid "Internal data flow error."
diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo
index c9f898c..f007a0b 100644
--- a/po/pt_BR.gmo
+++ b/po/pt_BR.gmo
Binary files differ
diff --git a/po/pt_BR.po b/po/pt_BR.po
index ef9de04..3d382fc 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad-1.7.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-09-30 12:19+0300\n"
+"POT-Creation-Date: 2016-11-01 17:49+0200\n"
 "PO-Revision-Date: 2016-05-06 16:02-0300\n"
 "Last-Translator: Fabrício Godoy <skarllot@gmail.com>\n"
 "Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge."
@@ -133,30 +133,32 @@
 msgid "Could not open file \"%s\" for reading."
 msgstr "Não foi possível abrir o arquivo \"%s\" para leitura."
 
-msgid "Couldn't find DVB channel configuration file"
+#, fuzzy
+msgid "Couldn't find channel configuration file"
 msgstr "Não foi possível encontrar o arquivo de configuração de canal DVB"
 
-#, c-format
-msgid "Couldn't load DVB channel configuration file: %s"
+#, fuzzy, c-format
+msgid "Couldn't load channel configuration file: '%s'"
 msgstr "Não foi possível carregar o arquivo de configuração de canal DVB: %s"
 
-#, c-format
-msgid "Couldn't find details for DVB channel %s"
+#, fuzzy, c-format
+msgid "Couldn't find details for channel '%s'"
 msgstr "Não foi possível encontrar detalhes para o canal DVB %s"
 
 #, fuzzy, c-format
-msgid "No properties for the DVB channel %s"
+msgid "No properties for channel '%s'"
 msgstr "Não foi possível encontrar detalhes para o canal DVB %s"
 
 #, fuzzy, c-format
-msgid "Failed to set properties for the DVB channel %s"
+msgid "Failed to set properties for channel '%s'"
 msgstr "Não foi possível encontrar detalhes para o canal DVB %s"
 
 #, fuzzy, c-format
-msgid "Couldn't find DVB channel configuration file: %s"
+msgid "Couldn't find channel configuration file: '%s'"
 msgstr "Não foi possível encontrar o arquivo de configuração de canal DVB"
 
-msgid "DVB channel configuration file doesn't contain any channels"
+#, fuzzy
+msgid "Channel configuration file doesn't contain any channels"
 msgstr "O arquivo de configuração de canal DVB não contém nenhum canal"
 
 #~ msgid "Internal data flow error."
diff --git a/po/ro.gmo b/po/ro.gmo
index c72ee99..e07f4bd 100644
--- a/po/ro.gmo
+++ b/po/ro.gmo
Binary files differ
diff --git a/po/ro.po b/po/ro.po
index 922d43e..e8962bc 100644
--- a/po/ro.po
+++ b/po/ro.po
@@ -5,7 +5,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 0.10.18.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-09-30 12:19+0300\n"
+"POT-Creation-Date: 2016-11-01 17:49+0200\n"
 "PO-Revision-Date: 2010-08-16 03:11+0300\n"
 "Last-Translator: Lucian Adrian Grijincu <lucian.grijincu@gmail.com>\n"
 "Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n"
@@ -125,30 +125,30 @@
 msgid "Could not open file \"%s\" for reading."
 msgstr "Nu s-a putut deschide fișierul „%s” pentru citire."
 
-msgid "Couldn't find DVB channel configuration file"
+msgid "Couldn't find channel configuration file"
 msgstr ""
 
 #, c-format
-msgid "Couldn't load DVB channel configuration file: %s"
+msgid "Couldn't load channel configuration file: '%s'"
 msgstr ""
 
 #, c-format
-msgid "Couldn't find details for DVB channel %s"
+msgid "Couldn't find details for channel '%s'"
 msgstr ""
 
 #, c-format
-msgid "No properties for the DVB channel %s"
+msgid "No properties for channel '%s'"
 msgstr ""
 
+#, fuzzy, c-format
+msgid "Failed to set properties for channel '%s'"
+msgstr "Nu s-a putut deschide dispozitivul DVD „%s”."
+
 #, c-format
-msgid "Failed to set properties for the DVB channel %s"
+msgid "Couldn't find channel configuration file: '%s'"
 msgstr ""
 
-#, c-format
-msgid "Couldn't find DVB channel configuration file: %s"
-msgstr ""
-
-msgid "DVB channel configuration file doesn't contain any channels"
+msgid "Channel configuration file doesn't contain any channels"
 msgstr ""
 
 #~ msgid "Internal data flow error."
diff --git a/po/ru.gmo b/po/ru.gmo
index e326719..9ac4c2c 100644
--- a/po/ru.gmo
+++ b/po/ru.gmo
Binary files differ
diff --git a/po/ru.po b/po/ru.po
index 41f8799..7134bd2 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.6.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-09-30 12:19+0300\n"
+"POT-Creation-Date: 2016-11-01 17:49+0200\n"
 "PO-Revision-Date: 2015-10-18 13:40+0300\n"
 "Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n"
 "Language-Team: Russian <gnu@d07.ru>\n"
@@ -130,30 +130,32 @@
 msgid "Could not open file \"%s\" for reading."
 msgstr "Не удалось открыть для чтения файл «%s»."
 
-msgid "Couldn't find DVB channel configuration file"
+#, fuzzy
+msgid "Couldn't find channel configuration file"
 msgstr "Не удалось найти файл настройки каналов DVB"
 
-#, c-format
-msgid "Couldn't load DVB channel configuration file: %s"
+#, fuzzy, c-format
+msgid "Couldn't load channel configuration file: '%s'"
 msgstr "Не удалось загрузить файл настройки каналов DVB: %s"
 
-#, c-format
-msgid "Couldn't find details for DVB channel %s"
+#, fuzzy, c-format
+msgid "Couldn't find details for channel '%s'"
 msgstr "Не удалось найти настройки DVB-канала %s"
 
 #, fuzzy, c-format
-msgid "No properties for the DVB channel %s"
+msgid "No properties for channel '%s'"
 msgstr "Не удалось найти настройки DVB-канала %s"
 
 #, fuzzy, c-format
-msgid "Failed to set properties for the DVB channel %s"
+msgid "Failed to set properties for channel '%s'"
 msgstr "Не удалось найти настройки DVB-канала %s"
 
 #, fuzzy, c-format
-msgid "Couldn't find DVB channel configuration file: %s"
+msgid "Couldn't find channel configuration file: '%s'"
 msgstr "Не удалось найти файл настройки каналов DVB"
 
-msgid "DVB channel configuration file doesn't contain any channels"
+#, fuzzy
+msgid "Channel configuration file doesn't contain any channels"
 msgstr "Файл настройки каналов DVB не содержит каналов"
 
 #~ msgid "Internal data flow error."
diff --git a/po/sk.gmo b/po/sk.gmo
index 086f682..6ca9fbb 100644
--- a/po/sk.gmo
+++ b/po/sk.gmo
Binary files differ
diff --git a/po/sk.po b/po/sk.po
index 1fc661e..6baeddd 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.7.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-09-30 12:19+0300\n"
+"POT-Creation-Date: 2016-11-01 17:49+0200\n"
 "PO-Revision-Date: 2016-05-20 12:33+0100\n"
 "Last-Translator: Peter Tuhársky <tuharsky@misbb.sk>\n"
 "Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"
@@ -131,30 +131,32 @@
 msgid "Could not open file \"%s\" for reading."
 msgstr "Nepodarilo sa otvoriť súbor \"%s\" na čítanie."
 
-msgid "Couldn't find DVB channel configuration file"
+#, fuzzy
+msgid "Couldn't find channel configuration file"
 msgstr "Nepodarilo sa nájsť konfiguračný súbor DVB kanálu"
 
-#, c-format
-msgid "Couldn't load DVB channel configuration file: %s"
+#, fuzzy, c-format
+msgid "Couldn't load channel configuration file: '%s'"
 msgstr "Nepodarilo sa načítať konfiguračný súbor DVB kanálu: %s"
 
-#, c-format
-msgid "Couldn't find details for DVB channel %s"
+#, fuzzy, c-format
+msgid "Couldn't find details for channel '%s'"
 msgstr "Nepodarilo sa nájsť podrobnosti o DVB kanáli %s"
 
 #, fuzzy, c-format
-msgid "No properties for the DVB channel %s"
+msgid "No properties for channel '%s'"
 msgstr "Nepodarilo sa nájsť podrobnosti o DVB kanáli %s"
 
 #, fuzzy, c-format
-msgid "Failed to set properties for the DVB channel %s"
+msgid "Failed to set properties for channel '%s'"
 msgstr "Nepodarilo sa nájsť podrobnosti o DVB kanáli %s"
 
 #, fuzzy, c-format
-msgid "Couldn't find DVB channel configuration file: %s"
+msgid "Couldn't find channel configuration file: '%s'"
 msgstr "Nepodarilo sa nájsť konfiguračný súbor DVB kanálu"
 
-msgid "DVB channel configuration file doesn't contain any channels"
+#, fuzzy
+msgid "Channel configuration file doesn't contain any channels"
 msgstr "Konfiguračný súbor DVB kanála neobsahuje žiadne kanály"
 
 #~ msgid "Internal data flow error."
diff --git a/po/sl.gmo b/po/sl.gmo
index 2593e16..9493d12 100644
--- a/po/sl.gmo
+++ b/po/sl.gmo
Binary files differ
diff --git a/po/sl.po b/po/sl.po
index cd58f1c..5dfda0d 100644
--- a/po/sl.po
+++ b/po/sl.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 0.10.21.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-09-30 12:19+0300\n"
+"POT-Creation-Date: 2016-11-01 17:49+0200\n"
 "PO-Revision-Date: 2011-04-26 15:21+0100\n"
 "Last-Translator: Klemen Košir <klemen.kosir@gmx.com>\n"
 "Language-Team: Slovenian <translation-team-sl@lists.sourceforge.net>\n"
@@ -131,30 +131,30 @@
 msgid "Could not open file \"%s\" for reading."
 msgstr "Datoteke \"%s\" ni mogoče odpreti za branje."
 
-msgid "Couldn't find DVB channel configuration file"
+msgid "Couldn't find channel configuration file"
 msgstr ""
 
 #, c-format
-msgid "Couldn't load DVB channel configuration file: %s"
+msgid "Couldn't load channel configuration file: '%s'"
 msgstr ""
 
 #, c-format
-msgid "Couldn't find details for DVB channel %s"
+msgid "Couldn't find details for channel '%s'"
 msgstr ""
 
 #, c-format
-msgid "No properties for the DVB channel %s"
+msgid "No properties for channel '%s'"
 msgstr ""
 
+#, fuzzy, c-format
+msgid "Failed to set properties for channel '%s'"
+msgstr "Napaka med odpiranjem DVD naprave \"%s\"."
+
 #, c-format
-msgid "Failed to set properties for the DVB channel %s"
+msgid "Couldn't find channel configuration file: '%s'"
 msgstr ""
 
-#, c-format
-msgid "Couldn't find DVB channel configuration file: %s"
-msgstr ""
-
-msgid "DVB channel configuration file doesn't contain any channels"
+msgid "Channel configuration file doesn't contain any channels"
 msgstr ""
 
 #~ msgid "Internal data flow error."
diff --git a/po/sq.gmo b/po/sq.gmo
index 89835e8..5138c2c 100644
--- a/po/sq.gmo
+++ b/po/sq.gmo
Binary files differ
diff --git a/po/sq.po b/po/sq.po
index 82c2710..9f79cc3 100644
--- a/po/sq.po
+++ b/po/sq.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 0.10.7.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-09-30 12:19+0300\n"
+"POT-Creation-Date: 2016-11-01 17:49+0200\n"
 "PO-Revision-Date: 2008-08-15 16:07+0200\n"
 "Last-Translator: Laurent Dhima <laurenti@alblinux.net>\n"
 "Language-Team: Albanian <translation-team-sq@lists.sourceforge.net>\n"
@@ -124,30 +124,30 @@
 msgid "Could not open file \"%s\" for reading."
 msgstr "E pamundur hapja e file \"%s\" për lexim."
 
-msgid "Couldn't find DVB channel configuration file"
+msgid "Couldn't find channel configuration file"
 msgstr ""
 
 #, c-format
-msgid "Couldn't load DVB channel configuration file: %s"
+msgid "Couldn't load channel configuration file: '%s'"
 msgstr ""
 
 #, c-format
-msgid "Couldn't find details for DVB channel %s"
+msgid "Couldn't find details for channel '%s'"
 msgstr ""
 
 #, c-format
-msgid "No properties for the DVB channel %s"
+msgid "No properties for channel '%s'"
 msgstr ""
 
+#, fuzzy, c-format
+msgid "Failed to set properties for channel '%s'"
+msgstr "E pamundur hapja e dispozitivit frontend \"%s\"."
+
 #, c-format
-msgid "Failed to set properties for the DVB channel %s"
+msgid "Couldn't find channel configuration file: '%s'"
 msgstr ""
 
-#, c-format
-msgid "Couldn't find DVB channel configuration file: %s"
-msgstr ""
-
-msgid "DVB channel configuration file doesn't contain any channels"
+msgid "Channel configuration file doesn't contain any channels"
 msgstr ""
 
 #, fuzzy
diff --git a/po/sr.gmo b/po/sr.gmo
index 57abefe..51c03c8 100644
--- a/po/sr.gmo
+++ b/po/sr.gmo
Binary files differ
diff --git a/po/sr.po b/po/sr.po
index e064215..9104e4e 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad-1.6.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-09-30 12:19+0300\n"
+"POT-Creation-Date: 2016-11-01 17:49+0200\n"
 "PO-Revision-Date: 2015-12-24 11:34+0200\n"
 "Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
 "Language-Team: Serbian <(nothing)>\n"
@@ -127,30 +127,32 @@
 msgid "Could not open file \"%s\" for reading."
 msgstr "Не могу да отворим датотеку „%s“ за читање."
 
-msgid "Couldn't find DVB channel configuration file"
+#, fuzzy
+msgid "Couldn't find channel configuration file"
 msgstr "Не могу да пронађем датотеку подешавања ДВБ канала"
 
-#, c-format
-msgid "Couldn't load DVB channel configuration file: %s"
+#, fuzzy, c-format
+msgid "Couldn't load channel configuration file: '%s'"
 msgstr "Не могу да учитам датотеку подешавања ДВБ канала: %s"
 
-#, c-format
-msgid "Couldn't find details for DVB channel %s"
+#, fuzzy, c-format
+msgid "Couldn't find details for channel '%s'"
 msgstr "Не могу да пронађем податке за ДВБ канал „%s“"
 
 #, fuzzy, c-format
-msgid "No properties for the DVB channel %s"
+msgid "No properties for channel '%s'"
 msgstr "Не могу да пронађем податке за ДВБ канал „%s“"
 
 #, fuzzy, c-format
-msgid "Failed to set properties for the DVB channel %s"
+msgid "Failed to set properties for channel '%s'"
 msgstr "Не могу да пронађем податке за ДВБ канал „%s“"
 
 #, fuzzy, c-format
-msgid "Couldn't find DVB channel configuration file: %s"
+msgid "Couldn't find channel configuration file: '%s'"
 msgstr "Не могу да пронађем датотеку подешавања ДВБ канала"
 
-msgid "DVB channel configuration file doesn't contain any channels"
+#, fuzzy
+msgid "Channel configuration file doesn't contain any channels"
 msgstr "Датотека подешавања ДВБ канала не садржи ниједан канал"
 
 #~ msgid "Internal data flow error."
diff --git a/po/sv.gmo b/po/sv.gmo
index fdee880..789348e 100644
--- a/po/sv.gmo
+++ b/po/sv.gmo
Binary files differ
diff --git a/po/sv.po b/po/sv.po
index d0ebea0..5e80502 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.6.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-09-30 12:19+0300\n"
+"POT-Creation-Date: 2016-11-01 17:49+0200\n"
 "PO-Revision-Date: 2015-11-01 00:48+0100\n"
 "Last-Translator: Sebastian Rasmussen <sebras@gmail.com>\n"
 "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
@@ -126,30 +126,32 @@
 msgid "Could not open file \"%s\" for reading."
 msgstr "Kunde inte öppna filen \"%s\" för läsning."
 
-msgid "Couldn't find DVB channel configuration file"
+#, fuzzy
+msgid "Couldn't find channel configuration file"
 msgstr "Kunde ej hitta konfigurationsfil för DVB-kanal"
 
-#, c-format
-msgid "Couldn't load DVB channel configuration file: %s"
+#, fuzzy, c-format
+msgid "Couldn't load channel configuration file: '%s'"
 msgstr "Kunde ej ladda konfigurationsfil för DVB-kanal: %s"
 
-#, c-format
-msgid "Couldn't find details for DVB channel %s"
+#, fuzzy, c-format
+msgid "Couldn't find details for channel '%s'"
 msgstr "Kunde ej hitta detaljer för DVB-kanal %s"
 
 #, fuzzy, c-format
-msgid "No properties for the DVB channel %s"
+msgid "No properties for channel '%s'"
 msgstr "Kunde ej hitta detaljer för DVB-kanal %s"
 
 #, fuzzy, c-format
-msgid "Failed to set properties for the DVB channel %s"
-msgstr "Kunde ej hitta detaljer för DVB-kanal %s"
+msgid "Failed to set properties for channel '%s'"
+msgstr "Misslyckades med att öppna dvd-enheten \"%s\"."
 
 #, fuzzy, c-format
-msgid "Couldn't find DVB channel configuration file: %s"
+msgid "Couldn't find channel configuration file: '%s'"
 msgstr "Kunde ej hitta konfigurationsfil för DVB-kanal"
 
-msgid "DVB channel configuration file doesn't contain any channels"
+#, fuzzy
+msgid "Channel configuration file doesn't contain any channels"
 msgstr "Konfigurationsfil för DVB-kanal innehåller inga kanaler"
 
 #~ msgid "default GStreamer sound events audiosink"
diff --git a/po/tr.gmo b/po/tr.gmo
index dcf7340..c8e7849 100644
--- a/po/tr.gmo
+++ b/po/tr.gmo
Binary files differ
diff --git a/po/tr.po b/po/tr.po
index 10c14c0..e77f820 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad-1.4.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-09-30 12:19+0300\n"
+"POT-Creation-Date: 2016-11-01 17:49+0200\n"
 "PO-Revision-Date: 2015-01-10 21:07+0100\n"
 "Last-Translator: Volkan Gezer <volkangezer@gmail.com>\n"
 "Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
@@ -127,30 +127,32 @@
 msgid "Could not open file \"%s\" for reading."
 msgstr "Dosyayı \"%s\" okumak için açamıyor."
 
-msgid "Couldn't find DVB channel configuration file"
+#, fuzzy
+msgid "Couldn't find channel configuration file"
 msgstr "DVB kanal yapılandırma dosyası bulunamadı"
 
-#, c-format
-msgid "Couldn't load DVB channel configuration file: %s"
+#, fuzzy, c-format
+msgid "Couldn't load channel configuration file: '%s'"
 msgstr "DVB kanal yapılandırma dosyası yüklenemedi: %s"
 
-#, c-format
-msgid "Couldn't find details for DVB channel %s"
+#, fuzzy, c-format
+msgid "Couldn't find details for channel '%s'"
 msgstr "DVB kanalı %s için ayrıntılar bulunamadı"
 
 #, fuzzy, c-format
-msgid "No properties for the DVB channel %s"
+msgid "No properties for channel '%s'"
 msgstr "DVB kanalı %s için ayrıntılar bulunamadı"
 
 #, fuzzy, c-format
-msgid "Failed to set properties for the DVB channel %s"
+msgid "Failed to set properties for channel '%s'"
 msgstr "DVB kanalı %s için ayrıntılar bulunamadı"
 
 #, fuzzy, c-format
-msgid "Couldn't find DVB channel configuration file: %s"
+msgid "Couldn't find channel configuration file: '%s'"
 msgstr "DVB kanal yapılandırma dosyası bulunamadı"
 
-msgid "DVB channel configuration file doesn't contain any channels"
+#, fuzzy
+msgid "Channel configuration file doesn't contain any channels"
 msgstr "DVB kanal yapılandırma dosyası herhangi bir kanal içermiyor"
 
 #~ msgid "Internal data flow error."
diff --git a/po/uk.gmo b/po/uk.gmo
index d2860f7..f7dc6f8 100644
--- a/po/uk.gmo
+++ b/po/uk.gmo
Binary files differ
diff --git a/po/uk.po b/po/uk.po
index 73152fb..ea4d05a 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.6.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-09-30 12:19+0300\n"
+"POT-Creation-Date: 2016-11-01 17:49+0200\n"
 "PO-Revision-Date: 2015-10-15 20:44+0300\n"
 "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
 "Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>\n"
@@ -135,30 +135,32 @@
 msgid "Could not open file \"%s\" for reading."
 msgstr "Не вдалося відкрити файл «%s» для читання."
 
-msgid "Couldn't find DVB channel configuration file"
+#, fuzzy
+msgid "Couldn't find channel configuration file"
 msgstr "Не вдалося знайти файла налаштувань каналів DVB"
 
-#, c-format
-msgid "Couldn't load DVB channel configuration file: %s"
+#, fuzzy, c-format
+msgid "Couldn't load channel configuration file: '%s'"
 msgstr "Не вдалося завантажити файл налаштувань каналів DVB: %s"
 
-#, c-format
-msgid "Couldn't find details for DVB channel %s"
+#, fuzzy, c-format
+msgid "Couldn't find details for channel '%s'"
 msgstr "Не вдалося знайти параметрів каналу DVB %s"
 
 #, fuzzy, c-format
-msgid "No properties for the DVB channel %s"
+msgid "No properties for channel '%s'"
 msgstr "Не вдалося знайти параметрів каналу DVB %s"
 
 #, fuzzy, c-format
-msgid "Failed to set properties for the DVB channel %s"
+msgid "Failed to set properties for channel '%s'"
 msgstr "Не вдалося знайти параметрів каналу DVB %s"
 
 #, fuzzy, c-format
-msgid "Couldn't find DVB channel configuration file: %s"
+msgid "Couldn't find channel configuration file: '%s'"
 msgstr "Не вдалося знайти файла налаштувань каналів DVB"
 
-msgid "DVB channel configuration file doesn't contain any channels"
+#, fuzzy
+msgid "Channel configuration file doesn't contain any channels"
 msgstr "У файлі налаштувань каналів DVB не міститься даних щодо жодного каналу"
 
 #~ msgid "Internal data flow error."
diff --git a/po/vi.gmo b/po/vi.gmo
index cdf9df8..651b5ae 100644
--- a/po/vi.gmo
+++ b/po/vi.gmo
Binary files differ
diff --git a/po/vi.po b/po/vi.po
index 35eeb0f..2a4c433 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.6.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-09-30 12:19+0300\n"
+"POT-Creation-Date: 2016-11-01 17:49+0200\n"
 "PO-Revision-Date: 2015-10-16 08:27+0700\n"
 "Last-Translator: Trần Ngọc Quân <vnwildman@gmail.com>\n"
 "Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n"
@@ -131,30 +131,32 @@
 msgid "Could not open file \"%s\" for reading."
 msgstr "Không thể mở tập tin “%s” để đọc."
 
-msgid "Couldn't find DVB channel configuration file"
+#, fuzzy
+msgid "Couldn't find channel configuration file"
 msgstr "Không thể tìm thấy tập tin cấu hình kênh DVB"
 
-#, c-format
-msgid "Couldn't load DVB channel configuration file: %s"
+#, fuzzy, c-format
+msgid "Couldn't load channel configuration file: '%s'"
 msgstr "Không thể tải tập tin cấu hình kênh DVB: %s"
 
-#, c-format
-msgid "Couldn't find details for DVB channel %s"
+#, fuzzy, c-format
+msgid "Couldn't find details for channel '%s'"
 msgstr "Không thể tìm thấy chi tiết cho kênh DVB %s"
 
 #, fuzzy, c-format
-msgid "No properties for the DVB channel %s"
+msgid "No properties for channel '%s'"
 msgstr "Không thể tìm thấy chi tiết cho kênh DVB %s"
 
 #, fuzzy, c-format
-msgid "Failed to set properties for the DVB channel %s"
+msgid "Failed to set properties for channel '%s'"
 msgstr "Không thể tìm thấy chi tiết cho kênh DVB %s"
 
 #, fuzzy, c-format
-msgid "Couldn't find DVB channel configuration file: %s"
+msgid "Couldn't find channel configuration file: '%s'"
 msgstr "Không thể tìm thấy tập tin cấu hình kênh DVB"
 
-msgid "DVB channel configuration file doesn't contain any channels"
+#, fuzzy
+msgid "Channel configuration file doesn't contain any channels"
 msgstr "Tập tin cấu hình kênh DVB chẳng chứa kênh nào cả"
 
 #~ msgid "Internal data flow error."
diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo
index cbe0a8c..896c82c 100644
--- a/po/zh_CN.gmo
+++ b/po/zh_CN.gmo
Binary files differ
diff --git a/po/zh_CN.po b/po/zh_CN.po
index 25cc2f2..9a6fc5b 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.6.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-09-30 12:19+0300\n"
+"POT-Creation-Date: 2016-11-01 17:49+0200\n"
 "PO-Revision-Date: 2015-10-16 19:27+0800\n"
 "Last-Translator: Tianze Wang <zwpwjwtz@126.com>\n"
 "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
@@ -123,30 +123,32 @@
 msgid "Could not open file \"%s\" for reading."
 msgstr "无法以读方式打开文件“%s”。"
 
-msgid "Couldn't find DVB channel configuration file"
+#, fuzzy
+msgid "Couldn't find channel configuration file"
 msgstr "无法找到DVB通道配置文件"
 
-#, c-format
-msgid "Couldn't load DVB channel configuration file: %s"
+#, fuzzy, c-format
+msgid "Couldn't load channel configuration file: '%s'"
 msgstr "无法加载DVB通道配置文件:%s"
 
-#, c-format
-msgid "Couldn't find details for DVB channel %s"
+#, fuzzy, c-format
+msgid "Couldn't find details for channel '%s'"
 msgstr "无法获取DVB通道 %s 的详细信息"
 
 #, fuzzy, c-format
-msgid "No properties for the DVB channel %s"
+msgid "No properties for channel '%s'"
 msgstr "无法获取DVB通道 %s 的详细信息"
 
 #, fuzzy, c-format
-msgid "Failed to set properties for the DVB channel %s"
+msgid "Failed to set properties for channel '%s'"
 msgstr "无法获取DVB通道 %s 的详细信息"
 
 #, fuzzy, c-format
-msgid "Couldn't find DVB channel configuration file: %s"
+msgid "Couldn't find channel configuration file: '%s'"
 msgstr "无法找到DVB通道配置文件"
 
-msgid "DVB channel configuration file doesn't contain any channels"
+#, fuzzy
+msgid "Channel configuration file doesn't contain any channels"
 msgstr "DVB通道配置文件不包含任何通道"
 
 #~ msgid "Internal data flow error."
diff --git a/sys/directsound/gstdirectsoundsrc.c b/sys/directsound/gstdirectsoundsrc.c
index 8687e86..3977466 100644
--- a/sys/directsound/gstdirectsoundsrc.c
+++ b/sys/directsound/gstdirectsoundsrc.c
@@ -818,7 +818,7 @@
     if (mmres != MMSYSERR_NOERROR)
       continue;
 
-    mmres = mixerGetDevCaps (GPOINTER_TO_UINT (dsoundsrc->mixer),
+    mmres = mixerGetDevCaps ((UINT_PTR)dsoundsrc->mixer,
         mixer_caps, sizeof (MIXERCAPS));
 
     if (mmres != MMSYSERR_NOERROR) {
diff --git a/sys/dvb/cam.h b/sys/dvb/cam.h
index 1a79ffb..5645ca3 100644
--- a/sys/dvb/cam.h
+++ b/sys/dvb/cam.h
@@ -1,7 +1,7 @@
 /*
- * cam.h - 
+ * cam.h
  * Copyright (C) 2007 Alessandro Decina
- * 
+ *
  * Authors:
  *   Alessandro Decina <alessandro@nnva.org>
  *
diff --git a/sys/dvb/camapplication.h b/sys/dvb/camapplication.h
index 4347185..35b4400 100644
--- a/sys/dvb/camapplication.h
+++ b/sys/dvb/camapplication.h
@@ -1,7 +1,7 @@
 /*
  * camapplication.h - GStreamer CAM (EN50221) Application Layer
  * Copyright (C) 2007 Alessandro Decina
- * 
+ *
  * Authors:
  *   Alessandro Decina <alessandro@nnva.org>
  *
@@ -78,7 +78,7 @@
 void _cam_al_application_init (CamALApplication *application);
 void _cam_al_application_destroy (CamALApplication *application);
 
-CamReturn cam_al_application_write (CamALApplication *application, 
+CamReturn cam_al_application_write (CamALApplication *application,
   CamSLSession *session, guint tag, guint8 *buffer,
   guint buffer_size, guint body_length);
 #endif /* CAM_APPLICATION_LAYER_H */
diff --git a/sys/dvb/camapplicationinfo.h b/sys/dvb/camapplicationinfo.h
index c0b27dc..2c319a2 100644
--- a/sys/dvb/camapplicationinfo.h
+++ b/sys/dvb/camapplicationinfo.h
@@ -1,7 +1,7 @@
 /*
  * camapplicationinfo.h - CAM (EN50221) Application Info resource
  * Copyright (C) 2007 Alessandro Decina
- * 
+ *
  * Authors:
  *   Alessandro Decina <alessandro@nnva.org>
  *
diff --git a/sys/dvb/camconditionalaccess.h b/sys/dvb/camconditionalaccess.h
index 92e94af..8d5bb4e 100644
--- a/sys/dvb/camconditionalaccess.h
+++ b/sys/dvb/camconditionalaccess.h
@@ -1,7 +1,7 @@
 /*
  * camconditionalaccess.h - CAM (EN50221) Conditional Access resource
  * Copyright (C) 2007 Alessandro Decina
- * 
+ *
  * Authors:
  *   Alessandro Decina <alessandro@nnva.org>
  *
diff --git a/sys/dvb/camdevice.h b/sys/dvb/camdevice.h
index f3b359c..f87899d 100644
--- a/sys/dvb/camdevice.h
+++ b/sys/dvb/camdevice.h
@@ -1,7 +1,7 @@
 /*
  * camdevice.h - GStreamer hardware CAM interface
  * Copyright (C) 2007 Alessandro Decina
- * 
+ *
  * Authors:
  *   Alessandro Decina <alessandro@nnva.org>
  *
diff --git a/sys/dvb/camresourcemanager.h b/sys/dvb/camresourcemanager.h
index e618c6b..4b5220f 100644
--- a/sys/dvb/camresourcemanager.h
+++ b/sys/dvb/camresourcemanager.h
@@ -1,7 +1,7 @@
 /*
  * camresourcemanager.h - GStreamer CAM (EN50221) Resource Manager
  * Copyright (C) 2007 Alessandro Decina
- * 
+ *
  * Authors:
  *   Alessandro Decina <alessandro@nnva.org>
  *
diff --git a/sys/dvb/camsession.h b/sys/dvb/camsession.h
index 2701e1e..f3e0804 100644
--- a/sys/dvb/camsession.h
+++ b/sys/dvb/camsession.h
@@ -1,7 +1,7 @@
 /*
  * camsession.h - GStreamer CAM (EN50221) Session Layer
  * Copyright (C) 2007 Alessandro Decina
- * 
+ *
  * Authors:
  *   Alessandro Decina <alessandro@nnva.org>
  *
@@ -53,10 +53,10 @@
 struct _CamSL
 {
   CamTL *tl;
-  
+
   GHashTable *sessions;
   guint session_ids;
- 
+
   /* callbacks */
   CamReturn (*open_session_request) (CamSL *sl, CamSLSession *session,
     CamSLResourceStatus *status);
@@ -64,7 +64,7 @@
   CamReturn (*session_closed) (CamSL *sl, CamSLSession *session);
   CamReturn (*session_data) (CamSL *sl, CamSLSession *session,
     guint8 *data, guint length);
-  
+
   gpointer user_data;
 };
 
@@ -72,10 +72,10 @@
 {
   CamSL *sl;
   CamTLConnection *connection;
-  
+
   guint resource_id;
   guint16 session_nb;
-  
+
   CamSLSessionState state;
 
   gpointer user_data;
@@ -86,7 +86,7 @@
 
 CamReturn cam_sl_create_session (CamSL *sl, CamTLConnection *connection,
   guint resource_id, CamSLSession **session);
-CamReturn cam_sl_session_close (CamSLSession *session);  
+CamReturn cam_sl_session_close (CamSLSession *session);
 
 void cam_sl_calc_buffer_size (CamSL *sl,
   guint body_length, guint *buffer_size, guint *offset);
diff --git a/sys/dvb/camswclient.h b/sys/dvb/camswclient.h
index 299e268..7166b45 100644
--- a/sys/dvb/camswclient.h
+++ b/sys/dvb/camswclient.h
@@ -1,7 +1,7 @@
 /*
  * camswclient.h - GStreamer softcam client
  * Copyright (C) 2007 Alessandro Decina
- * 
+ *
  * Authors:
  *   Alessandro Decina <alessandro@nnva.org>
  *
diff --git a/sys/dvb/camtransport.h b/sys/dvb/camtransport.h
index a1b899b..e0ea240 100644
--- a/sys/dvb/camtransport.h
+++ b/sys/dvb/camtransport.h
@@ -1,7 +1,7 @@
 /*
  * camtransport.h - GStreamer CAM (EN50221) transport layer
  * Copyright (C) 2007 Alessandro Decina
- * 
+ *
  * Authors:
  *   Alessandro Decina <alessandro@nnva.org>
  *
@@ -53,9 +53,9 @@
   guint connection_ids;
 
   GHashTable *connections;
-  
+
   guint expected_tpdus;
-  
+
   /* buffer containing module data */
   guint8 buffer [HOST_BUFFER_SIZE];
   /* number of bytes written in the buffer */
@@ -64,14 +64,14 @@
   guint8 *body;
   /* length of the body part */
   guint body_length;
-  
+
   /* callbacks */
   void (*request_connection) (CamTL *tl, CamTLConnection *connection);
   void (*connection_created) (CamTL *tl, CamTLConnection *connection);
   void (*connection_deleted) (CamTL *tl, CamTLConnection *connection);
   CamReturn (*connection_data) (CamTL *tl, CamTLConnection *connection,
     guint8 *data, guint length);
-  
+
   /* used by the upper layer to extend this layer */
   gpointer user_data;
 };
diff --git a/sys/dvb/camutils.h b/sys/dvb/camutils.h
index 67b0ca3..1ad9c37 100644
--- a/sys/dvb/camutils.h
+++ b/sys/dvb/camutils.h
@@ -1,7 +1,7 @@
 /*
  * camutils.h - GStreamer CAM (EN50221) support
  * Copyright (C) 2007 Alessandro Decina
- * 
+ *
  * Authors:
  *   Alessandro Decina <alessandro@nnva.org>
  *
diff --git a/sys/dvb/dvbbasebin.c b/sys/dvb/dvbbasebin.c
index c05f65e..f02cda0 100644
--- a/sys/dvb/dvbbasebin.c
+++ b/sys/dvb/dvbbasebin.c
@@ -5,7 +5,7 @@
  * 
  * Authors:
  *   Alessandro Decina <alessandro@nnva.org>
- *   Reynaldo H. Verdejo Pinochet <r.verdejo@sisa.samsung.com>
+ *   Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -342,7 +342,7 @@
       "Source/Bin/Video",
       "Access descramble and split DVB streams",
       "Alessandro Decina <alessandro@nnva.org>\n"
-      "Reynaldo H. Verdejo Pinochet <r.verdejo@sisa.samsung.com>");
+      "Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>");
 
   gobject_class = G_OBJECT_CLASS (klass);
   gobject_class->set_property = dvb_base_bin_set_property;
diff --git a/sys/dvb/gstdvbsrc.c b/sys/dvb/gstdvbsrc.c
index 3376a05..be2d76d 100644
--- a/sys/dvb/gstdvbsrc.c
+++ b/sys/dvb/gstdvbsrc.c
@@ -2,7 +2,7 @@
  * Copyright (C) 2006 Zaheer Abbas Merali <zaheerabbas at merali
  *                                         dot org>
  * Copyright (C) 2014 Samsung Electronics. All rights reserved.
- *     @Author: Reynaldo H. Verdejo Pinochet <r.verdejo@sisa.samsung.com>
+ *     @Author: Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -130,6 +130,8 @@
 #define GST_CAT_DEFAULT (gstdvbsrc_debug)
 
 /**
+ * NUM_DTV_PROPS:
+ *
  * Can't be greater than DTV_IOCTL_MAX_MSGS but we are
  * not using more than 25 for the largest use case (ISDB-T).
  *
@@ -564,6 +566,8 @@
 static gboolean gst_dvbsrc_is_valid_bandwidth (guint delsys, guint bw);
 
 /**
+ * LOOP_WHILE_EINTR:
+ *
  * This loop should be safe enough considering:
  *
  * 1.- EINTR suggest the next ioctl might succeed
@@ -627,7 +631,7 @@
       "Digital Video Broadcast Source",
       "P2P-VCR, C-Lab, University of Paderborn, "
       "Zaheer Abbas Merali <zaheerabbas at merali dot org>\n"
-      "Reynaldo H. Verdejo Pinochet <r.verdejo@sisa.samsung.com>");
+      "Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>");
 
   gstbasesrc_class->start = GST_DEBUG_FUNCPTR (gst_dvbsrc_start);
   gstbasesrc_class->stop = GST_DEBUG_FUNCPTR (gst_dvbsrc_stop);
@@ -1984,7 +1988,7 @@
     return FALSE;
   }
   if (!gst_dvbsrc_tune (src)) {
-    GST_ERROR_OBJECT (src, "Not able to lock on to the dvb channel");
+    GST_ERROR_OBJECT (src, "Not able to lock on channel");
     goto fail;
   }
   if (!gst_dvbsrc_open_dvr (src)) {
@@ -2078,8 +2082,8 @@
       break;
 #endif
     default:
-      GST_FIXME ("No delsys/transmission-mode sanity checks implemented for "
-          "this delivery system");
+      GST_FIXME ("No transmission-mode sanity checks implemented for this "
+          "delivery system");
       return TRUE;
   }
   return FALSE;
@@ -2108,8 +2112,8 @@
         return TRUE;
       break;
     default:
-      GST_FIXME ("No delsys/modulation sanity checks implemented for this "
-          "delivery system");
+      GST_FIXME ("No modulation sanity checks implemented for this delivery "
+          "system");
       return TRUE;
   }
   return FALSE;
@@ -2318,12 +2322,12 @@
   /* If set, confirm the choosen delivery system is actually
    * supported by the hardware */
   if (object->delsys != SYS_UNDEFINED) {
-    GST_DEBUG_OBJECT (object, "Confirming delsys '%u' is supported",
+    GST_DEBUG_OBJECT (object, "Confirming delivery system '%u' is supported",
         object->delsys);
     if (!g_list_find (object->supported_delsys,
             GINT_TO_POINTER (object->delsys))) {
-      GST_WARNING_OBJECT (object, "Adapter does not support delsys '%u'",
-          object->delsys);
+      GST_WARNING_OBJECT (object, "Adapter does not support delivery system "
+          "'%u'", object->delsys);
       return FALSE;
     }
   }
@@ -2489,11 +2493,9 @@
   /* first 3 entries are reserved */
   n = 3;
 
-  /**
-   * We are not dropping out but issuing a warning in case of wrong
+  /* We are not dropping out but issuing a warning in case of wrong
    * parameter combinations as failover behavior should be mandated
-   * by the driver. Worst case scenario it will just fail at tuning.
-   */
+   * by the driver. Worst case scenario it will just fail at tuning. */
 
   switch (object->delsys) {
     case SYS_DVBS:
diff --git a/sys/dvb/gstdvbsrc.h b/sys/dvb/gstdvbsrc.h
index e504ea8..da6b5bc 100644
--- a/sys/dvb/gstdvbsrc.h
+++ b/sys/dvb/gstdvbsrc.h
@@ -2,7 +2,7 @@
  * Copyright (C) 2006 Zaheer Abbas Merali <zaheerabbas at merali
  *                                         dot org>
  * Copyright (C) 2014 Samsung Electronics. All rights reserved.
- *     @Author: Reynaldo H. Verdejo Pinochet <r.verdejo@sisa.samsung.com>
+ *     @Author: Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
diff --git a/sys/dvb/parsechannels.c b/sys/dvb/parsechannels.c
index e39cd94..14e6b5e 100644
--- a/sys/dvb/parsechannels.c
+++ b/sys/dvb/parsechannels.c
@@ -37,6 +37,9 @@
 
 #include <linux/dvb/frontend.h>
 
+GST_DEBUG_CATEGORY_EXTERN (dvb_base_bin_debug);
+#define GST_CAT_DEFAULT dvb_base_bin_debug
+
 typedef enum
 {
   CHANNEL_CONF_FORMAT_NONE,
@@ -44,25 +47,111 @@
   CHANNEL_CONF_FORMAT_ZAP
 } GstDvbChannelConfFormat;
 
+typedef gboolean (*GstDvbV5ChannelsConfPropSetFunction) (GstElement *
+    dvbbasebin, const gchar * property, GKeyFile * kf,
+    const gchar * channel_name, const gchar * key);
+
+typedef struct
+{
+  const gchar *conf_property;
+  const gchar *elem_property;
+  GstDvbV5ChannelsConfPropSetFunction set_func;
+} GstDvbV5ChannelsConfToPropertyMap;
+
 static gboolean parse_and_configure_from_v5_conf_file (GstElement * dvbbasebin,
     const gchar * filename, const gchar * channel_name, GError ** error);
 static gboolean parse_and_configure_from_zap_conf_file (GstElement * dvbbasebin,
     const gchar * filename, const gchar * channel_name, GError ** error);
 static GstDvbChannelConfFormat detect_file_format (const gchar * filename);
 
+static gboolean gst_dvb_base_bin_conf_set_string (GstElement * dvbbasebin,
+    const gchar * property, GKeyFile * kf, const gchar * channel_name,
+    const gchar * key);
+static gboolean gst_dvb_base_bin_conf_set_uint (GstElement * dvbbasebin,
+    const gchar * property, GKeyFile * kf, const gchar * channel_name,
+    const gchar * key);
+static gboolean gst_dvb_base_bin_conf_set_int (GstElement * dvbbasebin,
+    const gchar * property, GKeyFile * kf, const gchar * channel_name,
+    const gchar * key);
+static gboolean gst_dvb_base_bin_conf_set_inversion (GstElement * dvbbasebin,
+    const gchar * property, GKeyFile * kf, const gchar * channel_name,
+    const gchar * key);
+static gboolean gst_dvb_base_bin_conf_set_guard (GstElement * dvbbasebin,
+    const gchar * property, GKeyFile * kf, const gchar * channel_name,
+    const gchar * key);
+static gboolean gst_dvb_base_bin_conf_set_trans_mode (GstElement * dvbbasebin,
+    const gchar * property, GKeyFile * kf, const gchar * channel_name,
+    const gchar * key);
+static gboolean gst_dvb_base_bin_conf_set_code_rate (GstElement * dvbbasebin,
+    const gchar * property, GKeyFile * kf, const gchar * channel_name,
+    const gchar * key);
+static gboolean gst_dvb_base_bin_conf_set_delsys (GstElement * dvbbasebin,
+    const gchar * property, GKeyFile * kf, const gchar * channel_name,
+    const gchar * key);
+static gboolean gst_dvb_base_bin_conf_set_hierarchy (GstElement * dvbbasebin,
+    const gchar * property, GKeyFile * kf, const gchar * channel_name,
+    const gchar * key);
+static gboolean gst_dvb_base_bin_conf_set_modulation (GstElement * dvbbasebin,
+    const gchar * property, GKeyFile * kf, const gchar * channel_name,
+    const gchar * key);
+static GHashTable *parse_channels_conf_from_zap_file (GstElement * dvbbasebin,
+    const gchar * filename, GError ** error);
+static gboolean remove_channel_from_hash (gpointer key, gpointer value,
+    gpointer user_data);
+static void destroy_channels_hash (GHashTable * channels);
 
-GST_DEBUG_CATEGORY_EXTERN (dvb_base_bin_debug);
-#define GST_CAT_DEFAULT dvb_base_bin_debug
+GstDvbV5ChannelsConfToPropertyMap dvbv5_prop_map[] = {
+  {"SERVICE_ID", "program-numbers", gst_dvb_base_bin_conf_set_string},
+  {"FREQUENCY", "frequency", gst_dvb_base_bin_conf_set_uint},
+  {"BANDWIDTH_HZ", "bandwidth-hz", gst_dvb_base_bin_conf_set_uint},
+  {"INVERSION", "inversion", gst_dvb_base_bin_conf_set_inversion},
+  {"GUARD_INTERVAL", "guard", gst_dvb_base_bin_conf_set_guard},
+  {"TRANSMISSION_MODE", "trans-mode", gst_dvb_base_bin_conf_set_trans_mode},
+  {"HIERARCHY", "hierarchy", gst_dvb_base_bin_conf_set_hierarchy},
+  {"MODULATION", "modulation", gst_dvb_base_bin_conf_set_modulation},
+  {"CODE_RATE_HP", "code-rate-hp", gst_dvb_base_bin_conf_set_code_rate},
+  {"CODE_RATE_LP", "code-rate-lp", gst_dvb_base_bin_conf_set_code_rate},
+  {"ISDBT_LAYER_ENABLED", "isdbt-layer-enabled",
+      gst_dvb_base_bin_conf_set_uint},
+  {"ISDBT_PARTIAL_RECEPTION", "isdbt-partial-reception",
+      gst_dvb_base_bin_conf_set_int},
+  {"ISDBT_SOUND_BROADCASTING", "isdbt-sound-broadcasting",
+      gst_dvb_base_bin_conf_set_int},
+  {"ISDBT_SB_SUBCHANNEL_ID", "isdbt-sb-subchannel-id",
+      gst_dvb_base_bin_conf_set_int},
+  {"ISDBT_SB_SEGMENT_IDX", "isdbt-sb-segment-idx",
+      gst_dvb_base_bin_conf_set_int},
+  {"ISDBT_SB_SEGMENT_COUNT", "isdbt-sb-segment-count", gst_dvb_base_bin_conf_set_int},  /* Range in files start from 0, property starts from 1 */
+  {"ISDBT_LAYERA_FEC", "isdbt-layera-fec", gst_dvb_base_bin_conf_set_code_rate},
+  {"ISDBT_LAYERA_MODULATION", "isdbt-layera-modulation",
+      gst_dvb_base_bin_conf_set_modulation},
+  {"ISDBT_LAYERA_SEGMENT_COUNT", "isdbt-layera-segment-count",
+      gst_dvb_base_bin_conf_set_int},
+  {"ISDBT_LAYERA_TIME_INTERLEAVING", "isdbt-layera-time-interleaving",
+      gst_dvb_base_bin_conf_set_int},
+  {"ISDBT_LAYERB_FEC", "isdbt-layerb-fec", gst_dvb_base_bin_conf_set_code_rate},
+  {"ISDBT_LAYERB_MODULATION", "isdbt-layerb-modulation",
+      gst_dvb_base_bin_conf_set_modulation},
+  {"ISDBT_LAYERB_SEGMENT_COUNT", "isdbt-layerb-segment-count",
+      gst_dvb_base_bin_conf_set_int},
+  {"ISDBT_LAYERB_TIME_INTERLEAVING", "isdbt-layerb-time-interleaving",
+      gst_dvb_base_bin_conf_set_int},
+  {"ISDBT_LAYERC_FEC", "isdbt-layerc-fec", gst_dvb_base_bin_conf_set_code_rate},
+  {"ISDBT_LAYERC_MODULATION", "isdbt-layerc-modulation",
+      gst_dvb_base_bin_conf_set_modulation},
+  {"ISDBT_LAYERC_SEGMENT_COUNT", "isdbt-layerc-segment-count",
+      gst_dvb_base_bin_conf_set_int},
+  {"ISDBT_LAYERC_TIME_INTERLEAVING", "isdbt-layerc-time-interleaving",
+      gst_dvb_base_bin_conf_set_int},
+  {"DELIVERY_SYSTEM", "delsys", gst_dvb_base_bin_conf_set_delsys},
+  {NULL,}
+};
 
 /* TODO:
  * Store the channels hash table around instead of constantly parsing it
  * Detect when the file changed on disk
  */
 
-typedef gboolean (*GstDvbV5ChannelsConfPropSetFunction) (GstElement *
-    dvbbasebin, const gchar * property, GKeyFile * kf,
-    const gchar * channel_name, const gchar * key);
-
 static gint
 gst_dvb_base_bin_find_string_in_array (const gchar ** array, const gchar * str)
 {
@@ -90,7 +179,7 @@
   v = gst_dvb_base_bin_find_string_in_array (strings, str);
   if (v == -1) {
     GST_WARNING_OBJECT (dvbbasebin, "Unexpected value '%s' for property "
-        "'%s', using default: %d", str, property, default_value);
+        "'%s', using default: '%d'", str, property, default_value);
     v = default_value;
   }
 
@@ -185,8 +274,8 @@
     const gchar * key)
 {
   const gchar *guards[] = {
-    "32", "16", "8", "4", "auto",
-    "128", "19/128", "19/256",
+    "1/32", "1/16", "1/8", "1/4", "auto",
+    "1/128", "19/128", "19/256",
     "PN420", "PN595", "PN945", NULL
   };
   return gst_dvb_base_bin_conf_set_property_from_string_array (dvbbasebin,
@@ -236,6 +325,18 @@
 }
 
 static gboolean
+gst_dvb_base_bin_conf_set_hierarchy (GstElement * dvbbasebin,
+    const gchar * property, GKeyFile * kf, const gchar * channel_name,
+    const gchar * key)
+{
+  const gchar *hierarchies[] = {
+    "NONE", "1", "2", "4", "AUTO", NULL
+  };
+  return gst_dvb_base_bin_conf_set_property_from_string_array (dvbbasebin,
+      property, kf, channel_name, key, hierarchies, 4);
+}
+
+static gboolean
 gst_dvb_base_bin_conf_set_modulation (GstElement * dvbbasebin,
     const gchar * property, GKeyFile * kf, const gchar * channel_name,
     const gchar * key)
@@ -250,57 +351,7 @@
       property, kf, channel_name, key, modulations, 6);
 }
 
-typedef struct
-{
-  const gchar *conf_property;
-  const gchar *elem_property;
-  GstDvbV5ChannelsConfPropSetFunction set_func;
-} GstDvbV5ChannelsConfToPropertyMap;
-
-GstDvbV5ChannelsConfToPropertyMap dvbv5_prop_map[] = {
-  {"SERVICE_ID", "program-numbers", gst_dvb_base_bin_conf_set_string},
-  {"FREQUENCY", "frequency", gst_dvb_base_bin_conf_set_uint},
-  {"BANDWIDTH_HZ", "bandwidth-hz", gst_dvb_base_bin_conf_set_uint},
-  {"INVERSION", "inversion", gst_dvb_base_bin_conf_set_inversion},
-  {"GUARD_INTERVAL", "guard", gst_dvb_base_bin_conf_set_guard},
-  {"TRANSMISSION_MODE", "trans-mode", gst_dvb_base_bin_conf_set_trans_mode},
-  {"MODULATION", "modulation", gst_dvb_base_bin_conf_set_modulation},
-  {"ISDBT_LAYER_ENABLED", "isdbt-layer-enabled",
-      gst_dvb_base_bin_conf_set_uint},
-  {"ISDBT_PARTIAL_RECEPTION", "isdbt-partial-reception",
-      gst_dvb_base_bin_conf_set_int},
-  {"ISDBT_SOUND_BROADCASTING", "isdbt-sound-broadcasting",
-      gst_dvb_base_bin_conf_set_int},
-  {"ISDBT_SB_SUBCHANNEL_ID", "isdbt-sb-subchannel-id",
-      gst_dvb_base_bin_conf_set_int},
-  {"ISDBT_SB_SEGMENT_IDX", "isdbt-sb-segment-idx",
-      gst_dvb_base_bin_conf_set_int},
-  {"ISDBT_SB_SEGMENT_COUNT", "isdbt-sb-segment-count", gst_dvb_base_bin_conf_set_int},  /* Range in files start from 0, property starts from 1 */
-  {"ISDBT_LAYERA_FEC", "isdbt-layera-fec", gst_dvb_base_bin_conf_set_code_rate},
-  {"ISDBT_LAYERA_MODULATION", "isdbt-layera-modulation",
-      gst_dvb_base_bin_conf_set_modulation},
-  {"ISDBT_LAYERA_SEGMENT_COUNT", "isdbt-layera-segment-count",
-      gst_dvb_base_bin_conf_set_int},
-  {"ISDBT_LAYERA_TIME_INTERLEAVING", "isdbt-layera-time-interleaving",
-      gst_dvb_base_bin_conf_set_int},
-  {"ISDBT_LAYERB_FEC", "isdbt-layerb-fec", gst_dvb_base_bin_conf_set_code_rate},
-  {"ISDBT_LAYERB_MODULATION", "isdbt-layerb-modulation",
-      gst_dvb_base_bin_conf_set_modulation},
-  {"ISDBT_LAYERB_SEGMENT_COUNT", "isdbt-layerb-segment-count",
-      gst_dvb_base_bin_conf_set_int},
-  {"ISDBT_LAYERB_TIME_INTERLEAVING", "isdbt-layerb-time-interleaving",
-      gst_dvb_base_bin_conf_set_int},
-  {"ISDBT_LAYERC_FEC", "isdbt-layerc-fec", gst_dvb_base_bin_conf_set_code_rate},
-  {"ISDBT_LAYERC_MODULATION", "isdbt-layerc-modulation",
-      gst_dvb_base_bin_conf_set_modulation},
-  {"ISDBT_LAYERC_SEGMENT_COUNT", "isdbt-layerc-segment-count",
-      gst_dvb_base_bin_conf_set_int},
-  {"ISDBT_LAYERC_TIME_INTERLEAVING", "isdbt-layerc-time-interleaving",
-      gst_dvb_base_bin_conf_set_int},
-  {"DELIVERY_SYSTEM", "delsys", gst_dvb_base_bin_conf_set_delsys},
-  {NULL,}
-};
-
+/* FIXME: is channel_name guaranteed to be ASCII or UTF-8? */
 static gboolean
 parse_and_configure_from_v5_conf_file (GstElement * dvbbasebin,
     const gchar * filename, const gchar * channel_name, GError ** error)
@@ -356,19 +407,18 @@
       (err->domain == G_KEY_FILE_ERROR
           && err->code == G_KEY_FILE_ERROR_NOT_FOUND)) {
     g_set_error (error, GST_RESOURCE_ERROR, GST_RESOURCE_ERROR_NOT_FOUND,
-        _("Couldn't find DVB channel configuration file"));
+        _("Couldn't find channel configuration file"));
   } else {
     g_set_error (error, GST_RESOURCE_ERROR, GST_RESOURCE_ERROR_READ,
-        _("Couldn't load DVB channel configuration file: %s"), err->message);
+        _("Couldn't load channel configuration file: '%s'"), err->message);
   }
   g_clear_error (&err);
   return FALSE;
 
 unknown_channel:
   {
-    /* FIXME: is channel name guaranteed to be ASCII or UTF-8? */
     g_set_error (error, GST_RESOURCE_ERROR, GST_RESOURCE_ERROR_NOT_FOUND,
-        _("Couldn't find details for DVB channel %s"), channel_name);
+        _("Couldn't find details for channel '%s'"), channel_name);
     g_key_file_unref (keyfile);
     g_clear_error (&err);
     return FALSE;
@@ -376,9 +426,8 @@
 
 no_properties:
   {
-    /* FIXME: is channel name guaranteed to be ASCII or UTF-8? */
     g_set_error (error, GST_RESOURCE_ERROR, GST_RESOURCE_ERROR_NOT_FOUND,
-        _("No properties for the DVB channel %s"), channel_name);
+        _("No properties for channel '%s'"), channel_name);
     g_key_file_unref (keyfile);
     g_clear_error (&err);
     return FALSE;
@@ -386,19 +435,17 @@
 
 property_error:
   {
-    /* FIXME: is channel name guaranteed to be ASCII or UTF-8? */
     g_set_error (error, GST_RESOURCE_ERROR, GST_RESOURCE_ERROR_FAILED,
-        _("Failed to set properties for the DVB channel %s"), channel_name);
+        _("Failed to set properties for channel '%s'"), channel_name);
     g_key_file_unref (keyfile);
     g_clear_error (&err);
     return FALSE;
   }
 }
 
-/* this will do zap style channels.conf only for the moment */
 static GHashTable *
-parse_channels_conf_from_file (GstElement * dvbbasebin, const gchar * filename,
-    GError ** error)
+parse_channels_conf_from_zap_file (GstElement * dvbbasebin,
+    const gchar * filename, GError ** error)
 {
   gchar *contents;
   gchar **lines;
@@ -465,10 +512,8 @@
           g_hash_table_insert (params, g_strdup (satellite[j - 2]),
               g_strdup (fields[j]));
         }
-        /**
-         * Some ZAP format variations store freqs in MHz
-         * but we internally use kHz for DVB-S/S2.
-         */
+        /* Some ZAP format variations store freqs in MHz
+         * but we internally use kHz for DVB-S/S2. */
         if (strlen (fields[1]) < 6) {
           g_hash_table_insert (params, g_strdup ("frequency"),
               g_strdup_printf ("%d", atoi (fields[1]) * 1000));
@@ -512,17 +557,17 @@
 open_fail:
   if (err->code == G_FILE_ERROR_NOENT) {
     g_set_error (error, GST_RESOURCE_ERROR, GST_RESOURCE_ERROR_NOT_FOUND,
-        _("Couldn't find DVB channel configuration file: %s"), err->message);
+        _("Couldn't find channel configuration file: '%s'"), err->message);
   } else {
     g_set_error (error, GST_RESOURCE_ERROR, GST_RESOURCE_ERROR_READ,
-        _("Couldn't load DVB channel configuration file: %s"), err->message);
+        _("Couldn't load channel configuration file: '%s'"), err->message);
   }
   g_clear_error (&err);
   return NULL;
 
 no_channels:
   g_set_error (error, GST_RESOURCE_ERROR, GST_RESOURCE_ERROR_FAILED,
-      _("DVB channel configuration file doesn't contain any channels"));
+      _("Channel configuration file doesn't contain any channels"));
   g_hash_table_unref (res);
   return NULL;
 }
@@ -542,6 +587,7 @@
   g_hash_table_foreach_remove (channels, remove_channel_from_hash, NULL);
 }
 
+/* FIXME: is channel_name guaranteed to be ASCII or UTF-8? */
 static gboolean
 parse_and_configure_from_zap_conf_file (GstElement * dvbbasebin,
     const gchar * filename, const gchar * channel_name, GError ** error)
@@ -550,18 +596,16 @@
   GHashTable *channels, *params;
   gchar *type;
 
-  /**
-   * Assumptions are made here about a format that is loosely
+  /* Assumptions are made here about a format that is loosely
    * defined. Particularly, we assume a given delivery system
    * out of counting the number of fields per line. dvbsrc has
    * smarter code to auto-detect a delivery system based on
    * known-correct combinations of parameters so if you ever
    * encounter cases where the delivery system is being
    * wrongly set here, just remove the offending
-   * g_object_set line and let dvbsrc work his magic out.
-   */
+   * g_object_set line and let dvbsrc work his magic out. */
 
-  channels = parse_channels_conf_from_file (dvbbasebin, filename, error);
+  channels = parse_channels_conf_from_zap_file (dvbbasebin, filename, error);
 
   if (!channels)
     goto beach;
@@ -798,9 +842,8 @@
 
 unknown_channel:
   {
-    /* FIXME: is channel name guaranteed to be ASCII or UTF-8? */
     g_set_error (error, GST_RESOURCE_ERROR, GST_RESOURCE_ERROR_NOT_FOUND,
-        _("Couldn't find details for DVB channel %s"), channel_name);
+        _("Couldn't find details for channel '%s'"), channel_name);
     destroy_channels_hash (channels);
     return FALSE;
   }
diff --git a/tests/check/libs/gstglcolorconvert.c b/tests/check/libs/gstglcolorconvert.c
index d891c8b..98ec48f 100644
--- a/tests/check/libs/gstglcolorconvert.c
+++ b/tests/check/libs/gstglcolorconvert.c
@@ -85,14 +85,21 @@
 }
 
 static void
-teardown (void)
+_check_gl_error (GstGLContext * context, gpointer data)
 {
   GLuint error = context->gl_vtable->GetError ();
   fail_if (error != GL_NONE, "GL error 0x%x encountered during processing\n",
       error);
+}
 
+static void
+teardown (void)
+{
   gst_object_unref (convert);
   gst_object_unref (window);
+
+  gst_gl_context_thread_add (context, (GstGLContextThreadFunc) _check_gl_error,
+      NULL);
   gst_object_unref (context);
   gst_object_unref (display);
 }
diff --git a/tests/check/libs/gstglupload.c b/tests/check/libs/gstglupload.c
index 7c52a85..707adb6 100644
--- a/tests/check/libs/gstglupload.c
+++ b/tests/check/libs/gstglupload.c
@@ -86,14 +86,21 @@
 }
 
 static void
-teardown (void)
+_check_gl_error (GstGLContext * context, gpointer data)
 {
   GLuint error = context->gl_vtable->GetError ();
   fail_if (error != GL_NONE, "GL error 0x%x encountered during processing\n",
       error);
+}
 
+static void
+teardown (void)
+{
   gst_object_unref (upload);
   gst_object_unref (window);
+
+  gst_gl_context_thread_add (context, (GstGLContextThreadFunc) _check_gl_error,
+      NULL);
   gst_object_unref (context);
   gst_object_unref (display);
   if (shader)
diff --git a/win32/common/config.h b/win32/common/config.h
index 20cbc17..381fff4 100644
--- a/win32/common/config.h
+++ b/win32/common/config.h
@@ -86,7 +86,7 @@
 #define GST_PACKAGE_ORIGIN "Unknown package origin"
 
 /* GStreamer package release date/time for plugins as YYYY-MM-DD */
-#define GST_PACKAGE_RELEASE_DATETIME "2016-09-30"
+#define GST_PACKAGE_RELEASE_DATETIME "2016-11-01"
 
 /* Define if static plugins should be built */
 #undef GST_PLUGIN_BUILD_STATIC
@@ -737,7 +737,7 @@
 #define PACKAGE_NAME "GStreamer Bad Plug-ins"
 
 /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "GStreamer Bad Plug-ins 1.9.90"
+#define PACKAGE_STRING "GStreamer Bad Plug-ins 1.10.0"
 
 /* Define to the one symbol short name of this package. */
 #define PACKAGE_TARNAME "gst-plugins-bad"
@@ -746,7 +746,7 @@
 #undef PACKAGE_URL
 
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "1.9.90"
+#define PACKAGE_VERSION "1.10.0"
 
 /* directory where plugins are located */
 #ifdef _DEBUG
@@ -790,7 +790,7 @@
 #undef USE_EGL_RPI
 
 /* Version number of package */
-#define VERSION "1.9.90"
+#define VERSION "1.10.0"
 
 /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
    significant byte first (like Motorola and SPARC, unlike Intel). */