diff --git a/debian/changelog b/debian/changelog
index f043fdf..b2a1527 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,2763 +1,5 @@
-gstreamer1.0 (1.14.4-1+mtk+1) mendel-eagle; urgency=medium
+mtk-gstreamer (1.14.4+mtk-1) mendel-day; urgency=medium
 
-  * Add libgopm TLS workaround
+  * 1.14.4
 
  -- Coral Team <coral-support@google.com>  Tue, 22 Sep 2020 12:37:27 -0700
-
-gstreamer1.0 (1.14.4-1+mtk) mendel-day; urgency=medium
-
-  * Update to debian 1.14.4-1
-  * Update for Day release
-
- -- Coral Team <coral-support@google.com>  Thu, 30 Jan 2020 12:23:03 -0800
-
-gstreamer1.0 (1.10.4-1+mtk) mendel-chef; urgency=medium
-
-  * Add MTK patches
-
- -- Coral <coral-support@google.com>  Thu, 08 Aug 2019 11:22:00 -0700
-
-gstreamer1.0 (1.10.4-1) unstable; urgency=medium
-
-  * New upstream bugfix release
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 23 Feb 2017 15:33:32 +0200
-
-gstreamer1.0 (1.10.3-1) unstable; urgency=medium
-
-  * New upstream bugfix release
-
- -- Sebastian Dröge <slomo@debian.org>  Mon, 30 Jan 2017 15:27:56 +0200
-
-gstreamer1.0 (1.10.2-1) unstable; urgency=medium
-
-  * New upstream bugfix release
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 29 Nov 2016 15:29:47 +0200
-
-gstreamer1.0 (1.10.1-1) unstable; urgency=medium
-
-  * New upstream bugfix release
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 17 Nov 2016 14:48:06 +0200
-
-gstreamer1.0 (1.10.0-2) unstable; urgency=medium
-
-  * debian/control:
-    + Make sure to properly update debian/control every time, otherwise
-      changes to control.in are not applied (Closes: #842526).
-
- -- Sebastian Dröge <slomo@debian.org>  Mon, 07 Nov 2016 10:42:26 +0200
-
-gstreamer1.0 (1.10.0-1) unstable; urgency=medium
-
-  [ Sebastian Dröge ]
-  * debian/control.in:
-    + Remove obsolete and redudant build dependency on jade (Closes: #840370).
-
-  [ Helmut Grohne ]
-  * Mark gstreamer1.0-doc Multi-Arch: foreign (Closes: #842526).
-
-  [ Sebastian Dröge ]
-  * New upstream stable release.
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 01 Nov 2016 17:35:50 +0200
-
-gstreamer1.0 (1.9.90-1) experimental; urgency=medium
-
-  * New upstream unstable release:
-    + debian/libgstreamer.symbols:
-      - Update new symbols.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 30 Sep 2016 12:13:24 +0300
-
-gstreamer1.0 (1.9.2-1) experimental; urgency=medium
-
-  * New upstream unstable release:
-    + debian/libgstreamer-dev.install:
-      - Move gstconfig.h into the arch independent path again.
-    + debian/libgstreamer.symbols:
-      - Update new symbols.
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 01 Sep 2016 11:35:40 +0300
-
-gstreamer1.0 (1.9.1-1) experimental; urgency=medium
-
-  * New upstream unstable release:
-    + debian/libgstreamer.symbols:
-      - Update new symbols.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 06 Jul 2016 11:51:30 +0300
-
-gstreamer1.0 (1.8.2-1) unstable; urgency=medium
-
-  * debian/control.in:
-    + Remove duplicated field name.
-  * New upstream bugfix release.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 13 May 2016 14:39:48 +0300
-
-gstreamer1.0 (1.8.1-1) unstable; urgency=medium
-
-  * New upstream bugfix release.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 20 Apr 2016 17:53:56 +0300
-
-gstreamer1.0 (1.8.0-2) unstable; urgency=medium
-
-  * debian/control.in:
-    + libgstreamer1.0-0 1.8.0 breaks gstreamer1.0-plugins-base << 1.8.0
-      because of a bug in the latter that is exposed by the new version of
-      core. See https://bugzilla.gnome.org/show_bug.cgi?id=760234
-      (Closes: #819958, #819960).
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 07 Apr 2016 12:23:58 +0300
-
-gstreamer1.0 (1.8.0-1) unstable; urgency=medium
-
-  * New upstream stable release.
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 24 Mar 2016 11:52:02 +0200
-
-gstreamer1.0 (1.7.91-1) experimental; urgency=medium
-
-  * New upstream release candidate:
-    + debian/libgstreamer.symbols:
-      - Update new symbols.
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 15 Mar 2016 11:52:25 +0200
-
-gstreamer1.0 (1.7.90-1) experimental; urgency=medium
-
-  * New upstream release candidate:
-    + debian/libgstreamer.symbols:
-      - Add new symbols.
-    + debian/control.in:
-      - Build-depend on texlive-generic-recommended for ulem.sty.
-        It's not pulled in automatically anymore for whatever reason.
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 01 Mar 2016 16:57:02 +0200
-
-gstreamer1.0 (1.7.2-1) experimental; urgency=medium
-
-  * New upstream unstable release:
-    + debian/libgstreamer.symbols:
-      - Add new symbols.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 19 Feb 2016 10:55:13 +0200
-
-gstreamer1.0 (1.7.1-1) experimental; urgency=medium
-
-  * debian/control.in:
-    + Build-depend on libgsl-dev | libgsl0-dev instead of just the latter.
-  * New upstream unstable release:
-    + debian/control.in:
-      - Build-depend on GLib >= 2.40.
-    + debian/libgstreamer.symbols:
-      - Add new symbols.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 23 Dec 2015 14:13:49 +0100
-
-gstreamer1.0 (1.6.2-1) unstable; urgency=medium
-
-  * New upstream bugfix release.
-
- -- Sebastian Dröge <slomo@debian.org>  Mon, 14 Dec 2015 19:06:24 +0100
-
-gstreamer1.0 (1.6.1-1) unstable; urgency=medium
-
-  * New upstream bugfix release.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 30 Oct 2015 16:13:37 +0200
-
-gstreamer1.0 (1.6.0-1) unstable; urgency=medium
-
-  * New stable upstream release.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 25 Sep 2015 22:45:29 +0200
-
-gstreamer1.0 (1.5.91-1) experimental; urgency=medium
-
-  * New upstream release candidate.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 18 Sep 2015 18:57:10 +0200
-
-gstreamer1.0 (1.5.90-1) experimental; urgency=medium
-
-  * New upstream release candidate.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 19 Aug 2015 12:40:43 +0300
-
-gstreamer1.0 (1.5.2-1) experimental; urgency=medium
-
-  * New unstable upstream release.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 24 Jun 2015 22:47:31 +0200
-
-gstreamer1.0 (1.5.1-3) experimental; urgency=medium
-
-  * debian/rules,
-    debian/libgstreamer.postinst:
-    + Explicitely specify the architecture dependent lib directory, otherwise
-      setcap will fail if the package is installed for multiple architures.
-      It only allows one filename at a time (Closes: #788282).
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 10 Jun 2015 10:13:10 +0200
-
-gstreamer1.0 (1.5.1-2) experimental; urgency=medium
-
-  * debian/patches/0001-ptp-Check-for-the-actual-API-we-use-instead-of-just-.patch:
-    + Hopefully fix build on kFreeBSD and non-Linux in general.
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 09 Jun 2015 11:15:55 +0200
-
-gstreamer1.0 (1.5.1-1) experimental; urgency=medium
-
-  * New unstable upstream release.
-  * debian/control.in,
-    debian/libgstreamer.postinst:
-    + Install gst-ptp-helper with cap_net_bind_service,cap_net_admin
-      capabilities, and otherwise fall back to setuid root. It needs
-      to be able to listen for multicast on port 319 and 320.
-
- -- Sebastian Dröge <slomo@debian.org>  Sun, 07 Jun 2015 09:48:18 +0200
-
-gstreamer1.0 (1.5.0.1+git20150513-1) experimental; urgency=medium
-
-  * New upstream GIT snapshot.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 13 May 2015 13:19:02 +0300
-
-gstreamer1.0 (1.5.0.1+git20150316-1) experimental; urgency=medium
-
-  * New upstream GIT snapshot.
-
- -- Sebastian Dröge <slomo@debian.org>  Mon, 16 Mar 2015 19:10:11 +0100
-
-gstreamer1.0 (1.4.5-1) experimental; urgency=medium
-
-  * New upstream bugfix release.
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 18 Dec 2014 12:22:01 +0100
-
-gstreamer1.0 (1.4.4-2) unstable; urgency=medium
-
-  * Upload to unstable.
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 11 Nov 2014 13:29:18 +0100
-
-gstreamer1.0 (1.4.4-1) experimental; urgency=medium
-
-  * New upstream bugfix release.
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 06 Nov 2014 12:40:45 +0100
-
-gstreamer1.0 (1.4.3-1.2) unstable; urgency=medium
-
-  * Non-maintainer upload.
-  * debian/rules: Remove outdated mangling of debian/shlibs.local, this is
-    breaking dependencies generation for gir packages. This fix should really
-    Closes: #761019
-
- -- Laurent Bigonville <bigon@debian.org>  Sun, 02 Nov 2014 17:14:38 +0100
-
-gstreamer1.0 (1.4.3-1.1) unstable; urgency=medium
-
-  * Non-maintainer upload.
-  * Add missing libgstreamer dependency to the gir package (closes: #761019).
-
- -- Michael Gilbert <mgilbert@debian.org>  Sun, 02 Nov 2014 04:02:20 +0000
-
-gstreamer1.0 (1.4.3-1) unstable; urgency=medium
-
-  * New upstream bugfix release.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 24 Sep 2014 12:05:50 +0300
-
-gstreamer1.0 (1.4.2-1) unstable; urgency=medium
-
-  * New upstream bugfix release.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 19 Sep 2014 14:07:28 +0300
-
-gstreamer1.0 (1.4.1-1) unstable; urgency=medium
-
-  * New upstream bugfix release.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 27 Aug 2014 14:27:45 +0300
-
-gstreamer1.0 (1.4.0-1) unstable; urgency=medium
-
-  * New upstream stable release.
-
- -- Sebastian Dröge <slomo@debian.org>  Sat, 19 Jul 2014 16:28:11 +0200
-
-gstreamer1.0 (1.3.91-1) experimental; urgency=medium
-
-  * New upstream release candidate:
-    + debian/libgstreamer.symbols:
-      - Update for new symbols.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 11 Jul 2014 10:41:53 +0200
-
-gstreamer1.0 (1.3.90-1) experimental; urgency=medium
-
-  * New upstream release candidate:
-    + debian/libgstreamer.symbols:
-      - Update for new symbols.
-
- -- Sebastian Dröge <slomo@debian.org>  Sat, 28 Jun 2014 10:50:47 +0200
-
-gstreamer1.0 (1.3.3-1) experimental; urgency=medium
-
-  * New upstream development release:
-    + debian/libgstreamer.symbols:
-      - Update for new symbols.
-    + debian/rules:
-      - Run autopoint too during autoreconf now.
-
- -- Sebastian Dröge <slomo@debian.org>  Sun, 22 Jun 2014 17:22:51 +0200
-
-gstreamer1.0 (1.3.2-1) experimental; urgency=medium
-
-  * New upstream development release:
-    + debian/libgstreamer.symbols:
-      - Update for new symbols.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 21 May 2014 11:41:29 +0200
-
-gstreamer1.0 (1.3.1-1) experimental; urgency=medium
-
-  * New upstream development release:
-    + debian/control.in:
-      - Build-depend on bison >= 2.4.
-    + debian/libgstreamer.symbols:
-      - Update for new symbols.
-
- -- Sebastian Dröge <slomo@debian.org>  Sat, 03 May 2014 17:42:16 +0200
-
-gstreamer1.0 (1.2.4-1) unstable; urgency=medium
-
-  * New upstream bugfix release.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 18 Apr 2014 15:28:56 +0200
-
-gstreamer1.0 (1.2.3-1) unstable; urgency=medium
-
-  [ Iain Lane ]
-  * Run libtoolize in autoreconf. Drop ltmain-as-needed patch and use
-    dh_autoreconf --as-needed. 
-
-  [ Sebastian Dröge ]
-  * New upstream bugfix release:
-    + debian/libgstreamer.symbols:
-      - Add new symbol.
-
- -- Sebastian Dröge <slomo@debian.org>  Sun, 09 Feb 2014 11:08:32 +0100
-
-gstreamer1.0 (1.2.2-1) unstable; urgency=medium
-
-  * New upstream bugfix release.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 27 Dec 2013 10:51:07 +0100
-
-gstreamer1.0 (1.2.1-1) unstable; urgency=low
-
-  * New upstream bugfix release.
-
- -- Sebastian Dröge <slomo@debian.org>  Sat, 09 Nov 2013 16:28:11 +0100
-
-gstreamer1.0 (1.2.0-1) unstable; urgency=low
-
-  * New upstream stable release.
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 24 Sep 2013 16:15:18 +0200
-
-gstreamer1.0 (1.1.90-1) experimental; urgency=low
-
-  * New upstream release candidate:
-    + debian/libgstreamer.symbols:
-      - Add new symbols.
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 19 Sep 2013 12:39:40 +0200
-
-gstreamer1.0 (1.1.4-1) experimental; urgency=low
-
-  * New upstream development snapshot:
-    + debian/libgstreamer.symbols:
-      - Add new symbols.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 30 Aug 2013 12:38:11 +0200
-
-gstreamer1.0 (1.1.3-1) experimental; urgency=low
-
-  * New upstream development snapshot:
-    + debian/libgstreamer.symbols:
-      - Add new symbols.
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 30 Jul 2013 08:23:31 +0200
-
-gstreamer1.0 (1.1.2-1) experimental; urgency=low
-
-  * New upstream development snapshot:
-    + debian/libgstreamer.symbols:
-      - Add new symbols.
-
- -- Sebastian Dröge <slomo@debian.org>  Sun, 14 Jul 2013 11:01:32 +0200
-
-gstreamer1.0 (1.0.8-1) unstable; urgency=low
-
-  * New upstream bugfix release.
-
- -- Sebastian Dröge <slomo@debian.org>  Sat, 13 Jul 2013 11:28:24 +0200
-
-gstreamer1.0 (1.0.7-1) unstable; urgency=low
-
-  * New upstream bugfix release.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 26 Apr 2013 14:04:38 +0200
-
-gstreamer1.0 (1.0.6-1) unstable; urgency=low
-
-  * New upstream bugfix release.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 22 Mar 2013 18:11:46 +0100
-
-gstreamer1.0 (1.0.5-1) unstable; urgency=low
-
-  * New upstream bugfix release.
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 08 Jan 2013 13:38:27 +0100
-
-gstreamer1.0 (1.0.4-1) unstable; urgency=low
-
-  * New upstream bugfix release.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 19 Dec 2012 10:25:15 +0100
-
-gstreamer1.0 (1.0.3-1) unstable; urgency=low
-
-  * New upstream bugfix release.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 21 Nov 2012 14:45:04 +0100
-
-gstreamer1.0 (1.0.2-1) unstable; urgency=low
-
-  * New upstream stable release.
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 25 Oct 2012 13:23:04 +0200
-
-gstreamer1.0 (1.0.1-1) unstable; urgency=low
-
-  * New upstream stable release:
-    + debian/libgstreamer.symbols:
-      - Add new symbols.
-
- -- Sebastian Dröge <slomo@debian.org>  Mon, 08 Oct 2012 09:59:20 +0200
-
-gstreamer1.0 (1.0.0-1) unstable; urgency=low
-
-  * New upstream stable release:
-    + debian/libgstreamer.symbols:
-      - Update symbols file.
-    + debian/*:
-      - Change remaining parts from 0.11 to 1.0.
-
- -- Sebastian Dröge <slomo@debian.org>  Mon, 24 Sep 2012 16:28:50 +0200
-
-gstreamer1.0 (0.11.99-1) experimental; urgency=low
-
-  * New upstream release.
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 18 Sep 2012 08:55:08 +0200
-
-gstreamer1.0 (0.11.94-1) experimental; urgency=low
-
-  * New upstream release:
-    + debian/libgstreamer.symbols:
-      - Update symbols file.
-    + debian/control.in:
-      - Build-depend on gtk-doc >= 1.12.
-    + debian/patches/0001-netclientclock-simplify-by-using-g_socket_condition_.patch:
-      - Dropped, merged upstream.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 14 Sep 2012 09:04:41 +0200
-
-gstreamer1.0 (0.11.93-2) experimental; urgency=low
-
-  * debian/control.in:
-    + Build-depend on GLIB >= 2.23.
-  * debian/patches/0001-netclientclock-simplify-by-using-g_socket_condition_.patch:
-    + Fix unit test hang that causes the build to fail sometimes.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 10 Aug 2012 12:59:53 +0200
-
-gstreamer1.0 (0.11.93-1) experimental; urgency=low
-
-  * New upstream release:
-    + debian/libgstreamer.symbols:
-      - Update symbols file.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 08 Aug 2012 18:12:33 +0200
-
-gstreamer1.0 (0.11.92-1) experimental; urgency=low
-
-  * debian/control.in:
-    + Update automake, autoconf and libtool build dependencies.
-  * New upstream release, "High Hopes":
-    + debian/libgstreamer.symbols:
-      - Update symbols file.
-  * debian/gst-codec-info.c:
-    + Updated for API changes.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 08 Jun 2012 09:38:04 +0200
-
-gstreamer1.0 (0.11.91-1) experimental; urgency=low
-
-  * New upstream release, "I will give you five magic beans!":
-    + debian/libgstreamer.symbols:
-      - Update symbols file.
-  * debian/libgstreamer-dev.install:
-    + Don't ship useless .la file for the core plugins.
-    + Don't ship .a and .la files for the library.
-  * debian/control.in:
-    + Update debhelper dependency version and Standards-Version.
-
- -- Sebastian Dröge <slomo@debian.org>  Mon, 21 May 2012 11:14:06 +0200
-
-gstreamer1.0 (0.11.90-1) experimental; urgency=low
-
-  [ Olivier Naudan ]
-  * Imported Upstream version 0.11.90
-  * debian/rules and debian/changelog: migration to 1.0
-  * debian/control*: aligned libglib2.0-dev version requirement with configure.ac
-  * gst-codec-info.c: migration to gst 1.0
-  * Updated debian/patches to use GST_API_VERSION
-  * Refreshed 99_ltmain_as-needed.patch to apply cleanly again
-  * debian/control: updated package names with 1.0
-  * Updated debian/libgstreamer.symbols based on upstream 0.11.90
-  * debian/control*: added a new build-dep on libxml2-dev
-
-  [ Sebastian Dröge ]
-  * Fix symbols file versions.
-  * 79_multiarch-backwards-compat.patch: Dropped, there's no need for
-    backwards compatibility anymore.
-  * Remove libxml2-dev build-dependency again.
-  * Update copyright.
-  * 80_ia32-hack.patch: Dropped, shouldn't be needed anymore.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 02 May 2012 17:27:44 +0200
-
-gstreamer0.11 (0.11.1-3) UNRELEASED; urgency=low
-
-  [ Sebastian Dröge ]
-  * debian/control.in:
-    + Don't (build-) depend on libxml2.
-    + Build-depend on automake (>= 1.10), autoconf (>= 2.60) and
-      libtool (>= 2.0) to make dh-autoreconf actually work.
-
-  [ Loïc Minier ]
-  * Only track 0.11.* versions in watch file.
-  * Update my email address in control.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 14 Dec 2011 12:18:43 +0100
-
-gstreamer0.11 (0.11.1-2) experimental; urgency=low
-
-  * debian/control.in:
-    + Build-depend on GLib 2.26.
-  * debian/dh_gstscancodecs:
-    + Fix for multi-arch to look in the correct directories.
-      Patch by YunQiang Su <wzssyqa@gmail.com>.
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 13 Dec 2011 10:11:55 +0100
-
-gstreamer0.11 (0.11.1-1) experimental; urgency=low
-
-  [ Nicolas Dechesne ]
-  * New upstream release.
-    + debian/libstreamer.symbols
-    + debian/control.in
-      - removed unversioned gstreamer-tools since removed upstream
-      - removed old Replaces/Conflicts which no longer make sense on 0.11
-    + debian/rules
-      - updated abi number
-    + misc
-      - removed xmllaunch, feedback and xmlinspect
-      - replaced reference to GST_PLUGIN_FEATURE_NAME to GST_OBJECT_NAME
-
-  [ Sebastian Dröge ]
-  * debian/copyright:
-    + Clean up, fix and complete copyright file.
-  * Merge 0.10.35.2-1.
-  * Upload to experimental
-
- -- Sebastian Dröge <slomo@debian.org>  Mon, 12 Dec 2011 11:44:42 +0100
-
-gstreamer0.10 (0.10.35.2-1) experimental; urgency=low
-
-  * New upstream pre-release:
-    + debian/control.in:
-      - Build-depend on GLib >= 2.24.
-    + debian/patches/99_ltmain_as-needed.patch:
-      - Refreshed to apply cleanly again.
-    + debian/libgstreamer.symbols:
-      - Update symbols file with new API.
-  * debian/rules:
-    + Remove all dependency_libs from the .la files (Closes: #633319).
-  * debian/control.in:
-    + Put GI package into section introspection.
-  * debian/compat,
-    debian/control.in,
-    debian/gir1.2-gstreamer.install,
-    debian/libgstreamer-dev.install,
-    debian/libgstreamer.install,
-    debian/patches/79_multiarch-backwards-compat.patch,
-    debian/patches/80_ia32-hack.patch,
-    debian/rules:
-    + Transition package to multi-arch (Closes: #647481).
-      Patch taken from the Ubuntu package.
-
- -- Sebastian Dröge <slomo@debian.org>  Sun, 11 Dec 2011 18:52:12 +0100
-
-gstreamer0.10 (0.10.35-1) unstable; urgency=low
-
-  * New upstream bugfix release, "Nuclear Fission".
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 23 Jun 2011 08:48:30 +0200
-
-gstreamer0.10 (0.10.34-1) unstable; urgency=low
-
-  * New upstream bugfix release, "Misfits".
-
- -- Sebastian Dröge <slomo@debian.org>  Sat, 14 May 2011 11:41:04 +0200
-
-gstreamer0.10 (0.10.33-1) unstable; urgency=low
-
-  * New upstream release, "Prior Spaceflight Experience is an Advantage":
-    + debian/libgstreamer.symbols:
-      - Update version of new symbols to 0.10.33.
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 10 May 2011 15:45:19 +0200
-
-gstreamer0.10 (0.10.32.3-1) experimental; urgency=low
-
-  * New upstream pre-release.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 27 Apr 2011 14:04:36 +0200
-
-gstreamer0.10 (0.10.32.2-1) experimental; urgency=low
-
-  * debian/control.in:
-    + Let the -dev package depend on the GIR package as required by
-      the new gobject-introspection policy.
-
-  [ Alessandro Decina ]
-  * debian/control.in:
-    + Add build dependency on dh-autoreconf.
-  * debian/rules:
-    + Include dh-autoreconf cdbs rule.
-
-  [ Sebastian Dröge ]
-  * New upstream pre-release:
-    + debian/patches/01_valve-only-set-discont-once.patch:
-      - Dropped, merged upstream.
-    + debian/libgstreamer.symbols:
-      - Add new API.
-
- -- Sebastian Dröge <slomo@debian.org>  Sun, 17 Apr 2011 09:45:41 +0200
-
-gstreamer0.10 (0.10.32-6) unstable; urgency=low
-
-  * Upload to unstable for the gobject-introspection transition.
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 22 Mar 2011 13:58:41 +0100
-
-gstreamer0.10 (0.10.32-5) experimental; urgency=low
-
-  * debian/control.in:
-    + Revert gobject-introspection versio revert and provide
-      gir1.2-gstreamer-0.10 again.
-
- -- Sebastian Dröge <slomo@debian.org>  Mon, 07 Mar 2011 09:26:32 +0100
-
-gstreamer0.10 (0.10.32-4) unstable; urgency=low
-
-  * debian/control.in: Remove Conflict on gst-plugins-bad, the registry
-    itself works around it.
-  * debian/control.in: Move back to the old gobject-introspection stack as it
-    hasn't migrated to unstable yet
-  * Both of the above fixes FTBS on unstable (Closes: #615911)
-
- -- Sjoerd Simons <sjoerd@debian.org>  Wed, 02 Mar 2011 00:18:29 +0000
-
-gstreamer0.10 (0.10.32-3) unstable; urgency=low
-
-  * debian/patches/01_valve-only-set-discont-once.patch
-    - Added. Fixes bad audio quality in calls from Empathy (From upstream git)
-
- -- Sjoerd Simons <sjoerd@debian.org>  Mon, 28 Feb 2011 18:42:54 +0000
-
-gstreamer0.10 (0.10.32-2) unstable; urgency=low
-
-  * Upload to unstable.
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 08 Feb 2011 10:55:58 +0100
-
-gstreamer0.10 (0.10.32-1) experimental; urgency=low
-
-  * New upstream stable release, "Take Me to the Bonus Level":
-    + debian/libgstreamer.symbols:
-      - Update new symbols to the release version.
-
- -- Sebastian Dröge <slomo@debian.org>  Sat, 22 Jan 2011 12:54:28 +0100
-
-gstreamer0.10 (0.10.31.4-1) experimental; urgency=low
-
-  * New upstream pre-release:
-    + debian/libgstreamer.symbols:
-      - Update new symbols to the latest pre-release version.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 19 Jan 2011 21:09:58 +0100
-
-gstreamer0.10 (0.10.31.3-1) experimental; urgency=low
-
-  * debian/control.in:
-    + Conflict with gstreamer0.10-plugins-bad0.10 (<< 0.10.20.2) because
-      of the moved selector and valve plugins. There's no file conflict.
-  * New upstream pre-release:
-    + debian/libgstreamer.symbols:
-      - Update new symbols to the latest pre-release version.
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 13 Jan 2011 11:47:02 +0100
-
-gstreamer0.10 (0.10.31.2-1) experimental; urgency=low
-
-  [ Emilio Pozuelo Monfort ]
-  * debian/control.in,
-    debian/rules:
-    + Use dpkg-vendor instead of lsb_release.
-
-  [ Sebastian Dröge ]
-  * debian/control.in:
-    + Suggest gstreamer0.10-plugins-base instead of the non-existing
-      gstreamer0.10-plugins package (Closes: #607466).
-  * New upstream pre-release:
-    + debian/control.in:
-      - Require GLib >= 2.22.
-    + debian/patches/*.patch:
-      - Refreshed.
-    + debian/libgstreamer.symbols:
-      - Add new API symbols.
-
- -- Sebastian Dröge <slomo@debian.org>  Sat, 08 Jan 2011 17:05:50 +0100
-
-gstreamer0.10 (0.10.31-2) experimental; urgency=low
-
-  * Transition from gir1.0-gstreamer-0.10 to gir1.2-gstreamer-0.10
-
- -- Sjoerd Simons <sjoerd@debian.org>  Sun, 12 Dec 2010 19:45:03 +0000
-
-gstreamer0.10 (0.10.31-1) experimental; urgency=low
-
-  * New upstream release, "Safety Pins":
-    + debian/libgstreamer.symbols:
-      - Update symbols.
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 02 Dec 2010 10:30:18 +0100
-
-gstreamer0.10 (0.10.30.5-1) experimental; urgency=low
-
-  * debian/control.in:
-    + Drop gir-repository-dev build dependency. It's not needed and
-      only pulls in half of Gnome.
-  * New upstream pre-release:
-    + debian/libgstreamer.symbols:
-      - Update symbols.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 19 Nov 2010 11:26:27 +0100
-
-gstreamer0.10 (0.10.30.4-1) experimental; urgency=low
-
-  * New upstream pre-release:
-    + debian/libgstreamer.symbols:
-      - Update symbols.
-
- -- Sebastian Dröge <slomo@debian.org>  Mon, 01 Nov 2010 20:11:56 +0100
-
-gstreamer0.10 (0.10.30.3-1) experimental; urgency=low
-
-  * New upstream pre-release:
-    + debian/libgstreamer.symbols:
-      - Update symbols.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 22 Oct 2010 19:51:53 +0200
-
-gstreamer0.10 (0.10.30.2-1) experimental; urgency=low
-
-  * New upstream pre-release:
-    + debian/patches/80_ia32-hack.patch:
-      - Refreshed.
-    + debian/libgstreamer.symbols:
-      - Add new symbols.
-
- -- Sebastian Dröge <slomo@debian.org>  Sat, 16 Oct 2010 11:14:39 +0200
-
-gstreamer0.10 (0.10.30-1) unstable; urgency=low
-
-  * New upstream stable release, "Safety First":
-    + debian/libgstreamer.symbols:
-      - Update new symbols version to 0.10.30.
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 15 Jul 2010 13:48:14 +0200
-
-gstreamer0.10 (0.10.29.4-1) experimental; urgency=low
-
-  * New upstream pre-release:
-    + debian/libgstreamer.symbols:
-      - Update new symbols version to 0.10.29.4.
-      - Add new symbols.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 07 Jul 2010 11:40:13 +0200
-
-gstreamer0.10 (0.10.29.3-1) experimental; urgency=low
-
-  * New upstream pre-release:
-    + debian/libgstreamer.symbols:
-      - Update new symbols version to 0.10.29.3.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 30 Jun 2010 10:40:20 +0200
-
-gstreamer0.10 (0.10.29.2-1) experimental; urgency=low
-
-  * New upstream pre-release:
-    + debian/rules,
-      debian/compat,
-      debian/control.in,
-      debian/source/format,
-      debian/patches/*:
-      - Update to debhelper compat level 7.
-      - Update to source format 3.0 (quilt).
-      - Update to Standards-Version 3.8.4.
-    + debian/libgstreamer.symbols:
-      - Update symbols file for the new API.
-    + debian/control.in:
-      - Build depend on GLib 2.20.
-
- -- Sebastian Dröge <slomo@debian.org>  Sat, 26 Jun 2010 20:17:40 +0200
-
-gstreamer0.10 (0.10.29-1) unstable; urgency=low
-
-  * New upstream release, "It's a Trap":
-    + debian/libgstreamer.symbols:
-      - Update symbol versions to the stable release.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 28 Apr 2010 09:40:47 +0200
-
-gstreamer0.10 (0.10.28.3-1) experimental; urgency=low
-
-  * New upstream pre-release.
-
- -- Sebastian Dröge <slomo@debian.org>  Mon, 26 Apr 2010 07:58:27 +0200
-
-gstreamer0.10 (0.10.28.2-1) experimental; urgency=low
-
-  * New upstream pre-release:
-    + debian/libgstreamer.symbols:
-      - Update symbols file for the new API.
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 15 Apr 2010 11:44:13 +0200
-
-gstreamer0.10 (0.10.28-1) unstable; urgency=low
-
-  * New upstream stable release, "Same Old, Same Old".
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 09 Mar 2010 09:45:24 +0000
-
-gstreamer0.10 (0.10.27-1) unstable; urgency=low
-
-  * New upstream stable release, "You're Shocked, We Know":
-    + debian/libgstreamer.symbols:
-      - Updated symbol versions to the stable version.
-
- -- Sebastian Dröge <slomo@debian.org>  Sun, 07 Mar 2010 10:18:53 +0000
-
-gstreamer0.10 (0.10.26.3-1) experimental; urgency=low
-
-  * New upstream pre-release.
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 25 Feb 2010 08:20:25 +0100
-
-gstreamer0.10 (0.10.26.2-2) experimental; urgency=low
-
-  * New upstream pre-release:
-    + debian/libgstreamer.symbols:
-      - Added new API.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 19 Feb 2010 13:46:16 +0100
-
-gstreamer0.10 (0.10.26-1) unstable; urgency=low
-
-  * New upstream release, "Think Twice":
-    + debian/libgstreamer.symbols:
-      - Update to use the stable versions.
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 11 Feb 2010 10:30:18 +0100
-
-gstreamer0.10 (0.10.25.3-1) experimental; urgency=low
-
-  * New upstream pre-release.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 05 Feb 2010 09:59:16 +0100
-
-gstreamer0.10 (0.10.25.2-3) experimental; urgency=low
-
-  * debian/patches/80_ia32-hack.patch:
-    + Fix FTBFS if sys/utsname.h is not included indirectly by
-      other headers.
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 28 Jan 2010 17:54:47 +0100
-
-gstreamer0.10 (0.10.25.2-2) experimental; urgency=low
-
-  * debian/libgstreamer.install:
-    + Also ship the registry update helper application.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 27 Jan 2010 10:38:21 +0100
-
-gstreamer0.10 (0.10.25.2-1) experimental; urgency=low
-
-  * New upstream pre-release:
-    + debian/patches/01_multiqueue-iterate-internal-links.patch:
-      - Dropped, merged upstream.
-    + debian/patches/80_ia32-hack.patch:
-      - Updated to apply cleanly again.
-    + debian/control.in:
-      - Conflict with gstreamer0.10-plugins-base (<< 0.10.25.2) because
-        of a moved plugin. This is no file conflict but a GObject type
-        name conflict.
-      - Build depend on GLib 2.18.
-    + debian/libgstreamer.symbols:
-      - Added new API.
-  * debian/control.in:
-    + Remove David I. Lehn from Uploaders (Closes: #557284).
-    + Fix typo in package description (Closes: #557365).
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 27 Jan 2010 07:43:13 +0100
-
-gstreamer0.10 (0.10.25-4) unstable; urgency=low
-
-  * debian/rules:
-    + Don't include the plugin library files in the dh_makeshlibs
-      call (Closes: #559657).
-
- -- Sebastian Dröge <slomo@debian.org>  Sun, 06 Dec 2009 13:57:03 +0100
-
-gstreamer0.10 (0.10.25-3) unstable; urgency=low
-
-  * debian/rules,
-    debian/control.in,
-    debian/gir1.0-gstreamer.install:
-    + Update for the new GObject-Introspection mini spec (Closes: #551568).
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 20 Oct 2009 10:54:14 +0200
-
-gstreamer0.10 (0.10.25-2) unstable; urgency=low
-
-  * debian/patches/01_multiqueue-iterate-internal-links.patch:
-    + Patch from upstream GIT to improve the iterate internal links
-      function of the multiqueue element. It's more robust and faster
-      now.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 07 Oct 2009 08:52:26 +0200
-
-gstreamer0.10 (0.10.25-1) unstable; urgency=low
-
-  * New upstream release, 'Feel the burn':
-    + debian/libgstreamer.symbols:
-      - Updated for the new release.
-
- -- Sebastian Dröge <slomo@debian.org>  Mon, 05 Oct 2009 18:07:40 +0200
-
-gstreamer0.10 (0.10.24.4-1) experimental; urgency=low
-
-  * New upstream pre-release.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 02 Oct 2009 07:41:43 +0200
-
-gstreamer0.10 (0.10.24.3-1) experimental; urgency=low
-
-  * New upstream pre-release:
-    + debian/patches/01_gir-pkgconfig-path.patch,
-      debian/patches/02_pkgconfig-first.patch:
-      - Dropped, merged upstream.
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 17 Sep 2009 07:13:33 +0200
-
-gstreamer0.10 (0.10.24.2-2) experimental; urgency=low
-
-  * debian/rules:
-    + Set HOME to a fake home directory to prevent writing
-      to a non-writable buildd home which results in FTBFS (Closes: #546444).
-
- -- Sebastian Dröge <slomo@debian.org>  Sun, 13 Sep 2009 11:14:41 +0200
-
-gstreamer0.10 (0.10.24.2-1) experimental; urgency=low
-
-  * New upstream pre-release:
-    + debian/control.in,
-      debian/libgstreamer.install,
-      debian/libgstreamer-dev.install:
-      - Enable GObject-Introspection support and ship the generated
-        files in the -dev and shared library package.
-    + debian/control.in:
-      - Update build dependencies.
-    + debian/patches/90_dont-link-gstcheck-with-check.patch:
-      - Dropped, not needed anymore.
-    + debian/libgstreamer.symbols:
-      - Updated for the new version.
-  * debian/control.in:
-    - Update Standards-Version to 3.8.3.
-  * debian/patches/01_gir-pkgconfig-path.patch:
-    - Add correct pkg-config search path for introspection
-      generation.
-  * debian/patches/02_pkgconfig-first.patch:
-    - Generate pkg-config before all binaries.
-
- -- Sebastian Dröge <slomo@debian.org>  Sat, 12 Sep 2009 12:23:52 +0200
-
-gstreamer0.10 (0.10.24-1) unstable; urgency=low
-
-  * New upstream release, 'It matters':
-    + debian/libgstreamer.symbols:
-      - Updated for the new release.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 05 Aug 2009 08:00:46 +0200
-
-gstreamer0.10 (0.10.23.4-1) experimental; urgency=low
-
-  * New upstream pre-release:
-    + debian/libgstreamer.symbols:
-      - Updated for the new pre-release.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 24 Jul 2009 18:41:42 +0200
-
-gstreamer0.10 (0.10.23.3-1) experimental; urgency=low
-
-  * New upstream pre-release:
-    + debian/libgstreamer.symbols:
-      - Updated for the new pre-release.
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 21 Jul 2009 09:48:07 +0200
-
-gstreamer0.10 (0.10.23.2-1) experimental; urgency=low
-
-  * debian/control.in:
-    + Fix section of debug package.
-    + Update Standards-Version to 3.8.2, no additional changes needed.
-  * New upstream pre-release:
-    + debian/control.in:
-      - Update build dependencies.
-    + debian/patches/01_urihandler-get_type_full.patch:
-      - Dropped, merged upstream.
-    + debian/libgstreamer.symbols:
-      - Updated for the new API additions.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 15 Jul 2009 09:07:03 +0200
-
-gstreamer0.10 (0.10.23-2) unstable; urgency=low
-
-  * debian/control.in:
-    + (Build-) depend on libxml2-doc and libglib2.0-doc to get correct
-      cross references in the docs.
-    + Add ${misc:Depends} everywhere.
-  * debian/gstreamer-doc.links:
-    + Add links to /usr/share/gtk-doc to allow cross references to
-      the gstreamer core docs.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 17 Jun 2009 16:31:46 +0200
-
-gstreamer0.10 (0.10.23-1) unstable; urgency=low
-
-  * New upstream release, 'Alaboo Alaboo':
-    + debian/libgstreamer.symbols:
-      - Change new symbol version to 0.10.23.
-
- -- Sebastian Dröge <slomo@debian.org>  Mon, 11 May 2009 10:02:06 +0200
-
-gstreamer0.10 (0.10.22.4-1) experimental; urgency=low
-
-  * debian/patches/90_dont-link-gstcheck-with-check.patch:
-    + Patch by Arnaud Soyez to fix FTBFS because of invalid make syntax.
-      (Closes: #527007).
-  * debian/patches/01_urihandler-get_type_full.patch:
-    + Use get_type_full() vmethod instead of get_type() if specified.
-      This makes it possible to implement GstURIHandler from bindings.
-  * New upstream pre-release.
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 07 May 2009 09:27:44 +0200
-
-gstreamer0.10 (0.10.22.3-1) experimental; urgency=low
-
-  * New upstream pre-release.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 22 Apr 2009 08:05:52 +0200
-
-gstreamer0.10 (0.10.22.2-1) experimental; urgency=low
-
-  * New upstream pre-release:
-    + debian/control.in:
-      - Require GLib >= 2.14.
-    + debian/libgstreamer.symbols:
-      - Add new symbols.
-  * debian/control.in:
-    + Update Standards-Version to 3.8.1, no additional changes needed.
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 16 Apr 2009 06:17:17 +0200
-
-gstreamer0.10 (0.10.22-3) unstable; urgency=low
-
-  * debian/patches/90_dont-link-gstcheck-with-check.patch:
-    + Don't link libgstcheck with check. check is a static library
-      and by linking it to libgstcheck and to everything using libgstcheck
-      we're introducing the check symbols twice and export the check
-      API from libgstcheck (Closes: #521735).
-  * debian/rules:
-    + Include clean-la.mk to remove dependency_libs from the .la files.
-      This is a preparation to drop them later and to remove unneeded
-      dependencies when linking to the GStreamer libraries.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 01 Apr 2009 16:07:22 +0200
-
-gstreamer0.10 (0.10.22-2) unstable; urgency=low
-
-  * Upload to unstable.
-
- -- Sebastian Dröge <slomo@debian.org>  Sun, 15 Feb 2009 19:43:50 +0100
-
-gstreamer0.10 (0.10.22-1) experimental; urgency=low
-
-  * New upstream release, 'I heard a disturbing sound':
-    + debian/libgstreamer.symbols:
-      - Updated for the new version.
-    + Fixes segfault in gst_register_typefind() (Closes: #511902).
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 20 Jan 2009 09:10:34 +0100
-
-gstreamer0.10 (0.10.21.3-1) experimental; urgency=low
-
-  * New upstream pre-release.
-
- -- Sebastian Dröge <slomo@debian.org>  Sun, 11 Jan 2009 20:09:19 +0100
-
-gstreamer0.10 (0.10.21.2-3) experimental; urgency=low
-
-  * debian/rules:
-    + Fix check introduced in last version to prevent FTBFS.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 09 Jan 2009 11:05:19 +0100
-
-gstreamer0.10 (0.10.21.2-2) experimental; urgency=low
-
-  * debian/rules:
-    + Only build the docs when binary-indep is called.
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 08 Jan 2009 10:05:43 +0100
-
-gstreamer0.10 (0.10.21.2-1) experimental; urgency=low
-
-  * New upstream pre-release:
-    + debian/patches/01_wrapper-plugins.patch,
-      debian/patches/02_gtkdoc-rebase.patch,
-      debian/patches/03_registry-failure-crash.patch,
-      debian/patches/04_pad-caps-acception.patch,
-      debian/patches/05_basetransform-caps-refcount.patch,
-      debian/patches/06_basetransform-buffer-allocation.patch:
-      - Dropped, merged upstream.
-    + debian/patches/80_ia32-hack.patch:
-      - Updated to apply cleanly again.
-    + debian/libgstreamer.symbols:
-      - Updated with the new symbols.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 07 Jan 2009 09:42:00 +0100
-
-gstreamer0.10 (0.10.21-5) experimental; urgency=low
-
-  * debian/patches/06_basetransform-buffer-allocation.patch:
-    + Patch from upstream CVS to fix buffer allocation. Before it could
-      happen that invalid memory references were returned.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 24 Oct 2008 14:49:42 +0200
-
-gstreamer0.10 (0.10.21-4) experimental; urgency=low
-
-  * debian/patches/04_pad-caps-acception.patch:
-    + Patch from upstream CVS to fix several cases where basetransform
-      elements didn't accept caps while they should.
-  * debian/patches/05_basetransform-caps-refcount.patch:
-    + Patch from upstream CVS to make sure that basetransform's pad caps
-      have the correct refcount and are not destroyed by accident.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 22 Oct 2008 07:53:14 +0200
-
-gstreamer0.10 (0.10.21-3) experimental; urgency=low
-
-  * debian/patches/03_registry-failure-crash.patch:
-    + Patch from upstream CVS to fix a crash when writing the registry file
-      failed. Fixes builds on buildd's with non-writable $HOME.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 08 Oct 2008 12:22:10 +0200
-
-gstreamer0.10 (0.10.21-2) experimental; urgency=low
-
-  * debian/libgstreamer.symbols:
-    - Updated for 0.10.21 so we depend on a stable version.
-  * debian/patches/02_gtkdoc-rebase.patch:
-    - Don't require gtk-doc for the docs. Fixes the build with
-      binary-indep (Closes: #499818).
-
- -- Sebastian Dröge <slomo@debian.org>  Sun, 05 Oct 2008 10:02:37 +0200
-
-gstreamer0.10 (0.10.21-1) experimental; urgency=low
-
-  * New upstream release, 'Take These Things From Me'.
-
- -- Sebastian Dröge <slomo@debian.org>  Sat, 04 Oct 2008 12:16:53 +0200
-
-gstreamer0.10 (0.10.20.2-1) experimental; urgency=low
-
-  * debian/gst-codec-info.c:
-    + Ignore decoders with a less than marginal rank as they're
-      not autoplugged by playbin/decodebin. This only applies to the
-      X-Gst-Decoders field.
-  * New upstream pre-release:
-    + debian/patches/02_gtk-doc-cflags.patch:
-      - Dropped, merged upstream.
-    + debian/libgstreamer.symbols:
-      - Updated for the new version.
-
- -- Sebastian Dröge <slomo@debian.org>  Sun, 21 Sep 2008 16:22:29 +0200
-
-gstreamer0.10 (0.10.20-3) experimental; urgency=low
-
-  [ Loic Minier ]
-  * Bdep on perl-doc; thanks Marc 'HE' Brockschmidt; closes: #495043.
-  * Wrap uploaders, bdeps and deps.
-
-  [ Sebastian Dröge ]
-  * debian/gst-codec-info.c:
-    + Rename gstreamer0.10-{audio,video}src to
-      gstreamer0.10-{audio,video}source.
-    + Remove some more useless fields from the encoder/decoder caps.
-  * debian/control.in:
-    + Let the -dev package recommends debhelper for the dh_gstscancodecs
-      script (Closes: #494999).
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 15 Aug 2008 09:21:42 +0200
-
-gstreamer0.10 (0.10.20-2) experimental; urgency=low
-
-  * debian/control.in:
-    + Update flex build dependency to >= 2.5.34 for the new symbols this
-      adds to the library (Closes: #492028).
-  * debian/gst-codec-info.c,
-    debian/control.in,
-    debian/rules,
-    debian/dh_gstscancodecs,
-    debian/libgstreamer-dev.install:
-    + Implement infrastructure to export the codec installation informations
-      via binary package control fields. Move dh_gstscancodecs to the -dev
-      package and implement helper utility gst-codec-info-0.10 for getting
-      the codec information for a package.
-  * debian/rules,
-    debian/libgstreamer-dev.install:
-    + Add a manpage for dh_gstscancodecs (Closes: #445456).
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 07 Aug 2008 15:47:00 +0200
-
-gstreamer0.10 (0.10.20-1) unstable; urgency=low
-
-  * New upstream release, 'You Crazy Diamond':
-    + debian/libgstreamer.symbols:
-      - Updated for the new version.
-  * debian/control.in:
-    + Replace gs build dependency by ghostscript as the former is only a
-      transitional dummy package.
-    + Update Standards-Version to 3.8.0, no additional changes needed.
-  * debian/libgstreamer.symbols:
-    + Append '~' to the versions for symbols which were introduced between
-      different Debian package versions.
-  * debian/gstreamer-doc.links:
-    + Link the GStreamer plugins documentation into the devhelp directories
-      too.
-  * debian/gstreamer0.10-doc.doc-base.manual,
-    debian/gstreamer0.10-doc.doc-base.pwg,
-    debian/gstreamer0.10-doc.doc-base.core-ref,
-    debian/gstreamer0.10-doc.doc-base.libs-ref,
-    debian/gstreamer0.10-doc.doc-base.faq:
-    + Fix sections.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 18 Jun 2008 20:11:25 +0200
-
-gstreamer0.10 (0.10.19.3-1) experimental; urgency=low
-
-  * New upstream pre-release:
-    + debian/patches/02_link-dl.patch:
-      - Dropped, merged upstream.
-  * debian/patches/02_gtk-doc-cflags.patch:
-    + Use the CFLAGS passed to configure also for the gtk-doc utitilities.
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 12 Jun 2008 10:53:21 +0200
-
-gstreamer0.10 (0.10.19.2-1) experimental; urgency=low
-
-  [ Sjoerd Simons ]
-  * debian/patches/07_bus_flushing_race.patch
-    + Added. Patch from upstream CVS to handle the bus_dispatch function
-    popping NULL from the message queue, which can happen if the bus is set to
-    flushing between check/prepare and dispatch.
-
-  [ Sebastian Dröge ]
-  * New upstream pre-release:
-    + debian/patches/03_binary-registry-version.patch,
-      debian/patches/04_binary-registry-alignment.patch,
-      debian/patches/05_binary-registry-empty-uri-schemes-corruption.patch,
-      debian/patches/06_binary-registry-checksum.patch,
-      debian/patches/07_bus_flushing_race.patch,
-      debian/patches/75_build_docs_without_python_xml.patch:
-      - Dropped, merged upstream.
-    + debian/control.in:
-      - Drop python-twisted-core from build dependencies as it's not needed
-        anymore.
-      - Bump glib build dependency to >= 2.12.
-    + debian/rules:
-      - Drop configure parameter to build the binary registry. It's the
-        default now.
-    + debian/libgstreamer.symbols:
-      - Updated symbol file with the new symbols.
-  * debian/rules:
-    + Pass -c4 to to dh_makeshlibs to fail the build when the symbol files is
-      out of date.
-    + Don't compress gtk-doc documentation to make gtk-doc happy.
-  * debian/patches/02_werror.patch,
-    debian/rules:
-    + Drop patch to prevent usage of -Werror and append -Wno-error to
-      CFLAGS and CXXFLAGS instead.
-  * debian/patches/02_link-dl.patch:
-    + Link with -ldl for dladdr().
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 05 Jun 2008 07:57:05 +0200
-
-gstreamer0.10 (0.10.19-3) unstable; urgency=low
-
-  * debian/patches/06_binary-registry-checksum.patch:
-    + Patch from upstream CVS to include a CRC32 checksum for the registry
-      data to make sure it's not corrupted. Also plug a memory leak in error
-      cases.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 16 Apr 2008 23:01:20 +0200
-
-gstreamer0.10 (0.10.19-2) unstable; urgency=medium
-
-  * debian/control.in:
-    + Require bison >= 1.875 as per configure.ac.
-  * debian/patches/05_binary-registry-empty-uri-schemes-corruption.patch:
-    + Patch from upstream CVS to not corrupt the registry if a plugin gives
-      a valid pointer for the supported URI schemes list but this contains
-      no URI schemes. Also don't unref a variable from which we don't own
-      the reference and improve debugging (Closes: #475735). Set urgency to
-      medium because this closes an RC bug.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 16 Apr 2008 15:18:24 +0200
-
-gstreamer0.10 (0.10.19-1) unstable; urgency=high
-
-  * New upstream bugfix release, "Me Again":
-    + debian/patches/05_fdsrc-fdsink-eagain.patch:
-      - Dropped, merged upstream.
-
- -- Sebastian Dröge <slomo@debian.org>  Mon, 07 Apr 2008 11:31:15 +0200
-
-gstreamer0.10 (0.10.18-4) unstable; urgency=low
-
-  * debian/patches/05_fdsrc-fdsink-eagain.patch:
-    + Retry when we get EAGAIN. Fixes the totem mozilla plugin to actually
-      work again.
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 25 Mar 2008 09:05:01 +0100
-
-gstreamer0.10 (0.10.18-3) unstable; urgency=low
-
-  * debian/patches/04_binary-registry-alignment.patch:
-    + Fix alignment of the binary registry on 64 bit architectures
-      and whitelist amd64 for unaligned access too.
-
- -- Sebastian Dröge <slomo@debian.org>  Sun, 23 Mar 2008 12:23:21 +0100
-
-gstreamer0.10 (0.10.18-2) unstable; urgency=low
-
-  * debian/rules:
-    + Start using the binary registry instead of the XML registry. This has
-      the advantage of being much faster (especially startup of applications
-      will be faster) and lower memory usage.
-  * debian/patches/03_binary-registry-version.patch:
-    + Patch from upstream CVS to use a sane value for the binary registry
-      format version and not print an error when there is a version mismatch.
-      Instead silently recreate the registry.
-  * debian/libgstreamer.symbols:
-    + Update for the binary registry. These symbols are private ones and
-      should in theory not be exported at all.
-
- -- Sebastian Dröge <slomo@debian.org>  Sat, 22 Mar 2008 22:46:31 +0100
-
-gstreamer0.10 (0.10.18-1) unstable; urgency=low
-
-  * New upstream release, "So far away":
-    + debian/libgstreamer.symbols:
-      - Updated for the new version.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 21 Mar 2008 01:12:34 +0100
-
-gstreamer0.10 (0.10.17.4-1) experimental; urgency=low
-
-  * New upstream pre-release:
-    + debian/libgstreamer0.10-0.symbols:
-      - Update symbols for 0.10.17.4.
-    + debian/rules:
-      - Use file versionize magic to get the correct filename for the
-        symbols file.
-    + debian/patches/02_werror.patch:
-      - Don't build with -Werror.
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 18 Mar 2008 13:28:59 +0100
-
-gstreamer0.10 (0.10.17.3-1) experimental; urgency=low
-
-  * New upstream pre-release:
-    + debian/libgstreamer0.10-0.symbols:
-      - Updated.
-  * debian/patches/75_build_docs_without_python_xml.patch,
-    debian/control.in:
-    + Stop using pyxml for building the docs (Closes: #468627).
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 11 Mar 2008 04:47:48 +0100
-
-gstreamer0.10 (0.10.17.2-2) experimental; urgency=low
-
-  * debian/patches/80_ia32-hack.patch:
-    + Updated to build without warnings on other architectures than i386.
-      Fixes FTBFS as we use -Werror for pre-releases.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 05 Mar 2008 06:50:43 +0100
-
-gstreamer0.10 (0.10.17.2-1) experimental; urgency=low
-
-  * New upstream pre-release:
-    + debian/libgstreamer0.10-0.symbols:
-      - Updated for the new version.
-  * debian/libgstreamer.{post*,pre*},
-    debian/libgstreamer.dirs,
-    debian/rules:
-    + Don't use non-existing configure parameters and for 0.10 we don't need
-      a cache dir anymore, so let's not create one and remove it with
-      maintainer scripts on remove.
-  * debian/control.in:
-    + Add Homepage field.
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 04 Mar 2008 11:36:42 +0100
-
-gstreamer0.10 (0.10.17-2) unstable; urgency=low
-
-  [ Emilio Pozuelo Monfort ]
-  * debian/rules:
-    - Decide the package name and url depending on the distribution.
-  * debian/control.in:
-    - Build-Depend on lsb-release.
-    - Add a Conflicts for libgstreamer-plugins-base0.10-0 <<
-      0.10.11cvs20070110-0ubuntu5 to keep the Ubuntu delta lower.
-
-  [ Sebastian Dröge ]
-  * debian/patches/99_ltmain_as-needed.patch,
-    debian/rules:
-    + Add -Wl,-z,defs -Wl,-O1 -Wl,--as-needed to LDFLAGS to remove some
-      unnecessary dependencies on various packages.
-  * debian/libgstreamer0.10-0.symbols:
-    + Add new symbol added by using flex 2.3.34.
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 19 Feb 2008 08:09:34 +0100
-
-gstreamer0.10 (0.10.17-1) unstable; urgency=low
-
-  * New upstream bugfix-only release, "Due Negligence".
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 30 Jan 2008 16:05:58 +0100
-
-gstreamer0.10 (0.10.16-1) unstable; urgency=low
-
-  * New upstream release, "Special Dispensation", with API additions:
-    + debian/libgstreamer0.10-0.symbols:
-      - Updated symbols for 0.10.16.
-  * debian/patches/80_ia32-hack.patch:
-     + Set the plugin dir to /usr/lib32/gstreamer-0.10, when running the
-       i386 binaries on amd64. Patch taken from the Ubuntu package, originally
-       created by Matthias Klose.
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 29 Jan 2008 10:34:54 +0100
-
-gstreamer0.10 (0.10.15.4-1) experimental; urgency=low
-
-  * New upstream pre-release.
-  * debian/libgstreamer0.10-0.symbols,
-    debian/control.in:
-    + Add a symbols file for the GStreamer core libraries, generated from all
-      0.10 releases since 0.10.0. Build depend on dpkg-dev >= 1.14.13 for
-      this.
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 22 Jan 2008 13:20:05 +0100
-
-gstreamer0.10 (0.10.15.3-1) experimental; urgency=low
-
-  * New upstream pre-release.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 18 Jan 2008 05:56:07 +0100
-
-gstreamer0.10 (0.10.15.2-1) experimental; urgency=low
-
-  * New upstream pre-release:
-    + debian/patches/02_basesink-event-forwarding.patch,
-      debian/patches/03_filesink-seek-failure.patch:
-      - Dropped, merged upstream.
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 15 Jan 2008 15:14:45 +0100
-
-gstreamer0.10 (0.10.15-4) unstable; urgency=low
-
-  * debian/dh_gstscancodecs:
-    + Fix typo: extention->extension.
-  * debian/patches/01_wrapper-plugins.patch:
-    + Update to also handle the ffmpeg plugin and rebuild the registry
-      if libavcodec and friends change.
-  * debian/control.in:
-    + Update Standards-Version to 3.7.3, no additional changes needed.
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 15 Jan 2008 15:11:26 +0100
-
-gstreamer0.10 (0.10.15-3) unstable; urgency=low
-
-  * debian/rules:
-    + Don't make the build fail if the testsuite fails.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 28 Nov 2007 10:38:37 +0100
-
-gstreamer0.10 (0.10.15-2) unstable; urgency=low
-
-  * debian/patches/02_basesink-event-forwarding.patch:
-    + Only forward upstream events upstream. This prevents some useless
-      warnings. Patch taken from upstream CVS.
-  * debian/patches/03_filesink-seek-failure.patch:
-    + Only try to seek if it is really necessary in filesink. This fixes
-      filesink on a FIFO. Patch taken from upstream CVS.
-  * debian/rules:
-    + Enable test suite.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 28 Nov 2007 09:04:03 +0100
-
-gstreamer0.10 (0.10.15-1) unstable; urgency=low
-
-  * New upstream release, "October", with API additions:
-    + Fixes FTBFS if built twice in a row (Closes: #424386).
-  * debian/control.in:
-    + Only suggest the docs package instead of recommending (Closes: #436667).
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 13 Nov 2007 14:42:33 +0100
-
-gstreamer0.10 (0.10.14-2) unstable; urgency=low
-
-  * debian/control.in:
-    + Let the -dev package depend on check as some headers include check.h.
-      check is no dependency of the libs package because it's linked
-      statically.
-
- -- Sebastian Dröge <slomo@debian.org>  Sat, 08 Sep 2007 21:38:18 +0200
-
-gstreamer0.10 (0.10.14-1) unstable; urgency=low
-
-  * New upstream release 'Breathing Vacuum', with API additions.
-  * debian/control.in:
-    + Use ${binary:Version} and ${source:Version} instead of ${Source-Version}
-      to make lintian happy.
-  * debian/gstreamer-tools.install,
-    debian/dh_gstscancodecs:
-    + Add debhelper script for extracting GStreamer codec informations. This
-      will be used for semi-automatic codec installation.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 03 Aug 2007 17:30:01 +0200
-
-gstreamer0.10 (0.10.13-2) unstable; urgency=low
-
-  * debian/patches/01_wrapper-plugins.patch:
-    + Add hacks for gnomevfs, ladspa and libvisual plugin to have the registry
-      rebuild if the plugins of them change. This for example lets GStreamer
-      recognize if new gnomevfs methods are installed after the gnomevfs
-      plugin is installed. (Closes: #426694)
-      This is a temporary workaround until the upstream bug is fixed:
-      http://bugzilla.gnome.org/show_bug.cgi?id=350477
-
- -- Sebastian Dröge <slomo@debian.org>  Sun, 10 Jun 2007 12:38:27 +0200
-
-gstreamer0.10 (0.10.13-1) unstable; urgency=low
-
-  * New upstream release with API additions, "With or without you".
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 05 Jun 2007 17:01:07 +0200
-
-gstreamer0.10 (0.10.12.1+cvs20070529-1) unstable; urgency=low
-
-  * Prepare CVS snapshot
-  * debian/patches/01_yacc-reentrant.patch
-    debian/patches/02_filesrc_no_location.patch
-    debian/patches/03_system_clock_wait_jitter_block.patch:
-    + All dropped, fixed upstream.
-
- -- Sjoerd Simons <sjoerd@debian.org>  Tue, 29 May 2007 09:00:41 +0200
-
-gstreamer0.10 (0.10.12-5) unstable; urgency=low
-
-  * debian/patches/03_system_clock_wait_jitter_block.patch:
-    + Patch from upstream CVS. Make the GstSystemCLock wait_jitter
-    implementation  really block untill a timeout occurs instead of returning
-    when the first entries_changed condition occurs. Fixes problems with
-    farsight.
-  * Add myself to Uploaders.
-
- -- Sjoerd Simons <sjoerd@debian.org>  Thu, 03 May 2007 20:48:30 +0200
-
-gstreamer0.10 (0.10.12-4) unstable; urgency=low
-
-  * debian/patches/02_filesrc_no_location.patch:
-    + Patch from upstream CVS to also allow "file://" as URI. This is used
-      by some applications, like quodlibet, to check if there's an element
-      that handles the file protocol. (Closes: #421167)
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 27 Apr 2007 09:28:53 +0200
-
-gstreamer0.10 (0.10.12-3) unstable; urgency=low
-
-  * Upload to unstable
-  * Merged experimental branch:
-    + New upstream release 0.10.12, "Inevitable Demise":
-      - Fixes typo in manual (Closes: #408516)
-    + New upstream release 0.10.11, "Love never runs on time":
-      - debian/patches/10_assertion-failure-on-signal-full-when-empty.patch:
-        . Dropped, merged upstream
-      - debian/patches/70_relibtoolize.patch:
-        . Dropped, upstream used Debian's libtool
-    + Add common/gst.supp to libgstreamer-dbg.docs for valgrind suppressions.
-      (Loic Minier)
-
- -- Sebastian Dröge <slomo@debian.org>  Mon,  9 Apr 2007 23:22:34 +0200
-
-gstreamer0.10 (0.10.10-4) unstable; urgency=low
-
-  * debian/patches/01_yacc-reentrant.patch,
-    debian/control.in:
-    + Make gst_parse_launch reentrant. This fixes a crash in gaim. Also update
-      flex build-dependency to >= 2.5.31 for this.
-      Patch with some changes taken from:
-      http://bugzilla.gnome.org/show_bug.cgi?id=349180
-      (Closes: #404637, #403343, #400602)
-  * debian/control.in:
-    + Update to use my debian.org address
-
- -- Sebastian Dröge <slomo@debian.org>  Sun, 18 Mar 2007 22:50:59 +0100
-
-gstreamer0.10 (0.10.10-3) unstable; urgency=low
-
-  * Rename 10_dont-leak-buffer-on-emptied-queue to
-    10_assertion-failure-on-signal-full-when-empty, what the patch fixes is
-    really an assertion failure which happens when the queue is empty at the
-    moment where the "queue full" signal is processed.
-  * Fix typo in control, "versionned" -> "versioned"; thanks J S Bygott;
-    closes: #408931.
-
- -- Loic Minier <lool@dooz.org>  Mon, 29 Jan 2007 13:35:23 +0100
-
-gstreamer0.10 (0.10.10-2) unstable; urgency=low
-
-  * New patch, 10_dont-leak-buffer-on-emptied-queue, to avoid leaking a buffer
-    when a queue is emptied while sending out a signal.
-
- -- Loic Minier <lool@dooz.org>  Fri, 13 Oct 2006 11:04:59 +0200
-
-gstreamer0.10 (0.10.10-1) unstable; urgency=low
-
-  [ Sebastian Dröge ]
-  * New upstream release, "Pais", some additional API
-  * debian/patches/70_relibtoolize.patch:
-    + updated for new upstream version
-
-  [ Loic Minier ]
-  * Drop the versionned Recommends which will break with binNMUs.
-  * Fix duplicate dependencies.
-
- -- Loic Minier <lool@dooz.org>  Fri, 15 Sep 2006 15:05:55 +0200
-
-gstreamer0.10 (0.10.9-2) unstable; urgency=low
-
-  [ Loic Minier ]
-  * Update control.
-
-  [ Sebastian Dröge ]
-  * debian/rules,
-    debian/control.in:
-    + Add a -dbg package for libgstreamer0.10-0 and add me to Uploaders
-  * debian/compat,
-    debian/control.in:
-    + Bump debhelper compat level to 5
-
-  [ Loic Minier ]
-  * Build-depend on python-twisted-core instead of python-twisted, thanks
-    Matthias Klose. (Closes: #385428)
-  * Don't build the doc on arm and m68k.  It's painfully long, and -- at least
-    on arm -- it segfaults; this is to lower the impact of #383147.
-
- -- Loic Minier <lool@dooz.org>  Thu, 31 Aug 2006 11:48:25 +0200
-
-gstreamer0.10 (0.10.9-1) unstable; urgency=low
-
-  * Clean up Build-Depends-Indep of packages already referenced in
-    Build-Depends.
-  * New upstream release, "On the road again", no API changes.
-    - Drop 10_no-registry-file-fallback patch, merged upstream.
-    - Update 70_relibtoolize patch.
-
- -- Loic Minier <lool@dooz.org>  Fri, 14 Jul 2006 23:14:30 +0200
-
-gstreamer0.10 (0.10.8-2) unstable; urgency=low
-
-  * Update 70_relibtoolize to not ship config.guess and config.sub already
-    updated by CDBS.
-  * New patch, 10_no-registry-file-fallback.patch from upstream CVS to re-read
-    the registry when the forked child fails to write it for example because
-    the home dir isn't writable; see discussion in GNOME #344748.
-
- -- Loic Minier <lool@dooz.org>  Tue, 13 Jun 2006 18:42:06 +0200
-
-gstreamer0.10 (0.10.8-1) unstable; urgency=low
-
-  * New upstream releases with API additions, "Soepeke, ik zie ou nog altijd
-    nie".
-    - New patch, 70_relibtoolize, ditto.
-    - Drop 10_accept-empty-strings-in-registry patch, included upstream.
-
- -- Loic Minier <lool@dooz.org>  Sun, 11 Jun 2006 14:38:05 +0200
-
-gstreamer0.10 (0.10.6-2) unstable; urgency=low
-
-  * Bump up Standards-Version to 3.7.2.
-    [debian/control, debian/control.in]
-  * New patch from upstream to let the registry handle empty strings,
-    especially important because of a bug in a m4 macro which lets the name of
-    official GStreamer packages empty if you use --with-package-name as is the
-    case in Debian.
-    [debian/patches/10_accept-empty-strings-in-registry.patch]
-  * Export OIL_CPU_FLAGS=0 for commands launched during the build process as
-    it can cause build failures on buildds with specific hardware at build
-    time.
-    [debian/rules]
-
- -- Loic Minier <lool@dooz.org>  Wed, 17 May 2006 18:49:42 +0200
-
-gstreamer0.10 (0.10.6-1) unstable; urgency=low
-
-  * New upstream release, "Take the cannoli", with API additions.
-    - Bump up inter-dependencies to 0.10.6.
-      [debian/control]
-    - Bump up libglib2.0-dev build-dep to >= 2.8.
-      [debian/control, debian/control.in]
-    - Drop relibtoolizing patch as this release was libtoolized under Debian
-      or a derivative.
-      [debian/patches/70_relibtoolize.patch]
-
- -- Loic Minier <lool@dooz.org>  Sun, 14 May 2006 21:36:26 +0200
-
-gstreamer0.10 (0.10.5-1) unstable; urgency=low
-
-  * New upstream release, "Fogo".
-    - Force debian/control rebuild, a debian/changelog Makefile dep wouldn't
-      be wise.
-      [debian/control]
-
- -- Loic Minier <lool@dooz.org>  Sat, 29 Apr 2006 12:04:39 +0200
-
-gstreamer0.10 (0.10.4.2-1) unstable; urgency=low
-
-  * New upstream pre-release, with API additions.
-    - Drop patch for the check libraries in pkg-config files (merged
-      upstream).
-      [debian/patches/11_libcheck-pkgconfig-force-pic.patch]
-    - Relibtoolize.
-      [debian/patches/70_relibtoolize.patch]
-    - Drop all references to the gst-md5sum utility (removed upstream).
-      [debian/gstreamer-tools-abi.install, debian/gstreamer-tools.install,
-       debian/gstreamer-tools-abi.manpages]
-
- -- Loic Minier <lool@dooz.org>  Mon, 17 Apr 2006 23:19:50 +0200
-
-gstreamer0.10 (0.10.4-1) unstable; urgency=low
-
-  * New upstream release, "Light".
-
- -- Loic Minier <lool@dooz.org>  Sat, 11 Mar 2006 09:55:26 +0100
-
-gstreamer0.10 (0.10.3.2-1) unstable; urgency=low
-
-  * New upstream pre-release, with API additions.
-    - Backward incompatible change: removes support for quoted strings and
-      mimetypes when writing filtered caps.
-    - Drop patch for force linking against the PIC version of libcheck since
-      upstream implemented a better fix.
-      [debian/patches/10_libcheck-macro-force-pic.patch]
-    - Relibtoolize.
-      [debian/patches/70_relibtoolize.patch]
-  * Use upstream descriptions for packages descriptions.
-    [debian/control, debian/control.in]
-
- -- Loic Minier <lool@dooz.org>  Fri, 10 Mar 2006 10:43:57 +0100
-
-gstreamer0.10 (0.10.3-1) unstable; urgency=low
-
-  * New upstream release, "Like a virgin".
-
- -- Loic Minier <lool@dooz.org>  Wed,  8 Feb 2006 20:49:29 +0100
-
-gstreamer0.10 (0.10.2.3-1) unstable; urgency=low
-
-  * New upstream pre-release.
-
- -- Loic Minier <lool@dooz.org>  Wed,  8 Feb 2006 17:13:14 +0100
-
-gstreamer0.10 (0.10.2.2-1) unstable; urgency=low
-
-  * New upstream pre-release.
-    - Relibtoolize.
-      [debian/patches/70_relibtoolize.patch]
-
- -- Loic Minier <lool@dooz.org>  Wed,  8 Feb 2006 16:08:38 +0100
-
-gstreamer0.10 (0.10.2-1) unstable; urgency=low
-
-  * New upstream release, "If man is 5".
-
- -- Loic Minier <lool@dooz.org>  Mon, 16 Jan 2006 21:42:56 +0100
-
-gstreamer0.10 (0.10.1-2) unstable; urgency=low
-
-  * Drop unneeded passivetex and xmltex from the build-deps, thanks Frank
-    Küster; this is urgent since xmltex is RC-buggy. (Closes: #348214)
-    [debian/control, debian/control.in]
-
- -- Loic Minier <lool@dooz.org>  Sun, 15 Jan 2006 19:40:59 +0100
-
-gstreamer0.10 (0.10.1-1) unstable; urgency=low
-
-  * Suggest gstreamer0.10-plugins-base instead of misc. (Closes: #345118)
-    [debian/control, debian/control.in]
-  * Add Sebastien Bacher to Uploaders.
-    [debian/control, debian/control.in]
-  * Replace occurrences of GST_PREFIX in GST_PKGNAME since they hold the same
-    value and GST_PREFIX isn't used in the other source packages.
-    [debian/control.in, debian/gstreamer-doc.install,
-     debian/gstreamer-doc.links, debian/gstreamer-doc.lintian, debian/rules]
-  * New upstream release.
-  * Force linking against libcheck_pic instead of libcheck.  Warning: to use
-    this patch you need to relibtoolize afterwards or patch configure too.
-    [debian/patches/10_libcheck-macro-force-pic.patch]
-  * Advertise this in pkgconfig files.
-    [debian/patches/11_libcheck-pkgconfig-force-pic.patch]
-  * Relibtoolize.
-    [debian/patches/70_relibtoolize.patch]
-  * Move check to arch-dependent build-deps and version to >= 0.9.3-2 to get a
-    PIC version of the static lib.
-    [debian/control, debian/control.in]
-
- -- Loic Minier <lool@dooz.org>  Tue,  3 Jan 2006 22:28:37 +0100
-
-gstreamer0.10 (0.10.0-1) unstable; urgency=medium
-
-  [ Sebastien Bacher ]
-  * New upstream version.
-  * Changes for gstreamer0.10:
-    - Rename 0.8 packages to 0.10. [debian/rules]
-    - Build-Depends on check, python-twisted, python-xml [debian/control.in]
-    - Bump shlibs deps for 0.10. [debian/rules]
-    - Create a cache directory [debian/libgstreamer.dirs, debian/rules]
-    - Don't use alternatives [debian/gstreamer-tools-abi.postinst,.
-      debian/gstreamer-tools-abi.prerm]
-    - Drop references to deprecated tools [debian/gstreamer-tools-abi.install,.
-      debian/gstreamer-tools-abi.manpages,debian/gstreamer-tools-abi.postinst,.
-      debian/gstreamer-tools-abi.prerm, debian/libgstreamer.install,.
-      debian/libgstreamer.manpages, debian/libgstreamer.postinst, debian/rules]
-    - New gstreamer-tools (unversionned binaries) package
-      [debian/control.in, debian/gstreamer-tools.install, debian/rules].
-    - Remove transition code. [debian/libgstreamer.preinst]
-    - Rename documentation lists. [debian/gstreamer0.8-doc.doc-base.core-ref,
-      debian/gstreamer0.8-doc.doc-base.faq,
-      debian/gstreamer0.8-doc.doc-base.libs-ref,
-      debian/gstreamer0.8-doc.doc-base.manual,
-      debian/gstreamer0.8-doc.doc-base.pwg]
-    - Updated descriptions [debian/control.in]
-    - Updated lists of files. [debian/libgstreamer.install
-      debian/gstreamer-tools-abi.install debian/libgstreamer-dev.install]
-    - Updated options for the documentation build [debian/rules]
-    - Updated the TODO list [debian/TODO]
-  * debian/patches/64_sparc-gcc4-build-fix.patch,
-    debian/patches/doc-build.patch:
-    - fixed with the new version.
-
-  [ Loic Minier ]
-  * Merge changes from Sebastien Bacher, thanks!
-  * Update upstream URL to http://gstreamer.freedesktop.org/.
-    [debian/control, debian/control.in, debian/copyright]
-  * Minor cleanups.
-    [debian/rules]
-  * Let gstreamer-tools conflict with gstreamer0.8-tools << 0.8.11-2 which
-    shipped the gst-* command line tools as symlinks.
-    [debian/control, debian/control.in]
-  * Add gst-xmlinspect to man pages.
-    [debian/gstreamer-tools-abi.manpages]
-
- -- Loic Minier <lool@dooz.org>  Sun, 11 Dec 2005 20:57:56 +0100
-
-gstreamer0.8 (0.8.11-2) unstable; urgency=low
-
-  [ Sebastien Bacher ]
-  * Clean the alternatives, we use real files now
-    [debian/gstreamer-tools.postinst, debian/gstreamer-tools.preinst,
-    debian/gstreamer-tools.prerm]
-
-  [ Loic Minier ]
-  * Merge the work of Sebastien Bacher (above), thanks!
-  * Completely drop the now obsolete prerm and postinst scripts.
-    [debian/gstreamer-tools.postinst, debian/gstreamer-tools.preinst,
-    debian/rules]
-  * With this upload, you will loose the gst-* commands such as gst-launch,
-    only the versionned version will remain, the unversionned tools will be
-    built and shipped from the 0.10 series sources.
-
- -- Loic Minier <lool@dooz.org>  Sun, 11 Dec 2005 18:55:40 +0100
-
-gstreamer0.8 (0.8.11-1) unstable; urgency=low
-
-  * New upstream release, "No Fun".
-    - Bump libxml2-dev build-dep to 2.6.0.
-  * Update FSF address. [debian/copyright]
-  * Fix FTBFS with GCC 4 in a code path only built by sparc (but unused).
-    (Closes: #319147) [debian/patches/64_sparc-gcc4-build-fix.patch]
-  * Bump shlibs.
-
- -- Loic Minier <lool@dooz.org>  Sun,  4 Sep 2005 22:20:20 +0200
-
-gstreamer0.8 (0.8.10-2) unstable; urgency=low
-
-  * Loic Minier:
-    * Install alternatives for the gst-* binaries with a priority
-      corresponding to the GStreamer ABI. (Closes:  #265223) [debian/rules,
-      debian/gstreamer-tools.prerm, debian/gstreamer-tools.postinst]
-    * Call gst-register and gst-compprep with GST_REGISTRY in their
-      environment to override the default behavior of writing to
-      /root/.gstreamer-0.8, waiting for an upstream fix. (Closes: #301190)
-      [debian/libgstreamer.postinst, debian/TODO.Debian]
-    * Remove /var/lib/gstreamer if empty.
-      [debian/libgstreamer.postrm]
-    * Remove left over /root/.gstreamer-0.8 tree if it hasn't been modified.
-      [debian/libgstreamer.preinst, debian/rules]
-    * Add a versioned dependency with >= current-upstream-version to all
-      current shlibs inter-dependencies to ensure consistency of symbols to
-      avoid things such as #315556.
-      [debian/control, debian/control.in, debian/rules]
-    * Set Maintainer to group. [debian/control, debian/control.in]
-    * Bump Standards-Version to 3.6.2, no change needed.
-      [debian/control, debian/control.in]
-    * Add a TODO list for the Debian package. [debian/TODO.Debian]
-
- -- Loic Minier <lool@dooz.org>  Mon, 27 Jun 2005 16:21:55 +0200
-
-gstreamer0.8 (0.8.10-1) unstable; urgency=low
-
-  * Loic Minier:
-    * New upstream release "No Fun". (Closes: #312355)
-      - Don't drop buffers on interrupt, fixes reported problems on MP3
-        playback. (Closes: #303139)
-      - Fix a typo in the gst-launch manual page where "--silent" was used
-        instead of "--verbose". (Closes: #292267)
-      - Bump shlibs to current version since new elements were added.
-        [debian/rules]
-      - Drop CPUID instruction detection patch, upstream used a SIGILL handler
-        instead. [debian/patches/cpuid.patch]
-    * Add myself as uploader.
-
- -- Loic Minier <lool@dooz.org>  Tue, 14 Jun 2005 21:49:55 +0200
-
-gstreamer0.8 (0.8.9-2) unstable; urgency=low
-
-  * debian/patches/cpuid.patch:
-    * Patch from upstream to check for cpuid support (Closes: #289362)
-  * debian/watch:
-    * Watch for gstreamer not gst-plugins
-
- -- David I. Lehn <dlehn@debian.org>  Wed, 16 Mar 2005 01:17:29 -0500
-
-gstreamer0.8 (0.8.9-1) unstable; urgency=low
-
-  * New upstream
-  * debian/rules:
-    * Bump shlibs to current version
-  * debian/patches/doc-build.patch:
-    * Update and refer to bug #286160
-  * debian/watch:
-    * Add
-  * debian/gstreamer0.8-doc.doc-base.*
-    * Register docs with doc-base (Closes: #293871)
-
- -- David I. Lehn <dlehn@debian.org>  Wed,  9 Feb 2005 10:24:16 -0500
-
-gstreamer0.8 (0.8.8-1) unstable; urgency=low
-
-  * New upstream
-    * Fixes Ogg stream bug (Closes: #273086)
-    * Fixes mp3 infinite loop (Closes: #277650)
-  * debian/rules:
-    * Bump shlibs to current version
-  * debian/rules:
-    * Distribute NEWS (Closes: #275717)
-  * Should fix Rhythmbox image and cpu problems
-    (Closes: #277146, #278661, #278663, #278656, #281426, #284507, #288102)
-
- -- David I. Lehn <dlehn@debian.org>  Fri,  7 Jan 2005 01:44:26 -0500
-
-gstreamer0.8 (0.8.7-1) unstable; urgency=low
-
-  * New upstream
-  * debian/rules:
-    * Bump shlibs to current version
-
- -- David I. Lehn <dlehn@debian.org>  Wed,  6 Oct 2004 14:25:15 -0400
-
-gstreamer0.8 (0.8.6-1) unstable; urgency=low
-
-  * New upstream
-  * debian/rules:
-    * Bump shlibs to current version
-    * Use debian/control:: vs debian/control: to work with recent CDBS changes
-    * Use CDBS simple-patchsys
-  * docs/pwg/advanced-types.xml:
-    * Remove patch
-  * debian/patches/doc-build.patch:
-    * Add goofy doc patch
-
- -- David I. Lehn <dlehn@debian.org>  Tue,  5 Oct 2004 13:15:06 -0400
-
-gstreamer0.8 (0.8.5-1) unstable; urgency=low
-
-  * New upstream
-  * debian/rules:
-    * Bump shlibs to current version
-
- -- David I. Lehn <dlehn@debian.org>  Tue, 17 Aug 2004 23:06:54 -0400
-
-gstreamer0.8 (0.8.4-1) unstable; urgency=low
-
-  * New upstream
-  * debian/rules:
-    * Bump shlibs version
-  * gst/queue.h:
-    * Fix GstQueue binary compatibility (patch from upstream CVS)
-  * libs/gst/control/Makefile.{am,in}:
-    * Link libgstcontrol to libgstreamer (patch from upstream CVS)
-      (Closes: #262019)
-
- -- David I. Lehn <dlehn@debian.org>  Thu, 29 Jul 2004 15:07:20 -0400
-
-gstreamer0.8 (0.8.3-3) unstable; urgency=low
-
-  * debian/rules:
-    * Typo, s/DEB_MAKESHLIBS_ARGS_/DEB_DH_MAKESHLIBS_ARGS_/, broke versioned
-      shlibs
-
- -- David I. Lehn <dlehn@debian.org>  Wed, 30 Jun 2004 17:11:13 -0400
-
-gstreamer0.8 (0.8.3-2) unstable; urgency=medium
-
-  * debian/libgstreamer.install, debian/libgstreamer-dev.install:
-    * Include dataprotocol library and development files
-  * debian/rules:
-    * Bump shlibs dep to 0.8.3-2 due to dataprotocol
-
- -- David I. Lehn <dlehn@debian.org>  Wed, 23 Jun 2004 17:49:23 -0400
-
-gstreamer0.8 (0.8.3-1) unstable; urgency=low
-
-  * New upstream
-
- -- David I. Lehn <dlehn@debian.org>  Sat, 12 Jun 2004 00:05:23 -0400
-
-gstreamer0.8 (0.8.2-1) unstable; urgency=low
-
-  * New upstream
-
- -- David I. Lehn <dlehn@debian.org>  Sat, 12 Jun 2004 00:01:21 -0400
-
-gstreamer0.8 (0.8.1-2) unstable; urgency=low
-
-  * debain/rules:
-    * Convert to use CDBS
-      * Fixes rpath and .la libdir problems from previous builds
-      * Always builds the docs even on -arch builds, sorry
-  * debian/compat:
-    * Bump to 4
-  * debian/control.in:
-    * Update Standards-Version to 3.6.1 due to CDBS use
-    * Add CDBS and newer debhelper dependencies
-  * debian/*:
-    * Adjust install paths to work with CDBS
-
- -- David I. Lehn <dlehn@debian.org>  Sun, 18 Apr 2004 22:21:30 -0400
-
-gstreamer0.8 (0.8.1-1) unstable; urgency=low
-
-  * New upstream
-  * New schedulers:
-  * debian/libgstreamer.install:
-    * Add libgstentrygthreadscheduler.so
-    * Add libgstentryomegascheduler.so
-  * docs/gst/Makefile.{in,am}:
-    * Patch from CVS to fix docs build
-
- -- David I. Lehn <dlehn@debian.org>  Sat, 17 Apr 2004 19:47:18 -0400
-
-gstreamer0.8 (0.8.0-2) unstable; urgency=low
-
-  * Bump to -2 to ease upgrades for early -1 testers
-  * gstreamer-tools.links:
-    * Link gst-xmlinspect manpage to gst-inspect
-
- -- David I. Lehn <dlehn@debian.org>  Fri, 16 Apr 2004 00:52:46 -0400
-
-gstreamer0.8 (0.8.0-1) unstable; urgency=low
-
-  * New upstream (Closes: #239114)
-    * Branch 0.7.x to 0.8.x
-  * debian/control.in:
-    * Version all packages as 0.8 series
-  * debian/rules:
-    * Update to 0.8
-    * Build 0.8 series package control files
-    * Remove older hacks fixed upstream
-  * debian/*:
-    * Reorg many control files for 0.8 versioning
-    * s/--gst-mask=0/--gst-debug-level=0/
-    * Remove "VERSION" from input package file names
-  * debian/libgstreamer[-dev].install:
-    * Plugins removed upstream: gsttypes, gststaticautoplug*,
-      gstautoplugcache, gstautoplugger, gstputbits, gststaticautoplug,
-      gststaticautoplugrender, gsttypes
-    * Add locale files
-  * debian/gstreamer-tools.install:
-    * Add gst-xmlinspect-*
-  * Upstream installs versioned manpages (Closes: #199444)
-
- -- David I. Lehn <dlehn@debian.org>  Wed, 14 Apr 2004 16:08:50 -0400
-
-gstreamer0.7 (0.7.6-1) unstable; urgency=low
-
-  * New upstream
-  * debian/control.in:
-    * Build-Depends-Indep: add netpbm so ps and pdf docs build
-
- -- David I. Lehn <dlehn@debian.org>  Fri, 12 Mar 2004 18:30:54 -0500
-
-gstreamer0.7 (0.7.5-1) unstable; urgency=low
-
-  * New upstream
-
- -- David I. Lehn <dlehn@debian.org>  Thu, 11 Mar 2004 23:30:32 -0500
-
-gstreamer0.7 (0.7.4-1) unstable; urgency=low
-
-  * New upstream
-
- -- David I. Lehn <dlehn@debian.org>  Thu, 11 Mar 2004 23:11:58 -0500
-
-gstreamer0.7 (0.7.3-1) unstable; urgency=low
-
-  * New upstream
-
- -- David I. Lehn <dlehn@debian.org>  Thu, 11 Mar 2004 05:54:52 -0500
-
-gstreamer0.7 (0.7.1-1) unstable; urgency=low
-
-  * New upstream
-    * Branch 0.6.x to 0.7.x
-  * debian/rules:
-    * Update to 0.7
-
- -- David I. Lehn <dlehn@debian.org>  Thu, 11 Mar 2004 04:58:40 -0500
-
-gstreamer (0.6.4-1) unstable; urgency=low
-
-  * New upstream (Closes: #217880)
-  * Add xmlto, xmltex, and passivetex dependencies for doc creation
-  * debian/rules: adjust for new doc locations
-  * docs/{manual,pwg,faq}/Makefile.in: temporary hack to disable ps/pdf
-    generation
-
- -- David I. Lehn <dlehn@debian.org>  Fri, 31 Oct 2003 14:08:46 -0500
-
-gstreamer (0.6.3-1) unstable; urgency=low
-
-  * New upstream
-  * configure, configure.ac:
-    * disable -Werror
-  * gst/gstplugin.c: CVS patch to fix type punning
-
- -- David I. Lehn <dlehn@debian.org>  Sat, 30 Aug 2003 23:20:43 -0400
-
-gstreamer (0.6.2-2) unstable; urgency=low
-
-  * m68k patch by Matthias Urlichs <smurf@smurf.noris.de> (forwarded from Rick
-    Younie <rick@def.debian.net>) (Closes: #172269)
-
- -- David I. Lehn <dlehn@debian.org>  Tue, 12 Aug 2003 13:24:12 -0400
-
-gstreamer (0.6.2-1) unstable; urgency=low
-
-  * New upstream
-  * debian/gstreamer-tools.install/manpages: add gst-typefind
-  * docs/gst/: change www.oasis-open.org dtd to local dtd
-  * docs/libs/: use some code from cdbs to change dtd in gtk-doc tools output
-    to local dtd
-
- -- David I. Lehn <dlehn@debian.org>  Wed, 11 Jun 2003 10:36:17 -0400
-
-gstreamer (0.6.1-2) unstable; urgency=low
-
-  * (unreleased)
-  * Merge packages:
-    * Simplify for users, developers, and maintainers.
-    * Current number of packages is confusing.
-    * Users/developers need to install all the packages anyway due to tight
-      (circular) dependencies.
-    * The libraries and plugins are all versioned - no need (currently) for a
-      "-common" type package.
-    * Progress towards capability for parallel GStreamer installs (more work
-      needed).
-    * Decision long ago to make very modular has turned out to be complex and
-      is not utilized by any current applications.
-  * Merge changes:
-    * Add -core, -core-libs, -runtime files to libgstreamer0.6-0
-    * Add -core-libs-dev files to libgstreaer0.6-dev
-    * Version gst-{register,compprep} (and manpages) as
-      gst-{register,compprep}-0.6
-    * Many other supporting debian/ adjustments
-  * Remove DISPLAY unset hacks from postinst/postrm scripts and fix non-X
-    installs with 0.6.2 CVS xvideosink patch in gst-plugins.
-    (Closes: #192693, #195342, #169100, #195113, #194975)
-  * docs/devhelp/Makefile.*: stop regeneration of devhelp files during install
-  * gst/elements/gstmd5sink.c: make md5_* functions static to avoid symbol
-    conflicts with libdvdnav 0.1.9
-  * Fix gstreamer-doc Recommends: to use versioned -dev package
-
- -- David I. Lehn <dlehn@debian.org>  Thu,  5 Jun 2003 19:11:39 -0400
-
-gstreamer (0.6.1-1) unstable; urgency=low
-
-  * New upstream
-  * Change maintainer address to @debian.org
-  * Added gst-element-check.m4 to -dev package (Closes: Bug#187456)
-  * debian/control.in:
-    * gstreamer-tools: gst-feedback depends on pkg-config (Closes: Bug#180076)
-    * libgstreamer0.6-dev depends on libxml2-dev (Closes: Bug#190103)
-    * gstreamer-runtime depends on gstreamer-core.  Sigh.  Didn't want to do
-      this but looks like no other option. (Closes: Bug#181502, Bug#181745,
-      Bug#185817)
-  * gst/gstatomic_impl.h: disable mips asm in favor of generic implementation
-    (sparc disabled upstream) (Closes: Bug#186440)
-  * Upstream now linking libraries properly (Closes: Bug#187360)
-  * Patch from 0.6.1+ to add back _get_props_entry_type
-  * Unset DISPLAY before running gst-register/gst-compprep
-
- -- David I. Lehn <dlehn@debian.org>  Sat,  3 May 2003 16:52:53 -0400
-
-gstreamer (0.6.0-1) unstable; urgency=low
-
-  * New upstream
-  * Upstream manpage updates (Closes: Bug#179190)
-
- -- David I. Lehn <dlehn@vt.edu>  Sat,  1 Feb 2003 21:32:17 -0500
-
-gstreamer (0.5.2.3-1) unstable; urgency=low
-
-  * New upstream
-
- -- David I. Lehn <dlehn@vt.edu>  Thu, 30 Jan 2003 23:26:10 -0500
-
-gstreamer (0.5.2.2-1) unstable; urgency=low
-
-  * New upstream
-    * pre-release for API frozen 0.6.x series
-  * Slight pacakge refactoring so a possible future parallel dev series is
-    slightly less painful
-  * Update libgstreamer-dev to libgstreamer0.6-dev
-  * Update libgstreamer0.5.2 to libgstreamer0.6-0
-  * debian/libgstreamer0.6-dev.install:
-    * explicitly mention gstreamer-[0-9]*.pc
-  * debian/gstreamer-core-libs-dev.install:
-    * add gstreamer-control-*.pc
-
- -- David I. Lehn <dlehn@vt.edu>  Wed, 29 Jan 2003 13:42:01 -0500
-
-gstreamer (0.5.2-1) unstable; urgency=low
-
-  * New upstream
-  * Update libgstreamer0.5.1 to libgstreamer0.5.2
-  * Upstream fixes Python requirement when not building docs
-    (Closes: Bug#178114)
-
- -- David I. Lehn <dlehn@vt.edu>  Thu, 23 Jan 2003 20:15:24 -0500
-
-gstreamer (0.5.1-1) unstable; urgency=low
-
-  * New upstream (Closes: Bug#176474)
-  * Update libgstreamer0.5.0 to libgstreamer0.5.1
-  * Tighten gstreamer-core-libs shlibs (Closes: Bug#174363)
-
- -- David I. Lehn <dlehn@vt.edu>  Thu, 16 Jan 2003 18:46:41 -0500
-
-gstreamer (0.5.0-1) unstable; urgency=low
-
-  * New upstream
-  * Make core Architecture: any:  It's almost true, or might be now, or will
-    be soon and autobuilders are ignoring that field anyway.
-  * Generated files moved from /etc/gstreamer to /var/lib/gstreamer/0.5/
-  * Update libgstreamer0.4.2 to libgstreamer0.5.0
-  * Hack gst/autoplug/gstautoplugger.c to not use the non-existant
-    "caps_changed" signal
-
- -- David I. Lehn <dlehn@vt.edu>  Thu, 19 Dec 2002 20:43:26 -0500
-
-gstreamer (0.4.2-2) unstable; urgency=low
-
-  * Update gtk-doc.m4 with CVS patch to handle multidigit version check
-  * Add S/390 support patch (Closes: Bug#171473)
-  * Update config.{guess,sub}
-
- -- David I. Lehn <dlehn@vt.edu>  Tue,  3 Dec 2002 22:22:22 -0500
-
-gstreamer (0.4.2-1) unstable; urgency=low
-
-  * New upstream (Closes: Bug#167479)
-  * Update libgstreamer0.4.1 to libgstreamer0.4.2
-  * libgstreamer0.4.2 conflicts with 0.4.0, 0.4.1
-    * Upstream needs more work to properly support parallel lib installs
-  * Tighten dependencies
-    * Upstream ABI/API changes require this for any hope of smooth upgrades at
-      the moment
-  * Move gstreamer-runtime to Section: utils from libs
-  * Move gstreamer-tools to Section: utils from x11
-  * Doc fixes: (Closes: Bug#165279)
-    * Call xsltproc with --nonet
-    * Refer xsl:import urls to local docbook-xsl package xsl files
-    * Refer www.oasis-open.org dtds to local docbook-xml package dtd files
-    * Add docbook-xml and docbook-xsl to Build-Depends-Indep
-
- -- David I. Lehn <dlehn@vt.edu>  Wed,  6 Nov 2002 20:32:46 -0500
-
-gstreamer (0.4.1-3) unstable; urgency=low
-
-  * Fix formatting of Architecture: list to fix alpha and sparc builds
-
- -- David I. Lehn <dlehn@vt.edu>  Tue, 15 Oct 2002 22:08:54 -0400
-
-gstreamer (0.4.1-2) unstable; urgency=low
-
-  * Update debian/rules to not fail on binary-arch only builds (configure was
-    unconditionally run with --enable-docs-build which caused it to fail when
-    Build-Depends-Indep packages were not installed)
-    (Closes: Bug#164589, Bug#164698)
-  * Fix version check in common/m4/as-python.m4 to use sys.version_info
-
- -- David I. Lehn <dlehn@vt.edu>  Mon, 14 Oct 2002 20:00:29 -0400
-
-gstreamer (0.4.1-1) unstable; urgency=low
-
-  * New upstream
-  * Update libgstreamer0.4.0 to libgstreamer0.4.1
-  * gstreamer-tools.files/manpages: add gst-md5sum
-  * Use xsltproc 1.0.21 to fix doc image problems
-  * Add patch from CVS to fix GST_TYPE_CAPS/PROPS macro typos
-  * Build libgstcontrol as a lib not a plugin module
-  * Update config.{guess,sub}
-
- -- David I. Lehn <dlehn@vt.edu>  Mon,  7 Oct 2002 20:36:28 -0400
-
-gstreamer (0.4.0.2-cvs20020919-1) unstable; urgency=low
-
-  * CVS snapshot, release branch
-  * gstreamer-core.files: change to libgst*scheduler, since the
-    scheduler names have changed.
-  * gstreamer-core-libs.files: libgstcontrol.so moved
-  * add debian/control.in, and create debian/control rule in debian/rules
-    to change the version number automatically
-
- -- David Schleef <ds@schleef.org>  Thu, 19 Sep 2002 15:07:36 -0700
-
-gstreamer (0.4.0-2) unstable; urgency=low
-
-  * Remove libtool hack
-  * Dependency change from libc6-dev to libc6-dev | libc-dev
-
- -- David I. Lehn <dlehn@vt.edu>  Fri, 23 Aug 2002 12:26:10 -0400
-
-gstreamer (0.4.0-1) unstable; urgency=low
-
-  * New upstream
-  * Update library package: libgstreamer0.3.4 -> libgstreamer0.4.0
-  * Add automake Python support to find python binary to run devhelp doc
-    helper script.  This touches -every- Makefile.in and since the package
-    diff will already be large just use automake 1.6 instead of 1.5 as used
-    upstream.  Sorry.
-  * Update config.{guess,sub}
-  * Temporarily comment out figures from manual so it builds
-  * Apply CVS patch for s/&percnt;/%/ in XML docs
-  * Added devhelp support
-  * Added gst-feedback to gstreamer-tools
-  * Break stuff: blindly reanme gstreamer-lib-core{-dev} to
-    gstreamer-core-libs{-dev}.  Hard to chose naming as these are half-plugins
-    and half-linkable libs.  Picking a scheme that also works with
-    gstreamer-plugins-* packages.  Still looking for a better solution...
-
- -- David I. Lehn <dlehn@vt.edu>  Tue, 16 Jul 2002 02:20:40 -0400
-
-gstreamer (0.3.4-1) unstable; urgency=low
-
-  * New upstream
-  * libgstreamer0.3.3 -> libgstreamer0.3.4
-  * Conflict and Replace libgstreamer0.3.3 so upgrades work
-    This shouldn't be required because plugins know what version they were
-    compiled with.  Apparently this doesn't yet work properly.
-  * Add bison and flex to Build-Depends
-  * Add libgstfastscheduler.so to -core
-
- -- David I. Lehn <dlehn@vt.edu>  Mon, 15 Apr 2002 01:13:00 -0400
-
-gstreamer (0.3.3-3) unstable; urgency=low
-
-  * Add libgstreamer-dev dependencies on libpopt-dev and libglib2.0-dev
-  * CVS fix for GstElement NEW_PAD and PAD_REMOVED g_signal_new parameters
-
- -- David I. Lehn <dlehn@vt.edu>  Fri, 29 Mar 2002 03:04:22 -0500
-
-gstreamer (0.3.3-2) unstable; urgency=low
-
-  * Depend on and rebuld for glib 2.0
-  * Remove libgtk from Build-Depends
-  * Move gs from Build-Depends to Build-Depends-Indep
-  * Added lintian overrides for base.css zero length files
-
- -- David I. Lehn <dlehn@vt.edu>  Fri, 22 Mar 2002 19:29:24 -0500
-
-gstreamer (0.3.3-1) unstable; urgency=low
-
-  * New upstream
-  * Renamed libgstX to libgstreamerX.Y.Z
-    will move to better versioning once upstream starts interface versioning
-  * Renamed libgst-dev to libgstreamer-dev
-  * Patch to build plugins as only .so
-  * Added libstandardscheduler.so to -core
-  * Guessing that mips support handles mipsel too
-  * From David Schleef <ds@schleef.org>:
-    * Add popt, gs to Build-Depends:
-    * #include <errno.h> compile fix
-
- -- David I. Lehn <dlehn@vt.edu>  Thu, 21 Mar 2002 01:42:18 -0500
-
-gstreamer (0.3.2-2) unstable; urgency=low
-
-  * Rebuild for glib/gtk 1.3.15
-
- -- David I. Lehn <dlehn@vt.edu>  Sun, 24 Feb 2002 23:48:33 -0500
-
-gstreamer (0.3.2-1) unstable; urgency=low
-
-  * The "I should have started using cvs-buildpacakge long ago" release
-  * New upstream release
-  * Once again stripped CVS dirs from upstream tarball
-  * Add spider autoplugger
-  * Added gst-xmllaunch and man page to -tools
-  * Despite my complaints, upstream is using new lib versioning
-    until they decide API is "stable" enough to provide support.
-    At that point proper versioning will happen.
-    This release lib change:
-       libgst.so.2.0.0 -> libgst-0.3.2.so.0.0.0
-    This release lib package change:
-       libgst2 -> libgst3
-    Hopefully this is mostly transparent.
-
-    Due to a conflict with GNU Smalltalk the next upstream release
-    will be renaming some "gst" to "gstreamer".  This will change
-    the lib to libgstreamer*.  Some header locations will change too
-    so prepare for broken code.
-
-    Plan for next upstream release is to rename packages:
-       libgst3 -> libgstreamer0
-       libgst-dev -> libgstreamer-dev
-  * Plugins now unversioned upstream:
-    * Just .so, no more .so.x.y.z
-    * Drop .la and .a
-    * Fixup a few
-    * Wait and see if anyone even notices...
-  * Add back some docs that escaped via the diff
-  * Fixup some more doc cruft in the diff
-
- -- David I. Lehn <dlehn@vt.edu>  Thu, 14 Feb 2002 02:20:48 -0500
-
-gstreamer (0.3.1-4) unstable; urgency=low
-
-  * (Unreleased)
-  * find . -type d -name CVS -exec rm -rf {} \;
-  * Hack upstream tarball to exclude above CVS/ dirs
-  * Rebuild for conversion to cvs-buildpackage management
-
- -- David I. Lehn <dlehn@vt.edu>  Wed, 13 Feb 2002 18:18:34 -0500
-
-gstreamer (0.3.1-3) unstable; urgency=low
-
-  * Rebuild for glib/gtk 1.3.13
-
- -- David I. Lehn <dlehn@vt.edu>  Wed,  6 Feb 2002 02:17:23 -0500
-
-gstreamer (0.3.1-2) unstable; urgency=low
-
-  * Upstream fix for proper libxml version in pkg-config
-  * Undo some of the auto docs/*/tmpl breakage
-
- -- David I. Lehn <dlehn@vt.edu>  Wed, 23 Jan 2002 01:28:12 -0500
-
-gstreamer (0.3.1-1) unstable; urgency=low
-
-  * New upstream release
-  * Upstream broken into multiple packages
-  * Core plugins left in -core
-  * Core lib plugins moved to -core
-  * Other plugins now built from gst-plugins source pacakge
-  * libgst1 -> libgst2
-  * Tool prefix renamed upstream: s/gstreamer/gst/
-  * Moved gstreamer-guilaunch to gst-editor source package
-  * Removed gstreamer-config and .m4 in favor of pkg-config use
-  * Build for glib2
-  * Change doc build system a bit
-  * Added -lib-core and -lib-core-dev packages for library plugins
-
- -- David I. Lehn <dlehn@vt.edu>  Thu, 10 Jan 2002 23:09:34 -0500
-
-gstreamer (0.3.0-3) unstable; urgency=low
-
-  * Remove upstream ChangeLog from packages: 128k changelog.gz per
-    plugin package for 40 packages is too much
-
- -- David I. Lehn <dlehn@vt.edu>  Tue, 25 Dec 2001 23:36:28 -0500
-
-gstreamer (0.3.0-2) unstable; urgency=low
-
-  * Fix bug that slipped into 0.3.0: s/aasink/xvideosink/ in
-    gstplay/gstplay.c
-
- -- David I. Lehn <dlehn@vt.edu>  Tue, 25 Dec 2001 17:56:29 -0500
-
-gstreamer (0.3.0-1) unstable; urgency=low
-
-  * New upstream release
-  * Attempt to update various Build-Depends versions
-  * Added plugin packages: -a52dec, -dvd, -mikmod, -sid
-  * Renamed -elements to -core
-  * Added to -core: gstbasicscheduler
-  * Moved from -common to -core: gsttypes, autoplug related
-  * Renamed -common to -misc
-  * Added to -misc: speed, qcam, bytesteram, control, silence, sinesrc,
-    mpegstream, playondemand, resample
-  * Added gstreamer-guilaunch to gstreamer-tools package
-  * Added dependencies on unofficial LAME packages
-  * Use PIC libs for Xv
-  * Disable broken building of PDF/PS docs
-  * Renamed -all-plugins to -all
-  * Disable docs -- too hard to build
-
- -- David I. Lehn <dlehn@vt.edu>  Fri, 21 Dec 2001 12:00:02 -0500
-
-gstreamer (0.2.1-4) unstable; urgency=low
-
-  * Fix some problems reported from lintian 1.20.14:
-    * copyright-lists-upstream-authors-like-dh_make
-    * debian-changelog-file-contains-user-emacs-settings
-  * Patch from CVS to link libgst into plugins
-    Plugins now properly depend on libgst package
-  * Use RedHat Gtk+-1.3 hack to fix relink issues with ltmain.sh
-  * Patch from CVS for xvideosink segfault when no DISPLAY set
-  * Remove builddir references from gstreamer-config.in
-  * Move libgstelements.la from libgst-dev to gstreamer-elements
-
- -- David I. Lehn <dlehn@vt.edu>  Tue, 28 Aug 2001 20:05:28 -0400
-
-gstreamer (0.2.1-3) unstable; urgency=low
-
-  * Update build dependencies to FLAC 1.0
-  * Enable debug features
-  * Fixup broken doc build -scan voodoo with link into .libs/ dir
-
- -- David I. Lehn <dlehn@vt.edu>  Sun,  5 Aug 2001 23:04:28 -0400
-
-gstreamer (0.2.1-2) unstable; urgency=low
-
-  * Fix lib deps: run debhelper tools in the right order
-  * Added arts dir to Makefile.am SUBDIRS so it builds again
-  * Changed libmpeg2dec to libgstmpeg2dec to avoid naming issues
-    when using -lmpeg2dec
-  * Updated system_encode/ with CVS segfaulter bug fix
-
- -- David I. Lehn <dlehn@vt.edu>  Thu, 19 Jul 2001 15:47:24 -0400
-
-gstreamer (0.2.1-1) unstable; urgency=low
-
-  * New upstream 0.2.1: "Return of the Sedi Master"
-  * New plugin packages: -festival, -flac, -avifile, -x
-  * New plugins in -common: chart, deinterlace, udp
-  * Added some post-0.2.1 fixes for FLAC, build system, ALSA
-
- -- David I. Lehn <dlehn@vt.edu>  Thu, 28 Jun 2001 20:15:15 -0400
-
-gstreamer (0.2.0-6) unstable; urgency=low
-
-  * Move -compprep to -runtime and call it same places as -register
-  * Do -register and -compprep in postrm instead of prerm
-  * Make -arts plugin actually build all the source (sent upstream)
-  * Purge of -runtime removes /etc/gstreamer
-
- -- David I. Lehn <dlehn@vt.edu>  Tue, 19 Jun 2001 13:09:32 -0400
-
-gstreamer (0.2.0-5) unstable; urgency=low
-
-  * Added element package dependencies to libgstmediaplay0
-
- -- David I. Lehn <dlehn@vt.edu>  Mon, 18 Jun 2001 11:18:53 -0400
-
-gstreamer (0.2.0-4) unstable; urgency=low
-
-  * Add --gst-mask=0 to -runtime.postinst
-
- -- David I. Lehn <dlehn@vt.edu>  Fri, 15 Jun 2001 11:47:24 -0400
-
-gstreamer (0.2.0-3) unstable; urgency=low
-
-  * Fix the plugin control file symlink creation
-  * Add audiofile to Build-Depends
-
- -- David I. Lehn <dlehn@vt.edu>  Fri, 15 Jun 2001 05:22:28 -0400
-
-gstreamer (0.2.0-2) unstable; urgency=low
-
-  * Fixed ALSA checks to not include -lasound in -every- link
-  * Update LAME plugin to use latest CVS API
-  * Removed OSS src/sink from -common.files (was in -oss too)
-  * Swapped -arts.files and -artsd.files contents
-
- -- David I. Lehn <dlehn@vt.edu>  Fri, 15 Jun 2001 04:02:21 -0400
-
-gstreamer (0.2.0-1) unstable; urgency=low
-
-  * Added gstreamer-compprep manpage
-  * Upgrade to 0.2.0
-
- -- David I. Lehn <dlehn@vt.edu>  Thu,  7 Jun 2001 12:53:59 -0400
-
-gstreamer (0.2.0-0.3) unstable; urgency=low
-
-  * GStreamer 0.2.0-pre3
-
- -- David I. Lehn <dlehn@vt.edu>  Wed,  6 Jun 2001 15:09:59 -0400
-
-gstreamer (0.2.0-0.2) unstable; urgency=low
-
-  * GStreamer 0.2.0-pre2 + CVS 20010604
-  * Added -artsd (vs -arts), -audiofile, -gnomevfs, -gsm, -jpeg,
-    -oss, and -sdl plugin packages
-  * Added osshelper lib to oss package
-  * Added more AVI related plugins and autoplug libs to -common
-  * Added pkgconfig file to libgst-dev
-  * Added gstreamer-all-plugins pseudo package that depends on
-    all other plugin pacakges
-
- -- David I. Lehn <dlehn@vt.edu>  Mon,  4 Jun 2001 17:33:20 -0400
-
-gstreamer (0.2.0-0.1) unstable; urgency=low
-
-  * GStreamer 0.2.0-pre1
-
- -- David I. Lehn <dlehn@vt.edu>  Thu, 31 May 2001 17:16:23 -0400
-
-gstreamer (0.1.1.20010504-1) unstable; urgency=low
-
-  * Latest CVS code
-
- -- David I. Lehn <dlehn@vt.edu>  Fri,  4 May 2001 21:48:45 -0400
-
-gstreamer (0.1.1.20010430-2) unstable; urgency=low
-
-  * Added -colorspace package for Hermes dependent conversion
-  * Added -arts package for aRts sink
-
- -- David I. Lehn <dlehn@vt.edu>  Tue,  1 May 2001 19:46:08 -0400
-
-gstreamer (0.1.1.20010430-1) unstable; urgency=low
-
-  * Latest CVS code
-  * Added -aa package for aasink output
-  * Added -mad package for mad mp3 decoder
-
- -- David I. Lehn <dlehn@vt.edu>  Mon, 30 Apr 2001 18:25:52 -0400
-
-gstreamer (0.1.1.20010320-1) unstable; urgency=low
-
-  * Latest CVS code
-  * enable main docs
-  * disable broken plugin docs with new option
-
- -- David I. Lehn <dlehn@vt.edu>  Tue, 20 Mar 2001 18:15:19 -0500
-
-gstreamer (0.1.1.20010315-1) unstable; urgency=low
-
-  * Latest CVS code
-  * Added man pages
-  * Split mpeg2dec to seperate plugin
-  * libgst Architectures updated to cothread supported archs
-
- -- David I. Lehn <dlehn@vt.edu>  Thu, 15 Mar 2001 20:17:19 -0500
-
-gstreamer (0.1.1-1) unstable; urgency=low
-
-  * New upstream release
-  * disable docs build, broken at the momemnt
-
- -- David I. Lehn <dlehn@vt.edu>  Sun, 25 Feb 2001 17:58:25 -0500
-
-gstreamer (0.1.0-2) unstable; urgency=low
-
-  * debian/rules: call configure instead of autogen.sh
-
- -- David I. Lehn <dlehn@vt.edu>  Sat, 24 Feb 2001 18:31:36 -0500
-
-gstreamer (0.1.0-1) unstable; urgency=low
-
-  * Initial Release.
-
- -- David I. Lehn <dlehn@vt.edu>  Mon, 15 Jan 2001 18:25:18 -0500
diff --git a/debian/compat b/debian/compat
index ec63514..f599e28 100644
--- a/debian/compat
+++ b/debian/compat
@@ -1 +1 @@
-9
+10
diff --git a/debian/control b/debian/control
index c2e1ede..adb80a3 100644
--- a/debian/control
+++ b/debian/control
@@ -1,23 +1,17 @@
-Source: gstreamer1.0
+Source: mtk-gstreamer
 Section: libs
 Priority: optional
-Maintainer: Maintainers of GStreamer packages <gstreamer1.0@packages.debian.org>
-Uploaders: Loïc Minier <lool@debian.org>,
-           Sebastien Bacher <seb128@debian.org>,
-           Sebastian Dröge <slomo@debian.org>,
-           Sjoerd Simons <sjoerd@debian.org>
+Maintainer: Coral <coral-support@google.com>
 Build-Depends: debhelper (>= 10),
                cdbs (>= 0.4.93~),
                gnome-pkg-tools (>= 0.7),
-               autotools-dev,
                automake (>= 1.14),
                autoconf (>= 2.69),
                libtool (>= 2.2.6),
-               dh-autoreconf,
                autopoint (>= 0.17),
                zlib1g-dev (>= 1:1.1.4),
                libglib2.0-dev (>= 2.40),
-               libgmp-dev | libgmp3-dev,
+               libgmp3-dev,
                libgsl-dev | libgsl0-dev,
                pkg-config (>= 0.11.0),
                bison (>= 1:2.4),
@@ -26,9 +20,7 @@
                perl-doc:all,
                libcap-dev [linux-any]
 Standards-Version: 3.9.8
-Vcs-Git: https://salsa.debian.org/gstreamer-team/gstreamer1.0.git
-Vcs-Browser: https://salsa.debian.org/gstreamer-team/gstreamer1.0/
-Homepage: https://gstreamer.freedesktop.org
+Homepage: http://gstreamer.freedesktop.org
 
 Package: libgstreamer1.0-0
 Architecture: any
@@ -40,8 +32,7 @@
          libcap2-bin [linux-any]
 Suggests: gstreamer1.0-tools,
 Breaks: gstreamer1.0-plugins-base (<< 1.8.0),
-        gstreamer1.0-plugins-bad (<< 1.11.1),
-        libgstreamer-plugins-bad1.0-0 (<< 1.13.1)
+        gstreamer1.0-plugins-bad (<< 1.11.1)
 Description: Core GStreamer libraries and elements
  GStreamer is a streaming media framework, based on graphs of filters
  which operate on media data.  Applications using this library can do
@@ -74,18 +65,13 @@
 
 Package: libgstreamer1.0-dev
 Architecture: any
-Multi-Arch: same
 Section: libdevel
 Depends: libgstreamer1.0-0 (= ${binary:Version}),
          libc6-dev | libc-dev,
          pkg-config,
          libglib2.0-dev,
          ${shlibs:Depends},
-         ${misc:Depends}
-Conflicts: libgstreamer-plugins-bad1.0-dev (<< 1.13.1)
-Replaces: libgstreamer-plugins-bad1.0-dev (<< 1.13.1)
-Recommends: debhelper
-Suggests: gstreamer1.0-doc
+         ${misc:Depends},
 Description: GStreamer core development files
  GStreamer is a streaming media framework, based on graphs of filters
  which operate on media data.  Applications using this library can do
@@ -97,33 +83,12 @@
  This package contains development files for the core library and
  elements.
 
-Package: gstreamer1.0-doc
-Architecture: all
-Multi-Arch: foreign
-Section: doc
-Depends: ${misc:Depends},
-         libglib2.0-doc
-Recommends: libgstreamer1.0-dev (= ${source:Version})
-Description: GStreamer core documentation and manuals
- GStreamer is a streaming media framework, based on graphs of filters
- which operate on media data.  Applications using this library can do
- anything from real-time sound processing to playing videos, and just
- about anything else media-related.  Its plugin-based architecture means
- that new data types or processing capabilities can be added simply by
- installing new plug-ins.
- .
- This package contains documentation for core libraries and elements as
- well as:
-  * the GStreamer Manual
-  * the GStreamer Plugin Writers Guide
-  * Various API docs
-
 Package: gstreamer1.0-tools
 Architecture: any
 Section: utils
 Depends: ${shlibs:Depends},
          ${misc:Depends},
-         libgstreamer1.0-0 (>= 1.14.3)
+         libgstreamer1.0-0 (>= 1.12.0)
 Suggests: gstreamer1.0-plugins-base
 Description: Tools for use with GStreamer
  GStreamer is a streaming media framework, based on graphs of filters
diff --git a/debian/control.in b/debian/control.in
deleted file mode 100644
index 51f7257..0000000
--- a/debian/control.in
+++ /dev/null
@@ -1,165 +0,0 @@
-Source: @GST_PKGNAME@
-Section: libs
-Priority: optional
-Maintainer: Maintainers of GStreamer packages <gstreamer1.0@packages.debian.org>
-Uploaders: Loïc Minier <lool@debian.org>,
-           Sebastien Bacher <seb128@debian.org>,
-           Sebastian Dröge <slomo@debian.org>,
-           Sjoerd Simons <sjoerd@debian.org>
-Build-Depends: debhelper (>= 9),
-               cdbs (>= 0.4.93~),
-               gnome-pkg-tools (>= 0.7),
-               autotools-dev,
-               automake (>= 1.14),
-               autoconf (>= 2.69),
-               libtool (>= 2.2.6),
-               dh-autoreconf,
-               autopoint (>= 0.17),
-               zlib1g-dev (>= 1:1.1.4),
-               libglib2.0-dev (>= 2.40),
-               libgmp-dev | libgmp3-dev,
-               libgsl-dev | libgsl0-dev,
-               pkg-config (>= 0.11.0),
-               bison (>= 1:2.4),
-               flex (>= 2.5.34),
-               dpkg-dev (>= 1.15.1),
-               perl-doc,
-               libgirepository1.0-dev (>= 0.9.12-4~),
-               gobject-introspection (>= 0.9.12-4~),
-               gir1.2-glib-2.0,
-               gir1.2-freedesktop,
-               libcap-dev [linux-any]
-Build-Depends-Indep: gtk-doc-tools (>= 1.12),
-                     libglib2.0-doc
-Standards-Version: 3.9.3
-Vcs-Git: https://salsa.debian.org/gstreamer-team/gstreamer1.0.git
-Vcs-Browser: https://salsa.debian.org/gstreamer-team/gstreamer1.0/
-Homepage: https://gstreamer.freedesktop.org
-
-Package: @GST_LIB@
-Architecture: any
-Multi-Arch: same
-Section: libs
-Pre-Depends: ${misc:Pre-Depends}
-Depends: ${shlibs:Depends},
-         ${misc:Depends},
-         libcap2-bin [linux-any]
-Suggests: @GST_PKGNAME@-tools,
-Breaks: @GST_PKGNAME@-plugins-base (<< 1.8.0),
-        @GST_PKGNAME@-plugins-bad (<< 1.11.1),
-        libgstreamer-plugins-bad1.0-0 (<< 1.13.1)
-Description: Core GStreamer libraries and elements
- GStreamer is a streaming media framework, based on graphs of filters
- which operate on media data.  Applications using this library can do
- anything from real-time sound processing to playing videos, and just
- about anything else media-related.  Its plugin-based architecture means
- that new data types or processing capabilities can be added simply by
- installing new plug-ins.
- .
- This package contains the core library and elements.
-
-Package: @GST_LIB@-dbg
-Architecture: any
-Multi-Arch: same
-Section: debug
-Priority: extra
-Depends: @GST_LIB@ (= ${binary:Version}),
-         ${misc:Depends}
-Description: Core GStreamer libraries and elements
- GStreamer is a streaming media framework, based on graphs of filters
- which operate on media data.  Applications using this library can do
- anything from real-time sound processing to playing videos, and just
- about anything else media-related.  Its plugin-based architecture means
- that new data types or processing capabilities can be added simply by
- installing new plug-ins.
- .
- This package contains unstripped shared libraries. It is provided primarily
- to provide a backtrace with names in a debugger, this makes it somewhat
- easier to interpret core dumps. The libraries are installed in
- /usr/lib/debug and are automatically used by gdb.
-
-Package: @GST_LIB_DEV@
-Architecture: any
-Multi-Arch: same
-Section: libdevel
-Depends: @GST_LIB@ (= ${binary:Version}),
-         libc6-dev | libc-dev,
-         pkg-config,
-         libglib2.0-dev,
-         ${shlibs:Depends},
-         ${misc:Depends},
-         gir1.2-gstreamer-@GST_ABI@ (= ${binary:Version})
-Conflicts: libgstreamer-plugins-bad1.0-dev (<< 1.13.1)
-Replaces: libgstreamer-plugins-bad1.0-dev (<< 1.13.1)
-Recommends: debhelper
-Suggests: @GST_PKGNAME@-doc
-Description: GStreamer core development files
- GStreamer is a streaming media framework, based on graphs of filters
- which operate on media data.  Applications using this library can do
- anything from real-time sound processing to playing videos, and just
- about anything else media-related.  Its plugin-based architecture means
- that new data types or processing capabilities can be added simply by
- installing new plug-ins.
- .
- This package contains development files for the core library and
- elements.
-
-Package: @GST_PKGNAME@-doc
-Architecture: all
-Multi-Arch: foreign
-Section: doc
-Depends: ${misc:Depends},
-         libglib2.0-doc
-Recommends: @GST_LIB_DEV@ (= ${source:Version})
-Description: GStreamer core documentation and manuals
- GStreamer is a streaming media framework, based on graphs of filters
- which operate on media data.  Applications using this library can do
- anything from real-time sound processing to playing videos, and just
- about anything else media-related.  Its plugin-based architecture means
- that new data types or processing capabilities can be added simply by
- installing new plug-ins.
- .
- This package contains documentation for core libraries and elements as
- well as:
-  * the GStreamer Manual
-  * the GStreamer Plugin Writers Guide
-  * Various API docs
-
-Package: @GST_PKGNAME@-tools
-Architecture: any
-Section: utils
-Depends: ${shlibs:Depends},
-         ${misc:Depends},
-         @GST_LIB@ (>= @GST_VERSION@)
-Suggests: @GST_PKGNAME@-plugins-base
-Description: Tools for use with GStreamer
- GStreamer is a streaming media framework, based on graphs of filters
- which operate on media data.  Applications using this library can do
- anything from real-time sound processing to playing videos, and just
- about anything else media-related.  Its plugin-based architecture means
- that new data types or processing capabilities can be added simply by
- installing new plug-ins.
- .
- This package contains versioned command-line tools for GStreamer.
-
-Package: gir1.2-gstreamer-@GST_ABI@
-Section: introspection
-Architecture: any
-Multi-Arch: same
-Depends: ${gir:Depends},
-         ${shlibs:Depends},
-         ${misc:Depends}
-Description: GObject introspection data for the GStreamer library
- This package contains introspection data for the GStreamer streaming media
- framework.
- .
- GStreamer is a streaming media framework, based on graphs of filters
- which operate on media data.  Applications using this library can do
- anything from real-time sound processing to playing videos, and just
- about anything else media-related.  Its plugin-based architecture means
- that new data types or processing capabilities can be added simply by
- installing new plug-ins.
- .
- It can be used by packages using the GIRepository format to generate
- dynamic bindings.
-
diff --git a/debian/dh_gstscancodecs b/debian/dh_gstscancodecs
index 4fd96e4..b25a6e6 100644
--- a/debian/dh_gstscancodecs
+++ b/debian/dh_gstscancodecs
@@ -71,8 +71,7 @@
 
 my $deb_host_multiarch = `dpkg-architecture -qDEB_HOST_MULTIARCH`;
 chop $deb_host_multiarch;
-my $libdir = '/usr/lib/'.$deb_host_multiarch;
-$::pluginlibdirprefix = $libdir.'/gstreamer-';
+$::pluginlibdirprefix = '/usr/lib/'.$deb_host_multiarch.'/gstreamer-';
 $::pluginlibdirlegacy = '/usr/lib/gstreamer-';
 
 foreach my $package (@{$dh{DOPACKAGES}}) {
@@ -93,7 +92,7 @@
     my (undef, $tmpfile) = File::Temp::tempfile("/tmp/".basename($0).".XXXX", UNLINK => 1);
     my (undef, $registryfile) = File::Temp::tempfile("/tmp/".basename($0).".XXXX", UNLINK => 1);
 
-    my $command="GST_REGISTRY=$registryfile GST_PLUGIN_SYSTEM_PATH= GST_PLUGIN_PATH=$sodir $libdir/gstreamer$gstversion/gstreamer-$gstversion/gst-codec-info-$gstversion " . join(' ', (glob "$sodir/*.so")) . " > $tmpfile";
+    my $command="GST_REGISTRY=$registryfile GST_PLUGIN_SYSTEM_PATH= GST_PLUGIN_PATH=$sodir gst-codec-info-$gstversion " . join(' ', (glob "$sodir/*.so")) . " > $tmpfile";
 
     system($command);
     if ($?) {
diff --git a/debian/gir1.2-gstreamer.install b/debian/gir1.2-gstreamer.install
deleted file mode 100644
index 9803e33..0000000
--- a/debian/gir1.2-gstreamer.install
+++ /dev/null
@@ -1 +0,0 @@
-debian/tmp/usr/lib/*/girepository-* usr/lib
diff --git a/debian/gstreamer-doc.install b/debian/gstreamer-doc.install
deleted file mode 100644
index 7879231..0000000
--- a/debian/gstreamer-doc.install
+++ /dev/null
@@ -1 +0,0 @@
-debian/tmp/usr/share/doc/@GST_PKGNAME@-doc
diff --git a/debian/gstreamer-doc.links b/debian/gstreamer-doc.links
deleted file mode 100644
index 32ab372..0000000
--- a/debian/gstreamer-doc.links
+++ /dev/null
@@ -1,6 +0,0 @@
-/usr/share/doc/@GST_PKGNAME@-doc/gstreamer-@GST_ABI@ /usr/share/devhelp/books/gstreamer-@GST_ABI@
-/usr/share/doc/@GST_PKGNAME@-doc/gstreamer-libs-@GST_ABI@ /usr/share/devhelp/books/gstreamer-libs-@GST_ABI@
-/usr/share/doc/@GST_PKGNAME@-doc/gstreamer-plugins-@GST_ABI@ /usr/share/devhelp/books/gstreamer-plugins-@GST_ABI@
-/usr/share/doc/@GST_PKGNAME@-doc/gstreamer-@GST_ABI@ /usr/share/gtk-doc/html/gstreamer-@GST_ABI@
-/usr/share/doc/@GST_PKGNAME@-doc/gstreamer-libs-@GST_ABI@ /usr/share/gtk-doc/html/gstreamer-libs-@GST_ABI@
-/usr/share/doc/@GST_PKGNAME@-doc/gstreamer-plugins-@GST_ABI@ /usr/share/gtk-doc/html/gstreamer-plugins-@GST_ABI@
diff --git a/debian/gstreamer-doc.lintian b/debian/gstreamer-doc.lintian
deleted file mode 100644
index 7ade982..0000000
--- a/debian/gstreamer-doc.lintian
+++ /dev/null
@@ -1 +0,0 @@
-@GST_PKGNAME@-doc: zero-byte-file-in-doc-directory usr/share/doc/@GST_PKGNAME@-doc/pwg/html/base.css
diff --git a/debian/gstreamer1.0-doc.doc-base.core-ref b/debian/gstreamer1.0-doc.doc-base.core-ref
deleted file mode 100644
index e21f828..0000000
--- a/debian/gstreamer1.0-doc.doc-base.core-ref
+++ /dev/null
@@ -1,8 +0,0 @@
-Document: gstreamer-1.0-core-ref
-Title: GStreamer 1.0 Core Reference Manual
-Abstract: API documentation for the core of GStreamer 1.0.
-Section: Programming/C
-
-Format: HTML
-Files: /usr/share/doc/gstreamer1.0-doc/gstreamer-1.0/*.html
-Index: /usr/share/doc/gstreamer1.0-doc/gstreamer-1.0/index.html
diff --git a/debian/gstreamer1.0-doc.doc-base.libs-ref b/debian/gstreamer1.0-doc.doc-base.libs-ref
deleted file mode 100644
index 6e854da..0000000
--- a/debian/gstreamer1.0-doc.doc-base.libs-ref
+++ /dev/null
@@ -1,8 +0,0 @@
-Document: gstreamer-1.0-libs-ref
-Title: GStreamer 1.0 Library Reference Manual
-Abstract: API documentation for libraries from GStreamer 1.0.
-Section: Programming/C
-
-Format: HTML
-Files: /usr/share/doc/gstreamer1.0-doc/gstreamer-libs-1.0/*.html
-Index: /usr/share/doc/gstreamer1.0-doc/gstreamer-libs-1.0/index.html
diff --git a/debian/gstreamer1.0-doc.lintian-overrides b/debian/gstreamer1.0-doc.lintian-overrides
deleted file mode 100644
index da7ac57..0000000
--- a/debian/gstreamer1.0-doc.lintian-overrides
+++ /dev/null
@@ -1 +0,0 @@
-gstreamer1.0-doc: doc-base-file-references-missing-file *
diff --git a/debian/gstreamer1.0-tools.lintian-overrides b/debian/gstreamer1.0-tools.lintian-overrides
index 82a1081..e320de1 100644
--- a/debian/gstreamer1.0-tools.lintian-overrides
+++ b/debian/gstreamer1.0-tools.lintian-overrides
@@ -1 +1 @@
-gstreamer1.0-tools: manpage-has-errors-from-man *
+gstreamer1.0-tools: manpage-has-errors-from-man usr/share/man/*
diff --git a/debian/libgstreamer-dev.install b/debian/libgstreamer-dev.install
index c2cad97..d6d0b15 100644
--- a/debian/libgstreamer-dev.install
+++ b/debian/libgstreamer-dev.install
@@ -1,7 +1,7 @@
 debian/tmp/usr/include
 debian/tmp/usr/lib/*/*.so
-debian/tmp/usr/lib/*/gstreamer@GST_ABI@/gstreamer-@GST_ABI@/gst-codec-info-@GST_ABI@
 debian/tmp/usr/lib/*/pkgconfig
 debian/tmp/usr/share/aclocal
+debian/tmp/usr/bin/gst-codec-info-@GST_ABI@
 debian/dh_gstscancodecs usr/bin
 debian/tmp/usr/share/man/man1/dh_gstscancodecs.1
diff --git a/debian/libgstreamer.symbols b/debian/libgstreamer.symbols
index ba0916e..88456dc 100644
--- a/debian/libgstreamer.symbols
+++ b/debian/libgstreamer.symbols
@@ -1,5 +1,4 @@
 libgstbase-1.0.so.0 libgstreamer1.0-0 #MINVER#
-* Build-Depends-Package: libgstreamer1.0-dev
  gst_adapter_available@Base 1.0.0
  gst_adapter_available_fast@Base 1.0.0
  gst_adapter_clear@Base 1.0.0
@@ -31,19 +30,19 @@
  gst_adapter_take_buffer_list@Base 1.6.0
  gst_adapter_take_list@Base 1.0.0
  gst_adapter_unmap@Base 1.0.0
- gst_aggregator_finish_buffer@Base 1.14.0
- gst_aggregator_get_allocator@Base 1.14.0
- gst_aggregator_get_buffer_pool@Base 1.14.0
- gst_aggregator_get_latency@Base 1.14.0
- gst_aggregator_get_type@Base 1.14.0
- gst_aggregator_pad_drop_buffer@Base 1.14.0
- gst_aggregator_pad_get_type@Base 1.14.0
- gst_aggregator_pad_has_buffer@Base 1.14.1
- gst_aggregator_pad_is_eos@Base 1.14.0
- gst_aggregator_pad_peek_buffer@Base 1.14.0
- gst_aggregator_pad_pop_buffer@Base 1.14.0
- gst_aggregator_set_latency@Base 1.14.0
- gst_aggregator_set_src_caps@Base 1.14.0
+ gst_aggregator_finish_buffer@Base 1.14.4
+ gst_aggregator_get_allocator@Base 1.14.4
+ gst_aggregator_get_buffer_pool@Base 1.14.4
+ gst_aggregator_get_latency@Base 1.14.4
+ gst_aggregator_get_type@Base 1.14.4
+ gst_aggregator_pad_drop_buffer@Base 1.14.4
+ gst_aggregator_pad_get_type@Base 1.14.4
+ gst_aggregator_pad_has_buffer@Base 1.14.4
+ gst_aggregator_pad_is_eos@Base 1.14.4
+ gst_aggregator_pad_peek_buffer@Base 1.14.4
+ gst_aggregator_pad_pop_buffer@Base 1.14.4
+ gst_aggregator_set_latency@Base 1.14.4
+ gst_aggregator_set_src_caps@Base 1.14.4
  gst_base_parse_add_index_entry@Base 1.0.0
  gst_base_parse_convert_default@Base 1.0.0
  gst_base_parse_drain@Base 1.12.0
@@ -116,7 +115,7 @@
  gst_base_src_set_live@Base 1.0.0
  gst_base_src_start_complete@Base 1.0.0
  gst_base_src_start_wait@Base 1.0.0
- gst_base_src_submit_buffer_list@Base 1.14.0
+ gst_base_src_submit_buffer_list@Base 1.14.4
  gst_base_src_wait_playing@Base 1.0.0
  gst_base_transform_get_allocator@Base 1.0.0
  gst_base_transform_get_buffer_pool@Base 1.0.0
@@ -318,12 +317,12 @@
  gst_queue_array_new_for_struct@Base 1.6.0
  gst_queue_array_peek_head@Base 1.2.0
  gst_queue_array_peek_head_struct@Base 1.6.0
- gst_queue_array_peek_tail@Base 1.14.0
- gst_queue_array_peek_tail_struct@Base 1.14.0
+ gst_queue_array_peek_tail@Base 1.14.4
+ gst_queue_array_peek_tail_struct@Base 1.14.4
  gst_queue_array_pop_head@Base 1.2.0
  gst_queue_array_pop_head_struct@Base 1.6.0
- gst_queue_array_pop_tail@Base 1.14.0
- gst_queue_array_pop_tail_struct@Base 1.14.0
+ gst_queue_array_pop_tail@Base 1.14.4
+ gst_queue_array_pop_tail_struct@Base 1.14.4
  gst_queue_array_push_tail@Base 1.2.0
  gst_queue_array_push_tail_struct@Base 1.6.0
  gst_type_find_helper@Base 1.0.0
@@ -331,9 +330,8 @@
  gst_type_find_helper_for_data@Base 1.0.0
  gst_type_find_helper_for_extension@Base 1.0.0
  gst_type_find_helper_get_range@Base 1.0.0
- gst_type_find_helper_get_range_full@Base 1.14.3
+ gst_type_find_helper_get_range_full@Base 1.14.4
 libgstcheck-1.0.so.0 libgstreamer1.0-0 #MINVER#
-* Build-Depends-Package: libgstreamer1.0-dev
  _ck_assert_failed@Base 1.6.0
  _fail_unless@Base 1.0.0
  _gst_check_expecting_log@Base 1.0.0
@@ -390,7 +388,7 @@
  gst_consistency_checker_new@Base 1.0.0
  gst_consistency_checker_reset@Base 1.0.0
  gst_harness_add_element_full@Base 1.8.0
- gst_harness_add_element_sink_pad@Base 1.14.0
+ gst_harness_add_element_sink_pad@Base 1.14.4
  gst_harness_add_element_src_pad@Base 1.6.0
  gst_harness_add_parse@Base 1.8.0
  gst_harness_add_probe@Base 1.6.0
@@ -458,9 +456,9 @@
  gst_harness_stress_requestpad_start_full@Base 1.6.0
  gst_harness_stress_statechange_start_full@Base 1.6.0
  gst_harness_stress_thread_stop@Base 1.6.0
- gst_harness_take_all_data@Base 1.14.0
- gst_harness_take_all_data_as_buffer@Base 1.14.0
- gst_harness_take_all_data_as_bytes@Base 1.14.0
+ gst_harness_take_all_data@Base 1.14.4
+ gst_harness_take_all_data_as_buffer@Base 1.14.4
+ gst_harness_take_all_data_as_bytes@Base 1.14.4
  gst_harness_teardown@Base 1.6.0
  gst_harness_try_pull@Base 1.6.0
  gst_harness_try_pull_event@Base 1.6.0
@@ -528,7 +526,6 @@
  tr_rtype@Base 1.0.0
  tr_tcname@Base 1.0.0
 libgstcontroller-1.0.so.0 libgstreamer1.0-0 #MINVER#
-* Build-Depends-Package: libgstreamer1.0-dev
  gst_argb_control_binding_get_type@Base 1.0.0
  gst_argb_control_binding_new@Base 1.0.0
  gst_control_point_copy@Base 1.12.1
@@ -557,7 +554,6 @@
  gst_trigger_control_source_get_type@Base 1.0.0
  gst_trigger_control_source_new@Base 1.0.0
 libgstnet-1.0.so.0 libgstreamer1.0-0 #MINVER#
-* Build-Depends-Package: libgstreamer1.0-dev
  gst_buffer_add_net_address_meta@Base 1.0.0
  gst_buffer_add_net_control_message_meta@Base 1.6.0
  gst_buffer_get_net_address_meta@Base 1.8.0
@@ -587,7 +583,6 @@
  gst_ptp_statistics_callback_add@Base 1.6.0
  gst_ptp_statistics_callback_remove@Base 1.6.0
 libgstreamer-1.0.so.0 libgstreamer1.0-0 #MINVER#
-* Build-Depends-Package: libgstreamer1.0-dev
  GST_CAT_BUFFER@Base 1.0.0
  GST_CAT_BUFFER_LIST@Base 1.0.0
  GST_CAT_BUS@Base 1.0.0
@@ -642,7 +637,7 @@
  _gst_double_range_type@Base 1.4.0
  _gst_element_error_printf@Base 1.0.0
  _gst_event_type@Base 1.0.0
- _gst_executable_path@Base 1.14.0
+ _gst_executable_path@Base 1.14.4
  _gst_flagset_type@Base 1.6.0
  _gst_fraction_range_type@Base 1.4.0
  _gst_fraction_type@Base 1.4.0
@@ -705,7 +700,7 @@
  gst_buffer_add_meta@Base 1.0.0
  gst_buffer_add_parent_buffer_meta@Base 1.6.0
  gst_buffer_add_protection_meta@Base 1.6.0
- gst_buffer_add_reference_timestamp_meta@Base 1.14.0
+ gst_buffer_add_reference_timestamp_meta@Base 1.14.4
  gst_buffer_append@Base 1.0.0
  gst_buffer_append_memory@Base 1.0.0
  gst_buffer_append_region@Base 1.0.0
@@ -725,8 +720,8 @@
  gst_buffer_get_memory@Base 1.0.0
  gst_buffer_get_memory_range@Base 1.0.0
  gst_buffer_get_meta@Base 1.0.0
- gst_buffer_get_n_meta@Base 1.14.0
- gst_buffer_get_reference_timestamp_meta@Base 1.14.0
+ gst_buffer_get_n_meta@Base 1.14.4
+ gst_buffer_get_reference_timestamp_meta@Base 1.14.4
  gst_buffer_get_size@Base 1.0.0
  gst_buffer_get_sizes@Base 1.0.0
  gst_buffer_get_sizes_range@Base 1.0.0
@@ -737,12 +732,12 @@
  gst_buffer_is_memory_range_writable@Base 1.4.0
  gst_buffer_iterate_meta@Base 1.0.0
  gst_buffer_iterate_meta_filtered@Base 1.12.0
- gst_buffer_list_calculate_size@Base 1.14.0
+ gst_buffer_list_calculate_size@Base 1.14.4
  gst_buffer_list_copy_deep@Base 1.6.0
  gst_buffer_list_foreach@Base 1.0.0
  gst_buffer_list_get@Base 1.0.0
  gst_buffer_list_get_type@Base 1.0.0
- gst_buffer_list_get_writable@Base 1.14.0
+ gst_buffer_list_get_writable@Base 1.14.4
  gst_buffer_list_insert@Base 1.0.0
  gst_buffer_list_length@Base 1.0.0
  gst_buffer_list_new@Base 1.0.0
@@ -803,7 +798,8 @@
  gst_bus_disable_sync_message_emission@Base 1.0.0
  gst_bus_enable_sync_message_emission@Base 1.0.0
  gst_bus_flags_get_type@Base 1.0.0
- gst_bus_get_pollfd@Base 1.14.0
+ gst_bus_get_pollfd@Base 1.14.4
+ gst_buffer_list_get_writable@Base 1.14.4
  gst_bus_get_type@Base 1.0.0
  gst_bus_have_pending@Base 1.0.0
  gst_bus_new@Base 1.0.0
@@ -989,7 +985,7 @@
  gst_date_time_to_iso8601_string@Base 1.0.0
  gst_date_time_unref@Base 1.0.0
  gst_debug_add_log_function@Base 1.0.0
- gst_debug_add_ring_buffer_logger@Base 1.14.0
+ gst_debug_add_ring_buffer_logger@Base 1.14.4
  gst_debug_bin_to_dot_data@Base 1.6.0
  gst_debug_bin_to_dot_file@Base 1.0.0
  gst_debug_bin_to_dot_file_with_ts@Base 1.0.0
@@ -1020,8 +1016,8 @@
  gst_debug_print_stack_trace@Base 1.0.0
  gst_debug_remove_log_function@Base 1.0.0
  gst_debug_remove_log_function_by_data@Base 1.0.0
- gst_debug_remove_ring_buffer_logger@Base 1.14.0
- gst_debug_ring_buffer_logger_get_logs@Base 1.14.0
+ gst_debug_remove_ring_buffer_logger@Base 1.14.4
+ gst_debug_ring_buffer_logger_get_logs@Base 1.14.4
  gst_debug_set_active@Base 1.0.0
  gst_debug_set_color_mode@Base 1.2.0
  gst_debug_set_color_mode_from_string@Base 1.2.0
@@ -1072,7 +1068,7 @@
  gst_device_provider_get_devices@Base 1.4.0
  gst_device_provider_get_factory@Base 1.4.0
  gst_device_provider_get_hidden_providers@Base 1.6.0
- gst_device_provider_get_metadata@Base 1.14.0
+ gst_device_provider_get_metadata@Base 1.14.4
  gst_device_provider_get_type@Base 1.4.0
  gst_device_provider_hide_provider@Base 1.6.0
  gst_device_provider_register@Base 1.4.0
@@ -1094,7 +1090,7 @@
  gst_element_class_add_pad_template@Base 1.0.0
  gst_element_class_add_static_metadata@Base 1.0.0
  gst_element_class_add_static_pad_template@Base 1.8.0
- gst_element_class_add_static_pad_template_with_gtype@Base 1.14.0
+ gst_element_class_add_static_pad_template_with_gtype@Base 1.14.4
  gst_element_class_get_metadata@Base 1.0.0
  gst_element_class_get_pad_template@Base 1.0.0
  gst_element_class_get_pad_template_list@Base 1.0.0
@@ -1122,9 +1118,9 @@
  gst_element_factory_list_is_type@Base 1.0.0
  gst_element_factory_make@Base 1.0.0
  gst_element_flags_get_type@Base 1.0.0
- gst_element_foreach_pad@Base 1.14.0
- gst_element_foreach_sink_pad@Base 1.14.0
- gst_element_foreach_src_pad@Base 1.14.0
+ gst_element_foreach_pad@Base 1.14.4
+ gst_element_foreach_sink_pad@Base 1.14.4
+ gst_element_foreach_src_pad@Base 1.14.4
  gst_element_get_base_time@Base 1.0.0
  gst_element_get_bus@Base 1.0.0
  gst_element_get_clock@Base 1.0.0
@@ -1134,9 +1130,9 @@
  gst_element_get_context_unlocked@Base 1.8.0
  gst_element_get_contexts@Base 1.8.0
  gst_element_get_factory@Base 1.0.0
- gst_element_get_metadata@Base 1.14.0
- gst_element_get_pad_template@Base 1.14.0
- gst_element_get_pad_template_list@Base 1.14.0
+ gst_element_get_metadata@Base 1.14.4
+ gst_element_get_pad_template@Base 1.14.4
+ gst_element_get_pad_template_list@Base 1.14.4
  gst_element_get_request_pad@Base 1.0.0
  gst_element_get_start_time@Base 1.0.0
  gst_element_get_state@Base 1.0.0
@@ -1265,7 +1261,7 @@
  gst_fraction_get_type@Base 1.0.0
  gst_fraction_range_get_type@Base 1.0.0
  gst_g_thread_get_type@Base 1.2.0
- gst_get_main_executable_path@Base 1.14.0
+ gst_get_main_executable_path@Base 1.14.4
  gst_ghost_pad_activate_mode_default@Base 1.0.0
  gst_ghost_pad_construct@Base 1.0.0
  gst_ghost_pad_get_target@Base 1.0.0
@@ -1416,7 +1412,7 @@
  gst_message_type_get_name@Base 1.0.0
  gst_message_type_get_type@Base 1.0.0
  gst_message_type_to_quark@Base 1.0.0
- gst_message_writable_structure@Base 1.14.0
+ gst_message_writable_structure@Base 1.14.4
  gst_meta_api_type_get_tags@Base 1.2.0
  gst_meta_api_type_has_tag@Base 1.0.0
  gst_meta_api_type_register@Base 1.0.0
@@ -1572,8 +1568,8 @@
  gst_pad_template_get_caps@Base 1.0.0
  gst_pad_template_get_type@Base 1.0.0
  gst_pad_template_new@Base 1.0.0
- gst_pad_template_new_from_static_pad_template_with_gtype@Base 1.14.0
- gst_pad_template_new_with_gtype@Base 1.14.0
+ gst_pad_template_new_from_static_pad_template_with_gtype@Base 1.14.4
+ gst_pad_template_new_with_gtype@Base 1.14.4
  gst_pad_template_pad_created@Base 1.0.0
  gst_pad_unlink@Base 1.0.0
  gst_pad_use_fixed_caps@Base 1.0.0
@@ -1685,16 +1681,16 @@
  gst_printerrln@Base 1.12.0
  gst_println@Base 1.12.0
  gst_progress_type_get_type@Base 1.0.0
- gst_promise_expire@Base 1.14.0
- gst_promise_get_reply@Base 1.14.0
- gst_promise_get_type@Base 1.14.0
- gst_promise_interrupt@Base 1.14.0
- gst_promise_new@Base 1.14.0
- gst_promise_new_with_change_func@Base 1.14.0
- gst_promise_reply@Base 1.14.0
- gst_promise_result_get_type@Base 1.14.0
- gst_promise_wait@Base 1.14.0
- gst_protection_filter_systems_by_available_decryptors@Base 1.14.0
+ gst_promise_expire@Base 1.14.4
+ gst_promise_get_reply@Base 1.14.4
+ gst_promise_get_type@Base 1.14.4
+ gst_promise_interrupt@Base 1.14.4
+ gst_promise_new@Base 1.14.4
+ gst_promise_new_with_change_func@Base 1.14.4
+ gst_promise_reply@Base 1.14.4
+ gst_promise_result_get_type@Base 1.14.4
+ gst_promise_wait@Base 1.14.4
+ gst_protection_filter_systems_by_available_decryptors@Base 1.14.4
  gst_protection_meta_api_get_type@Base 1.6.0
  gst_protection_meta_get_info@Base 1.6.0
  gst_protection_select_system@Base 1.6.0
@@ -1793,8 +1789,8 @@
  gst_query_type_to_quark@Base 1.0.0
  gst_query_writable_structure@Base 1.0.0
  gst_rank_get_type@Base 1.0.0
- gst_reference_timestamp_meta_api_get_type@Base 1.14.0
- gst_reference_timestamp_meta_get_info@Base 1.14.0
+ gst_reference_timestamp_meta_api_get_type@Base 1.14.4
+ gst_reference_timestamp_meta_get_info@Base 1.14.4
  gst_registry_add_feature@Base 1.0.0
  gst_registry_add_plugin@Base 1.0.0
  gst_registry_check_feature_version@Base 1.0.0
@@ -1853,7 +1849,7 @@
  gst_segtrap_is_enabled@Base 1.0.0
  gst_segtrap_set_enabled@Base 1.0.0
  gst_stack_trace_flags_get_type@Base 1.12.0
- gst_state_change_get_name@Base 1.14.0
+ gst_state_change_get_name@Base 1.14.4
  gst_state_change_get_type@Base 1.0.0
  gst_state_change_return_get_type@Base 1.0.0
  gst_state_get_type@Base 1.0.0
@@ -2092,7 +2088,7 @@
  gst_toc_setter_reset@Base 1.0.0
  gst_toc_setter_set_toc@Base 1.0.0
  gst_tracer_factory_get_list@Base 1.8.0
- gst_tracer_factory_get_tracer_type@Base 1.14.0
+ gst_tracer_factory_get_tracer_type@Base 1.14.4
  gst_tracer_factory_get_type@Base 1.8.0
  gst_tracer_get_type@Base 1.8.0
  gst_tracer_record_get_type@Base 1.8.0
@@ -2174,7 +2170,7 @@
  gst_uri_type_get_type@Base 1.0.0
  gst_util_array_binary_search@Base 1.0.0
  gst_util_double_to_fraction@Base 1.0.0
- gst_util_dump_buffer@Base 1.14.0
+ gst_util_dump_buffer@Base 1.14.4
  gst_util_dump_mem@Base 1.0.0
  gst_util_fraction_add@Base 1.0.0
  gst_util_fraction_compare@Base 1.0.0
diff --git a/debian/libgstreamer1.0-0.lintian-overrides b/debian/libgstreamer1.0-0.lintian-overrides
index a893d3d..ad5b2cc 100644
--- a/debian/libgstreamer1.0-0.lintian-overrides
+++ b/debian/libgstreamer1.0-0.lintian-overrides
@@ -1 +1 @@
-libgstreamer1.0-0: package-name-doesnt-match-sonames *
+libgstreamer1.0-0: package-name-doesnt-match-sonames libgstbase-1.0-0 libgstcheck-1.0-0 libgstcontroller-1.0-0 libgstnet-1.0-0 libgstreamer-1.0-0
diff --git a/debian/libgstreamer1.0-dev.lintian-overrides b/debian/libgstreamer1.0-dev.lintian-overrides
index 2f5b391..8db8c27 100644
--- a/debian/libgstreamer1.0-dev.lintian-overrides
+++ b/debian/libgstreamer1.0-dev.lintian-overrides
@@ -1,2 +1 @@
-libgstreamer1.0-dev: manpage-has-bad-whatis-entry *
-libgstreamer1.0-dev: binary-package-depends-on-toolchain-package *
+libgstreamer1.0-dev: manpage-has-bad-whatis-entry usr/share/man/man1/dh_gstscancodecs.1.gz
diff --git a/debian/patches/0001-mtk.patch b/debian/patches/0001-mtk.patch
deleted file mode 100644
index 94e57b0..0000000
--- a/debian/patches/0001-mtk.patch
+++ /dev/null
@@ -1,108 +0,0 @@
-From bdbe225a9c826bd9ecd44af48f957c131e8ce22a Mon Sep 17 00:00:00 2001
-From: Yuan Fang <yuan.fang@mediatek.com>
-Date: Wed, 14 Aug 2019 15:30:04 +0800
-Subject: [PATCH] upgrade-gst-to-1_14_4
-
----
- gst/gstallocator.c             |  6 ++++++
- libs/gst/base/gstbaseparse.c   |  5 +++++
- plugins/elements/gstfakesink.c | 36 ++++++++++++++++++++++++++++++++++++
- 3 files changed, 47 insertions(+)
-
-diff --git a/gst/gstallocator.c b/gst/gstallocator.c
-index 4b78a33..2b7fb27 100644
---- a/gst/gstallocator.c
-+++ b/gst/gstallocator.c
-@@ -592,6 +592,12 @@ _priv_gst_allocator_initialize (void)
-   GST_CAT_DEBUG (GST_CAT_MEMORY, "memory alignment: %" G_GSIZE_FORMAT,
-       gst_memory_alignment);
- 
-+    if (gst_memory_alignment < 127)
-+	{
-+      gst_memory_alignment = 127;
-+	}
-+	GST_CAT_DEBUG (GST_CAT_MEMORY, "Adjusted memory alignment: %" G_GSIZE_FORMAT,gst_memory_alignment);
-+
-   _sysmem_allocator = g_object_new (gst_allocator_sysmem_get_type (), NULL);
- 
-   /* Clear floating flag */
-diff --git a/libs/gst/base/gstbaseparse.c b/libs/gst/base/gstbaseparse.c
-index 9a8f986..1630af1 100644
---- a/libs/gst/base/gstbaseparse.c
-+++ b/libs/gst/base/gstbaseparse.c
-@@ -2522,6 +2522,11 @@ gst_base_parse_push_frame (GstBaseParse * parse, GstBaseParseFrame * frame)
-     }
-   }
- 
-+	if (frame->flags & GST_BASE_PARSE_FRAME_FLAG_DROP) {
-+		GST_LOG_OBJECT (parse, "frame with drop flag");
-+		ret = GST_BASE_PARSE_FLOW_DROPPED;
-+	}
-+
-   if (ret == GST_BASE_PARSE_FLOW_DROPPED) {
-     GST_LOG_OBJECT (parse, "frame (%" G_GSIZE_FORMAT " bytes) dropped", size);
-     if (GST_BUFFER_FLAG_IS_SET (buffer, GST_BUFFER_FLAG_DISCONT))
-diff --git a/plugins/elements/gstfakesink.c b/plugins/elements/gstfakesink.c
-index b71f20f..d8fa7d6 100644
---- a/plugins/elements/gstfakesink.c
-+++ b/plugins/elements/gstfakesink.c
-@@ -37,6 +37,11 @@
- #  include "config.h"
- #endif
- 
-+#define DEBUG_SINK_PERFORMANCE
-+#ifdef DEBUG_SINK_PERFORMANCE
-+#include <sys/time.h>
-+#endif
-+
- #include "gstelements_private.h"
- #include "gstfakesink.h"
- #include <string.h>
-@@ -435,6 +440,33 @@ eos:
-   }
- }
- 
-+#ifdef DEBUG_SINK_PERFORMANCE
-+static void
-+gst_fake_sink_debug_performance(GstFakeSink * sink)
-+{
-+  static gfloat costTime=0.0;
-+  gfloat avgTimeOnce=0.0;
-+
-+  static guint count=0;
-+
-+  static struct timeval tpStart;
-+  struct timeval tpEnd;
-+
-+  count++;
-+  if (count == 1) {
-+    gettimeofday(&tpStart,NULL);
-+  }
-+
-+  if(count % 100 == 0) {
-+    gettimeofday(&tpEnd,NULL);
-+
-+    costTime = 1000000*(tpEnd.tv_sec-tpStart.tv_sec)+(tpEnd.tv_usec-tpStart.tv_usec);
-+    avgTimeOnce = costTime/count; //us
-+    GST_INFO_OBJECT (sink, "FPS info: total %d frames,costTime=%fus,avg=%fms,fps=%f",count,costTime,avgTimeOnce/1000,1*1000/(avgTimeOnce/1000));
-+  }
-+}
-+#endif
-+
- static GstFlowReturn
- gst_fake_sink_render (GstBaseSink * bsink, GstBuffer * buf)
- {
-@@ -443,6 +475,10 @@ gst_fake_sink_render (GstBaseSink * bsink, GstBuffer * buf)
-   if (sink->num_buffers_left == 0)
-     goto eos;
- 
-+#ifdef DEBUG_SINK_PERFORMANCE
-+  gst_fake_sink_debug_performance (sink);
-+#endif
-+
-   if (sink->num_buffers_left != -1)
-     sink->num_buffers_left--;
- 
--- 
-1.9.1
-
diff --git a/debian/patches/0002-explicitly-load-libgomp.patch b/debian/patches/0002-explicitly-load-libgomp.patch
deleted file mode 100644
index 364ff8f..0000000
--- a/debian/patches/0002-explicitly-load-libgomp.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From 63aa2e3ac630dcad758b446fc56136e58058fffd Mon Sep 17 00:00:00 2001
-From: Cindy Liu <hcindyl@google.com>
-Date: Wed, 19 Aug 2020 17:22:29 -0700
-Subject: [PATCH] Explicitly load libgomp.so.1 in gst-plugin-scanner
-
-libgomp has a long lasting TLS bug
-(https://bugzilla.redhat.com/show_bug.cgi?id=1722181). Preload the
-library in gst-plugin-scanner to resolve the TLS memory issue while
-launching gstreamer.
-
-Change-Id: I8ebedaf320a6b4253e8804946e4ff79bbde48ad7
----
- libs/gst/helpers/Makefile.am          | 4 +++-
- libs/gst/helpers/gst-plugin-scanner.c | 4 ++++
- 2 files changed, 7 insertions(+), 1 deletions(-)
-
-diff --git a/libs/gst/helpers/Makefile.am b/libs/gst/helpers/Makefile.am
-index d72a6527..a7c6d6ce 100644
---- a/libs/gst/helpers/Makefile.am
-+++ b/libs/gst/helpers/Makefile.am
-@@ -3,7 +3,9 @@ helpersdir=$(libexecdir)/gstreamer-$(GST_API_VERSION)
- 
- gst_plugin_scanner_SOURCES = gst-plugin-scanner.c
- gst_plugin_scanner_CFLAGS = $(GST_OBJ_CFLAGS)
--gst_plugin_scanner_LDADD = $(GST_OBJ_LIBS)
-+gst_plugin_scanner_LDADD = \
-+	$(GST_OBJ_LIBS) \
-+	-lgomp
- 
- if ENABLE_BASH_COMPLETION
- helpers_PROGRAMS += gst-completion-helper
-diff --git a/libs/gst/helpers/gst-plugin-scanner.c b/libs/gst/helpers/gst-plugin-scanner.c
-index cbefb29e..0ad0480c 100644
---- a/libs/gst/helpers/gst-plugin-scanner.c
-+++ b/libs/gst/helpers/gst-plugin-scanner.c
-@@ -30,6 +30,7 @@
- #include <gst/gst.h>
- 
- #include <string.h>
-+#include <dlfcn.h>
- 
- int
- main (int argc, char *argv[])
-@@ -37,6 +38,7 @@ main (int argc, char *argv[])
-   gboolean res;
-   char **my_argv;
-   int my_argc;
-+  void *handle;
- 
-   /* We may or may not have an executable path */
-   if (argc != 2 && argc != 3)
-@@ -50,6 +52,8 @@ main (int argc, char *argv[])
-   my_argv[0] = argv[0];
-   my_argv[1] = (char *) "--gst-disable-registry-update";
- 
-+  handle = dlopen("libgomp.so.1", RTLD_LAZY);
-+
- #ifndef GST_DISABLE_REGISTRY
-   _gst_disable_registry_cache = TRUE;
- #endif
--- 
-2.28.0.220.ged08abb693-goog
-
diff --git a/debian/patches/0002-gstconfig.h.in-initial-RISC-V-support.patch b/debian/patches/0002-gstconfig.h.in-initial-RISC-V-support.patch
deleted file mode 100644
index abc1c17..0000000
--- a/debian/patches/0002-gstconfig.h.in-initial-RISC-V-support.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 8a156d1725ecd03f2e8cdc8874e081dda2d3b43d Mon Sep 17 00:00:00 2001
-From: Aurelien Jarno <aurelien@aurel32.net>
-Date: Sun, 15 Apr 2018 00:49:55 +0200
-Subject: [PATCH] gstconfig.h.in: initial RISC-V support
-
-RISC-V supports unaligned accesses, but these might run extremely slowly
-depending on the implementation. Therefore set GST_HAVE_UNALIGNED_ACCESS
-to 0 on this architecture.
-
-https://bugzilla.gnome.org/show_bug.cgi?id=795271
----
- gst/gstconfig.h.in | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/gst/gstconfig.h.in b/gst/gstconfig.h.in
-index 6351c04da..33dfed1f6 100644
---- a/gst/gstconfig.h.in
-+++ b/gst/gstconfig.h.in
-@@ -104,7 +104,7 @@
-  * http://docs.oracle.com/cd/E19205-01/820-4155/c++_faq.html#Vers6
-  * https://software.intel.com/en-us/node/583402
-  */
--#if defined(__alpha__) || defined(__arc__) || defined(__arm__) || defined(__aarch64__) || defined(__bfin) || defined(__hppa__) || defined(__nios2__) || defined(__MICROBLAZE__) || defined(__mips__) || defined(__or1k__) || defined(__sh__) || defined(__SH4__) || defined(__sparc__) || defined(__sparc) || defined(__ia64__) || defined(_M_ALPHA) || defined(_M_ARM) || defined(_M_IA64) || defined(__xtensa__) || defined(__e2k__)
-+#if defined(__alpha__) || defined(__arc__) || defined(__arm__) || defined(__aarch64__) || defined(__bfin) || defined(__hppa__) || defined(__nios2__) || defined(__MICROBLAZE__) || defined(__mips__) || defined(__or1k__) || defined(__sh__) || defined(__SH4__) || defined(__sparc__) || defined(__sparc) || defined(__ia64__) || defined(_M_ALPHA) || defined(_M_ARM) || defined(_M_IA64) || defined(__xtensa__) || defined(__e2k__) || defined(__riscv)
- #  define GST_HAVE_UNALIGNED_ACCESS 0
- #elif defined(__i386__) || defined(__i386) || defined(__amd64__) || defined(__amd64) || defined(__x86_64__) || defined(__ppc__) || defined(__ppc64__) || defined(__powerpc__) || defined(__powerpc64__) || defined(__m68k__) || defined(_M_IX86) || defined(_M_AMD64) || defined(_M_X64) || defined(__s390__) || defined(__s390x__) || defined(__zarch__)
- #  define GST_HAVE_UNALIGNED_ACCESS 1
--- 
-2.18.0
-
diff --git a/debian/patches/series b/debian/patches/series
index 20c5429..cbeba03 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,4 +1 @@
 0001-registrybinary-Update-magic-version-string.patch
-0002-gstconfig.h.in-initial-RISC-V-support.patch
-0001-mtk.patch
-0002-explicitly-load-libgomp.patch
diff --git a/debian/rules b/debian/rules
index 0d67d71..6db6c4d 100755
--- a/debian/rules
+++ b/debian/rules
@@ -6,10 +6,6 @@
 include /usr/share/cdbs/1/rules/autoreconf.mk
 include /usr/share/gnome-pkg-tools/1/rules/clean-la.mk
 
-# Work-around for gtk-doc bug:
-# https://bugzilla.gnome.org/show_bug.cgi?id=783926
-export PYTHONIOENCODING="utf-8"
-
 export HOME=$(CURDIR)/fake-home
 
 DEB_BUILD_PARALLEL = 1
@@ -18,7 +14,6 @@
 CFLAGS += -Wno-error
 CXXFLAGS += -Wno-error
 LDFLAGS += -Wl,-z,defs -Wl,-O1 -Wl,--as-needed
-DEB_MAKE_CHECK_TARGET = check || true
 
 # debian package version
 version=$(shell dpkg-parsechangelog | grep ^Version: | cut -d ' ' -f 2)
@@ -56,14 +51,10 @@
 	debian/$(gst_lib_dev).install \
 	debian/$(gst_lib_dev).preinst \
 	debian/$(gst_lib_dev).postrm \
-	debian/$(gst_pkgname)-doc.install \
-	debian/$(gst_pkgname)-doc.links \
-	debian/$(gst_pkgname)-doc.lintian \
 	debian/$(gst_pkgname)-tools.install \
 	debian/$(gst_pkgname)-tools.links \
 	debian/$(gst_pkgname)-tools.manpages \
 
-
 GST_PACKAGE_NAME := "GStreamer"
 
 debian/$(gst_lib).dirs: debian/libgstreamer.dirs debian/rules
@@ -129,14 +120,6 @@
 		sed 's/@GST_LIB_PREFIX@/$(gst_lib_prefix)/g' \
 		> $@
 
-debian/$(gst_pkgname)-doc.lintian: debian/gstreamer-doc.lintian debian/rules
-	rm -f $@
-	cat $< | \
-		sed 's/@GST_ABI@/$(gst_abi)/g' | \
-		sed 's/@GST_PKGNAME@/$(gst_pkgname)/g' | \
-		sed 's/@GST_LIB_PREFIX@/$(gst_lib_prefix)/g' \
-		> $@
-
 debian/$(gst_pkgname)-tools.install: debian/gstreamer-tools-abi.install debian/rules
 	rm -f $@
 	cat $< | \
@@ -181,7 +164,6 @@
 	--libexecdir=\$${prefix}/lib/$(DEB_HOST_MULTIARCH)/gstreamer$(gst_abi) \
 	--with-package-name=$(GST_PACKAGE_NAME) \
 
-
 ifeq ($(DEB_HOST_ARCH_OS),linux)
 common_conf_flags += --with-ptp-helper-permissions=capabilities
 else
@@ -189,35 +171,14 @@
 	--with-ptp-helper-setuid-user=nobody --with-ptp-helper-setuid-group=nobody
 endif
 
-indep_conf_flags = \
-	--with-html-dir=\$${prefix}/share/doc/$(gst_pkgname)-doc
-
-# only build the docs if gtk-doc-tools is installed, i.e. binary-indep is
-# called
-ifeq ($(shell test "`dpkg -l gtk-doc-tools | grep ^ii`" && echo binary-indep),binary-indep)
-indep_conf_flags += --enable-gtk-doc --enable-docbook
-endif
-
-DEB_CONFIGURE_EXTRA_FLAGS := $(common_conf_flags) $(indep_conf_flags)
-
-common-install-indep::
-	# move around the doc dirs
-	mkdir -p debian/tmp/usr/share/doc/$(gst_pkgname)-doc
-	-cp -r debian/tmp/usr/share/doc/gstreamer-$(gst_abi)/pwg \
-	   debian/tmp/usr/share/doc/gstreamer-$(gst_abi)/manual \
-	   debian/tmp/usr/share/doc/gstreamer-$(gst_abi)/faq \
-	   debian/tmp/usr/share/doc/$(gst_pkgname)-doc
-
-	# -doc lintian overrides
-	mkdir -p debian/$(gst_pkgname)-doc/usr/share/lintian/overrides/
-	cp -a debian/$(gst_pkgname)-doc.lintian debian/$(gst_pkgname)-doc/usr/share/lintian/overrides/$(gst_pkgname)-doc
+DEB_CONFIGURE_EXTRA_FLAGS := $(common_conf_flags)
 
 DEB_DH_MAKESHLIBS_ARGS_$(gst_lib) += -X "/usr/lib/$(DEB_HOST_MULTIARCH)/gstreamer-$(gst_abi)" -V $(gst_shlibs_dep) -- -c4
 DEB_INSTALL_DOCS_ALL += debian/README.Debian NEWS
 DEB_SHLIBDEPS_INCLUDE += debian/$(gst_lib)/usr/lib/$(DEB_HOST_MULTIARCH)
 
 install/$(gst_lib_dev)::
-	$(DEB_HOST_GNU_TYPE)-gcc -o debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/gstreamer1.0/gstreamer-1.0/gst-codec-info-1.0 debian/gst-codec-info.c $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) `$(DEB_HOST_GNU_TYPE)-pkg-config --libs --cflags glib-2.0 gthread-2.0 gmodule-no-export-2.0 gobject-2.0` debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/libgstreamer-1.0.so -Idebian/tmp/usr/include/gstreamer-1.0 -Idebian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/gstreamer-1.0/include
+	$(DEB_HOST_GNU_TYPE)-gcc -o debian/tmp/usr/bin/gst-codec-info-1.0 debian/gst-codec-info.c $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) `$(DEB_HOST_GNU_TYPE)-pkg-config --libs --cflags glib-2.0 gthread-2.0 gmodule-no-export-2.0 gobject-2.0` debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/libgstreamer-1.0.so -Idebian/tmp/usr/include/gstreamer-1.0 -Idebian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/gstreamer-1.0/include
 	perldoc -o man debian/dh_gstscancodecs > debian/tmp/usr/share/man/man1/dh_gstscancodecs.1
 
 .PHONY: maint
diff --git a/debian/watch b/debian/watch
deleted file mode 100644
index 3e5e786..0000000
--- a/debian/watch
+++ /dev/null
@@ -1,2 +0,0 @@
-version=2
-http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-(0\.11\.[\d\.]+)\.tar\.gz
