Merge branch 'upstream-experimental' into upstream
diff --git a/ChangeLog b/ChangeLog
index 9908889..38014c4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,24 +1,19 @@
-=== release 1.10.4 ===
+=== release 1.12.0 ===
 
-2017-02-23  Sebastian Dröge <slomo@coaxion.net>
+2017-05-04  Sebastian Dröge <slomo@coaxion.net>
 
 	* configure.ac:
-	  releasing 1.10.4
+	  releasing 1.12.0
 
-2017-01-24 19:24:10 -0300  Thibault Saunier <thibault.saunier@osg.samsung.com>
+2017-05-04 13:47:56 +0300  Sebastian Dröge <sebastian@centricular.com>
 
-	* tests/check/meson.build:
-	  meson: Properly use ':' for defining keywords
+	* po/id.po:
+	* po/sv.po:
+	  po: Update translations
 
-2017-01-31 13:50:21 +0200  Sebastian Dröge <sebastian@centricular.com>
+=== release 1.11.91 ===
 
-	* gst/asfdemux/gstasfdemux.c:
-	  asfdemux: Check that we have enough data available before parsing bool/uint extended content descriptors
-	  https://bugzilla.gnome.org/show_bug.cgi?id=777955
-
-=== release 1.10.3 ===
-
-2017-01-30 16:28:10 +0200  Sebastian Dröge <sebastian@centricular.com>
+2017-04-27 17:33:23 +0300  Sebastian Dröge <sebastian@centricular.com>
 
 	* ChangeLog:
 	* NEWS:
@@ -33,7 +28,6 @@
 	* docs/plugins/inspect/plugin-dvdread.xml:
 	* docs/plugins/inspect/plugin-dvdsub.xml:
 	* docs/plugins/inspect/plugin-lame.xml:
-	* docs/plugins/inspect/plugin-mad.xml:
 	* docs/plugins/inspect/plugin-mpeg2dec.xml:
 	* docs/plugins/inspect/plugin-mpg123.xml:
 	* docs/plugins/inspect/plugin-realmedia.xml:
@@ -42,10 +36,111 @@
 	* docs/plugins/inspect/plugin-x264.xml:
 	* docs/plugins/inspect/plugin-xingmux.xml:
 	* gst-plugins-ugly.doap:
-	* win32/common/config.h:
-	  Release 1.10.3
+	* meson.build:
+	  Release 1.11.91
 
-2017-01-30 15:51:25 +0200  Sebastian Dröge <sebastian@centricular.com>
+2017-04-27 16:08:13 +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/fur.po:
+	* po/gl.po:
+	* po/hr.po:
+	* po/hu.po:
+	* po/id.po:
+	* po/it.po:
+	* po/ja.po:
+	* po/lt.po:
+	* po/lv.po:
+	* po/ms.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
+
+2017-04-27 15:29:48 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* po/LINGUAS:
+	* po/fur.po:
+	* po/id.po:
+	* po/sv.po:
+	  po: Update translations
+
+2017-04-27 12:42:34 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
+
+	* ext/x264/gstx264enc.h:
+	  x264: Use __declspec(dllimport) with MinGW too
+	  x264.h says this isn't needed with MinGW, but it looks like it is.
+	  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=779249
+
+2017-04-24 20:28:15 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* common:
+	  Automatic update of common submodule
+	  From 60aeef6 to 48a5d85
+
+2017-04-10 23:49:25 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* autogen.sh:
+	* common:
+	  Automatic update of common submodule
+	  From 39ac2f5 to 60aeef6
+
+=== release 1.11.90 ===
+
+2017-04-07 16:34:22 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* ChangeLog:
+	* NEWS:
+	* RELEASE:
+	* configure.ac:
+	* docs/plugins/inspect/plugin-a52dec.xml:
+	* docs/plugins/inspect/plugin-amrnb.xml:
+	* docs/plugins/inspect/plugin-amrwbdec.xml:
+	* docs/plugins/inspect/plugin-asf.xml:
+	* docs/plugins/inspect/plugin-cdio.xml:
+	* docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+	* docs/plugins/inspect/plugin-dvdread.xml:
+	* docs/plugins/inspect/plugin-dvdsub.xml:
+	* docs/plugins/inspect/plugin-lame.xml:
+	* docs/plugins/inspect/plugin-mpeg2dec.xml:
+	* docs/plugins/inspect/plugin-mpg123.xml:
+	* docs/plugins/inspect/plugin-realmedia.xml:
+	* docs/plugins/inspect/plugin-siddec.xml:
+	* docs/plugins/inspect/plugin-twolame.xml:
+	* docs/plugins/inspect/plugin-x264.xml:
+	* docs/plugins/inspect/plugin-xingmux.xml:
+	* gst-plugins-ugly.doap:
+	* meson.build:
+	  Release 1.11.90
+
+2017-04-07 15:33:31 +0300  Sebastian Dröge <sebastian@centricular.com>
 
 	* po/af.po:
 	* po/az.po:
@@ -89,6 +184,177 @@
 	* po/zh_CN.po:
 	  Update .po files
 
+2017-04-07 15:07:50 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* po/id.po:
+	* po/sv.po:
+	  po: Update translations
+
+2017-03-28 14:18:38 -0300  Thibault Saunier <thibault.saunier@osg.samsung.com>
+
+	* tests/check/meson.build:
+	  meson: test: Fix environment object usage
+	  And use get_pkgconfig_variable instead of calling pkg-config ourself
+
+2017-03-20 17:06:16 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* REQUIREMENTS:
+	  REQUIREMENTS: update for mad mp3 decoder removal
+	  https://bugzilla.gnome.org/show_bug.cgi?id=776140
+
+2017-03-12 11:57:23 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* Makefile.am:
+	  Add libgstrmdemux.so to cruft list
+	  This was renamed to libgstrealmedia.so, this fixes helps fixing
+	  uninstalled setup.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=779344
+
+2017-03-04 11:09:33 -0500  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* docs/plugins/inspect/plugin-realmedia.xml:
+	* gst/realmedia/Makefile.am:
+	* gst/realmedia/meson.build:
+	  Rename plugin filenames to match plugin names
+	  libgstrmdemux.so becomes libgstrealmedia.so
+	  https://bugzilla.gnome.org/show_bug.cgi?id=779344
+
+2017-03-01 23:00:55 +1100  Jan Schmidt <jan@centricular.com>
+
+	* ext/mpeg2dec/gstmpeg2dec.c:
+	  mpeg2dec: Fix latency calculation
+	  The latency calculation was missing a scaling by GST_SECOND,
+	  so it would always report a tiny latency. Fix that.
+	  Spotted by Guillaume Desmottes.
+
+2017-02-27 20:55:34 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/asfdemux/gstasfdemux.c:
+	  asfdemux: Fix compilation with gcc 7
+	  gstasfdemux.c: In function 'gst_asf_demux_parse_stream_object':
+	  gstasfdemux.c:3001:39: error: '<<' in boolean context, did you mean '<' ? [-Werror=int-in-bool-context]
+	  is_encrypted = ! !((flags & 0x8000) << 15);
+	  ~~~~~~~~~~~~~~~~~~^~~~~~
+	  https://bugzilla.gnome.org/show_bug.cgi?id=779329
+
+2017-02-25 21:48:46 -0300  Edgard Lima <edgard.lima@gmail.com>
+
+	* ext/amrwbdec/amrwb.c:
+	* ext/amrwbdec/amrwbdec.h:
+	  Update Edgard Lima's email
+	  https://bugzilla.gnome.org/show_bug.cgi?id=779230
+
+2017-02-24 15:59:47 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* meson.build:
+	  meson: Update version
+
+2017-02-24 15:37:43 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* configure.ac:
+	  Back to development
+
+=== release 1.11.2 ===
+
+2017-02-24 15:07:54 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* ChangeLog:
+	* NEWS:
+	* RELEASE:
+	* configure.ac:
+	* docs/plugins/gst-plugins-ugly-plugins.hierarchy:
+	* docs/plugins/inspect/plugin-a52dec.xml:
+	* docs/plugins/inspect/plugin-amrnb.xml:
+	* docs/plugins/inspect/plugin-amrwbdec.xml:
+	* docs/plugins/inspect/plugin-asf.xml:
+	* docs/plugins/inspect/plugin-cdio.xml:
+	* docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+	* docs/plugins/inspect/plugin-dvdread.xml:
+	* docs/plugins/inspect/plugin-dvdsub.xml:
+	* docs/plugins/inspect/plugin-lame.xml:
+	* docs/plugins/inspect/plugin-mpeg2dec.xml:
+	* docs/plugins/inspect/plugin-mpg123.xml:
+	* docs/plugins/inspect/plugin-realmedia.xml:
+	* docs/plugins/inspect/plugin-siddec.xml:
+	* docs/plugins/inspect/plugin-twolame.xml:
+	* docs/plugins/inspect/plugin-x264.xml:
+	* docs/plugins/inspect/plugin-xingmux.xml:
+	* gst-plugins-ugly.doap:
+	  Release 1.11.2
+
+2017-02-24 12:57:00 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* po/af.po:
+	* po/az.po:
+	* po/bg.po:
+	* po/ca.po:
+	* po/cs.po:
+	* po/da.po:
+	* po/de.po:
+	* po/el.po:
+	* po/en_GB.po:
+	* po/eo.po:
+	* po/es.po:
+	* po/eu.po:
+	* po/fi.po:
+	* po/fr.po:
+	* po/gl.po:
+	* po/hr.po:
+	* po/hu.po:
+	* po/id.po:
+	* po/it.po:
+	* po/ja.po:
+	* po/lt.po:
+	* po/lv.po:
+	* po/ms.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
+
+2017-02-24 12:45:43 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* po/id.po:
+	* po/sv.po:
+	  po: Update translations
+
+2017-02-14 19:56:13 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* Makefile.am:
+	  meson: dist meson build files
+	  Ship meson build files in tarballs, so people who use tarballs
+	  in their builds can start playing with meson already.
+
+2017-02-01 03:08:10 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
+
+	* ext/x264/gstx264enc.c:
+	  x264: Initialize function vtable in plugin_init()
+	  These values are defined in the x264.h header and are not const on
+	  Windows due to the way DLLs work. See:
+	  https://msdn.microsoft.com/en-us/library/619w14ds.aspx
+	  https://msdn.microsoft.com/en-us/library/zw3za17w.aspx
+	  https://bugzilla.gnome.org/show_bug.cgi?id=777903
+
+2017-01-31 13:50:21 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/asfdemux/gstasfdemux.c:
+	  asfdemux: Check that we have enough data available before parsing bool/uint extended content descriptors
+	  https://bugzilla.gnome.org/show_bug.cgi?id=777955
+
 2017-01-30 15:39:59 +0200  Sebastian Dröge <sebastian@centricular.com>
 
 	* gst/asfdemux/gstasfdemux.c:
@@ -98,26 +364,30 @@
 	  allocated.
 	  https://bugzilla.gnome.org/show_bug.cgi?id=777937
 
-2017-01-30 13:41:47 +0200  Sebastian Dröge <sebastian@centricular.com>
+2017-01-24 19:24:10 -0300  Thibault Saunier <thibault.saunier@osg.samsung.com>
 
-	* po/id.po:
-	* po/sv.po:
-	  po: Update translations
+	* tests/check/meson.build:
+	  meson: Properly use ':' for defining keywords
 
-2016-12-02 14:06:21 +0200  Sebastian Dröge <sebastian@centricular.com>
+2017-01-13 12:39:09 +0000  Tim-Philipp Müller <tim@centricular.com>
 
-	* gst/asfdemux/gstasfdemux.c:
-	  asfdemux: Fix memory leak of payload extensions for unusable/unsupported streams
-	  https://bugzilla.gnome.org/show_bug.cgi?id=775515
+	* meson.build:
+	  meson: bump version
 
-=== release 1.10.2 ===
+2017-01-12 16:32:52 +0200  Sebastian Dröge <sebastian@centricular.com>
 
-2016-11-29 16:21:53 +0200  Sebastian Dröge <sebastian@centricular.com>
+	* configure.ac:
+	  Back to development
+
+=== release 1.11.1 ===
+
+2017-01-12 16:10:25 +0200  Sebastian Dröge <sebastian@centricular.com>
 
 	* ChangeLog:
 	* NEWS:
 	* RELEASE:
 	* configure.ac:
+	* docs/plugins/gst-plugins-ugly-plugins.hierarchy:
 	* docs/plugins/inspect/plugin-a52dec.xml:
 	* docs/plugins/inspect/plugin-amrnb.xml:
 	* docs/plugins/inspect/plugin-amrwbdec.xml:
@@ -127,7 +397,6 @@
 	* docs/plugins/inspect/plugin-dvdread.xml:
 	* docs/plugins/inspect/plugin-dvdsub.xml:
 	* docs/plugins/inspect/plugin-lame.xml:
-	* docs/plugins/inspect/plugin-mad.xml:
 	* docs/plugins/inspect/plugin-mpeg2dec.xml:
 	* docs/plugins/inspect/plugin-mpg123.xml:
 	* docs/plugins/inspect/plugin-realmedia.xml:
@@ -136,10 +405,9 @@
 	* docs/plugins/inspect/plugin-x264.xml:
 	* docs/plugins/inspect/plugin-xingmux.xml:
 	* gst-plugins-ugly.doap:
-	* win32/common/config.h:
-	  Release 1.10.2
+	  Release 1.11.1
 
-2016-11-29 15:54:54 +0200  Sebastian Dröge <sebastian@centricular.com>
+2017-01-12 14:45:56 +0200  Sebastian Dröge <sebastian@centricular.com>
 
 	* po/af.po:
 	* po/az.po:
@@ -183,13 +451,123 @@
 	* po/zh_CN.po:
 	  Update .po files
 
-2016-11-29 14:10:05 +0200  Sebastian Dröge <sebastian@centricular.com>
+2017-01-12 14:37:02 +0200  Sebastian Dröge <sebastian@centricular.com>
 
 	* po/hr.po:
 	* po/id.po:
 	* po/sv.po:
 	  po: Update translations
 
+2016-12-16 16:52:00 -0300  Thibault Saunier <thibault.saunier@osg.samsung.com>
+
+	* ext/amrnb/meson.build:
+	* ext/x264/meson.build:
+	* meson.build:
+	  meson: Install presets files
+
+2015-06-26 20:22:47 +0200  Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
+
+	* ext/x264/GstX264Enc.prs:
+	  x264enc: Add a youtube preset.
+	  Based on https://support.google.com/youtube/answer/1722171
+	  https://bugzilla.gnome.org/show_bug.cgi?id=751560
+
+2016-12-28 10:42:15 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* config.h.meson:
+	* configure.ac:
+	* docs/plugins/Makefile.am:
+	* docs/plugins/gst-plugins-ugly-plugins-docs.sgml:
+	* docs/plugins/gst-plugins-ugly-plugins-sections.txt:
+	* docs/plugins/inspect/plugin-mad.xml:
+	* ext/Makefile.am:
+	* ext/mad/Makefile.am:
+	* ext/mad/gstmad.c:
+	* ext/mad/gstmad.h:
+	* ext/mad/meson.build:
+	* ext/meson.build:
+	  mad: remove plugin
+	  We have better replacements such as the mpg123 plugin.
+	  The main reason to keep around mad was for 'freeform'
+	  mp3 support, but mpg123 can handle those too nowadays.
+	  Also, mad is GPL and has been unmaintained for years.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=776140
+
+2016-12-16 19:07:51 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* Makefile.am:
+	* configure.ac:
+	* win32/MANIFEST:
+	* win32/common/.gitignore:
+	* win32/common/config.h:
+	  win32: remove platform-specific copies of generated headers
+	  Unused and no longer needed.
+
+2016-12-14 10:24:26 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* .gitignore:
+	* Makefile.am:
+	* configure.ac:
+	* gst-plugins-ugly.spec.in:
+	  Remove generated .spec file
+	  Likely extremely bitrotten, and we should not ship this anyway.
+
+2016-12-09 17:45:34 -0300  Thibault Saunier <tsaunier@gnome.org>
+
+	* meson.build:
+	  meson: Support building without Gst debug
+
+2016-12-03 08:19:44 +0100  Edward Hervey <bilboed@bilboed.com>
+
+	* README:
+	* common:
+	  Automatic update of common submodule
+	  From f980fd9 to 39ac2f5
+
+2016-12-02 14:06:21 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/asfdemux/gstasfdemux.c:
+	  asfdemux: Fix memory leak of payload extensions for unusable/unsupported streams
+	  https://bugzilla.gnome.org/show_bug.cgi?id=775515
+
+2016-11-30 18:11:30 +0200  Vivia Nikolaidou <vivia@ahiru.eu>
+
+	* ext/x264/gstx264enc.c:
+	  x264enc: Add information for mixed mode
+	  https://bugzilla.gnome.org/show_bug.cgi?id=775411
+
+2016-11-30 17:30:33 +0200  Vivia Nikolaidou <vivia@ahiru.eu>
+
+	* ext/x264/gstx264enc.c:
+	  x264enc: Correctly pass interlacing/TFF information
+	  Give the interlacing information correctly to the encoder. Also parse
+	  TFF/BFF information from the caps and pass it too.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=775411
+
+2016-11-28 15:14:18 +0200  Vivia Nikolaidou <vivia@ahiru.eu>
+
+	* ext/x264/gstx264enc.c:
+	  x264enc: Auto-detect interlace mode from caps
+	  If the caps are interlaced, interlacing is always enabled on the
+	  encoder. If the interlace-mode field is missing or if it's progressive,
+	  the encoder uses the "interlaced" property.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=775228
+
+2016-11-26 11:20:51 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* .gitmodules:
+	  common: use https protocol for common submodule
+	  https://bugzilla.gnome.org/show_bug.cgi?id=775110
+
+2016-11-25 23:51:00 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/realmedia/realhash.c:
+	  real: Fix compiler warnings with latest clang
+	  realhash.c:295:11: error: implicit conversion from 'int' to 'char' changes value from 128 to -128 [-Werror,-Wconstant-conversion]
+	  *buf1 = 128;
+	  ~ ^~~
+	  https://bugzilla.gnome.org/show_bug.cgi?id=775112
+
 2016-11-25 12:41:03 +0100  Edward Hervey <edward@centricular.com>
 
 	* gst/asfdemux/gstasfdemux.c:
@@ -258,95 +636,46 @@
 	  we are neither EOS'd nor ERROR'd out from a pipeline point of view.
 	  https://bugzilla.gnome.org/show_bug.cgi?id=774846
 
-2016-11-20 14:53:32 +0000  Tim-Philipp Müller <tim@centricular.com>
+2016-11-20 20:54:25 +0100  Mark Nauwelaerts <mnauw@users.sourceforge.net>
+
+	* ext/dvdread/dvdreadsrc.c:
+	  dvdreadsrc: dvd-spu-clut-change is a sticky custom event
+
+2016-11-17 17:20:03 -0800  Scott D Phillips <scott.d.phillips@intel.com>
 
 	* meson.build:
-	  meson: update version
+	  meson: Add ignored warnings for MSVC
+	  https://bugzilla.gnome.org/show_bug.cgi?id=774656
 
-=== release 1.10.1 ===
+2016-11-11 14:15:17 +0200  Sebastian Dröge <sebastian@centricular.com>
 
-2016-11-17 15:55:50 +0200  Sebastian Dröge <sebastian@centricular.com>
-
-	* ChangeLog:
-	* NEWS:
-	* RELEASE:
 	* configure.ac:
-	* docs/plugins/inspect/plugin-a52dec.xml:
-	* docs/plugins/inspect/plugin-amrnb.xml:
-	* docs/plugins/inspect/plugin-amrwbdec.xml:
-	* docs/plugins/inspect/plugin-asf.xml:
-	* docs/plugins/inspect/plugin-cdio.xml:
-	* docs/plugins/inspect/plugin-dvdlpcmdec.xml:
-	* docs/plugins/inspect/plugin-dvdread.xml:
-	* docs/plugins/inspect/plugin-dvdsub.xml:
-	* docs/plugins/inspect/plugin-lame.xml:
-	* docs/plugins/inspect/plugin-mad.xml:
-	* docs/plugins/inspect/plugin-mpeg2dec.xml:
-	* docs/plugins/inspect/plugin-mpg123.xml:
-	* docs/plugins/inspect/plugin-realmedia.xml:
-	* docs/plugins/inspect/plugin-siddec.xml:
-	* docs/plugins/inspect/plugin-twolame.xml:
-	* docs/plugins/inspect/plugin-x264.xml:
-	* docs/plugins/inspect/plugin-xingmux.xml:
-	* gst-plugins-ugly.doap:
-	* win32/common/config.h:
-	  Release 1.10.1
+	* ext/x264/Makefile.am:
+	* ext/x264/gstx264enc.c:
+	* ext/x264/gstx264enc.h:
+	* ext/x264/meson.build:
+	* meson_options.txt:
+	  x264enc: Add configure parameter to specify additional x264 libraries with e.g. different depth configuration
+	  x264 has to be compiled specifically for a target bit depth.
+	  Distributions currently ship various libraries in their packages, with
+	  different bit depths.
+	  This change now allows to provide them all at configure time and have
+	  the x264enc element dynamically switch between them based on the bit
+	  depth of the input format.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=763297
 
-2016-11-17 15:06:59 +0200  Sebastian Dröge <sebastian@centricular.com>
-
-	* po/af.po:
-	* po/az.po:
-	* po/bg.po:
-	* po/ca.po:
-	* po/cs.po:
-	* po/da.po:
-	* po/de.po:
-	* po/el.po:
-	* po/en_GB.po:
-	* po/eo.po:
-	* po/es.po:
-	* po/eu.po:
-	* po/fi.po:
-	* po/fr.po:
-	* po/gl.po:
-	* po/hr.po:
-	* po/hu.po:
-	* po/id.po:
-	* po/it.po:
-	* po/ja.po:
-	* po/lt.po:
-	* po/lv.po:
-	* po/ms.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-11-17 14:46:41 +0200  Sebastian Dröge <sebastian@centricular.com>
-
-	* po/id.po:
-	* po/sv.po:
-	  po: Update translations
-
-2016-11-01 19:43:03 +0000  Tim-Philipp Müller <tim@centricular.com>
+2016-11-01 18:09:25 +0000  Tim-Philipp Müller <tim@centricular.com>
 
 	* meson.build:
 	  meson: update version
 
+=== release 1.11.0 ===
+
+2016-11-01 18:53:15 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* configure.ac:
+	  Back to development
+
 === release 1.10.0 ===
 
 2016-11-01 18:05:31 +0200  Sebastian Dröge <sebastian@centricular.com>
diff --git a/Makefile.am b/Makefile.am
index 1ecaff5..214f1b0 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -2,16 +2,13 @@
 
 SUBDIRS = \
 	gst-libs gst ext docs m4 tests common pkgconfig po
-
-# include before EXTRA_DIST for win32 assignment
-include $(top_srcdir)/common/win32.mak
 	
 EXTRA_DIST = \
-	gst-plugins-ugly.spec depcomp \
+	depcomp \
 	AUTHORS COPYING NEWS README RELEASE REQUIREMENTS \
 	ChangeLog gst-plugins-ugly.doap autogen.sh \
-	$(win32)
-	
+	$(shell find "$(top_srcdir)" -type f -name meson.build ! -path "$(top_srcdir)/$(PACKAGE_TARNAME)-*" ) \
+	meson_options.txt config.h.meson
 
 DISTCLEANFILES = _stdint.h
 
@@ -35,20 +32,20 @@
 	true
 endif
 
-win32-update:
-	cp $(top_builddir)/win32/common/config.h-new \
-	    $(top_builddir)/win32/common/config.h
-
 include $(top_srcdir)/common/coverage/lcov.mak
 
 # cruft: plugins that have been merged or moved or renamed
 
 CRUFT_FILES = \
+	$(top_builddir)/gst-plugins-ugly.spec \
 	$(top_builddir)/common/shave \
-	$(top_builddir)/common/shave-libtool
+	$(top_builddir)/common/shave-libtool \
+	$(top_builddir)/gst/realmedia/.libs/libgstrmdemux.so
 
 CRUFT_DIRS = \
-	$(top_srcdir)/docs/plugins/tmpl
+	$(top_srcdir)/docs/plugins/tmpl \
+	$(top_builddir)/win32 \
+	$(top_srcdir)/win32
 
 include $(top_srcdir)/common/cruft.mak
 
diff --git a/Makefile.in b/Makefile.in
index 9adaf62..9958e3d 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -14,8 +14,6 @@
 
 @SET_MAKE@
 
-# various tests to make sure we dist the win32 stuff (for MSVC builds) right
-
 # include this snippet to add a common release: target by using
 # include $(top_srcdir)/common/release.mak
 
@@ -140,7 +138,7 @@
  configure.lineno config.status.lineno
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = config.h
-CONFIG_CLEAN_FILES = gst-plugins-ugly.spec
+CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
 AM_V_P = $(am__v_P_@AM_V@)
 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
@@ -200,11 +198,9 @@
 CSCOPE = cscope
 DIST_SUBDIRS = $(SUBDIRS)
 am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \
-	$(srcdir)/gst-plugins-ugly.spec.in \
 	$(top_srcdir)/common/coverage/lcov.mak \
 	$(top_srcdir)/common/cruft.mak $(top_srcdir)/common/po.mak \
-	$(top_srcdir)/common/release.mak \
-	$(top_srcdir)/common/win32.mak ABOUT-NLS AUTHORS COPYING \
+	$(top_srcdir)/common/release.mak ABOUT-NLS AUTHORS COPYING \
 	ChangeLog INSTALL NEWS README compile config.guess \
 	config.rpath config.sub install-sh ltmain.sh missing
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -385,8 +381,6 @@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
 LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-MAD_CFLAGS = @MAD_CFLAGS@
-MAD_LIBS = @MAD_LIBS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -519,34 +513,26 @@
 SUBDIRS = \
 	gst-libs gst ext docs m4 tests common pkgconfig po
 
-
-# the MANIFEST contains all win32 related files that should be disted
-win32 = $(shell cat $(top_srcdir)/win32/MANIFEST)
-
-# wildcard is apparently not portable to other makes, hence the use of find
-# these are library .def files with the symbols to export
-win32defs = $(shell find $(top_srcdir)/win32/common -name '*.def')
-
-# wildcard is apparently not portable to other makes, hence the use of find
-# these are files that need to be disted with CRLF line endings:
-win32crlf = $(shell find $(top_srcdir)/win32 -name '*.dsw' -o -name '*.dsp')
-
-# include before EXTRA_DIST for win32 assignment
 EXTRA_DIST = \
-	gst-plugins-ugly.spec depcomp \
+	depcomp \
 	AUTHORS COPYING NEWS README RELEASE REQUIREMENTS \
 	ChangeLog gst-plugins-ugly.doap autogen.sh \
-	$(win32)
+	$(shell find "$(top_srcdir)" -type f -name meson.build ! -path "$(top_srcdir)/$(PACKAGE_TARNAME)-*" ) \
+	meson_options.txt config.h.meson
 
 DISTCLEANFILES = _stdint.h
 
 # cruft: plugins that have been merged or moved or renamed
 CRUFT_FILES = \
+	$(top_builddir)/gst-plugins-ugly.spec \
 	$(top_builddir)/common/shave \
-	$(top_builddir)/common/shave-libtool
+	$(top_builddir)/common/shave-libtool \
+	$(top_builddir)/gst/realmedia/.libs/libgstrmdemux.so
 
 CRUFT_DIRS = \
-	$(top_srcdir)/docs/plugins/tmpl
+	$(top_srcdir)/docs/plugins/tmpl \
+	$(top_builddir)/win32 \
+	$(top_srcdir)/win32
 
 all: config.h
 	$(MAKE) $(AM_MAKEFLAGS) all-recursive
@@ -554,7 +540,7 @@
 .SUFFIXES:
 am--refresh: Makefile
 	@:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/common/win32.mak $(top_srcdir)/common/release.mak $(top_srcdir)/common/po.mak $(top_srcdir)/common/coverage/lcov.mak $(top_srcdir)/common/cruft.mak $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/common/release.mak $(top_srcdir)/common/po.mak $(top_srcdir)/common/coverage/lcov.mak $(top_srcdir)/common/cruft.mak $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
@@ -576,7 +562,7 @@
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
 	esac;
-$(top_srcdir)/common/win32.mak $(top_srcdir)/common/release.mak $(top_srcdir)/common/po.mak $(top_srcdir)/common/coverage/lcov.mak $(top_srcdir)/common/cruft.mak $(am__empty):
+$(top_srcdir)/common/release.mak $(top_srcdir)/common/po.mak $(top_srcdir)/common/coverage/lcov.mak $(top_srcdir)/common/cruft.mak $(am__empty):
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	$(SHELL) ./config.status --recheck
@@ -601,8 +587,6 @@
 
 distclean-hdr:
 	-rm -f config.h stamp-h1
-gst-plugins-ugly.spec: $(top_builddir)/config.status $(srcdir)/gst-plugins-ugly.spec.in
-	cd $(top_builddir) && $(SHELL) ./config.status $@
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -1038,76 +1022,6 @@
 .PRECIOUS: Makefile
 
 
-win32-debug:
-	@echo; \
-	echo win32     = $(win32); \
-	echo; \
-	echo win32defs = $(win32defs); \
-	echo; \
-	echo win32crlf = $(win32crlf); \
-	echo
-
-win32-check-crlf:
-	@echo Checking win32 files for CR LF line endings ...; \
-	fail=0 ; \
-	for each in $(win32crlf) ; do \
-	  result=`perl -e 'print grep(/\r\n/,<>)' "$$each" | wc -l`; \
-	  if test "$$result" = 0 ; then \
-	    echo $$each must be fixed to have CRLF line endings ; \
-	    fail=1; \
-	  fi ; \
-	done ; \
-	exit $$fail
-
-# make sure all symbols we export on linux are defined in the win32 .def too
-# (don't care about other unixes for now, it's enough if it works on one of
-# the linux build bots; we assume .so )
-check-exports:
-	@fail=0 ; \
-	for l in $(win32defs); do \
-	  libbase=`basename "$$l" ".def"`; \
-	  libso=`find "$(top_builddir)" -name "$$libbase-@GST_API_VERSION@.so" | grep -v /_build/ | head -n1`; \
-	  libdef="$(top_srcdir)/win32/common/$$libbase.def"; \
-	  if test "x$$libso" != "x"; then \
-	    echo Checking symbols in $$libso; \
-	    if ! ($(top_srcdir)/common/check-exports $$libdef $$libso) ; then \
-	      echo "$$libdef"; \
-	      if test "$$libbase" != "libgstgl"; then \
-	        fail=1; \
-	      fi; \
-	    fi; \
-	  fi; \
-	done ; \
-	if test $$fail != 0; then \
-	  echo '-----------------------------------------------------------'; \
-	  echo 'Run this to update the .def files:'; \
-	  echo 'make update-exports'; \
-	  echo '-----------------------------------------------------------'; \
-	fi; \
-	exit $$fail
-
-update-exports:
-	make check-exports 2>&1 | patch -p1
-	if test -f "$(top_srcdir)/win32/common/libgstgl.def"; then \
-	  git checkout "$(top_srcdir)/win32/common/libgstgl.def";  \
-	fi
-	git add $(top_srcdir)/win32/common/libgst*.def
-	git diff --cached -- $(top_srcdir)/win32/common/
-	echo '^^^--- updated and staged changes above'
-
-# complain about nonportable printf format strings (%lld, %llu, %zu etc.)
-check-nonportable-print-format:
-	@fail=0 ; \
-	loc=`find "$(top_srcdir)" -name '*.c' | xargs grep -n -e '%[0-9]*ll[udx]' -e '%[0-9]*z[udx]'`; \
-	if test "x$$loc" != "x"; then \
-	  echo "Please fix the following print format strings:" ; \
-	  find "$(top_srcdir)" -name '*.c' | xargs grep -n -e '%[0-9]*ll[udx]' -e '%[0-9]*z[udx]'; \
-	  fail=1; \
-	fi; \
-	exit $$fail
-
-dist-hook: check-exports win32-check-crlf
-
 release: dist
 	@$(MAKE) $(PACKAGE)-$(VERSION).tar.xz.sha256sum
 	@echo
@@ -1143,9 +1057,24 @@
 	  find $(distdir) -name \*-marshal.[ch] && \
 	  false )
 
+dist-hook:
+	@if test -f meson.build && ! $(GREP) -e "version.*'$(VERSION)'" meson.build >/dev/null ; then \
+	  echo "*******************************************************"; \
+	  echo "* meson.build needs to be updated for version $(VERSION)"; \
+	  echo "*******************************************************"; \
+	  false; \
+	fi
+
 # rule to download the latest .po files
 download-po: $(top_srcdir)/common/download-translations
 	$(top_srcdir)/common/download-translations $(PACKAGE)
+	for f in po/*.po; do \
+	  num_changed=`git diff $$f | grep -e '^[+-][^+-]' | wc -l`; \
+	  num_date=`git diff $$f | grep -e '^[+-][^+-]' | grep POT-Creation-Date | wc -l`; \
+	  if [ $num_date == $num_changed ]; then \
+	    git checkout $$f; \
+	  fi; \
+	done
 
 check-valgrind:
 	$(MAKE) -C tests/check check-valgrind
@@ -1158,10 +1087,6 @@
 @HAVE_GST_CHECK_FALSE@	true
 @HAVE_GST_CHECK_FALSE@build-checks:
 @HAVE_GST_CHECK_FALSE@	true
-
-win32-update:
-	cp $(top_builddir)/win32/common/config.h-new \
-	    $(top_builddir)/win32/common/config.h
 .PHONY: lcov-reset lcov lcov-run lcov-report lcov-upload lcov-clean
 
 # run lcov from scratch, always
diff --git a/NEWS b/NEWS
index a204424..74fb1ea 100644
--- a/NEWS
+++ b/NEWS
@@ -1,8 +1,6 @@
-# GStreamer 1.10 Release Notes
+# GStreamer 1.12 Release Notes
 
-GStreamer 1.10.0 was originally released on 1st November 2016.
-The latest bug-fix release in the 1.10 series is [1.10.4](#1.10.4) and was
-released on 23 February 2017.
+GStreamer 1.12.0 was originally released on 4th May 2017.
 
 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!
@@ -10,13 +8,13 @@
 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
+See [https://gstreamer.freedesktop.org/releases/1.12/][latest] for the latest
 version of this document.
 
-*Last updated: Thursday 23 Feb 2017, 15:00 UTC [(log)][gitlog]*
+*Last updated: Thursday 4 May 2017, 11: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
+[latest]: https://gstreamer.freedesktop.org/releases/1.12/
+[gitlog]: https://cgit.freedesktop.org/gstreamer/www/log/src/htdocs/releases/1.12/release-notes-1.12.md
 
 ## Introduction
 
@@ -28,1189 +26,709 @@
 
 ## 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 created, 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!
+- new `msdk` plugin for Intel's Media SDK for hardware-accelerated video
+  encoding and decoding on Intel graphics hardware on Windows or Linux.
+
+- `x264enc` can now use multiple x264 library versions compiled for different
+  bit depths at runtime, to transparently provide support for multiple bit
+  depths.
+
+- `videoscale` and `videoconvert` now support multi-threaded scaling and
+  conversion, which is particularly useful with higher resolution video.
+
+- `h264parse` will now automatically insert AU delimiters if needed when
+  outputting byte-stream format, which improves standard compliance and
+  is needed in particular for HLS playback on iOS/macOS.
+
+- `rtpbin` has acquired bundle support for incoming streams
 
 ## Major new features and changes
 
-### Noteworthy new API, features and other changes
+### Noteworthy new API
 
-#### Core API additions
+- The video library gained support for a number of new video formats:
 
-##### Receive property change notifications via bus messages
+  - `GBR_12LE`, `GBR_12BE`, `GBRA_12LE`, `GBRA_12BE` (planar 4:4:4 RGB/RGBA, 12 bits per channel)
+  - `GBRA_10LE`, `GBRA_10BE` (planar 4:4:4:4 RGBA, 10 bits per channel)
+  - `GBRA` (planar 4:4:4:4 ARGB, 8 bits per channel)
+  - `I420_12BE`, `I420_12LE` (planar 4:2:0 YUV, 12 bits per channel)
+  - `I422_12BE`,`I422_12LE` (planar 4:2:2 YUV, 12 bits per channel)
+  - `Y444_12BE`, `Y444_12LE` (planar 4:4:4 YUV, 12 bits per channel)
+  - `VYUY` (another packed 4:2:2 YUV format)
 
-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!
+- The high-level `GstPlayer` API was extended with functions for taking video
+  snapshots and enabling accurate seeking. It can optionally also use the
+  still-experimental `playbin3` element now.
 
 ### New Elements
 
-#### decodebin3, playbin3, parsebin (experimental)
+- msdk: new plugin for Intel's Media SDK for hardware-accelerated video encoding
+  and decoding on Intel graphics hardware on Windows or Linux. This includes
+  an H.264 encoder/decoder (`msdkh264dec`, `msdkh264enc`),
+  an H.265 encoder/decoder (`msdkh265dec`, `msdkh265enc`),
+  an MJPEG encoder/encoder (`msdkmjpegdec`, `msdkmjpegenc`),
+  an MPEG-2 video encoder (`msdkmpeg2enc`) and a VP8 encoder (`msdkvp8enc`).
 
-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.
+- `iqa` is a new Image Quality Assessment plugin based on [DSSIM][dssim],
+  similar to the old (unported) videomeasure element.
 
-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.
+- The `faceoverlay` element, which allows you to overlay SVG graphics over
+  a detected face in a video stream, has been ported from 0.10.
 
-[`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.
+- our `ffmpeg` wrapper plugin now exposes/maps the ffmpeg Opus audio decoder
+  (`avdec_opus`) as well as the GoPro CineForm HD / CFHD decoder (`avdec_cfhd`),
+  and also a parser/writer for the IVF format (`avdemux_ivf` and `avmux_ivf`).
 
-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.
+- `audiobuffersplit` is a new element that splits raw audio buffers into
+  equal-sized buffers
 
-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.
+- `audiomixmatrix` is a new element that mixes N:M audio channels according to
+  a configured mix matrix.
 
-`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.
+- The `timecodewait` element got renamed to `avwait` and can operate in
+  different modes now.
 
-`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.
+- The `opencv` video processing plugin has gained a new `dewarp` element that
+  dewarps fisheye images.
 
-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).
+- `ttml` is a new plugin for parsing and rendering subtitles in Timed Text
+  Markup Language (TTML) format. For the time being these elements will not
+  be autoplugged during media playback however, unless the `GST_TTML_AUTOPLUG=1`
+  environment variable is set. Only the EBU-TT-D profile is supported at this
+  point.
 
-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.
+[dssim]: https://github.com/pornel/dssim
 
-For more information on these new elements, check out Edward Hervey's talk
-[*decodebin3 - dealing with modern playback use cases*][db3-talk]
+### New element features and additions
 
-[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/
+- `x264enc` can now use multiple x264 library versions compiled for different
+  bit depths at runtime, to transparently provide support for multiple bit
+  depths. A new configure parameter `--with-x264-libraries` has been added to
+  specify additional paths to look for additional x264 libraries to load.
+  Background is that the libx264 library is always compile for one specific
+  bit depth and the `x264enc` element would simply support the depth supported
+  by the underlying library. Now we can support multiple depths.
 
-#### LV2 ported from 0.10 and switched from slv2 to lilv2
+- `x264enc` also picks up the interlacing mode automatically from the input
+  caps now and passed interlacing/TFF information correctly to the library.
 
-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.
+- `videoscale` and `videoconvert` now support multi-threaded scaling and
+  conversion, which is particularly useful with higher resolution video.
+  This has to be enabled explicitly via the `"n-threads"` property.
 
-#### WebRTC DSP Plugin for echo-cancellation, gain control and noise suppression
+- `videorate`'s new `"rate"` property lets you set a speed factor
+  on the output stream
 
-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].
+- `splitmuxsink`'s buffer collection and scheduling was rewritten to make
+  processing and splitting deterministic; before it was possible for a buffer
+  to end up in a different file chunk in different runs. `splitmuxsink` also
+  gained a new `"format-location-full"` signal that works just like the existing
+  `"format-location"` signal only that it is also passed the primary stream's
+  first buffer as argument, so that it is possible to construct the file name
+  based on metadata such as the buffer timestamp or any GstMeta attached to
+  the buffer. The new `"max-size-timecode"` property allows for timecode-based
+  splitting. `splitmuxsink` will now also automatically start a new file if the
+  input caps change in an incompatible way.
 
-[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/
+- `fakesink` has a new `"drop-out-of-segment"` property to not drop
+  out-of-segment buffers, which is useful for debugging purposes.
 
-#### Fraunhofer FDK AAC encoder and decoder
+- `identity` gained a `"ts-offset"` property.
 
-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.
+- both `fakesink` and `identity` now also print what kind of metas are attached
+  to buffers when printing buffer details via the `"last-message"` property
+  used by `gst-launch-1.0 -v`.
 
-### Noteworthy element features and additions
+- multiqueue: made `"min-interleave-time"` a configurable property.
 
-#### Major RTP and RTSP improvements
+- video nerds will be thrilled to know that `videotestsrc`'s snow is now
+  deterministic. `videotestsrc` also gained some new properties to make the
+  ball pattern based on system time, and invert colours each second
+  (`"animation-mode"`, `"motion"`, and `"flip"` properties).
 
-- 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.
+- `oggdemux` reverse playback should work again now. You're welcome.
 
-#### Improvements to splitmuxsrc and splitmuxsink
+- `playbin3` and `urisourcebin` now have buffering enabled by default, and
+  buffering message aggregation was fixed.
 
-- 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.
+- `tcpclientsrc` now has a `"timeout"` property
 
-- `splitmuxsrc` now has a `"format-location"` signal to directly specify the list
-  of files to play from.
+- `appsink` has gained support for buffer lists. For backwards compatibility
+  reasons users need to enable this explicitly with `gst_app_sink_set_buffer_list_support()`,
+  however. Once activated, a pulled `GstSample` can contain either a buffer
+  list or a single buffer.
 
-- `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.
+- `splitmuxsrc` reverse playback was fixed and handling of sparse streams, such
+  as subtitle tracks or metadata tracks, was improved.
 
-#### OpenGL/GLES improvements
+- `matroskamux` has acquired support for muxing G722 audio; it also marks all
+  buffers as keyframes now when streaming only audio, so that `tcpserversink`
+  will behave properly with audio-only streams.
 
-##### iOS and macOS (OS/X)
+- `qtmux` gained support for ProRes 4444 XQ, HEVC/H.265 and CineForm (GoPro) formats,
+  and generally writes more video stream-related metadata into the track headers.
+  It is also allows configuration of the maximum interleave size in bytes and
+  time now. For fragmented mp4 we always write the `tfdt` atom now as required
+  by the DASH spec.
 
-- 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.
+- `qtdemux` supports FLAC, xvid, mp2, S16L and CineForm (GoPro) tracks now, and
+  generally tries harder to extract more video-related information from track
+  headers, such as colorimetry or interlacing details. It also received a
+  couple of fixes for the scenario where upstream operates in TIME format and
+  feeds chunks to qtdemux (e.g. DASH or MSE).
 
-##### New API
+- `audioecho` has two new properties to apply a delay only to certain channels
+  to create a surround effect, rather than an echo on all channels. This is
+  useful when upmixing from stereo, for example. The `"surround-delay"` property
+  enables this, and the `"surround-mask"` property controls which channels
+  are considered surround sound channels in this case.
 
-- `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.
+- `webrtcdsp` gained various new properties for gain control and also exposes
+  voice activity detection now, in which case it will post `"voice-activity"`
+  messages on the bus whenever the voice detection status changes.
 
-##### Miscellaneous improvements
+- The `decklink` capture elements for Blackmagic Decklink cards have seen a
+  number of 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`.
+  - `decklinkvideosrc` will post a warning message on "no signal" and an info
+    message when the signal lock has been (re)acquired. There is also a new
+    read-only `"signal"` property that can be used to query the signal lock
+    status. The `GAP` flag will be set on buffers that are captured without
+    a signal lock. The new `drop-no-signal-frames` will make `decklinkvideosrc`
+    drop all buffers that have been captured without an input signal. The
+    `"skip-first-time"` property will make the source drop the first few
+    buffers, which is handy since some devices will at first output buffers
+    with the wrong resolution before they manage to figure out the right input
+    format and decide on the actual output caps.
 
-#### Vulkan
+  - `decklinkaudiosrc` supports more than just 2 audio channels now.
 
-- The Vulkan elements now work under Wayland and have received numerous
-  bugfixes.
+  - The capture sources no longer use the "hardware" timestamps which turn
+    out to be useless and instead just use the pipeline clock directly.
 
-#### QML elements
+- `srtpdec` now also has a readonly `"stats"` property, just like `srtpenc`.
 
-- `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.
+- `rtpbin` gained RTP bundle support, as used by e.g. WebRTC. The first
+   rtpsession will have a `rtpssrcdemux` element inside splitting the streams
+   based on their SSRC and potentially dispatch to a different rtpsession.
+   Because retransmission SSRCs need to be merged with the corresponding media
+   stream the `::on-bundled-ssrc` signal is emitted on `rtpbin` so that the
+   application can find out to which session the SSRC belongs.
 
-#### KMS video sink
+- `rtprtxqueue` gained two new properties exposing retransmission
+  statistics (`"requests"` and `"fulfilled-requests"`)
 
-- 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.
+- `kmssink` will now use the preferred mode for the monitor and render to the
+  base plane if nothing else has set a mode yet. This can also be done forcibly
+  in any case via the new `"force-modesetting"` property. Furthermore, `kmssink`
+  now allows only the supported connector resolutions as input caps in order to
+  avoid scaling or positioning of the input stream, as `kmssink` can't know
+  whether scaling or positioning would be more appropriate for the use case at
+  hand.
 
-#### Wayland video sink
+- `waylandsink` can now take DMAbuf buffers as input in the presence
+  of a compatible Wayland compositor. This enables zero-copy transfer
+  from a decoder or source that outputs DMAbuf.
 
-- `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.
+- `udpsrc` can be bound to more than one interface when joining a
+  multicast group, this is done by giving a comma separate list of
+  interfaces such as multicast-iface="eth0,eth1".
 
 ### Plugin moves
 
-No plugins were moved this cycle. We'll make up for it next cycle, promise!
+- `dataurisrc` moved from gst-plugins-bad to core
 
-### Rewritten memory leak tracer
+- The `rawparse` plugin containing the `rawaudioparse` and `rawvideoparse`
+  elements moved from gst-plugins-bad to gst-plugins-base. These elements
+  supersede the old `videoparse` and `audioparse` elements. They work the
+  same, with just some minor API changes. The old legacy elements still
+  exist in gst-plugins-bad, but may be removed at some point in the future.
 
-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.
+- `timecodestamper` is an element that attaches time codes to video buffers
+  in form of `GstVideoTimeCodeMeta`s. It had a `"clock-source"` property
+  which has now been removed because it was fairly useless in practice. It
+  gained some new properties however: the `"first-timecode"` property can
+  be used to set the inital timecode; alternatively `"first-timecode-to-now"`
+  can be set, and then the current system time at the time the first buffer
+  arrives is used as base time for the time codes.
 
-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:
+### Plugin removals
 
- - `SIGUSR1`: log alive objects
- - `SIGUSR2`: create a checkpoint and print a list of objects created and
-   destroyed since the previous checkpoint.
+- The `mad` mp1/mp2/mp3 decoder plugin was removed from gst-plugins-ugly,
+  as libmad is GPL licensed, has been unmaintained for a very long time, and
+  there are better alternatives available. Use the `mpg123audiodec` element
+  from the `mpg123` plugin in gst-plugins-ugly instead, or `avdec_mp3` from
+  the `gst-libav` module which wraps the ffmpeg library. We expect that we
+  will be able to move mp3 decoding to gst-plugins-good in the next cycle
+  seeing that most patents around mp3 have expired recently or are about to
+  expire.
 
-Unfortunately this will not work on Windows due to no signals, however.
+- The `mimic` plugin was removed from gst-plugins-bad. It contained a decoder
+  and encoder for a video codec used by MSN messenger many many years ago (in
+  a galaxy far far away). The underlying library is unmaintained and no one
+  really needs to use this codec any more. Recorded videos can still be played
+  back with the MIMIC decoder in gst-libav.
 
-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.
+## Miscellaneous API additions
 
-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.
+- Request pad name templates passed to `gst_element_request_pad()` may now
+  contain multiple specifiers, such as e.g. `src_%u_%u`.
 
-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_buffer_iterate_meta_filtered()`][buffer-iterate-meta-filtered] is a
+  variant of `gst_buffer_iterate_meta()` that only returns metas of the
+  requested type and skips all other metas.
 
-    GST_TRACERS=leaks gst-launch-1.0 videotestsrc num-buffers=10 ! fakesink
+- [`gst_pad_task_get_state()`][pad-task-get-state] gets the current state of
+  a task in a thread-safe way.
 
-If there are any leaks, a warning will be raised at the end.
+- [`gst_uri_get_media_fragment_table()`][uri-get-fragment-table] provides the
+  media fragments of an URI as a table of key=value pairs.
 
-It is also possible to trace only certain types of objects or mini-objects:
+- [`gst_print()`][print], [`gst_println()`][println], [`gst_printerr()`][printerr],
+  and [`gst_printerrln()`][printerrln] can be used to print to stdout or stderr.
+  These functions are similar to `g_print()` and `g_printerr()` but they also
+  support all the additional format specifiers provided by the GStreamer
+  logging system, such as e.g. `GST_PTR_FORMAT`.
 
-    GST_TRACERS="leaks(GstEvent,GstMessage)" gst-launch-1.0 videotestsrc num-buffers=10 ! fakesink
+- a `GstParamSpecArray` has been added, for elements who want to have array
+  type properties, such as the `audiomixmatrix` element for example. There are
+  also two new functions to set and get properties of this type from bindings:
+   - gst_util_set_object_array()
+   - gst_util_get_object_array()
 
-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.
+- various helper functions have been added to make it easier to set or get
+  GstStructure fields containing caps-style array or list fields from language
+  bindings (which usually support GValueArray but don't know about the GStreamer
+  specific fundamental types):
+   - [`gst_structure_get_array()`][get-array]
+   - [`gst_structure_set_array()`][set-array]
+   - [`gst_structure_get_list()`][get-list]
+   - [`gst_structure_set_list()`][set-list]
 
-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.
+- a new ['dynamic type' registry factory type][dynamic-type] was added to
+  register dynamically loadable GType types. This is useful for automatically
+  loading enum/flags types that are used in caps, such as for example the
+  `GstVideoMultiviewFlagsSet` type used in multiview video caps.
 
-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.
+- there is a new [`GstProxyControlBinding`][proxy-control-binding] for use
+  with GstController. This allows proxying the control interface from one
+  property on one GstObject to another property (of the same type) in another
+  GstObject. So e.g. in parent-child relationship, one may need to call
+  `gst_object_sync_values()` on the child and have a binding (set elsewhere)
+  on the parent update the value. This is used in `glvideomixer` and `glsinkbin`
+  for example, where `sync_values()` on the child pad or element will call
+  `sync_values()` on the exposed bin pad or element.
 
-[leaks-talk]: https://gstconf.ubicast.tv/videos/tracking-memory-leaks/
-[leaks-blog]: https://blog.desmottes.be/?post/2016/06/20/GStreamer-leaks-tracer
+  Note that this doesn't solve GObject property forwarding, that must
+  be taken care of by the implementation manually or using GBinding.
 
-### GES and NLE changes
+- `gst_base_parse_drain()` has been made public for subclasses to use.
 
-- 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!
+- `gst_base_sink_set_drop_out_of_segment()' can be used by subclasses to
+  prevent GstBaseSink from dropping buffers that fall outside of the segment.
 
-### GStreamer validate changes
+- [`gst_calculate_linear_regression()`][calc-lin-regression] is a new utility
+  function to calculate a linear regression.
 
-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.
+- [`gst_debug_get_stack_trace`][get-stack-trace] is an easy way to retrieve a
+  stack trace, which can be useful in tracer plugins.
 
-Playbin3 support has been added so we can run validate tests with `playbin3`
-instead of playbin.
+- allocators: the dmabuf allocator is now sub-classable, and there is a new
+  `GST_CAPS_FEATURE_MEMORY_DMABUF` define.
 
-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).
+- video decoder subclasses can use the newly-added function
+  `gst_video_decoder_allocate_output_frame_with_params()` to
+  pass a `GstBufferPoolAcquireParams` to the buffer pool for
+  each buffer allocation.
 
-[improving-debugging-gstreamer-validate]: https://blogs.s-osg.org/improving-debugging-gstreamer-validate/
+- the video time code API has gained a dedicated [`GstVideoTimeCodeInterval`][timecode-interval]
+  type plus related API, including functions to add intervals to timecodes.
 
-### gst-libav changes
+- There is a new `libgstbadallocators-1.0` library in gst-plugins-bad, which
+  may go away again in future releases once the `GstPhysMemoryAllocator`
+  interface API has been validated by more users and was moved to
+  `libgstallocators-1.0` from gst-plugins-base.
 
-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.
+[timecode-interval]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstvideo.html#gst-video-time-code-interval-new
+[buffer-iterate-meta-filtered]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html#gst-buffer-iterate-meta-filtered
+[pad-task-get-state]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#gst-pad-task-get-state
+[uri-get-fragment-table]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstUri.html#gst-uri-get-media-fragment-table
+[print]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstInfo.html#gst-print
+[println]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstInfo.html#gst-println
+[printerr]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstInfo.html#gst-printerr
+[printerrln]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstInfo.html#gst-printerrln
+[get-array]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstStructure.html#gst-structure-get-array
+[set-array]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstStructure.html#gst-structure-set-array
+[get-list]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstStructure.html#gst-structure-get-list
+[set-list]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstStructure.html#gst-structure-set-list
+[dynamic-type]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstDynamicTypeFactory.html
+[proxy-control-binding]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/gstreamer-libs-GstProxyControlBinding.html
+[calc-lin-regression]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstUtils.html#gst-calculate-linear-regression
+[get-stack-trace]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstUtils.html#gst-debug-get-stack-trace
+
+### GstPlayer
+
+New API has been added to:
+
+ - get the number of audio/video/subtitle streams:
+   - `gst_player_media_info_get_number_of_streams()`
+   - `gst_player_media_info_get_number_of_video_streams()`
+   - `gst_player_media_info_get_number_of_audio_streams()`
+   - `gst_player_media_info_get_number_of_subtitle_streams()`
+
+ - enable accurate seeking: `gst_player_config_set_seek_accurate()`
+   and `gst_player_config_get_seek_accurate()`
+
+ - get a snapshot image of the video in RGBx, BGRx, JPEG, PNG or
+   native format: [`gst_player_get_video_snapshot()`][snapshot]
+
+ - selecting use of a specific video sink element
+   ([`gst_player_video_overlay_video_renderer_new_with_sink()`][renderer-with-vsink])
+
+ - If the environment variable `GST_PLAYER_USE_PLAYBIN3` is set, GstPlayer will
+   use the still-experimental `playbin3` element and the `GstStreams` API for
+   playback.
+
+[snapshot]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-libs/html/gst-plugins-bad-libs-gstplayer.html#gst-player-get-video-snapshot
+[renderer-with-vsink]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-libs/html/gst-plugins-bad-libs-gstplayer-videooverlayvideorenderer.html#gst-player-video-overlay-video-renderer-new-with-sink
+
+## Miscellaneous changes
+
+- video caps for interlaced video may contain an optional `"field-order"` field
+  now in the case of `interlaced-mode=interleaved` to signal that the field
+  order is always the same throughout the stream. This is useful to signal to
+  muxers such as mp4mux. The new field is parsed from/to `GstVideoInfo` of course.
+
+- video decoder and video encoder base classes try harder to proxy
+  interlacing, colorimetry and chroma-site related fields in caps properly.
+
+- The buffer stored in the `PROTECTION` events is now left unchanged. This is a
+  change of behaviour since 1.8, especially for the mssdemux element which used to
+  decode the base64 parsed data wrapped in the protection events emitted by the
+  demuxer.
+
+- `PROTECTION` events can now be injected into the pipeline from the application;
+  source elements deriving from GstBaseSrc will forward those downstream now.
+
+- The DASH demuxer is now correctly parsing the MSPR-2.0 ContentProtection nodes
+  and emits Protection events accordingly. Applications relying on those events
+  might need to decode the base64 data stored in the event buffer before using it.
+
+- The registry can now also be disabled by setting the environment variable
+  `GST_REGISTRY_DISABLE=yes`, with similar effect as the `GST_DISABLE_REGISTRY`
+  compile time switch.
+
+- Seeking performance with gstreamer-vaapi based decoders was improved. It would
+  recreate the decoder and surfaces on every seek which can be quite slow.
+
+- more robust handling of input caps changes in videoaggregator-based elements
+  such as `compositor`.
+
+- Lots of adaptive streaming-related fixes across the board (DASH, MSS, HLS). Also:
+
+  - `mssdemux`, the Microsoft Smooth Streaming demuxer, has seen various
+    fixes for live streams, duration reporting and seeking.
+
+  - The DASH manifest parser now extracts MS PlayReady ContentProtection objects
+    from manifests and sends them downstream as `PROTECTION` events. It also
+    supports multiple Period elements in external xml now.
+
+- gst-libav was updated to ffmpeg 3.3 but should still work with any 3.x
+  version.
+
+- GstEncodingProfile has been generally enhanced so it can, for
+  example, be used to get possible profiles for a given file
+  extension. It is now possible to define profiles based on element
+  factory names or using a path to a `.gep` file containing a
+  serialized profile.
+
+- `audioconvert` can now do endianness conversion in-place. All other
+  conversions still require a copy, but e.g. sign conversion and a few others
+  could also be implemented in-place now.
+
+- The new, experimental `playbin3` and `urisourcebin` elements got many
+  bugfixes and improvements and should generally be closer to a full
+  replacement of the old elements.
+
+- `interleave` now supports > 64 channels.
+
+### OpenGL integration
+
+- As usual the GStreamer OpenGL integration library has seen numerous
+  fixes and performance improvements all over the place, and is hopefully
+  ready now to become API stable and be moved to gst-plugins-base during the
+  1.14 release cycle.
+
+- The GStreamer OpenGL integration layer has also gained support for the
+  Vivante EGL FB windowing system, which improves performance on platforms
+  such as Freescale iMX.6 for those who are stuck with the proprietary driver.
+  The `qmlglsink` element also supports this now if Qt is used with eglfs or
+  wayland backend, and it works in conjunction with [gstreamer-imx][gstreamer-imx]
+  of course.
+
+- various `qmlglsrc` improvements
+
+[gstreamer-imx]: https://github.com/Freescale/gstreamer-imx
+
+## Tracing framework and debugging improvements
+
+- New tracing hooks have been added to track GstMiniObject and GstObject
+  ref/unref operations.
+
+- The memory leaks tracer can optionally use this to retrieve stack traces if
+  enabled with e.g. `GST_TRACERS=leaks(filters="GstEvent,GstMessage",stack-traces-flags=full)`
+
+- The `GST_DEBUG_FILE` environment variable, which can be used to write the
+  debug log output to a file instead of printing it to stderr, can now contain
+  a name pattern, which is useful for automated testing and continuous
+  integration systems. The following format specifiers are supported:
+
+   - `%p`: will be replaced with the PID
+   - `%r`: will be replaced with a random number, which is useful for instance
+     when running two processes with the same PID but in different containers.
+
+## Tools
+
+- `gst-inspect-1.0` can now list elements by type with the new `--types`
+   command-line option, e.g. `gst-inspect-1.0 --types=Audio/Encoder` will
+   show a list of audio encoders.
+
+- `gst-launch-1.0` and `gst_parse_launch()` have gained a new operator (`:`)
+   that allows linking all pads between two elements. This is useful in cases
+   where the exact number of pads or type of pads is not known beforehand, such
+   as in the `uridecodebin : encodebin` scenario, for example. In this case,
+   multiple links will be created if the encodebin has multiple profiles
+   compatible with the output of uridecodebin.
+
+- `gst-device-monitor-1.0` now shows a `gst-launch-1.0` snippet for each
+  device that shows how to make use of it in a `gst-launch-1.0` pipeline string.
+
+## GStreamer RTSP server
+
+- The RTSP server now also supports Digest authentication in addition to Basic
+  authentication.
+
+- The `GstRTSPClient` class has gained a `pre-*-request` signal and virtual
+  method for each client request type, emitted in the beginning of each rtsp
+  request. These signals or virtual methods let the application validate the
+  requests, configure the media/stream in a certain way and also generate error
+  status codes in case of an error or a bad request.
+
+## GStreamer VAAPI
+
+- GstVaapiDisplay now inherits from GstObject, thus the VA display logging
+  messages are better and tracing the context sharing is more readable.
+
+- When uploading raw images into a VA surfaces now VADeriveImages are tried
+  fist, improving the upload performance, if it is possible.
+
+- The decoders and the post-processor now can push dmabuf-based buffers to
+  downstream under certain conditions. For example:
+
+  `GST_GL_PLATFORM=egl gst-play-1.0 video-sample.mkv --videosink=glimagesink`
+
+- Refactored the wrapping of VA surface into gstreamer memory, adding lock
+  when mapping and unmapping, and many other fixes.
+
+- Now `vaapidecodebin` loads `vaapipostproc` dynamically. It is possible to
+  avoid it usage with the environment variable `GST_VAAPI_DISABLE_VPP=1`.
+
+- Regarding encoders: they have primary rank again, since they can discover,
+  in run-time, the color formats they can use for upstream raw buffers and
+  caps renegotiation is now possible. Also the encoders push encoding info
+  downstream via tags.
+
+- About specific encoders: added constant bit-rate encoding mode for VP8 and
+  H265 encoder handles P010_10LE color format.
+
+- Regarding decoders, flush operation has been improved, now the internal VA
+  encoder is not recreated at each flush. Also there are several improvements
+  in the handling of H264 and H265 streams.
+
+- VAAPI plugins try to create their on GstGL context (when available) if they
+  cannot find it in the pipeline, to figure out what type of VA Display they
+  should create.
+
+- Regarding `vaapisink` for X11, if the backend reports that it is unable to
+  render correctly the current color format, an internal VA post-processor, is
+  instantiated (if available) and converts the color format.
+
+## GStreamer Editing Services and NLE
+
+- Enhanced auto transition behaviour
+
+- Fix some races in `nlecomposition`
+
+- Allow building with msvc
+
+- Added a UNIX manpage for `ges-launch`
+
+- API changes:
+  - Added ges_deinit (allowing the leak tracer to work properly)
+  - Added ges_layer_get_clips_in_interval
+  - Finally hide internal symbols that should never have been exposed
+
+## GStreamer validate
+
+- Port `gst-validate-launcher` to python 3
+
+- `gst-validate-launcher` now checks if blacklisted bugs have been fixed on
+  bugzilla and errors out if it is the case
+
+- Allow building with msvc
+
+- Add ability for the launcher to run GStreamer unit tests
+
+- Added a way to activate the leaks tracer on our tests and fix leaks
+
+- Make the http server multithreaded
+
+- New testsuite for running various test scenarios on the DASH-IF test vectors
 
 ## Build and Dependencies
 
-### Experimental support for Meson as build system
+- Meson build files are now disted in tarballs, for jhbuild and so distro
+  packagers can start using it. Note that the Meson-based build system is not
+  100% feature-equivalent with the autotools-based one yet.
 
-#### Overview
+- Some plugin filenames have been changed to match the plugin names: for example
+  the file name of the `encoding` plugin in gst-plugins-base containing the
+  `encodebin` element was `libgstencodebin.so` and has been changed to
+  `libgstencodebin.so`. This affects only a handful of plugins across modules.
 
-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.
+  **Developers who install GStreamer from source and just do `make install`**
+  **after updating the source code, without doing `make uninstall` first, will**
+  **have to manually remove the old installed plugin files from the installation**
+  **prefix, or they will get 'Cannot register existing type' critical warnings.**
 
-Autotools remains the primary build system for the time being, but we hope to
-someday replace it and will steadily work towards that goal.
+- Most of the docbook-based documentation (FAQ, Application Development Manual,
+  Plugin Writer's Guide, design documents) has been converted to markdown and
+  moved into a new gst-docs module. The gtk-doc library API references and
+  the plugins documentation are still built as part of the source modules though.
 
-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.
+- GStreamer core now optionally uses libunwind and libdw to generate backtraces.
+  This is useful for tracer plugins used during debugging and development.
 
-For more information on Meson check out [these videos][meson-videos] and also
-the [Meson talk][meson-gstconf] at the GStreamer Conference.
+- There is a new `libgstbadallocators-1.0` library in gst-plugins-bad (which
+  may go away again in future releases once the `GstPhysMemoryAllocator`
+  interface API has been validated by more users).
 
-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.
+- `gst-omx` and `gstreamer-vaapi` modules can now also be built using the
+  Meson build 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.
+- The `qtkitvideosrc` element for macOS was removed. The API is deprecated
+  since 10.9 and it wasn't shipped in the binaries since a few releases.
 
 ## Platform-specific improvements
 
 ### Android
 
-#### New universal binaries for all supported ABIs
+- androidmedia: add support for VP9 video decoding/encoding and Opus audio
+  decoding (where supported)
 
-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.
+### OS/X and iOS
 
-[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
+- `avfvideosrc`, which represents an iPhone camera or, on a Mac, a screencapture
+  session, so far allowed you to select an input device by device index only.
+  New API adds the ability to select the position (front or back facing) and
+  device-type (wide angle, telephoto, etc.). Furthermore, you can now also
+  specify the orientation (portrait, landscape, etc.) of the videostream.
 
 ### 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
+- `dx9screencapsrc` can now optionally also capture the cursor.
 
 ## 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
+Aleix Conchillo Flaque, Alejandro G. Castro, Aleksandr Slobodeniuk, Alexandru
+Băluț, Alex Ashley, Andre McCurdy, Andrew, Anton Eliasson, Antonio Ospite,
+Arnaud Vrac, Arun Raghavan, Aurélien Zanelli, Axel Menzel, Benjamin Otte,
+Branko Subasic, Brendan Shanks, Carl Karsten, Carlos Rafael Giani, ChangBok
+Chae, Chris Bass, Christian Schaller, christophecvr, Claudio Saavedra,
+Corentin Noël, Dag Gullberg, Daniel Garbanzo, Daniel Shahaf, David Evans,
+David Schleef, David Warman, Dominique Leuenberger, Dongil Park, Douglas
+Bagnall, Edgard Lima, Edward Hervey, Emeric Grange, Enrico Jorns, Enrique
+Ocaña González, Evan Nemerson, Fabian Orccon, Fabien Dessenne, Fabrice Bellet,
+Florent Thiéry, Florian Zwoch, Francisco Velazquez, Frédéric Dalleau, Garima
+Gaur, Gaurav Gupta, George Kiagiadakis, Georg Lippitsch, Göran Jönsson, Graham
+Leggett, Guillaume Desmottes, Gurkirpal Singh, Haihua Hu, Hanno Boeck, Havard
+Graff, Heekyoung Seo, hoonhee.lee, Hyunjun Ko, Imre Eörs, Iñaki García
+Etxebarria, Jagadish, Jagyum Koo, Jan Alexander Steffens (heftig), Jan
+Schmidt, Jean-Christophe Trotin, Jochen Henneberg, Jonas Holmberg, Joris
+Valette, Josep Torra, Juan Pablo Ugarte, Julien Isorce, Jürgen Sachs, Koop
+Mast, Kseniia Vasilchuk, Lars Wendler, leigh123linux@googlemail.com, Luis de
+Bethencourt, Lyon Wang, Marcin Kolny, Marinus Schraal, Mark Nauwelaerts,
+Mathieu Duponchelle, Matthew Waters, Matt Staples, Michael Dutka, Michael
+Olbrich, Michael Smith, Michael Tretter, Miguel París Díaz, namanyadav12, Neha
+Arora, Nick Kallen, Nicola Murino, Nicolas Dechesne, Nicolas Dufresne, Nicolas
+Huet, Nirbheek Chauhan, Ole André Vadla Ravnås, Olivier Crête, Patricia
+Muscalu, Peter Korsgaard, Peter Seiderer, Petr Kulhavy, Philippe Normand,
+Philippe Renon, Philipp Zabel, Rahul Bedarkar, Reynaldo H. Verdejo Pinochet,
+Ricardo Ribalda Delgado, Rico Tzschichholz, Руслан Ижбулатов, Samuel Maroy,
+Santiago Carot-Nemesio, Scott D Phillips, Sean DuBois, Sebastian Dröge, Sergey
+Borovkov, Seungha Yang, shakin chou, Song Bing, Søren Juul, Sreerenj
+Balachandran, Stefan Kost, Stefan Sauer, Stepan Salenikovich, Stian Selnes,
+Stuart Weaver, suhas2go, Thiago Santos, Thibault Saunier, Thomas Bluemel,
+Thomas Petazzoni, Tim-Philipp Müller, Ting-Wei Lan, Tobias Mueller, Todor
+Tomov, Tomasz Zajac, Ulf Olsson, Ursula Maplehurst, Víctor Manuel Jáquez Leal,
+Victor Toso, Vincent Penquerc'h, Vineeth TM, Vinod Kesti, Vitor Massaru Iha,
+Vivia Nikolaidou, WeiChungChang, William Manley, Wim Taymans, Wojciech
+Przybyl, Wonchul Lee, Xavier Claessens, Yasushi SHOJI
 
 ... and many others who have contributed bug reports, translations, sent
 suggestions or helped testing.
 
-## Bugs fixed in 1.10
+## Bugs fixed in 1.12
 
-More than [750 bugs][bugs-fixed-in-1.10] have been fixed during
-the development of 1.10.
+More than [635 bugs][bugs-fixed-in-1.12] have been fixed during
+the development of 1.12.
 
 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.
+stable 1.10 branch and fixed there as well, all fixes that ended up in the
+1.10 branch are also included in 1.12.
 
 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
+[bugs-fixed-in-1.12]: https://bugzilla.gnome.org/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&classification=Platform&limit=0&list_id=213265&order=bug_id&product=GStreamer&query_format=advanced&resolution=FIXED&target_milestone=1.10.1&target_milestone=1.10.2&target_milestone=1.10.3&target_milestone=1.10.4&target_milestone=1.11.1&target_milestone=1.11.2&target_milestone=1.11.3&target_milestone=1.11.4&target_milestone=1.11.90&target_milestone=1.11.91&target_milestone=1.12.0
 
-## Stable 1.10 branch
+## Stable 1.12 branch
 
-After the 1.10.0 release there will be several 1.10.x bug-fix releases which
+After the 1.12.0 release there will be several 1.12.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.
+usually. The 1.12.x bug-fix releases will be made from the git 1.12 branch, which
+is a stable branch.
 
-### 1.10.0
+### 1.12.0
 
-1.10.0 was released on 1st November 2016.
-
-<a name="1.10.1"></a>
-
-### 1.10.1
-
-The first 1.10 bug-fix release (1.10.1) was released on 17 November 2016.
-This release only contains bugfixes and it should be safe to update from 1.10.x.
-
-#### Major bugfixes in 1.10.1
-
- - Security-relevant bugfix in the vmnc decoder (CVE-2016-9445, CVE-2016-9446)
- - Various bugfixes to playbin3/decodebin3
- - Fix error at the end of playing any WAV file
- - Fix usability of androidmedia plugin if the camera or sensor API is not
-   available, but codecs are
- - Handle redirections on PLAY, and missing control attribute in the RTSP source
- - Various OpenGL related bugfixes
- - ... and many, many more!
-
-For a full list of bugfixes see [Bugzilla][buglist-1.10.1]. Note that this is
-not the full list of changes. For the full list of changes please refer to the
-GIT logs or ChangeLogs of the particular modules.
-
-[buglist-1.10.1]: https://bugzilla.gnome.org/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&classification=Platform&limit=0&list_id=168172&order=bug_id&product=GStreamer&query_format=advanced&resolution=FIXED&target_milestone=1.10.1
-
-<a name="1.10.2"></a>
-
-### 1.10.2
-
-The second 1.10 bug-fix release (1.10.2) was released on 29 November 2016.
-This release only contains bugfixes and it should be safe to update from 1.10.x.
-
-#### Major bugfixes in 1.10.2
-
- - Security-relevant bugfix in the FLI/FLX/FLC decoder (CVE-2016-9634,
-   CVE-2016-9635, CVE-2016-9636)
- - Various fixes for crashes, assertions and other failures on fuzzed input
-   files. Among others, thanks to Hanno Böck for testing and reporting
-   (CVE-2016-9807, CVE-2016-9808, CVE-2016-9809, CVE-2016-9810, CVE-2016-9811,
-   CVE-2016-9812, CVE-2016-9813).
- - SAVP/SAVPF profile in gst-rtsp-server works for live streams again, and the
-   correct MIKEY policy message is generated
- - Further OpenGL related bugfixes
- - gst-libav was updated to ffmpeg 3.2.1
- - ... and many, many more!
-
-For a full list of bugfixes see [Bugzilla][buglist-1.10.2]. Note that this is
-not the full list of changes. For the full list of changes please refer to the
-GIT logs or ChangeLogs of the particular modules.
-
-[buglist-1.10.2]: https://bugzilla.gnome.org/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&classification=Platform&limit=0&list_id=168172&order=bug_id&product=GStreamer&query_format=advanced&resolution=FIXED&target_milestone=1.10.2
-
-<a name="1.10.3"></a>
-
-### 1.10.3
-
-The third 1.10 bug-fix release (1.10.3) was released on 30 January 2017.
-This release only contains bugfixes and it should be safe to update from 1.10.x.
-
-#### Major bugfixes in 1.10.3
-
- - Various fixes for crashes, assertions, deadlocks and memory leaks on fuzzed
-   input files and in other situations (CVE-2016-10198, CVE-2016-10199,
-   CVE-2017-5837, CVE-2017-5838, CVE-2017-5839, CVE-2017-5840, CVE-2017-5841,
-   CVE-2017-5842, CVE-2017-5843, CVE-2017-5844, CVE-2017-5845, CVE-2017-5846)
- - Regression fixes for souphttpsrc with redirection tracking and retrying
- - Regression fix for gst-rtsp-server not handling TCP-only medias anymore
- - Various other bugfixes the RTP/RTSP codebase
- - Fix for gmodule on 64 bit Android, it was never working before there
- - vp8enc works again on 32 bit Windows
- - Fixes to Opus PLC handling in the decoder
- - Fix for stream corruption in multihandlesink when removing clients
- - gst-libav was updated to ffmpeg 3.2.2
- - ... and many, many more!
-
-For a full list of bugfixes see [Bugzilla][buglist-1.10.3]. Note that this is
-not the full list of changes. For the full list of changes please refer to the
-GIT logs or ChangeLogs of the particular modules.
-
-[buglist-1.10.3]: https://bugzilla.gnome.org/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&classification=Platform&limit=0&list_id=187054&order=bug_id&product=GStreamer&query_format=advanced&resolution=FIXED&target_milestone=1.10.3
-
-<a name="1.10.4"></a>
-
-### 1.10.4
-
-The third 1.10 bug-fix release (1.10.4) was released on 23 February 2017.
-This release only contains bugfixes and it should be safe to update from 1.10.x.
-
-#### Major bugfixes in 1.10.4
-
- - Various fixes for crashes, assertions, deadlocks and memory leaks on fuzzed
-   input files and in other situations (CVE-2017-5847, CVE-2017-5848)
- - More regression fixes for souphttpsrc redirection tracking
- - Regression fix for gmodule on 32 bit Android, which was introduced as part
-   of the 64 bit Android fix in 1.10.3 and broke the androidmedia plugin
- - Various bugfixes for regressions and other problems in the V4L2 plugin
- - Fix for 5.1, 6.1 and 7.1 channel layouts for Vorbis
- - Fixes for timestamp generation of Android video encoder element
- - gst-libav was updated to ffmpeg 3.2.4, fixing a couple of CVEs
- - ... and many, many more!
-
-For a full list of bugfixes see [Bugzilla][buglist-1.10.4]. Note that this is
-not the full list of changes. For the full list of changes please refer to the
-GIT logs or ChangeLogs of the particular modules.
-
-[buglist-1.10.4]: https://bugzilla.gnome.org/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&classification=Platform&limit=0&list_id=187054&order=bug_id&product=GStreamer&query_format=advanced&resolution=FIXED&target_milestone=1.10.4
+1.12.0 was released on 4th May 2017.
 
 ## 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 `webrtcdsp` element is currently not shipped as part of the Windows
+  binary packages due to a [build system issue][bug-770264].
 
-## Schedule for 1.12
+[bug-770264]: https://bugzilla.gnome.org/show_bug.cgi?id=770264
 
-Our next major feature release will be 1.12, and 1.11 will be the unstable
+## Schedule for 1.14
+
+Our next major feature release will be 1.14, 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.
+of 1.13/1.14 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-February,
-followed by several 1.11 pre-releases and the new 1.12 stable release
-in April.
+The plan for the 1.14 development cycle is yet to be confirmed, but it is
+expected that feature freeze will be around September 2017
+followed by several 1.13 pre-releases and the new 1.14 stable release
+in October.
 
-1.12 will be backwards-compatible to the stable 1.10, 1.8, 1.6, 1.4, 1.2 and
-1.0 release series.
+1.14 will be backwards-compatible to the stable 1.12, 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*
+*These release notes have been prepared by Sebastian Dröge, Tim-Philipp Müller
+and Víctor Manuel Jáquez Leal.*
 
 *License: [CC BY-SA 4.0](http://creativecommons.org/licenses/by-sa/4.0/)*
diff --git a/README b/README
index 48e2c9f..beb6867 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-GStreamer 1.9.x development series
+GStreamer 1.11.x development series
 
 WHAT IT IS
 ----------
diff --git a/RELEASE b/RELEASE
index 790db7b..81be6c4 100644
--- a/RELEASE
+++ b/RELEASE
@@ -1,15 +1,16 @@
 
-Release notes for GStreamer Ugly Plugins 1.10.4
+Release notes for GStreamer Ugly Plugins 1.12.0
 
-The GStreamer team is proud to announce the fourth bugfix release in the stable
-1.10 release series of your favourite cross-platform multimedia framework!
+The GStreamer team is pleased to announce the first release in the stable 1.12
+release series. The 1.12 release series is adding new features on top of the
+1.0, 1.2, 1.4, 1.6, 1.8 and 1.10 series and is part of the API and ABI-stable
+1.x release series of the GStreamer multimedia framework.
 
 
-This release only contains bugfixes and it is safe to update from 1.10.x. For a
-full list of bugfixes see Bugzilla.
+Full release notes can be found here
 
 
-See /releases/1.10/ for the full release notes.
+Binaries for Android, iOS, Mac OS X and Windows will be provided in the next days.
 
 
 "When you have to shoot, shoot.  Don't talk."
@@ -55,10 +56,6 @@
 
   
 
-Bugs fixed in this release
-     
-      * 777955 : asfdemux: out of bounds read in gst_asf_demux_process_ext_content_desc
-
 ==== Download ====
 
 You can find source releases of gst-plugins-ugly in the download
@@ -95,5 +92,4 @@
 Contributors to this release
     
       * Sebastian Dröge
-      * Thibault Saunier
  
\ No newline at end of file
diff --git a/REQUIREMENTS b/REQUIREMENTS
index 870afe6..a5dae28 100644
--- a/REQUIREMENTS
+++ b/REQUIREMENTS
@@ -34,8 +34,8 @@
 			http://liba52.sourceforge.net/
 opencore-amr (for the AMR-NB decoder and encoder and the AMR-WB decoder)
 			http://sourceforge.net/projects/opencore-amr/
-libmad      (for the mad mp3 decoder plugin)
-			http://www.mars.org/home/rob/proj/mpeg/
+libmpg123      (for the mpg123 mp3 decoder plugin)
+			https://www.mpg123.de/api/
 liblame		(for lame mp3 encoder)
 			http://www.mp3dev.org/mp3/
 libdvdread	(for the dvdreadsrc)
diff --git a/autogen.sh b/autogen.sh
index c1c04d5..5a81532 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -53,7 +53,7 @@
 CONFIGURE_DEF_OPT='--enable-maintainer-mode --enable-gtk-doc'
 
 if test "x$package" = "xgstreamer"; then
-  CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --enable-docbook --enable-failing-tests --enable-poisoning"
+  CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --enable-failing-tests --enable-poisoning"
 elif test "x$package" = "xgst-plugins-bad"; then
   CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --with-player-tests"
 fi
diff --git a/common/Makefile.in b/common/Makefile.in
index 9fccbcf..85a6969 100644
--- a/common/Makefile.in
+++ b/common/Makefile.in
@@ -346,8 +346,6 @@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
 LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-MAD_CFLAGS = @MAD_CFLAGS@
-MAD_LIBS = @MAD_LIBS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
diff --git a/common/check-exports b/common/check-exports
index ee01ff7..8d617ff 100755
--- a/common/check-exports
+++ b/common/check-exports
@@ -29,7 +29,7 @@
 # BSS symbol, unlike on linux where it's a local absolute symbol.
 nm $NMARGS $lib_path | awk \
 	'{
-		if ($3 ~ /^[_]?(gst_|Gst|GST_).*/)
+		if ($3 ~ /^[_]?(gst_|Gst|GST_|ges_|Ges|GES_).*/)
 		{
 			if ($2 ~ /^[BSDG]$/)
 				print "\t" $3 " DATA"
diff --git a/common/download-translations b/common/download-translations
index aef1d31..55e124c 100755
--- a/common/download-translations
+++ b/common/download-translations
@@ -7,7 +7,7 @@
 # We need to check all domains, not only po/LINGUAS, since there might be
 # new translations
 DOMAINS=\
-"af am ar az be bg pt_BR bs ca zh_CN cs cy da de el eo es et eu fa fi fr "\
+"af am ar ast az be bg pt_BR bs ca zh_CN cs cy da de el eo es et eu fa fi fr fur "\
 "ga en_GB gl gu he hi zh_HK hr hu id is it ja ko ku ky lg lt lv mk mn ms "\
 "mt nb ne nl nn or pa pl pt rm ro ru rw sk sl sq sr sv ta tq th tk "\
 "tr zh_TW uk ven vi wa xh zu"
diff --git a/common/gst.supp b/common/gst.supp
index f85cd69..bdcaf84 100644
--- a/common/gst.supp
+++ b/common/gst.supp
@@ -4025,3 +4025,12 @@
    ...
    fun:g_quark_init
 }
+
+{
+   Leak of debug function list
+   Memcheck:Leak
+   fun:*alloc
+   ...
+   fun:g_slist_prepend
+   fun:gst_debug_add_log_function
+}
\ No newline at end of file
diff --git a/common/m4/Makefile.in b/common/m4/Makefile.in
index d6ade27..e611ecb 100644
--- a/common/m4/Makefile.in
+++ b/common/m4/Makefile.in
@@ -286,8 +286,6 @@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
 LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-MAD_CFLAGS = @MAD_CFLAGS@
-MAD_LIBS = @MAD_LIBS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
diff --git a/common/po.mak b/common/po.mak
index e019fac..ee84f1e 100644
--- a/common/po.mak
+++ b/common/po.mak
@@ -1,4 +1,11 @@
 # rule to download the latest .po files
 download-po: $(top_srcdir)/common/download-translations
 	$(top_srcdir)/common/download-translations $(PACKAGE)
+	for f in po/*.po; do \
+	  num_changed=`git diff $$f | grep -e '^[+-][^+-]' | wc -l`; \
+	  num_date=`git diff $$f | grep -e '^[+-][^+-]' | grep POT-Creation-Date | wc -l`; \
+	  if [ $num_date == $num_changed ]; then \
+	    git checkout $$f; \
+	  fi; \
+	done
 
diff --git a/common/release.mak b/common/release.mak
index c84c2f1..78572e9 100644
--- a/common/release.mak
+++ b/common/release.mak
@@ -35,3 +35,11 @@
 	  find $(distdir) -name \*-enumtypes.[ch] | grep -v win32 && \
 	  find $(distdir) -name \*-marshal.[ch] && \
 	  false )
+
+dist-hook:
+	@if test -f meson.build && ! $(GREP) -e "version.*'$(VERSION)'" meson.build >/dev/null ; then \
+	  echo "*******************************************************"; \
+	  echo "* meson.build needs to be updated for version $(VERSION)"; \
+	  echo "*******************************************************"; \
+	  false; \
+	fi
diff --git a/common/win32.mak b/common/win32.mak
index 6060532..5d818bd 100644
--- a/common/win32.mak
+++ b/common/win32.mak
@@ -64,7 +64,7 @@
 	if test -f "$(top_srcdir)/win32/common/libgstgl.def"; then \
 	  git checkout "$(top_srcdir)/win32/common/libgstgl.def";  \
 	fi
-	git add $(top_srcdir)/win32/common/libgst*.def
+	git add $(top_srcdir)/win32/common/lib*.def
 	git diff --cached -- $(top_srcdir)/win32/common/
 	echo '^^^--- updated and staged changes above'
 
diff --git a/config.h.in b/config.h.in
index 3a3a995..16317c6 100644
--- a/config.h.in
+++ b/config.h.in
@@ -172,9 +172,6 @@
 /* Define to enable lame mp3 encoder library (used by lame). */
 #undef HAVE_LAME
 
-/* Define to enable mad mp3 decoder (used by mad). */
-#undef HAVE_MAD
-
 /* Define to 1 if you have the <malloc.h> header file. */
 #undef HAVE_MALLOC_H
 
@@ -232,6 +229,9 @@
 /* Define to enable x264 plug-in (used by x264). */
 #undef HAVE_X264
 
+/* Additional x264 libraries */
+#undef HAVE_X264_ADDITIONAL_LIBRARIES
+
 /* the host CPU */
 #undef HOST_CPU
 
diff --git a/config.h.meson b/config.h.meson
new file mode 100644
index 0000000..4e4ece7
--- /dev/null
+++ b/config.h.meson
@@ -0,0 +1,291 @@
+/* config.h.in.  Generated from configure.ac by autoheader.  */
+
+/* Define if building universal (internal helper macro) */
+#mesondefine AC_APPLE_UNIVERSAL_BUILD
+
+/* Default audio sink */
+#mesondefine DEFAULT_AUDIOSINK
+
+/* Default audio source */
+#mesondefine DEFAULT_AUDIOSRC
+
+/* Default video sink */
+#mesondefine DEFAULT_VIDEOSINK
+
+/* Default video source */
+#mesondefine DEFAULT_VIDEOSRC
+
+/* Default visualizer */
+#mesondefine DEFAULT_VISUALIZER
+
+/* Disable Orc */
+#mesondefine DISABLE_ORC
+
+/* Define to 1 if translation of program messages to the user's native
+   language is requested. */
+#mesondefine ENABLE_NLS
+
+/* gettext package name */
+#mesondefine GETTEXT_PACKAGE
+
+/* The GIO library directory. */
+#mesondefine GIO_LIBDIR
+
+/* The GIO modules directory. */
+#mesondefine GIO_MODULE_DIR
+
+/* GStreamer API Version */
+#mesondefine GST_API_VERSION
+
+/* macro to use to show function name */
+#mesondefine GST_FUNCTION
+
+/* Defined if gcov is enabled to force a rebuild due to config.h changing */
+#mesondefine GST_GCOV_ENABLED
+
+/* Default errorlevel to use */
+#mesondefine GST_LEVEL_DEFAULT
+
+/* GStreamer license */
+#mesondefine GST_LICENSE
+
+/* package name in plugins */
+#mesondefine GST_PACKAGE_NAME
+
+/* package origin */
+#mesondefine GST_PACKAGE_ORIGIN
+
+/* GStreamer package release date/time for plugins as YYYY-MM-DD */
+#mesondefine GST_PACKAGE_RELEASE_DATETIME
+
+/* Define if static plugins should be built */
+#mesondefine GST_PLUGIN_BUILD_STATIC
+
+/* Define to enable a52dec (used by a52dec). */
+#mesondefine HAVE_A52DEC
+
+/* Define to enable amrnb library (used by amrnb). */
+#mesondefine HAVE_AMRNB
+
+/* Define to enable amrwb library (used by amrwbdec). */
+#mesondefine HAVE_AMRWB
+
+/* Define to enable cdio library (used by cdio). */
+#mesondefine HAVE_CDIO
+
+/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the
+   CoreFoundation framework. */
+#mesondefine HAVE_CFLOCALECOPYCURRENT
+
+/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in
+   the CoreFoundation framework. */
+#mesondefine HAVE_CFPREFERENCESCOPYAPPVALUE
+
+/* Define if the target CPU is an Alpha */
+#mesondefine HAVE_CPU_ALPHA
+
+/* Define if the target CPU is an ARM */
+#mesondefine HAVE_CPU_ARM
+
+/* Define if the target CPU is a CRIS */
+#mesondefine HAVE_CPU_CRIS
+
+/* Define if the target CPU is a CRISv32 */
+#mesondefine HAVE_CPU_CRISV32
+
+/* Define if the target CPU is a HPPA */
+#mesondefine HAVE_CPU_HPPA
+
+/* Define if the target CPU is an x86 */
+#mesondefine HAVE_CPU_I386
+
+/* Define if the target CPU is a IA64 */
+#mesondefine HAVE_CPU_IA64
+
+/* Define if the target CPU is a M68K */
+#mesondefine HAVE_CPU_M68K
+
+/* Define if the target CPU is a MIPS */
+#mesondefine HAVE_CPU_MIPS
+
+/* Define if the target CPU is a PowerPC */
+#mesondefine HAVE_CPU_PPC
+
+/* Define if the target CPU is a 64 bit PowerPC */
+#mesondefine HAVE_CPU_PPC64
+
+/* Define if the target CPU is a S390 */
+#mesondefine HAVE_CPU_S390
+
+/* Define if the target CPU is a SPARC */
+#mesondefine HAVE_CPU_SPARC
+
+/* Define if the target CPU is a x86_64 */
+#mesondefine HAVE_CPU_X86_64
+
+/* Define if the GNU dcgettext() function is already present or preinstalled.
+   */
+#mesondefine HAVE_DCGETTEXT
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#mesondefine HAVE_DLFCN_H
+
+/* define for working do while(0) macros */
+#mesondefine HAVE_DOWHILE_MACROS
+
+/* Define to enable dvdread library (used by dvdreadsrc). */
+#mesondefine HAVE_DVDREAD
+
+/* Define to enable building of experimental plug-ins. */
+#mesondefine HAVE_EXPERIMENTAL
+
+/* Define to enable building of plug-ins with external deps. */
+#mesondefine HAVE_EXTERNAL
+
+/* defined if the compiler implements __func__ */
+#mesondefine HAVE_FUNC
+
+/* defined if the compiler implements __FUNCTION__ */
+#mesondefine HAVE_FUNCTION
+
+/* Define if the GNU gettext() function is already present or preinstalled. */
+#mesondefine HAVE_GETTEXT
+
+/* Define if you have the iconv() function and it works. */
+#mesondefine HAVE_ICONV
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#mesondefine HAVE_INTTYPES_H
+
+/* Define to enable lame mp3 encoder library (used by lame). */
+#mesondefine HAVE_LAME
+
+/* Define to 1 if you have the <malloc.h> header file. */
+#mesondefine HAVE_MALLOC_H
+
+/* Define to 1 if you have the <memory.h> header file. */
+#mesondefine HAVE_MEMORY_H
+
+/* Define to enable mpeg2dec (used by mpeg2dec). */
+#mesondefine HAVE_MPEG2DEC
+
+/* Defined for newer opencore-amrnb */
+#mesondefine HAVE_OPENCORE_AMRNB_0_1_3_OR_LATER
+
+/* Defined for newer opencore-amrwb */
+#mesondefine HAVE_OPENCORE_AMRWB_0_1_3_OR_LATER
+
+/* Use Orc */
+#mesondefine HAVE_ORC
+
+/* defined if the compiler implements __PRETTY_FUNCTION__ */
+#mesondefine HAVE_PRETTY_FUNCTION
+
+/* Define if RDTSC is available */
+#mesondefine HAVE_RDTSC
+
+/* Define to enable libsidplay (used by sid). */
+#mesondefine HAVE_SIDPLAY
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#mesondefine HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#mesondefine HAVE_STDLIB_H
+
+/* Define to 1 if you have the <strings.h> header file. */
+#mesondefine HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#mesondefine HAVE_STRING_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#mesondefine HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#mesondefine HAVE_SYS_TYPES_H
+
+/* Define to enable twolame (used by twolame). */
+#mesondefine HAVE_TWOLAME
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#mesondefine HAVE_UNISTD_H
+
+/* Define if valgrind should be used */
+#mesondefine HAVE_VALGRIND
+
+/* Define to 1 if you have the <winsock2.h> header file. */
+#mesondefine HAVE_WINSOCK2_H
+
+/* Define to enable x264 plug-in (used by x264). */
+#mesondefine HAVE_X264
+
+/* the host CPU */
+#mesondefine HOST_CPU
+
+/* gettext locale dir */
+#mesondefine LOCALEDIR
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+   */
+#mesondefine LT_OBJDIR
+
+/* Name of package */
+#mesondefine PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#mesondefine PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#mesondefine PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#mesondefine PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#mesondefine PACKAGE_TARNAME
+
+/* Define to the home page for this package. */
+#mesondefine PACKAGE_URL
+
+/* Define to the version of this package. */
+#mesondefine PACKAGE_VERSION
+
+/* directory where plugins are located */
+#mesondefine PLUGINDIR
+
+/* The size of `char', as computed by sizeof. */
+#mesondefine SIZEOF_CHAR
+
+/* The size of `int', as computed by sizeof. */
+#mesondefine SIZEOF_INT
+
+/* The size of `long', as computed by sizeof. */
+#mesondefine SIZEOF_LONG
+
+/* The size of `short', as computed by sizeof. */
+#mesondefine SIZEOF_SHORT
+
+/* The size of `void*', as computed by sizeof. */
+#mesondefine SIZEOF_VOIDP
+
+/* Define to 1 if you have the ANSI C header files. */
+#mesondefine STDC_HEADERS
+
+/* the target CPU */
+#mesondefine TARGET_CPU
+
+/* Version number of package */
+#mesondefine VERSION
+
+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+   significant byte first (like Motorola and SPARC, unlike Intel). */
+#if defined AC_APPLE_UNIVERSAL_BUILD
+# if defined __BIG_ENDIAN__
+#  define WORDS_BIGENDIAN 1
+# endif
+#else
+# ifndef WORDS_BIGENDIAN
+#  undef WORDS_BIGENDIAN
+# endif
+#endif
diff --git a/configure b/configure
index 423cd93..4f28e8b 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 Ugly Plug-ins 1.10.4.
+# Generated by GNU Autoconf 2.69 for GStreamer Ugly Plug-ins 1.12.0.
 #
 # Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer>.
 #
@@ -591,12 +591,12 @@
 # Identity of this package.
 PACKAGE_NAME='GStreamer Ugly Plug-ins'
 PACKAGE_TARNAME='gst-plugins-ugly'
-PACKAGE_VERSION='1.10.4'
-PACKAGE_STRING='GStreamer Ugly Plug-ins 1.10.4'
+PACKAGE_VERSION='1.12.0'
+PACKAGE_STRING='GStreamer Ugly Plug-ins 1.12.0'
 PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer'
 PACKAGE_URL=''
 
-ac_unique_file="ext/mad/gstmad.c"
+ac_unique_file="gst/asfdemux/gstasfdemux.c"
 # Factoring default headers for most tests.
 ac_includes_default="\
 #include <stdio.h>
@@ -665,10 +665,6 @@
 USE_MPEG2DEC_TRUE
 MPEG2DEC_LIBS
 MPEG2DEC_CFLAGS
-USE_MAD_FALSE
-USE_MAD_TRUE
-MAD_LIBS
-MAD_CFLAGS
 USE_LAME_FALSE
 USE_LAME_TRUE
 HAVE_LAME
@@ -1063,12 +1059,12 @@
 enable_cdio
 enable_dvdread
 enable_lame
-enable_mad
 enable_mpeg2dec
 enable_mpg123
 enable_sidplay
 enable_twolame
 enable_x264
+with_x264_libraries
 '
       ac_precious_vars='build_alias
 host_alias
@@ -1112,8 +1108,6 @@
 AMRWB_LIBS
 CDIO_CFLAGS
 CDIO_LIBS
-MAD_CFLAGS
-MAD_LIBS
 MPEG2DEC_CFLAGS
 MPEG2DEC_LIBS
 MPG123_CFLAGS
@@ -1672,7 +1666,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 Ugly Plug-ins 1.10.4 to adapt to many kinds of systems.
+\`configure' configures GStreamer Ugly Plug-ins 1.12.0 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1745,7 +1739,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of GStreamer Ugly Plug-ins 1.10.4:";;
+     short | recursive ) echo "Configuration of GStreamer Ugly Plug-ins 1.12.0:";;
    esac
   cat <<\_ACEOF
 
@@ -1801,7 +1795,6 @@
   --disable-cdio               disable cdio library: cdio
   --disable-dvdread            disable dvdread library: dvdreadsrc
   --disable-lame               disable lame mp3 encoder library: lame
-  --disable-mad                disable mad mp3 decoder: mad
   --disable-mpeg2dec           disable mpeg2dec: mpeg2dec
   --disable-mpg123             disable mpg123 audio decoder: mpg123
   --disable-sidplay            disable libsidplay: sid
@@ -1848,6 +1841,9 @@
                           specify default visualizer
   --with-a52dec-prefix=PFX
                           prefix where a52dec is installed (optional)
+  --with-x264-libraries=PATHS
+                          Colon separated list of additional x264 library
+                          paths, e.g. for 10-bit version
 
 Some influential environment variables:
   CC          C compiler command
@@ -1905,8 +1901,6 @@
   AMRWB_LIBS  linker flags for AMRWB, overriding pkg-config
   CDIO_CFLAGS C compiler flags for CDIO, overriding pkg-config
   CDIO_LIBS   linker flags for CDIO, overriding pkg-config
-  MAD_CFLAGS  C compiler flags for MAD, overriding pkg-config
-  MAD_LIBS    linker flags for MAD, overriding pkg-config
   MPEG2DEC_CFLAGS
               C compiler flags for MPEG2DEC, overriding pkg-config
   MPEG2DEC_LIBS
@@ -1987,7 +1981,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-GStreamer Ugly Plug-ins configure 1.10.4
+GStreamer Ugly Plug-ins configure 1.12.0
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2893,7 +2887,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 Ugly Plug-ins $as_me 1.10.4, which was
+It was created by GStreamer Ugly Plug-ins $as_me 1.12.0, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3872,7 +3866,7 @@
 
 # Define the identity of the package.
  PACKAGE='gst-plugins-ugly'
- VERSION='1.10.4'
+ VERSION='1.12.0'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -4083,9 +4077,9 @@
 
 
 
-  PACKAGE_VERSION_MAJOR=$(echo 1.10.4 | cut -d'.' -f1)
-  PACKAGE_VERSION_MINOR=$(echo 1.10.4 | cut -d'.' -f2)
-  PACKAGE_VERSION_MICRO=$(echo 1.10.4 | cut -d'.' -f3)
+  PACKAGE_VERSION_MAJOR=$(echo 1.12.0 | cut -d'.' -f1)
+  PACKAGE_VERSION_MINOR=$(echo 1.12.0 | cut -d'.' -f2)
+  PACKAGE_VERSION_MICRO=$(echo 1.12.0 | cut -d'.' -f3)
 
 
 
@@ -4096,7 +4090,7 @@
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking nano version" >&5
 $as_echo_n "checking nano version... " >&6; }
 
-  NANO=$(echo 1.10.4 | cut -d'.' -f4)
+  NANO=$(echo 1.12.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
@@ -8930,10 +8924,10 @@
 done
 
 
-  GST_CURRENT=1004
+  GST_CURRENT=1200
   GST_REVISION=0
-  GST_AGE=1004
-  GST_LIBVERSION=1004:0:1004
+  GST_AGE=1200
+  GST_LIBVERSION=1200:0:1200
 
 
 
@@ -13561,8 +13555,8 @@
 
 
 
-GST_REQ=1.10.0
-GSTPB_REQ=1.10.0
+GST_REQ=1.12.0
+GSTPB_REQ=1.12.0
 
 
 
@@ -26750,241 +26744,6 @@
 
 
 echo
-{ $as_echo "$as_me:${as_lineno-$LINENO}: *** checking feature: mad mp3 decoder ***" >&5
-$as_echo "$as_me: *** checking feature: mad mp3 decoder ***" >&6;}
-if test "xmad" != "x"
-then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: *** for plug-ins: mad ***" >&5
-$as_echo "$as_me: *** for plug-ins: mad ***" >&6;}
-fi
-NOUSE=
-if test "x$USE_MAD" = "xno"; then
-  NOUSE="yes"
-fi
-# Check whether --enable-mad was given.
-if test "${enable_mad+set}" = set; then :
-  enableval=$enable_mad;  case "${enableval}" in
-      yes) USE_MAD=yes;;
-      no) USE_MAD=no;;
-      *) as_fn_error $? "bad value ${enableval} for --enable-mad" "$LINENO" 5 ;;
-    esac
-else
-   USE_MAD=yes
-fi
-
-if test "x$NOUSE" = "xyes"; then
-  USE_MAD="no"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** mad pre-configured not to be built" >&5
-$as_echo "$as_me: WARNING: *** mad pre-configured not to be built" >&2;}
-fi
-NOUSE=
-
-if echo " $GST_PLUGINS_NONPORTED " | tr , ' ' | grep -i " MAD " > /dev/null; then
-  USE_MAD="no"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** mad not ported" >&5
-$as_echo "$as_me: WARNING: *** mad not ported" >&2;}
-fi
-
-
-if test x$USE_MAD = xyes; then
-
-  gst_check_save_LIBS=$LIBS
-  gst_check_save_LDFLAGS=$LDFLAGS
-  gst_check_save_CFLAGS=$CFLAGS
-  gst_check_save_CPPFLAGS=$CPPFLAGS
-  gst_check_save_CXXFLAGS=$CXXFLAGS
-
-  HAVE_MAD=no
-
-
-
-  which="mad >= 0.15"
-    required="no"
-
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MAD" >&5
-$as_echo_n "checking for MAD... " >&6; }
-
-if test -n "$PKG_CONFIG"; then
-    if test -n "$MAD_CFLAGS"; then
-        pkg_cv_MAD_CFLAGS="$MAD_CFLAGS"
-    else
-        if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$which\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "$which") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_MAD_CFLAGS=`$PKG_CONFIG --cflags "$which" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
-    fi
-else
-	pkg_failed=untried
-fi
-if test -n "$PKG_CONFIG"; then
-    if test -n "$MAD_LIBS"; then
-        pkg_cv_MAD_LIBS="$MAD_LIBS"
-    else
-        if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$which\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "$which") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_MAD_LIBS=`$PKG_CONFIG --libs "$which" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
-    fi
-else
-	pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi
-        if test $_pkg_short_errors_supported = yes; then
-	        MAD_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$which"`
-        else
-	        MAD_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$which"`
-        fi
-	# Put the nasty error message in config.log where it belongs
-	echo "$MAD_PKG_ERRORS" >&5
-
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-      HAVE_MAD="no"
-      if test "x$required" = "xyes"; then
-        as_fn_error $? "$MAD_PKG_ERRORS" "$LINENO" 5
-      else
-        { $as_echo "$as_me:${as_lineno-$LINENO}: $MAD_PKG_ERRORS" >&5
-$as_echo "$as_me: $MAD_PKG_ERRORS" >&6;}
-      fi
-
-elif test $pkg_failed = untried; then
-
-      HAVE_MAD="no"
-      if test "x$required" = "xyes"; then
-        as_fn_error $? "$MAD_PKG_ERRORS" "$LINENO" 5
-      else
-        { $as_echo "$as_me:${as_lineno-$LINENO}: $MAD_PKG_ERRORS" >&5
-$as_echo "$as_me: $MAD_PKG_ERRORS" >&6;}
-      fi
-
-else
-	MAD_CFLAGS=$pkg_cv_MAD_CFLAGS
-	MAD_LIBS=$pkg_cv_MAD_LIBS
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-
-      HAVE_MAD="yes"
-
-fi
-
-
-  MAD_LIBS="$MAD_LIBS"
-  if test "x$HAVE_MAD" = "xno"; then
-        ac_fn_c_check_header_mongrel "$LINENO" "mad.h" "ac_cv_header_mad_h" "$ac_includes_default"
-if test "x$ac_cv_header_mad_h" = xyes; then :
-
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mad_decoder_finish in -lmad" >&5
-$as_echo_n "checking for mad_decoder_finish in -lmad... " >&6; }
-if ${ac_cv_lib_mad_mad_decoder_finish+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lmad  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char mad_decoder_finish ();
-int
-main ()
-{
-return mad_decoder_finish ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_mad_mad_decoder_finish=yes
-else
-  ac_cv_lib_mad_mad_decoder_finish=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mad_mad_decoder_finish" >&5
-$as_echo "$ac_cv_lib_mad_mad_decoder_finish" >&6; }
-if test "x$ac_cv_lib_mad_mad_decoder_finish" = xyes; then :
-  HAVE_MAD="yes" MAD_LIBS="-lmad"
-fi
-
-
-fi
-
-
-  fi
-
-
-  LIBS=$gst_check_save_LIBS
-  LDFLAGS=$gst_check_save_LDFLAGS
-  CFLAGS=$gst_check_save_CFLAGS
-  CPPFLAGS=$gst_check_save_CPPFLAGS
-  CXXFLAGS=$gst_check_save_CXXFLAGS
-
-    if test x$HAVE_MAD = xno; then
-    USE_MAD=no
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: *** These plugins will be built: mad" >&5
-$as_echo "$as_me: *** These plugins will be built: mad" >&6;}
-  fi
-fi
-if test x$USE_MAD = xyes; then
-  :
-  if test "xmad" != "x"; then
-    GST_PLUGINS_YES="\tmad\n$GST_PLUGINS_YES"
-  fi
-
-$as_echo "#define HAVE_MAD /**/" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: *** These plugins will not be built: mad" >&5
-$as_echo "$as_me: *** These plugins will not be built: mad" >&6;}
-  if test "xmad" != "x"; then
-    GST_PLUGINS_NO="\tmad\n$GST_PLUGINS_NO"
-  fi
-  :
-fi
- if test x$USE_MAD = xyes; then
-  USE_MAD_TRUE=
-  USE_MAD_FALSE='#'
-else
-  USE_MAD_TRUE='#'
-  USE_MAD_FALSE=
-fi
-
-
-
-
-echo
 { $as_echo "$as_me:${as_lineno-$LINENO}: *** checking feature: mpeg2dec ***" >&5
 $as_echo "$as_me: *** checking feature: mpeg2dec ***" >&6;}
 if test "xmpeg2dec" != "x"
@@ -27795,6 +27554,22 @@
 
 
 
+# Check whether --with-x264-libraries was given.
+if test "${with_x264_libraries+set}" = set; then :
+  withval=$with_x264_libraries;
+      if test "x$withval" != "x"
+      then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_X264_ADDITIONAL_LIBRARIES "$withval"
+_ACEOF
+
+      fi
+
+fi
+
+
+
   LIBS=$gst_check_save_LIBS
   LDFLAGS=$gst_check_save_LDFLAGS
   CFLAGS=$gst_check_save_CFLAGS
@@ -27886,14 +27661,6 @@
 fi
 
  if false; then
-  USE_MAD_TRUE=
-  USE_MAD_FALSE='#'
-else
-  USE_MAD_TRUE='#'
-  USE_MAD_FALSE=
-fi
-
- if false; then
   USE_MPEG2DEC_TRUE=
   USE_MPEG2DEC_FALSE='#'
 else
@@ -27971,48 +27738,9 @@
 
 
 
-ac_config_files="$ac_config_files Makefile common/Makefile common/m4/Makefile gst-libs/Makefile gst-libs/gst/Makefile gst/Makefile gst/asfdemux/Makefile gst/dvdlpcmdec/Makefile gst/dvdsub/Makefile gst/realmedia/Makefile gst/xingmux/Makefile ext/Makefile ext/a52dec/Makefile ext/amrnb/Makefile ext/amrwbdec/Makefile ext/cdio/Makefile ext/dvdread/Makefile ext/lame/Makefile ext/mad/Makefile ext/mpeg2dec/Makefile ext/mpg123/Makefile ext/sidplay/Makefile ext/twolame/Makefile ext/x264/Makefile docs/Makefile docs/plugins/Makefile docs/version.entities tests/Makefile tests/check/Makefile tests/files/Makefile m4/Makefile po/Makefile.in pkgconfig/Makefile pkgconfig/gstreamer-plugins-ugly-uninstalled.pc gst-plugins-ugly.spec"
+ac_config_files="$ac_config_files Makefile common/Makefile common/m4/Makefile gst-libs/Makefile gst-libs/gst/Makefile gst/Makefile gst/asfdemux/Makefile gst/dvdlpcmdec/Makefile gst/dvdsub/Makefile gst/realmedia/Makefile gst/xingmux/Makefile ext/Makefile ext/a52dec/Makefile ext/amrnb/Makefile ext/amrwbdec/Makefile ext/cdio/Makefile ext/dvdread/Makefile ext/lame/Makefile ext/mpeg2dec/Makefile ext/mpg123/Makefile ext/sidplay/Makefile ext/twolame/Makefile ext/x264/Makefile docs/Makefile docs/plugins/Makefile docs/version.entities tests/Makefile tests/check/Makefile tests/files/Makefile m4/Makefile po/Makefile.in pkgconfig/Makefile pkgconfig/gstreamer-plugins-ugly-uninstalled.pc"
 
 
-sed \
-    -e 's/.*config.h.in.*autoheader.*/\/* Autogenerated config.h created for win32 Visual Studio builds *\/\n\n\/* PREFIX -- specifically added for Windows for easier moving *\/\n#define PREFIX "C:\\\\gstreamer"\n\n/' \
-    -e 's/.* GETTEXT_PACKAGE$/#define GETTEXT_PACKAGE "'$GETTEXT_PACKAGE'"/' \
-    -e 's/.* GST_DATADIR$/#define GST_DATADIR PREFIX "\\\\share"/' \
-    -e 's/.* GST_LEVEL_DEFAULT$/#define GST_LEVEL_DEFAULT GST_LEVEL_ERROR/' \
-    -e 's/.* GST_LICENSE$/#define GST_LICENSE "'$GST_LICENSE'"/' \
-    -e 's/.* GST_API_VERSION$/#define GST_API_VERSION "'$GST_API_VERSION'"/' \
-    -e "s,.* GST_PACKAGE_NAME$,#define GST_PACKAGE_NAME \"${GST_PACKAGE_NAME}\"," \
-    -e 's/.* GST_PACKAGE_ORIGIN$/#define GST_PACKAGE_ORIGIN "Unknown package origin"/' \
-    -e "s,.* GST_PACKAGE_RELEASE_DATETIME$,#define GST_PACKAGE_RELEASE_DATETIME \"${GST_PACKAGE_RELEASE_DATETIME}\"," \
-    -e 's/.* HAVE_CPU_I386$/#define HAVE_CPU_I386 1/' \
-    -e 's/.* HAVE_FGETPOS$/#define HAVE_FGETPOS 1/' \
-    -e 's/.* HAVE_FSETPOS$/#define HAVE_FSETPOS 1/' \
-    -e 's/.* HAVE_LIBXML2$/#define HAVE_LIBXML2 1/' \
-    -e 's/.* HAVE_PROCESS_H$/#define HAVE_PROCESS_H 1/' \
-    -e 's/.* HAVE_STDLIB_H$/#define HAVE_STDLIB_H 1/' \
-    -e 's/.* HAVE_STRING_H$/#define HAVE_STRING_H 1/' \
-    -e 's/.* HAVE_SYS_STAT_H$/#define HAVE_SYS_STAT_H 1/' \
-    -e 's/.* HAVE_SYS_TYPES_H$/#define HAVE_SYS_TYPES_H 1/' \
-    -e 's/.* HAVE_WIN32$/#define HAVE_WIN32 1/' \
-    -e 's/.* HAVE_WINSOCK2_H$/#define HAVE_WINSOCK2_H 1/' \
-    -e 's/.* HOST_CPU$/#define HOST_CPU "i686"/' \
-    -e 's/.* LIBDIR$/#ifdef _DEBUG\n#  define LIBDIR PREFIX "\\\\debug\\\\lib"\n#else\n#  define LIBDIR PREFIX "\\\\lib"\n#endif/' \
-    -e 's/.* LOCALEDIR$/#define LOCALEDIR PREFIX "\\\\share\\\\locale"/' \
-    -e "s/.* PACKAGE$/#define PACKAGE \"$PACKAGE\"/" \
-    -e 's/.* PACKAGE_BUGREPORT$/#define PACKAGE_BUGREPORT "http:\/\/bugzilla.gnome.org\/enter_bug.cgi?product=GStreamer"/' \
-    -e "s/.* PACKAGE_NAME$/#define PACKAGE_NAME \"$PACKAGE_NAME\"/" \
-    -e "s/.* PACKAGE_STRING$/#define PACKAGE_STRING \"$PACKAGE_STRING\"/" \
-    -e 's/.* PACKAGE_TARNAME$/#define PACKAGE_TARNAME "'$PACKAGE_TARNAME'"/' \
-    -e 's/.* PACKAGE_VERSION$/#define PACKAGE_VERSION "'$PACKAGE_VERSION'"/' \
-    -e 's/.* PLUGINDIR$/#ifdef _DEBUG\n#  define PLUGINDIR PREFIX "\\\\debug\\\\lib\\\\gstreamer-0.11"\n#else\n#  define PLUGINDIR PREFIX "\\\\lib\\\\gstreamer-0.11"\n#endif/' \
-    -e 's/.* USE_BINARY_REGISTRY$/#define USE_BINARY_REGISTRY/' \
-    -e 's/.* VERSION$/#define VERSION "'$VERSION'"/' \
-    -e "s/.* DEFAULT_AUDIOSINK$/#define DEFAULT_AUDIOSINK \"directsoundsink\"/" \
-    -e "s/.* DEFAULT_AUDIOSRC$/#define DEFAULT_AUDIOSRC \"audiotestsrc\"/" \
-    -e "s/.* DEFAULT_VIDEOSRC$/#define DEFAULT_VIDEOSRC \"videotestsrc\"/" \
-    -e "s/.* DEFAULT_VISUALIZER$/#define DEFAULT_VISUALIZER \"goom\"/" \
-    config.h.in >win32/common/config.h-new
-
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
@@ -28328,10 +28056,6 @@
   as_fn_error $? "conditional \"USE_LAME\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
-if test -z "${USE_MAD_TRUE}" && test -z "${USE_MAD_FALSE}"; then
-  as_fn_error $? "conditional \"USE_MAD\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
 if test -z "${USE_MPEG2DEC_TRUE}" && test -z "${USE_MPEG2DEC_FALSE}"; then
   as_fn_error $? "conditional \"USE_MPEG2DEC\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -28376,10 +28100,6 @@
   as_fn_error $? "conditional \"USE_LAME\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
-if test -z "${USE_MAD_TRUE}" && test -z "${USE_MAD_FALSE}"; then
-  as_fn_error $? "conditional \"USE_MAD\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
 if test -z "${USE_MPEG2DEC_TRUE}" && test -z "${USE_MPEG2DEC_FALSE}"; then
   as_fn_error $? "conditional \"USE_MPEG2DEC\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -28797,7 +28517,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by GStreamer Ugly Plug-ins $as_me 1.10.4, which was
+This file was extended by GStreamer Ugly Plug-ins $as_me 1.12.0, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -28863,7 +28583,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 Ugly Plug-ins config.status 1.10.4
+GStreamer Ugly Plug-ins config.status 1.12.0
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
@@ -29423,7 +29143,6 @@
     "ext/cdio/Makefile") CONFIG_FILES="$CONFIG_FILES ext/cdio/Makefile" ;;
     "ext/dvdread/Makefile") CONFIG_FILES="$CONFIG_FILES ext/dvdread/Makefile" ;;
     "ext/lame/Makefile") CONFIG_FILES="$CONFIG_FILES ext/lame/Makefile" ;;
-    "ext/mad/Makefile") CONFIG_FILES="$CONFIG_FILES ext/mad/Makefile" ;;
     "ext/mpeg2dec/Makefile") CONFIG_FILES="$CONFIG_FILES ext/mpeg2dec/Makefile" ;;
     "ext/mpg123/Makefile") CONFIG_FILES="$CONFIG_FILES ext/mpg123/Makefile" ;;
     "ext/sidplay/Makefile") CONFIG_FILES="$CONFIG_FILES ext/sidplay/Makefile" ;;
@@ -29439,7 +29158,6 @@
     "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;;
     "pkgconfig/Makefile") CONFIG_FILES="$CONFIG_FILES pkgconfig/Makefile" ;;
     "pkgconfig/gstreamer-plugins-ugly-uninstalled.pc") CONFIG_FILES="$CONFIG_FILES pkgconfig/gstreamer-plugins-ugly-uninstalled.pc" ;;
-    "gst-plugins-ugly.spec") CONFIG_FILES="$CONFIG_FILES gst-plugins-ugly.spec" ;;
 
   *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
   esac
diff --git a/configure.ac b/configure.ac
index cd6a73e..7c8305f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -5,7 +5,7 @@
 dnl initialize autoconf
 dnl releases only do -Wall, cvs and prerelease does -Werror too
 dnl use a three digit version number for releases, and four for cvs/prerelease
-AC_INIT([GStreamer Ugly Plug-ins],[1.10.4],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gst-plugins-ugly])
+AC_INIT([GStreamer Ugly Plug-ins],[1.12.0],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gst-plugins-ugly])
 
 AG_GST_INIT
 
@@ -19,7 +19,7 @@
 AS_NANO(GST_GIT="no", GST_GIT="yes")
 
 dnl can autoconf find the source ?
-AC_CONFIG_SRCDIR([ext/mad/gstmad.c])
+AC_CONFIG_SRCDIR([gst/asfdemux/gstasfdemux.c])
 
 dnl define the output header for config
 AC_CONFIG_HEADERS(config.h)
@@ -42,11 +42,11 @@
 AC_DEFINE_UNQUOTED(GST_API_VERSION, "$GST_API_VERSION",
   [GStreamer API Version])
 
-AS_LIBTOOL(GST, 1004, 0, 1004)
+AS_LIBTOOL(GST, 1200, 0, 1200)
 
 dnl *** required versions of GStreamer stuff ***
-GST_REQ=1.10.0
-GSTPB_REQ=1.10.0
+GST_REQ=1.12.0
+GSTPB_REQ=1.12.0
 
 dnl *** autotools stuff ****
 
@@ -319,23 +319,6 @@
   ])
 ])
 
-dnl *** mad ***
-translit(dnm, m, l) AM_CONDITIONAL(USE_MAD, true)
-AG_GST_CHECK_FEATURE(MAD, [mad mp3 decoder], mad, [
-
-  dnl check with pkg-config first
-  AG_GST_PKG_CHECK_MODULES(MAD, mad >= 0.15)
-  MAD_LIBS="$MAD_LIBS"
-  if test "x$HAVE_MAD" = "xno"; then
-    dnl fall back to oldskool detection
-    AC_CHECK_HEADER(mad.h, [
-      AC_CHECK_LIB(mad, mad_decoder_finish,
-        HAVE_MAD="yes" MAD_LIBS="-lmad")
-    ])
-  fi
-])
-AC_SUBST(MAD_LIBS)
-
 dnl *** mpeg2dec ***
 translit(dnm, m, l) AM_CONDITIONAL(USE_MPEG2DEC, true)
 AG_GST_CHECK_FEATURE(MPEG2DEC, [mpeg2dec], mpeg2dec, [
@@ -371,6 +354,17 @@
 translit(dnm, m, l) AM_CONDITIONAL(USE_X264, true)
 AG_GST_CHECK_FEATURE(X264, [x264 plug-in], x264, [
   AG_GST_PKG_CHECK_MODULES(X264, x264 >= 0.120)
+
+  dnl Paths to additional x264 library variants, e.g. 10/12 bit
+  AC_ARG_WITH([x264-libraries],
+    AS_HELP_STRING([--with-x264-libraries=PATHS], [Colon separated list of additional x264 library paths, e.g. for 10-bit version]),
+    [
+      if test "x$withval" != "x"
+      then
+        AC_DEFINE_UNQUOTED(HAVE_X264_ADDITIONAL_LIBRARIES, "$withval", [Additional x264 libraries])
+      fi
+    ], []
+  )
 ])
 
 else
@@ -384,7 +378,6 @@
 AM_CONDITIONAL(USE_CDIO, false)
 AM_CONDITIONAL(USE_DVDREAD, false)
 AM_CONDITIONAL(USE_LAME, false)
-AM_CONDITIONAL(USE_MAD, false)
 AM_CONDITIONAL(USE_MPEG2DEC, false)
 AM_CONDITIONAL(USE_MPG123, false)
 AM_CONDITIONAL(USE_SIDPLAY, false)
@@ -469,7 +462,6 @@
 ext/cdio/Makefile
 ext/dvdread/Makefile
 ext/lame/Makefile
-ext/mad/Makefile
 ext/mpeg2dec/Makefile
 ext/mpg123/Makefile
 ext/sidplay/Makefile
@@ -485,50 +477,8 @@
 po/Makefile.in
 pkgconfig/Makefile
 pkgconfig/gstreamer-plugins-ugly-uninstalled.pc
-gst-plugins-ugly.spec
 )
 
-dnl Create the config.h file for Visual Studio builds
-dnl Beware of spaces and /'s in some of the shell variable contents.
-sed \
-    -e 's/.*config.h.in.*autoheader.*/\/* Autogenerated config.h created for win32 Visual Studio builds *\/\n\n\/* PREFIX -- specifically added for Windows for easier moving *\/\n#define PREFIX "C:\\\\gstreamer"\n\n/' \
-    -e 's/.* GETTEXT_PACKAGE$/#define GETTEXT_PACKAGE "'$GETTEXT_PACKAGE'"/' \
-    -e 's/.* GST_DATADIR$/#define GST_DATADIR PREFIX "\\\\share"/' \
-    -e 's/.* GST_LEVEL_DEFAULT$/#define GST_LEVEL_DEFAULT GST_LEVEL_ERROR/' \
-    -e 's/.* GST_LICENSE$/#define GST_LICENSE "'$GST_LICENSE'"/' \
-    -e 's/.* GST_API_VERSION$/#define GST_API_VERSION "'$GST_API_VERSION'"/' \
-    -e "s,.* GST_PACKAGE_NAME$,#define GST_PACKAGE_NAME \"${GST_PACKAGE_NAME}\"," \
-    -e 's/.* GST_PACKAGE_ORIGIN$/#define GST_PACKAGE_ORIGIN "Unknown package origin"/' \
-    -e "s,.* GST_PACKAGE_RELEASE_DATETIME$,#define GST_PACKAGE_RELEASE_DATETIME \"${GST_PACKAGE_RELEASE_DATETIME}\"," \
-    -e 's/.* HAVE_CPU_I386$/#define HAVE_CPU_I386 1/' \
-    -e 's/.* HAVE_FGETPOS$/#define HAVE_FGETPOS 1/' \
-    -e 's/.* HAVE_FSETPOS$/#define HAVE_FSETPOS 1/' \
-    -e 's/.* HAVE_LIBXML2$/#define HAVE_LIBXML2 1/' \
-    -e 's/.* HAVE_PROCESS_H$/#define HAVE_PROCESS_H 1/' \
-    -e 's/.* HAVE_STDLIB_H$/#define HAVE_STDLIB_H 1/' \
-    -e 's/.* HAVE_STRING_H$/#define HAVE_STRING_H 1/' \
-    -e 's/.* HAVE_SYS_STAT_H$/#define HAVE_SYS_STAT_H 1/' \
-    -e 's/.* HAVE_SYS_TYPES_H$/#define HAVE_SYS_TYPES_H 1/' \
-    -e 's/.* HAVE_WIN32$/#define HAVE_WIN32 1/' \
-    -e 's/.* HAVE_WINSOCK2_H$/#define HAVE_WINSOCK2_H 1/' \
-    -e 's/.* HOST_CPU$/#define HOST_CPU "i686"/' \
-    -e 's/.* LIBDIR$/#ifdef _DEBUG\n#  define LIBDIR PREFIX "\\\\debug\\\\lib"\n#else\n#  define LIBDIR PREFIX "\\\\lib"\n#endif/' \
-    -e 's/.* LOCALEDIR$/#define LOCALEDIR PREFIX "\\\\share\\\\locale"/' \
-    -e "s/.* PACKAGE$/#define PACKAGE \"$PACKAGE\"/" \
-    -e 's/.* PACKAGE_BUGREPORT$/#define PACKAGE_BUGREPORT "http:\/\/bugzilla.gnome.org\/enter_bug.cgi?product=GStreamer"/' \
-    -e "s/.* PACKAGE_NAME$/#define PACKAGE_NAME \"$PACKAGE_NAME\"/" \
-    -e "s/.* PACKAGE_STRING$/#define PACKAGE_STRING \"$PACKAGE_STRING\"/" \
-    -e 's/.* PACKAGE_TARNAME$/#define PACKAGE_TARNAME "'$PACKAGE_TARNAME'"/' \
-    -e 's/.* PACKAGE_VERSION$/#define PACKAGE_VERSION "'$PACKAGE_VERSION'"/' \
-    -e 's/.* PLUGINDIR$/#ifdef _DEBUG\n#  define PLUGINDIR PREFIX "\\\\debug\\\\lib\\\\gstreamer-0.11"\n#else\n#  define PLUGINDIR PREFIX "\\\\lib\\\\gstreamer-0.11"\n#endif/' \
-    -e 's/.* USE_BINARY_REGISTRY$/#define USE_BINARY_REGISTRY/' \
-    -e 's/.* VERSION$/#define VERSION "'$VERSION'"/' \
-    -e "s/.* DEFAULT_AUDIOSINK$/#define DEFAULT_AUDIOSINK \"directsoundsink\"/" \
-    -e "s/.* DEFAULT_AUDIOSRC$/#define DEFAULT_AUDIOSRC \"audiotestsrc\"/" \
-    -e "s/.* DEFAULT_VIDEOSRC$/#define DEFAULT_VIDEOSRC \"videotestsrc\"/" \
-    -e "s/.* DEFAULT_VISUALIZER$/#define DEFAULT_VISUALIZER \"goom\"/" \
-    config.h.in >win32/common/config.h-new
-
 AC_OUTPUT
 
 AG_GST_OUTPUT_PLUGINS
diff --git a/docs/Makefile.in b/docs/Makefile.in
index 071e613..923d328 100644
--- a/docs/Makefile.in
+++ b/docs/Makefile.in
@@ -345,8 +345,6 @@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
 LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-MAD_CFLAGS = @MAD_CFLAGS@
-MAD_LIBS = @MAD_LIBS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
diff --git a/docs/plugins/Makefile.am b/docs/plugins/Makefile.am
index cfe47e1..7679fd2 100644
--- a/docs/plugins/Makefile.am
+++ b/docs/plugins/Makefile.am
@@ -60,7 +60,6 @@
 	$(top_srcdir)/ext/amrwbdec/amrwbdec.h \
 	$(top_srcdir)/ext/cdio/gstcdiocddasrc.h \
 	$(top_srcdir)/ext/lame/gstlamemp3enc.h \
-	$(top_srcdir)/ext/mad/gstmad.h \
 	$(top_srcdir)/ext/sidplay/gstsiddec.h \
 	$(top_srcdir)/ext/twolame/gsttwolamemp2enc.h \
 	$(top_srcdir)/ext/x264/gstx264enc.h \
diff --git a/docs/plugins/Makefile.in b/docs/plugins/Makefile.in
index 388bef0..1136ab3 100644
--- a/docs/plugins/Makefile.in
+++ b/docs/plugins/Makefile.in
@@ -305,8 +305,6 @@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
 LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-MAD_CFLAGS = @MAD_CFLAGS@
-MAD_LIBS = @MAD_LIBS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -500,7 +498,6 @@
 	$(top_srcdir)/ext/amrwbdec/amrwbdec.h \
 	$(top_srcdir)/ext/cdio/gstcdiocddasrc.h \
 	$(top_srcdir)/ext/lame/gstlamemp3enc.h \
-	$(top_srcdir)/ext/mad/gstmad.h \
 	$(top_srcdir)/ext/sidplay/gstsiddec.h \
 	$(top_srcdir)/ext/twolame/gsttwolamemp2enc.h \
 	$(top_srcdir)/ext/x264/gstx264enc.h \
diff --git a/docs/plugins/gst-plugins-ugly-plugins-docs.sgml b/docs/plugins/gst-plugins-ugly-plugins-docs.sgml
index 6217c5a..a0b4525 100644
--- a/docs/plugins/gst-plugins-ugly-plugins-docs.sgml
+++ b/docs/plugins/gst-plugins-ugly-plugins-docs.sgml
@@ -23,7 +23,6 @@
     <xi:include href="xml/element-amrwbdec.xml" />
     <xi:include href="xml/element-cdiocddasrc.xml" />
     <xi:include href="xml/element-lamemp3enc.xml" />
-    <xi:include href="xml/element-mad.xml" />
     <xi:include href="xml/element-mpg123audiodec.xml" />
     <xi:include href="xml/element-rademux.xml" />
     <xi:include href="xml/element-rmdemux.xml" />
@@ -47,7 +46,6 @@
     <xi:include href="xml/plugin-dvdread.xml" />
     <xi:include href="xml/plugin-dvdsub.xml" />
     <xi:include href="xml/plugin-lame.xml" />
-    <xi:include href="xml/plugin-mad.xml" />
     <xi:include href="xml/plugin-mpeg2dec.xml" />
     <xi:include href="xml/plugin-mpg123.xml" />
     <xi:include href="xml/plugin-realmedia.xml" />
diff --git a/docs/plugins/gst-plugins-ugly-plugins-sections.txt b/docs/plugins/gst-plugins-ugly-plugins-sections.txt
index fcd8d20..ec5ffe8 100644
--- a/docs/plugins/gst-plugins-ugly-plugins-sections.txt
+++ b/docs/plugins/gst-plugins-ugly-plugins-sections.txt
@@ -93,20 +93,6 @@
 </SECTION>
 
 <SECTION>
-<FILE>element-mad</FILE>
-<TITLE>mad</TITLE>
-GstMad
-<SUBSECTION Standard>
-GstMadClass
-GST_MAD
-GST_MAD_CLASS
-GST_IS_MAD
-GST_IS_MAD_CLASS
-GST_TYPE_MAD
-gst_mad_get_type
-</SECTION>
-
-<SECTION>
 <FILE>element-mpg123audiodec</FILE>
 <TITLE>mpg123audiodec</TITLE>
 GstMpg123AudioDec
diff --git a/docs/plugins/gst-plugins-ugly-plugins.hierarchy b/docs/plugins/gst-plugins-ugly-plugins.hierarchy
index 99bab3c..b68dd79 100644
--- a/docs/plugins/gst-plugins-ugly-plugins.hierarchy
+++ b/docs/plugins/gst-plugins-ugly-plugins.hierarchy
@@ -14,7 +14,6 @@
           GstAmrnbDec
           GstAmrwbDec
           GstDvdLpcmDec
-          GstMad
           GstMpg123AudioDec
         GstAudioEncoder
           GstAmrnbEnc
@@ -49,6 +48,7 @@
       GstPlugin
       GstPluginFeature
         GstDeviceProviderFactory
+        GstDynamicTypeFactory
         GstElementFactory
         GstTracerFactory
         GstTypeFindFactory
diff --git a/docs/plugins/html/ch01.html b/docs/plugins/html/ch01.html
index 641269f..e467898 100644
--- a/docs/plugins/html/ch01.html
+++ b/docs/plugins/html/ch01.html
@@ -42,9 +42,6 @@
 <span class="refentrytitle"><a href="gst-plugins-ugly-plugins-lamemp3enc.html">lamemp3enc</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-mad.html">mad</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
 <span class="refentrytitle"><a href="gst-plugins-ugly-plugins-mpg123audiodec.html">mpg123audiodec</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
diff --git a/docs/plugins/html/ch02.html b/docs/plugins/html/ch02.html
index 8cd9404..d2bc3bc 100644
--- a/docs/plugins/html/ch02.html
+++ b/docs/plugins/html/ch02.html
@@ -51,9 +51,6 @@
 <span class="refentrytitle"><a href="gst-plugins-ugly-plugins-plugin-lame.html">lame</a></span><span class="refpurpose"> — Encode MP3s with LAME</span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-plugin-mad.html">mad</a></span><span class="refpurpose"> — mp3 decoding based on the mad library</span>
-</dt>
-<dt>
 <span class="refentrytitle"><a href="gst-plugins-ugly-plugins-plugin-mpeg2dec.html">mpeg2dec</a></span><span class="refpurpose"> — LibMpeg2 decoder</span>
 </dt>
 <dt>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-1.0.devhelp2 b/docs/plugins/html/gst-plugins-ugly-plugins-1.0.devhelp2
index c1bad1c..91a18cb 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-1.0.devhelp2
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-1.0.devhelp2
@@ -8,7 +8,6 @@
       <sub name="amrwbdec" link="gst-plugins-ugly-plugins-amrwbdec.html"/>
       <sub name="cdiocddasrc" link="gst-plugins-ugly-plugins-cdiocddasrc.html"/>
       <sub name="lamemp3enc" link="gst-plugins-ugly-plugins-lamemp3enc.html"/>
-      <sub name="mad" link="gst-plugins-ugly-plugins-mad.html"/>
       <sub name="mpg123audiodec" link="gst-plugins-ugly-plugins-mpg123audiodec.html"/>
       <sub name="rademux" link="gst-plugins-ugly-plugins-rademux.html"/>
       <sub name="rmdemux" link="gst-plugins-ugly-plugins-rmdemux.html"/>
@@ -30,7 +29,6 @@
       <sub name="dvdread" link="gst-plugins-ugly-plugins-plugin-dvdread.html"/>
       <sub name="dvdsub" link="gst-plugins-ugly-plugins-plugin-dvdsub.html"/>
       <sub name="lame" link="gst-plugins-ugly-plugins-plugin-lame.html"/>
-      <sub name="mad" link="gst-plugins-ugly-plugins-plugin-mad.html"/>
       <sub name="mpeg2dec" link="gst-plugins-ugly-plugins-plugin-mpeg2dec.html"/>
       <sub name="mpg123" link="gst-plugins-ugly-plugins-plugin-mpg123.html"/>
       <sub name="realmedia" link="gst-plugins-ugly-plugins-plugin-realmedia.html"/>
@@ -58,9 +56,6 @@
     <keyword type="property" name="The “mono” property" link="gst-plugins-ugly-plugins-lamemp3enc.html#GstLameMP3Enc--mono"/>
     <keyword type="property" name="The “quality” property" link="gst-plugins-ugly-plugins-lamemp3enc.html#GstLameMP3Enc--quality"/>
     <keyword type="property" name="The “target” property" link="gst-plugins-ugly-plugins-lamemp3enc.html#GstLameMP3Enc--target"/>
-    <keyword type="struct" name="struct GstMad" link="gst-plugins-ugly-plugins-mad.html#GstMad-struct"/>
-    <keyword type="property" name="The “half” property" link="gst-plugins-ugly-plugins-mad.html#GstMad--half"/>
-    <keyword type="property" name="The “ignore-crc” property" link="gst-plugins-ugly-plugins-mad.html#GstMad--ignore-crc"/>
     <keyword type="struct" name="struct GstMpg123AudioDec" link="gst-plugins-ugly-plugins-mpg123audiodec.html#GstMpg123AudioDec-struct"/>
     <keyword type="struct" name="struct GstRealAudioDemux" link="gst-plugins-ugly-plugins-rademux.html#GstRealAudioDemux-struct"/>
     <keyword type="struct" name="struct GstRMDemux" link="gst-plugins-ugly-plugins-rmdemux.html#GstRMDemux-struct"/>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-a52dec.html b/docs/plugins/html/gst-plugins-ugly-plugins-a52dec.html
index 83f6ffa..af2204f 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-a52dec.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-a52dec.html
@@ -79,7 +79,7 @@
     <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
         <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
             <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
-                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstaudiodecoder.html#GstAudioDecoder-struct">GstAudioDecoder</a>
+                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0GstAudioDecoder.html#GstAudioDecoder-struct">GstAudioDecoder</a>
                     <span class="lineart">╰──</span> GstA52Dec
 </pre>
 </div>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-amrnbdec.html b/docs/plugins/html/gst-plugins-ugly-plugins-amrnbdec.html
index 891afa0..5816139 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-amrnbdec.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-amrnbdec.html
@@ -67,7 +67,7 @@
     <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
         <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
             <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
-                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstaudiodecoder.html#GstAudioDecoder-struct">GstAudioDecoder</a>
+                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0GstAudioDecoder.html#GstAudioDecoder-struct">GstAudioDecoder</a>
                     <span class="lineart">╰──</span> GstAmrnbDec
 </pre>
 </div>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-amrnbenc.html b/docs/plugins/html/gst-plugins-ugly-plugins-amrnbenc.html
index 3a66bc0..8aaa47d 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-amrnbenc.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-amrnbenc.html
@@ -68,7 +68,7 @@
     <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
         <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
             <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
-                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstaudioencoder.html#GstAudioEncoder-struct">GstAudioEncoder</a>
+                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0GstAudioEncoder.html#GstAudioEncoder-struct">GstAudioEncoder</a>
                     <span class="lineart">╰──</span> GstAmrnbEnc
 </pre>
 </div>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-amrwbdec.html b/docs/plugins/html/gst-plugins-ugly-plugins-amrwbdec.html
index 3ffab5e..9630f6d 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-amrwbdec.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-amrwbdec.html
@@ -51,7 +51,7 @@
     <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
         <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
             <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
-                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstaudiodecoder.html#GstAudioDecoder-struct">GstAudioDecoder</a>
+                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0GstAudioDecoder.html#GstAudioDecoder-struct">GstAudioDecoder</a>
                     <span class="lineart">╰──</span> GstAmrwbDec
 </pre>
 </div>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-cdiocddasrc.html b/docs/plugins/html/gst-plugins-ugly-plugins-cdiocddasrc.html
index 6947f2d..ff025a7 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-cdiocddasrc.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-cdiocddasrc.html
@@ -70,7 +70,7 @@
             <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
                 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0GstBaseSrc.html#GstBaseSrc-struct">GstBaseSrc</a>
                     <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0GstPushSrc.html#GstPushSrc-struct">GstPushSrc</a>
-                        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstaudiocdsrc.html#GstAudioCdSrc-struct">GstAudioCdSrc</a>
+                        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0GstAudioCdSrc.html#GstAudioCdSrc-struct">GstAudioCdSrc</a>
                             <span class="lineart">╰──</span> GstCdioCddaSrc
 </pre>
 </div>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-lamemp3enc.html b/docs/plugins/html/gst-plugins-ugly-plugins-lamemp3enc.html
index 338c12c..fcc5ca8 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-lamemp3enc.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-lamemp3enc.html
@@ -7,7 +7,7 @@
 <link rel="home" href="index.html" title="GStreamer Ugly Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-ugly Elements">
 <link rel="prev" href="gst-plugins-ugly-plugins-cdiocddasrc.html" title="cdiocddasrc">
-<link rel="next" href="gst-plugins-ugly-plugins-mad.html" title="mad">
+<link rel="next" href="gst-plugins-ugly-plugins-mpg123audiodec.html" title="mpg123audiodec">
 <meta name="generator" content="GTK-Doc V1.25 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
@@ -23,7 +23,7 @@
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
 <td><a accesskey="p" href="gst-plugins-ugly-plugins-cdiocddasrc.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="gst-plugins-ugly-plugins-mad.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="gst-plugins-ugly-plugins-mpg123audiodec.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
 <a name="gst-plugins-ugly-plugins-lamemp3enc"></a><div class="titlepage"></div>
@@ -95,7 +95,7 @@
     <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
         <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
             <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
-                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstaudioencoder.html#GstAudioEncoder-struct">GstAudioEncoder</a>
+                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0GstAudioEncoder.html#GstAudioEncoder-struct">GstAudioEncoder</a>
                     <span class="lineart">╰──</span> GstLameMP3Enc
 </pre>
 </div>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-mad.html b/docs/plugins/html/gst-plugins-ugly-plugins-mad.html
deleted file mode 100644
index b8cb0a0..0000000
--- a/docs/plugins/html/gst-plugins-ugly-plugins-mad.html
+++ /dev/null
@@ -1,223 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>mad: GStreamer Ugly Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
-<link rel="home" href="index.html" title="GStreamer Ugly Plugins 1.0 Plugins Reference Manual">
-<link rel="up" href="ch01.html" title="gst-plugins-ugly Elements">
-<link rel="prev" href="gst-plugins-ugly-plugins-lamemp3enc.html" title="lamemp3enc">
-<link rel="next" href="gst-plugins-ugly-plugins-mpg123audiodec.html" title="mpg123audiodec">
-<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts">
-<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
-                  <a href="#gst-plugins-ugly-plugins-mad.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
-                  <a href="#gst-plugins-ugly-plugins-mad.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties">  <span class="dim">|</span> 
-                  <a href="#gst-plugins-ugly-plugins-mad.properties" class="shortcut">Properties</a></span>
-</td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="gst-plugins-ugly-plugins-lamemp3enc.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="gst-plugins-ugly-plugins-mpg123audiodec.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="refentry">
-<a name="gst-plugins-ugly-plugins-mad"></a><div class="titlepage"></div>
-<div class="refnamediv"><table width="100%"><tr>
-<td valign="top">
-<h2><span class="refentrytitle"><a name="gst-plugins-ugly-plugins-mad.top_of_page"></a>mad</span></h2>
-<p>mad</p>
-</td>
-<td class="gallery_image" valign="top" align="right"></td>
-</tr></table></div>
-<div class="refsect1">
-<a name="gst-plugins-ugly-plugins-mad.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table class="informaltable" border="0">
-<colgroup>
-<col width="150px" class="properties_type">
-<col width="300px" class="properties_name">
-<col width="200px" class="properties_flags">
-</colgroup>
-<tbody>
-<tr>
-<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-ugly-plugins-mad.html#GstMad--half" title="The “half” property">half</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-ugly-plugins-mad.html#GstMad--ignore-crc" title="The “ignore-crc” property">ignore-crc</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<a name="GstMad"></a><div class="refsect1">
-<a name="gst-plugins-ugly-plugins-mad.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="name">
-<col class="description">
-</colgroup>
-<tbody><tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-ugly-plugins-mad.html#GstMad-struct" title="struct GstMad">GstMad</a></td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-ugly-plugins-mad.object-hierarchy"></a><h2>Object Hierarchy</h2>
-<pre class="screen">    <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
-    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
-        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
-            <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
-                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstaudiodecoder.html#GstAudioDecoder-struct">GstAudioDecoder</a>
-                    <span class="lineart">╰──</span> GstMad
-</pre>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-ugly-plugins-mad.description"></a><h2>Description</h2>
-<p>MP3 audio decoder. Note that while the mad plugin code is licensed under
-the LGPL, the libmad library itself is GPL licensed, so the effective
-runtime license of using the mad element is GPL.</p>
-<p>The mpg123audiodec and avdec_mp3 decoder elements are LGPL licensed and
-also tend to use less CPU for decoding.</p>
-<p>In general it doesn't matter which MP3 decoder you use, the main advantage
-of the mad decoder is that it also supports so-called 'freeform' mp3s which
-are mp3s with a bitrate higher than what the standard usually allows.</p>
-<div class="refsect2">
-<a name="id-1.2.8.7.5"></a><h3>Example pipelines</h3>
-<div class="informalexample">
-  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
-    <tbody>
-      <tr>
-        <td class="listing_lines" align="right"><pre>1</pre></td>
-        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> filesrc location<span class="gtkdoc opt">=</span>music<span class="gtkdoc opt">.</span>mp3 <span class="gtkdoc opt">!</span> mpegaudioparse <span class="gtkdoc opt">!</span> mad <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> audioresample <span class="gtkdoc opt">!</span> autoaudiosink</pre></td>
-      </tr>
-    </tbody>
-  </table>
-</div>
- Decode and play an mp3 file
-</div>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<div class="refsect2">
-<a name="id-1.2.8.7.6.1"></a><h3>Element Information</h3>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term">plugin</span></p></td>
-<td>
-            <a class="link" href="gst-plugins-ugly-plugins-plugin-mad.html#plugin-mad">mad</a>
-          </td>
-</tr>
-<tr>
-<td><p><span class="term">author</span></p></td>
-<td>Wim Taymans &lt;wim.taymans@gmail.com&gt;</td>
-</tr>
-<tr>
-<td><p><span class="term">class</span></p></td>
-<td>Codec/Decoder/Audio</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="id-1.2.8.7.6.2"></a><h3>Element Pads</h3>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term">name</span></p></td>
-<td>sink</td>
-</tr>
-<tr>
-<td><p><span class="term">direction</span></p></td>
-<td>sink</td>
-</tr>
-<tr>
-<td><p><span class="term">presence</span></p></td>
-<td>always</td>
-</tr>
-<tr>
-<td><p><span class="term">details</span></p></td>
-<td>audio/mpeg, mpegversion=(int)1, layer=(int)[ 1, 3 ], rate=(int){ 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 }, channels=(int)[ 1, 2 ]</td>
-</tr>
-</tbody>
-</table></div>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term">name</span></p></td>
-<td>src</td>
-</tr>
-<tr>
-<td><p><span class="term">direction</span></p></td>
-<td>source</td>
-</tr>
-<tr>
-<td><p><span class="term">presence</span></p></td>
-<td>always</td>
-</tr>
-<tr>
-<td><p><span class="term">details</span></p></td>
-<td>audio/x-raw, format=(string)S32LE, layout=(string)interleaved, rate=(int){ 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 }, channels=(int)[ 1, 2 ]</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-ugly-plugins-mad.functions_details"></a><h2>Functions</h2>
-<p></p>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-ugly-plugins-mad.other_details"></a><h2>Types and Values</h2>
-<div class="refsect2">
-<a name="GstMad-struct"></a><h3>struct GstMad</h3>
-<pre class="programlisting">struct GstMad;</pre>
-</div>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-ugly-plugins-mad.property-details"></a><h2>Property Details</h2>
-<div class="refsect2">
-<a name="GstMad--half"></a><h3>The <code class="literal">“half”</code> property</h3>
-<pre class="programlisting">  “half”                     <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
-<p>Generate PCM at 1/2 sample rate.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: FALSE</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMad--ignore-crc"></a><h3>The <code class="literal">“ignore-crc”</code> property</h3>
-<pre class="programlisting">  “ignore-crc”               <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
-<p>Ignore CRC errors.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: TRUE</p>
-</div>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-ugly-plugins-mad.see-also"></a><h2>See Also</h2>
-<p>lame</p>
-</div>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.25</div>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-mpg123audiodec.html b/docs/plugins/html/gst-plugins-ugly-plugins-mpg123audiodec.html
index de77d3a..968ab77 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-mpg123audiodec.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-mpg123audiodec.html
@@ -6,7 +6,7 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Ugly Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-ugly Elements">
-<link rel="prev" href="gst-plugins-ugly-plugins-mad.html" title="mad">
+<link rel="prev" href="gst-plugins-ugly-plugins-lamemp3enc.html" title="lamemp3enc">
 <link rel="next" href="gst-plugins-ugly-plugins-rademux.html" title="rademux">
 <meta name="generator" content="GTK-Doc V1.25 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
@@ -20,7 +20,7 @@
 </td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="gst-plugins-ugly-plugins-mad.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="gst-plugins-ugly-plugins-lamemp3enc.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
 <td><a accesskey="n" href="gst-plugins-ugly-plugins-rademux.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
@@ -51,7 +51,7 @@
     <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
         <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
             <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
-                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstaudiodecoder.html#GstAudioDecoder-struct">GstAudioDecoder</a>
+                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0GstAudioDecoder.html#GstAudioDecoder-struct">GstAudioDecoder</a>
                     <span class="lineart">╰──</span> GstMpg123AudioDec
 </pre>
 </div>
@@ -59,7 +59,7 @@
 <a name="gst-plugins-ugly-plugins-mpg123audiodec.description"></a><h2>Description</h2>
 <p>Audio decoder for MPEG-1 layer 1/2/3 audio data.</p>
 <div class="refsect2">
-<a name="id-1.2.9.6.3"></a><h3>Example pipelines</h3>
+<a name="id-1.2.8.6.3"></a><h3>Example pipelines</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -75,7 +75,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.9.6.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.8.6.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -101,7 +101,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.9.6.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.8.6.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-a52dec.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-a52dec.html
index 45ceb78..15fd786 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-a52dec.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-a52dec.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.4</td>
+<td>1.12.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-amrnb.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-amrnb.html
index aa10454..adab492 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-amrnb.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-amrnb.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.4</td>
+<td>1.12.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-amrwbdec.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-amrwbdec.html
index 77d1431..f2fe909 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-amrwbdec.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-amrwbdec.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.4</td>
+<td>1.12.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-asf.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-asf.html
index 1272486..620c2d0 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-asf.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-asf.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.4</td>
+<td>1.12.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-cdio.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-cdio.html
index e3f0714..46c57d4 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-cdio.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-cdio.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.4</td>
+<td>1.12.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-dvdlpcmdec.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-dvdlpcmdec.html
index ef67930..c544487 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-dvdlpcmdec.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-dvdlpcmdec.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.4</td>
+<td>1.12.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-dvdread.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-dvdread.html
index db099b1..673426c 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-dvdread.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-dvdread.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.4</td>
+<td>1.12.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-dvdsub.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-dvdsub.html
index d7c759d..27c73b6 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-dvdsub.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-dvdsub.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.4</td>
+<td>1.12.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-lame.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-lame.html
index b63958d..383784b 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-lame.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-lame.html
@@ -7,7 +7,7 @@
 <link rel="home" href="index.html" title="GStreamer Ugly Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-ugly Plugins">
 <link rel="prev" href="gst-plugins-ugly-plugins-plugin-dvdsub.html" title="dvdsub">
-<link rel="next" href="gst-plugins-ugly-plugins-plugin-mad.html" title="mad">
+<link rel="next" href="gst-plugins-ugly-plugins-plugin-mpeg2dec.html" title="mpeg2dec">
 <meta name="generator" content="GTK-Doc V1.25 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
@@ -17,7 +17,7 @@
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="ch02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
 <td><a accesskey="p" href="gst-plugins-ugly-plugins-plugin-dvdsub.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="gst-plugins-ugly-plugins-plugin-mad.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="gst-plugins-ugly-plugins-plugin-mpeg2dec.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
 <a name="gst-plugins-ugly-plugins-plugin-lame"></a><div class="titlepage"></div>
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.4</td>
+<td>1.12.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-mad.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-mad.html
deleted file mode 100644
index b70ade1..0000000
--- a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-mad.html
+++ /dev/null
@@ -1,79 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>mad: GStreamer Ugly Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
-<link rel="home" href="index.html" title="GStreamer Ugly Plugins 1.0 Plugins Reference Manual">
-<link rel="up" href="ch02.html" title="gst-plugins-ugly Plugins">
-<link rel="prev" href="gst-plugins-ugly-plugins-plugin-lame.html" title="lame">
-<link rel="next" href="gst-plugins-ugly-plugins-plugin-mpeg2dec.html" title="mpeg2dec">
-<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts"></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="ch02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="gst-plugins-ugly-plugins-plugin-lame.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="gst-plugins-ugly-plugins-plugin-mpeg2dec.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="refentry">
-<a name="gst-plugins-ugly-plugins-plugin-mad"></a><div class="titlepage"></div>
-<div class="refnamediv"><table width="100%"><tr>
-<td valign="top">
-<h2><span class="refentrytitle">mad</span></h2>
-<p>mad — <a name="plugin-mad"></a>mp3 decoding based on the mad library</p>
-</td>
-<td class="gallery_image" valign="top" align="right"></td>
-</tr></table></div>
-<div class="refsect1">
-<a name="id-1.3.11.3"></a><h2>Plugin Information</h2>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term">filename</span></p></td>
-<td>libgstmad.so</td>
-</tr>
-<tr>
-<td><p><span class="term">version</span></p></td>
-<td>1.10.4</td>
-</tr>
-<tr>
-<td><p><span class="term">run-time license</span></p></td>
-<td>GPL</td>
-</tr>
-<tr>
-<td><p><span class="term">package</span></p></td>
-<td>GStreamer Ugly Plug-ins source release</td>
-</tr>
-<tr>
-<td><p><span class="term">origin</span></p></td>
-<td>Unknown package origin</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect1">
-<a name="id-1.3.11.4"></a><h2>Elements</h2>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody><tr>
-<td><p><span class="term"><a class="link" href="gst-plugins-ugly-plugins-mad.html" title="mad">mad</a></span></p></td>
-<td>Uses mad code to decode mp3 streams</td>
-</tr></tbody>
-</table></div>
-</div>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.25</div>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-mpeg2dec.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-mpeg2dec.html
index 8743bfa..d7ea5b0 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-mpeg2dec.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-mpeg2dec.html
@@ -6,7 +6,7 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Ugly Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-ugly Plugins">
-<link rel="prev" href="gst-plugins-ugly-plugins-plugin-mad.html" title="mad">
+<link rel="prev" href="gst-plugins-ugly-plugins-plugin-lame.html" title="lame">
 <link rel="next" href="gst-plugins-ugly-plugins-plugin-mpg123.html" title="mpg123">
 <meta name="generator" content="GTK-Doc V1.25 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
@@ -16,7 +16,7 @@
 <td width="100%" align="left" class="shortcuts"></td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="ch02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="gst-plugins-ugly-plugins-plugin-mad.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="gst-plugins-ugly-plugins-plugin-lame.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
 <td><a accesskey="n" href="gst-plugins-ugly-plugins-plugin-mpg123.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
@@ -29,7 +29,7 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="id-1.3.12.3"></a><h2>Plugin Information</h2>
+<a name="id-1.3.11.3"></a><h2>Plugin Information</h2>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.4</td>
+<td>1.12.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
@@ -60,7 +60,7 @@
 </table></div>
 </div>
 <div class="refsect1">
-<a name="id-1.3.12.4"></a><h2>Elements</h2>
+<a name="id-1.3.11.4"></a><h2>Elements</h2>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-mpg123.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-mpg123.html
index 4b0e722..2163ca5 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-mpg123.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-mpg123.html
@@ -29,7 +29,7 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="id-1.3.13.3"></a><h2>Plugin Information</h2>
+<a name="id-1.3.12.3"></a><h2>Plugin Information</h2>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.4</td>
+<td>1.12.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
@@ -60,7 +60,7 @@
 </table></div>
 </div>
 <div class="refsect1">
-<a name="id-1.3.13.4"></a><h2>Elements</h2>
+<a name="id-1.3.12.4"></a><h2>Elements</h2>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-realmedia.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-realmedia.html
index acef6d1..eb90a3f 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-realmedia.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-realmedia.html
@@ -29,7 +29,7 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="id-1.3.14.3"></a><h2>Plugin Information</h2>
+<a name="id-1.3.13.3"></a><h2>Plugin Information</h2>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -38,11 +38,11 @@
 <tbody>
 <tr>
 <td><p><span class="term">filename</span></p></td>
-<td>libgstrmdemux.so</td>
+<td>libgstrealmedia.so</td>
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.4</td>
+<td>1.12.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
@@ -60,7 +60,7 @@
 </table></div>
 </div>
 <div class="refsect1">
-<a name="id-1.3.14.4"></a><h2>Elements</h2>
+<a name="id-1.3.13.4"></a><h2>Elements</h2>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-siddec.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-siddec.html
index bf9cca7..4097b92 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-siddec.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-siddec.html
@@ -29,7 +29,7 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="id-1.3.15.3"></a><h2>Plugin Information</h2>
+<a name="id-1.3.14.3"></a><h2>Plugin Information</h2>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.4</td>
+<td>1.12.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
@@ -60,7 +60,7 @@
 </table></div>
 </div>
 <div class="refsect1">
-<a name="id-1.3.15.4"></a><h2>Elements</h2>
+<a name="id-1.3.14.4"></a><h2>Elements</h2>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-twolame.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-twolame.html
index aaee34d..50fe2ea 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-twolame.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-twolame.html
@@ -29,7 +29,7 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="id-1.3.16.3"></a><h2>Plugin Information</h2>
+<a name="id-1.3.15.3"></a><h2>Plugin Information</h2>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.4</td>
+<td>1.12.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
@@ -60,7 +60,7 @@
 </table></div>
 </div>
 <div class="refsect1">
-<a name="id-1.3.16.4"></a><h2>Elements</h2>
+<a name="id-1.3.15.4"></a><h2>Elements</h2>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-x264.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-x264.html
index 2617fb1..be11c5d 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-x264.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-x264.html
@@ -28,7 +28,7 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="id-1.3.17.3"></a><h2>Plugin Information</h2>
+<a name="id-1.3.16.3"></a><h2>Plugin Information</h2>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -41,7 +41,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.4</td>
+<td>1.12.0</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
@@ -59,7 +59,7 @@
 </table></div>
 </div>
 <div class="refsect1">
-<a name="id-1.3.17.4"></a><h2>Elements</h2>
+<a name="id-1.3.16.4"></a><h2>Elements</h2>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-rademux.html b/docs/plugins/html/gst-plugins-ugly-plugins-rademux.html
index f345911..81d0e38 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-rademux.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-rademux.html
@@ -58,7 +58,7 @@
 <a name="gst-plugins-ugly-plugins-rademux.description"></a><h2>Description</h2>
 <p>Demuxes/parses a RealAudio (.ra) file or stream into compressed audio.</p>
 <div class="refsect2">
-<a name="id-1.2.10.6.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.9.6.3"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -87,7 +87,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.10.6.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.9.6.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -113,7 +113,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.10.6.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.9.6.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-rdtmanager.html b/docs/plugins/html/gst-plugins-ugly-plugins-rdtmanager.html
index ce5567e..cfc8ee8 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-rdtmanager.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-rdtmanager.html
@@ -120,7 +120,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.12.8.3.1"></a><h3>Element Information</h3>
+<a name="id-1.2.11.8.3.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -146,7 +146,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.12.8.3.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.11.8.3.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-rmdemux.html b/docs/plugins/html/gst-plugins-ugly-plugins-rmdemux.html
index 4e00940..a83dca1 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-rmdemux.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-rmdemux.html
@@ -59,7 +59,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.11.6.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.10.6.2.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -85,7 +85,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.11.6.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.10.6.2.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-rtspreal.html b/docs/plugins/html/gst-plugins-ugly-plugins-rtspreal.html
index 9a89059..ef502fa 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-rtspreal.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-rtspreal.html
@@ -59,7 +59,7 @@
 <a name="gst-plugins-ugly-plugins-rtspreal.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
 <p>
 GstRTSPReal implements
- <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstrtspextension.html#GstRTSPExtension">GstRTSPExtension</a>.</p>
+ <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-GstRTSPExtension.html#GstRTSPExtension">GstRTSPExtension</a>.</p>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-ugly-plugins-rtspreal.description"></a><h2>Description</h2>
@@ -67,7 +67,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.13.7.3.1"></a><h3>Element Information</h3>
+<a name="id-1.2.12.7.3.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -93,7 +93,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.13.7.3.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.12.7.3.2"></a><h3>Element Pads</h3>
 </div>
 </div>
 </div>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-rtspwms.html b/docs/plugins/html/gst-plugins-ugly-plugins-rtspwms.html
index 672400d..d4fc8dc 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-rtspwms.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-rtspwms.html
@@ -59,7 +59,7 @@
 <a name="gst-plugins-ugly-plugins-rtspwms.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
 <p>
 GstRTSPWMS implements
- <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstrtspextension.html#GstRTSPExtension">GstRTSPExtension</a>.</p>
+ <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-GstRTSPExtension.html#GstRTSPExtension">GstRTSPExtension</a>.</p>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-ugly-plugins-rtspwms.description"></a><h2>Description</h2>
@@ -67,7 +67,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.14.7.3.1"></a><h3>Element Information</h3>
+<a name="id-1.2.13.7.3.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -93,7 +93,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.14.7.3.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.13.7.3.2"></a><h3>Element Pads</h3>
 </div>
 </div>
 </div>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-siddec.html b/docs/plugins/html/gst-plugins-ugly-plugins-siddec.html
index a8b9b0f..cf2ec46 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-siddec.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-siddec.html
@@ -122,7 +122,7 @@
 the emulator and producing output.</p>
 <p>Seeking is not (and cannot be) implemented.</p>
 <div class="refsect2">
-<a name="id-1.2.15.7.5"></a><h3>Example pipelines</h3>
+<a name="id-1.2.14.7.5"></a><h3>Example pipelines</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -138,7 +138,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.15.7.6.1"></a><h3>Element Information</h3>
+<a name="id-1.2.14.7.6.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -164,7 +164,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.15.7.6.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.14.7.6.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-twolame.html b/docs/plugins/html/gst-plugins-ugly-plugins-twolame.html
index e5c9303..2981c1f 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-twolame.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-twolame.html
@@ -140,7 +140,7 @@
     <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
         <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
             <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
-                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstaudioencoder.html#GstAudioEncoder-struct">GstAudioEncoder</a>
+                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0GstAudioEncoder.html#GstAudioEncoder-struct">GstAudioEncoder</a>
                     <span class="lineart">╰──</span> GstTwoLame
 </pre>
 </div>
@@ -155,7 +155,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.16.8.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.15.8.2.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -181,7 +181,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.16.8.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.15.8.2.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-x264enc.html b/docs/plugins/html/gst-plugins-ugly-plugins-x264enc.html
index ba053dc..5f3249f 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-x264enc.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-x264enc.html
@@ -314,7 +314,7 @@
 overall encoding quality so may not be appropriate for your use case.
 </div>
 <div class="refsect2">
-<a name="id-1.2.17.8.7"></a><h3>Example pipeline</h3>
+<a name="id-1.2.16.8.7"></a><h3>Example pipeline</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -383,7 +383,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.17.8.8.1"></a><h3>Element Information</h3>
+<a name="id-1.2.16.8.8.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -409,7 +409,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.17.8.8.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.16.8.8.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -430,7 +430,7 @@
 </tr>
 <tr>
 <td><p><span class="term">details</span></p></td>
-<td>video/x-raw, format=(string){ I420, YV12, Y42B, Y444, NV12, I420_10LE, I422_10LE, Y444_10LE }, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 16, 2147483647 ], height=(int)[ 16, 2147483647 ]</td>
+<td>video/x-raw, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 16, 2147483647 ], height=(int)[ 16, 2147483647 ], format=(string){ Y444, Y42B, I420, YV12, NV12 }</td>
 </tr>
 </tbody>
 </table></div>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-xingmux.html b/docs/plugins/html/gst-plugins-ugly-plugins-xingmux.html
index a85ad3f..8daf522 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-xingmux.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-xingmux.html
@@ -61,7 +61,7 @@
 seeking on VBR MP3 files.</p>
 <p>This element will remove any existing Xing, LAME or VBRI headers from the beginning of the file.</p>
 <div class="refsect2">
-<a name="id-1.2.18.6.4"></a><h3>Example launch line</h3>
+<a name="id-1.2.17.6.4"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -81,7 +81,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.18.6.5.1"></a><h3>Element Information</h3>
+<a name="id-1.2.17.6.5.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -107,7 +107,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.18.6.5.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.17.6.5.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/index.html b/docs/plugins/html/index.html
index cd3913e..520fb01 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 Ugly Plugins 1.0 Plugins Reference Manual</p></th></tr></table></div>
 <div><p class="releaseinfo">
-      for GStreamer Ugly Plugins 1.0 (1.10.4)
+      for GStreamer Ugly Plugins 1.0 (1.12.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-ugly/html/" target="_top">http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-ugly/html/</a>.
     </p></div>
@@ -44,9 +44,6 @@
 <span class="refentrytitle"><a href="gst-plugins-ugly-plugins-lamemp3enc.html">lamemp3enc</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-mad.html">mad</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
 <span class="refentrytitle"><a href="gst-plugins-ugly-plugins-mpg123audiodec.html">mpg123audiodec</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
@@ -107,9 +104,6 @@
 <span class="refentrytitle"><a href="gst-plugins-ugly-plugins-plugin-lame.html">lame</a></span><span class="refpurpose"> — Encode MP3s with LAME</span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-plugin-mad.html">mad</a></span><span class="refpurpose"> — mp3 decoding based on the mad library</span>
-</dt>
-<dt>
 <span class="refentrytitle"><a href="gst-plugins-ugly-plugins-plugin-mpeg2dec.html">mpeg2dec</a></span><span class="refpurpose"> — LibMpeg2 decoder</span>
 </dt>
 <dt>
diff --git a/docs/plugins/inspect/plugin-a52dec.xml b/docs/plugins/inspect/plugin-a52dec.xml
index bedefc1..5913423 100644
--- a/docs/plugins/inspect/plugin-a52dec.xml
+++ b/docs/plugins/inspect/plugin-a52dec.xml
@@ -3,7 +3,7 @@
   <description>Decodes ATSC A/52 encoded audio streams</description>
   <filename>../../ext/a52dec/.libs/libgsta52dec.so</filename>
   <basename>libgsta52dec.so</basename>
-  <version>1.10.4</version>
+  <version>1.12.0</version>
   <license>GPL</license>
   <source>gst-plugins-ugly</source>
   <package>GStreamer Ugly Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-amrnb.xml b/docs/plugins/inspect/plugin-amrnb.xml
index 39e8cd4..bfefd29 100644
--- a/docs/plugins/inspect/plugin-amrnb.xml
+++ b/docs/plugins/inspect/plugin-amrnb.xml
@@ -3,7 +3,7 @@
   <description>Adaptive Multi-Rate Narrow-Band</description>
   <filename>../../ext/amrnb/.libs/libgstamrnb.so</filename>
   <basename>libgstamrnb.so</basename>
-  <version>1.10.4</version>
+  <version>1.12.0</version>
   <license>unknown</license>
   <source>gst-plugins-ugly</source>
   <package>GStreamer Ugly Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-amrwbdec.xml b/docs/plugins/inspect/plugin-amrwbdec.xml
index f03dac2..2b5cc23 100644
--- a/docs/plugins/inspect/plugin-amrwbdec.xml
+++ b/docs/plugins/inspect/plugin-amrwbdec.xml
@@ -3,7 +3,7 @@
   <description>Adaptive Multi-Rate Wide-Band Decoder</description>
   <filename>../../ext/amrwbdec/.libs/libgstamrwbdec.so</filename>
   <basename>libgstamrwbdec.so</basename>
-  <version>1.10.4</version>
+  <version>1.12.0</version>
   <license>unknown</license>
   <source>gst-plugins-ugly</source>
   <package>GStreamer Ugly Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-asf.xml b/docs/plugins/inspect/plugin-asf.xml
index 6508557..9a19cef 100644
--- a/docs/plugins/inspect/plugin-asf.xml
+++ b/docs/plugins/inspect/plugin-asf.xml
@@ -3,7 +3,7 @@
   <description>Demuxes and muxes audio and video in Microsofts ASF format</description>
   <filename>../../gst/asfdemux/.libs/libgstasf.so</filename>
   <basename>libgstasf.so</basename>
-  <version>1.10.4</version>
+  <version>1.12.0</version>
   <license>LGPL</license>
   <source>gst-plugins-ugly</source>
   <package>GStreamer Ugly Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-cdio.xml b/docs/plugins/inspect/plugin-cdio.xml
index 7e9923e..369be38 100644
--- a/docs/plugins/inspect/plugin-cdio.xml
+++ b/docs/plugins/inspect/plugin-cdio.xml
@@ -3,7 +3,7 @@
   <description>Read audio from audio CDs</description>
   <filename>../../ext/cdio/.libs/libgstcdio.so</filename>
   <basename>libgstcdio.so</basename>
-  <version>1.10.4</version>
+  <version>1.12.0</version>
   <license>GPL</license>
   <source>gst-plugins-ugly</source>
   <package>GStreamer Ugly Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-dvdlpcmdec.xml b/docs/plugins/inspect/plugin-dvdlpcmdec.xml
index f00d1cd..0ed7901 100644
--- a/docs/plugins/inspect/plugin-dvdlpcmdec.xml
+++ b/docs/plugins/inspect/plugin-dvdlpcmdec.xml
@@ -3,7 +3,7 @@
   <description>Decode DVD LPCM frames into standard PCM</description>
   <filename>../../gst/dvdlpcmdec/.libs/libgstdvdlpcmdec.so</filename>
   <basename>libgstdvdlpcmdec.so</basename>
-  <version>1.10.4</version>
+  <version>1.12.0</version>
   <license>LGPL</license>
   <source>gst-plugins-ugly</source>
   <package>GStreamer Ugly Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-dvdread.xml b/docs/plugins/inspect/plugin-dvdread.xml
index 5240d5a..a1f11dd 100644
--- a/docs/plugins/inspect/plugin-dvdread.xml
+++ b/docs/plugins/inspect/plugin-dvdread.xml
@@ -3,7 +3,7 @@
   <description>Access a DVD with dvdread</description>
   <filename>../../ext/dvdread/.libs/libgstdvdread.so</filename>
   <basename>libgstdvdread.so</basename>
-  <version>1.10.4</version>
+  <version>1.12.0</version>
   <license>GPL</license>
   <source>gst-plugins-ugly</source>
   <package>GStreamer Ugly Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-dvdsub.xml b/docs/plugins/inspect/plugin-dvdsub.xml
index edea29d..c810c97 100644
--- a/docs/plugins/inspect/plugin-dvdsub.xml
+++ b/docs/plugins/inspect/plugin-dvdsub.xml
@@ -3,7 +3,7 @@
   <description>DVD subtitle parser and decoder</description>
   <filename>../../gst/dvdsub/.libs/libgstdvdsub.so</filename>
   <basename>libgstdvdsub.so</basename>
-  <version>1.10.4</version>
+  <version>1.12.0</version>
   <license>LGPL</license>
   <source>gst-plugins-ugly</source>
   <package>GStreamer Ugly Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-lame.xml b/docs/plugins/inspect/plugin-lame.xml
index 899b144..3bd1a5e 100644
--- a/docs/plugins/inspect/plugin-lame.xml
+++ b/docs/plugins/inspect/plugin-lame.xml
@@ -3,7 +3,7 @@
   <description>Encode MP3s with LAME</description>
   <filename>../../ext/lame/.libs/libgstlame.so</filename>
   <basename>libgstlame.so</basename>
-  <version>1.10.4</version>
+  <version>1.12.0</version>
   <license>LGPL</license>
   <source>gst-plugins-ugly</source>
   <package>GStreamer Ugly Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-mad.xml b/docs/plugins/inspect/plugin-mad.xml
deleted file mode 100644
index 7fcb6aa..0000000
--- a/docs/plugins/inspect/plugin-mad.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<plugin>
-  <name>mad</name>
-  <description>mp3 decoding based on the mad library</description>
-  <filename>../../ext/mad/.libs/libgstmad.so</filename>
-  <basename>libgstmad.so</basename>
-  <version>1.10.4</version>
-  <license>GPL</license>
-  <source>gst-plugins-ugly</source>
-  <package>GStreamer Ugly Plug-ins source release</package>
-  <origin>Unknown package origin</origin>
-  <elements>
-    <element>
-      <name>mad</name>
-      <longname>mad mp3 decoder</longname>
-      <class>Codec/Decoder/Audio</class>
-      <description>Uses mad code to decode mp3 streams</description>
-      <author>Wim Taymans &lt;wim.taymans@gmail.com&gt;</author>
-      <pads>
-        <caps>
-          <name>sink</name>
-          <direction>sink</direction>
-          <presence>always</presence>
-          <details>audio/mpeg, mpegversion=(int)1, layer=(int)[ 1, 3 ], rate=(int){ 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 }, channels=(int)[ 1, 2 ]</details>
-        </caps>
-        <caps>
-          <name>src</name>
-          <direction>source</direction>
-          <presence>always</presence>
-          <details>audio/x-raw, format=(string)S32LE, layout=(string)interleaved, rate=(int){ 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 }, channels=(int)[ 1, 2 ]</details>
-        </caps>
-      </pads>
-    </element>
-  </elements>
-</plugin>
\ No newline at end of file
diff --git a/docs/plugins/inspect/plugin-mpeg2dec.xml b/docs/plugins/inspect/plugin-mpeg2dec.xml
index 281ce00..630ac81 100644
--- a/docs/plugins/inspect/plugin-mpeg2dec.xml
+++ b/docs/plugins/inspect/plugin-mpeg2dec.xml
@@ -3,7 +3,7 @@
   <description>LibMpeg2 decoder</description>
   <filename>../../ext/mpeg2dec/.libs/libgstmpeg2dec.so</filename>
   <basename>libgstmpeg2dec.so</basename>
-  <version>1.10.4</version>
+  <version>1.12.0</version>
   <license>GPL</license>
   <source>gst-plugins-ugly</source>
   <package>GStreamer Ugly Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-mpg123.xml b/docs/plugins/inspect/plugin-mpg123.xml
index a0a889e..159b2d1 100644
--- a/docs/plugins/inspect/plugin-mpg123.xml
+++ b/docs/plugins/inspect/plugin-mpg123.xml
@@ -3,7 +3,7 @@
   <description>mp3 decoding based on the mpg123 library</description>
   <filename>../../ext/mpg123/.libs/libgstmpg123.so</filename>
   <basename>libgstmpg123.so</basename>
-  <version>1.10.4</version>
+  <version>1.12.0</version>
   <license>LGPL</license>
   <source>gst-plugins-ugly</source>
   <package>GStreamer Ugly Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-realmedia.xml b/docs/plugins/inspect/plugin-realmedia.xml
index ed90b96..25f90b1 100644
--- a/docs/plugins/inspect/plugin-realmedia.xml
+++ b/docs/plugins/inspect/plugin-realmedia.xml
@@ -1,9 +1,9 @@
 <plugin>
   <name>realmedia</name>
   <description>RealMedia support plugins</description>
-  <filename>../../gst/realmedia/.libs/libgstrmdemux.so</filename>
-  <basename>libgstrmdemux.so</basename>
-  <version>1.10.4</version>
+  <filename>../../gst/realmedia/.libs/libgstrealmedia.so</filename>
+  <basename>libgstrealmedia.so</basename>
+  <version>1.12.0</version>
   <license>LGPL</license>
   <source>gst-plugins-ugly</source>
   <package>GStreamer Ugly Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-siddec.xml b/docs/plugins/inspect/plugin-siddec.xml
index fbe3801..82243f3 100644
--- a/docs/plugins/inspect/plugin-siddec.xml
+++ b/docs/plugins/inspect/plugin-siddec.xml
@@ -3,7 +3,7 @@
   <description>Uses libsidplay to decode .sid files</description>
   <filename>../../ext/sidplay/.libs/libgstsid.so</filename>
   <basename>libgstsid.so</basename>
-  <version>1.10.4</version>
+  <version>1.12.0</version>
   <license>GPL</license>
   <source>gst-plugins-ugly</source>
   <package>GStreamer Ugly Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-twolame.xml b/docs/plugins/inspect/plugin-twolame.xml
index e17091c..55b3bda 100644
--- a/docs/plugins/inspect/plugin-twolame.xml
+++ b/docs/plugins/inspect/plugin-twolame.xml
@@ -3,7 +3,7 @@
   <description>Encode MP2s with TwoLAME</description>
   <filename>../../ext/twolame/.libs/libgsttwolame.so</filename>
   <basename>libgsttwolame.so</basename>
-  <version>1.10.4</version>
+  <version>1.12.0</version>
   <license>LGPL</license>
   <source>gst-plugins-ugly</source>
   <package>GStreamer Ugly Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-x264.xml b/docs/plugins/inspect/plugin-x264.xml
index a194b10..e836303 100644
--- a/docs/plugins/inspect/plugin-x264.xml
+++ b/docs/plugins/inspect/plugin-x264.xml
@@ -3,7 +3,7 @@
   <description>libx264-based H264 plugins</description>
   <filename>../../ext/x264/.libs/libgstx264.so</filename>
   <basename>libgstx264.so</basename>
-  <version>1.10.4</version>
+  <version>1.12.0</version>
   <license>GPL</license>
   <source>gst-plugins-ugly</source>
   <package>GStreamer Ugly Plug-ins source release</package>
@@ -20,7 +20,7 @@
           <name>sink</name>
           <direction>sink</direction>
           <presence>always</presence>
-          <details>video/x-raw, format=(string){ I420, YV12, Y42B, Y444, NV12, I420_10LE, I422_10LE, Y444_10LE }, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 16, 2147483647 ], height=(int)[ 16, 2147483647 ]</details>
+          <details>video/x-raw, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 16, 2147483647 ], height=(int)[ 16, 2147483647 ], format=(string){ Y444, Y42B, I420, YV12, NV12 }</details>
         </caps>
         <caps>
           <name>src</name>
diff --git a/docs/plugins/inspect/plugin-xingmux.xml b/docs/plugins/inspect/plugin-xingmux.xml
index c5ebb0e..199c4b5 100644
--- a/docs/plugins/inspect/plugin-xingmux.xml
+++ b/docs/plugins/inspect/plugin-xingmux.xml
@@ -3,7 +3,7 @@
   <description>Add XING tags to mpeg audio files</description>
   <filename>../../gst/xingmux/.libs/libgstxingmux.so</filename>
   <basename>libgstxingmux.so</basename>
-  <version>1.10.4</version>
+  <version>1.12.0</version>
   <license>LGPL</license>
   <source>gst-plugins-ugly</source>
   <package>GStreamer Ugly Plug-ins source release</package>
diff --git a/ext/Makefile.am b/ext/Makefile.am
index c600554..3f94406 100644
--- a/ext/Makefile.am
+++ b/ext/Makefile.am
@@ -34,12 +34,6 @@
 LAME_DIR =
 endif
 
-if USE_MAD
-MAD_DIR = mad
-else
-MAD_DIR =
-endif
-
 if USE_MPEG2DEC
 MPEG2DEC_DIR = mpeg2dec
 else
@@ -77,7 +71,6 @@
 	$(CDIO_DIR) \
 	$(DVDREAD_DIR) \
 	$(LAME_DIR) \
-	$(MAD_DIR) \
 	$(MPEG2DEC_DIR) \
 	$(MPG123_DIR) \
 	$(SIDPLAY_DIR) \
@@ -91,7 +84,6 @@
 	cdio \
 	dvdread \
 	lame \
-	mad \
 	mpeg2dec \
 	mpg123 \
 	sidplay \
diff --git a/ext/Makefile.in b/ext/Makefile.in
index 02ea527..8fea57a 100644
--- a/ext/Makefile.in
+++ b/ext/Makefile.in
@@ -351,8 +351,6 @@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
 LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-MAD_CFLAGS = @MAD_CFLAGS@
-MAD_LIBS = @MAD_LIBS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -493,8 +491,6 @@
 @USE_DVDREAD_TRUE@DVDREAD_DIR = dvdread
 @USE_LAME_FALSE@LAME_DIR = 
 @USE_LAME_TRUE@LAME_DIR = lame
-@USE_MAD_FALSE@MAD_DIR = 
-@USE_MAD_TRUE@MAD_DIR = mad
 @USE_MPEG2DEC_FALSE@MPEG2DEC_DIR = 
 @USE_MPEG2DEC_TRUE@MPEG2DEC_DIR = mpeg2dec
 @USE_MPG123_FALSE@MPG123_DIR = 
@@ -512,7 +508,6 @@
 	$(CDIO_DIR) \
 	$(DVDREAD_DIR) \
 	$(LAME_DIR) \
-	$(MAD_DIR) \
 	$(MPEG2DEC_DIR) \
 	$(MPG123_DIR) \
 	$(SIDPLAY_DIR) \
@@ -526,7 +521,6 @@
 	cdio \
 	dvdread \
 	lame \
-	mad \
 	mpeg2dec \
 	mpg123 \
 	sidplay \
diff --git a/ext/a52dec/Makefile.in b/ext/a52dec/Makefile.in
index 1c7413f..317fc7a 100644
--- a/ext/a52dec/Makefile.in
+++ b/ext/a52dec/Makefile.in
@@ -373,8 +373,6 @@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
 LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-MAD_CFLAGS = @MAD_CFLAGS@
-MAD_LIBS = @MAD_LIBS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
diff --git a/ext/a52dec/meson.build b/ext/a52dec/meson.build
new file mode 100644
index 0000000..35d9d7a
--- /dev/null
+++ b/ext/a52dec/meson.build
@@ -0,0 +1,12 @@
+a52_dep = cc.find_library('a52', required : false)
+
+if a52_dep.found() and cc.has_header_symbol('a52dec/a52.h', 'a52_init', prefix : '#include <stdint.h>')
+  a52dec = library('gsta52dec',
+    'gsta52dec.c',
+    c_args : ugly_args,
+    include_directories : [configinc],
+    dependencies : [gstaudio_dep, orc_dep, a52_dep],
+    install : true,
+    install_dir : plugins_install_dir,
+  )
+endif
diff --git a/ext/amrnb/Makefile.in b/ext/amrnb/Makefile.in
index 9498632..869c22d 100644
--- a/ext/amrnb/Makefile.in
+++ b/ext/amrnb/Makefile.in
@@ -376,8 +376,6 @@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
 LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-MAD_CFLAGS = @MAD_CFLAGS@
-MAD_LIBS = @MAD_LIBS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
diff --git a/ext/amrnb/meson.build b/ext/amrnb/meson.build
new file mode 100644
index 0000000..e9aa4af
--- /dev/null
+++ b/ext/amrnb/meson.build
@@ -0,0 +1,13 @@
+amrnb_dep = dependency('opencore-amrnb', version : '>= 0.1.3', required : false)
+
+if amrnb_dep.found()
+  amrnb = library('gstamrnb',
+    ['amrnb.c', 'amrnbdec.c', 'amrnbenc.c'],
+    c_args : ugly_args,
+    include_directories : [configinc],
+    dependencies : [gstaudio_dep, amrnb_dep],
+    install : true,
+    install_dir : plugins_install_dir,
+  )
+  install_data(sources: 'GstAmrnbEnc.prs', install_dir: presetdir)
+endif
diff --git a/ext/amrwbdec/Makefile.in b/ext/amrwbdec/Makefile.in
index 213a868..470abb8 100644
--- a/ext/amrwbdec/Makefile.in
+++ b/ext/amrwbdec/Makefile.in
@@ -374,8 +374,6 @@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
 LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-MAD_CFLAGS = @MAD_CFLAGS@
-MAD_LIBS = @MAD_LIBS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
diff --git a/ext/amrwbdec/amrwb.c b/ext/amrwbdec/amrwb.c
index 65e78a9..54996e2 100644
--- a/ext/amrwbdec/amrwb.c
+++ b/ext/amrwbdec/amrwb.c
@@ -1,5 +1,5 @@
 /* GStreamer Adaptive Multi-Rate Wide-Band (AMR-WB) Decoder plugin
- * Copyright (C) 2006 Edgard Lima <edgard.lima@indt.org.br>
+ * Copyright (C) 2006 Edgard Lima <edgard.lima@gmail.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/ext/amrwbdec/amrwbdec.h b/ext/amrwbdec/amrwbdec.h
index 059038a..f207741 100644
--- a/ext/amrwbdec/amrwbdec.h
+++ b/ext/amrwbdec/amrwbdec.h
@@ -1,5 +1,5 @@
 /* GStreamer Adaptive Multi-Rate Wide-Band (AMR-WB) plugin
- * Copyright (C) 2006 Edgard Lima <edgard.lima@indt.org.br>
+ * Copyright (C) 2006 Edgard Lima <edgard.lima@gmail.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/ext/amrwbdec/meson.build b/ext/amrwbdec/meson.build
new file mode 100644
index 0000000..9bba8ae
--- /dev/null
+++ b/ext/amrwbdec/meson.build
@@ -0,0 +1,12 @@
+amrwb_dep = dependency('opencore-amrwb', version : '>= 0.1.3', required : false)
+
+if amrwb_dep.found()
+  amrwbdec = library('gstamrwbdec',
+    ['amrwb.c', 'amrwbdec.c'],
+    c_args : ugly_args,
+    include_directories : [configinc],
+    dependencies : [gstaudio_dep, amrwb_dep],
+    install : true,
+    install_dir : plugins_install_dir,
+  )
+endif
diff --git a/ext/cdio/Makefile.in b/ext/cdio/Makefile.in
index 2fdcac6..ad6df29 100644
--- a/ext/cdio/Makefile.in
+++ b/ext/cdio/Makefile.in
@@ -373,8 +373,6 @@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
 LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-MAD_CFLAGS = @MAD_CFLAGS@
-MAD_LIBS = @MAD_LIBS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
diff --git a/ext/cdio/meson.build b/ext/cdio/meson.build
new file mode 100644
index 0000000..954b6b1
--- /dev/null
+++ b/ext/cdio/meson.build
@@ -0,0 +1,12 @@
+cdio_dep = dependency('libcdio', version : '>= 0.76', required : false)
+
+if cdio_dep.found()
+  cdio = library('gstcdio',
+    ['gstcdio.c', 'gstcdiocddasrc.c'],
+    c_args : ugly_args,
+    include_directories : [configinc, libsinc],
+    dependencies : [gstaudio_dep, gsttag_dep, cdio_dep],
+    install : true,
+    install_dir : plugins_install_dir,
+  )
+endif
diff --git a/ext/dvdread/Makefile.in b/ext/dvdread/Makefile.in
index 55240b1..9fdd8af 100644
--- a/ext/dvdread/Makefile.in
+++ b/ext/dvdread/Makefile.in
@@ -373,8 +373,6 @@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
 LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-MAD_CFLAGS = @MAD_CFLAGS@
-MAD_LIBS = @MAD_LIBS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
diff --git a/ext/dvdread/dvdreadsrc.c b/ext/dvdread/dvdreadsrc.c
index 5df2637..234f251 100644
--- a/ext/dvdread/dvdreadsrc.c
+++ b/ext/dvdread/dvdreadsrc.c
@@ -1363,7 +1363,7 @@
   }
 
   /* Create the DVD event and put the structure into it. */
-  return gst_event_new_custom (GST_EVENT_CUSTOM_DOWNSTREAM, structure);
+  return gst_event_new_custom (GST_EVENT_CUSTOM_DOWNSTREAM_STICKY, structure);
 }
 
 static gint64
diff --git a/ext/dvdread/meson.build b/ext/dvdread/meson.build
new file mode 100644
index 0000000..203f89e
--- /dev/null
+++ b/ext/dvdread/meson.build
@@ -0,0 +1,13 @@
+gmodule_dep = dependency('gmodule-2.0', required : false)
+dvdread_dep = dependency('dvdread', version : '>= 0.5.0', required : false)
+
+if gmodule_dep.found() and dvdread_dep.found()
+  dvdread = library('gstdvdread',
+    ['dvdreadsrc.c'],
+    c_args : ugly_args,
+    include_directories : [configinc, libsinc],
+    dependencies : [gstbase_dep, gmodule_dep, dvdread_dep],
+    install : true,
+    install_dir : plugins_install_dir,
+  )
+endif
diff --git a/ext/lame/Makefile.in b/ext/lame/Makefile.in
index 4b61892..f78e155 100644
--- a/ext/lame/Makefile.in
+++ b/ext/lame/Makefile.in
@@ -374,8 +374,6 @@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
 LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-MAD_CFLAGS = @MAD_CFLAGS@
-MAD_LIBS = @MAD_LIBS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
diff --git a/ext/lame/meson.build b/ext/lame/meson.build
new file mode 100644
index 0000000..2812cb9
--- /dev/null
+++ b/ext/lame/meson.build
@@ -0,0 +1,19 @@
+lame_dep = cc.find_library('mp3lame', required : false)
+
+if lame_dep.found() and cc.has_header_symbol('lame/lame.h', 'lame_init')
+  lame_extra_c_args = []
+  if cc.has_header_symbol('lame/lame.h', 'lame_set_VBR_quality')
+    lame_extra_c_args += ['-DHAVE_LAME_SET_VBR_QUALITY']
+  endif
+  if cc.has_header_symbol('lame/lame.h', 'MEDIUM')
+    lame_extra_c_args += ['-DGSTLAME_PRESET']
+  endif
+  lame = library('gstlame',
+    ['gstlamemp3enc.c', 'plugin.c'],
+    c_args : ugly_args + lame_extra_c_args,
+    include_directories : [configinc, libsinc],
+    dependencies : [gstaudio_dep, lame_dep],
+    install : true,
+    install_dir : plugins_install_dir,
+  )
+endif
diff --git a/ext/mad/Makefile.am b/ext/mad/Makefile.am
deleted file mode 100644
index d6b4407..0000000
--- a/ext/mad/Makefile.am
+++ /dev/null
@@ -1,14 +0,0 @@
-plugin_LTLIBRARIES = libgstmad.la 
-
-libgstmad_la_SOURCES = gstmad.c
-
-libgstmad_la_CFLAGS = \
-        $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS) \
-	$(MAD_CFLAGS)
-libgstmad_la_LIBADD = \
-        $(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) -lgstaudio-$(GST_API_VERSION) \
-	$(GST_BASE_LIBS) $(GST_LIBS) $(MAD_LIBS)
-libgstmad_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
-libgstmad_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
-
-noinst_HEADERS = gstmad.h
diff --git a/ext/mad/Makefile.in b/ext/mad/Makefile.in
deleted file mode 100644
index a4f1091..0000000
--- a/ext/mad/Makefile.in
+++ /dev/null
@@ -1,848 +0,0 @@
-# Makefile.in generated by automake 1.15 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2014 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-
-VPATH = @srcdir@
-am__is_gnu_make = { \
-  if test -z '$(MAKELEVEL)'; then \
-    false; \
-  elif test -n '$(MAKE_HOST)'; then \
-    true; \
-  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
-    true; \
-  else \
-    false; \
-  fi; \
-}
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-target_triplet = @target@
-subdir = ext/mad
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
-	$(top_srcdir)/common/m4/as-auto-alt.m4 \
-	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
-	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-version.m4 \
-	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
-	$(top_srcdir)/common/m4/gst-arch.m4 \
-	$(top_srcdir)/common/m4/gst-args.m4 \
-	$(top_srcdir)/common/m4/gst-check.m4 \
-	$(top_srcdir)/common/m4/gst-default.m4 \
-	$(top_srcdir)/common/m4/gst-dowhile.m4 \
-	$(top_srcdir)/common/m4/gst-error.m4 \
-	$(top_srcdir)/common/m4/gst-feature.m4 \
-	$(top_srcdir)/common/m4/gst-function.m4 \
-	$(top_srcdir)/common/m4/gst-gettext.m4 \
-	$(top_srcdir)/common/m4/gst-glib2.m4 \
-	$(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
-	$(top_srcdir)/common/m4/gst-plugin-docs.m4 \
-	$(top_srcdir)/common/m4/gst-plugindir.m4 \
-	$(top_srcdir)/common/m4/gst.m4 \
-	$(top_srcdir)/common/m4/gtk-doc.m4 \
-	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/a52.m4 $(top_srcdir)/m4/gettext.m4 \
-	$(top_srcdir)/m4/gst-sid.m4 $(top_srcdir)/m4/iconv.m4 \
-	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
-	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
-	$(am__DIST_COMMON)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__installdirs = "$(DESTDIR)$(plugindir)"
-LTLIBRARIES = $(plugin_LTLIBRARIES)
-am__DEPENDENCIES_1 =
-libgstmad_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-am_libgstmad_la_OBJECTS = libgstmad_la-gstmad.lo
-libgstmad_la_OBJECTS = $(am_libgstmad_la_OBJECTS)
-AM_V_lt = $(am__v_lt_@AM_V@)
-am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-am__v_lt_1 = 
-libgstmad_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
-	$(libgstmad_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
-	$(CCLD) $(libgstmad_la_CFLAGS) $(CFLAGS) \
-	$(libgstmad_la_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_@AM_V@)
-am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-am__v_CC_0 = @echo "  CC      " $@;
-am__v_CC_1 = 
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_@AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo "  CCLD    " $@;
-am__v_CCLD_1 = 
-SOURCES = $(libgstmad_la_SOURCES)
-DIST_SOURCES = $(libgstmad_la_SOURCES)
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-HEADERS = $(noinst_HEADERS)
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-A52DEC_CFLAGS = @A52DEC_CFLAGS@
-A52DEC_LIBS = @A52DEC_LIBS@
-ACLOCAL = @ACLOCAL@
-ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
-AMRNB_CFLAGS = @AMRNB_CFLAGS@
-AMRNB_LIBS = @AMRNB_LIBS@
-AMRWB_CFLAGS = @AMRWB_CFLAGS@
-AMRWB_LIBS = @AMRWB_LIBS@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCASFLAGS = @CCASFLAGS@
-CCDEPMODE = @CCDEPMODE@
-CDIO_CFLAGS = @CDIO_CFLAGS@
-CDIO_LIBS = @CDIO_LIBS@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFAULT_AUDIOSINK = @DEFAULT_AUDIOSINK@
-DEFAULT_AUDIOSRC = @DEFAULT_AUDIOSRC@
-DEFAULT_VIDEOSINK = @DEFAULT_VIDEOSINK@
-DEFAULT_VIDEOSRC = @DEFAULT_VIDEOSRC@
-DEFAULT_VISUALIZER = @DEFAULT_VISUALIZER@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DEPRECATED_CFLAGS = @DEPRECATED_CFLAGS@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-DVDREAD_LIBS = @DVDREAD_LIBS@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-ERROR_CFLAGS = @ERROR_CFLAGS@
-ERROR_CXXFLAGS = @ERROR_CXXFLAGS@
-EXEEXT = @EXEEXT@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-GCOV = @GCOV@
-GCOV_CFLAGS = @GCOV_CFLAGS@
-GCOV_LIBS = @GCOV_LIBS@
-GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
-GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
-GIO_CFLAGS = @GIO_CFLAGS@
-GIO_LDFLAGS = @GIO_LDFLAGS@
-GIO_LIBS = @GIO_LIBS@
-GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
-GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
-GLIB_LIBS = @GLIB_LIBS@
-GLIB_MKENUMS = @GLIB_MKENUMS@
-GLIB_PREFIX = @GLIB_PREFIX@
-GLIB_REQ = @GLIB_REQ@
-GMODULE_NO_EXPORT_CFLAGS = @GMODULE_NO_EXPORT_CFLAGS@
-GMODULE_NO_EXPORT_LIBS = @GMODULE_NO_EXPORT_LIBS@
-GMSGFMT = @GMSGFMT@
-GMSGFMT_015 = @GMSGFMT_015@
-GREP = @GREP@
-GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
-GSTPB_PREFIX = @GSTPB_PREFIX@
-GST_AGE = @GST_AGE@
-GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
-GST_API_VERSION = @GST_API_VERSION@
-GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
-GST_BASE_LIBS = @GST_BASE_LIBS@
-GST_CFLAGS = @GST_CFLAGS@
-GST_CHECK_CFLAGS = @GST_CHECK_CFLAGS@
-GST_CHECK_LIBS = @GST_CHECK_LIBS@
-GST_CURRENT = @GST_CURRENT@
-GST_CXXFLAGS = @GST_CXXFLAGS@
-GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
-GST_LIBS = @GST_LIBS@
-GST_LIBVERSION = @GST_LIBVERSION@
-GST_LICENSE = @GST_LICENSE@
-GST_LT_LDFLAGS = @GST_LT_LDFLAGS@
-GST_OPTION_CFLAGS = @GST_OPTION_CFLAGS@
-GST_OPTION_CXXFLAGS = @GST_OPTION_CXXFLAGS@
-GST_PACKAGE_NAME = @GST_PACKAGE_NAME@
-GST_PACKAGE_ORIGIN = @GST_PACKAGE_ORIGIN@
-GST_PLUGINS_ALL = @GST_PLUGINS_ALL@
-GST_PLUGINS_BASE_CFLAGS = @GST_PLUGINS_BASE_CFLAGS@
-GST_PLUGINS_BASE_DIR = @GST_PLUGINS_BASE_DIR@
-GST_PLUGINS_BASE_LIBS = @GST_PLUGINS_BASE_LIBS@
-GST_PLUGINS_DIR = @GST_PLUGINS_DIR@
-GST_PLUGINS_NONPORTED = @GST_PLUGINS_NONPORTED@
-GST_PLUGINS_SELECTED = @GST_PLUGINS_SELECTED@
-GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
-GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
-GST_PREFIX = @GST_PREFIX@
-GST_REVISION = @GST_REVISION@
-GST_TOOLS_DIR = @GST_TOOLS_DIR@
-GTKDOC_CHECK = @GTKDOC_CHECK@
-GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
-GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
-GTKDOC_MKPDF = @GTKDOC_MKPDF@
-GTKDOC_REBASE = @GTKDOC_REBASE@
-HAVE_CXX = @HAVE_CXX@
-HAVE_DVDREAD = @HAVE_DVDREAD@
-HAVE_LAME = @HAVE_LAME@
-HTML_DIR = @HTML_DIR@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTLLIBS = @INTLLIBS@
-INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
-LAME_CFLAGS = @LAME_CFLAGS@
-LAME_LIBS = @LAME_LIBS@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBICONV = @LIBICONV@
-LIBINTL = @LIBINTL@
-LIBM = @LIBM@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LOCALEDIR = @LOCALEDIR@
-LTLIBICONV = @LTLIBICONV@
-LTLIBINTL = @LTLIBINTL@
-LTLIBOBJS = @LTLIBOBJS@
-LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-MAD_CFLAGS = @MAD_CFLAGS@
-MAD_LIBS = @MAD_LIBS@
-MAINT = @MAINT@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-MPEG2DEC_CFLAGS = @MPEG2DEC_CFLAGS@
-MPEG2DEC_LIBS = @MPEG2DEC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
-MSGFMT = @MSGFMT@
-MSGFMT_015 = @MSGFMT_015@
-MSGMERGE = @MSGMERGE@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-ORCC = @ORCC@
-ORCC_FLAGS = @ORCC_FLAGS@
-ORC_CFLAGS = @ORC_CFLAGS@
-ORC_LIBS = @ORC_LIBS@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PACKAGE_VERSION_MAJOR = @PACKAGE_VERSION_MAJOR@
-PACKAGE_VERSION_MICRO = @PACKAGE_VERSION_MICRO@
-PACKAGE_VERSION_MINOR = @PACKAGE_VERSION_MINOR@
-PACKAGE_VERSION_NANO = @PACKAGE_VERSION_NANO@
-PACKAGE_VERSION_RELEASE = @PACKAGE_VERSION_RELEASE@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PLUGINDIR = @PLUGINDIR@
-POSUB = @POSUB@
-PROFILE_CFLAGS = @PROFILE_CFLAGS@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SIDPLAY_CFLAGS = @SIDPLAY_CFLAGS@
-SIDPLAY_LIBS = @SIDPLAY_LIBS@
-STRIP = @STRIP@
-TWOLAME_CFLAGS = @TWOLAME_CFLAGS@
-TWOLAME_LIBS = @TWOLAME_LIBS@
-USE_NLS = @USE_NLS@
-VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
-VALGRIND_LIBS = @VALGRIND_LIBS@
-VALGRIND_PATH = @VALGRIND_PATH@
-VERSION = @VERSION@
-WARNING_CFLAGS = @WARNING_CFLAGS@
-WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
-WIN32_LIBS = @WIN32_LIBS@
-X264_CFLAGS = @X264_CFLAGS@
-X264_LIBS = @X264_LIBS@
-XGETTEXT = @XGETTEXT@
-XGETTEXT_015 = @XGETTEXT_015@
-XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-plugindir = @plugindir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-runstatedir = @runstatedir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target = @target@
-target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-plugin_LTLIBRARIES = libgstmad.la 
-libgstmad_la_SOURCES = gstmad.c
-libgstmad_la_CFLAGS = \
-        $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS) \
-	$(MAD_CFLAGS)
-
-libgstmad_la_LIBADD = \
-        $(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) -lgstaudio-$(GST_API_VERSION) \
-	$(GST_BASE_LIBS) $(GST_LIBS) $(MAD_LIBS)
-
-libgstmad_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
-libgstmad_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
-noinst_HEADERS = gstmad.h
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ext/mad/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu ext/mad/Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
-	@$(NORMAL_INSTALL)
-	@list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
-	list2=; for p in $$list; do \
-	  if test -f $$p; then \
-	    list2="$$list2 $$p"; \
-	  else :; fi; \
-	done; \
-	test -z "$$list2" || { \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
-	}
-
-uninstall-pluginLTLIBRARIES:
-	@$(NORMAL_UNINSTALL)
-	@list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
-	for p in $$list; do \
-	  $(am__strip_dir) \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(plugindir)/$$f'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(plugindir)/$$f"; \
-	done
-
-clean-pluginLTLIBRARIES:
-	-test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES)
-	@list='$(plugin_LTLIBRARIES)'; \
-	locs=`for p in $$list; do echo $$p; done | \
-	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
-	      sort -u`; \
-	test -z "$$locs" || { \
-	  echo rm -f $${locs}; \
-	  rm -f $${locs}; \
-	}
-
-libgstmad.la: $(libgstmad_la_OBJECTS) $(libgstmad_la_DEPENDENCIES) $(EXTRA_libgstmad_la_DEPENDENCIES) 
-	$(AM_V_CCLD)$(libgstmad_la_LINK) -rpath $(plugindir) $(libgstmad_la_OBJECTS) $(libgstmad_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstmad_la-gstmad.Plo@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
-@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
-
-.c.obj:
-@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
-@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
-@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.c.lo:
-@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
-@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
-
-libgstmad_la-gstmad.lo: gstmad.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstmad_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstmad_la_CFLAGS) $(CFLAGS) -MT libgstmad_la-gstmad.lo -MD -MP -MF $(DEPDIR)/libgstmad_la-gstmad.Tpo -c -o libgstmad_la-gstmad.lo `test -f 'gstmad.c' || echo '$(srcdir)/'`gstmad.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstmad_la-gstmad.Tpo $(DEPDIR)/libgstmad_la-gstmad.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstmad.c' object='libgstmad_la-gstmad.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstmad_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstmad_la_CFLAGS) $(CFLAGS) -c -o libgstmad_la-gstmad.lo `test -f 'gstmad.c' || echo '$(srcdir)/'`gstmad.c
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES) $(HEADERS)
-installdirs:
-	for dir in "$(DESTDIR)$(plugindir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-pluginLTLIBRARIES \
-	mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-pluginLTLIBRARIES
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-pluginLTLIBRARIES
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \
-	ctags-am distclean distclean-compile distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-man install-pdf install-pdf-am \
-	install-pluginLTLIBRARIES install-ps install-ps-am \
-	install-strip installcheck installcheck-am installdirs \
-	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
-	pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
-	uninstall-pluginLTLIBRARIES
-
-.PRECIOUS: Makefile
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/ext/mad/gstmad.c b/ext/mad/gstmad.c
deleted file mode 100644
index 55899a5..0000000
--- a/ext/mad/gstmad.c
+++ /dev/null
@@ -1,565 +0,0 @@
-/* GStreamer
- * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-/**
- * SECTION:element-mad
- * @see_also: lame
- *
- * MP3 audio decoder. Note that while the mad plugin code is licensed under
- * the LGPL, the libmad library itself is GPL licensed, so the effective
- * runtime license of using the mad element is GPL.
- *
- * The mpg123audiodec and avdec_mp3 decoder elements are LGPL licensed and
- * also tend to use less CPU for decoding.
- *
- * In general it doesn't matter which MP3 decoder you use, the main advantage
- * of the mad decoder is that it also supports so-called 'freeform' mp3s which
- * are mp3s with a bitrate higher than what the standard usually allows.
- *
- * <refsect2>
- * <title>Example pipelines</title>
- * |[
- * gst-launch-1.0 filesrc location=music.mp3 ! mpegaudioparse ! mad ! audioconvert ! audioresample ! autoaudiosink
- * ]| Decode and play an mp3 file
- * </refsect2>
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <stdlib.h>
-#include <string.h>
-#include "gstmad.h"
-#include <gst/audio/audio.h>
-
-enum
-{
-  ARG_0,
-  ARG_HALF,
-  ARG_IGNORE_CRC
-};
-
-GST_DEBUG_CATEGORY_STATIC (mad_debug);
-#define GST_CAT_DEFAULT mad_debug
-
-static GstStaticPadTemplate mad_src_template_factory =
-GST_STATIC_PAD_TEMPLATE ("src",
-    GST_PAD_SRC,
-    GST_PAD_ALWAYS,
-    GST_STATIC_CAPS ("audio/x-raw, "
-        "format = (string) " GST_AUDIO_NE (S32) ", "
-        "layout = (string) interleaved, "
-        "rate = (int) { 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 }, "
-        "channels = (int) [ 1, 2 ]")
-    );
-
-/* FIXME: make three caps, for mpegversion 1, 2 and 2.5 */
-static GstStaticPadTemplate mad_sink_template_factory =
-GST_STATIC_PAD_TEMPLATE ("sink",
-    GST_PAD_SINK,
-    GST_PAD_ALWAYS,
-    GST_STATIC_CAPS ("audio/mpeg, "
-        "mpegversion = (int) 1, "
-        "layer = (int) [ 1, 3 ], "
-        "rate = (int) { 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 }, "
-        "channels = (int) [ 1, 2 ]")
-    );
-
-
-static gboolean gst_mad_start (GstAudioDecoder * dec);
-static gboolean gst_mad_stop (GstAudioDecoder * dec);
-static GstFlowReturn gst_mad_parse (GstAudioDecoder * dec,
-    GstAdapter * adapter, gint * offset, gint * length);
-static GstFlowReturn gst_mad_handle_frame (GstAudioDecoder * dec,
-    GstBuffer * buffer);
-static void gst_mad_flush (GstAudioDecoder * dec, gboolean hard);
-
-static void gst_mad_set_property (GObject * object, guint prop_id,
-    const GValue * value, GParamSpec * pspec);
-static void gst_mad_get_property (GObject * object, guint prop_id,
-    GValue * value, GParamSpec * pspec);
-
-#define parent_class gst_mad_parent_class
-G_DEFINE_TYPE (GstMad, gst_mad, GST_TYPE_AUDIO_DECODER);
-
-static void
-gst_mad_class_init (GstMadClass * klass)
-{
-  GObjectClass *gobject_class = (GObjectClass *) klass;
-  GstElementClass *element_class = (GstElementClass *) klass;
-  GstAudioDecoderClass *base_class = (GstAudioDecoderClass *) klass;
-
-  gobject_class->set_property = gst_mad_set_property;
-  gobject_class->get_property = gst_mad_get_property;
-
-  /* init properties */
-  /* currently, string representations are used, we might want to change that */
-  /* FIXME: descriptions need to be more technical,
-   * default values and ranges need to be selected right */
-  g_object_class_install_property (gobject_class, ARG_HALF,
-      g_param_spec_boolean ("half", "Half", "Generate PCM at 1/2 sample rate",
-          FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-  g_object_class_install_property (gobject_class, ARG_IGNORE_CRC,
-      g_param_spec_boolean ("ignore-crc", "Ignore CRC", "Ignore CRC errors",
-          TRUE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
-  gst_element_class_add_static_pad_template (element_class,
-      &mad_sink_template_factory);
-  gst_element_class_add_static_pad_template (element_class,
-      &mad_src_template_factory);
-
-  gst_element_class_set_static_metadata (element_class, "mad mp3 decoder",
-      "Codec/Decoder/Audio",
-      "Uses mad code to decode mp3 streams",
-      "Wim Taymans <wim.taymans@gmail.com>");
-
-  base_class->start = GST_DEBUG_FUNCPTR (gst_mad_start);
-  base_class->stop = GST_DEBUG_FUNCPTR (gst_mad_stop);
-  base_class->parse = GST_DEBUG_FUNCPTR (gst_mad_parse);
-  base_class->handle_frame = GST_DEBUG_FUNCPTR (gst_mad_handle_frame);
-  base_class->flush = GST_DEBUG_FUNCPTR (gst_mad_flush);
-}
-
-static void
-gst_mad_init (GstMad * mad)
-{
-  GstAudioDecoder *dec;
-
-  dec = GST_AUDIO_DECODER (mad);
-  gst_audio_decoder_set_tolerance (dec, 20 * GST_MSECOND);
-  gst_audio_decoder_set_use_default_pad_acceptcaps (dec, TRUE);
-  GST_PAD_SET_ACCEPT_TEMPLATE (GST_AUDIO_DECODER_SINK_PAD (dec));
-
-  mad->half = FALSE;
-  mad->ignore_crc = TRUE;
-}
-
-static gboolean
-gst_mad_start (GstAudioDecoder * dec)
-{
-  GstMad *mad = GST_MAD (dec);
-  guint options = 0;
-
-  GST_DEBUG_OBJECT (dec, "start");
-  mad_stream_init (&mad->stream);
-  mad_frame_init (&mad->frame);
-  mad_synth_init (&mad->synth);
-  mad->rate = 0;
-  mad->channels = 0;
-  mad->caps_set = FALSE;
-  mad->frame.header.samplerate = 0;
-  if (mad->ignore_crc)
-    options |= MAD_OPTION_IGNORECRC;
-  if (mad->half)
-    options |= MAD_OPTION_HALFSAMPLERATE;
-  mad_stream_options (&mad->stream, options);
-  mad->header.mode = -1;
-  mad->header.emphasis = -1;
-  mad->eos = FALSE;
-
-  /* call upon legacy upstream byte support (e.g. seeking) */
-  gst_audio_decoder_set_estimate_rate (dec, TRUE);
-
-  return TRUE;
-}
-
-static gboolean
-gst_mad_stop (GstAudioDecoder * dec)
-{
-  GstMad *mad = GST_MAD (dec);
-
-  GST_DEBUG_OBJECT (dec, "stop");
-  mad_synth_finish (&mad->synth);
-  mad_frame_finish (&mad->frame);
-  mad_stream_finish (&mad->stream);
-
-  return TRUE;
-}
-
-static inline gint32
-scale (mad_fixed_t sample)
-{
-#if MAD_F_FRACBITS < 28
-  /* round */
-  sample += (1L << (28 - MAD_F_FRACBITS - 1));
-#endif
-
-  /* clip */
-  if (sample >= MAD_F_ONE)
-    sample = MAD_F_ONE - 1;
-  else if (sample < -MAD_F_ONE)
-    sample = -MAD_F_ONE;
-
-#if MAD_F_FRACBITS < 28
-  /* quantize */
-  sample >>= (28 - MAD_F_FRACBITS);
-#endif
-
-  /* convert from 29 bits to 32 bits */
-  return (gint32) (sample << 3);
-}
-
-/* internal function to check if the header has changed and thus the
- * caps need to be reset.  Only call during normal mode, not resyncing */
-static void
-gst_mad_check_caps_reset (GstMad * mad)
-{
-  guint nchannels;
-  guint rate;
-
-  nchannels = MAD_NCHANNELS (&mad->frame.header);
-
-#if MAD_VERSION_MINOR <= 12
-  rate = mad->header.sfreq;
-#else
-  rate = mad->frame.header.samplerate;
-#endif
-
-  /* rate and channels are not supposed to change in a continuous stream,
-   * so check this first before doing anything */
-
-  /* only set caps if they weren't already set for this continuous stream */
-  if (!gst_pad_has_current_caps (GST_AUDIO_DECODER_SRC_PAD (mad))
-      || mad->channels != nchannels || mad->rate != rate) {
-    GstAudioInfo info;
-    static const GstAudioChannelPosition chan_pos[2][2] = {
-      {GST_AUDIO_CHANNEL_POSITION_MONO},
-      {GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT,
-          GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT}
-    };
-
-    if (mad->caps_set) {
-      GST_DEBUG_OBJECT (mad, "Header changed from %d Hz/%d ch to %d Hz/%d ch, "
-          "failed sync after seek ?", mad->rate, mad->channels, rate,
-          nchannels);
-      /* we're conservative on stream changes. However, our *initial* caps
-       * might have been wrong as well - mad ain't perfect in syncing. So,
-       * we count caps changes and change if we pass a limit treshold (3). */
-      if (nchannels != mad->pending_channels || rate != mad->pending_rate) {
-        mad->times_pending = 0;
-        mad->pending_channels = nchannels;
-        mad->pending_rate = rate;
-      }
-      if (++mad->times_pending < 3)
-        return;
-    }
-
-    if (mad->stream.options & MAD_OPTION_HALFSAMPLERATE)
-      rate >>= 1;
-
-    /* we set the caps even when the pad is not connected so they
-     * can be gotten for streaminfo */
-    gst_audio_info_init (&info);
-    gst_audio_info_set_format (&info,
-        GST_AUDIO_FORMAT_S32, rate, nchannels, chan_pos[nchannels - 1]);
-
-    gst_audio_decoder_set_output_format (GST_AUDIO_DECODER (mad), &info);
-
-    mad->caps_set = TRUE;
-    mad->channels = nchannels;
-    mad->rate = rate;
-  }
-}
-
-static GstFlowReturn
-gst_mad_parse (GstAudioDecoder * dec, GstAdapter * adapter,
-    gint * _offset, gint * len)
-{
-  GstMad *mad;
-  GstFlowReturn ret = GST_FLOW_EOS;
-  gint av, size, offset;
-  const guint8 *data;
-  gboolean eos, sync;
-  guint8 *guard = NULL;
-
-  mad = GST_MAD (dec);
-
-  av = gst_adapter_available (adapter);
-  data = gst_adapter_map (adapter, av);
-
-  gst_audio_decoder_get_parse_state (dec, &sync, &eos);
-  GST_LOG_OBJECT (mad, "parse state sync %d, eos %d", sync, eos);
-
-  if (eos) {
-    /* This is one streaming hack right there.
-     * mad will not decode the last frame if it is not followed by
-     * a number of 0 bytes, due to some buffer overflow, which can
-     * not be fixed for reasons I did not inquire into, see
-     * http://www.mars.org/mailman/public/mad-dev/2001-May/000262.html
-     */
-    guard = g_malloc (av + MAD_BUFFER_GUARD);
-    /* let's be nice and not mess with baseclass state and keep hacks local */
-    memcpy (guard, data, av);
-    memset (guard + av, 0, MAD_BUFFER_GUARD);
-    GST_DEBUG_OBJECT (mad, "Added %u zero guard bytes in the adapter; "
-        "using fallback buffer of size %u",
-        MAD_BUFFER_GUARD, av + MAD_BUFFER_GUARD);
-    data = guard;
-    av = av + MAD_BUFFER_GUARD;
-  }
-
-  /* we basically let mad library do parsing,
-   * and translate that back to baseclass.
-   * if a frame is found (and also decoded), subsequent handle_frame
-   * only needs to synthesize it */
-
-  offset = 0;
-  size = 0;
-
-resume:
-  if (G_UNLIKELY (offset + MAD_BUFFER_GUARD > av))
-    goto exit;
-
-  GST_LOG_OBJECT (mad, "setup mad stream at offset %d (of av %d)", offset, av);
-  mad_stream_buffer (&mad->stream, data + offset, av - offset);
-  /* convey sync idea to mad */
-  mad->stream.sync = sync;
-  /* if we get back here, lost sync anyway */
-  sync = FALSE;
-
-  while (TRUE) {
-    GST_LOG_OBJECT (mad, "decoding the header now");
-    if (mad_header_decode (&mad->frame.header, &mad->stream) == -1) {
-      /* HACK it seems mad reports wrong error when it is trying to determine
-       * free bitrate and scanning for next header */
-      if (mad->stream.error == MAD_ERROR_LOSTSYNC) {
-        const guint8 *ptr = mad->stream.this_frame;
-        guint32 header;
-
-        if (ptr >= data && ptr < data + av) {
-          header = GST_READ_UINT32_BE (ptr);
-          /* looks like possible freeform header with not much data */
-          if (((header & 0xFFE00000) == 0xFFE00000) &&
-              (((header >> 12) & 0xF) == 0x0) && (av < 4096)) {
-            GST_DEBUG_OBJECT (mad, "overriding freeform LOST_SYNC to BUFLEN");
-            mad->stream.error = MAD_ERROR_BUFLEN;
-          }
-        }
-      }
-      if (mad->stream.error == MAD_ERROR_BUFLEN) {
-        GST_LOG_OBJECT (mad, "not enough data, getting more");
-        offset = mad->stream.next_frame - data;
-        break;
-      } else if (mad->stream.error == MAD_ERROR_LOSTSYNC) {
-        GST_LOG_OBJECT (mad, "lost sync");
-        continue;
-      } else {
-        /* probably some bogus header, basically also lost sync */
-        GST_DEBUG_OBJECT (mad, "mad_header_decode had an error: %s",
-            mad_stream_errorstr (&mad->stream));
-        continue;
-      }
-    }
-
-    /* could have a frame now, subsequent will confirm */
-    offset = mad->stream.this_frame - data;
-    size = mad->stream.next_frame - mad->stream.this_frame;
-    g_assert (size);
-
-    GST_LOG_OBJECT (mad, "parsing and decoding one frame now "
-        "(offset %d, size %d)", offset, size);
-    if (mad_frame_decode (&mad->frame, &mad->stream) == -1) {
-      GST_LOG_OBJECT (mad, "got error %d", mad->stream.error);
-
-      /* not enough data, need to wait for next buffer? */
-      if (mad->stream.error == MAD_ERROR_BUFLEN) {
-        /* not really expect this error at this stage anymore
-         * assume bogus frame and bad sync and move along a bit */
-        GST_WARNING_OBJECT (mad, "not enough data (unexpected), moving along");
-        offset++;
-        goto resume;
-      } else if (mad->stream.error == MAD_ERROR_BADDATAPTR) {
-        GST_DEBUG_OBJECT (mad, "bad data ptr, skipping presumed frame");
-        /* flush past presumed frame */
-        offset += size;
-        goto resume;
-      } else {
-        GST_WARNING_OBJECT (mad, "mad_frame_decode had an error: %s",
-            mad_stream_errorstr (&mad->stream));
-        if (!MAD_RECOVERABLE (mad->stream.error)) {
-          /* well, all may be well enough bytes later on ... */
-          GST_AUDIO_DECODER_ERROR (mad, 1, STREAM, DECODE, (NULL),
-              ("mad error: %s", mad_stream_errorstr (&mad->stream)), ret);
-        }
-        /* move along and try again */
-        offset++;
-        goto resume;
-      }
-      g_assert_not_reached ();
-    }
-
-    /* so decoded ok, got a frame now */
-    ret = GST_FLOW_OK;
-    break;
-  }
-
-exit:
-
-  gst_adapter_unmap (adapter);
-
-  *_offset = offset;
-  *len = size;
-
-  /* ensure that if we added some dummy guard bytes above, we don't claim
-     to have used them as they're unknown to the caller. */
-  if (eos) {
-    g_assert (av >= MAD_BUFFER_GUARD);
-    av -= MAD_BUFFER_GUARD;
-    if (*_offset > av)
-      *_offset = av;
-    if (*len > av)
-      *len = av;
-    g_assert (guard);
-    g_free (guard);
-  }
-
-  return ret;
-}
-
-static GstFlowReturn
-gst_mad_handle_frame (GstAudioDecoder * dec, GstBuffer * buffer)
-{
-  GstMad *mad;
-  GstFlowReturn ret = GST_FLOW_EOS;
-  GstBuffer *outbuffer;
-  guint nsamples;
-  GstMapInfo outmap;
-  gint32 *outdata;
-  mad_fixed_t const *left_ch, *right_ch;
-
-  mad = GST_MAD (dec);
-
-  /* no fancy draining */
-  if (G_UNLIKELY (!buffer))
-    return GST_FLOW_OK;
-
-  /* _parse prepared a frame */
-  nsamples = MAD_NSBSAMPLES (&mad->frame.header) *
-      (mad->stream.options & MAD_OPTION_HALFSAMPLERATE ? 16 : 32);
-  GST_LOG_OBJECT (mad, "mad frame with %d samples", nsamples);
-
-  /* arrange for initial caps before pushing data,
-   * and update later on if needed */
-  gst_mad_check_caps_reset (mad);
-
-  mad_synth_frame (&mad->synth, &mad->frame);
-  left_ch = mad->synth.pcm.samples[0];
-  right_ch = mad->synth.pcm.samples[1];
-
-  outbuffer = gst_buffer_new_and_alloc (nsamples * mad->channels * 4);
-
-  gst_buffer_map (outbuffer, &outmap, GST_MAP_WRITE);
-  outdata = (gint32 *) outmap.data;
-
-  /* output sample(s) in 16-bit signed native-endian PCM */
-  if (mad->channels == 1) {
-    gint count = nsamples;
-
-    while (count--) {
-      *outdata++ = scale (*left_ch++) & 0xffffffff;
-    }
-  } else {
-    gint count = nsamples;
-
-    while (count--) {
-      *outdata++ = scale (*left_ch++) & 0xffffffff;
-      *outdata++ = scale (*right_ch++) & 0xffffffff;
-    }
-  }
-
-  gst_buffer_unmap (outbuffer, &outmap);
-
-  ret = gst_audio_decoder_finish_frame (dec, outbuffer, 1);
-
-  return ret;
-}
-
-static void
-gst_mad_flush (GstAudioDecoder * dec, gboolean hard)
-{
-  GstMad *mad;
-
-  mad = GST_MAD (dec);
-  if (hard) {
-    mad_frame_mute (&mad->frame);
-    mad_synth_mute (&mad->synth);
-  }
-}
-
-static void
-gst_mad_set_property (GObject * object, guint prop_id,
-    const GValue * value, GParamSpec * pspec)
-{
-  GstMad *mad;
-
-  mad = GST_MAD (object);
-
-  switch (prop_id) {
-    case ARG_HALF:
-      mad->half = g_value_get_boolean (value);
-      break;
-    case ARG_IGNORE_CRC:
-      mad->ignore_crc = g_value_get_boolean (value);
-      break;
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-  }
-}
-
-static void
-gst_mad_get_property (GObject * object, guint prop_id,
-    GValue * value, GParamSpec * pspec)
-{
-  GstMad *mad;
-
-  mad = GST_MAD (object);
-
-  switch (prop_id) {
-    case ARG_HALF:
-      g_value_set_boolean (value, mad->half);
-      break;
-    case ARG_IGNORE_CRC:
-      g_value_set_boolean (value, mad->ignore_crc);
-      break;
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-  }
-}
-
-/* plugin initialisation */
-
-static gboolean
-plugin_init (GstPlugin * plugin)
-{
-  GST_DEBUG_CATEGORY_INIT (mad_debug, "mad", 0, "mad mp3 decoding");
-
-  /* FIXME 0.11: rename to something better like madmp3dec or madmpegaudiodec
-   * or so? */
-  return gst_element_register (plugin, "mad", GST_RANK_SECONDARY,
-      gst_mad_get_type ());
-}
-
-GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
-    GST_VERSION_MINOR,
-    mad,
-    "mp3 decoding based on the mad library",
-    plugin_init, VERSION, "GPL", GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN);
diff --git a/ext/mad/gstmad.h b/ext/mad/gstmad.h
deleted file mode 100644
index f3011c1..0000000
--- a/ext/mad/gstmad.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/* GStreamer
- * Copyright (C) 2003 Benjamin Otte <in7y118@public.uni-hamburg.de>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-
-#ifndef __GST_MAD_H__
-#define __GST_MAD_H__
-
-#include <gst/gst.h>
-#include <gst/tag/tag.h>
-#include <gst/audio/gstaudiodecoder.h>
-
-#include <mad.h>
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_MAD \
-  (gst_mad_get_type())
-#define GST_MAD(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_MAD,GstMad))
-#define GST_MAD_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_MAD,GstMadClass))
-#define GST_IS_MAD(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_MAD))
-#define GST_IS_MAD_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_MAD))
-
-
-typedef struct _GstMad GstMad;
-typedef struct _GstMadClass GstMadClass;
-
-struct _GstMad
-{
-  GstAudioDecoder element;
-
-  /* state */
-  struct mad_stream stream;
-  struct mad_frame frame;
-  struct mad_synth synth;
-
-  /* info */
-  struct mad_header header;
-
-  /* negotiated format */
-  gint rate, pending_rate;
-  gint channels, pending_channels;
-  gint times_pending;
-  gboolean caps_set;            /* used to keep track of whether to change/update caps */
-
-  gboolean eos;
-
-  /* properties */
-  gboolean half;
-  gboolean ignore_crc;
-};
-
-struct _GstMadClass
-{
-  GstAudioDecoderClass parent_class;
-};
-
-GType                   gst_mad_get_type (void);
-gboolean                gst_mad_register (GstPlugin * plugin);
-
-G_END_DECLS
-
-#endif /* __GST_MAD_H__ */
diff --git a/ext/meson.build b/ext/meson.build
new file mode 100644
index 0000000..6c5a176
--- /dev/null
+++ b/ext/meson.build
@@ -0,0 +1,11 @@
+subdir('a52dec')
+subdir('amrnb')
+subdir('amrwbdec')
+subdir('cdio')
+subdir('dvdread')
+subdir('lame')
+subdir('mpeg2dec')
+subdir('mpg123')
+#subdir('sidplay') # FIXME
+subdir('twolame')
+subdir('x264')
diff --git a/ext/mpeg2dec/Makefile.in b/ext/mpeg2dec/Makefile.in
index 9c4b63c..0ec5f2c 100644
--- a/ext/mpeg2dec/Makefile.in
+++ b/ext/mpeg2dec/Makefile.in
@@ -372,8 +372,6 @@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
 LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-MAD_CFLAGS = @MAD_CFLAGS@
-MAD_LIBS = @MAD_LIBS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
diff --git a/ext/mpeg2dec/gstmpeg2dec.c b/ext/mpeg2dec/gstmpeg2dec.c
index 137c7ea..48f294e 100644
--- a/ext/mpeg2dec/gstmpeg2dec.c
+++ b/ext/mpeg2dec/gstmpeg2dec.c
@@ -807,7 +807,7 @@
 
   /* Mpeg2dec has 2 frame latency to produce a picture and 1 frame latency in
    * it's parser */
-  latency = gst_util_uint64_scale (3, vinfo->fps_d, vinfo->fps_n);
+  latency = gst_util_uint64_scale (3 * GST_SECOND, vinfo->fps_d, vinfo->fps_n);
   gst_video_decoder_set_latency (GST_VIDEO_DECODER (mpeg2dec), latency,
       latency);
 
diff --git a/ext/mpeg2dec/meson.build b/ext/mpeg2dec/meson.build
new file mode 100644
index 0000000..d0d7d5c
--- /dev/null
+++ b/ext/mpeg2dec/meson.build
@@ -0,0 +1,12 @@
+mpeg2_dep = dependency('libmpeg2', version : '>= 0.4.0', required : false)
+
+if mpeg2_dep.found()
+  mpeg2dec = library('gstmpeg2dec',
+    ['gstmpeg2dec.c'],
+    c_args : ugly_args,
+    include_directories : [configinc],
+    dependencies : [gstvideo_dep, mpeg2_dep],
+    install : true,
+    install_dir : plugins_install_dir,
+  )
+endif
diff --git a/ext/mpg123/Makefile.in b/ext/mpg123/Makefile.in
index b9e346d..85cec8e 100644
--- a/ext/mpg123/Makefile.in
+++ b/ext/mpg123/Makefile.in
@@ -373,8 +373,6 @@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
 LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-MAD_CFLAGS = @MAD_CFLAGS@
-MAD_LIBS = @MAD_LIBS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
diff --git a/ext/mpg123/meson.build b/ext/mpg123/meson.build
new file mode 100644
index 0000000..a575449
--- /dev/null
+++ b/ext/mpg123/meson.build
@@ -0,0 +1,16 @@
+mpg123_sources = [
+  'gstmpg123audiodec.c',
+]
+
+mpg123_dep = dependency('libmpg123', version : '>= 1.3', required : false)
+
+if mpg123_dep.found()
+  gstmpg123 = library('gstmpg123',
+    mpg123_sources,
+    c_args : ugly_args,
+    include_directories : [configinc],
+    dependencies : [gstaudio_dep, mpg123_dep],
+    install : true,
+    install_dir : plugins_install_dir,
+  )
+endif
diff --git a/ext/sidplay/Makefile.in b/ext/sidplay/Makefile.in
index 064a5dd..f92c5b6 100644
--- a/ext/sidplay/Makefile.in
+++ b/ext/sidplay/Makefile.in
@@ -373,8 +373,6 @@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
 LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-MAD_CFLAGS = @MAD_CFLAGS@
-MAD_LIBS = @MAD_LIBS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
diff --git a/ext/twolame/Makefile.in b/ext/twolame/Makefile.in
index d88d5dd..f9f25b6 100644
--- a/ext/twolame/Makefile.in
+++ b/ext/twolame/Makefile.in
@@ -372,8 +372,6 @@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
 LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-MAD_CFLAGS = @MAD_CFLAGS@
-MAD_LIBS = @MAD_LIBS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
diff --git a/ext/twolame/meson.build b/ext/twolame/meson.build
new file mode 100644
index 0000000..029a00e
--- /dev/null
+++ b/ext/twolame/meson.build
@@ -0,0 +1,12 @@
+twolame_dep = dependency('twolame', version : '>= 0.3.10', required : false)
+
+if twolame_dep.found()
+  twolame = library('gsttwolame',
+    ['gsttwolamemp2enc.c'],
+    c_args : ugly_args,
+    include_directories : [configinc, libsinc],
+    dependencies : [gstaudio_dep, twolame_dep],
+    install : true,
+    install_dir : plugins_install_dir,
+  )
+endif
diff --git a/ext/x264/GstX264Enc.prs b/ext/x264/GstX264Enc.prs
index 84c76a9..027248f 100644
--- a/ext/x264/GstX264Enc.prs
+++ b/ext/x264/GstX264Enc.prs
@@ -42,3 +42,10 @@
 subme=6
 ref=3
 threads=0
+
+[Profile YouTube]
+_meta/comment=YouTube recommended settings (https://support.google.com/youtube/answer/1722171)
+pass=qual
+cabac=true
+dct8x8=true
+bframes=2
diff --git a/ext/x264/Makefile.am b/ext/x264/Makefile.am
index 4b290ab..0866d64 100644
--- a/ext/x264/Makefile.am
+++ b/ext/x264/Makefile.am
@@ -10,7 +10,8 @@
 	-lgstvideo-$(GST_API_VERSION) \
 	-lgstpbutils-$(GST_API_VERSION) \
 	$(GST_LIBS) \
-	$(X264_LIBS)
+	$(X264_LIBS) \
+	$(GMODULE_NO_EXPORT_LIBS)
 libgstx264_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
 libgstx264_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
 
diff --git a/ext/x264/Makefile.in b/ext/x264/Makefile.in
index f294f90..465dec0 100644
--- a/ext/x264/Makefile.in
+++ b/ext/x264/Makefile.in
@@ -163,7 +163,8 @@
 LTLIBRARIES = $(plugin_LTLIBRARIES)
 am__DEPENDENCIES_1 =
 libgstx264_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_1)
 am_libgstx264_la_OBJECTS = libgstx264_la-gstx264enc.lo
 libgstx264_la_OBJECTS = $(am_libgstx264_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
@@ -374,8 +375,6 @@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
 LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-MAD_CFLAGS = @MAD_CFLAGS@
-MAD_LIBS = @MAD_LIBS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -516,7 +515,8 @@
 	-lgstvideo-$(GST_API_VERSION) \
 	-lgstpbutils-$(GST_API_VERSION) \
 	$(GST_LIBS) \
-	$(X264_LIBS)
+	$(X264_LIBS) \
+	$(GMODULE_NO_EXPORT_LIBS)
 
 libgstx264_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
 libgstx264_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
diff --git a/ext/x264/gstx264enc.c b/ext/x264/gstx264enc.c
index f053744..49d99f1 100644
--- a/ext/x264/gstx264enc.c
+++ b/ext/x264/gstx264enc.c
@@ -2,6 +2,7 @@
  * Copyright (C) 2005 Michal Benes <michal.benes@itonis.tv>
  * Copyright (C) 2005 Josef Zlomek <josef.zlomek@itonis.tv>
  * Copyright (C) 2008 Mark Nauwelaerts <mnauw@users.sf.net>
+ * Copyright (C) 2016 Sebastian Dröge <sebastian@centricular.com>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -107,10 +108,233 @@
 
 #include <string.h>
 #include <stdlib.h>
+#include <gmodule.h>
 
 GST_DEBUG_CATEGORY_STATIC (x264_enc_debug);
 #define GST_CAT_DEFAULT x264_enc_debug
 
+struct _GstX264EncVTable
+{
+  GModule *module;
+
+  const int *x264_bit_depth;
+  const int *x264_chroma_format;
+  void (*x264_encoder_close) (x264_t *);
+  int (*x264_encoder_delayed_frames) (x264_t *);
+  int (*x264_encoder_encode) (x264_t *, x264_nal_t ** pp_nal, int *pi_nal,
+      x264_picture_t * pic_in, x264_picture_t * pic_out);
+  int (*x264_encoder_headers) (x264_t *, x264_nal_t ** pp_nal, int *pi_nal);
+  void (*x264_encoder_intra_refresh) (x264_t *);
+  int (*x264_encoder_maximum_delayed_frames) (x264_t *);
+  x264_t *(*x264_encoder_open) (x264_param_t *);
+  int (*x264_encoder_reconfig) (x264_t *, x264_param_t *);
+  const x264_level_t (*x264_levels)[];
+  void (*x264_param_apply_fastfirstpass) (x264_param_t *);
+  int (*x264_param_apply_profile) (x264_param_t *, const char *);
+  void (*x264_param_default) (x264_param_t *);
+  int (*x264_param_default_preset) (x264_param_t *, const char *preset,
+      const char *tune);
+  int (*x264_param_parse) (x264_param_t *, const char *name, const char *value);
+};
+
+static GstX264EncVTable default_vtable;
+
+static GstX264EncVTable *vtable_8bit = NULL, *vtable_10bit = NULL;
+static GstCaps *supported_sinkcaps = NULL;
+
+#define LOAD_SYMBOL(name) G_STMT_START { \
+  if (!g_module_symbol (module, #name, (gpointer *) &vtable->name)) { \
+    GST_ERROR ("Failed to load '" #name "' from '%s'", filename); \
+    goto error; \
+  } \
+} G_STMT_END;
+
+#ifdef HAVE_X264_ADDITIONAL_LIBRARIES
+static GstX264EncVTable *
+load_x264 (const gchar * filename)
+{
+  GModule *module;
+  GstX264EncVTable *vtable;
+
+  module = g_module_open (filename, G_MODULE_BIND_LOCAL);
+  if (!module) {
+    GST_ERROR ("Failed to load '%s'", filename);
+    return NULL;
+  }
+
+  vtable = g_new0 (GstX264EncVTable, 1);
+  vtable->module = module;
+
+  if (!g_module_symbol (module, G_STRINGIFY (x264_encoder_open),
+          (gpointer *) & vtable->x264_encoder_open)) {
+    GST_ERROR ("Failed to load '" G_STRINGIFY (x264_encoder_open)
+        "' from '%s'. Incompatible version?", filename);
+    goto error;
+  }
+
+  LOAD_SYMBOL (x264_bit_depth);
+  LOAD_SYMBOL (x264_chroma_format);
+  LOAD_SYMBOL (x264_encoder_close);
+  LOAD_SYMBOL (x264_encoder_delayed_frames);
+  LOAD_SYMBOL (x264_encoder_encode);
+  LOAD_SYMBOL (x264_encoder_headers);
+  LOAD_SYMBOL (x264_encoder_intra_refresh);
+  LOAD_SYMBOL (x264_encoder_maximum_delayed_frames);
+  LOAD_SYMBOL (x264_encoder_reconfig);
+  LOAD_SYMBOL (x264_levels);
+  LOAD_SYMBOL (x264_param_apply_fastfirstpass);
+  LOAD_SYMBOL (x264_param_apply_profile);
+  LOAD_SYMBOL (x264_param_default);
+  LOAD_SYMBOL (x264_param_default_preset);
+  LOAD_SYMBOL (x264_param_parse);
+
+  return vtable;
+
+error:
+  g_module_close (vtable->module);
+  g_free (vtable);
+  return NULL;
+}
+
+static void
+unload_x264 (GstX264EncVTable * vtable)
+{
+  if (vtable->module) {
+    g_module_close (vtable->module);
+    g_free (vtable);
+  }
+}
+#endif
+
+#undef LOAD_SYMBOL
+
+static gboolean
+gst_x264_enc_add_x264_chroma_format (GstStructure * s,
+    gboolean allow_420, gboolean allow_422, gboolean allow_444)
+{
+  GValue fmts = G_VALUE_INIT;
+  GValue fmt = G_VALUE_INIT;
+  gboolean ret = FALSE;
+
+  g_value_init (&fmts, GST_TYPE_LIST);
+  g_value_init (&fmt, G_TYPE_STRING);
+
+  if (vtable_8bit) {
+    gint chroma_format = *vtable_8bit->x264_chroma_format;
+
+    GST_INFO ("8-bit depth supported");
+
+    if ((chroma_format == 0 || chroma_format == X264_CSP_I444) && allow_444) {
+      g_value_set_string (&fmt, "Y444");
+      gst_value_list_append_value (&fmts, &fmt);
+    }
+
+    if ((chroma_format == 0 || chroma_format == X264_CSP_I422) && allow_422) {
+      g_value_set_string (&fmt, "Y42B");
+      gst_value_list_append_value (&fmts, &fmt);
+    }
+
+    if ((chroma_format == 0 || chroma_format == X264_CSP_I420) && allow_420) {
+      g_value_set_string (&fmt, "I420");
+      gst_value_list_append_value (&fmts, &fmt);
+      g_value_set_string (&fmt, "YV12");
+      gst_value_list_append_value (&fmts, &fmt);
+      g_value_set_string (&fmt, "NV12");
+      gst_value_list_append_value (&fmts, &fmt);
+    }
+  }
+
+  if (vtable_10bit) {
+    gint chroma_format = *vtable_10bit->x264_chroma_format;
+
+    GST_INFO ("10-bit depth supported");
+
+    if ((chroma_format == 0 || chroma_format == X264_CSP_I444) && allow_444) {
+      if (G_BYTE_ORDER == G_LITTLE_ENDIAN)
+        g_value_set_string (&fmt, "Y444_10LE");
+      else
+        g_value_set_string (&fmt, "Y444_10BE");
+
+      gst_value_list_append_value (&fmts, &fmt);
+    }
+
+    if ((chroma_format == 0 || chroma_format == X264_CSP_I422) && allow_422) {
+      if (G_BYTE_ORDER == G_LITTLE_ENDIAN)
+        g_value_set_string (&fmt, "I422_10LE");
+      else
+        g_value_set_string (&fmt, "I422_10BE");
+
+      gst_value_list_append_value (&fmts, &fmt);
+    }
+
+    if ((chroma_format == 0 || chroma_format == X264_CSP_I420) && allow_420) {
+      if (G_BYTE_ORDER == G_LITTLE_ENDIAN)
+        g_value_set_string (&fmt, "I420_10LE");
+      else
+        g_value_set_string (&fmt, "I420_10BE");
+
+      gst_value_list_append_value (&fmts, &fmt);
+    }
+  }
+
+  if (gst_value_list_get_size (&fmts) != 0) {
+    gst_structure_take_value (s, "format", &fmts);
+    ret = TRUE;
+  } else {
+    g_value_unset (&fmts);
+  }
+
+  g_value_unset (&fmt);
+
+  return ret;
+}
+
+static gboolean
+load_x264_libraries (void)
+{
+  if (*default_vtable.x264_bit_depth == 8) {
+    vtable_8bit = &default_vtable;
+  } else if (*default_vtable.x264_bit_depth == 10) {
+    vtable_10bit = &default_vtable;
+  }
+#ifdef HAVE_X264_ADDITIONAL_LIBRARIES
+  {
+    gchar **libraries = g_strsplit (HAVE_X264_ADDITIONAL_LIBRARIES, ":", -1);
+    gchar **p = libraries;
+
+    while (*p && (!vtable_8bit || !vtable_10bit)) {
+      GstX264EncVTable *vtable = load_x264 (*p);
+
+      if (vtable) {
+        if (!vtable_8bit && *vtable->x264_bit_depth == 8) {
+          vtable_8bit = vtable;
+        } else if (!vtable_10bit && *vtable->x264_bit_depth == 10) {
+          vtable_10bit = vtable;
+        } else {
+          unload_x264 (vtable);
+        }
+      }
+
+      p++;
+    }
+    g_strfreev (libraries);
+  }
+#endif
+
+  if (!vtable_8bit && !vtable_10bit)
+    return FALSE;
+
+  supported_sinkcaps = gst_caps_new_simple ("video/x-raw",
+      "framerate", GST_TYPE_FRACTION_RANGE, 0, 1, G_MAXINT, 1,
+      "width", GST_TYPE_INT_RANGE, 16, G_MAXINT,
+      "height", GST_TYPE_INT_RANGE, 16, G_MAXINT, NULL);
+
+  gst_x264_enc_add_x264_chroma_format (gst_caps_get_structure
+      (supported_sinkcaps, 0), TRUE, TRUE, TRUE);
+
+  return TRUE;
+}
+
 enum
 {
   ARG_0,
@@ -441,21 +665,6 @@
   return -1;
 }
 
-#if G_BYTE_ORDER == G_LITTLE_ENDIAN
-#define FORMATS "I420, YV12, Y42B, Y444, NV12, I420_10LE, I422_10LE, Y444_10LE"
-#else
-#define FORMATS "I420, YV12, Y42B, Y444, NV12, I420_10BE, I422_10BE, Y444_10BE"
-#endif
-
-static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink",
-    GST_PAD_SINK,
-    GST_PAD_ALWAYS,
-    GST_STATIC_CAPS ("video/x-raw, "
-        "format = (string) { " FORMATS " }, "
-        "framerate = (fraction) [0, MAX], "
-        "width = (int) [ 16, MAX ], " "height = (int) [ 16, MAX ]")
-    );
-
 static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
     GST_PAD_SRC,
     GST_PAD_ALWAYS,
@@ -523,108 +732,6 @@
 }
 
 static void
-set_value (GValue * val, gint count, ...)
-{
-  const gchar *fmt = NULL;
-  GValue sval = G_VALUE_INIT;
-  va_list ap;
-  gint i;
-
-  g_value_init (&sval, G_TYPE_STRING);
-
-  if (count > 1)
-    g_value_init (val, GST_TYPE_LIST);
-
-  va_start (ap, count);
-  for (i = 0; i < count; i++) {
-    fmt = va_arg (ap, const gchar *);
-    g_value_set_string (&sval, fmt);
-    if (count > 1) {
-      gst_value_list_append_value (val, &sval);
-    }
-  }
-  va_end (ap);
-
-  if (count == 1)
-    *val = sval;
-  else
-    g_value_unset (&sval);
-}
-
-static void
-gst_x264_enc_add_x264_chroma_format (GstStructure * s,
-    int x264_chroma_format_local)
-{
-  GValue fmt = G_VALUE_INIT;
-
-  if (x264_bit_depth == 8) {
-    GST_INFO ("This x264 build supports 8-bit depth");
-    if (x264_chroma_format_local == 0) {
-      set_value (&fmt, 5, "I420", "YV12", "Y42B", "Y444", "NV12");
-    } else if (x264_chroma_format_local == X264_CSP_I420) {
-      set_value (&fmt, 3, "I420", "YV12", "NV12");
-    } else if (x264_chroma_format_local == X264_CSP_I422) {
-      set_value (&fmt, 1, "Y42B");
-    } else if (x264_chroma_format_local == X264_CSP_I444) {
-      set_value (&fmt, 1, "Y444");
-    } else {
-      GST_ERROR ("Unsupported chroma format %d", x264_chroma_format_local);
-    }
-  } else if (x264_bit_depth == 10) {
-    GST_INFO ("This x264 build supports 10-bit depth");
-
-    if (G_BYTE_ORDER == G_LITTLE_ENDIAN) {
-      if (x264_chroma_format_local == 0) {
-        set_value (&fmt, 3, "I420_10LE", "I422_10LE", "Y444_10LE");
-      } else if (x264_chroma_format_local == X264_CSP_I420) {
-        set_value (&fmt, 1, "I420_10LE");
-      } else if (x264_chroma_format_local == X264_CSP_I422) {
-        set_value (&fmt, 1, "I422_10LE");
-      } else if (x264_chroma_format_local == X264_CSP_I444) {
-        set_value (&fmt, 1, "Y444_10LE");
-      } else {
-        GST_ERROR ("Unsupported chroma format %d", x264_chroma_format_local);
-      }
-    } else {
-      if (x264_chroma_format_local == 0) {
-        set_value (&fmt, 3, "I420_10BE", "I422_10BE", "Y444_10BE");
-      } else if (x264_chroma_format_local == X264_CSP_I420) {
-        set_value (&fmt, 1, "I420_10BE");
-      } else if (x264_chroma_format_local == X264_CSP_I422) {
-        set_value (&fmt, 1, "I422_10BE");
-      } else if (x264_chroma_format_local == X264_CSP_I444) {
-        set_value (&fmt, 1, "Y444_10BE");
-      } else {
-        GST_ERROR ("Unsupported chroma format %d", x264_chroma_format_local);
-      }
-    }
-  } else {
-    GST_ERROR ("Unsupported bit depth %d, we only support 8-bit and 10-bit",
-        x264_bit_depth);
-  }
-
-  if (G_VALUE_TYPE (&fmt) != G_TYPE_INVALID)
-    gst_structure_take_value (s, "format", &fmt);
-}
-
-static GstCaps *
-gst_x264_enc_get_supported_input_caps (void)
-{
-  GstCaps *caps;
-
-  caps = gst_caps_new_simple ("video/x-raw",
-      "framerate", GST_TYPE_FRACTION_RANGE, 0, 1, G_MAXINT, 1,
-      "width", GST_TYPE_INT_RANGE, 16, G_MAXINT,
-      "height", GST_TYPE_INT_RANGE, 16, G_MAXINT, NULL);
-
-  gst_x264_enc_add_x264_chroma_format (gst_caps_get_structure (caps, 0),
-      x264_chroma_format);
-
-  GST_DEBUG ("returning %" GST_PTR_FORMAT, caps);
-  return caps;
-}
-
-static void
 check_formats (const gchar * str, gboolean * has_420, gboolean * has_422,
     gboolean * has_444)
 {
@@ -646,13 +753,12 @@
   GstCaps *filter_caps, *fcaps;
   gint i, j, k;
 
-  supported_incaps = gst_x264_enc_get_supported_input_caps ();
+  supported_incaps =
+      gst_pad_get_pad_template_caps (GST_VIDEO_ENCODER_SINK_PAD (enc));
 
   /* Allow downstream to specify width/height/framerate/PAR constraints
    * and forward them upstream for video converters to handle
    */
-  if (!supported_incaps)
-    supported_incaps = gst_pad_get_pad_template_caps (enc->sinkpad);
   allowed = gst_pad_get_allowed_caps (enc->srcpad);
 
   if (!allowed || gst_caps_is_empty (allowed) || gst_caps_is_any (allowed)) {
@@ -684,6 +790,7 @@
         gst_structure_set_value (s, "framerate", val);
       if ((val = gst_structure_get_value (allowed_s, "pixel-aspect-ratio")))
         gst_structure_set_value (s, "pixel-aspect-ratio", val);
+
       if ((val = gst_structure_get_value (allowed_s, "profile"))) {
         gboolean has_420 = FALSE;
         gboolean has_422 = FALSE;
@@ -702,14 +809,7 @@
           }
         }
 
-        if (has_444 && has_422 && has_420)
-          gst_x264_enc_add_x264_chroma_format (s, 0);
-        else if (has_444)
-          gst_x264_enc_add_x264_chroma_format (s, X264_CSP_I444);
-        else if (has_422)
-          gst_x264_enc_add_x264_chroma_format (s, X264_CSP_I422);
-        else if (has_420)
-          gst_x264_enc_add_x264_chroma_format (s, X264_CSP_I420);
+        gst_x264_enc_add_x264_chroma_format (s, has_420, has_422, has_444);
       }
 
       filter_caps = gst_caps_merge_structure (filter_caps, s);
@@ -748,10 +848,7 @@
     case GST_QUERY_ACCEPT_CAPS:{
       GstCaps *acceptable, *caps;
 
-      acceptable = gst_x264_enc_get_supported_input_caps ();
-      if (!acceptable) {
-        acceptable = gst_pad_get_pad_template_caps (pad);
-      }
+      acceptable = gst_pad_get_pad_template_caps (pad);
 
       gst_query_parse_accept_caps (query, &caps);
 
@@ -776,6 +873,7 @@
   GstElementClass *element_class;
   GstVideoEncoderClass *gstencoder_class;
   const gchar *partitions = NULL;
+  GstPadTemplate *sink_templ;
 
   x264enc_defaults = g_string_new ("");
 
@@ -1036,7 +1134,10 @@
       "Josef Zlomek <josef.zlomek@itonis.tv>, "
       "Mark Nauwelaerts <mnauw@users.sf.net>");
 
-  gst_element_class_add_static_pad_template (element_class, &sink_factory);
+  sink_templ = gst_pad_template_new ("sink",
+      GST_PAD_SINK, GST_PAD_ALWAYS, supported_sinkcaps);
+
+  gst_element_class_add_pad_template (element_class, sink_templ);
   gst_element_class_add_static_pad_template (element_class, &src_factory);
 }
 
@@ -1120,13 +1221,6 @@
   encoder->psy_tune = ARG_PSY_TUNE_DEFAULT;
   encoder->tune = ARG_TUNE_DEFAULT;
   encoder->frame_packing = ARG_FRAME_PACKING_DEFAULT;
-
-  x264_param_default (&encoder->x264param);
-
-  /* log callback setup; part of parameters */
-  encoder->x264param.pf_log = gst_x264_enc_log_callback;
-  encoder->x264param.p_log_private = encoder;
-  encoder->x264param.i_log_level = X264_LOG_DEBUG;
 }
 
 typedef struct
@@ -1288,7 +1382,8 @@
     GStrv key_val = g_strsplit (kvpairs[i], "=", 2);
 
     parse_result =
-        x264_param_parse (&encoder->x264param, key_val[0], key_val[1]);
+        encoder->vtable->x264_param_parse (&encoder->x264param, key_val[0],
+        key_val[1]);
 
     if (parse_result == X264_PARAM_BAD_NAME) {
       GST_ERROR_OBJECT (encoder, "Bad name for option %s=%s",
@@ -1376,13 +1471,26 @@
 
   GST_OBJECT_LOCK (encoder);
 
+  if (GST_VIDEO_INFO_COMP_DEPTH (info, 0) == 8)
+    encoder->vtable = vtable_8bit;
+  else if (GST_VIDEO_INFO_COMP_DEPTH (info, 0) == 10)
+    encoder->vtable = vtable_10bit;
+
+  g_assert (encoder->vtable != NULL);
+
+  encoder->vtable->x264_param_default (&encoder->x264param);
+  /* log callback setup; part of parameters */
+  encoder->x264param.pf_log = gst_x264_enc_log_callback;
+  encoder->x264param.p_log_private = encoder;
+  encoder->x264param.i_log_level = X264_LOG_DEBUG;
+
   gst_x264_enc_build_tunings_string (encoder);
 
   /* set x264 parameters and use preset/tuning if present */
   GST_DEBUG_OBJECT (encoder, "Applying defaults with preset %s, tunings %s",
       encoder->speed_preset ? x264_preset_names[encoder->speed_preset - 1] : "",
       encoder->tunings && encoder->tunings->len ? encoder->tunings->str : "");
-  x264_param_default_preset (&encoder->x264param,
+  encoder->vtable->x264_param_default_preset (&encoder->x264param,
       encoder->speed_preset ? x264_preset_names[encoder->speed_preset -
           1] : NULL, encoder->tunings
       && encoder->tunings->len ? encoder->tunings->str : NULL);
@@ -1618,7 +1726,7 @@
     case 1:
       encoder->x264param.rc.b_stat_read = 0;
       encoder->x264param.rc.b_stat_write = 1;
-      x264_param_apply_fastfirstpass (&encoder->x264param);
+      encoder->vtable->x264_param_apply_fastfirstpass (&encoder->x264param);
       encoder->x264param.i_frame_reference = 1;
       encoder->x264param.analyse.b_transform_8x8 = 0;
       encoder->x264param.analyse.inter = 0;
@@ -1639,7 +1747,8 @@
   }
 
   if (encoder->peer_profile) {
-    if (x264_param_apply_profile (&encoder->x264param, encoder->peer_profile))
+    if (encoder->vtable->x264_param_apply_profile (&encoder->x264param,
+            encoder->peer_profile))
       GST_WARNING_OBJECT (encoder, "Bad downstream profile name: %s",
           encoder->peer_profile);
   }
@@ -1649,26 +1758,76 @@
     encoder->x264param.i_keyint_max = encoder->x264param.i_keyint_min = 1;
 
   /* Enforce level limits if they were in the caps */
-  if (encoder->peer_level) {
-    encoder->x264param.i_level_idc = encoder->peer_level->level_idc;
+  if (encoder->peer_level_idc != -1) {
+    gint i;
+    const x264_level_t *peer_level = NULL;
+
+    for (i = 0; (*encoder->vtable->x264_levels)[i].level_idc; i++) {
+      if (encoder->peer_level_idc ==
+          (*encoder->vtable->x264_levels)[i].level_idc) {
+        int mb_width = (info->width + 15) / 16;
+        int mb_height = (info->height + 15) / 16;
+        int mbs = mb_width * mb_height;
+
+        if ((*encoder->vtable->x264_levels)[i].frame_size < mbs ||
+            (*encoder->vtable->x264_levels)[i].frame_size * 8 <
+            mb_width * mb_width
+            || (*encoder->vtable->x264_levels)[i].frame_size * 8 <
+            mb_height * mb_height) {
+          GST_WARNING_OBJECT (encoder,
+              "Frame size larger than level %d allows",
+              encoder->peer_level_idc);
+          break;
+        }
+
+        if (info->fps_d && (*encoder->vtable->x264_levels)[i].mbps
+            < (gint64) mbs * info->fps_n / info->fps_d) {
+          GST_WARNING_OBJECT (encoder,
+              "Macroblock rate higher than level %d allows",
+              encoder->peer_level_idc);
+          break;
+        }
+
+        peer_level = &(*encoder->vtable->x264_levels)[i];
+        break;
+      }
+    }
+
+    if (!peer_level)
+      goto unlock_and_return;
+
+    encoder->x264param.i_level_idc = peer_level->level_idc;
 
     encoder->x264param.rc.i_bitrate = MIN (encoder->x264param.rc.i_bitrate,
-        encoder->peer_level->bitrate);
+        peer_level->bitrate);
     encoder->x264param.rc.i_vbv_max_bitrate =
-        MIN (encoder->x264param.rc.i_vbv_max_bitrate,
-        encoder->peer_level->bitrate);
+        MIN (encoder->x264param.rc.i_vbv_max_bitrate, peer_level->bitrate);
     encoder->x264param.rc.i_vbv_buffer_size =
-        MIN (encoder->x264param.rc.i_vbv_buffer_size, encoder->peer_level->cpb);
+        MIN (encoder->x264param.rc.i_vbv_buffer_size, peer_level->cpb);
     encoder->x264param.analyse.i_mv_range =
-        MIN (encoder->x264param.analyse.i_mv_range,
-        encoder->peer_level->mv_range);
+        MIN (encoder->x264param.analyse.i_mv_range, peer_level->mv_range);
 
-    if (encoder->peer_level->frame_only) {
+    if (peer_level->frame_only) {
       encoder->x264param.b_interlaced = FALSE;
       encoder->x264param.b_fake_interlaced = FALSE;
     }
   }
 
+  if (GST_VIDEO_INFO_IS_INTERLACED (info)) {
+    encoder->x264param.b_interlaced = TRUE;
+    if (GST_VIDEO_INFO_INTERLACE_MODE (info) == GST_VIDEO_INTERLACE_MODE_MIXED) {
+      encoder->x264param.b_pic_struct = TRUE;
+    }
+    if (GST_VIDEO_INFO_FIELD_ORDER (info) ==
+        GST_VIDEO_FIELD_ORDER_TOP_FIELD_FIRST) {
+      encoder->x264param.b_tff = TRUE;
+    } else {
+      encoder->x264param.b_tff = FALSE;
+    }
+  } else {
+    encoder->x264param.b_interlaced = FALSE;
+  }
+
   /* Set 3D frame packing */
   if (encoder->frame_packing != GST_VIDEO_MULTIVIEW_MODE_NONE)
     encoder->x264param.i_frame_packing = encoder->frame_packing;
@@ -1684,7 +1843,7 @@
 
   GST_OBJECT_UNLOCK (encoder);
 
-  encoder->x264enc = x264_encoder_open (&encoder->x264param);
+  encoder->x264enc = encoder->vtable->x264_encoder_open (&encoder->x264param);
   if (!encoder->x264enc) {
     GST_ELEMENT_ERROR (encoder, STREAM, ENCODE,
         ("Can not initialize x264 encoder."), (NULL));
@@ -1707,9 +1866,10 @@
 gst_x264_enc_close_encoder (GstX264Enc * encoder)
 {
   if (encoder->x264enc != NULL) {
-    x264_encoder_close (encoder->x264enc);
+    encoder->vtable->x264_encoder_close (encoder->x264enc);
     encoder->x264enc = NULL;
   }
+  encoder->vtable = NULL;
 }
 
 static gboolean
@@ -1726,7 +1886,8 @@
   GstStructure *s2;
   const gchar *allowed_profile;
 
-  header_return = x264_encoder_headers (encoder->x264enc, &nal, &i_nal);
+  header_return =
+      encoder->vtable->x264_encoder_headers (encoder->x264enc, &nal, &i_nal);
   if (header_return < 0) {
     GST_ELEMENT_ERROR (encoder, STREAM, ENCODE, ("Encode x264 header failed."),
         ("x264_encoder_headers return code=%d", header_return));
@@ -1812,7 +1973,8 @@
 
   /* Create avcC header. */
 
-  header_return = x264_encoder_headers (encoder->x264enc, &nal, &i_nal);
+  header_return =
+      encoder->vtable->x264_encoder_headers (encoder->x264enc, &nal, &i_nal);
   if (header_return < 0) {
     GST_ELEMENT_ERROR (encoder, STREAM, ENCODE, ("Encode x264 header failed."),
         ("x264_encoder_headers return code=%d", header_return));
@@ -1974,7 +2136,8 @@
   gint max_delayed_frames;
   GstClockTime latency;
 
-  max_delayed_frames = x264_encoder_maximum_delayed_frames (encoder->x264enc);
+  max_delayed_frames =
+      encoder->vtable->x264_encoder_maximum_delayed_frames (encoder->x264enc);
 
   if (info->fps_n) {
     latency = gst_util_uint64_scale_ceil (GST_SECOND * info->fps_d,
@@ -2002,7 +2165,6 @@
   GstVideoInfo *info = &state->info;
   GstCaps *template_caps;
   GstCaps *allowed_caps = NULL;
-  gboolean level_ok = TRUE;
 
   /* If the encoder is initialized, do not reinitialize it again if not
    * necessary */
@@ -2030,7 +2192,7 @@
 
   encoder->peer_profile = NULL;
   encoder->peer_intra_profile = FALSE;
-  encoder->peer_level = NULL;
+  encoder->peer_level_idc = -1;
 
   template_caps = gst_static_pad_template_get_caps (&src_factory);
   allowed_caps = gst_pad_get_allowed_caps (GST_VIDEO_ENCODER_SRC_PAD (encoder));
@@ -2086,39 +2248,7 @@
 
     level = gst_structure_get_string (s, "level");
     if (level) {
-      int level_idc = gst_codec_utils_h264_get_level_idc (level);
-
-      if (level_idc) {
-        gint i;
-
-        for (i = 0; x264_levels[i].level_idc; i++) {
-          if (level_idc == x264_levels[i].level_idc) {
-            int mb_width = (info->width + 15) / 16;
-            int mb_height = (info->height + 15) / 16;
-            int mbs = mb_width * mb_height;
-
-            if (x264_levels[i].frame_size < mbs ||
-                x264_levels[i].frame_size * 8 < mb_width * mb_width ||
-                x264_levels[i].frame_size * 8 < mb_height * mb_height) {
-              GST_WARNING_OBJECT (encoder,
-                  "Frame size larger than level %s allows", level);
-              level_ok = FALSE;
-              break;
-            }
-
-            if (info->fps_d && x264_levels[i].mbps
-                < (gint64) mbs * info->fps_n / info->fps_d) {
-              GST_WARNING_OBJECT (encoder,
-                  "Macroblock rate higher than level %s allows", level);
-              level_ok = FALSE;
-              break;
-            }
-
-            encoder->peer_level = &x264_levels[i];
-            break;
-          }
-        }
-      }
+      encoder->peer_level_idc = gst_codec_utils_h264_get_level_idc (level);
     }
 
     stream_format = gst_structure_get_string (s, "stream-format");
@@ -2140,9 +2270,6 @@
 
   gst_caps_unref (template_caps);
 
-  if (!level_ok)
-    return FALSE;
-
   if (!gst_x264_enc_init_encoder (encoder))
     return FALSE;
 
@@ -2175,8 +2302,12 @@
   if (!self->input_state)
     return FALSE;
 
+  if (self->vtable == NULL)
+    return FALSE;
+
   info = &self->input_state->info;
-  num_buffers = x264_encoder_maximum_delayed_frames (self->x264enc) + 1;
+  num_buffers =
+      self->vtable->x264_encoder_maximum_delayed_frames (self->x264enc) + 1;
 
   gst_query_add_allocation_pool (query, NULL, info->size, num_buffers, 0);
 
@@ -2224,6 +2355,24 @@
   pic_in.i_pts = frame->pts;
   pic_in.opaque = GINT_TO_POINTER (frame->system_frame_number);
 
+  if (GST_VIDEO_INFO_INTERLACE_MODE (info) == GST_VIDEO_INTERLACE_MODE_MIXED) {
+    if ((fdata->vframe.flags & GST_VIDEO_FRAME_FLAG_INTERLACED) == 0) {
+      pic_in.i_pic_struct = PIC_STRUCT_PROGRESSIVE;
+    } else if ((fdata->vframe.flags & GST_VIDEO_FRAME_FLAG_RFF) != 0) {
+      if ((fdata->vframe.flags & GST_VIDEO_FRAME_FLAG_TFF) != 0) {
+        pic_in.i_pic_struct = PIC_STRUCT_TOP_BOTTOM_TOP;
+      } else {
+        pic_in.i_pic_struct = PIC_STRUCT_BOTTOM_TOP_BOTTOM;
+      }
+    } else {
+      if ((fdata->vframe.flags & GST_VIDEO_FRAME_FLAG_TFF) != 0) {
+        pic_in.i_pic_struct = PIC_STRUCT_TOP_BOTTOM;
+      } else {
+        pic_in.i_pic_struct = PIC_STRUCT_BOTTOM_TOP;
+      }
+    }
+  }
+
   ret = gst_x264_enc_encode_frame (encoder, &pic_in, frame, &i_nal, TRUE);
 
   /* input buffer is released later on */
@@ -2265,7 +2414,8 @@
   GST_OBJECT_LOCK (encoder);
   if (encoder->reconfig) {
     encoder->reconfig = FALSE;
-    if (x264_encoder_reconfig (encoder->x264enc, &encoder->x264param) < 0)
+    if (encoder->vtable->x264_encoder_reconfig (encoder->x264enc,
+            &encoder->x264param) < 0)
       GST_WARNING_OBJECT (encoder, "Could not reconfigure");
     update_latency = TRUE;
   }
@@ -2274,7 +2424,7 @@
     if (GST_VIDEO_CODEC_FRAME_IS_FORCE_KEYFRAME (input_frame)) {
       GST_INFO_OBJECT (encoder, "Forcing key frame");
       if (encoder->intra_refresh)
-        x264_encoder_intra_refresh (encoder->x264enc);
+        encoder->vtable->x264_encoder_intra_refresh (encoder->x264enc);
       else
         pic_in->i_type = X264_TYPE_IDR;
     }
@@ -2284,7 +2434,7 @@
   if (G_UNLIKELY (update_latency))
     gst_x264_enc_set_latency (encoder);
 
-  encoder_return = x264_encoder_encode (encoder->x264enc,
+  encoder_return = encoder->vtable->x264_encoder_encode (encoder->x264enc,
       &nal, i_nal, pic_in, &pic_out);
 
   if (encoder_return < 0) {
@@ -2356,12 +2506,15 @@
     do {
       flow_ret = gst_x264_enc_encode_frame (encoder, NULL, NULL, &i_nal, send);
     } while (flow_ret == GST_FLOW_OK
-        && x264_encoder_delayed_frames (encoder->x264enc) > 0);
+        && encoder->vtable->x264_encoder_delayed_frames (encoder->x264enc) > 0);
 }
 
 static void
 gst_x264_enc_reconfig (GstX264Enc * encoder)
 {
+  if (!encoder->vtable)
+    return;
+
   switch (encoder->pass) {
     case GST_X264_ENC_PASS_QUAL:
       encoder->x264param.rc.f_rf_constant = encoder->quantizer;
@@ -2580,8 +2733,6 @@
       break;
     case ARG_INTERLACED:
       encoder->interlaced = g_value_get_boolean (value);
-      g_string_append_printf (encoder->option_string, ":interlaced=%d",
-          encoder->interlaced);
       break;
     case ARG_FRAME_PACKING:
       encoder->frame_packing = g_value_get_enum (value);
@@ -2738,7 +2889,31 @@
   GST_DEBUG_CATEGORY_INIT (x264_enc_debug, "x264enc", 0,
       "h264 encoding element");
 
-  GST_INFO ("x264 build: %u", X264_BUILD);
+  GST_INFO ("linked against x264 build: %u", X264_BUILD);
+
+  /* Initialize the static GstX264EncVTable which is overriden in load_x264()
+   * if needed. We can't initialize statically because these values are not
+   * constant on Windows. */
+  default_vtable.module = NULL;
+  default_vtable.x264_bit_depth = &x264_bit_depth;
+  default_vtable.x264_chroma_format = &x264_chroma_format;
+  default_vtable.x264_encoder_close = x264_encoder_close;
+  default_vtable.x264_encoder_delayed_frames = x264_encoder_delayed_frames;
+  default_vtable.x264_encoder_encode = x264_encoder_encode;
+  default_vtable.x264_encoder_headers = x264_encoder_headers;
+  default_vtable.x264_encoder_intra_refresh = x264_encoder_intra_refresh;
+  default_vtable.x264_encoder_maximum_delayed_frames = x264_encoder_maximum_delayed_frames;
+  default_vtable.x264_encoder_open = x264_encoder_open;
+  default_vtable.x264_encoder_reconfig = x264_encoder_reconfig;
+  default_vtable.x264_levels = &x264_levels;
+  default_vtable.x264_param_apply_fastfirstpass = x264_param_apply_fastfirstpass;
+  default_vtable.x264_param_apply_profile = x264_param_apply_profile;
+  default_vtable.x264_param_default = x264_param_default;
+  default_vtable.x264_param_default_preset = x264_param_default_preset;
+  default_vtable.x264_param_parse = x264_param_parse;
+
+  if (!load_x264_libraries ())
+    return FALSE;
 
   return gst_element_register (plugin, "x264enc",
       GST_RANK_PRIMARY, GST_TYPE_X264_ENC);
diff --git a/ext/x264/gstx264enc.h b/ext/x264/gstx264enc.h
index 25ac897..6f4ad48 100644
--- a/ext/x264/gstx264enc.h
+++ b/ext/x264/gstx264enc.h
@@ -1,6 +1,7 @@
 /* GStreamer H264 encoder plugin
  * Copyright (C) 2005 Michal Benes <michal.benes@itonis.tv>
  * Copyright (C) 2005 Josef Zlomek <josef.zlomek@itonis.tv>
+ * Copyright (C) 2016 Sebastian Dröge <sebastian@centricular.com>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -29,6 +30,13 @@
 #include <stdint.h>
 #endif
 
+/* The x264.h header says this isn't needed with MinGW, but sometimes the
+ * compiler is unable to correctly do the pointer indirection for us, which
+ * leads to a segfault when you try to dereference any const values provided
+ * by x264.dll. See: https://bugzilla.gnome.org/show_bug.cgi?id=779249 */
+#if defined(_WIN32) && !defined(X264_API_IMPORTS)
+# define X264_API_IMPORTS
+#endif
 #include <x264.h>
 
 G_BEGIN_DECLS
@@ -46,12 +54,14 @@
 
 typedef struct _GstX264Enc GstX264Enc;
 typedef struct _GstX264EncClass GstX264EncClass;
+typedef struct _GstX264EncVTable GstX264EncVTable;
 
 struct _GstX264Enc
 {
   GstVideoEncoder element;
 
   /*< private >*/
+  GstX264EncVTable *vtable;
   x264_t *x264enc;
   x264_param_t x264param;
   gint current_byte_stream;
@@ -111,7 +121,7 @@
   /* from the downstream caps */
   const gchar *peer_profile;
   gboolean peer_intra_profile;
-  const x264_level_t *peer_level;
+  gint peer_level_idc;
 };
 
 struct _GstX264EncClass
diff --git a/ext/x264/meson.build b/ext/x264/meson.build
new file mode 100644
index 0000000..544721a
--- /dev/null
+++ b/ext/x264/meson.build
@@ -0,0 +1,24 @@
+x264_sources = [
+  'gstx264enc.c',
+]
+
+x264_dep = dependency('x264', required : false)
+
+if x264_dep.found()
+  x264_libraries = get_option('x264_libraries')
+  x264_args = []
+  if x264_libraries != ''
+    x264_args += ['-DHAVE_X264_ADDITIONAL_LIBRARIES="@0@"'.format(x264_libraries)]
+  endif
+
+  gstx264 = library('gstx264',
+    x264_sources,
+    c_args : ugly_args + x264_args,
+    include_directories : [configinc],
+    dependencies : [gstbase_dep, gstvideo_dep, gstpbutils_dep, x264_dep],
+    install : true,
+    install_dir : plugins_install_dir,
+  )
+
+  install_data(sources: 'GstX264Enc.prs', install_dir: presetdir)
+endif
diff --git a/gst-libs/Makefile.in b/gst-libs/Makefile.in
index df91c43..d952bc6 100644
--- a/gst-libs/Makefile.in
+++ b/gst-libs/Makefile.in
@@ -346,8 +346,6 @@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
 LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-MAD_CFLAGS = @MAD_CFLAGS@
-MAD_LIBS = @MAD_LIBS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
diff --git a/gst-libs/gst/Makefile.in b/gst-libs/gst/Makefile.in
index 12fe9ff..fc795f3 100644
--- a/gst-libs/gst/Makefile.in
+++ b/gst-libs/gst/Makefile.in
@@ -307,8 +307,6 @@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
 LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-MAD_CFLAGS = @MAD_CFLAGS@
-MAD_LIBS = @MAD_LIBS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
diff --git a/gst-plugins-ugly.doap b/gst-plugins-ugly.doap
index 5f95007..398a3ed 100644
--- a/gst-plugins-ugly.doap
+++ b/gst-plugins-ugly.doap
@@ -33,43 +33,53 @@
    </GitRepository>
  </repository> 
 
-  <release>
+ <release>
   <Version>
-   <revision>1.10.4</revision>
-   <branch>1.10</branch>
+   <revision>1.12.0</revision>
+   <branch>master</branch>
    <name></name>
-   <created>2017-02-23</created>
-   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.10.4.tar.xz" />
+   <created>2017-05-04</created>
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.12.0.tar.xz" />
   </Version>
  </release>
 
-  <release>
+ <release>
   <Version>
-   <revision>1.10.3</revision>
-   <branch>1.10</branch>
+   <revision>1.11.91</revision>
+   <branch>master</branch>
    <name></name>
-   <created>2017-01-30</created>
-   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.10.3.tar.xz" />
+   <created>2017-04-27</created>
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.11.91.tar.xz" />
   </Version>
  </release>
 
-  <release>
+ <release>
   <Version>
-   <revision>1.10.2</revision>
-   <branch>1.10</branch>
+   <revision>1.11.90</revision>
+   <branch>master</branch>
    <name></name>
-   <created>2016-11-29</created>
-   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.10.2.tar.xz" />
+   <created>2017-04-07</created>
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.11.90.tar.xz" />
   </Version>
  </release>
 
-  <release>
+ <release>
   <Version>
-   <revision>1.10.1</revision>
-   <branch>1.10</branch>
+   <revision>1.11.2</revision>
+   <branch>master</branch>
    <name></name>
-   <created>2016-11-17</created>
-   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.10.1.tar.xz" />
+   <created>2017-02-24</created>
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.11.2.tar.xz" />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
+   <revision>1.11.1</revision>
+   <branch>master</branch>
+   <name></name>
+   <created>2017-01-12</created>
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.11.1.tar.xz" />
   </Version>
  </release>
 
diff --git a/gst-plugins-ugly.spec b/gst-plugins-ugly.spec
deleted file mode 100644
index f537ffe..0000000
--- a/gst-plugins-ugly.spec
+++ /dev/null
@@ -1,129 +0,0 @@
-%define majorminor  1.0
-%define gstreamer   gstreamer1
-
-%define gst_minver  0.11.0
-
-Name: 		%{gstreamer}-plugins-ugly
-Version: 	1.10.4
-Release: 	1.gst
-Summary: 	GStreamer streaming media framework "ugly" plug-ins
-
-Group: 		Applications/Multimedia
-License: 	LGPL
-URL:		http://gstreamer.freedesktop.org/
-Vendor:         GStreamer Backpackers Team <package@gstreamer.freedesktop.org>
-Source:         http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-%{version}.tar.xz
-BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
-
-Requires: 	%{gstreamer} >= %{gst_minver}
-BuildRequires: 	%{gstreamer}-devel >= %{gst_minver}
-BuildRequires:  gcc-c++
-
-BuildRequires:  libsidplay-devel >= 1.36.0
-BuildRequires:  a52dec-devel >= 0.7.3
-BuildRequires:  libdvdread-devel >= 0.9.0
-BuildRequires:  lame-devel >= 3.89
-BuildRequires:  libmad-devel >= 0.15.0
-BuildRequires:  mpeg2dec-devel >= 0.4.0
-BuildRequires:  mpg123-devel >= 1.13
-
-Provides:       gstreamer-sid = %{version}-%{release}
-Provides:      gstreamer-lame = %{version}-%{release}
-Provides:       gstreamer-mad = %{version}-%{release}
-Provides:       gstreamer-a52dec = %{version}-%{release}
-Provides:       gstreamer-dvdread = %{version}-%{release}
-Provides:       gstreamer-mpeg2dec = %{version}-%{release}
-
-Requires: x264-libs
-
-%description
-GStreamer is a streaming media framework, based on graphs of elements which
-operate on media data.
-
-This package contains well-written plug-ins that can't be shipped in
-gstreamer-plugins-good because:
-- the license is not LGPL
-- the license of the library is not LGPL
-- there are possible licensing issues with the code.
-
-# %package devel
-# Summary:        Development files for GStreamer Ugly Plugins
-# Group:          Development/Libraries
-#
-# Requires:       %{name} = %{version}-%{release}
-#
-# %description devel
-# GStreamer is a streaming media framework, based on graphs of elements which
-# operate on media data.
-#
-# This package contains well-written plug-ins that can't be shipped in
-# gstreamer-plugins-good because:
-# - the license is not LGPL
-# - the license of the library is not LGPL
-# - there are possible licensing issues with the code.
-# 
-# This package contains development files and documentation.
-
-%prep
-%setup -q -n gst-plugins-ugly-%{version}
-%build
-%configure \
-  --enable-debug \
-  --enable-gtk-doc 
-
-make %{?_smp_mflags}
-                                                                                
-%install
-rm -rf $RPM_BUILD_ROOT
-
-# Install doc temporarily in order to be included later by rpm
-%makeinstall
-
-# Clean out files that should not be part of the rpm.
-rm -f $RPM_BUILD_ROOT%{_libdir}/gstreamer-%{majorminor}/*.la
-rm -f $RPM_BUILD_ROOT%{_libdir}/gstreamer-%{majorminor}/*.a
-rm -f $RPM_BUILD_ROOT%{_libdir}/*.a
-rm -f $RPM_BUILD_ROOT%{_libdir}/*.la
-
-%find_lang gst-plugins-ugly-%{majorminor}
-
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-%files -f gst-plugins-ugly-%{majorminor}.lang
-%defattr(-, root, root, -)
-%doc AUTHORS COPYING README REQUIREMENTS gst-plugins-ugly.doap
-%{_libdir}/gstreamer-%{majorminor}/libgstasf.so
-%{_libdir}/gstreamer-%{majorminor}/libgstdvdlpcmdec.so
-%{_libdir}/gstreamer-%{majorminor}/libgstxingmux.so
-%{_libdir}/gstreamer-%{majorminor}/libgstrmdemux.so
-%{_libdir}/gstreamer-%{majorminor}/libgstdvdsub.so
-
-# plugins with dependencies
-%{_libdir}/gstreamer-%{majorminor}/libgstsid.so
-%{_libdir}/gstreamer-%{majorminor}/libgstlame.so
-%{_libdir}/gstreamer-%{majorminor}/libgstmad.so
-%{_libdir}/gstreamer-%{majorminor}/libgsta52dec.so
-%{_libdir}/gstreamer-%{majorminor}/libgstdvdread.so
-%{_libdir}/gstreamer-%{majorminor}/libgstmpeg2dec.so
-%{_libdir}/gstreamer-%{majorminor}/libgstmpg123.so
-%{_libdir}/gstreamer-%{majorminor}/libgsttwolame.so
-%doc %{_datadir}/gtk-doc/html/gst-plugins-ugly-plugins-%{majorminor}/*
-%{_datadir}/gstreamer-%{majorminor}/presets/GstX264Enc.prs
-%{_libdir}/gstreamer-%{majorminor}/libgstx264.so
-%{_libdir}/gstreamer-%{majorminor}/libgstamrnb.so
-%{_libdir}/gstreamer-%{majorminor}/libgstamrwbdec.so
-%{_datadir}/gstreamer-%{majorminor}/presets/GstAmrnbEnc.prs
-%{_libdir}/gstreamer-%{majorminor}/libgstcdio.so
-
-
-%changelog
-* Fri Jun 5 2009 Jan Schmidt <thaytan at mad dot scientist dot com>
-- Move x264enc plugin from -bad
-
-* Fri Dec 15 2006 Thomas Vander Stichele <thomas at apestaart dot org>
-- further cleanup
-- add .doap file
-
-* Fri Sep 02 2005 Thomas Vander Stichele <thomas at apestaart dot org>
-- clean out for split into ugly
diff --git a/gst-plugins-ugly.spec.in b/gst-plugins-ugly.spec.in
deleted file mode 100644
index 1d1a54a..0000000
--- a/gst-plugins-ugly.spec.in
+++ /dev/null
@@ -1,129 +0,0 @@
-%define majorminor  @GST_API_VERSION@
-%define gstreamer   gstreamer1
-
-%define gst_minver  0.11.0
-
-Name: 		%{gstreamer}-plugins-ugly
-Version: 	@VERSION@
-Release: 	@PACKAGE_VERSION_RELEASE@.gst
-Summary: 	GStreamer streaming media framework "ugly" plug-ins
-
-Group: 		Applications/Multimedia
-License: 	LGPL
-URL:		http://gstreamer.freedesktop.org/
-Vendor:         GStreamer Backpackers Team <package@gstreamer.freedesktop.org>
-Source:         http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-%{version}.tar.xz
-BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
-
-Requires: 	%{gstreamer} >= %{gst_minver}
-BuildRequires: 	%{gstreamer}-devel >= %{gst_minver}
-BuildRequires:  gcc-c++
-
-@USE_SIDPLAY_TRUE@BuildRequires:  libsidplay-devel >= 1.36.0
-@USE_A52DEC_TRUE@BuildRequires:  a52dec-devel >= 0.7.3
-@USE_DVDREAD_TRUE@BuildRequires:  libdvdread-devel >= 0.9.0
-@USE_LAME_TRUE@BuildRequires:  lame-devel >= 3.89
-@USE_MAD_TRUE@BuildRequires:  libmad-devel >= 0.15.0
-@USE_MPEG2DEC_TRUE@BuildRequires:  mpeg2dec-devel >= 0.4.0
-@USE_MPG123_TRUE@BuildRequires:  mpg123-devel >= 1.13
-
-@USE_SIDPLAY_TRUE@Provides:       gstreamer-sid = %{version}-%{release}
-@USE_LAME_TRUE@Provides:      gstreamer-lame = %{version}-%{release}
-@USE_MAD_TRUE@Provides:       gstreamer-mad = %{version}-%{release}
-@USE_A52DEC_TRUE@Provides:       gstreamer-a52dec = %{version}-%{release}
-@USE_DVDREAD_TRUE@Provides:       gstreamer-dvdread = %{version}-%{release}
-@USE_MPEG2DEC_TRUE@Provides:       gstreamer-mpeg2dec = %{version}-%{release}
-
-@USE_X264_TRUE@Requires: x264-libs
-
-%description
-GStreamer is a streaming media framework, based on graphs of elements which
-operate on media data.
-
-This package contains well-written plug-ins that can't be shipped in
-gstreamer-plugins-good because:
-- the license is not LGPL
-- the license of the library is not LGPL
-- there are possible licensing issues with the code.
-
-# %package devel
-# Summary:        Development files for GStreamer Ugly Plugins
-# Group:          Development/Libraries
-#
-# Requires:       %{name} = %{version}-%{release}
-#
-# %description devel
-# GStreamer is a streaming media framework, based on graphs of elements which
-# operate on media data.
-#
-# This package contains well-written plug-ins that can't be shipped in
-# gstreamer-plugins-good because:
-# - the license is not LGPL
-# - the license of the library is not LGPL
-# - there are possible licensing issues with the code.
-# 
-# This package contains development files and documentation.
-
-%prep
-%setup -q -n gst-plugins-ugly-%{version}
-%build
-%configure \
-  --enable-debug \
-  --enable-gtk-doc 
-
-make %{?_smp_mflags}
-                                                                                
-%install
-rm -rf $RPM_BUILD_ROOT
-
-# Install doc temporarily in order to be included later by rpm
-%makeinstall
-
-# Clean out files that should not be part of the rpm.
-rm -f $RPM_BUILD_ROOT%{_libdir}/gstreamer-%{majorminor}/*.la
-rm -f $RPM_BUILD_ROOT%{_libdir}/gstreamer-%{majorminor}/*.a
-rm -f $RPM_BUILD_ROOT%{_libdir}/*.a
-rm -f $RPM_BUILD_ROOT%{_libdir}/*.la
-
-%find_lang gst-plugins-ugly-%{majorminor}
-
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-%files -f gst-plugins-ugly-%{majorminor}.lang
-%defattr(-, root, root, -)
-%doc AUTHORS COPYING README REQUIREMENTS gst-plugins-ugly.doap
-%{_libdir}/gstreamer-%{majorminor}/libgstasf.so
-%{_libdir}/gstreamer-%{majorminor}/libgstdvdlpcmdec.so
-%{_libdir}/gstreamer-%{majorminor}/libgstxingmux.so
-%{_libdir}/gstreamer-%{majorminor}/libgstrmdemux.so
-%{_libdir}/gstreamer-%{majorminor}/libgstdvdsub.so
-
-# plugins with dependencies
-@USE_SIDPLAY_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstsid.so
-@USE_LAME_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstlame.so
-@USE_MAD_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstmad.so
-@USE_A52DEC_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgsta52dec.so
-@USE_DVDREAD_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstdvdread.so
-@USE_MPEG2DEC_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstmpeg2dec.so
-@USE_MPG123_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstmpg123.so
-@USE_TWOLAME_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgsttwolame.so
-%doc %{_datadir}/gtk-doc/html/gst-plugins-ugly-plugins-%{majorminor}/*
-@USE_X264_TRUE@%{_datadir}/gstreamer-%{majorminor}/presets/GstX264Enc.prs
-@USE_X264_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstx264.so
-@USE_AMRNB_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstamrnb.so
-@USE_AMRWB_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstamrwbdec.so
-@USE_AMRNB_TRUE@%{_datadir}/gstreamer-%{majorminor}/presets/GstAmrnbEnc.prs
-@USE_CDIO_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstcdio.so
-
-
-%changelog
-* Fri Jun 5 2009 Jan Schmidt <thaytan at mad dot scientist dot com>
-- Move x264enc plugin from -bad
-
-* Fri Dec 15 2006 Thomas Vander Stichele <thomas at apestaart dot org>
-- further cleanup
-- add .doap file
-
-* Fri Sep 02 2005 Thomas Vander Stichele <thomas at apestaart dot org>
-- clean out for split into ugly
diff --git a/gst/Makefile.in b/gst/Makefile.in
index 202477b..f1b7c58 100644
--- a/gst/Makefile.in
+++ b/gst/Makefile.in
@@ -351,8 +351,6 @@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
 LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-MAD_CFLAGS = @MAD_CFLAGS@
-MAD_LIBS = @MAD_LIBS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
diff --git a/gst/asfdemux/Makefile.in b/gst/asfdemux/Makefile.in
index cf09967..66e3726 100644
--- a/gst/asfdemux/Makefile.in
+++ b/gst/asfdemux/Makefile.in
@@ -376,8 +376,6 @@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
 LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-MAD_CFLAGS = @MAD_CFLAGS@
-MAD_LIBS = @MAD_LIBS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
diff --git a/gst/asfdemux/gstasfdemux.c b/gst/asfdemux/gstasfdemux.c
index b8d48ad..5afeaab 100644
--- a/gst/asfdemux/gstasfdemux.c
+++ b/gst/asfdemux/gstasfdemux.c
@@ -2998,7 +2998,7 @@
 
   flags = gst_asf_demux_get_uint16 (&data, &size);
   stream_id = flags & 0x7f;
-  is_encrypted = ! !((flags & 0x8000) << 15);
+  is_encrypted = ! !(flags & 0x8000);
   unknown = gst_asf_demux_get_uint32 (&data, &size);
 
   GST_DEBUG_OBJECT (demux, "Found stream %u, time_offset=%" GST_TIME_FORMAT,
diff --git a/gst/asfdemux/meson.build b/gst/asfdemux/meson.build
new file mode 100644
index 0000000..bf27037
--- /dev/null
+++ b/gst/asfdemux/meson.build
@@ -0,0 +1,19 @@
+asf_sources = [
+  'gstasfdemux.c',
+  'gstasf.c',
+  'asfheaders.c',
+  'asfpacket.c',
+  'gstrtpasfdepay.c',
+  'gstrtspwms.c',
+]
+
+gstasf = library('gstasf',
+  asf_sources,
+  c_args : ugly_args,
+  include_directories : [configinc, libsinc],
+  dependencies : [gstbase_dep, gstrtp_dep, gstvideo_dep,
+                  gstaudio_dep, gsttag_dep, gstriff_dep,
+                  gstrtsp_dep, gstsdp_dep],
+  install : true,
+  install_dir : plugins_install_dir,
+)
diff --git a/gst/dvdlpcmdec/Makefile.in b/gst/dvdlpcmdec/Makefile.in
index 089a6cc..cd0d72d 100644
--- a/gst/dvdlpcmdec/Makefile.in
+++ b/gst/dvdlpcmdec/Makefile.in
@@ -372,8 +372,6 @@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
 LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-MAD_CFLAGS = @MAD_CFLAGS@
-MAD_LIBS = @MAD_LIBS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
diff --git a/gst/dvdlpcmdec/meson.build b/gst/dvdlpcmdec/meson.build
new file mode 100644
index 0000000..4aef59e
--- /dev/null
+++ b/gst/dvdlpcmdec/meson.build
@@ -0,0 +1,12 @@
+dvdpl_sources = [
+  'gstdvdlpcmdec.c'
+]
+
+gstdvdlpcmdec = library('gstdvdlpcmdec',
+  dvdpl_sources,
+  c_args : ugly_args,
+  include_directories : [configinc],
+  dependencies : [gstbase_dep, gstaudio_dep],
+  install : true,
+  install_dir : plugins_install_dir,
+)
diff --git a/gst/dvdsub/Makefile.in b/gst/dvdsub/Makefile.in
index 88e892c..f491f0f 100644
--- a/gst/dvdsub/Makefile.in
+++ b/gst/dvdsub/Makefile.in
@@ -373,8 +373,6 @@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
 LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-MAD_CFLAGS = @MAD_CFLAGS@
-MAD_LIBS = @MAD_LIBS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
diff --git a/gst/dvdsub/meson.build b/gst/dvdsub/meson.build
new file mode 100644
index 0000000..c13969b
--- /dev/null
+++ b/gst/dvdsub/meson.build
@@ -0,0 +1,13 @@
+dvdsub_sources = [
+  'gstdvdsubdec.c',
+  'gstdvdsubparse.c',
+]
+
+gstdvdsub = library('gstdvdsub',
+  dvdsub_sources,
+  c_args : ugly_args,
+  include_directories : [configinc],
+  dependencies : [gstbase_dep, gstvideo_dep],
+  install : true,
+  install_dir : plugins_install_dir,
+)
diff --git a/gst/meson.build b/gst/meson.build
new file mode 100644
index 0000000..2bc6671
--- /dev/null
+++ b/gst/meson.build
@@ -0,0 +1,5 @@
+subdir('asfdemux')
+subdir('dvdlpcmdec')
+subdir('dvdsub')
+subdir('realmedia')
+subdir('xingmux')
diff --git a/gst/realmedia/Makefile.am b/gst/realmedia/Makefile.am
index d307a72..654a3d6 100644
--- a/gst/realmedia/Makefile.am
+++ b/gst/realmedia/Makefile.am
@@ -1,20 +1,20 @@
-plugin_LTLIBRARIES = libgstrmdemux.la
+plugin_LTLIBRARIES = libgstrealmedia.la
 
-libgstrmdemux_la_SOURCES = rademux.c rmdemux.c  \
+libgstrealmedia_la_SOURCES = rademux.c rmdemux.c  \
 			   rmutils.c rdtdepay.c rdtmanager.c \
 			   rtspreal.c realhash.c asmrules.c \
 			   rdtjitterbuffer.c gstrdtbuffer.c \
 			   pnmsrc.c realmedia.c
 
 
-libgstrmdemux_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS)
-libgstrmdemux_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) \
+libgstrealmedia_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS)
+libgstrealmedia_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) \
 				-lgstrtsp-@GST_API_VERSION@ \
 				-lgstsdp-@GST_API_VERSION@ \
 				-lgstpbutils-@GST_API_VERSION@ \
 				$(GST_BASE_LIBS) $(GST_LIBS)
-libgstrmdemux_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
-libgstrmdemux_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
+libgstrealmedia_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgstrealmedia_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
 
 noinst_HEADERS = rademux.h rmdemux.h rmutils.h rdtdepay.h rdtmanager.h \
 		 rdtjitterbuffer.h rtspreal.h realhash.h asmrules.h gstrdtbuffer.h \
diff --git a/gst/realmedia/Makefile.in b/gst/realmedia/Makefile.in
index 5e049fe..73b433a 100644
--- a/gst/realmedia/Makefile.in
+++ b/gst/realmedia/Makefile.in
@@ -163,25 +163,26 @@
 am__installdirs = "$(DESTDIR)$(plugindir)"
 LTLIBRARIES = $(plugin_LTLIBRARIES)
 am__DEPENDENCIES_1 =
-libgstrmdemux_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+libgstrealmedia_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-am_libgstrmdemux_la_OBJECTS = libgstrmdemux_la-rademux.lo \
-	libgstrmdemux_la-rmdemux.lo libgstrmdemux_la-rmutils.lo \
-	libgstrmdemux_la-rdtdepay.lo libgstrmdemux_la-rdtmanager.lo \
-	libgstrmdemux_la-rtspreal.lo libgstrmdemux_la-realhash.lo \
-	libgstrmdemux_la-asmrules.lo \
-	libgstrmdemux_la-rdtjitterbuffer.lo \
-	libgstrmdemux_la-gstrdtbuffer.lo libgstrmdemux_la-pnmsrc.lo \
-	libgstrmdemux_la-realmedia.lo
-libgstrmdemux_la_OBJECTS = $(am_libgstrmdemux_la_OBJECTS)
+am_libgstrealmedia_la_OBJECTS = libgstrealmedia_la-rademux.lo \
+	libgstrealmedia_la-rmdemux.lo libgstrealmedia_la-rmutils.lo \
+	libgstrealmedia_la-rdtdepay.lo \
+	libgstrealmedia_la-rdtmanager.lo \
+	libgstrealmedia_la-rtspreal.lo libgstrealmedia_la-realhash.lo \
+	libgstrealmedia_la-asmrules.lo \
+	libgstrealmedia_la-rdtjitterbuffer.lo \
+	libgstrealmedia_la-gstrdtbuffer.lo \
+	libgstrealmedia_la-pnmsrc.lo libgstrealmedia_la-realmedia.lo
+libgstrealmedia_la_OBJECTS = $(am_libgstrealmedia_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
 am__v_lt_0 = --silent
 am__v_lt_1 = 
-libgstrmdemux_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
-	$(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
-	$(CCLD) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) \
-	$(libgstrmdemux_la_LDFLAGS) $(LDFLAGS) -o $@
+libgstrealmedia_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(libgstrealmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
+	$(CCLD) $(libgstrealmedia_la_CFLAGS) $(CFLAGS) \
+	$(libgstrealmedia_la_LDFLAGS) $(LDFLAGS) -o $@
 PROGRAMS = $(noinst_PROGRAMS)
 asmrules_SOURCES = asmrules.c
 asmrules_OBJECTS = asmrules-asmrules.$(OBJEXT)
@@ -223,8 +224,8 @@
 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
 am__v_CCLD_0 = @echo "  CCLD    " $@;
 am__v_CCLD_1 = 
-SOURCES = $(libgstrmdemux_la_SOURCES) asmrules.c
-DIST_SOURCES = $(libgstrmdemux_la_SOURCES) asmrules.c
+SOURCES = $(libgstrealmedia_la_SOURCES) asmrules.c
+DIST_SOURCES = $(libgstrealmedia_la_SOURCES) asmrules.c
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -388,8 +389,6 @@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
 LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-MAD_CFLAGS = @MAD_CFLAGS@
-MAD_LIBS = @MAD_LIBS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -518,22 +517,22 @@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-plugin_LTLIBRARIES = libgstrmdemux.la
-libgstrmdemux_la_SOURCES = rademux.c rmdemux.c  \
+plugin_LTLIBRARIES = libgstrealmedia.la
+libgstrealmedia_la_SOURCES = rademux.c rmdemux.c  \
 			   rmutils.c rdtdepay.c rdtmanager.c \
 			   rtspreal.c realhash.c asmrules.c \
 			   rdtjitterbuffer.c gstrdtbuffer.c \
 			   pnmsrc.c realmedia.c
 
-libgstrmdemux_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS)
-libgstrmdemux_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) \
+libgstrealmedia_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS)
+libgstrealmedia_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) \
 				-lgstrtsp-@GST_API_VERSION@ \
 				-lgstsdp-@GST_API_VERSION@ \
 				-lgstpbutils-@GST_API_VERSION@ \
 				$(GST_BASE_LIBS) $(GST_LIBS)
 
-libgstrmdemux_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
-libgstrmdemux_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
+libgstrealmedia_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgstrealmedia_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
 noinst_HEADERS = rademux.h rmdemux.h rmutils.h rdtdepay.h rdtmanager.h \
 		 rdtjitterbuffer.h rtspreal.h realhash.h asmrules.h gstrdtbuffer.h \
 		 pnmsrc.h
@@ -609,8 +608,8 @@
 	  rm -f $${locs}; \
 	}
 
-libgstrmdemux.la: $(libgstrmdemux_la_OBJECTS) $(libgstrmdemux_la_DEPENDENCIES) $(EXTRA_libgstrmdemux_la_DEPENDENCIES) 
-	$(AM_V_CCLD)$(libgstrmdemux_la_LINK) -rpath $(plugindir) $(libgstrmdemux_la_OBJECTS) $(libgstrmdemux_la_LIBADD) $(LIBS)
+libgstrealmedia.la: $(libgstrealmedia_la_OBJECTS) $(libgstrealmedia_la_DEPENDENCIES) $(EXTRA_libgstrealmedia_la_DEPENDENCIES) 
+	$(AM_V_CCLD)$(libgstrealmedia_la_LINK) -rpath $(plugindir) $(libgstrealmedia_la_OBJECTS) $(libgstrealmedia_la_LIBADD) $(LIBS)
 
 clean-noinstPROGRAMS:
 	@list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
@@ -632,18 +631,18 @@
 	-rm -f *.tab.c
 
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asmrules-asmrules.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrmdemux_la-asmrules.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrmdemux_la-gstrdtbuffer.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrmdemux_la-pnmsrc.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrmdemux_la-rademux.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrmdemux_la-rdtdepay.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrmdemux_la-rdtjitterbuffer.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrmdemux_la-rdtmanager.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrmdemux_la-realhash.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrmdemux_la-realmedia.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrmdemux_la-rmdemux.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrmdemux_la-rmutils.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrmdemux_la-rtspreal.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrealmedia_la-asmrules.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrealmedia_la-gstrdtbuffer.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrealmedia_la-pnmsrc.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrealmedia_la-rademux.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrealmedia_la-rdtdepay.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrealmedia_la-rdtjitterbuffer.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrealmedia_la-rdtmanager.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrealmedia_la-realhash.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrealmedia_la-realmedia.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrealmedia_la-rmdemux.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrealmedia_la-rmutils.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrealmedia_la-rtspreal.Plo@am__quote@
 
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@@ -669,89 +668,89 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
-libgstrmdemux_la-rademux.lo: rademux.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -MT libgstrmdemux_la-rademux.lo -MD -MP -MF $(DEPDIR)/libgstrmdemux_la-rademux.Tpo -c -o libgstrmdemux_la-rademux.lo `test -f 'rademux.c' || echo '$(srcdir)/'`rademux.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstrmdemux_la-rademux.Tpo $(DEPDIR)/libgstrmdemux_la-rademux.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='rademux.c' object='libgstrmdemux_la-rademux.lo' libtool=yes @AMDEPBACKSLASH@
+libgstrealmedia_la-rademux.lo: rademux.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrealmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrealmedia_la_CFLAGS) $(CFLAGS) -MT libgstrealmedia_la-rademux.lo -MD -MP -MF $(DEPDIR)/libgstrealmedia_la-rademux.Tpo -c -o libgstrealmedia_la-rademux.lo `test -f 'rademux.c' || echo '$(srcdir)/'`rademux.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstrealmedia_la-rademux.Tpo $(DEPDIR)/libgstrealmedia_la-rademux.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='rademux.c' object='libgstrealmedia_la-rademux.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -c -o libgstrmdemux_la-rademux.lo `test -f 'rademux.c' || echo '$(srcdir)/'`rademux.c
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrealmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrealmedia_la_CFLAGS) $(CFLAGS) -c -o libgstrealmedia_la-rademux.lo `test -f 'rademux.c' || echo '$(srcdir)/'`rademux.c
 
-libgstrmdemux_la-rmdemux.lo: rmdemux.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -MT libgstrmdemux_la-rmdemux.lo -MD -MP -MF $(DEPDIR)/libgstrmdemux_la-rmdemux.Tpo -c -o libgstrmdemux_la-rmdemux.lo `test -f 'rmdemux.c' || echo '$(srcdir)/'`rmdemux.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstrmdemux_la-rmdemux.Tpo $(DEPDIR)/libgstrmdemux_la-rmdemux.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='rmdemux.c' object='libgstrmdemux_la-rmdemux.lo' libtool=yes @AMDEPBACKSLASH@
+libgstrealmedia_la-rmdemux.lo: rmdemux.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrealmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrealmedia_la_CFLAGS) $(CFLAGS) -MT libgstrealmedia_la-rmdemux.lo -MD -MP -MF $(DEPDIR)/libgstrealmedia_la-rmdemux.Tpo -c -o libgstrealmedia_la-rmdemux.lo `test -f 'rmdemux.c' || echo '$(srcdir)/'`rmdemux.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstrealmedia_la-rmdemux.Tpo $(DEPDIR)/libgstrealmedia_la-rmdemux.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='rmdemux.c' object='libgstrealmedia_la-rmdemux.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -c -o libgstrmdemux_la-rmdemux.lo `test -f 'rmdemux.c' || echo '$(srcdir)/'`rmdemux.c
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrealmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrealmedia_la_CFLAGS) $(CFLAGS) -c -o libgstrealmedia_la-rmdemux.lo `test -f 'rmdemux.c' || echo '$(srcdir)/'`rmdemux.c
 
-libgstrmdemux_la-rmutils.lo: rmutils.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -MT libgstrmdemux_la-rmutils.lo -MD -MP -MF $(DEPDIR)/libgstrmdemux_la-rmutils.Tpo -c -o libgstrmdemux_la-rmutils.lo `test -f 'rmutils.c' || echo '$(srcdir)/'`rmutils.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstrmdemux_la-rmutils.Tpo $(DEPDIR)/libgstrmdemux_la-rmutils.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='rmutils.c' object='libgstrmdemux_la-rmutils.lo' libtool=yes @AMDEPBACKSLASH@
+libgstrealmedia_la-rmutils.lo: rmutils.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrealmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrealmedia_la_CFLAGS) $(CFLAGS) -MT libgstrealmedia_la-rmutils.lo -MD -MP -MF $(DEPDIR)/libgstrealmedia_la-rmutils.Tpo -c -o libgstrealmedia_la-rmutils.lo `test -f 'rmutils.c' || echo '$(srcdir)/'`rmutils.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstrealmedia_la-rmutils.Tpo $(DEPDIR)/libgstrealmedia_la-rmutils.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='rmutils.c' object='libgstrealmedia_la-rmutils.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -c -o libgstrmdemux_la-rmutils.lo `test -f 'rmutils.c' || echo '$(srcdir)/'`rmutils.c
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrealmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrealmedia_la_CFLAGS) $(CFLAGS) -c -o libgstrealmedia_la-rmutils.lo `test -f 'rmutils.c' || echo '$(srcdir)/'`rmutils.c
 
-libgstrmdemux_la-rdtdepay.lo: rdtdepay.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -MT libgstrmdemux_la-rdtdepay.lo -MD -MP -MF $(DEPDIR)/libgstrmdemux_la-rdtdepay.Tpo -c -o libgstrmdemux_la-rdtdepay.lo `test -f 'rdtdepay.c' || echo '$(srcdir)/'`rdtdepay.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstrmdemux_la-rdtdepay.Tpo $(DEPDIR)/libgstrmdemux_la-rdtdepay.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='rdtdepay.c' object='libgstrmdemux_la-rdtdepay.lo' libtool=yes @AMDEPBACKSLASH@
+libgstrealmedia_la-rdtdepay.lo: rdtdepay.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrealmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrealmedia_la_CFLAGS) $(CFLAGS) -MT libgstrealmedia_la-rdtdepay.lo -MD -MP -MF $(DEPDIR)/libgstrealmedia_la-rdtdepay.Tpo -c -o libgstrealmedia_la-rdtdepay.lo `test -f 'rdtdepay.c' || echo '$(srcdir)/'`rdtdepay.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstrealmedia_la-rdtdepay.Tpo $(DEPDIR)/libgstrealmedia_la-rdtdepay.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='rdtdepay.c' object='libgstrealmedia_la-rdtdepay.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -c -o libgstrmdemux_la-rdtdepay.lo `test -f 'rdtdepay.c' || echo '$(srcdir)/'`rdtdepay.c
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrealmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrealmedia_la_CFLAGS) $(CFLAGS) -c -o libgstrealmedia_la-rdtdepay.lo `test -f 'rdtdepay.c' || echo '$(srcdir)/'`rdtdepay.c
 
-libgstrmdemux_la-rdtmanager.lo: rdtmanager.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -MT libgstrmdemux_la-rdtmanager.lo -MD -MP -MF $(DEPDIR)/libgstrmdemux_la-rdtmanager.Tpo -c -o libgstrmdemux_la-rdtmanager.lo `test -f 'rdtmanager.c' || echo '$(srcdir)/'`rdtmanager.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstrmdemux_la-rdtmanager.Tpo $(DEPDIR)/libgstrmdemux_la-rdtmanager.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='rdtmanager.c' object='libgstrmdemux_la-rdtmanager.lo' libtool=yes @AMDEPBACKSLASH@
+libgstrealmedia_la-rdtmanager.lo: rdtmanager.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrealmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrealmedia_la_CFLAGS) $(CFLAGS) -MT libgstrealmedia_la-rdtmanager.lo -MD -MP -MF $(DEPDIR)/libgstrealmedia_la-rdtmanager.Tpo -c -o libgstrealmedia_la-rdtmanager.lo `test -f 'rdtmanager.c' || echo '$(srcdir)/'`rdtmanager.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstrealmedia_la-rdtmanager.Tpo $(DEPDIR)/libgstrealmedia_la-rdtmanager.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='rdtmanager.c' object='libgstrealmedia_la-rdtmanager.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -c -o libgstrmdemux_la-rdtmanager.lo `test -f 'rdtmanager.c' || echo '$(srcdir)/'`rdtmanager.c
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrealmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrealmedia_la_CFLAGS) $(CFLAGS) -c -o libgstrealmedia_la-rdtmanager.lo `test -f 'rdtmanager.c' || echo '$(srcdir)/'`rdtmanager.c
 
-libgstrmdemux_la-rtspreal.lo: rtspreal.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -MT libgstrmdemux_la-rtspreal.lo -MD -MP -MF $(DEPDIR)/libgstrmdemux_la-rtspreal.Tpo -c -o libgstrmdemux_la-rtspreal.lo `test -f 'rtspreal.c' || echo '$(srcdir)/'`rtspreal.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstrmdemux_la-rtspreal.Tpo $(DEPDIR)/libgstrmdemux_la-rtspreal.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='rtspreal.c' object='libgstrmdemux_la-rtspreal.lo' libtool=yes @AMDEPBACKSLASH@
+libgstrealmedia_la-rtspreal.lo: rtspreal.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrealmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrealmedia_la_CFLAGS) $(CFLAGS) -MT libgstrealmedia_la-rtspreal.lo -MD -MP -MF $(DEPDIR)/libgstrealmedia_la-rtspreal.Tpo -c -o libgstrealmedia_la-rtspreal.lo `test -f 'rtspreal.c' || echo '$(srcdir)/'`rtspreal.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstrealmedia_la-rtspreal.Tpo $(DEPDIR)/libgstrealmedia_la-rtspreal.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='rtspreal.c' object='libgstrealmedia_la-rtspreal.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -c -o libgstrmdemux_la-rtspreal.lo `test -f 'rtspreal.c' || echo '$(srcdir)/'`rtspreal.c
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrealmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrealmedia_la_CFLAGS) $(CFLAGS) -c -o libgstrealmedia_la-rtspreal.lo `test -f 'rtspreal.c' || echo '$(srcdir)/'`rtspreal.c
 
-libgstrmdemux_la-realhash.lo: realhash.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -MT libgstrmdemux_la-realhash.lo -MD -MP -MF $(DEPDIR)/libgstrmdemux_la-realhash.Tpo -c -o libgstrmdemux_la-realhash.lo `test -f 'realhash.c' || echo '$(srcdir)/'`realhash.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstrmdemux_la-realhash.Tpo $(DEPDIR)/libgstrmdemux_la-realhash.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='realhash.c' object='libgstrmdemux_la-realhash.lo' libtool=yes @AMDEPBACKSLASH@
+libgstrealmedia_la-realhash.lo: realhash.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrealmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrealmedia_la_CFLAGS) $(CFLAGS) -MT libgstrealmedia_la-realhash.lo -MD -MP -MF $(DEPDIR)/libgstrealmedia_la-realhash.Tpo -c -o libgstrealmedia_la-realhash.lo `test -f 'realhash.c' || echo '$(srcdir)/'`realhash.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstrealmedia_la-realhash.Tpo $(DEPDIR)/libgstrealmedia_la-realhash.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='realhash.c' object='libgstrealmedia_la-realhash.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -c -o libgstrmdemux_la-realhash.lo `test -f 'realhash.c' || echo '$(srcdir)/'`realhash.c
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrealmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrealmedia_la_CFLAGS) $(CFLAGS) -c -o libgstrealmedia_la-realhash.lo `test -f 'realhash.c' || echo '$(srcdir)/'`realhash.c
 
-libgstrmdemux_la-asmrules.lo: asmrules.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -MT libgstrmdemux_la-asmrules.lo -MD -MP -MF $(DEPDIR)/libgstrmdemux_la-asmrules.Tpo -c -o libgstrmdemux_la-asmrules.lo `test -f 'asmrules.c' || echo '$(srcdir)/'`asmrules.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstrmdemux_la-asmrules.Tpo $(DEPDIR)/libgstrmdemux_la-asmrules.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='asmrules.c' object='libgstrmdemux_la-asmrules.lo' libtool=yes @AMDEPBACKSLASH@
+libgstrealmedia_la-asmrules.lo: asmrules.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrealmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrealmedia_la_CFLAGS) $(CFLAGS) -MT libgstrealmedia_la-asmrules.lo -MD -MP -MF $(DEPDIR)/libgstrealmedia_la-asmrules.Tpo -c -o libgstrealmedia_la-asmrules.lo `test -f 'asmrules.c' || echo '$(srcdir)/'`asmrules.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstrealmedia_la-asmrules.Tpo $(DEPDIR)/libgstrealmedia_la-asmrules.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='asmrules.c' object='libgstrealmedia_la-asmrules.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -c -o libgstrmdemux_la-asmrules.lo `test -f 'asmrules.c' || echo '$(srcdir)/'`asmrules.c
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrealmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrealmedia_la_CFLAGS) $(CFLAGS) -c -o libgstrealmedia_la-asmrules.lo `test -f 'asmrules.c' || echo '$(srcdir)/'`asmrules.c
 
-libgstrmdemux_la-rdtjitterbuffer.lo: rdtjitterbuffer.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -MT libgstrmdemux_la-rdtjitterbuffer.lo -MD -MP -MF $(DEPDIR)/libgstrmdemux_la-rdtjitterbuffer.Tpo -c -o libgstrmdemux_la-rdtjitterbuffer.lo `test -f 'rdtjitterbuffer.c' || echo '$(srcdir)/'`rdtjitterbuffer.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstrmdemux_la-rdtjitterbuffer.Tpo $(DEPDIR)/libgstrmdemux_la-rdtjitterbuffer.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='rdtjitterbuffer.c' object='libgstrmdemux_la-rdtjitterbuffer.lo' libtool=yes @AMDEPBACKSLASH@
+libgstrealmedia_la-rdtjitterbuffer.lo: rdtjitterbuffer.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrealmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrealmedia_la_CFLAGS) $(CFLAGS) -MT libgstrealmedia_la-rdtjitterbuffer.lo -MD -MP -MF $(DEPDIR)/libgstrealmedia_la-rdtjitterbuffer.Tpo -c -o libgstrealmedia_la-rdtjitterbuffer.lo `test -f 'rdtjitterbuffer.c' || echo '$(srcdir)/'`rdtjitterbuffer.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstrealmedia_la-rdtjitterbuffer.Tpo $(DEPDIR)/libgstrealmedia_la-rdtjitterbuffer.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='rdtjitterbuffer.c' object='libgstrealmedia_la-rdtjitterbuffer.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -c -o libgstrmdemux_la-rdtjitterbuffer.lo `test -f 'rdtjitterbuffer.c' || echo '$(srcdir)/'`rdtjitterbuffer.c
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrealmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrealmedia_la_CFLAGS) $(CFLAGS) -c -o libgstrealmedia_la-rdtjitterbuffer.lo `test -f 'rdtjitterbuffer.c' || echo '$(srcdir)/'`rdtjitterbuffer.c
 
-libgstrmdemux_la-gstrdtbuffer.lo: gstrdtbuffer.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -MT libgstrmdemux_la-gstrdtbuffer.lo -MD -MP -MF $(DEPDIR)/libgstrmdemux_la-gstrdtbuffer.Tpo -c -o libgstrmdemux_la-gstrdtbuffer.lo `test -f 'gstrdtbuffer.c' || echo '$(srcdir)/'`gstrdtbuffer.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstrmdemux_la-gstrdtbuffer.Tpo $(DEPDIR)/libgstrmdemux_la-gstrdtbuffer.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstrdtbuffer.c' object='libgstrmdemux_la-gstrdtbuffer.lo' libtool=yes @AMDEPBACKSLASH@
+libgstrealmedia_la-gstrdtbuffer.lo: gstrdtbuffer.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrealmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrealmedia_la_CFLAGS) $(CFLAGS) -MT libgstrealmedia_la-gstrdtbuffer.lo -MD -MP -MF $(DEPDIR)/libgstrealmedia_la-gstrdtbuffer.Tpo -c -o libgstrealmedia_la-gstrdtbuffer.lo `test -f 'gstrdtbuffer.c' || echo '$(srcdir)/'`gstrdtbuffer.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstrealmedia_la-gstrdtbuffer.Tpo $(DEPDIR)/libgstrealmedia_la-gstrdtbuffer.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstrdtbuffer.c' object='libgstrealmedia_la-gstrdtbuffer.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -c -o libgstrmdemux_la-gstrdtbuffer.lo `test -f 'gstrdtbuffer.c' || echo '$(srcdir)/'`gstrdtbuffer.c
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrealmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrealmedia_la_CFLAGS) $(CFLAGS) -c -o libgstrealmedia_la-gstrdtbuffer.lo `test -f 'gstrdtbuffer.c' || echo '$(srcdir)/'`gstrdtbuffer.c
 
-libgstrmdemux_la-pnmsrc.lo: pnmsrc.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -MT libgstrmdemux_la-pnmsrc.lo -MD -MP -MF $(DEPDIR)/libgstrmdemux_la-pnmsrc.Tpo -c -o libgstrmdemux_la-pnmsrc.lo `test -f 'pnmsrc.c' || echo '$(srcdir)/'`pnmsrc.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstrmdemux_la-pnmsrc.Tpo $(DEPDIR)/libgstrmdemux_la-pnmsrc.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='pnmsrc.c' object='libgstrmdemux_la-pnmsrc.lo' libtool=yes @AMDEPBACKSLASH@
+libgstrealmedia_la-pnmsrc.lo: pnmsrc.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrealmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrealmedia_la_CFLAGS) $(CFLAGS) -MT libgstrealmedia_la-pnmsrc.lo -MD -MP -MF $(DEPDIR)/libgstrealmedia_la-pnmsrc.Tpo -c -o libgstrealmedia_la-pnmsrc.lo `test -f 'pnmsrc.c' || echo '$(srcdir)/'`pnmsrc.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstrealmedia_la-pnmsrc.Tpo $(DEPDIR)/libgstrealmedia_la-pnmsrc.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='pnmsrc.c' object='libgstrealmedia_la-pnmsrc.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -c -o libgstrmdemux_la-pnmsrc.lo `test -f 'pnmsrc.c' || echo '$(srcdir)/'`pnmsrc.c
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrealmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrealmedia_la_CFLAGS) $(CFLAGS) -c -o libgstrealmedia_la-pnmsrc.lo `test -f 'pnmsrc.c' || echo '$(srcdir)/'`pnmsrc.c
 
-libgstrmdemux_la-realmedia.lo: realmedia.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -MT libgstrmdemux_la-realmedia.lo -MD -MP -MF $(DEPDIR)/libgstrmdemux_la-realmedia.Tpo -c -o libgstrmdemux_la-realmedia.lo `test -f 'realmedia.c' || echo '$(srcdir)/'`realmedia.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstrmdemux_la-realmedia.Tpo $(DEPDIR)/libgstrmdemux_la-realmedia.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='realmedia.c' object='libgstrmdemux_la-realmedia.lo' libtool=yes @AMDEPBACKSLASH@
+libgstrealmedia_la-realmedia.lo: realmedia.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrealmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrealmedia_la_CFLAGS) $(CFLAGS) -MT libgstrealmedia_la-realmedia.lo -MD -MP -MF $(DEPDIR)/libgstrealmedia_la-realmedia.Tpo -c -o libgstrealmedia_la-realmedia.lo `test -f 'realmedia.c' || echo '$(srcdir)/'`realmedia.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstrealmedia_la-realmedia.Tpo $(DEPDIR)/libgstrealmedia_la-realmedia.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='realmedia.c' object='libgstrealmedia_la-realmedia.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -c -o libgstrmdemux_la-realmedia.lo `test -f 'realmedia.c' || echo '$(srcdir)/'`realmedia.c
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrealmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrealmedia_la_CFLAGS) $(CFLAGS) -c -o libgstrealmedia_la-realmedia.lo `test -f 'realmedia.c' || echo '$(srcdir)/'`realmedia.c
 
 asmrules-asmrules.o: asmrules.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(asmrules_CFLAGS) $(CFLAGS) -MT asmrules-asmrules.o -MD -MP -MF $(DEPDIR)/asmrules-asmrules.Tpo -c -o asmrules-asmrules.o `test -f 'asmrules.c' || echo '$(srcdir)/'`asmrules.c
diff --git a/gst/realmedia/meson.build b/gst/realmedia/meson.build
new file mode 100644
index 0000000..2a00ddd
--- /dev/null
+++ b/gst/realmedia/meson.build
@@ -0,0 +1,23 @@
+real_sources = [
+  'rademux.c',
+  'rmdemux.c',
+  'rmutils.c',
+  'rdtdepay.c',
+  'rdtmanager.c',
+  'rtspreal.c',
+  'realhash.c',
+  'asmrules.c',
+  'rdtjitterbuffer.c',
+  'gstrdtbuffer.c',
+  'pnmsrc.c',
+  'realmedia.c'
+]
+
+gstrmdemux = library('gstrealmedia',
+  real_sources,
+  c_args : ugly_args,
+  include_directories : [configinc, libsinc],
+  dependencies : [gstbase_dep, gstrtsp_dep, gstsdp_dep, gstpbutils_dep],
+  install : true,
+  install_dir : plugins_install_dir,
+)
diff --git a/gst/realmedia/realhash.c b/gst/realmedia/realhash.c
index 97b1390..4a18189 100644
--- a/gst/realmedia/realhash.c
+++ b/gst/realmedia/realhash.c
@@ -292,7 +292,7 @@
   /* calculate response */
   call_hash (field, buf, 64);
   memset (buf1, 0, 64);
-  *buf1 = 128;
+  *buf1 = (char) 128;
   memcpy (buf2, field + 16, 8);
   i = (LE_32 ((buf2)) >> 3) & 0x3f;
   if (i < 56)
diff --git a/gst/xingmux/Makefile.in b/gst/xingmux/Makefile.in
index e3c1fa6..6632645 100644
--- a/gst/xingmux/Makefile.in
+++ b/gst/xingmux/Makefile.in
@@ -373,8 +373,6 @@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
 LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-MAD_CFLAGS = @MAD_CFLAGS@
-MAD_LIBS = @MAD_LIBS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
diff --git a/gst/xingmux/meson.build b/gst/xingmux/meson.build
new file mode 100644
index 0000000..c17da1c
--- /dev/null
+++ b/gst/xingmux/meson.build
@@ -0,0 +1,13 @@
+xing_sources = [
+  'plugin.c',
+  'gstxingmux.c',
+]
+
+gstxingmux = library('gstxingmux',
+  xing_sources,
+  c_args : ugly_args,
+  include_directories : [configinc],
+  dependencies : [gstbase_dep],
+  install : true,
+  install_dir : plugins_install_dir,
+)
diff --git a/m4/Makefile.in b/m4/Makefile.in
index 9d1a231..96d0b40 100644
--- a/m4/Makefile.in
+++ b/m4/Makefile.in
@@ -286,8 +286,6 @@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
 LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-MAD_CFLAGS = @MAD_CFLAGS@
-MAD_LIBS = @MAD_LIBS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
diff --git a/meson.build b/meson.build
new file mode 100644
index 0000000..cdbfc7e
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,188 @@
+project('gst-plugins-ugly', 'c',
+  version : '1.12.0',
+  meson_version : '>= 0.36.0',
+  default_options : [ 'warning_level=1',
+                      'buildtype=debugoptimized' ])
+
+gst_version = meson.project_version()
+version_arr = gst_version.split('.')
+gst_version_major = version_arr[0]
+gst_version_minor = version_arr[1]
+gst_version_micro = version_arr[2]
+if version_arr.length() == 4
+  gst_version_nano = version_arr[3]
+else
+  gst_version_nano = 0
+endif
+
+glib_req = '>= 2.40.0'
+gst_req = '>= @0@.@1@.0'.format(gst_version_major, gst_version_minor)
+
+api_version = '1.0'
+
+plugins_install_dir = '@0@/gstreamer-1.0'.format(get_option('libdir'))
+
+cc = meson.get_compiler('c')
+
+if cc.get_id() == 'msvc'
+  # Ignore several spurious warnings for things gstreamer does very commonly
+  # If a warning is completely useless and spammy, use '/wdXXXX' to suppress it
+  # If a warning is harmless but hard to fix, use '/woXXXX' so it's shown once
+  # NOTE: Only add warnings here if you are sure they're spurious
+  add_project_arguments(
+      '/wd4018', # implicit signed/unsigned conversion
+      '/wd4146', # unary minus on unsigned (beware INT_MIN)
+      '/wd4244', # lossy type conversion (e.g. double -> int)
+      '/wd4305', # truncating type conversion (e.g. double -> float)
+      language : 'c')
+  # Disable SAFESEH with MSVC for plugins and libs that use external deps that
+  # are built with MinGW
+  noseh_link_args = ['/SAFESEH:NO']
+else
+  noseh_link_args = []
+endif
+
+cdata = configuration_data()
+check_headers = [
+  ['HAVE_DLFCN_H', 'dlfcn.h'],
+  ['HAVE_INTTYPES_H', 'inttypes.h'],
+  ['HAVE_MALLOC_H', 'malloc.h'],
+  ['HAVE_MEMORY_H', 'memory.h'],
+  ['HAVE_STDINT_H', 'stdint.h'],
+  ['HAVE_STDLIB_H', 'stdlib.h'],
+  ['HAVE_STRINGS_H', 'strings.h'],
+  ['HAVE_STRING_H', 'string.h'],
+  ['HAVE_SYS_STAT_H', 'sys/stat.h'],
+  ['HAVE_SYS_TYPES_H', 'sys/types.h'],
+  ['HAVE_UNISTD_H', 'unistd.h'],
+  ['HAVE_WINSOCK2_H', 'winsock2.h'],
+]
+
+foreach h : check_headers
+  if cc.has_header(h.get(1))
+    cdata.set(h.get(0), 1)
+  endif
+endforeach
+
+check_functions = [
+# check token HAVE_CPU_ALPHA
+# check token HAVE_CPU_ARM
+# check token HAVE_CPU_CRIS
+# check token HAVE_CPU_CRISV32
+# check token HAVE_CPU_HPPA
+# check token HAVE_CPU_I386
+# check token HAVE_CPU_IA64
+# check token HAVE_CPU_M68K
+# check token HAVE_CPU_MIPS
+# check token HAVE_CPU_PPC
+# check token HAVE_CPU_PPC64
+# check token HAVE_CPU_S390
+# check token HAVE_CPU_SPARC
+# check token HAVE_CPU_X86_64
+  ['HAVE_DCGETTEXT', 'dcgettext'],
+# check token HAVE_EXPERIMENTAL
+# check token HAVE_EXTERNAL
+# check token HAVE_GETTEXT
+# check token HAVE_VALGRIND
+]
+
+foreach f : check_functions
+  if cc.has_function(f.get(1))
+    cdata.set(f.get(0), 1)
+  endif
+endforeach
+
+cdata.set('SIZEOF_CHAR', cc.sizeof('char'))
+cdata.set('SIZEOF_INT', cc.sizeof('int'))
+cdata.set('SIZEOF_LONG', cc.sizeof('long'))
+cdata.set('SIZEOF_SHORT', cc.sizeof('short'))
+cdata.set('SIZEOF_VOIDP', cc.sizeof('void*'))
+
+cdata.set('VERSION', '"@0@"'.format(gst_version))
+cdata.set('PACKAGE', '"gst-plugins-ugly"')
+cdata.set('GETTEXT_PACKAGE', '"gst-plugins-ugly-1.0"')
+cdata.set('GST_PACKAGE_NAME', '"GStreamer Ugly Plug-ins"')
+cdata.set('GST_PACKAGE_ORIGIN', '"Unknown package origin"')
+cdata.set('GST_LICENSE', '"LGPL"')
+
+# Mandatory GST deps
+gst_dep = dependency('gstreamer-1.0', version : gst_req,
+    fallback : ['gstreamer', 'gst_dep'])
+gstapp_dep = dependency('gstreamer-app-1.0', version : gst_req,
+    fallback : ['gst-plugins-base', 'app_dep'])
+gstvideo_dep = dependency('gstreamer-video-1.0', version : gst_req,
+    fallback : ['gst-plugins-base', 'video_dep'])
+gstpbutils_dep = dependency('gstreamer-pbutils-1.0', version : gst_req,
+    fallback : ['gst-plugins-base', 'pbutils_dep'])
+gsttag_dep = dependency('gstreamer-tag-1.0', version : gst_req,
+    fallback : ['gst-plugins-base', 'tag_dep'])
+gstfft_dep = dependency('gstreamer-fft-1.0', version : gst_req,
+    fallback : ['gst-plugins-base', 'fft_dep'])
+gstaudio_dep = dependency('gstreamer-audio-1.0', version : gst_req,
+    fallback : ['gst-plugins-base', 'audio_dep'])
+gstbase_dep = dependency('gstreamer-base-1.0', version : gst_req,
+  fallback : ['gstreamer', 'gst_base_dep'])
+gstriff_dep = dependency('gstreamer-riff-1.0', version : gst_req,
+    fallback : ['gst-plugins-base', 'riff_dep'])
+gstrtp_dep = dependency('gstreamer-rtp-1.0', version : gst_req,
+    fallback : ['gst-plugins-base', 'rtp_dep'])
+gstnet_dep = dependency('gstreamer-net-1.0', version : gst_req,
+  fallback : ['gstreamer', 'gst_net_dep'])
+gstsdp_dep = dependency('gstreamer-sdp-1.0', version : gst_req,
+    fallback : ['gst-plugins-base', 'sdp_dep'])
+gstrtsp_dep = dependency('gstreamer-rtsp-1.0', version : gst_req,
+    fallback : ['gst-plugins-base', 'rtsp_dep'])
+if host_machine.system() != 'windows'
+  gstcheck_dep = dependency('gstreamer-check-1.0', version : gst_req,
+    fallback : ['gstreamer', 'gst_check_dep'])
+endif
+gstcontroller_dep = dependency('gstreamer-controller-1.0', version : gst_req,
+  fallback : ['gstreamer', 'gst_controller_dep'])
+
+orc_dep = dependency('orc-0.4', version : '>= 0.4.16', required : false)
+if orc_dep.found()
+  cdata.set('HAVE_ORC', 1) # used by a52dec for cpu detection
+else
+  cdata.set('DISABLE_ORC', 1)
+endif
+
+configure_file(input : 'config.h.meson',
+  output : 'config.h',
+  configuration : cdata)
+
+ugly_args = ['-DHAVE_CONFIG_H']
+configinc = include_directories('.')
+libsinc = include_directories('gst-libs')
+
+if gst_dep.type_name() == 'internal'
+    gst_proj = subproject('gstreamer')
+
+    if gst_proj.get_variable('disable_gst_debug')
+        message('GStreamer debug system is disabled')
+        add_project_arguments('-Wno-unused', language: 'c')
+    else
+        message('GStreamer debug system is enabled')
+    endif
+else
+    # We can't check that in the case of subprojects as we won't
+    # be able to build against an internal dependency (which is not built yet)
+    if not cc.compiles('''
+#include <gst/gstconfig.h>
+#ifdef GST_DISABLE_GST_DEBUG
+#error "debugging disabled, make compiler fail"
+#endif''' , dependencies: gst_dep)
+        message('GStreamer debug system is disabled')
+        add_global_arguments('-Wno-unused', language: 'c')
+    else
+        message('GStreamer debug system is enabled')
+    endif
+endif
+
+presetdir = join_paths(get_option('datadir'), 'gstreamer-' + api_version, 'presets')
+subdir('gst')
+subdir('ext')
+subdir('tests')
+subdir('po')
+
+python3 = find_program('python3')
+run_command(python3, '-c', 'import shutil; shutil.copy("hooks/pre-commit.hook", ".git/hooks/pre-commit")')
diff --git a/meson_options.txt b/meson_options.txt
new file mode 100644
index 0000000..07db661
--- /dev/null
+++ b/meson_options.txt
@@ -0,0 +1,2 @@
+option('x264_libraries', type : 'string', value : '', description : 'Colon separated list of additional x264 library paths, e.g. for 10-bit version')
+
diff --git a/pkgconfig/Makefile.in b/pkgconfig/Makefile.in
index b1bb0f1..0fb2dbd 100644
--- a/pkgconfig/Makefile.in
+++ b/pkgconfig/Makefile.in
@@ -287,8 +287,6 @@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
 LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-MAD_CFLAGS = @MAD_CFLAGS@
-MAD_LIBS = @MAD_LIBS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
diff --git a/po/LINGUAS b/po/LINGUAS
index 623117d..7813be4 100644
--- a/po/LINGUAS
+++ b/po/LINGUAS
@@ -1 +1 @@
-af az bg ca cs da de el en_GB eo es eu fi fr gl hr hu id it ja lt lv ms mt nb nl or pl pt_BR ro ru sk sl sq sr sv tr uk vi zh_CN
+af az bg ca cs da de el en_GB eo es eu fi fr fur gl hr hu id it ja lt lv ms mt nb nl or pl pt_BR ro ru sk sl sq sr sv tr uk vi zh_CN
diff --git a/po/af.gmo b/po/af.gmo
index 00b6dd2..ee78cb0 100644
--- a/po/af.gmo
+++ b/po/af.gmo
Binary files differ
diff --git a/po/af.po b/po/af.po
index 3c0e7eb..f5ff1f0 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: 2017-02-23 15:19+0200\n"
+"POT-Creation-Date: 2017-05-04 15:12+0300\n"
 "PO-Revision-Date: 2004-03-18 14:16+0200\n"
 "Last-Translator: Petri Jooste <rkwjpj@puk.ac.za>\n"
 "Language-Team: Afrikaans <i18n@af.org.za>\n"
diff --git a/po/az.gmo b/po/az.gmo
index a0855a5..bebd043 100644
--- a/po/az.gmo
+++ b/po/az.gmo
Binary files differ
diff --git a/po/az.po b/po/az.po
index 4f09a1c..645564e 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: 2017-02-23 15:19+0200\n"
+"POT-Creation-Date: 2017-05-04 15:12+0300\n"
 "PO-Revision-Date: 2004-03-19 18:29+0200\n"
 "Last-Translator: Metin Amiroff <metin@karegen.com>\n"
 "Language-Team: Azerbaijani <translation-team-az@lists.sourceforge.net>\n"
diff --git a/po/bg.gmo b/po/bg.gmo
index 55f6fde..610ec9a 100644
--- a/po/bg.gmo
+++ b/po/bg.gmo
Binary files differ
diff --git a/po/bg.po b/po/bg.po
index 523f370..4f266ec 100644
--- a/po/bg.po
+++ b/po/bg.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-ugly 1.7.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2017-02-23 15:19+0200\n"
+"POT-Creation-Date: 2017-05-04 15:12+0300\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"
diff --git a/po/ca.gmo b/po/ca.gmo
index 5bd6cb2..8291e41 100644
--- a/po/ca.gmo
+++ b/po/ca.gmo
Binary files differ
diff --git a/po/ca.po b/po/ca.po
index ad49bd4..9e193a9 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-ugly 0.10.17.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2017-02-23 15:19+0200\n"
+"POT-Creation-Date: 2017-05-04 15:12+0300\n"
 "PO-Revision-Date: 2012-01-01 14:19+0100\n"
 "Last-Translator: Gil Forcada <gforcada@gnome.org>\n"
 "Language-Team: Catalan <ca@dodds.net>\n"
diff --git a/po/cs.gmo b/po/cs.gmo
index 5812945..703faa6 100644
--- a/po/cs.gmo
+++ b/po/cs.gmo
Binary files differ
diff --git a/po/cs.po b/po/cs.po
index dd6a548..e76dfd7 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -11,7 +11,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-ugly 1.0.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2017-02-23 15:19+0200\n"
+"POT-Creation-Date: 2017-05-04 15:12+0300\n"
 "PO-Revision-Date: 2013-09-07 07:06+0200\n"
 "Last-Translator: Marek Černocký <marek@manet.cz>\n"
 "Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n"
diff --git a/po/da.gmo b/po/da.gmo
index 6fae547..f1c3dcd 100644
--- a/po/da.gmo
+++ b/po/da.gmo
Binary files differ
diff --git a/po/da.po b/po/da.po
index f35363b..d2725ef 100644
--- a/po/da.po
+++ b/po/da.po
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-ugly-1.0.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2017-02-23 15:19+0200\n"
+"POT-Creation-Date: 2017-05-04 15:12+0300\n"
 "PO-Revision-Date: 2012-12-09 03:56+0100\n"
 "Last-Translator: Joe Hansen <joedalton2@yahoo.dk>\n"
 "Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
diff --git a/po/de.gmo b/po/de.gmo
index 9d64f0e..f8dbf74 100644
--- a/po/de.gmo
+++ b/po/de.gmo
Binary files differ
diff --git a/po/de.po b/po/de.po
index 8de337d..aed511a 100644
--- a/po/de.po
+++ b/po/de.po
@@ -13,7 +13,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-ugly 1.3.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2017-02-23 15:19+0200\n"
+"POT-Creation-Date: 2017-05-04 15:12+0300\n"
 "PO-Revision-Date: 2014-05-22 18:29+0100\n"
 "Last-Translator: Christian Kirbach <christian.kirbach@gmail.com>\n"
 "Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
diff --git a/po/el.gmo b/po/el.gmo
index 629c388..7521317 100644
--- a/po/el.gmo
+++ b/po/el.gmo
Binary files differ
diff --git a/po/el.po b/po/el.po
index d8224fe..746b4f5 100644
--- a/po/el.po
+++ b/po/el.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-ugly 0.10.17.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2017-02-23 15:19+0200\n"
+"POT-Creation-Date: 2017-05-04 15:12+0300\n"
 "PO-Revision-Date: 2012-03-18 01:04+0100\n"
 "Last-Translator: Savvas Radevic <vicedar@gmail.com>\n"
 "Language-Team: Greek <team@lists.gnome.gr>\n"
diff --git a/po/en_GB.gmo b/po/en_GB.gmo
index de9f376..3ddbb4a 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 f118e02..c103b1e 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: 2017-02-23 15:19+0200\n"
+"POT-Creation-Date: 2017-05-04 15:12+0300\n"
 "PO-Revision-Date: 2004-04-26 10:41-0400\n"
 "Last-Translator: Gareth Owen <gowen72@yahoo.com>\n"
 "Language-Team: English (British) <en_gb@li.org>\n"
diff --git a/po/eo.gmo b/po/eo.gmo
index 30a0c06..c98767f 100644
--- a/po/eo.gmo
+++ b/po/eo.gmo
Binary files differ
diff --git a/po/eo.po b/po/eo.po
index a459c6f..b5a1572 100644
--- a/po/eo.po
+++ b/po/eo.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-ugly 1.4.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2017-02-23 15:19+0200\n"
+"POT-Creation-Date: 2017-05-04 15:12+0300\n"
 "PO-Revision-Date: 2014-09-21 21:03+0200\n"
 "Last-Translator: Benno Schulenberg <benno@vertaalt.nl>\n"
 "Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n"
diff --git a/po/es.gmo b/po/es.gmo
index 8494957..9b9344c 100644
--- a/po/es.gmo
+++ b/po/es.gmo
Binary files differ
diff --git a/po/es.po b/po/es.po
index 6e55ae7..23662a6 100644
--- a/po/es.po
+++ b/po/es.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-ugly 0.10.17.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2017-02-23 15:19+0200\n"
+"POT-Creation-Date: 2017-05-04 15:12+0300\n"
 "PO-Revision-Date: 2011-10-02 15:45+0200\n"
 "Last-Translator: Jorge González González <aloriel@gmail.com>\n"
 "Language-Team: Spanish <es@li.org>\n"
diff --git a/po/eu.gmo b/po/eu.gmo
index 3e44b6e..6491631 100644
--- a/po/eu.gmo
+++ b/po/eu.gmo
Binary files differ
diff --git a/po/eu.po b/po/eu.po
index d4d0a95..0e062ae 100644
--- a/po/eu.po
+++ b/po/eu.po
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-ugly-0.10.13.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2017-02-23 15:19+0200\n"
+"POT-Creation-Date: 2017-05-04 15:12+0300\n"
 "PO-Revision-Date: 2010-03-07 13:12+0200\n"
 "Last-Translator: Mikel Olasagasti Uranga <hey_neken@mundurat.net>\n"
 "Language-Team: Basque <translation-team-eu@lists.sourceforge.net>\n"
diff --git a/po/fi.gmo b/po/fi.gmo
index 75638df..7dc5ea1 100644
--- a/po/fi.gmo
+++ b/po/fi.gmo
Binary files differ
diff --git a/po/fi.po b/po/fi.po
index fdb6db8..7dd0006 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -11,7 +11,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-ugly 0.10.10.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2017-02-23 15:19+0200\n"
+"POT-Creation-Date: 2017-05-04 15:12+0300\n"
 "PO-Revision-Date: 2009-03-10 20:41+0200\n"
 "Last-Translator: Tommi Vainikainen <Tommi.Vainikainen@iki.fi>\n"
 "Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
diff --git a/po/fr.gmo b/po/fr.gmo
index 59fd531..c68da75 100644
--- a/po/fr.gmo
+++ b/po/fr.gmo
Binary files differ
diff --git a/po/fr.po b/po/fr.po
index 8899bea..1b6b6f2 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-ugly 1.7.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2017-02-23 15:19+0200\n"
+"POT-Creation-Date: 2017-05-04 15:12+0300\n"
 "PO-Revision-Date: 2015-12-27 01:51+0100\n"
 "Last-Translator: Stéphane Aulery <lkppo@free.fr>\n"
 "Language-Team: French <traduc@traduc.org>\n"
diff --git a/po/fur.gmo b/po/fur.gmo
new file mode 100644
index 0000000..752b6e4
--- /dev/null
+++ b/po/fur.gmo
Binary files differ
diff --git a/po/fur.po b/po/fur.po
new file mode 100644
index 0000000..06b9cd5
--- /dev/null
+++ b/po/fur.po
@@ -0,0 +1,79 @@
+# Friulian messages for gst-plugins-ugly-1.10.0.
+# This file is put in the public domain.
+# Fabio Tomat <f.t.public@gmail.com>, 2016.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gst-plugins-ugly 1.10.0\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
+"POT-Creation-Date: 2017-05-04 15:12+0300\n"
+"PO-Revision-Date: 2016-11-30 16:23+0100\n"
+"Last-Translator: Fabio Tomat <f.t.public@gmail.com>\n"
+"Language-Team: Friulian <f.t.public@gmail.com>\n"
+"Language: fur\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"X-Generator: Poedit 1.8.11\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "Could not read from CD."
+msgstr "Impussibil lei dal CD."
+
+msgid "Could not open CD device for reading."
+msgstr "Impussibil vierzi il dispositîf CD par lei."
+
+msgid "Disc is not an Audio CD."
+msgstr "Il disc nol è un CD Audio."
+
+msgid "Could not open DVD"
+msgstr "Impussibil vierzi il DVD"
+
+#, c-format
+msgid "Could not open DVD title %d"
+msgstr "Impussibil vierzi il titul DVD %d"
+
+#, c-format
+msgid "Failed to go to chapter %d of DVD title %d"
+msgstr "No si è rivâts a lâ al cjapitul %d dal titul DVD %d"
+
+#, c-format
+msgid ""
+"Could not open DVD title %d. Interactive titles are not supported by this "
+"element"
+msgstr ""
+"Impussibil vierzi il titul DVD %d. I titui interatîfs no son supuartâts di "
+"chest element"
+
+msgid ""
+"Could not read DVD. This may be because the DVD is encrypted and a DVD "
+"decryption library is not installed."
+msgstr ""
+"Impussibil lei il DVD. Al podarès jessi par vie che il DVD al è cifrât e une "
+"librarie di decifradure no je instalade."
+
+msgid "Could not read DVD."
+msgstr "Impussibil lei il DVD."
+
+msgid ""
+"Failed to configure LAME mp3 audio encoder. Check your encoding parameters."
+msgstr ""
+"No si è rivâts a configurâ il codificadôr audio mp3 LAME. Controle i "
+"parametris di codifiche."
+
+#, c-format
+msgid ""
+"The requested bitrate %d kbit/s for property '%s' is not allowed. The "
+"bitrate was changed to %d kbit/s."
+msgstr ""
+"Il bitrate domandât (%d kbit/s) pe proprietât '%s' nol è permetût. Il "
+"bitrate al è stât cambiât a %d kbit/s."
+
+msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
+msgstr ""
+"No si è rivâts a configurâ il codificadôr TwoLAME. Controle i parametris di "
+"codifiche."
+
+msgid "This stream contains no data."
+msgstr "Il flus nol conten dâts."
diff --git a/po/gl.gmo b/po/gl.gmo
index e57d995..ec4dbb1 100644
--- a/po/gl.gmo
+++ b/po/gl.gmo
Binary files differ
diff --git a/po/gl.po b/po/gl.po
index fa8e987..86e1272 100644
--- a/po/gl.po
+++ b/po/gl.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-ugly 1.0.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2017-02-23 15:19+0200\n"
+"POT-Creation-Date: 2017-05-04 15:12+0300\n"
 "PO-Revision-Date: 2012-12-15 03:47+0200\n"
 "Last-Translator: Fran Dieguez <frandieguez@ubuntu.com>\n"
 "Language-Team: Galician <proxecto@trasno.net>\n"
diff --git a/po/gst-plugins-ugly-1.0.pot b/po/gst-plugins-ugly-1.0.pot
index f88445d..7d7e156 100644
--- a/po/gst-plugins-ugly-1.0.pot
+++ b/po/gst-plugins-ugly-1.0.pot
@@ -5,9 +5,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: gst-plugins-ugly 1.10.4\n"
+"Project-Id-Version: gst-plugins-ugly 1.12.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2017-02-23 15:19+0200\n"
+"POT-Creation-Date: 2017-05-04 15:12+0300\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"
diff --git a/po/hr.gmo b/po/hr.gmo
index 7d2e07b..cd38827 100644
--- a/po/hr.gmo
+++ b/po/hr.gmo
Binary files differ
diff --git a/po/hr.po b/po/hr.po
index b730979..2b6e727 100644
--- a/po/hr.po
+++ b/po/hr.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-ugly-1.10.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2017-02-23 15:19+0200\n"
+"POT-Creation-Date: 2017-05-04 15:12+0300\n"
 "PO-Revision-Date: 2016-11-19 10:23-0800\n"
 "Last-Translator: Božidar Putanec <bozidarp@yahoo.com>\n"
 "Language-Team: Croatian <lokalizacija@linux.hr>\n"
diff --git a/po/hu.gmo b/po/hu.gmo
index c5521e4..0a3e062 100644
--- a/po/hu.gmo
+++ b/po/hu.gmo
Binary files differ
diff --git a/po/hu.po b/po/hu.po
index 2f7cd22..8491e40 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-ugly 1.0.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2017-02-23 15:19+0200\n"
+"POT-Creation-Date: 2017-05-04 15:12+0300\n"
 "PO-Revision-Date: 2012-11-30 15:02+0100\n"
 "Last-Translator: Gabor Kelemen <kelemeng@gnome.hu>\n"
 "Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n"
diff --git a/po/id.gmo b/po/id.gmo
index 15b1665..85ca47e 100644
--- a/po/id.gmo
+++ b/po/id.gmo
Binary files differ
diff --git a/po/id.po b/po/id.po
index 148e498..e57fe6b 100644
--- a/po/id.po
+++ b/po/id.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-ugly 1.2.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2017-02-23 15:19+0200\n"
+"POT-Creation-Date: 2017-05-04 15:12+0300\n"
 "PO-Revision-Date: 2014-01-27 20:04+0700\n"
 "Last-Translator: Andhika Padmawan <andhika.padmawan@gmail.com>\n"
 "Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n"
diff --git a/po/it.gmo b/po/it.gmo
index eb64ca0..27f0d7a 100644
--- a/po/it.gmo
+++ b/po/it.gmo
Binary files differ
diff --git a/po/it.po b/po/it.po
index ef82165..efff9b4 100644
--- a/po/it.po
+++ b/po/it.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-ugly 0.10.11.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2017-02-23 15:19+0200\n"
+"POT-Creation-Date: 2017-05-04 15:12+0300\n"
 "PO-Revision-Date: 2009-06-14 12:31+0200\n"
 "Last-Translator: Luca Ferretti <elle.uca@infinito.it>\n"
 "Language-Team: Italian <tp@lists.linux.it>\n"
diff --git a/po/ja.gmo b/po/ja.gmo
index a7a7a0f..b94646a 100644
--- a/po/ja.gmo
+++ b/po/ja.gmo
Binary files differ
diff --git a/po/ja.po b/po/ja.po
index c291098..45de9ef 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-ugly 1.0.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2017-02-23 15:19+0200\n"
+"POT-Creation-Date: 2017-05-04 15:12+0300\n"
 "PO-Revision-Date: 2012-12-22 19:42+0900\n"
 "Last-Translator: Takeshi Hamasaki <hmatrjp@users.sourceforge.jp>\n"
 "Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
diff --git a/po/lt.gmo b/po/lt.gmo
index 6d3205a..fc0f9f0 100644
--- a/po/lt.gmo
+++ b/po/lt.gmo
Binary files differ
diff --git a/po/lt.po b/po/lt.po
index f72f700..519b608 100644
--- a/po/lt.po
+++ b/po/lt.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-ugly-0.10.7.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2017-02-23 15:19+0200\n"
+"POT-Creation-Date: 2017-05-04 15:12+0300\n"
 "PO-Revision-Date: 2008-05-14 02:52+0300\n"
 "Last-Translator: Gintautas Miliauskas <gintas@akl.lt>\n"
 "Language-Team: Lithuanian <komp_lt@konferencijos.lt>\n"
diff --git a/po/lv.gmo b/po/lv.gmo
index e50a0c8..67a9f4c 100644
--- a/po/lv.gmo
+++ b/po/lv.gmo
Binary files differ
diff --git a/po/lv.po b/po/lv.po
index c0ad3be..8277d4c 100644
--- a/po/lv.po
+++ b/po/lv.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-ugly 1.2.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2017-02-23 15:19+0200\n"
+"POT-Creation-Date: 2017-05-04 15:12+0300\n"
 "PO-Revision-Date: 2014-04-20 16:24+0300\n"
 "Last-Translator: Rihards Prieditis <rprieditis@gmail.com>\n"
 "Language-Team: Latvian <translation-team-lv@lists.sourceforge.net>\n"
diff --git a/po/meson.build b/po/meson.build
new file mode 100644
index 0000000..0644277
--- /dev/null
+++ b/po/meson.build
@@ -0,0 +1,9 @@
+i18n = import('i18n')
+
+langs = [ 'af', 'az', 'bg', 'ca', 'cs', 'da', 'de', 'el',
+  'en_GB', 'eo', 'es', 'eu', 'fi', 'fr', 'gl', 'hr',
+ 'hu', 'id', 'it', 'ja', 'lt', 'lv', 'ms', 'mt',
+ 'nb', 'nl', 'or', 'pl', 'pt_BR', 'ro', 'ru', 'sk', 'sl',
+ 'sq', 'sr', 'sv', 'tr', 'uk', 'vi', 'zh_CN' ]
+
+i18n.gettext('gst-plugins-ugly-1.0', languages : langs)
diff --git a/po/ms.gmo b/po/ms.gmo
index 17eb1e3..c7d7430 100644
--- a/po/ms.gmo
+++ b/po/ms.gmo
Binary files differ
diff --git a/po/ms.po b/po/ms.po
index c5f481d..7ed29d8 100644
--- a/po/ms.po
+++ b/po/ms.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-ugly-0.10.11.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2017-02-23 15:19+0200\n"
+"POT-Creation-Date: 2017-05-04 15:12+0300\n"
 "PO-Revision-Date: 2009-07-16 15:07+0800\n"
 "Last-Translator: Muhammad Najmi bin Ahmad Zabidi <najmi.zabidi@gmail.com>\n"
 "Language-Team: Malay <translation-team-ms@lists.sourceforge.net>\n"
diff --git a/po/mt.gmo b/po/mt.gmo
index 6b663a1..fb166e5 100644
--- a/po/mt.gmo
+++ b/po/mt.gmo
Binary files differ
diff --git a/po/mt.po b/po/mt.po
index 0fa01c8..3d0c18b 100644
--- a/po/mt.po
+++ b/po/mt.po
@@ -5,7 +5,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-ugly-0.10.9.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2017-02-23 15:19+0200\n"
+"POT-Creation-Date: 2017-05-04 15:12+0300\n"
 "PO-Revision-Date: 2008-11-13 18:18+0100\n"
 "Last-Translator: Michel Bugeja <michelbugeja@rabatmalta.com>\n"
 "Language-Team: Maltese <translation-team-mt@lists.sourceforge.net>\n"
diff --git a/po/nb.gmo b/po/nb.gmo
index f7f3852..2392644 100644
--- a/po/nb.gmo
+++ b/po/nb.gmo
Binary files differ
diff --git a/po/nb.po b/po/nb.po
index 67ae8d0..6815663 100644
--- a/po/nb.po
+++ b/po/nb.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-ugly 1.0.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2017-02-23 15:19+0200\n"
+"POT-Creation-Date: 2017-05-04 15:12+0300\n"
 "PO-Revision-Date: 2012-12-21 21:38+0100\n"
 "Last-Translator: Johnny A. Solbu <johnny@solbu.net>\n"
 "Language-Team: Norwegian Bokmaal <i18n-nb@lister.ping.uio.no>\n"
diff --git a/po/nl.gmo b/po/nl.gmo
index e41996c..a5289b7 100644
--- a/po/nl.gmo
+++ b/po/nl.gmo
Binary files differ
diff --git a/po/nl.po b/po/nl.po
index f039441..ba3a730 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-ugly 1.5.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2017-02-23 15:19+0200\n"
+"POT-Creation-Date: 2017-05-04 15:12+0300\n"
 "PO-Revision-Date: 2015-06-13 13:05+0200\n"
 "Last-Translator: Freek de Kruijf <f.de.kruijf@gmail.com>\n"
 "Language-Team: Dutch <vertaling@vrijschrift.org>\n"
diff --git a/po/or.gmo b/po/or.gmo
index 6dccbda..36e13e8 100644
--- a/po/or.gmo
+++ b/po/or.gmo
Binary files differ
diff --git a/po/or.po b/po/or.po
index 91c2cfd..ae780d3 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: 2017-02-23 15:19+0200\n"
+"POT-Creation-Date: 2017-05-04 15:12+0300\n"
 "PO-Revision-Date: 2004-09-27 13:32+0530\n"
 "Last-Translator: Gora Mohanty <gora_mohanty@yahoo.co.in>\n"
 "Language-Team: Oriya <gora_mohanty@yahoo.co.in>\n"
diff --git a/po/pl.gmo b/po/pl.gmo
index 4422193..d4d5813 100644
--- a/po/pl.gmo
+++ b/po/pl.gmo
Binary files differ
diff --git a/po/pl.po b/po/pl.po
index 17949bb..7499545 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-ugly 1.0.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2017-02-23 15:19+0200\n"
+"POT-Creation-Date: 2017-05-04 15:12+0300\n"
 "PO-Revision-Date: 2012-11-28 19:34+0100\n"
 "Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n"
 "Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo
index d0130e1..5afb803 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 6ab3ca2..9df6fc6 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-ugly-1.7.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2017-02-23 15:19+0200\n"
+"POT-Creation-Date: 2017-05-04 15:12+0300\n"
 "PO-Revision-Date: 2015-12-28 19:54-0200\n"
 "Last-Translator: Fabrício Godoy <skarllot@gmail.com>\n"
 "Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge."
diff --git a/po/ro.gmo b/po/ro.gmo
index 597a18f..6272bdf 100644
--- a/po/ro.gmo
+++ b/po/ro.gmo
Binary files differ
diff --git a/po/ro.po b/po/ro.po
index d18b06a..78f6455 100644
--- a/po/ro.po
+++ b/po/ro.po
@@ -5,7 +5,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-ugly 0.10.14.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2017-02-23 15:19+0200\n"
+"POT-Creation-Date: 2017-05-04 15:12+0300\n"
 "PO-Revision-Date: 2010-08-16 03:32+0300\n"
 "Last-Translator: Lucian Adrian Grijincu <lucian.grijincu@gmail.com>\n"
 "Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n"
diff --git a/po/ru.gmo b/po/ru.gmo
index 195f8b0..36e8b04 100644
--- a/po/ru.gmo
+++ b/po/ru.gmo
Binary files differ
diff --git a/po/ru.po b/po/ru.po
index 620552e..2fd68ac 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-ugly 1.0.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2017-02-23 15:19+0200\n"
+"POT-Creation-Date: 2017-05-04 15:12+0300\n"
 "PO-Revision-Date: 2012-12-01 13:38+0400\n"
 "Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n"
 "Language-Team: Russian <gnu@mx.ru>\n"
diff --git a/po/sk.gmo b/po/sk.gmo
index 93db3f3..d2c6a30 100644
--- a/po/sk.gmo
+++ b/po/sk.gmo
Binary files differ
diff --git a/po/sk.po b/po/sk.po
index a8c8f90..631a5fb 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-ugly 1.2.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2017-02-23 15:19+0200\n"
+"POT-Creation-Date: 2017-05-04 15:12+0300\n"
 "PO-Revision-Date: 2014-01-30 10:28+0100\n"
 "Last-Translator: Peter Tuharsky <tuharsky@misbb.sk>\n"
 "Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"
diff --git a/po/sl.gmo b/po/sl.gmo
index bfa396c..8a04c17 100644
--- a/po/sl.gmo
+++ b/po/sl.gmo
Binary files differ
diff --git a/po/sl.po b/po/sl.po
index 9a52c45..b0e8538 100644
--- a/po/sl.po
+++ b/po/sl.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-ugly 0.10.17.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2017-02-23 15:19+0200\n"
+"POT-Creation-Date: 2017-05-04 15:12+0300\n"
 "PO-Revision-Date: 2012-03-26 22:48+0100\n"
 "Last-Translator: Klemen Košir <klemen.kosir@gmx.com>\n"
 "Language-Team: Slovenian <translation-team-sl@lists.sourceforge.net>\n"
diff --git a/po/sq.gmo b/po/sq.gmo
index c00f34b..b3ef970 100644
--- a/po/sq.gmo
+++ b/po/sq.gmo
Binary files differ
diff --git a/po/sq.po b/po/sq.po
index 9f61ee4..2a46a3c 100644
--- a/po/sq.po
+++ b/po/sq.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins 0.8.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2017-02-23 15:19+0200\n"
+"POT-Creation-Date: 2017-05-04 15:12+0300\n"
 "PO-Revision-Date: 2004-08-07 20:29+0200\n"
 "Last-Translator: Laurent Dhima <laurenti@alblinux.net>\n"
 "Language-Team: Albanian <begraj@hotmail.com>\n"
diff --git a/po/sr.gmo b/po/sr.gmo
index c43d5d9..aa61b95 100644
--- a/po/sr.gmo
+++ b/po/sr.gmo
Binary files differ
diff --git a/po/sr.po b/po/sr.po
index 24d8744..797982c 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -5,7 +5,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-ugly-1.1.4\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2017-02-23 15:19+0200\n"
+"POT-Creation-Date: 2017-05-04 15:12+0300\n"
 "PO-Revision-Date: 2013-10-03 22:30+0200\n"
 "Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
 "Language-Team: Serbian <(nothing)>\n"
diff --git a/po/sv.gmo b/po/sv.gmo
index 15841d0..1594358 100644
--- a/po/sv.gmo
+++ b/po/sv.gmo
Binary files differ
diff --git a/po/sv.po b/po/sv.po
index b0ba358..ca53ac8 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-ugly 1.6.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2017-02-23 15:19+0200\n"
+"POT-Creation-Date: 2017-05-04 15:12+0300\n"
 "PO-Revision-Date: 2015-10-31 16:08+0100\n"
 "Last-Translator: Sebastian Rasmussen <sebras@gmail.com>\n"
 "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
diff --git a/po/tr.gmo b/po/tr.gmo
index 145903b..5725255 100644
--- a/po/tr.gmo
+++ b/po/tr.gmo
Binary files differ
diff --git a/po/tr.po b/po/tr.po
index c98e514..9ec3f26 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-ugly-1.0.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2017-02-23 15:19+0200\n"
+"POT-Creation-Date: 2017-05-04 15:12+0300\n"
 "PO-Revision-Date: 2012-12-01 01:19+0200\n"
 "Last-Translator: Server Acim <serveracim@gmail.com>\n"
 "Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
diff --git a/po/uk.gmo b/po/uk.gmo
index bda0cf3..67ed1a0 100644
--- a/po/uk.gmo
+++ b/po/uk.gmo
Binary files differ
diff --git a/po/uk.po b/po/uk.po
index 1c5022c..94627a1 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-ugly 1.0.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2017-02-23 15:19+0200\n"
+"POT-Creation-Date: 2017-05-04 15:12+0300\n"
 "PO-Revision-Date: 2012-11-28 20:25+0200\n"
 "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
 "Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>\n"
diff --git a/po/vi.gmo b/po/vi.gmo
index ba35d6f..133efc5 100644
--- a/po/vi.gmo
+++ b/po/vi.gmo
Binary files differ
diff --git a/po/vi.po b/po/vi.po
index 4f9fa36..8072595 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-ugly 1.3.90\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2017-02-23 15:19+0200\n"
+"POT-Creation-Date: 2017-05-04 15:12+0300\n"
 "PO-Revision-Date: 2014-06-30 09:20+0700\n"
 "Last-Translator: Trần Ngọc Quân <vnwildman@gmail.com>\n"
 "Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n"
diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo
index f855c13..53aa64f 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 9049350..e298b75 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -10,7 +10,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-ugly 1.5.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2017-02-23 15:19+0200\n"
+"POT-Creation-Date: 2017-05-04 15:12+0300\n"
 "PO-Revision-Date: 2015-08-28 15:36+0800\n"
 "Last-Translator: Mingye Wang <arthur200126@gmail.com>\n"
 "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
diff --git a/tests/Makefile.in b/tests/Makefile.in
index d308351..650cfb0 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -345,8 +345,6 @@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
 LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-MAD_CFLAGS = @MAD_CFLAGS@
-MAD_LIBS = @MAD_LIBS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
diff --git a/tests/check/Makefile.in b/tests/check/Makefile.in
index fe91673..7230c1f 100644
--- a/tests/check/Makefile.in
+++ b/tests/check/Makefile.in
@@ -596,8 +596,6 @@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
 LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-MAD_CFLAGS = @MAD_CFLAGS@
-MAD_LIBS = @MAD_LIBS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
diff --git a/tests/check/meson.build b/tests/check/meson.build
new file mode 100644
index 0000000..f420303
--- /dev/null
+++ b/tests/check/meson.build
@@ -0,0 +1,60 @@
+# name, condition when to skip the test and extra dependencies
+ugly_tests = [
+  [ 'elements/amrnbenc', not amrnb_dep.found() ],
+  [ 'elements/mpeg2dec', not mpeg2_dep.found() ],
+  [ 'elements/mpg123audiodec', not mpg123_dep.found() ],
+  [ 'elements/x264enc', not x264_dep.found() ],
+  [ 'elements/xingmux' ],
+  [ 'generic/states' ],
+  [ 'pipelines/lame', not lame_dep.found() ],
+]
+
+test_defines = [
+  '-UG_DISABLE_ASSERT',
+  '-UG_DISABLE_CAST_CHECKS',
+  '-DGST_CHECK_TEST_ENVIRONMENT_BEACON="GST_PLUGIN_LOADING_WHITELIST"',
+  '-DGST_TEST_FILES_PATH="' + meson.current_source_dir() + '/../files"',
+  '-DGST_USE_UNSTABLE_API',
+]
+
+pluginsdirs = []
+if gst_dep.type_name() == 'pkgconfig'
+  pbase = dependency('gstreamer-plugins-base-' + api_version, required : false)
+  pluginsdirs = [gst_dep.get_pkgconfig_variable('pluginsdir'),
+                 pbase.get_pkgconfig_variable('pluginsdir')]
+endif
+
+test_deps = [gst_dep, gstbase_dep, gstcheck_dep, gstaudio_dep, gstapp_dep, gstfft_dep]
+
+libm = cc.find_library('m', required : false)
+
+# FIXME: valgrind_args: add suppressions $(top_srcdir)/common/gst.supp $(srcdir)/gst-plugins-ugly.supp
+
+foreach t : ugly_tests
+  test_name = t.get(0)
+  extra_deps = [ ]
+  if t.length() == 3
+    extra_deps = t.get(2)
+    skip_test = t.get(1)
+  elif t.length() == 2
+    skip_test = t.get(1)
+  else
+    skip_test = false
+  endif
+  if not skip_test
+    exe = executable(test_name, '@0@.c'.format(test_name),
+      include_directories : [configinc],
+      c_args : ['-DHAVE_CONFIG_H=1' ] + test_defines,
+      dependencies : [libm] + test_deps + extra_deps,
+    )
+
+    env = environment()
+    env.set('GST_PLUGIN_SYSTEM_PATH_1_0', '')
+    env.set('CK_DEFAULT_TIMEOUT', '20')
+    env.set('GST_PLUGIN_LOADING_WHITELIST', 'gstreamer', 'gst-plugins-base',
+      'gst-plugins-good', 'gst-plugins-ugly@' + meson.build_root(), separator: ':')
+    env.set('GST_PLUGIN_PATH_1_0', [meson.build_root()] + pluginsdirs)
+    env.set('GST_REGISTRY', '@0@/@1@.registry'.format(meson.current_build_dir(), test_name))
+    test(test_name, exe, env: env, timeout: 3 * 60)
+  endif
+endforeach
diff --git a/tests/files/Makefile.in b/tests/files/Makefile.in
index 1756875..3b067fa 100644
--- a/tests/files/Makefile.in
+++ b/tests/files/Makefile.in
@@ -286,8 +286,6 @@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
 LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-MAD_CFLAGS = @MAD_CFLAGS@
-MAD_LIBS = @MAD_LIBS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
diff --git a/tests/meson.build b/tests/meson.build
new file mode 100644
index 0000000..cd3aa67
--- /dev/null
+++ b/tests/meson.build
@@ -0,0 +1,3 @@
+if host_machine.system() != 'windows'
+  subdir('check')
+endif
diff --git a/win32/MANIFEST b/win32/MANIFEST
deleted file mode 100644
index 35c6443..0000000
--- a/win32/MANIFEST
+++ /dev/null
@@ -1,2 +0,0 @@
-win32/MANIFEST
-win32/common/config.h
diff --git a/win32/common/config.h b/win32/common/config.h
deleted file mode 100644
index 6dff224..0000000
--- a/win32/common/config.h
+++ /dev/null
@@ -1,311 +0,0 @@
-/* Autogenerated config.h created for win32 Visual Studio builds */
-
-/* PREFIX -- specifically added for Windows for easier moving */
-#define PREFIX "C:\\gstreamer"
-
-
-
-/* Define if building universal (internal helper macro) */
-#undef AC_APPLE_UNIVERSAL_BUILD
-
-/* Default audio sink */
-#define DEFAULT_AUDIOSINK "directsoundsink"
-
-/* Default audio source */
-#define DEFAULT_AUDIOSRC "audiotestsrc"
-
-/* Default video sink */
-#undef DEFAULT_VIDEOSINK
-
-/* Default video source */
-#define DEFAULT_VIDEOSRC "videotestsrc"
-
-/* Default visualizer */
-#define DEFAULT_VISUALIZER "goom"
-
-/* Disable Orc */
-#undef DISABLE_ORC
-
-/* Define to 1 if translation of program messages to the user's native
-   language is requested. */
-#undef ENABLE_NLS
-
-/* gettext package name */
-#define GETTEXT_PACKAGE "gst-plugins-ugly-1.0"
-
-/* The GIO library directory. */
-#undef GIO_LIBDIR
-
-/* The GIO modules directory. */
-#undef GIO_MODULE_DIR
-
-/* The GIO install prefix. */
-#undef GIO_PREFIX
-
-/* GStreamer API Version */
-#define GST_API_VERSION "1.0"
-
-/* Define if extra runtime checks should be enabled */
-#undef GST_ENABLE_EXTRA_CHECKS
-
-/* macro to use to show function name */
-#undef GST_FUNCTION
-
-/* Defined if gcov is enabled to force a rebuild due to config.h changing */
-#undef GST_GCOV_ENABLED
-
-/* Default errorlevel to use */
-#define GST_LEVEL_DEFAULT GST_LEVEL_ERROR
-
-/* GStreamer license */
-#define GST_LICENSE "LGPL"
-
-/* package name in plugins */
-#define GST_PACKAGE_NAME "GStreamer Ugly Plug-ins source release"
-
-/* package origin */
-#define GST_PACKAGE_ORIGIN "Unknown package origin"
-
-/* GStreamer package release date/time for plugins as YYYY-MM-DD */
-#define GST_PACKAGE_RELEASE_DATETIME "2017-02-23"
-
-/* Define if static plugins should be built */
-#undef GST_PLUGIN_BUILD_STATIC
-
-/* Define to enable a52dec (used by a52dec). */
-#undef HAVE_A52DEC
-
-/* Define to enable amrnb library (used by amrnb). */
-#undef HAVE_AMRNB
-
-/* Define to enable amrwb library (used by amrwbdec). */
-#undef HAVE_AMRWB
-
-/* Define to enable cdio library (used by cdio). */
-#undef HAVE_CDIO
-
-/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the
-   CoreFoundation framework. */
-#undef HAVE_CFLOCALECOPYCURRENT
-
-/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in
-   the CoreFoundation framework. */
-#undef HAVE_CFPREFERENCESCOPYAPPVALUE
-
-/* Define if the target CPU is AARCH64 */
-#undef HAVE_CPU_AARCH64
-
-/* Define if the target CPU is an Alpha */
-#undef HAVE_CPU_ALPHA
-
-/* Define if the target CPU is an ARC */
-#undef HAVE_CPU_ARC
-
-/* Define if the target CPU is an ARM */
-#undef HAVE_CPU_ARM
-
-/* Define if the target CPU is a CRIS */
-#undef HAVE_CPU_CRIS
-
-/* Define if the target CPU is a CRISv32 */
-#undef HAVE_CPU_CRISV32
-
-/* Define if the target CPU is a HPPA */
-#undef HAVE_CPU_HPPA
-
-/* Define if the target CPU is an x86 */
-#define HAVE_CPU_I386 1
-
-/* Define if the target CPU is a IA64 */
-#undef HAVE_CPU_IA64
-
-/* Define if the target CPU is a M68K */
-#undef HAVE_CPU_M68K
-
-/* Define if the target CPU is a MIPS */
-#undef HAVE_CPU_MIPS
-
-/* Define if the target CPU is a PowerPC */
-#undef HAVE_CPU_PPC
-
-/* Define if the target CPU is a 64 bit PowerPC */
-#undef HAVE_CPU_PPC64
-
-/* Define if the target CPU is a S390 */
-#undef HAVE_CPU_S390
-
-/* Define if the target CPU is a SPARC */
-#undef HAVE_CPU_SPARC
-
-/* Define if the target CPU is a x86_64 */
-#undef HAVE_CPU_X86_64
-
-/* Define if the GNU dcgettext() function is already present or preinstalled.
-   */
-#undef HAVE_DCGETTEXT
-
-/* Define to 1 if you have the <dlfcn.h> header file. */
-#undef HAVE_DLFCN_H
-
-/* define for working do while(0) macros */
-#undef HAVE_DOWHILE_MACROS
-
-/* Define to enable dvdread library (used by dvdreadsrc). */
-#undef HAVE_DVDREAD
-
-/* Define to enable building of experimental plug-ins. */
-#undef HAVE_EXPERIMENTAL
-
-/* Define to enable building of plug-ins with external deps. */
-#undef HAVE_EXTERNAL
-
-/* defined if the compiler implements __func__ */
-#undef HAVE_FUNC
-
-/* defined if the compiler implements __FUNCTION__ */
-#undef HAVE_FUNCTION
-
-/* Define if the GNU gettext() function is already present or preinstalled. */
-#undef HAVE_GETTEXT
-
-/* Define if you have the iconv() function and it works. */
-#undef HAVE_ICONV
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#undef HAVE_INTTYPES_H
-
-/* Define to enable lame mp3 encoder library (used by lame). */
-#undef HAVE_LAME
-
-/* Define to enable mad mp3 decoder (used by mad). */
-#undef HAVE_MAD
-
-/* Define to 1 if you have the <malloc.h> header file. */
-#undef HAVE_MALLOC_H
-
-/* Define to 1 if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
-/* Define to enable mpeg2dec (used by mpeg2dec). */
-#undef HAVE_MPEG2DEC
-
-/* Define to enable mpg123 audio decoder (used by mpg123). */
-#undef HAVE_MPG123
-
-/* Use Orc */
-#undef HAVE_ORC
-
-/* defined if the compiler implements __PRETTY_FUNCTION__ */
-#undef HAVE_PRETTY_FUNCTION
-
-/* Define if RDTSC is available */
-#undef HAVE_RDTSC
-
-/* Define to enable libsidplay (used by sid). */
-#undef HAVE_SIDPLAY
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#undef HAVE_STDINT_H
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#define HAVE_STDLIB_H 1
-
-/* Define to 1 if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
-
-/* Define to 1 if you have the <string.h> header file. */
-#define HAVE_STRING_H 1
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#define HAVE_SYS_STAT_H 1
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#define HAVE_SYS_TYPES_H 1
-
-/* Define to enable twolame (used by twolame). */
-#undef HAVE_TWOLAME
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
-
-/* Define if valgrind should be used */
-#undef HAVE_VALGRIND
-
-/* Define to 1 if you have the <winsock2.h> header file. */
-#define HAVE_WINSOCK2_H 1
-
-/* Define to enable x264 plug-in (used by x264). */
-#undef HAVE_X264
-
-/* the host CPU */
-#define HOST_CPU "i686"
-
-/* gettext locale dir */
-#define LOCALEDIR PREFIX "\\share\\locale"
-
-/* Define to the sub-directory where libtool stores uninstalled libraries. */
-#undef LT_OBJDIR
-
-/* Name of package */
-#define PACKAGE "gst-plugins-ugly"
-
-/* Define to the address where bug reports for this package should be sent. */
-#define PACKAGE_BUGREPORT "http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer"
-
-/* Define to the full name of this package. */
-#define PACKAGE_NAME "GStreamer Ugly Plug-ins"
-
-/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "GStreamer Ugly Plug-ins 1.10.4"
-
-/* Define to the one symbol short name of this package. */
-#define PACKAGE_TARNAME "gst-plugins-ugly"
-
-/* Define to the home page for this package. */
-#undef PACKAGE_URL
-
-/* Define to the version of this package. */
-#define PACKAGE_VERSION "1.10.4"
-
-/* directory where plugins are located */
-#ifdef _DEBUG
-#  define PLUGINDIR PREFIX "\\debug\\lib\\gstreamer-0.11"
-#else
-#  define PLUGINDIR PREFIX "\\lib\\gstreamer-0.11"
-#endif
-
-/* The size of `char', as computed by sizeof. */
-#undef SIZEOF_CHAR
-
-/* The size of `int', as computed by sizeof. */
-#undef SIZEOF_INT
-
-/* The size of `long', as computed by sizeof. */
-#undef SIZEOF_LONG
-
-/* The size of `short', as computed by sizeof. */
-#undef SIZEOF_SHORT
-
-/* The size of `void*', as computed by sizeof. */
-#undef SIZEOF_VOIDP
-
-/* Define to 1 if you have the ANSI C header files. */
-#undef STDC_HEADERS
-
-/* the target CPU */
-#undef TARGET_CPU
-
-/* Version number of package */
-#define VERSION "1.10.4"
-
-/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
-   significant byte first (like Motorola and SPARC, unlike Intel). */
-#if defined AC_APPLE_UNIVERSAL_BUILD
-# if defined __BIG_ENDIAN__
-#  define WORDS_BIGENDIAN 1
-# endif
-#else
-# ifndef WORDS_BIGENDIAN
-#  undef WORDS_BIGENDIAN
-# endif
-#endif