diff --git a/ChangeLog b/ChangeLog
index 5b204ca..dbbf440 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,17 +1,127 @@
-=== release 1.10.2 ===
+=== release 1.11.1 ===
 
-2016-11-29  Sebastian Dröge <slomo@coaxion.net>
+2017-01-12  Sebastian Dröge <slomo@coaxion.net>
 
 	* configure.ac:
-	  releasing 1.10.2
+	  releasing 1.11.1
 
-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:
@@ -80,95 +190,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..6462feb 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -2,16 +2,11 @@
 
 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)
-	
+	ChangeLog gst-plugins-ugly.doap autogen.sh
 
 DISTCLEANFILES = _stdint.h
 
@@ -35,20 +30,19 @@
 	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
 
 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 0336a9d..1ca118d 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,13 +198,11 @@
 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 depcomp install-sh ltmain.sh missing
+	config.rpath config.sub install-sh ltmain.sh missing
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 distdir = $(PACKAGE)-$(VERSION)
 top_distdir = $(distdir)
@@ -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,23 @@
 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)
+	ChangeLog gst-plugins-ugly.doap autogen.sh
 
 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
 
 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 +537,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 +559,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 +584,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
@@ -776,9 +757,6 @@
 	      || exit 1; \
 	  fi; \
 	done
-	$(MAKE) $(AM_MAKEFLAGS) \
-	  top_distdir="$(top_distdir)" distdir="$(distdir)" \
-	  dist-hook
 	-test -n "$(am__skip_mode_fix)" \
 	|| find "$(distdir)" -type d ! -perm -755 \
 		-exec chmod u+rwx,go+rx {} \; -o \
@@ -1021,93 +999,23 @@
 .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am all-local \
 	am--refresh check check-am clean clean-cscope clean-generic \
 	clean-libtool cscope cscopelist-am ctags ctags-am dist \
-	dist-all dist-bzip2 dist-gzip dist-hook dist-lzip dist-shar \
-	dist-tarZ dist-xz dist-zip distcheck distclean \
-	distclean-generic distclean-hdr distclean-libtool \
-	distclean-tags distcleancheck distdir distuninstallcheck 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-ps install-ps-am install-strip \
-	installcheck installcheck-am installdirs installdirs-am \
-	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags tags-am uninstall uninstall-am
+	dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \
+	dist-xz dist-zip distcheck distclean distclean-generic \
+	distclean-hdr distclean-libtool distclean-tags distcleancheck \
+	distdir distuninstallcheck 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-ps \
+	install-ps-am install-strip installcheck installcheck-am \
+	installdirs installdirs-am maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
+	uninstall-am
 
 .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
@@ -1158,10 +1066,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 815dee3..a940f7b 100644
--- a/NEWS
+++ b/NEWS
@@ -1,1162 +1 @@
-# GStreamer 1.10 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.2](#1.10.2) and was
-released on 29 November 2016.
-
-The GStreamer team is proud to announce a new major feature release in the
-stable 1.x API series of your favourite cross-platform multimedia framework!
-
-As always, this release is again packed with new features, bug fixes and other
-improvements.
-
-See [https://gstreamer.freedesktop.org/releases/1.10/][latest] for the latest
-version of this document.
-
-*Last updated: Tuesday 29 Nov 2016, 12:30 UTC [(log)][gitlog]*
-
-[latest]: https://gstreamer.freedesktop.org/releases/1.10/
-[gitlog]: https://cgit.freedesktop.org/gstreamer/www/log/src/htdocs/releases/1.10/release-notes-1.10.md
-
-## Introduction
-
-The GStreamer team is proud to announce a new major feature release in the
-stable 1.x API series of your favourite cross-platform multimedia framework!
-
-As always, this release is again packed with new features, bug fixes and other
-improvements.
-
-## Highlights
-
-- Several convenience APIs have been added to make developers' lives easier
-- A new `GstStream` API provides applications a more meaningful view of the
-  structure of streams, simplifying the process of dealing with media in
-  complex container formats
-- Experimental `decodebin3` and `playbin3` elements which bring a number of
-  improvements which were hard to implement within `decodebin` and `playbin`
-- A new `parsebin` element to automatically unpack and parse a stream, stopping
-  just short of decoding
-- Experimental new `meson`-based build system, bringing faster build and much
-  better Windows support (including for building with Visual Studio)
-- A new `gst-docs` module has been created, and we are in the process of moving
-  our documentation to a markdown-based format for easier maintenance and
-  updates
-- A new `gst-examples` module has been 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!
-
-## Major new features and changes
-
-### Noteworthy new API, features and other changes
-
-#### Core API additions
-
-##### Receive property change notifications via bus messages
-
-New API was added to receive element property change notifications via
-bus messages. So far, applications had to connect a callback to an element's
-`notify::property-name` signal via the GObject API, which was inconvenient for
-at least two reasons: one had to implement a signal callback function, and that
-callback function would usually be called from one of the streaming threads, so
-one had to marshal (send) any information gathered or pending requests to the
-main application thread which was tedious and error-prone.
-
-Enter [`gst_element_add_property_notify_watch()`][notify-watch] and
-[`gst_element_add_property_deep_notify_watch()`][deep-notify-watch] which will
-watch for changes of a property on the specified element, either only for this
-element or recursively for a whole bin or pipeline. Whenever such a
-property change happens, a `GST_MESSAGE_PROPERTY_NOTIFY` message will be posted
-on the pipeline bus with details of the element, the property and the new
-property value, all of which can be retrieved later from the message in the
-application via [`gst_message_parse_property_notify()`][parse-notify]. Unlike
-the GstBus watch functions, this API does not rely on a running GLib main loop.
-
-The above can be used to be notified asynchronously of caps changes in the
-pipeline, or volume changes on an audio sink element, for example.
-
-[notify-watch]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#gst-element-add-property-notify-watch
-[deep-notify-watch]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#gst-element-add-property-deep-notify-watch
-[parse-notify]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstMessage.html#gst-message-parse-property-notify
-
-##### GstBin "deep" element-added and element-removed signals
-
-GstBin has gained `"deep-element-added"` and `"deep-element-removed"` signals
-which makes it easier for applications and higher-level plugins to track when
-elements are added or removed from a complex pipeline with multiple sub-bins.
-
-`playbin` makes use of this to implement the new `"element-setup"` signal which
-can be used to configure elements as they are added to `playbin`, just like the
-existing `"source-setup"` signal which can be used to configure the source
-element created.
-
-##### Error messages can contain additional structured details
-
-It is often useful to provide additional, structured information in error,
-warning or info messages for applications (or higher-level elements) to make
-intelligent decisions based on them. To allow this, error, warning and info
-messages now have API for adding arbitrary additional information to them
-using a `GstStructure`:
-[`GST_ELEMENT_ERROR_WITH_DETAILS`][element-error-with-details] and
-corresponding API for the other message types.
-
-This is now used e.g. by the new [`GST_ELEMENT_FLOW_ERROR`][element-flow-error]
-API to include the actual flow error in the error message, and the
-[souphttpsrc element][souphttpsrc-detailed-errors] to provide the HTTP
-status code, and the URL (if any) to which a redirection has happened.
-
-[element-error-with-details]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#GST-ELEMENT-ERROR-WITH-DETAILS:CAPS
-[element-flow-error]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#GST-ELEMENT-FLOW-ERROR:CAPS
-[souphttpsrc-detailed-errors]: https://cgit.freedesktop.org/gstreamer/gst-plugins-good/tree/ext/soup/gstsouphttpsrc.c?id=60d30db912a1aedd743e66b9dcd2e21d71fbb24f#n1318
-
-##### Redirect messages have official API now
-
-Sometimes, elements need to redirect the current stream URL and tell the
-application to proceed with this new URL, possibly using a different
-protocol too (thus changing the pipeline configuration). Until now, this was
-informally implemented using `ELEMENT` messages on the bus.
-
-Now this has been formalized in the form of a new `GST_MESSAGE_REDIRECT` message.
-A new redirect message can be created using [`gst_message_new_redirect()`][new-redirect].
-If needed, multiple redirect locations can be specified by calling
-[`gst_message_add_redirect_entry()`][add-redirect] to add further redirect
-entries, all with metadata, so the application can decide which is
-most suitable (e.g. depending on the bitrate tags).
-
-[new-redirect]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstMessage.html#gst-message-new-redirect
-[add-redirect]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstMessage.html#gst-message-add-redirect-entry
-
-##### New pad linking convenience functions that automatically create ghost pads
-
-New pad linking convenience functions were added:
-[`gst_pad_link_maybe_ghosting()`][pad-maybe-ghost] and
-[`gst_pad_link_maybe_ghosting_full()`][pad-maybe-ghost-full] which were
-previously internal to GStreamer have now been exposed for general use.
-
-The existing pad link functions will refuse to link pads or elements at
-different levels in the pipeline hierarchy, requiring the developer to
-create ghost pads where necessary. These new utility functions will
-automatically create ghostpads as needed when linking pads at different
-levels of the hierarchy (e.g. from an element inside a bin to one that's at
-the same level in the hierarchy as the bin, or in another bin).
-
-[pad-maybe-ghost]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#gst-pad-link-maybe-ghosting
-[pad-maybe-ghost-full]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#gst-pad-link-maybe-ghosting-full
-
-##### Miscellaneous
-
-Pad probes: IDLE and BLOCK probes now work slightly differently in pull mode,
-so that push and pull mode have opposite scenarios for idle and blocking probes.
-In push mode, it will block with some data type and IDLE won't have any data.
-In pull mode, it will block _before_ getting a buffer and will be IDLE once some
-data has been obtained. ([commit][commit-pad-probes], [bug][bug-pad-probes])
-
-[commit-pad-probes]: https://cgit.freedesktop.org/gstreamer/gstreamer/commit/gst/gstpad.c?id=368ee8a336d0c868d81fdace54b24431a8b48cbf
-[bug-pad-probes]: https://bugzilla.gnome.org/show_bug.cgi?id=761211
-
-[`gst_parse_launch_full()`][parse-launch-full] can now be made to return a
-`GstBin` instead of a top-level pipeline by passing the new
-`GST_PARSE_FLAG_PLACE_IN_BIN` flag.
-
-[parse-launch-full]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstParse.html#gst-parse-launch-full
-
-The default GStreamer debug log handler can now be removed before
-calling `gst_init()`, so that it will never get installed and won't be active
-during initialization.
-
-A new [`STREAM_GROUP_DONE` event][stream-group-done-event] was added. In some
-ways it works similar to the `EOS` event in that it can be used to unblock
-downstream elements which may be waiting for further data, such as for example
-`input-selector`. Unlike `EOS`, further data flow may happen after the
-`STREAM_GROUP_DONE` event though (and without the need to flush the pipeline).
-This is used to unblock input-selector when switching between streams in
-adaptive streaming scenarios (e.g. HLS).
-
-[stream-group-done-event]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html#gst-event-new-stream-group-done
-
-The `gst-launch-1.0` command line tool will now print unescaped caps in verbose
-mode (enabled by the -v switch).
-
-[`gst_element_call_async()`][call-async] has been added as convenience API for
-plugin developers. It is useful for one-shot operations that need to be done
-from a thread other than the current streaming thread. It is backed by a
-thread-pool that is shared by all elements.
-
-[call-async]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#gst-element-call-async
-
-Various race conditions have been fixed around the `GstPoll` API used by e.g.
-`GstBus` and `GstBufferPool`. Some of these manifested themselves primarily
-on Windows.
-
-`GstAdapter` can now keep track of discontinuities signalled via the `DISCONT`
-buffer flag, and has gained [new API][new-adapter-api] to track PTS, DTS and
-offset at the last discont. This is useful for plugins implementing advanced
-trick mode scenarios.
-
-[new-adapter-api]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/GstAdapter.html#gst-adapter-pts-at-discont
-
-`GstTestClock` gained a new [`"clock-type"` property][clock-type-prop].
-
-[clock-type-prop]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/GstTestClock.html#GstTestClock--clock-type
-
-#### GstStream API for stream announcement and stream selection
-
-New stream listing and stream selection API: new API has been added to
-provide high-level abstractions for streams ([`GstStream`][stream-api])
-and collections of streams ([`GstStreamCollections`][stream-collection-api]).
-
-##### Stream listing
-
-A [`GstStream`][stream-api] contains all the information pertinent to a stream,
-such as stream id, caps, tags, flags and stream type(s); it can represent a
-single elementary stream (e.g. audio, video, subtitles, etc.) or a container
-stream. This will depend on the context. In a decodebin3/playbin3 one
-it will typically be elementary streams that can be selected and unselected.
-
-A [`GstStreamCollection`][stream-collection-api] represents a group of streams
-and is used to announce or publish all available streams. A GstStreamCollection
-is immutable - once created it won't change. If the available streams change,
-e.g. because a new stream appeared or some streams disappeared, a new stream
-collection will be published. This new stream collection may contain streams
-from the previous collection if those streams persist, or completely new ones.
-Stream collections do not yet list all theoretically available streams,
-e.g. other available DVD angles or alternative resolutions/bitrate of the same
-stream in case of adaptive streaming.
-
-New events and messages have been added to notify or update other elements and
-the application about which streams are currently available and/or selected.
-This way, we can easily and seamlessly let the application know whenever the
-available streams change, as happens frequently with digital television streams
-for example. The new system is also more flexible. For example, it is now also
-possible for the application to select multiple streams of the same type
-(e.g. in a transcoding/transmuxing scenario).
-
-A [`STREAM_COLLECTION` message][stream-collection-msg] is posted on the bus
-to inform the parent bin (e.g. `playbin3`, `decodebin3`) and/or the application
-about what streams are available, so you no longer have to hunt for this
-information at different places. The available information includes number of
-streams of each type, caps, tags etc.  Bins and/or the application can intercept
-the message synchronously to select and deselect streams before any data is
-produced - for the case where elements such as the demuxers support the new
-stream API, not necessarily in the parsebin compatibility fallback case.
-
-Similarly, there is also a [`STREAM_COLLECTION` event][stream-collection-event]
-to inform downstream elements of the available streams. This event can be used
-by elements to aggregate streams from multiple inputs into one single collection.
-
-The `STREAM_START` event was extended so that it can also contain a GstStream
-object with all information about the current stream, see
-[`gst_event_set_stream()`][event-set-stream] and
-[`gst_event_parse_stream()`][event-parse-stream].
-[`gst_pad_get_stream()`][pad-get-stream] is a new utility function that can be
-used to look up the GstStream from the `STREAM_START` sticky event on a pad.
-
-[stream-api]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstStream.html
-[stream-collection-api]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstStreamCollection.html
-[stream-collection-msg]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstMessage.html#gst-message-new-stream-collection
-[stream-collection-event]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html#gst-event-new-stream-collection
-[event-set-stream]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html#gst-event-set-stream
-[event-parse-stream]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html#gst-event-parse-stream
-[pad-get-stream]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#gst-pad-get-stream
-
-##### Stream selection
-
-Once the available streams have been published, streams can be selected via
-their stream ID using the new `SELECT_STREAMS` event, which can be created
-with [`gst_event_new_select_streams()`][event-select-streams]. The new API
-supports selecting multiple streams per stream type. In the future, we may also
-implement explicit deselection of streams that will never be used, so
-elements can skip these and never expose them or output data for them in the
-first place.
-
-The application is then notified of the currently selected streams via the
-new `STREAMS_SELECTED` message on the pipeline bus, containing both the current
-stream collection as well as the selected streams. This might be posted in
-response to the application sending a `SELECT_STREAMS` event or when
-`decodebin3` or `playbin3` decide on the streams to be initially selected without
-application input.
-
-[event-select-streams]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html#gst-event-new-select-streams
-
-##### Further reading
-
-See further below for some notes on the new elements supporting this new
-stream API, namely: `decodebin3`, `playbin3` and `parsebin`.
-
-More information about the new API and the new elements can also be found here:
-
-- GStreamer [stream selection design docs][streams-design]
-- Edward Hervey's talk ["The new streams API: Design and usage"][streams-talk] ([slides][streams-slides])
-- Edward Hervey's talk ["Decodebin3: Dealing with modern playback use cases"][db3-talk] ([slides][db3-slides])
-
-[streams-design]: https://cgit.freedesktop.org/gstreamer/gstreamer/tree/docs/design/part-stream-selection.txt
-[streams-talk]: https://gstconf.ubicast.tv/videos/the-new-gststream-api-design-and-usage/
-[streams-slides]: https://gstreamer.freedesktop.org/data/events/gstreamer-conference/2016/Edward%20Hervey%20-%20The%20New%20Streams%20API%20Design%20and%20Usage.pdf
-[db3-talk]: https://gstconf.ubicast.tv/videos/decodebin3-or-dealing-with-modern-playback-use-cases/
-[db3-slides]: https://gstreamer.freedesktop.org/data/events/gstreamer-conference/2015/Edward%20Hervey%20-%20decodebin3.pdf
-
-#### Audio conversion and resampling API
-
-The audio conversion library received a completely new and rewritten audio
-resampler, complementing the audio conversion routines moved into the audio
-library in the [previous release][release-notes-1.8]. Integrating the resampler
-with the other audio conversion library allows us to implement generic
-conversion much more efficiently, as format conversion and resampling can now
-be done in the same processing loop instead of having to do it in separate
-steps (our element implementations do not make use of this yet though).
-
-The new audio resampler library is a combination of some of the best features
-of other samplers such as ffmpeg, speex and SRC. It natively supports S16, S32,
-F32 and F64 formats and uses optimized x86 and neon assembly for most of its
-processing. It also has support for dynamically changing sample rates by incrementally
-updating the filter tables using linear or cubic interpolation. According to
-some benchmarks, it's one of the fastest and most accurate resamplers around.
-
-The `audioresample` plugin has been ported to the new audio library functions
-to make use of the new resampler.
-
-[release-notes-1.8]: https://gstreamer.freedesktop.org/releases/1.8/
-
-#### Support for SMPTE timecodes
-
-Support for SMPTE timecodes was added to the GStreamer video library. This
-comes with an abstraction for timecodes, [`GstVideoTimeCode`][video-timecode]
-and a [`GstMeta`][video-timecode-meta] that can be placed on video buffers for
-carrying the timecode information for each frame. Additionally there is
-various API for making handling of timecodes easy and to do various
-calculations with them.
-
-A new plugin called [`timecode`][timecode-plugin] was added, that contains an
-element called `timecodestamper` for putting the timecode meta on video frames
-based on counting the frames and another element called `timecodewait` that
-drops all video (and audio) until a specific timecode is reached.
-
-Additionally support was added to the Decklink plugin for including the
-timecode information when sending video out or capturing it via SDI, the
-`qtmux` element is able to write timecode information into the MOV container,
-and the `timeoverlay` element can overlay timecodes on top of the video.
-
-More information can be found in the [talk about timecodes][timecode-talk] at
-the GStreamer Conference 2016.
-
-[video-timecode]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstvideo.html#GstVideoTimeCode
-[video-timecode-meta]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstvideometa.html#gst-buffer-add-video-time-code-meta
-[timecode-plugin]: https://cgit.freedesktop.org/gstreamer/gst-plugins-bad/tree/gst/timecode
-[timecode-talk]: https://gstconf.ubicast.tv/videos/smpte-timecodes-in-gstreamer/
-
-#### GStreamer OpenMAX IL plugin
-
-The last gst-omx release, 1.2.0, was in July 2014. It was about time to get
-a new one out with all the improvements that have happened in the meantime.
-From now on, we will try to release gst-omx together with all other modules.
-
-This release features a lot of bugfixes, improved support for the Raspberry Pi
-and in general improved support for zerocopy rendering via EGL and a few minor
-new features.
-
-At this point, gst-omx is known to work best on the Raspberry Pi platform but
-it is also known to work on various other platforms. Unfortunately, we are
-not including configurations for any other platforms, so if you happen to use
-gst-omx: please send us patches with your configuration and code changes!
-
-### New Elements
-
-#### decodebin3, playbin3, parsebin (experimental)
-
-This release features new decoding and playback elements as experimental
-technology previews: `decodebin3` and `playbin3` will soon supersede the
-existing `decodebin` and `playbin` elements. We skipped the number 2 because
-it was already used back in the 0.10 days, which might cause confusion.
-Experimental technology preview means that everything should work fine already,
-but we can't guarantee there won't be minor behavioural changes in the
-next cycle. In any case, please test and report any problems back.
-
-Before we go into detail about what these new elements improve, let's look at
-the new [`parsebin`][parsebin] element. It works similarly to `decodebin` and
-`decodebin3`, only that it stops one step short and does not plug any actual
-decoder elements. It will only plug parsers, tag readers, demuxers and
-depayloaders. Also note that parsebin does not contain any queueing element.
-
-[`decodebin3`'s][decodebin3] internal architecture is slightly different from
-the existing `decodebin` element and fixes many long-standing issues with our
-decoding engine. For one, data is now fed into the internal `multiqueue` element
-*after* it has been parsed and timestamped, which means that the `multiqueue`
-element now has more knowledge and is able to calculate the interleaving of the
-various streams, thus minimizing memory requirements and doing away with magic
-values for buffering limits that were conceived when videos were 240p or 360p.
-Anyone who has tried to play back 4k video streams with decodebin2
-will have noticed the limitations of that approach. The improved timestamp
-tracking also enables `multiqueue` to keep streams of the same type (audio,
-video) aligned better, making sure switching between streams of the same type
-is very fast.
-
-Another major improvement in `decodebin3` is that it will no longer decode
-streams that are not being used. With the old `decodebin` and `playbin`, when
-there were 8 audio streams we would always decode all 8 streams even
-if 7 were not actually used. This caused a lot of CPU overhead, which was
-particularly problematic on embedded devices. When switching between streams
-`decodebin3` will try hard to re-use existing decoders. This is useful when
-switching between multiple streams of the same type if they are encoded in the
-same format.
-
-Re-using decoders is also useful when the available streams change on the fly,
-as might happen with radio streams (chained Oggs), digital television
-broadcasts, when adaptive streaming streams change bitrate, or when switching
-gaplessly to the next title. In order to guarantee a seamless transition, the
-old `decodebin2` would plug a second decoder for the new stream while finishing
-up the old stream. With `decodebin3`, this is no longer needed - at least not
-when the new and old format are the same. This will be particularly useful
-on embedded systems where it is often not possible to run multiple decoders
-at the same time, or when tearing down and setting up decoders is fairly
-expensive.
-
-`decodebin3` also allows for multiple input streams, not just a single one.
-This will be useful, in the future, for gapless playback, or for feeding
-multiple external subtitle streams to decodebin/playbin.
-
-`playbin3` uses `decodebin3` internally, and will supercede `playbin`.
-It was decided that it would be too risky to make the old `playbin` use the
-new `decodebin3` in a backwards-compatible way. The new architecture
-makes it awkward, if not impossible, to maintain perfect backwards compatibility
-in some aspects, hence `playbin3` was born, and developers can migrate to the
-new element and new API at their own pace.
-
-All of these new elements make use of the new `GstStream` API for listing and
-selecting streams, as described above. `parsebin` provides backwards
-compatibility for demuxers and parsers which do not advertise their streams
-using the new API yet (which is most).
-
-The new elements are not entirely feature-complete yet: `playbin3` does not
-support so-called decodersinks yet where the data is not decoded inside
-GStreamer but passed directly for decoding to the sink. `decodebin3` is missing
-the various `autoplug-*` signals to influence which decoders get autoplugged
-in which order. We're looking to add back this functionality, but it will probably
-be in a different way, with a single unified signal and using GstStream perhaps.
-
-For more information on these new elements, check out Edward Hervey's talk
-[*decodebin3 - dealing with modern playback use cases*][db3-talk]
-
-[parsebin]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-plugins/html/gst-plugins-base-plugins-parsebin.html
-[decodebin3]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-plugins/html/gst-plugins-base-plugins-decodebin3.html
-[db3-talk]: https://gstconf.ubicast.tv/videos/decodebin3-or-dealing-with-modern-playback-use-cases/
-
-#### LV2 ported from 0.10 and switched from slv2 to lilv2
-
-The LV2 wrapper plugin has been ported to 1.0 and moved from using the
-deprecated slv2 library to its replacement liblv2. We support sources and
-filter elements. lv2 is short for *Linux Audio Developer's Simple Plugin API
-(LADSPA) version 2* and is an open standard for audio plugins which includes
-support for audio synthesis (generation), digital signal processing of digital
-audio, and MIDI. The new lv2 plugin supersedes the existing LADSPA plugin.
-
-#### WebRTC DSP Plugin for echo-cancellation, gain control and noise suppression
-
-A set of new elements ([webrtcdsp][webrtcdsp], [webrtcechoprobe][webrtcechoprobe])
-based on the WebRTC DSP software stack can now be used to improve your audio
-voice communication pipelines. They support echo cancellation, gain control,
-noise suppression and more. For more details you may read
-[Nicolas' blog post][webrtc-blog-post].
-
-[webrtcdsp]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-plugins/html/gst-plugins-bad-plugins-webrtcdsp.html
-[webrtcechoprobe]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-plugins/html/gst-plugins-bad-plugins-webrtcechoprobe.html
-[webrtc-blog-post]: https://ndufresne.ca/2016/06/gstreamer-echo-canceller/
-
-#### Fraunhofer FDK AAC encoder and decoder
-
-New encoder and decoder elements wrapping the Fraunhofer FDK AAC library have
-been added (`fdkaacdec`, `fdkaacdec`). The Fraunhofer FDK AAC encoder is
-generally considered to be a very high-quality AAC encoder, but unfortunately
-it comes under a non-free license with the option to obtain a paid, commercial
-license.
-
-### Noteworthy element features and additions
-
-#### Major RTP and RTSP improvements
-
-- The RTSP server and source element, as well as the RTP jitterbuffer now support
-  remote clock synchronization according to [RFC7273][https://tools.ietf.org/html/rfc7273].
-- Support for application and profile specific RTCP packets was added.
-- The H265/HEVC payloader/depayloader is again in sync with the final RFC.
-- Seeking stability of the RTSP source and server was improved a lot and
-  runs stably now, even when doing scrub-seeking.
-- The RTSP server received various major bugfixes, including for regressions that
-  caused the IP/port address pool to not be considered, or NAT hole punching
-  to not work anymore. [Bugzilla #766612][https://bugzilla.gnome.org/show_bug.cgi?id=766612]
-- Various other bugfixes that improve the stability of RTP and RTSP, including
-  many new unit / integration tests.
-
-#### Improvements to splitmuxsrc and splitmuxsink
-
-- The splitmux element received reliability and error handling improvements,
-  removing at least one deadlock case. `splitmuxsrc` now stops cleanly at the end
-  of the segment when handling seeks with a stop time. We fixed a bug with large
-  amounts of downstream buffering causing incorrect out-of-sequence playback.
-
-- `splitmuxsrc` now has a `"format-location"` signal to directly specify the list
-  of files to play from.
-
-- `splitmuxsink` can now optionally send force-keyunit events to upstream
-  elements to allow splitting files more accurately instead of having to wait
-  for upstream to provide a new keyframe by itself.
-
-#### OpenGL/GLES improvements
-
-##### iOS and macOS (OS/X)
-
-- We now create OpenGL|ES 3.x contexts on iOS by default with a fallback to
-  OpenGL|ES 2.x if that fails.
-- Various zerocopy decoding fixes and enhancements with the
-  encoding/decoding/capturing elements.
-- libdispatch is now used on all Apple platforms instead of GMainLoop, removing
-  the expensive poll()/pthread_*() overhead.
-
-##### New API
-
-- `GstGLFramebuffer` - for wrapping OpenGL frame buffer objects.  It provides
-  facilities for attaching `GstGLMemory` objects to the necessary attachment
-  points, binding and unbinding and running a user-supplied function with the
-  framebuffer bound.
-- `GstGLRenderbuffer` (a `GstGLBaseMemory` subclass) - for wrapping OpenGL
-  render buffer objects that are typically used for depth/stencil buffers or
-  for color buffers where we don't care about the output.
-- `GstGLMemoryEGL` (a `GstGLMemory` subclass) - for combining `EGLImage`s with a GL
-  texture that replaces `GstEGLImageMemory` bringing the improvements made to the
-  other `GstGLMemory` implementations.  This fixes a performance regression in
-  zerocopy decoding on the Raspberry Pi when used with an updated gst-omx.
-
-##### Miscellaneous improvements
-
-- `gltestsrc` is now usable on devices/platforms with OpenGL 3.x and OpenGL|ES
-  and has completed or gained support for new patterns in line with the
-  existing ones in `videotestsrc`.
-- `gldeinterlace` is now available on devices/platforms with OpenGL|ES
-  implementations.
-- The dispmanx backend (used on the Raspberry Pi) now supports the
-  `gst_video_overlay_set_window_handle()` and
-  `gst_video_overlay_set_render_rectangle()` functions.
-- The `gltransformation` element now correctly transforms mouse coordinates (in
-  window space) to stream coordinates for both perspective and orthographic
-  projections.
-- The `gltransformation` element now detects if the
-  `GstVideoAffineTransformationMeta` is supported downstream and will efficiently
-  pass its transformation downstream. This is a performance improvement as it
-  results in less processing being required.
-- The wayland implementation now uses the multi-threaded safe event-loop API
-  allowing correct usage in applications that call wayland functions from
-  multiple threads.
-- Support for native 90 degree rotations and horizontal/vertical flips
-  in `glimagesink`.
-
-#### Vulkan
-
-- The Vulkan elements now work under Wayland and have received numerous
-  bugfixes.
-
-#### QML elements
-
-- `qmlglsink` video sink now works on more platforms, notably, Windows, Wayland,
-  and Qt's eglfs (for embedded devices with an OpenGL implementation) including
-  the Raspberry Pi.
-- New element `qmlglsrc` to record a QML scene into a GStreamer pipeline.
-
-#### KMS video sink
-
-- New element `kmssink` to render video using Direct Rendering Manager
-  (DRM) and Kernel Mode Setting (KMS) subsystems in the Linux
-  kernel. It is oriented to be used mostly in embedded systems.
-
-#### Wayland video sink
-
-- `waylandsink` now supports the wl_viewporter extension allowing
-  video scaling and cropping to be delegated to the Wayland
-  compositor. This extension is also been made optional, so that it can
-  also work on current compositors that don't support it. It also now has
-  support for the video meta, allowing zero-copy operations in more
-  cases.
-
-#### DVB improvements
-
-- `dvbsrc` now has better delivery-system autodetection and several
-  new parameter sanity-checks to improve its resilience to configuration
-  omissions and errors. Superfluous polling continues to be trimmed down,
-  and the debugging output has been made more consistent and precise.
-  Additionally, the channel-configuration parser now supports the new dvbv5
-  format, enabling `dvbbasebin` to automatically playback content transmitted
-  on delivery systems that previously required manual description, like ISDB-T.
-
-#### DASH, HLS and adaptivedemux
-
-- HLS now has support for Alternate Rendition audio and video tracks. Full
-  support for Alternate Rendition subtitle tracks will be in an upcoming release.
-- DASH received support for keyframe-only trick modes if the
-  `GST_SEEK_FLAG_TRICKMODE_KEY_UNITS` flag is given when seeking. It will
-  only download keyframes then, which should help with high-speed playback.
-  Changes to skip over multiple frames based on bandwidth and other metrics
-  will be added in the near future.
-- Lots of reliability fixes around seek handling and bitrate switching.
-
-#### Bluetooth improvements
-
-- The `avdtpsrc` element now supports metadata such as track title, artist
-  name, and more, which devices can send via AVRCP. These are published as
-  tags on the pipeline.
-- The `a2dpsink` element received some love and was cleaned up so that it
-  actually works after the initial GStreamer 1.0 port.
-
-#### GStreamer VAAPI
-
-- All the decoders have been split, one plugin feature per codec. So
-  far, the available ones, depending on the driver, are:
-  `vaapimpeg2dec`, `vaapih264dec`, `vaapih265dec`, `vaapivc1dec`, `vaapivp8dec`,
-  `vaapivp9dec` and `vaapijpegdec` (which already was split).
-- Improvements when mapping VA surfaces into memory. It now differentiates
-  between negotiation caps and allocations caps, since the allocation
-  memory for surfaces may be bigger than one that is going to be
-  mapped.
-- `vaapih265enc` now supports constant bitrate mode (CBR).
-- Since several VA drivers are unmaintained, we decide to keep a whitelist
-  with the va drivers we actually test, which is mostly the i915 and to a lesser
-  degree gallium from the mesa project. Exporting the environment variable
-  `GST_VAAPI_ALL_DRIVERS` disables the whitelist.
-- Plugin features are registered at run-time, according to their support by
-  the loaded VA driver. So only the decoders and encoder supported by the
-  system are registered. Since the driver can change, some dependencies are
-  tracked to invalidate the GStreamer registry and reload the plugin.
-- `dmabuf` importation from upstream has been improved, gaining performance.
-- `vaapipostproc` now can negotiate buffer transformations via caps.
-- Decoders now can do I-frame only reverse playback. This decodes I-frames
-  only because the surface pool is smaller than the required by the GOP to show all the
-  frames.
-- The upload of frames onto native GL textures has been optimized too, keeping
-  a cache of the internal structures for the offered textures by the sink.
-
-#### V4L2 changes
-
-- More pixels formats are now supported
-- Decoder is now using `G_SELECTION` instead of the deprecated `G_CROP`
-- Decoder now uses the `STOP` command to handle EOS
-- Transform element can now scale the pixel aspect ratio
-- Colorimetry support has been improved even more
-- We now support the `OUTPUT_OVERLAY` type of video node in v4l2sink
-
-#### Miscellaneous
-
-- `multiqueue`'s input pads gained a new `"group-id"` property which
-  can be used to group input streams. Typically one will assign
-  different id numbers to audio, video and subtitle streams for
-  example. This way `multiqueue` can make sure streams of the same
-  type advance in lockstep if some of the streams are unlinked and the
-  `"sync-by-running-time"` property is set. This is used in
-  decodebin3/playbin3 to implement almost-instantaneous stream
-  switching.  The grouping is required because different downstream
-  paths (audio, video, etc.)  may have different buffering/latency
-  etc. so might be consuming data from multiqueue with a slightly
-  different phase, and if we track different stream groups separately
-  we minimize stream switching delays and buffering inside the
-  `multiqueue`.
-- `alsasrc` now supports ALSA drivers without a position for each
-  channel, this is common in some professional or industrial hardware.
-- `libvpx` based decoders (`vp8dec` and `vp9dec`) now create multiple threads on
-  computers with multiple CPUs automatically.
-- `rfbsrc` - used for capturing from a VNC server - has seen a lot of
-  debugging. It now supports the latest version of the RFB
-  protocol and uses GIO everywhere.
-- `tsdemux` can now read ATSC E-AC-3 streams.
-- New `GstVideoDirection` video orientation interface for rotating, flipping
-  and mirroring video in 90° steps. It is implemented by the `videoflip` and
-  `glvideoflip` elements currently.
-- It is now possible to give `appsrc` a duration in time, and there is now a
-  non-blocking try-pull API for `appsink` that returns NULL if nothing is
-  available right now.
-- `x264enc` has support now for chroma-site and colorimetry settings
-- A new JPEG2000 parser element was added, and the JPEG2000 caps were cleaned
-  up and gained more information needed in combination with RTP and various
-  container formats.
-- Reverse playback support for `videorate` and `deinterlace` was implemented
-- Various improvements everywhere for reverse playback and `KEY_UNITS` trick mode
-- New cleaned up `rawaudioparse` and `rawvideoparse` elements that replace the
-  old `audioparse` and `videoparse` elements. There are compatibility element
-  factories registered with the old names to allow existing code to continue
-  to work.
-- The Decklink plugin gained support for 10 bit video SMPTE timecodes, and
-  generally got many bugfixes for various issues.
-- New API in `GstPlayer` for setting the multiview mode for stereoscopic
-  video, setting an HTTP/RTSP user agent and a time offset between audio and
-  video. In addition to that, there were various bugfixes and the new
-  gst-examples module contains Android, iOS, GTK+ and Qt example applications.
-- `GstBin` has new API for suppressing various `GstElement` or `GstObject`
-  flags that would otherwise be affected by added/removed child elements. This
-  new API allows `GstBin` subclasses to handle for themselves if they
-  should be considered a sink or source element, for example.
-- The `subparse` element can handle WebVTT streams now.
-- A new `sdpsrc` element was added that can read an SDP from a file, or get it
-  as a string as property and then sets up an RTP pipeline accordingly.
-
-### Plugin moves
-
-No plugins were moved this cycle. We'll make up for it next cycle, promise!
-
-### Rewritten memory leak tracer
-
-GStreamer has had basic functionality to trace allocation and freeing of
-both mini-objects (buffers, events, caps, etc.) and objects in the form of the
-internal `GstAllocTrace` tracing system. This API was never exposed in the
-1.x API series though. When requested, this would dump a list of objects and
-mini-objects at exit time which had still not been freed at that point,
-enabled with an environment variable. This subsystem has now been removed
-in favour of a new implementation based on the recently-added tracing framework.
-
-Tracing hooks have been added to trace the creation and destruction of
-GstObjects and mini-objects, and a new tracer plugin has been written using
-those new hooks to track which objects are still live and which are not. If
-GStreamer has been compiled against the libunwind library, the new leaks tracer
-will remember where objects were allocated from as well. By default the leaks
-tracer will simply output a warning if leaks have been detected on `gst_deinit()`.
-
-If the `GST_LEAKS_TRACER_SIG` environment variable is set, the leaks tracer
-will also handle the following UNIX signals:
-
- - `SIGUSR1`: log alive objects
- - `SIGUSR2`: create a checkpoint and print a list of objects created and
-   destroyed since the previous checkpoint.
-
-Unfortunately this will not work on Windows due to no signals, however.
-
-If the `GST_LEAKS_TRACER_STACK_TRACE` environment variable is set, the leaks
-tracer will also log the creation stack trace of leaked objects. This may
-significantly increase memory consumption however.
-
-New `MAY_BE_LEAKED` flags have been added to GstObject and GstMiniObject, so
-that objects and mini-objects that are likely to stay around forever can be
-flagged and blacklisted from the leak output.
-
-To give the new leak tracer a spin, simply call any GStreamer application such
-as `gst-launch-1.0` or `gst-play-1.0` like this:
-
-    GST_TRACERS=leaks gst-launch-1.0 videotestsrc num-buffers=10 ! fakesink
-
-If there are any leaks, a warning will be raised at the end.
-
-It is also possible to trace only certain types of objects or mini-objects:
-
-    GST_TRACERS="leaks(GstEvent,GstMessage)" gst-launch-1.0 videotestsrc num-buffers=10 ! fakesink
-
-This dedicated leaks tracer is much much faster than valgrind since all code is
-executed natively instead of being instrumented. This makes it very suitable
-for use on slow machines or embedded devices. It is however limited to certain
-types of leaks and won't catch memory leaks when the allocation has been made
-via plain old `malloc()` or `g_malloc()` or other means. It will also not trace
-non-GstObject GObjects.
-
-The goal is to enable leak tracing on GStreamer's Continuous-Integration and
-testing system, both for the regular unit tests (make check) and media tests
-(gst-validate), so that accidental leaks in common code paths can be detected
-and fixed quickly.
-
-For more information about the new tracer, check out Guillaume Desmottes's
-["Tracking Memory Leaks"][leaks-talk] talk or his [blog post][leaks-blog] about
-the topic.
-
-[leaks-talk]: https://gstconf.ubicast.tv/videos/tracking-memory-leaks/
-[leaks-blog]: https://blog.desmottes.be/?post/2016/06/20/GStreamer-leaks-tracer
-
-### GES and NLE changes
-
-- Clip priorities are now handled by the layers, and the GESTimelineElement
-  priority property is now deprecated and unused
-- Enhanced (de)interlacing support to always use the `deinterlace` element
-  and expose needed properties to users
-- Allow reusing clips children after removing the clip from a layer
-- We are now testing many more rendering formats in the gst-validate
-  test suite, and failures have been fixed.
-- Also many bugs have been fixed in this cycle!
-
-### GStreamer validate changes
-
-This cycle has been focused on making GstValidate more than just a validating
-tool, but also a tool to help developers debug their GStreamer issues. When
-reporting issues, we try to gather as much information as possible and expose
-it to end users in a useful way. For an example of such enhancements, check out
-Thibault Saunier's [blog post](improving-debugging-gstreamer-validate) about
-the new Not Negotiated Error reporting mechanism.
-
-Playbin3 support has been added so we can run validate tests with `playbin3`
-instead of playbin.
-
-We are now able to properly communicate between `gst-validate-launcher` and
-launched subprocesses with actual IPC between them. That has enabled the test
-launcher to handle failing tests specifying the exact expected issue(s).
-
-[improving-debugging-gstreamer-validate]: https://blogs.s-osg.org/improving-debugging-gstreamer-validate/
-
-### gst-libav changes
-
-gst-libav uses the recently released ffmpeg 3.2 now, which brings a lot of
-improvements and bugfixes from the ffmpeg team in addition to various new
-codec mappings on the GStreamer side and quite a few bugfixes to the GStreamer
-integration to make it more robust.
-
-## Build and Dependencies
-
-### Experimental support for Meson as build system
-
-#### Overview
-
-We have have added support for building GStreamer using the
-[Meson build system][meson]. This is currently experimental, but should work
-fine at least on Linux using the gcc or clang toolchains and on Windows using
-the MingW or MSVC toolchains.
-
-Autotools remains the primary build system for the time being, but we hope to
-someday replace it and will steadily work towards that goal.
-
-More information about the background and implications of all this and where
-we're hoping to go in future with this can be found in [Tim's mail][meson-mail]
-to the gstreamer-devel mailing list.
-
-For more information on Meson check out [these videos][meson-videos] and also
-the [Meson talk][meson-gstconf] at the GStreamer Conference.
-
-Immediate benefits for Linux users are faster builds and rebuilds. At the time
-of writing the Meson build of GStreamer is used by default in GNOME's jhbuild
-system.
-
-The Meson build currently still lacks many of the fine-grained configuration
-options to enable/disable specific plugins. These will be added back in due
-course.
-
-Note: The meson build files are not distributed in the source tarballs, you will
-need to get GStreamer from git if you want try it out.
-
-[meson]: http://mesonbuild.com/
-[meson-mail]: https://lists.freedesktop.org/archives/gstreamer-devel/2016-September/060231.html
-[meson-videos]: http://mesonbuild.com/videos.html
-[meson-gstconf]: https://gstconf.ubicast.tv/videos/gstreamer-development-on-windows-ans-faster-builds-everywhere-with-meson/
-
-#### Windows Visual Studio toolchain support
-
-Windows users might appreciate being able to build GStreamer using the MSVC
-toolchain, which is not possible using autotools. This means that it will be
-possible to debug GStreamer and applications in Visual Studio, for example.
-We require VS2015 or newer for this at the moment.
-
-There are two ways to build GStreamer using the MSVC toolchain:
-
-1. Using the MSVC command-line tools (`cl.exe` etc.) via Meson's "ninja" backend.
-2. Letting Meson's "vs2015" backend generate Visual Studio project files that
-   can be opened in Visual Studio and compiled from there.
-
-This is currently only for adventurous souls though. All the bits are in place,
-but support for all of this has not been merged into GStreamer's cerbero build
-tool yet at the time of writing. This will hopefully happen in the next cycle,
-but for now this means that those wishing to compile GStreamer with MSVC will
-have to get their hands dirty.
-
-There are also no binary SDK builds using the MSVC toolchain yet.
-
-For more information on GStreamer builds using Meson and the Windows toolchain
-check out Nirbheek Chauhan's blog post ["Building and developing GStreamer using Visual Studio"][msvc-blog].
-
-[msvc-blog]: http://blog.nirbheek.in/2016/07/building-and-developing-gstreamer-using.html
-
-### Dependencies
-
-#### gstreamer
-
-libunwind was added as an optional dependency. It is used only for debugging
-and tracing purposes.
-
-The `opencv` plugin in gst-plugins-bad can now be built against OpenCV
-version 3.1, previously only 2.3-2.5 were supported.
-
-#### gst-plugins-ugly
-
-- `mpeg2dec` now requires at least libmpeg2 0.5.1 (from 2008).
-
-#### gst-plugins-bad
-
-- `gltransformation` now requires at least graphene 1.4.0.
-
-- `lv2` now plugin requires at least lilv 0.16 instead of slv2.
-
-### Packaging notes
-
-Packagers please note that the `gst/gstconfig.h` public header file in the
-GStreamer core library moved back from being an architecture dependent include
-to being architecture independent, and thus it is no longer installed into
-`$(libdir)/gstreamer-1.0/include/gst` but into the normal include directory
-where it lives happily ever after with all the other public header files. The
-reason for this is that we now check whether the target supports unaligned
-memory access based on predefined compiler macros at compile time instead of
-checking it at configure time.
-
-## Platform-specific improvements
-
-### Android
-
-#### New universal binaries for all supported ABIs
-
-We now provide a "universal" tarball to allow building apps against all the
-architectures currently supported (x86, x86-64, armeabi, armeabi-v7a,
-armeabi-v8a). This is needed for building with recent versions of the Android
-NDK which defaults to building against all supported ABIs. Use [the Android
-player example][android-player-example-build] as a reference for the required
-changes.
-
-[android-player-example-build]: https://cgit.freedesktop.org/gstreamer/gst-examples/commit/playback/player/android?id=a5cdde9119f038a1eb365aca20faa9741a38e788
-
-#### Miscellaneous
-
-- New `ahssrc` element that allows reading the hardware sensors, e.g. compass
-  or accelerometer.
-
-### macOS (OS/X) and iOS
-
-- Support for querying available devices on OS/X via the GstDeviceProvider
-  API was added.
-- It is now possible to create OpenGL|ES 3.x contexts on iOS and use them in
-  combination with the VideoToolbox based decoder element.
-- many OpenGL/GLES improvements, see OpenGL section above
-
-### Windows
-
-- gstconfig.h: Always use dllexport/import on Windows with MSVC
-- Miscellaneous fixes to make libs and plugins compile with the MVSC toolchain
-- MSVC toolchain support (see Meson section above for more details)
-
-## New Modules for Documentation, Examples, Meson Build
-
-Three new git modules have been added recently:
-
-### gst-docs
-
-This is a new module where we will maintain documentation in the markdown
-format.
-
-It contains the former gstreamer.com SDK tutorials which have kindly been made
-available by Fluendo under a Creative Commons license. The tutorials have been
-reviewed and updated for GStreamer 1.x and will be available as part of the
-[official GStreamer documentation][doc] going forward. The old gstreamer.com
-site will then be shut down with redirects pointing to the updated tutorials.
-
-Some of the existing docbook XML-formatted documentation from the GStreamer
-core module such as the *Application Development Manual* and the *Plugin
-Writer's Guide* have been converted to markdown as well and will be maintained
-in the gst-docs module in future. They will be removed from the GStreamer core
-module in the next cycle.
-
-This is just the beginning. Our goal is to provide a more cohesive documentation
-experience for our users going forward, and easier to create and maintain
-documentation for developers. There is a lot more work to do, get in touch if
-you want to help out.
-
-If you encounter any problems or spot any omissions or outdated content in the
-new documentation, please [file a bug in bugzilla][doc-bug] to let us know.
-
-We will probably release gst-docs as a separate tarball for distributions to
-package in the next cycle.
-
-[doc]: http://gstreamer.freedesktop.org/documentation/
-[doc-bug]: https://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer&component=documentation
-
-### gst-examples
-
-A new [module][examples-git] has been added for examples. It does not contain
-much yet, currently it only contains a small [http-launch][http-launch] utility
-that serves a pipeline over http as well as various [GstPlayer playback frontends][puis]
-for Android, iOS, Gtk+ and Qt.
-
-More examples will be added over time. The examples in this repository should
-be more useful and more substantial than most of the examples we ship as part
-of our other modules, and also written in a way that makes them good example
-code. If you have ideas for examples, let us know.
-
-No decision has been made yet if this module will be released and/or packaged.
-It probably makes sense to do so though.
-
-[examples-git]: https://cgit.freedesktop.org/gstreamer/gst-examples/tree/
-[http-launch]: https://cgit.freedesktop.org/gstreamer/gst-examples/tree/network/http-launch/
-[puis]: https://cgit.freedesktop.org/gstreamer/gst-examples/tree/playback/player
-
-### gst-build
-
-[gst-build][gst-build-git] is a new meta module to build GStreamer using the
-new Meson build system. This module is not required to build GStreamer with
-Meson, it is merely for convenience and aims to provide a development setup
-similar to the existing `gst-uninstalled` setup.
-
-gst-build makes use of Meson's [subproject feature][meson-subprojects] and sets
-up the various GStreamer modules as subprojects, so they can all be updated and
-built in parallel.
-
-This module is still very new and highly experimental. It should work at least
-on Linux and Windows (OS/X needs some build fixes). Let us know of any issues
-you encounter by popping into the `#gstreamer` IRC channel or by
-[filing a bug][gst-build-bug].
-
-This module will probably not be released or packaged (does not really make sense).
-
-[gst-build-git]: https://cgit.freedesktop.org/gstreamer/gst-build/tree/
-[gst-build-bug]: https://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer&component=gst-build
-[meson-subprojects]: https://github.com/mesonbuild/meson/wiki/Subprojects
-
-## Contributors
-
-Aaron Boxer, Aleix Conchillo Flaqué, Alessandro Decina, Alexandru Băluț, Alex
-Ashley, Alex-P. Natsios, Alistair Buxton, Allen Zhang, Andreas Naumann, Andrew
-Eikum, Andy Devar, Anthony G. Basile, Arjen Veenhuizen, Arnaud Vrac, Artem
-Martynovich, Arun Raghavan, Aurélien Zanelli, Barun Kumar Singh, Bernhard
-Miller, Brad Lackey, Branko Subasic, Carlos Garcia Campos, Carlos Rafael
-Giani, Christoffer Stengren, Daiki Ueno, Damian Ziobro, Danilo Cesar Lemes de
-Paula, David Buchmann, Dimitrios Katsaros, Duncan Palmer, Edward Hervey,
-Emmanuel Poitier, Enrico Jorns, Enrique Ocaña González, Fabrice Bellet,
-Florian Zwoch, Florin Apostol, Francisco Velazquez, Frédéric Bertolus, Fredrik
-Fornwall, Gaurav Gupta, George Kiagiadakis, Georg Lippitsch, Göran Jönsson,
-Graham Leggett, Gregoire Gentil, Guillaume Desmottes, Gwang Yoon Hwang, Haakon
-Sporsheim, Haihua Hu, Havard Graff, Heinrich Fink, Hoonhee Lee, Hyunjun Ko,
-Iain Lane, Ian, Ian Jamison, Jagyum Koo, Jake Foytik, Jakub Adam, Jan
-Alexander Steffens (heftig), Jan Schmidt, Javier Martinez Canillas, Jerome
-Laheurte, Jesper Larsen, Jie Jiang, Jihae Yi, Jimmy Ohn, Jinwoo Ahn, Joakim
-Johansson, Joan Pau Beltran, Jonas Holmberg, Jonathan Matthew, Jonathan Roy,
-Josep Torra, Julien Isorce, Jun Ji, Jürgen Slowack, Justin Kim, Kazunori
-Kobayashi, Kieran Bingham, Kipp Cannon, Koop Mast, Kouhei Sutou, Kseniia, Kyle
-Schwarz, Kyungyong Kim, Linus Svensson, Luis de Bethencourt, Marcin Kolny,
-Marcin Lewandowski, Marianna Smidth Buschle, Mario Sanchez Prada, Mark
-Combellack, Mark Nauwelaerts, Martin Kelly, Matej Knopp, Mathieu Duponchelle,
-Mats Lindestam, Matthew Gruenke, Matthew Waters, Michael Olbrich, Michal Lazo,
-Miguel París Díaz, Mikhail Fludkov, Minjae Kim, Mohan R, Munez, Nicola Murino,
-Nicolas Dufresne, Nicolas Huet, Nikita Bobkov, Nirbheek Chauhan, Olivier
-Crête, Paolo Pettinato, Patricia Muscalu, Paulo Neves, Peng Liu, Peter
-Seiderer, Philippe Normand, Philippe Renon, Philipp Zabel, Pierre Lamot, Piotr
-Drąg, Prashant Gotarne, Raffaele Rossi, Ray Strode, Reynaldo H. Verdejo
-Pinochet, Santiago Carot-Nemesio, Scott D Phillips, Sebastian Dröge, Sebastian
-Rasmussen, Sergei Saveliev, Sergey Borovkov, Sergey Mamonov, Sergio Torres
-Soldado, Seungha Yang, sezero, Song Bing, Sreerenj Balachandran, Stefan Sauer,
-Stephen, Steven Hoving, Stian Selnes, Thiago Santos, Thibault Saunier, Thijs
-Vermeir, Thomas Bluemel, Thomas Jones, Thomas Klausner, Thomas Scheuermann,
-Tim-Philipp Müller, Ting-Wei Lan, Tom Schoonjans, Ursula Maplehurst, Vanessa
-Chipirras Navalon, Víctor Manuel Jáquez Leal, Vincent Penquerc'h, Vineeth TM,
-Vivia Nikolaidou, Vootele Vesterblom, Wang Xin-yu (王昕宇), William Manley,
-Wim Taymans, Wonchul Lee, Xabier Rodriguez Calvar, Xavier Claessens, xlazom00,
-Yann Jouanin, Zaheer Abbas Merali
-
-... and many others who have contributed bug reports, translations, sent
-suggestions or helped testing.
-
-## Bugs fixed in 1.10
-
-More than [750 bugs][bugs-fixed-in-1.10] have been fixed during
-the development of 1.10.
-
-This list does not include issues that have been cherry-picked into the
-stable 1.8 branch and fixed there as well, all fixes that ended up in the
-1.8 branch are also included in 1.10.
-
-This list also does not include issues that have been fixed without a bug
-report in bugzilla, so the actual number of fixes is much higher.
-
-[bugs-fixed-in-1.10]: https://bugzilla.gnome.org/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&classification=Platform&limit=0&list_id=164074&order=bug_id&product=GStreamer&query_format=advanced&resolution=FIXED&target_milestone=1.8.1&target_milestone=1.8.2&target_milestone=1.8.3&target_milestone=1.8.4&target_milestone=1.9.1&target_milestone=1.9.2&target_milestone=1.9.90&target_milestone=1.10.0
-
-## Stable 1.10 branch
-
-After the 1.10.0 release there will be several 1.10.x bug-fix releases which
-will contain bug fixes which have been deemed suitable for a stable branch,
-but no new features or intrusive changes will be added to a bug-fix release
-usually. The 1.10.x bug-fix releases will be made from the git 1.10 branch,
-which is a stable branch.
-
-### 1.10.0
-
-1.10.0 was released on 1st November 2016.
-
-<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 first 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)
- - 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
-
-## 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)
-- vp8enc crashes on 32 bit Windows, but was working fine in 1.6. 64 bit Windows is unaffected.
-  [Bug #763663](https://bugzilla.gnome.org/show_bug.cgi?id=763663)
-
-## Schedule for 1.12
-
-Our next major feature release will be 1.12, and 1.11 will be the unstable
-development version leading up to the stable 1.12 release. The development
-of 1.11/1.12 will happen in the git master branch.
-
-The plan for the 1.12 development cycle is yet to be confirmed, but it is
-expected that feature freeze will be around early/mid-January,
-followed by several 1.11 pre-releases and the new 1.12 stable release
-in March.
-
-1.12 will be backwards-compatible to the stable 1.10, 1.8, 1.6, 1.4, 1.2 and
-1.0 release series.
-
-- - -
-
-*These release notes have been prepared by Olivier Crête, Sebastian Dröge,
-Nicolas Dufresne, Edward Hervey, Víctor Manuel Jáquez Leal, Tim-Philipp
-Müller, Reynaldo H. Verdejo Pinochet, Arun Raghavan, Thibault Saunier,
-Jan Schmidt, Wim Taymans, Matthew Waters*
-
-*License: [CC BY-SA 4.0](http://creativecommons.org/licenses/by-sa/4.0/)*
-
+This is GStreamer 1.11.1.
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 96dd44b..0d47613 100644
--- a/RELEASE
+++ b/RELEASE
@@ -1,15 +1,21 @@
 
-Release notes for GStreamer Ugly Plugins 1.10.2
+Release notes for GStreamer Ugly Plugins 1.11.1
 
-The GStreamer team is proud to announce the second 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 of the unstable
+1.11 release series. The 1.11 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. The unstable 1.11 release series
+will lead to the stable 1.12 release series in the next weeks. Any newly added
+API can still change until that point.
 
 
-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 will be provided at some point during the 1.11 release
+cycle, highlighting all the new features, bugfixes, performance optimizations
+and other important changes.
 
 
-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."
@@ -57,8 +63,11 @@
 
 Bugs fixed in this release
      
-      * 774846 : asfdemux: Timeouts with corrupted files
-      * 775070 : asfdemux: ASF object size checks
+      * 751560 : x264enc: Add a youtube preset.
+      * 763297 : x264enc: Add parameter to explicitly load a specific x264 library
+      * 775228 : x264enc: Auto-detect interlace mode from caps
+      * 775411 : x264enc: Correctly pass interlacing/TFF information
+      * 776140 : Remove mad plugin
 
 ==== Download ====
 
@@ -96,6 +105,11 @@
 Contributors to this release
     
       * Edward Hervey
+      * Mark Nauwelaerts
+      * Mathieu Duponchelle
+      * Scott D Phillips
       * Sebastian Dröge
+      * Thibault Saunier
       * Tim-Philipp Müller
+      * Vivia Nikolaidou
  
\ No newline at end of file
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/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/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/configure b/configure
index acefb96..1b87c9a 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.2.
+# Generated by GNU Autoconf 2.69 for GStreamer Ugly Plug-ins 1.11.1.
 #
 # 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.2'
-PACKAGE_STRING='GStreamer Ugly Plug-ins 1.10.2'
+PACKAGE_VERSION='1.11.1'
+PACKAGE_STRING='GStreamer Ugly Plug-ins 1.11.1'
 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.2 to adapt to many kinds of systems.
+\`configure' configures GStreamer Ugly Plug-ins 1.11.1 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.2:";;
+     short | recursive ) echo "Configuration of GStreamer Ugly Plug-ins 1.11.1:";;
    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.2
+GStreamer Ugly Plug-ins configure 1.11.1
 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.2, which was
+It was created by GStreamer Ugly Plug-ins $as_me 1.11.1, 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.2'
+ VERSION='1.11.1'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -4083,9 +4077,9 @@
 
 
 
-  PACKAGE_VERSION_MAJOR=$(echo 1.10.2 | cut -d'.' -f1)
-  PACKAGE_VERSION_MINOR=$(echo 1.10.2 | cut -d'.' -f2)
-  PACKAGE_VERSION_MICRO=$(echo 1.10.2 | cut -d'.' -f3)
+  PACKAGE_VERSION_MAJOR=$(echo 1.11.1 | cut -d'.' -f1)
+  PACKAGE_VERSION_MINOR=$(echo 1.11.1 | cut -d'.' -f2)
+  PACKAGE_VERSION_MICRO=$(echo 1.11.1 | 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.2 | cut -d'.' -f4)
+  NANO=$(echo 1.11.1 | cut -d'.' -f4)
 
   if test x"$NANO" = x || test "x$NANO" = "x0" ; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: 0 (release)" >&5
@@ -8930,10 +8924,10 @@
 done
 
 
-  GST_CURRENT=1002
+  GST_CURRENT=1101
   GST_REVISION=0
-  GST_AGE=1002
-  GST_LIBVERSION=1002:0:1002
+  GST_AGE=1101
+  GST_LIBVERSION=1101:0:1101
 
 
 
@@ -13561,8 +13555,8 @@
 
 
 
-GST_REQ=1.10.0
-GSTPB_REQ=1.10.0
+GST_REQ=1.11.1
+GSTPB_REQ=1.11.1
 
 
 
@@ -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.2, which was
+This file was extended by GStreamer Ugly Plug-ins $as_me 1.11.1, 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.2
+GStreamer Ugly Plug-ins config.status 1.11.1
 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 e198167..17a3c72 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.2],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gst-plugins-ugly])
+AC_INIT([GStreamer Ugly Plug-ins],[1.11.1],[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, 1002, 0, 1002)
+AS_LIBTOOL(GST, 1101, 0, 1101)
 
 dnl *** required versions of GStreamer stuff ***
-GST_REQ=1.10.0
-GSTPB_REQ=1.10.0
+GST_REQ=1.11.1
+GSTPB_REQ=1.11.1
 
 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..d92464c 100644
--- a/docs/plugins/gst-plugins-ugly-plugins.hierarchy
+++ b/docs/plugins/gst-plugins-ugly-plugins.hierarchy
@@ -49,6 +49,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-lamemp3enc.html b/docs/plugins/html/gst-plugins-ugly-plugins-lamemp3enc.html
index 338c12c..c2dcd71 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>
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..06170ae 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">
@@ -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 e0ec3db..a624488 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.2</td>
+<td>1.11.1</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 966ff91..3ccd00f 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.2</td>
+<td>1.11.1</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 ecd2d39..3b8cb8f 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.2</td>
+<td>1.11.1</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 f080d46..8f5d514 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.2</td>
+<td>1.11.1</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 5b82dd1..7f1a9c1 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.2</td>
+<td>1.11.1</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 cabc13b..d17b783 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.2</td>
+<td>1.11.1</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 77fcba4..6d48da3 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.2</td>
+<td>1.11.1</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 8e9296f..601c7c9 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.2</td>
+<td>1.11.1</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 bb05958..3833d87 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.2</td>
+<td>1.11.1</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 7319046..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.2</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 1b21492..e9d9d89 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.2</td>
+<td>1.11.1</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 ebd0374..f99f093 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.2</td>
+<td>1.11.1</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 e827114..f9794e1 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">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.2</td>
+<td>1.11.1</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 5c6ad0d..41dc10b 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.2</td>
+<td>1.11.1</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 aa13b08..079c289 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.2</td>
+<td>1.11.1</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 b2b6748..7a3f710 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.2</td>
+<td>1.11.1</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..be181d6 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-rtspreal.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-rtspreal.html
@@ -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..6f8dd06 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-rtspwms.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-rtspwms.html
@@ -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..e03757b 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-twolame.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-twolame.html
@@ -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 2263a9a..41315ea 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.2)
+      for GStreamer Ugly Plugins 1.0 (1.11.1)
       The latest version of this documentation can be found on-line at
       <a class="ulink" href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-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 da894ec..cd9aa8b 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.2</version>
+  <version>1.11.1</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 3666a1b..f8894e0 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.2</version>
+  <version>1.11.1</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 d054306..8cc1114 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.2</version>
+  <version>1.11.1</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 87fe8c8..b7f6720 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.2</version>
+  <version>1.11.1</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 00e25e8..ed69e7a 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.2</version>
+  <version>1.11.1</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 75822d1..19c8c0c 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.2</version>
+  <version>1.11.1</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 62f25c4..e627b2d 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.2</version>
+  <version>1.11.1</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 652705b..b96dc60 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.2</version>
+  <version>1.11.1</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 7919f3b..5127881 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.2</version>
+  <version>1.11.1</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
index 4972d83..410eb7d 100644
--- a/docs/plugins/inspect/plugin-mad.xml
+++ b/docs/plugins/inspect/plugin-mad.xml
@@ -3,10 +3,10 @@
   <description>mp3 decoding based on the mad library</description>
   <filename>../../ext/mad/.libs/libgstmad.so</filename>
   <basename>libgstmad.so</basename>
-  <version>1.10.2</version>
+  <version>1.11.0.1</version>
   <license>GPL</license>
   <source>gst-plugins-ugly</source>
-  <package>GStreamer Ugly Plug-ins source release</package>
+  <package>GStreamer Ugly Plug-ins git</package>
   <origin>Unknown package origin</origin>
   <elements>
     <element>
diff --git a/docs/plugins/inspect/plugin-mpeg2dec.xml b/docs/plugins/inspect/plugin-mpeg2dec.xml
index f04231b..0ac352e 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.2</version>
+  <version>1.11.1</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 d77b275..80edc1b 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.2</version>
+  <version>1.11.1</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 5ad3a09..545c894 100644
--- a/docs/plugins/inspect/plugin-realmedia.xml
+++ b/docs/plugins/inspect/plugin-realmedia.xml
@@ -3,7 +3,7 @@
   <description>RealMedia support plugins</description>
   <filename>../../gst/realmedia/.libs/libgstrmdemux.so</filename>
   <basename>libgstrmdemux.so</basename>
-  <version>1.10.2</version>
+  <version>1.11.1</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 8f8edc2..f5194a4 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.2</version>
+  <version>1.11.1</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 4029cf2..3e29aa8 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.2</version>
+  <version>1.11.1</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 f5a1262..0b708f1 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.2</version>
+  <version>1.11.1</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 b07e109..004b690 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.2</version>
+  <version>1.11.1</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/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/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/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/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/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/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/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/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/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/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..f5d8f9f 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,242 @@
 
 #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 = {
+  NULL,
+  &x264_bit_depth,
+  &x264_chroma_format, x264_encoder_close, x264_encoder_delayed_frames,
+  x264_encoder_encode, x264_encoder_headers, x264_encoder_intra_refresh,
+  x264_encoder_maximum_delayed_frames, x264_encoder_open,
+  x264_encoder_reconfig, &x264_levels, x264_param_apply_fastfirstpass,
+  x264_param_apply_profile, x264_param_default, x264_param_default_preset,
+  x264_param_parse
+};
+
+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 +674,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 +741,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 +762,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 +799,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 +818,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 +857,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 +882,7 @@
   GstElementClass *element_class;
   GstVideoEncoderClass *gstencoder_class;
   const gchar *partitions = NULL;
+  GstPadTemplate *sink_templ;
 
   x264enc_defaults = g_string_new ("");
 
@@ -1036,7 +1143,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 +1230,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 +1391,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 +1480,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 +1735,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 +1756,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 +1767,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 +1852,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 +1875,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 +1895,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 +1982,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 +2145,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 +2174,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 +2201,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 +2257,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 +2279,6 @@
 
   gst_caps_unref (template_caps);
 
-  if (!level_ok)
-    return FALSE;
-
   if (!gst_x264_enc_init_encoder (encoder))
     return FALSE;
 
@@ -2175,8 +2311,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 +2364,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 +2423,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 +2433,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 +2443,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 +2515,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 +2742,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 +2898,10 @@
   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);
+
+  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..732e124 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
@@ -46,12 +47,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 +114,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/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 d5bbedb..e02140c 100644
--- a/gst-plugins-ugly.doap
+++ b/gst-plugins-ugly.doap
@@ -33,23 +33,13 @@
    </GitRepository>
  </repository> 
 
-  <release>
+ <release>
   <Version>
-   <revision>1.10.2</revision>
-   <branch>1.10</branch>
+   <revision>1.11.1</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" />
-  </Version>
- </release>
-
-  <release>
-  <Version>
-   <revision>1.10.1</revision>
-   <branch>1.10</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-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 52a3671..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.2
-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 e113e02..ea5158f 100644
--- a/gst/asfdemux/gstasfdemux.c
+++ b/gst/asfdemux/gstasfdemux.c
@@ -4081,6 +4081,8 @@
   data_start = data;
   obj_size = (guint) size;
 
+  esp.payload_extensions = NULL;
+
   if (size < 64)
     goto not_enough_data;
 
@@ -4133,8 +4135,6 @@
 
   if (num_payload_ext > 0)
     esp.payload_extensions = g_new0 (AsfPayloadExtension, num_payload_ext + 1);
-  else
-    esp.payload_extensions = NULL;
 
   for (i = 0; i < num_payload_ext; ++i) {
     AsfPayloadExtension ext;
@@ -4236,12 +4236,16 @@
     GST_WARNING_OBJECT (demux, "Ext. stream properties for unknown stream");
   }
 
+  if (!stream)
+    g_free (esp.payload_extensions);
+
   return GST_FLOW_OK;
 
   /* Errors */
 not_enough_data:
   {
     GST_WARNING_OBJECT (demux, "short read parsing ext stream props object!");
+    g_free (esp.payload_extensions);
     return GST_FLOW_OK;         /* not absolutely fatal */
   }
 expected_stream_object:
@@ -4249,11 +4253,13 @@
     GST_WARNING_OBJECT (demux, "error parsing extended stream properties "
         "object: expected embedded stream object, but got %s object instead!",
         gst_asf_get_guid_nick (asf_object_guids, stream_obj.id));
+    g_free (esp.payload_extensions);
     return GST_FLOW_OK;         /* not absolutely fatal */
   }
 corrupted_stream:
   {
     GST_WARNING_OBJECT (demux, "Corrupted stream");
+    g_free (esp.payload_extensions);
     return GST_FLOW_ERROR;
   }
 }
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/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/realmedia/Makefile.in b/gst/realmedia/Makefile.in
index 5e049fe..c52c9ac 100644
--- a/gst/realmedia/Makefile.in
+++ b/gst/realmedia/Makefile.in
@@ -388,8 +388,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/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/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/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/af.gmo b/po/af.gmo
index b21b34d..1e7d3b5 100644
--- a/po/af.gmo
+++ b/po/af.gmo
Binary files differ
diff --git a/po/af.po b/po/af.po
index 146dd4e..1203a1d 100644
--- a/po/af.po
+++ b/po/af.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins 0.7.6\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-29 15:54+0200\n"
+"POT-Creation-Date: 2017-01-12 14:45+0200\n"
 "PO-Revision-Date: 2004-03-18 14:16+0200\n"
 "Last-Translator: Petri Jooste <rkwjpj@puk.ac.za>\n"
 "Language-Team: Afrikaans <i18n@af.org.za>\n"
diff --git a/po/az.gmo b/po/az.gmo
index dcc9e25..e2c5f67 100644
--- a/po/az.gmo
+++ b/po/az.gmo
Binary files differ
diff --git a/po/az.po b/po/az.po
index b147d25..a69ffa3 100644
--- a/po/az.po
+++ b/po/az.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-0.8.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-29 15:54+0200\n"
+"POT-Creation-Date: 2017-01-12 14:45+0200\n"
 "PO-Revision-Date: 2004-03-19 18:29+0200\n"
 "Last-Translator: Metin Amiroff <metin@karegen.com>\n"
 "Language-Team: Azerbaijani <translation-team-az@lists.sourceforge.net>\n"
diff --git a/po/bg.gmo b/po/bg.gmo
index a41915f..c45f8b7 100644
--- a/po/bg.gmo
+++ b/po/bg.gmo
Binary files differ
diff --git a/po/bg.po b/po/bg.po
index 4f08a23..a2395b2 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: 2016-11-29 15:54+0200\n"
+"POT-Creation-Date: 2017-01-12 14:45+0200\n"
 "PO-Revision-Date: 2016-02-21 21:03+0200\n"
 "Last-Translator: Alexander Shopov <ash@kambanaria.org>\n"
 "Language-Team: Bulgarian <dict@ludost.net>\n"
diff --git a/po/ca.gmo b/po/ca.gmo
index 1bc8a25..b5beaa9 100644
--- a/po/ca.gmo
+++ b/po/ca.gmo
Binary files differ
diff --git a/po/ca.po b/po/ca.po
index 3b7817b..67840ee 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: 2016-11-29 15:54+0200\n"
+"POT-Creation-Date: 2017-01-12 14:45+0200\n"
 "PO-Revision-Date: 2012-01-01 14:19+0100\n"
 "Last-Translator: Gil Forcada <gforcada@gnome.org>\n"
 "Language-Team: Catalan <ca@dodds.net>\n"
diff --git a/po/cs.gmo b/po/cs.gmo
index 46ad708..fcbf562 100644
--- a/po/cs.gmo
+++ b/po/cs.gmo
Binary files differ
diff --git a/po/cs.po b/po/cs.po
index 95e57e8..1075a0d 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: 2016-11-29 15:54+0200\n"
+"POT-Creation-Date: 2017-01-12 14:45+0200\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 96a384d..5c8af59 100644
--- a/po/da.gmo
+++ b/po/da.gmo
Binary files differ
diff --git a/po/da.po b/po/da.po
index cb7c98d..1156b94 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: 2016-11-29 15:54+0200\n"
+"POT-Creation-Date: 2017-01-12 14:45+0200\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 9c105ed..96093d4 100644
--- a/po/de.gmo
+++ b/po/de.gmo
Binary files differ
diff --git a/po/de.po b/po/de.po
index 5e95e2f..fcdb750 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: 2016-11-29 15:54+0200\n"
+"POT-Creation-Date: 2017-01-12 14:45+0200\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 3edc2fc..21d2553 100644
--- a/po/el.gmo
+++ b/po/el.gmo
Binary files differ
diff --git a/po/el.po b/po/el.po
index 3c11ed9..5a8fdbb 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: 2016-11-29 15:54+0200\n"
+"POT-Creation-Date: 2017-01-12 14:45+0200\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 f13ff4f..8ea9f5d 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 ae3e261..04cad1f 100644
--- a/po/en_GB.po
+++ b/po/en_GB.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins 0.8.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-29 15:54+0200\n"
+"POT-Creation-Date: 2017-01-12 14:45+0200\n"
 "PO-Revision-Date: 2004-04-26 10:41-0400\n"
 "Last-Translator: Gareth Owen <gowen72@yahoo.com>\n"
 "Language-Team: English (British) <en_gb@li.org>\n"
diff --git a/po/eo.gmo b/po/eo.gmo
index 5d21560..0ec1372 100644
--- a/po/eo.gmo
+++ b/po/eo.gmo
Binary files differ
diff --git a/po/eo.po b/po/eo.po
index 5e7de42..d6ed12e 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: 2016-11-29 15:54+0200\n"
+"POT-Creation-Date: 2017-01-12 14:45+0200\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 e26e903..030c9a3 100644
--- a/po/es.gmo
+++ b/po/es.gmo
Binary files differ
diff --git a/po/es.po b/po/es.po
index c4d7561..e8cfa22 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: 2016-11-29 15:54+0200\n"
+"POT-Creation-Date: 2017-01-12 14:45+0200\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 7b48659..9f39067 100644
--- a/po/eu.gmo
+++ b/po/eu.gmo
Binary files differ
diff --git a/po/eu.po b/po/eu.po
index 44fe70a..c5ba58b 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: 2016-11-29 15:54+0200\n"
+"POT-Creation-Date: 2017-01-12 14:45+0200\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 ca20d4c..6b55eaf 100644
--- a/po/fi.gmo
+++ b/po/fi.gmo
Binary files differ
diff --git a/po/fi.po b/po/fi.po
index a2a6ca5..d48a739 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: 2016-11-29 15:54+0200\n"
+"POT-Creation-Date: 2017-01-12 14:45+0200\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 9d316fb..7edc0b9 100644
--- a/po/fr.gmo
+++ b/po/fr.gmo
Binary files differ
diff --git a/po/fr.po b/po/fr.po
index 39128d5..e11d299 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: 2016-11-29 15:54+0200\n"
+"POT-Creation-Date: 2017-01-12 14:45+0200\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/gl.gmo b/po/gl.gmo
index bb55540..b3b297c 100644
--- a/po/gl.gmo
+++ b/po/gl.gmo
Binary files differ
diff --git a/po/gl.po b/po/gl.po
index e6e3cdc..4529648 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: 2016-11-29 15:54+0200\n"
+"POT-Creation-Date: 2017-01-12 14:45+0200\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 ff53235..d76cd7e 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.2\n"
+"Project-Id-Version: gst-plugins-ugly 1.11.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-29 15:54+0200\n"
+"POT-Creation-Date: 2017-01-12 14:45+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
diff --git a/po/hr.gmo b/po/hr.gmo
index 57a7ceb..bcfac26 100644
--- a/po/hr.gmo
+++ b/po/hr.gmo
Binary files differ
diff --git a/po/hr.po b/po/hr.po
index 919c16f..a8383bf 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: 2016-11-29 15:54+0200\n"
+"POT-Creation-Date: 2017-01-12 14:45+0200\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 780bbc3..7cf6fc7 100644
--- a/po/hu.gmo
+++ b/po/hu.gmo
Binary files differ
diff --git a/po/hu.po b/po/hu.po
index 3fe84bd..cf0b2f0 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: 2016-11-29 15:54+0200\n"
+"POT-Creation-Date: 2017-01-12 14:45+0200\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 475d960..f189f3b 100644
--- a/po/id.gmo
+++ b/po/id.gmo
Binary files differ
diff --git a/po/id.po b/po/id.po
index 233cea1..79a2e2f 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: 2016-11-29 15:54+0200\n"
+"POT-Creation-Date: 2017-01-12 14:45+0200\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 9983262..e36ac17 100644
--- a/po/it.gmo
+++ b/po/it.gmo
Binary files differ
diff --git a/po/it.po b/po/it.po
index 77f650f..05511cd 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: 2016-11-29 15:54+0200\n"
+"POT-Creation-Date: 2017-01-12 14:45+0200\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 ee426f0..6379cea 100644
--- a/po/ja.gmo
+++ b/po/ja.gmo
Binary files differ
diff --git a/po/ja.po b/po/ja.po
index c5359c9..a5e594f 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: 2016-11-29 15:54+0200\n"
+"POT-Creation-Date: 2017-01-12 14:45+0200\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 1031617..37aa9b8 100644
--- a/po/lt.gmo
+++ b/po/lt.gmo
Binary files differ
diff --git a/po/lt.po b/po/lt.po
index d8c8efa..ad6f638 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: 2016-11-29 15:54+0200\n"
+"POT-Creation-Date: 2017-01-12 14:45+0200\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 95be64b..0e2c45c 100644
--- a/po/lv.gmo
+++ b/po/lv.gmo
Binary files differ
diff --git a/po/lv.po b/po/lv.po
index a9c0ad3..98c83de 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: 2016-11-29 15:54+0200\n"
+"POT-Creation-Date: 2017-01-12 14:45+0200\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/ms.gmo b/po/ms.gmo
index a86e8d8..51b4d60 100644
--- a/po/ms.gmo
+++ b/po/ms.gmo
Binary files differ
diff --git a/po/ms.po b/po/ms.po
index 38f901a..a7f2512 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: 2016-11-29 15:54+0200\n"
+"POT-Creation-Date: 2017-01-12 14:45+0200\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 a7b80e8..426a4f2 100644
--- a/po/mt.gmo
+++ b/po/mt.gmo
Binary files differ
diff --git a/po/mt.po b/po/mt.po
index 81f3acd..09b7c62 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: 2016-11-29 15:54+0200\n"
+"POT-Creation-Date: 2017-01-12 14:45+0200\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 a548e95..5addae3 100644
--- a/po/nb.gmo
+++ b/po/nb.gmo
Binary files differ
diff --git a/po/nb.po b/po/nb.po
index 29448b3..cdaf7b9 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: 2016-11-29 15:54+0200\n"
+"POT-Creation-Date: 2017-01-12 14:45+0200\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 4fdeba6..d50bc32 100644
--- a/po/nl.gmo
+++ b/po/nl.gmo
Binary files differ
diff --git a/po/nl.po b/po/nl.po
index 6764538..b33229d 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: 2016-11-29 15:54+0200\n"
+"POT-Creation-Date: 2017-01-12 14:45+0200\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 90c33a8..74637aa 100644
--- a/po/or.gmo
+++ b/po/or.gmo
Binary files differ
diff --git a/po/or.po b/po/or.po
index 7f614d6..10b068f 100644
--- a/po/or.po
+++ b/po/or.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-0.8.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-29 15:54+0200\n"
+"POT-Creation-Date: 2017-01-12 14:45+0200\n"
 "PO-Revision-Date: 2004-09-27 13:32+0530\n"
 "Last-Translator: Gora Mohanty <gora_mohanty@yahoo.co.in>\n"
 "Language-Team: Oriya <gora_mohanty@yahoo.co.in>\n"
diff --git a/po/pl.gmo b/po/pl.gmo
index 05eea93..bc40524 100644
--- a/po/pl.gmo
+++ b/po/pl.gmo
Binary files differ
diff --git a/po/pl.po b/po/pl.po
index 80fedf6..f156ea1 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: 2016-11-29 15:54+0200\n"
+"POT-Creation-Date: 2017-01-12 14:45+0200\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 76f1bc7..f7bf241 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 cd6f58c..28671c8 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: 2016-11-29 15:54+0200\n"
+"POT-Creation-Date: 2017-01-12 14:45+0200\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 ca816bd..4075a20 100644
--- a/po/ro.gmo
+++ b/po/ro.gmo
Binary files differ
diff --git a/po/ro.po b/po/ro.po
index e591487..18bcd92 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: 2016-11-29 15:54+0200\n"
+"POT-Creation-Date: 2017-01-12 14:45+0200\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 b7a0809..ceb3e1e 100644
--- a/po/ru.gmo
+++ b/po/ru.gmo
Binary files differ
diff --git a/po/ru.po b/po/ru.po
index 5b3fcbc..e6f04b9 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: 2016-11-29 15:54+0200\n"
+"POT-Creation-Date: 2017-01-12 14:45+0200\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 b6e2c92..5044ca5 100644
--- a/po/sk.gmo
+++ b/po/sk.gmo
Binary files differ
diff --git a/po/sk.po b/po/sk.po
index 68f8861..644d242 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: 2016-11-29 15:54+0200\n"
+"POT-Creation-Date: 2017-01-12 14:45+0200\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 5766adc..fdc7861 100644
--- a/po/sl.gmo
+++ b/po/sl.gmo
Binary files differ
diff --git a/po/sl.po b/po/sl.po
index 49a0a5d..223e1b2 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: 2016-11-29 15:54+0200\n"
+"POT-Creation-Date: 2017-01-12 14:45+0200\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 29c1643..7f8e78f 100644
--- a/po/sq.gmo
+++ b/po/sq.gmo
Binary files differ
diff --git a/po/sq.po b/po/sq.po
index 2254a27..d01fc79 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: 2016-11-29 15:54+0200\n"
+"POT-Creation-Date: 2017-01-12 14:45+0200\n"
 "PO-Revision-Date: 2004-08-07 20:29+0200\n"
 "Last-Translator: Laurent Dhima <laurenti@alblinux.net>\n"
 "Language-Team: Albanian <begraj@hotmail.com>\n"
diff --git a/po/sr.gmo b/po/sr.gmo
index 50b8dd2..9ce91a7 100644
--- a/po/sr.gmo
+++ b/po/sr.gmo
Binary files differ
diff --git a/po/sr.po b/po/sr.po
index cd92dee..2735613 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: 2016-11-29 15:54+0200\n"
+"POT-Creation-Date: 2017-01-12 14:45+0200\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 427f721..07ee58d 100644
--- a/po/sv.gmo
+++ b/po/sv.gmo
Binary files differ
diff --git a/po/sv.po b/po/sv.po
index b0b061e..087db8d 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: 2016-11-29 15:54+0200\n"
+"POT-Creation-Date: 2017-01-12 14:45+0200\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 e5fac28..68d6b96 100644
--- a/po/tr.gmo
+++ b/po/tr.gmo
Binary files differ
diff --git a/po/tr.po b/po/tr.po
index adac61d..ad2e4c4 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: 2016-11-29 15:54+0200\n"
+"POT-Creation-Date: 2017-01-12 14:45+0200\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 518ab8a..4ee5908 100644
--- a/po/uk.gmo
+++ b/po/uk.gmo
Binary files differ
diff --git a/po/uk.po b/po/uk.po
index d854bd6..cb0d607 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: 2016-11-29 15:54+0200\n"
+"POT-Creation-Date: 2017-01-12 14:45+0200\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 bef25c6..5e30ba5 100644
--- a/po/vi.gmo
+++ b/po/vi.gmo
Binary files differ
diff --git a/po/vi.po b/po/vi.po
index 67e5566..8570568 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: 2016-11-29 15:54+0200\n"
+"POT-Creation-Date: 2017-01-12 14:45+0200\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 71884a4..d032513 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 c239d77..1139553 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: 2016-11-29 15:54+0200\n"
+"POT-Creation-Date: 2017-01-12 14:45+0200\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/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/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 6ca3876..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 "2016-11-29"
-
-/* 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.2"
-
-/* 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.2"
-
-/* 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.2"
-
-/* 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
