diff --git a/debian/build-deps b/debian/build-deps
index 48bdf64..d558f70 100644
--- a/debian/build-deps
+++ b/debian/build-deps
@@ -7,11 +7,6 @@
 dh-autoreconf
 dpkg-dev (>= 1.15.1)
 flite-dev
-gir1.2-freedesktop
-gir1.2-glib-2.0
-gir1.2-gst-plugins-base-1.0
-gir1.2-gstreamer-1.0
-gobject-introspection (>= 0.9.12-4~)
 @GST_EXTRA_BUILD_DEPENDS@
 @GST_LIB_DEV_DEP@
 gstreamer@GST_ABI@-doc
@@ -32,7 +27,6 @@
 libexif-dev (>= 0.6.16)
 libfaad-dev (>= 2.7)
 libfluidsynth-dev (>= 1.0)
-libgirepository1.0-dev (>= 0.9.12-4~)
 libglib2.0-dev (>= 2.40)
 libgme-dev
 libgnutls28-dev (>= 2.11.3)
@@ -47,7 +41,6 @@
 libmms-dev (>= 0.4)
 libmodplug-dev
 libmpcdec-dev
-libnice-dev (>= 0.1.14)
 libofa0-dev (>= 0.9.3)
 libopenal-dev (>= 1:1.14)
 libopenexr-dev
@@ -61,7 +54,6 @@
 libsndfile1-dev (>= 1.0.16)
 libsoundtouch-dev (>= 1.5.0)
 libspandsp-dev
-libsrtp2-dev (>= 2.1)
 libssl-dev
 libtool (>= 2.2.6)
 libvo-aacenc-dev
@@ -74,6 +66,7 @@
 libx265-dev
 libxml2-dev (>= 2.8)
 libxvidcore-dev
+libzbar-dev (>= 0.9)
 libzvbi-dev
 nettle-dev
 pkg-config (>= 0.11.0)
diff --git a/debian/build-deps.in b/debian/build-deps.in
deleted file mode 100644
index 2c4dee2..0000000
--- a/debian/build-deps.in
+++ /dev/null
@@ -1,81 +0,0 @@
-@GST_LIB_DEV_DEP@
-@GST_EXTRA_BUILD_DEPENDS@
-libgstreamer-plugins-base@GST_ABI@-dev (>= 1.14.4)
-autotools-dev
-dh-autoreconf
-automake (>= 1.14)
-autoconf (>= 2.69)
-libtool (>= 2.2.6)
-autopoint (>= 0.17)
-cdbs (>= 0.4.93)
-debhelper (>= 9)
-dpkg-dev (>= 1.15.1)
-pkg-config (>= 0.11.0)
-gtk-doc-tools (>= 1.12)
-libglib2.0-dev (>= 2.40)
-liborc-0.4-dev (>= 1:0.4.17)
-libbz2-dev
-libdca-dev
-libgsm1-dev
-libmms-dev (>= 0.4)
-libmpcdec-dev
-libsoundtouch-dev (>= 1.5.0)
-libgtk-3-dev (>= 3.15.0)
-ladspa-sdk
-libsndfile1-dev (>= 1.0.16)
-libfaad-dev (>= 2.7)
-libexif-dev (>= 0.6.16)
-libexempi-dev
-libiptcdata0-dev (>= 1.0.2)
-libwildmidi-dev (>= 0.2.3)
-gstreamer@GST_ABI@-plugins-base (>= 1.14.4)
-libofa0-dev (>= 0.9.3)
-libdvdnav-dev (>= 4.1.2) [!hurd-any]
-libssl-dev
-libx11-dev
-libx11-xcb-dev
-libass-dev (>= 0.10.4)
-libmodplug-dev
-libkate-dev (>= 0.1.7)
-libgme-dev
-librsvg2-dev (>= 2.36.2)
-libcairo2-dev
-libpng-dev
-flite-dev
-gstreamer@GST_ABI@-doc
-gstreamer@GST_ABI@-plugins-base-doc
-libzbar-dev (>= 0.9)
-librtmp-dev
-libgnutls28-dev (>= 2.11.3)
-libcurl4-gnutls-dev (>= 7.35.0)
-libxvidcore-dev
-libvo-aacenc-dev
-libvo-amrwbenc-dev
-libopenal-dev (>= 1:1.14)
-libzvbi-dev
-libspandsp-dev
-libopus-dev (>= 0.9.4)
-libxml2-dev (>= 2.8)
-libfluidsynth-dev (>= 1.0)
-libsrtp2-dev (>= 2.1)
-libopenjp2-7-dev (>= 2.1)
-libchromaprint-dev
-libwebp-dev (>= 0.2.1)
-libmjpegtools-dev
-libopenexr-dev
-nettle-dev
-libbs2b-dev
-libde265-dev
-libx265-dev
-libopencv-dev (>= 2.3.0)
-libgirepository1.0-dev (>= 0.9.12-4~)
-gobject-introspection (>= 0.9.12-4~)
-gir1.2-glib-2.0
-gir1.2-freedesktop
-gir1.2-gstreamer-1.0
-gir1.2-gst-plugins-base-1.0
-liblilv-dev (>= 0.16)
-libwebrtc-audio-processing-dev (>= 0.2)
-liblcms2-dev (>= 2.7)
-libopenmpt-dev
-libnice-dev (>= 0.1.14)
diff --git a/debian/changelog b/debian/changelog
index 9edef94..690a80b 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,2049 +1,5 @@
-gst-plugins-bad1.0 (1.14.4-1+mtku1) mendel-eagle; urgency=medium
+mtk-gst-plugins-bad (1.14.4+mtk-1) mendel-day; urgency=medium
 
-  * Enable waylandsink fullscreen.
-  * Enable v4l2convert and apply workaround to avoid concurrency issue with
-    rsvgoverlay.
+  * 1.14.4
 
- -- Coral Team <coral-support@google.com>  Thu, 29 Oct 2020 22:33:42 -0700
-
-gst-plugins-bad1.0 (1.14.4-1+mtk) mendel-day; urgency=medium
-
-  * Update to debian 1.14.4-1
-  * For Mendel Day release
-  * Remove doc in the package
-
- -- Coral Team <coral-support@google.com>  Mon, 03 Feb 2020 11:48:14 -0800
-
-gst-plugins-bad1.0 (1.10.4-1+mtk) mendel-chef; urgency=medium
-
-  * Configuration tweaks for Excelsior platform
-
- -- Coral <coral-support@google.com>  Fri, 09 Aug 2019 15:23:40 -0700
-
-gst-plugins-bad1.0 (1.10.4-1) unstable; urgency=medium
-
-  * New upstream bugfix release
-  * debian/build-deps.in:
-    + Remove unused dependency on DirectFB (Closes: #855513).
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 23 Feb 2017 15:39:04 +0200
-
-gst-plugins-bad1.0 (1.10.3-1) unstable; urgency=medium
-
-  * New upstream bugfix release
-
- -- Sebastian Dröge <slomo@debian.org>  Mon, 30 Jan 2017 15:51:48 +0200
-
-gst-plugins-bad1.0 (1.10.2-1) unstable; urgency=medium
-
-  * debian/build-deps.in,
-    debian/gstreamer-plugins-bad.install:
-    + Drop mimic plugin (Closes: #765534). Library is RM candidate and
-      upstream just removed the plugin today.
-    + Drop schroedinger plugin, see #845037.
-  * New upstream bugfix release
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 29 Nov 2016 15:53:26 +0200
-
-gst-plugins-bad1.0 (1.10.1-1) unstable; urgency=medium
-
-  * debian/rules:
-    + Add wayland-protocols to the build-dependencies as required for jessie.
-      Nowadays it is automatically pulled in somehow. Patch by Marc Leeman.
-  * New upstream bugfix release
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 17 Nov 2016 15:04:49 +0200
-
-gst-plugins-bad1.0 (1.10.0-1) unstable; urgency=medium
-
-  [ Helmut Grohne ]
-  * Mark gstreamer1.0-doc Multi-Arch: foreign (Closes: #842526).
-
-  [ Sebastian Dröge ]
-  * New upstream stable release (Closes: #841413, #828335).
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 01 Nov 2016 17:52:23 +0200
-
-gst-plugins-bad1.0 (1.9.90-1) experimental; urgency=medium
-
-  * New upstream unstable release:
-    + debian/build-deps.in,
-      debian/rules:
-      - Build-depend on GStreamer >= 1.9.90.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 30 Sep 2016 12:38:21 +0300
-
-gst-plugins-bad1.0 (1.9.2-1) experimental; urgency=medium
-
-  * New upstream unstable release:
-    + debian/build-deps.in,
-      debian/rules:
-      - Build-depend on GStreamer >= 1.9.2.
-    + debian/build-deps.in,
-      debian/gstreamer-plugins-bad.install:
-      - Include new timecode and webrtcdsp plugins.
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 01 Sep 2016 12:13:09 +0300
-
-gst-plugins-bad1.0 (1.9.1-1) experimental; urgency=medium
-
-  * New upstream unstable release:
-    + debian/build-deps.in,
-      debian/rules:
-      - Build-depend on GStreamer >= 1.9.1.
-    + debian/build-deps.in,
-      debian/gstreamer-plugins-bad.install:
-      - Include new musepack, dc1394 and lv2 plugins.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 06 Jul 2016 13:01:53 +0300
-
-gst-plugins-bad1.0 (1.8.2-1) unstable; urgency=medium
-
-  * New upstream bugfix release.
-  * debian/build-deps.in:
-    + Switch from OpenJPEG 1.5 to 2.1.
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 09 Jun 2016 11:32:08 +0300
-
-gst-plugins-bad1.0 (1.8.1-2) unstable; urgency=medium
-
-  * debian/build-deps.in:
-    + Patch by Tobias Frost to fix FTBFS on Hurd (Closes: #822675).
-
- -- Sebastian Dröge <slomo@debian.org>  Mon, 02 May 2016 08:55:41 +0300
-
-gst-plugins-bad1.0 (1.8.1-1) unstable; urgency=medium
-
-  * New upstream bugfix release.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 20 Apr 2016 18:18:02 +0300
-
-gst-plugins-bad1.0 (1.8.0-1) unstable; urgency=medium
-
-  * New upstream stable release:
-    + debian/build-deps.in,
-      debian/rules:
-      - Build-depend on GStreamer >= 1.8.0.
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 24 Mar 2016 12:32:02 +0200
-
-gst-plugins-bad1.0 (1.7.91-1) experimental; urgency=medium
-
-  * debian/build-deps.in:
-    + Remove libjasper-dev. It's unused and supposed to be removed soon.
-      (Closes: #818213).
-  * New upstream release candidate:
-    + debian/build-deps.in,
-      debian/rules:
-      - Build-depend on GStreamer >= 1.7.91.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 02 Mar 2016 16:45:09 +0200
-
-gst-plugins-bad1.0 (1.7.90-1) experimental; urgency=medium
-
-  [ Iain Lane ]
-  * debian/watch: Fix to work with upstream locations
-
-  [ Sebastian Dröge ]
-  * New upstream release candidate:
-    + debian/build-deps.in,
-      debian/rules:
-      - Build-depend on GStreamer >= 1.7.90.
-    + debian/gstreamer-plugins-bad.install:
-      - Ship new opusparse plugin, renamed from opus and only contains
-        the parser now.
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 01 Mar 2016 17:25:00 +0200
-
-gst-plugins-bad1.0 (1.7.2-1) experimental; urgency=medium
-
-  * New upstream unstable release:
-    + debian/build-deps.in,
-      debian/rules:
-      - Build-depend on GStreamer >= 1.7.2.
-      - Update faad dependency to >= 2.7 and rsvg to >= 2.36.2.
-    + debian/gstreamer-plugins-bad.install:
-      - Drop mpg123 (moved to -ugly) and rtpbad (moved to -good) plugins.
-      - Add new netsim plugin.
-    + debian/libgstreamer-plugins-bad*.install:
-      - Add new badaudio library.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 19 Feb 2016 11:29:54 +0200
-
-gst-plugins-bad1.0 (1.7.1-1) experimental; urgency=medium
-
-  * New upstream unstable release:
-    + debian/build-deps.in,
-      debian/rules:
-      - Build-depend on GLib >= 2.40 and GStreamer >= 1.7.1.
-      - Build-depend on libass >= 0.10.2.
-      - Build-depend on libdrm-dev.
-    + debian/gstreamer-plugins-base.install:
-      - Drop liveadder plugin and add new videoframe_audiolevel plugin.
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 24 Dec 2015 14:23:55 +0100
-
-gst-plugins-bad1.0 (1.6.2-1) unstable; urgency=medium
-
-  * New upstream bugfix release.
-
- -- Sebastian Dröge <slomo@debian.org>  Mon, 14 Dec 2015 19:33:55 +0100
-
-gst-plugins-bad1.0 (1.6.1-1) unstable; urgency=medium
-
-  * debian/control.in:
-    + Remove duplicated word from description (Closes: #800138).
-  * New upstream bugfix release.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 02 Oct 2015 10:13:01 +0300
-
-gst-plugins-bad1.0 (1.6.0-1) unstable; urgency=medium
-
-  * New upstream stable release.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 25 Sep 2015 23:02:02 +0200
-
-gst-plugins-bad1.0 (1.5.91-1) experimental; urgency=medium
-
-  * New upstream release candidate.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 18 Sep 2015 19:39:16 +0200
-
-gst-plugins-bad1.0 (1.5.90-1) experimental; urgency=medium
-
-  * New upstream release candidate.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 19 Aug 2015 13:35:43 +0300
-
-gst-plugins-bad1.0 (1.5.2-1) experimental; urgency=medium
-
-  * New unstable upstream release.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 24 Jun 2015 23:29:59 +0200
-
-gst-plugins-bad1.0 (1.5.1-1) experimental; urgency=medium
-
-  * New unstable upstream release.
-
- -- Sebastian Dröge <slomo@debian.org>  Sun, 07 Jun 2015 11:03:58 +0200
-
-gst-plugins-bad1.0 (1.5.0.1+git20150513-1) experimental; urgency=medium
-
-  * New upstream GIT snapshot.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 13 May 2015 15:48:32 +0300
-
-gst-plugins-bad1.0 (1.5.0.1+git20150316-2) experimental; urgency=medium
-
-  * debian/libgstreamer-plugins-bad-dev.install:
-    + Include platform dependent GL headers.
-  * debian/libgstreamer-plugins-bad-dev.install,
-    debian/rules,
-    debian/build-deps.in:
-    + Include GObject-Introspection files for the libraries.
-
- -- Sebastian Dröge <slomo@debian.org>  Mon, 23 Mar 2015 10:04:25 +0100
-
-gst-plugins-bad1.0 (1.5.0.1+git20150316-1) experimental; urgency=medium
-
-  * New upstream GIT snapshot:
-    + Add new bs2b, de265, x265, dtls, rtp plugins.
-    + Add ported vcd and bluez5 plugins.
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 17 Mar 2015 09:42:54 +0100
-
-gst-plugins-bad1.0 (1.4.5-1) experimental; urgency=medium
-
-  * New upstream bugfix release.
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 18 Dec 2014 12:25:07 +0100
-
-gst-plugins-bad1.0 (1.4.4-2) unstable; urgency=medium
-
-  * Upload to unstable.
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 11 Nov 2014 13:40:12 +0100
-
-gst-plugins-bad1.0 (1.4.4-1) experimental; urgency=medium
-
-  * New upstream bugfix release.
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 06 Nov 2014 12:56:37 +0100
-
-gst-plugins-bad1.0 (1.4.3-2) unstable; urgency=medium
-
-  * debian/build-deps.in:
-    + Build-depend on libgnutls28-dev instead of libgnutls-dev. The latter is
-      removed. We don't actually need to build-depend on it anymore but because
-      of a missing dependency in librtmp-dev we still need it (Closes: #764100).
-  * debian/build-deps.in:
-    + Remove unused libdirac-dev build dependency (Closes: #761012).
-
- -- Sebastian Dröge <slomo@debian.org>  Sun, 05 Oct 2014 20:30:36 +0300
-
-gst-plugins-bad1.0 (1.4.3-1) unstable; urgency=medium
-
-  * New upstream bugfix release.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 24 Sep 2014 12:14:37 +0300
-
-gst-plugins-bad1.0 (1.4.2-1) unstable; urgency=medium
-
-  * New upstream bugfix release.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 19 Sep 2014 14:40:05 +0300
-
-gst-plugins-bad1.0 (1.4.1-1) unstable; urgency=medium
-
-  * New upstream bugfix release.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 27 Aug 2014 14:45:20 +0300
-
-gst-plugins-bad1.0 (1.4.0-1) unstable; urgency=medium
-
-  * New upstream stable release.
-  * debian/rules:
-    + Disable bluez plugin for now until someone ports it to bluez5 (Closes: #755157).
-
- -- Sebastian Dröge <slomo@debian.org>  Sat, 19 Jul 2014 17:22:10 +0200
-
-gst-plugins-bad1.0 (1.3.91-1) experimental; urgency=medium
-
-  * New upstream release candidate:
-    + debian/rules,
-      debian/build-deps.in:
-      - Build-depend on GStreamer core and base >= 1.3.91.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 11 Jul 2014 11:51:10 +0200
-
-gst-plugins-bad1.0 (1.3.90-2) experimental; urgency=medium
-
-  [ Sebastian Dröge ]
-  * debian/gstreamer-plugins-bad.install:
-    + Include mpeg2enc plugin.
-
-  [ Sjoerd Simons ]
-  * debian/patches/01_fix-modplug-linking.patch
-    - Re-add. Fixes FTBS on i386
-
- -- Sjoerd Simons <sjoerd@debian.org>  Tue, 01 Jul 2014 15:01:07 +0200
-
-gst-plugins-bad1.0 (1.3.90-1) experimental; urgency=medium
-
-  * New upstream release candidate:
-    + debian/rules,
-      debian/build-deps.in:
-      - Build-depend on GStreamer core and base >= 1.3.90.
-
- -- Sebastian Dröge <slomo@debian.org>  Sat, 28 Jun 2014 11:55:38 +0200
-
-gst-plugins-bad1.0 (1.3.3-2) experimental; urgency=medium
-
-  * Team upload.
-
-  * debian/gbp.conf:
-    + Fix branch names for experimental.
-  * debian/gstreamer-plugins-bad.install,
-    debian/rules:
-    + Install the wayland sink on linux.
-
- -- Emilio Pozuelo Monfort <pochu@debian.org>  Thu, 26 Jun 2014 18:47:12 +0200
-
-gst-plugins-bad1.0 (1.3.3-1) experimental; urgency=medium
-
-  * New upstream development release:
-    + debian/rules,
-      debian/build-deps.in:
-      - Build-depend on GStreamer core and base >= 1.3.3.
-    + debian/gstreamer-plugins-bad.install,
-      debian/libgstreamer-plugins-bad*.install:
-      - Add new compositor plugin and new libraries.
-  * debian/rules:
-    + Run autopoint during autoreconf.
-
- -- Sebastian Dröge <slomo@debian.org>  Sun, 22 Jun 2014 18:14:52 +0200
-
-gst-plugins-bad1.0 (1.3.2-1) experimental; urgency=medium
-
-  * New upstream development release:
-    + debian/rules,
-      debian/build-deps.in:
-      - Build-depend on GStreamer core and base >= 1.3.2.
-      - Disable libssh2-1-dev support until it's installable again.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 21 May 2014 12:54:58 +0200
-
-gst-plugins-bad1.0 (1.3.1-1) experimental; urgency=medium
-
-  * New upstream development release:
-    + debian/rules,
-      debian/build-deps.in:
-      - Build-depend on GStreamer core and base >= 1.3.1.
-      - Build-depend on libopenexr.
-      - Build-depend on libssh2-1-dev.
-      - Build-depend on nettle-dev.
-      - Build-depend on libgl1-mesa-dev and libglu1-mesa-dev.
-      - Drop build-dependency on liblv2-dev, it was not used
-        at all (Closes: #740831).
-    + debian/libgstreamer-plugins-bad.install,
-      debian/gstreamer-plugins-bad.install:
-      - Drop the removed eglglessink plugin and libgstegl library.
-      - Add the new opengl plugin and libgstgl library.
-      - Add new audiomixer, ivfparse, jp2kdecimator, openexr,
-        sndfile, stereo, videosignal and vmnc plugins.
-
- -- Sebastian Dröge <slomo@debian.org>  Sat, 03 May 2014 19:26:42 +0200
-
-gst-plugins-bad1.0 (1.2.4-1) unstable; urgency=medium
-
-  * debian/build-deps.in,
-    debian/gstreamer-plugins-bad.install:
-    + Enable mplex plugin (Closes: #726064).
-  * New upstream bugfix release.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 18 Apr 2014 15:39:35 +0200
-
-gst-plugins-bad1.0 (1.2.3-1) unstable; urgency=medium
-
-  [ Iain Lane ]
-  * Drop ltmain-as-needed patch and do the same with dh_autoreconf
-    --as-needed.
-  * Enable parallel builds.
-
-  [ Sebastian Dröge ]
-  * New upstream bugfix release.
-  * debian/patches/02_opencv-linking.patch:
-    + Fix linking of opencv plugin by working around yet again broken
-      opencv pkg-config file.
-
- -- Sebastian Dröge <slomo@debian.org>  Sun, 09 Feb 2014 11:37:09 +0100
-
-gst-plugins-bad1.0 (1.2.2-1) unstable; urgency=medium
-
-  * New upstream bugfix release.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 27 Dec 2013 11:02:32 +0100
-
-gst-plugins-bad1.0 (1.2.1-2) unstable; urgency=medium
-
-  * debian/rules,
-    debian/gstreamer-plugins-bad.install:
-    + Enable the OpenCV plugin again, now that all the linking errors are gone.
-
- -- Sebastian Dröge <slomo@debian.org>  Sun, 15 Dec 2013 15:11:34 +0100
-
-gst-plugins-bad1.0 (1.2.1-1) unstable; urgency=low
-
-  [ Fabian Greffrath ]
-  * Team upload.
-  * Update Vcs-Browser field in debian/control{,.in}.
-  * Turn versioned Conflicts into Breaks to simplify lockstep upgrades.
-
-  [ Sebastian Dröge ]
-  * New upstream bugfix release:
-    + debian/patches/0001-bluez-Fix-compilation-on-big-endian-systems.patch:
-      - Dropped, merged upstream.
-
- -- Sebastian Dröge <slomo@debian.org>  Sat, 09 Nov 2013 17:10:09 +0100
-
-gst-plugins-bad1.0 (1.2.0-4) unstable; urgency=low
-
-  * debian/rules,
-    debian/build-deps.in,
-    debian/gstreamer-plugins-bad.install:
-    + Only enable sbc plugin on Linux, it's not available elsewhere.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 04 Oct 2013 10:06:43 +0200
-
-gst-plugins-bad1.0 (1.2.0-3) unstable; urgency=low
-
-  * debian/rules,
-    debian/build-deps.in,
-    debian/gstreamer-plugins-bad.install:
-    + Only enable bluez plugin on Linux, it's not available elsewhere.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 27 Sep 2013 13:52:58 +0200
-
-gst-plugins-bad1.0 (1.2.0-2) unstable; urgency=low
-
-  * debian/patches/0001-bluez-Fix-compilation-on-big-endian-systems.patch:
-    + Fix compilation on big endian systems.
-  * debian/build-deps.in:
-    + Tighten build dependency on libopenal-dev to >= 1:1.14 (Closes: #724669).
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 26 Sep 2013 15:02:54 +0200
-
-gst-plugins-bad1.0 (1.2.0-1) unstable; urgency=low
-
-  * New upstream stable release:
-    + debian/rules,
-      debian/build-deps.in:
-      - Build depend on GStreamer and gst-plugins-base >= 1.2.0.
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 24 Sep 2013 16:59:40 +0200
-
-gst-plugins-bad1.0 (1.1.90-1) experimental; urgency=low
-
-  * New upstream release candidate:
-    + debian/rules,
-      debian/build-deps.in:
-      - Build depend on GStreamer and gst-plugins-base >= 1.1.90.
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 19 Sep 2013 12:53:58 +0200
-
-gst-plugins-bad1.0 (1.1.4-3) experimental; urgency=low
-
-  * debian/patches/03_modplug-includes.patch:
-    + Fix build with the new modplug version by including the
-      modplug headers properly. Thanks to Iain Lane for the patch.
-  * debian/patches/04_opencv-2.4.6.1.patch:
-    + Fix build with OpenCV 2.4.6.1.
-  * debian/gstreamer-plugins-bad.install:
-    + Disable OpenCV plugin again for now until the libraries
-      are --as-needed clean again.
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 10 Sep 2013 11:12:25 +0200
-
-gst-plugins-bad1.0 (1.1.4-2) experimental; urgency=low
-
-  * debian/patches/02_soundtouch-int.patch:
-    + Fix compilation on armel, where soundtouch is compiled as an integer
-      version instead of floats as everywhere else.
-
- -- Sebastian Dröge <slomo@debian.org>  Mon, 02 Sep 2013 10:38:03 +0200
-
-gst-plugins-bad1.0 (1.1.4-1) experimental; urgency=low
-
-  * New upstream development snapshot:
-    + debian/rules,
-      debian/build-deps.in:
-      - Build depend on GStreamer and gst-plugins-base >= 1.1.4.
-    + debian/build-deps.in,
-      debian/gstreamer-plugins-bad.install:
-      - Add webp plugin.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 30 Aug 2013 13:06:41 +0200
-
-gst-plugins-bad1.0 (1.1.3-1) experimental; urgency=low
-
-  * New upstream development snapshot:
-    + debian/rules,
-      debian/build-deps.in:
-      - Build depend on GStreamer and gst-plugins-base >= 1.1.3.
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 30 Jul 2013 08:51:10 +0200
-
-gst-plugins-bad1.0 (1.1.2-1) experimental; urgency=low
-
-  * New upstream development snapshot:
-    + debian/rules,
-      debian/build-deps.in:
-      - Build depend on GStreamer and gst-plugins-base >= 1.1.2.
-      - Build depend on orc >= 0.4.17.
-      - Build depend on gnutls.
-      - Build depend on rsvg >= 2.36.
-    + debian/build-deps.in,
-      debian/gstreamer-plugins-bad.install:
-      - Add new bluez, fluidsynth, dash, smoothstreaming, opencv,
-        openjpeg, sbc, srtp, accurip, audiofxbad, ivtc, midi,
-        videofiltersbad, yadif, chromaprint plugins (Closes: #702341).
-      - Add newly ported aiff, freeverbm, kate, ladspa, mxf, rsvg
-        wildmidi, decklink, fbdev, uvch264, ofa, rfbsrc, openal
-        plugins (Closes: #712966).
-    + debian/libgstreamer-plugins-bad.install:
-      - Add new EGL, insertbin, mpegts and uridownloader libs.
-      - Remove removed basevideo library.
-
- -- Sebastian Dröge <slomo@debian.org>  Sun, 14 Jul 2013 12:44:45 +0200
-
-gst-plugins-bad1.0 (1.0.8-1) unstable; urgency=low
-
-  * New upstream bugfix release.
-  * debian/build-deps.in:
-    + Build-depend on gst-plugins-base >= 1.0.8 for a macro fix.
-
- -- Sebastian Dröge <slomo@debian.org>  Sat, 13 Jul 2013 11:33:12 +0200
-
-gst-plugins-bad1.0 (1.0.7-1) unstable; urgency=low
-
-  * New upstream bugfix release.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 26 Apr 2013 14:10:58 +0200
-
-gst-plugins-bad1.0 (1.0.6-1) unstable; urgency=low
-
-  * New upstream bugfix release:
-    + debian/gstreamer-plugins-bad.install,
-      debian/build-deps.in:
-      - Add newly ported OpenGLES2/EGL plugin.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 22 Mar 2013 18:24:57 +0100
-
-gst-plugins-bad1.0 (1.0.5-1) unstable; urgency=low
-
-  * New upstream bugfix release:
-    + debian/gstreamer-plugins-bad.install:
-      - Add newly ported mpegpsmux plugin.
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 08 Jan 2013 13:56:44 +0100
-
-gst-plugins-bad1.0 (1.0.4-1) unstable; urgency=low
-
-  * New upstream bugfix release.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 19 Dec 2012 10:35:07 +0100
-
-gst-plugins-bad1.0 (1.0.3-1) unstable; urgency=low
-
-  * New upstream bugfix release.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 21 Nov 2012 15:05:51 +0100
-
-gst-plugins-bad1.0 (1.0.2-1) unstable; urgency=low
-
-  * New upstream bugfix release:
-    + debian/gstreamer-plugins-bad.install:
-      - Add subenc and fieldanalysis plugins.
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 25 Oct 2012 14:13:33 +0200
-
-gst-plugins-bad1.0 (1.0.1-1) unstable; urgency=low
-
-  * New upstream bugfix release:
-    + debian/gstreamer-plugins-bad.install:
-      - Add frei0r plugin.
-
- -- Sebastian Dröge <slomo@debian.org>  Mon, 08 Oct 2012 11:12:00 +0200
-
-gst-plugins-bad1.0 (1.0.0-1) unstable; urgency=low
-
-  * New upstream release:
-    + debian/build-deps.in,
-      debian/rules:
-      - Build depend on GStreamer core/base >= 1.0.0.
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 25 Sep 2012 00:29:02 +0200
-
-gst-plugins-bad1.0 (0.11.99-1) experimental; urgency=low
-
-  * New upstream release:
-    + debian/build-deps.in,
-      debian/rules:
-      - Build depend on GStreamer core/base >= 0.11.99.
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 18 Sep 2012 11:26:04 +0200
-
-gst-plugins-bad1.0 (0.11.94-1) experimental; urgency=low
-
-  * New upstream release:
-    + debian/build-deps.in,
-      debian/rules:
-      - Build depend on GStreamer core/base >= 0.11.94.
-      - Build depend on gtk-doc >= 1.12.
-    + debian/gstreamer-plugins-bad.install,
-      debian/rules:
-      - Add the freeze, gdp, id3tag, inter, jpegformat, liveadder,
-        pnm, siren, spandsp, speed, dvb, resindvd plugins.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 14 Sep 2012 11:30:28 +0200
-
-gst-plugins-bad1.0 (0.11.93-1) experimental; urgency=low
-
-  * New upstream release:
-    + debian/build-deps.in,
-      debian/rules:
-      - Build depend on GStreamer core/base >= 0.11.93.
-    + debian/build-deps.in:
-      - Build depend on libmpg123-dev (>= 1.13).
-      - Build depend on GLIB >= 2.32.
-    + debian/gstreamer-plugins-bad.install:
-      - Add festival, interlace, mimic, mpegtsmux, mpg123
-        and soundtouch plugins.
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 09 Aug 2012 11:40:32 +0200
-
-gst-plugins-bad1.0 (0.11.92-1) experimental; urgency=low
-
-  * debian/rules,
-    debian/gstreamer-plugins-bad.install:
-    + Build the cdaudio plugin on kfreebsd too.
-  * New upstream release, "Shine On You Crazy Diamond":
-    + debian/build-deps.in,
-      debian/rules:
-      - Build depend on GStreamer core/base >= 0.11.92.
-    + debian/build-deps.in:
-      - Require orc >= 0.4.16.
-    + debian/patches/0001-vp8enc-fix-target-bitrate-config-with-libvpx-1.1.0.patch:
-      - Dropped, merged upstream.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 08 Jun 2012 13:13:33 +0200
-
-gst-plugins-bad1.0 (0.11.91-3) experimental; urgency=low
-
-  * debian/build-deps.in:
-    + Drop unconditional libcdaudio build dependency.
-      It's not available on hurd.
-
- -- Sebastian Dröge <slomo@debian.org>  Mon, 04 Jun 2012 12:42:49 +0200
-
-gst-plugins-bad1.0 (0.11.91-2) experimental; urgency=low
-
-  * debian/build-deps.in,
-    debian/gstreamer-plugins-bad.install:
-    + Drop CELT plugin and add OPUS plugin.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 30 May 2012 15:11:21 +0200
-
-gst-plugins-bad1.0 (0.11.91-1) experimental; urgency=low
-
-  * New upstream release, "Be he alive, or be he dead":
-    + debian/build-deps.in,
-      debian/rules:
-      - Build depend on GStreamer core/base >= 0.11.91.
-    + debian/gstreamer-plugins-bad.install:
-      - Re-add plugins that are ported now.
-  * debian/control.in,
-    debian/rules:
-    + Update automake, autoconf, libtool, debhelper dependencies.
-    + Update Standards-Version.
-  * debian/build-deps.in:
-    + Drop lv2core dependency, not needed anymore.
-  * debian/patches/0001-vp8enc-fix-target-bitrate-config-with-libvpx-1.1.0.patch:
-    + Patch from upstream GIT to fix vp8 encoder with libvpx 1.1.0.
-  * debian/libgstreamer-plugins-bad-dev.install:
-    + Drop .a files from the -dev package.
-  * debian/rules:
-    + Fix dh_gstscancodecs call.
-
- -- Sebastian Dröge <slomo@debian.org>  Mon, 21 May 2012 16:00:47 +0200
-
-gst-plugins-bad1.0 (0.11.90-1) experimental; urgency=low
-
-  [ Olivier Naudan ]
-  * Imported Upstream version 0.11.90
-  * Imported debian/ from gst-plugins-bad 0.10.23-1
-  * Updated debian/ for GStreamer 1.0
-  * Removed gstreamer-sdl, not ported to 0.11
-  * gstreamer-plugins-bad.install: Removed the plugins that have not been ported
-  * gstreamer-plugins-bad.install: Removed schemas
-  * gstreamer-plugins-bad.install: Added presets (.prs)
-  * debian/rules: disable pvrvideosink, until it is ported to gst 0.11
-
-  [ Sebastian Dröge ]
-  * Build-depend on GLib >= 2.31.14.
-  * Remove obsolete Provides and Replaces
-  * Merge changes from 0.10.23-2.
-  * Update copyright
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 03 May 2012 20:06:18 +0200
-
-gst-plugins-bad0.11 (0.11.1-1~ppa1) oneiric; urgency=low
-
-  * New upstream release, 0.11.1
-
- -- Olivier Naudan <o-naudan@ti.com>  Thu, 01 Mar 2012 13:02:01 +0100
-
-gst-plugins-bad0.10 (0.10.23-1) unstable; urgency=low
-
-  * New upstream stable release, "The Game Has Changed":
-    + debian/rules,
-      debian/build-deps.in:
-      - (Build-) depend on GStreamer core/base >= 0.10.36.
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 21 Feb 2012 10:58:52 +0100
-
-gst-plugins-bad0.10 (0.10.22.3-2) experimental; urgency=low
-
-  * debian/control.in,
-    debian/gstreamer-plugins-bad.install,
-    debian/libgstreamer-plugins-bad-dev.install,
-    debian/libgstreamer-plugins-bad.install,
-    debian/rules:
-    + Split the libraries into their own package and add a -dev package.
-      The API of the library is not guaranteed to be stable and as such
-      the shlibs of the library package are very strict and will require
-      dependant libraries to get a rebuild after every new upstream version.
-      The libraries will be required by gstreamer-vaapi.
-      Thanks to Timo Aaltonen <tjaalton@ubuntu.com> for the patch.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 08 Feb 2012 09:45:25 +0100
-
-gst-plugins-bad0.10 (0.10.22.3-1) experimental; urgency=low
-
-  * New upstream pre-release:
-    + debian/patches/01_dtsdec-libs.patch,
-      debian/patches/02_teletextdec-subdirs.patch:
-      - Dropped, merged upstream.
-
- -- Sebastian Dröge <slomo@debian.org>  Mon, 06 Feb 2012 10:52:44 +0100
-
-gst-plugins-bad0.10 (0.10.22.2-2) experimental; urgency=low
-
-  * debian/control.in:
-    + Build-depend on automake (>= 1.10), autoconf (>= 2.60) and
-      libtool (>= 2.0) to make dh-autoreconf actually work.
-  * debian/control.in:
-    + Pre-depend on ${misc:Pre-Depends} for multi-arch.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 14 Dec 2011 10:18:38 +0100
-
-gst-plugins-bad0.10 (0.10.22.2-1) experimental; urgency=low
-
-  * New upstream pre-release:
-    + debian/build-deps.in,
-      debian/rules:
-      - Build-depend on GStreamer core/base 0.10.35.2.
-      - Build-depend on GLib 2.24.
-    + debian/build-deps.in,
-      debian/gstreamer-plugins-bad.install,
-      debian/gstreamer-amrwbenc.install,
-      debian/README.Debian:
-      - Add audiovisualizers, cdaudio, faceoverlay, freeverb,
-        inter, openal, removesilence, smooth, spandsp, teletextdec,
-        voaacenc, voamrwbenc plugins.
-      - Remove invtelecine, mpeg4videoparse plugins.
-      - Remove amrwbenc extra plugin.
-    + debian/patches/01_path-max.patch:
-      - Dropped, merged upstream.
-    + debian/patches/99_ltmain_as-needed.patch:
-      - Refreshed to apply cleanly again.
-    + debian/patches/01_dtsdec-libs.patch:
-      - Add libgstbase to the libraries of dtsdec.
-    + debian/patches/02_teletextdec-subdirs.patch:
-      - Add the teletextdec directory to SUBDIRS.
-  * debian/control.in:
-    + Suggest frei0r-plugins (Closes: #633097).
-  * debian/build-deps.in,
-    debian/compat,
-    debian/control.in,
-    debian/gstreamer-amrwbenc.install,
-    debian/gstreamer-faac.install,
-    debian/gstreamer-mpeg2enc.install,
-    debian/gstreamer-plugins-bad.install,
-    debian/gstreamer-sdl.install,
-    debian/rules:
-    + Transition package to multi-arch (Closes: #647487).
-      Patch taken from the Ubuntu package.
-
- -- Sebastian Dröge <slomo@debian.org>  Mon, 12 Dec 2011 10:41:20 +0100
-
-gst-plugins-bad0.10 (0.10.22-3) unstable; urgency=low
-
-  * Add xvid to the bad plugin set as it's available in debian now.
-  * Remove any reference to LAME or MP3 from README.Debian.
-
- -- Fabian Greffrath <fabian+debian@greffrath.com>  Fri, 29 Jul 2011 13:24:53 +0200
-
-gst-plugins-bad0.10 (0.10.22-2) unstable; urgency=low
-
-  * debian/patches/01_path-max.patch:
-    + Don't use PATH_MAX, it's not defined on GNU Hurd and others.
-      Thanks to Pino Toscano for the patch (Closes: #626795).
-
- -- Sebastian Dröge <slomo@debian.org>  Mon, 16 May 2011 09:13:54 +0200
-
-gst-plugins-bad0.10 (0.10.22-1) unstable; urgency=low
-
-  * New upstream release, "Toy Piano":
-    + debian/patches/99_decklink.patch,
-      debian/patches/99_decklink-linking.patch:
-      - Dropped, merged upstream.    
-    + debian/rules,
-      debian/build-deps.in:
-      - Build-depend on GStreamer core/base 0.10.33.
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 10 May 2011 15:55:38 +0200
-
-gst-plugins-bad0.10 (0.10.21.3-1) experimental; urgency=low
-
-  * New upstream pre-release.
-  * debian/rules,
-    debian/gstreamer-plugins-bad.install:
-    + Enable the decklink and linsys plugins.
-  * debian/patches/99_decklink.patch,
-    debian/patches/99_decklink-linking.patch:
-    + Add decklink to sys/Makefile.am SUBDIRS and check
-      for pthread.h and link to pthread.
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 28 Apr 2011 09:20:34 +0200
-
-gst-plugins-bad0.10 (0.10.21.2-1) experimental; urgency=low
-
-  [ Alessandro Decina ]
-  * debian/rules:
-    + Include dh-autoreconf cdbs rule
-  * debian/build-deps.in:
-    + Add dependency on dh-autoreconf
-
-  [ Loïc Minier ]
-  * Use linux-any in build-deps instead of type-handling.
-  * Rework sed calls to avoid cat | sed and sed | sed.
-  * s/amrwb/amrwbenc/ in a leftover case statement in debian/extra; thanks
-    Mohamed Amine IL Idrissi; closes: #592757.
-
-  [ Sebastian Dröge ]
-  * New upstream pre-release:
-    + debian/patches/01_soundtouch-pc.patch,
-      debian/patches/02_shm_fixes.patch:
-      - Dropped, merged upstream.
-    + debian/build-deps.in:
-      - Update ORC build dependency to >= 0.4.11.
-    + debian/rules,
-      debian/build-deps.in:
-      - Build-depend on GStreamer core/base >= 0.10.32.2.
-    + debian/build-deps.in,
-      debian/rules,
-      debian/gstreamer-plugins-bad.install:
-      - Remove audioparsersbad and qtmux plugins, they moved to -good.
-      - Add curl, fieldanalysis, fragmented, mpegtsdemux, patchdetect,
-        rtpvp8, sdi, videofiltersbad and videoparsersbad plugins.
-
- -- Sebastian Dröge <slomo@debian.org>  Sun, 17 Apr 2011 11:10:36 +0200
-
-gst-plugins-bad0.10 (0.10.21-4) unstable; urgency=low
-
-  * Upload to unstable.
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 22 Mar 2011 15:33:52 +0100
-
-gst-plugins-bad0.10 (0.10.21-3) experimental; urgency=low
-
-  [ Sebastian Dröge ]
-  * debian/build-deps.in:
-    + Build depend on libsoundtouch-dev (>= 1.5.0).
-  * debian/control.in:
-    + Remove conflicts for the Fluendo MPEG demuxer/muxer packages. They're
-      not in the archive anymore and if they were they wouldn't conflict
-      anymore because of changes in gst-plugins-bad.
-
-  [ Sjoerd Simons ]
-  * debian/patches/02_shm_fixes.patch
-    * Added, various fixes for the SHM plugin (crasher, potential race
-      conditions). From upstream git
-
- -- Sjoerd Simons <sjoerd@debian.org>  Wed, 16 Mar 2011 21:59:38 +0000
-
-gst-plugins-bad0.10 (0.10.21-2) experimental; urgency=low
-
-  * debian/build-deps.in,
-    debian/patches/01_soundtouch-pc.patch:
-    + The soundtouch pkg-config file is nowadays called soundtouch.pc and
-      the name of the -dev package changed too (Closes: #612050).
-
- -- Sebastian Dröge <slomo@debian.org>  Mon, 07 Mar 2011 10:40:46 +0100
-
-gst-plugins-bad0.10 (0.10.21-1) experimental; urgency=low
-
-  * New upstream stable release, "Pink Noise":
-    + debian/control.in,
-      debian/build-deps.in:
-      - Require GStreamer, gst-plugins-base >= 0.10.32.
-
- -- Sebastian Dröge <slomo@debian.org>  Sat, 22 Jan 2011 14:12:31 +0100
-
-gst-plugins-bad0.10 (0.10.20.4-1) experimental; urgency=low
-
-  * New upstream pre-release:
-    + debian/control.in,
-      debian/build-deps.in:
-      - Require GStreamer, gst-plugins-base >= 0.10.31.4.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 19 Jan 2011 21:20:29 +0100
-
-gst-plugins-bad0.10 (0.10.20.3-1) experimental; urgency=low
-
-  * New upstream pre-release:
-    + debian/control.in,
-      debian/build-deps.in:
-      - Require GStreamer, gst-plugins-base >= 0.10.31.3
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 13 Jan 2011 13:59:14 +0100
-
-gst-plugins-bad0.10 (0.10.20.2-1) experimental; urgency=low
-
-  [ Emilio Pozuelo Monfort ]
-  * debian/build-deps.in,
-    debian/rules:
-    + Use dpkg-vendor instead of lsb_release.
-
-  [ Sebastian Dröge ]
-  * New upstream pre-release:
-    + debian/control.in,
-      debian/build-deps.in:
-      - Require GStreamer, gst-plugins-base >= 0.10.31.2
-      - Require ORC >= 0.4.7.
-    + debian/rules,
-      debian/gstreamer-plugins-bad.install:
-      - Drop the alsaspdif plugin, the functionality is in the alsa plugin now.
-      - Drop the selector and valve plugins, they're in GStreamer core now.
-      - Drop the jack plugin, it's in gst-plugins-good now.
-      - Add the new camerabin2, colorspace, dvbsuboverlay, interlace,
-        jp2kdecimator and y4mdec plugins.
-
- -- Sebastian Dröge <slomo@debian.org>  Mon, 10 Jan 2011 15:17:04 +0100
-
-gst-plugins-bad0.10 (0.10.20-2) experimental; urgency=low
-
-  * debian/build-deps.in:
-    + Add the epoch to the orc build dependency to get dependencies on
-      the correct version.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 17 Sep 2010 13:26:42 +0200
-
-gst-plugins-bad0.10 (0.10.20-1) experimental; urgency=low
-
-  * New upstream release, "For it is a Human Number".
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 03 Sep 2010 12:37:05 +0200
-
-gst-plugins-bad0.10 (0.10.19.5-1) experimental; urgency=low
-
-  * New upstream pre-release.
-
- -- Sebastian Dröge <slomo@debian.org>  Mon, 30 Aug 2010 16:13:21 +0200
-
-gst-plugins-bad0.10 (0.10.19.4-1) experimental; urgency=low
-
-  * New upstream pre-release.
-
- -- Sebastian Dröge <slomo@debian.org>  Sat, 21 Aug 2010 22:00:02 +0200
-
-gst-plugins-bad0.10 (0.10.19.3-1) experimental; urgency=low
-
-  * debian/build-deps.in:
-    + Fix build dependency on libdvdnav-dev to be ignored
-      on GNU Hurd for real now (Closes: #585095).
-  * New upstream pre-release:
-    + debian/patches/01_wildmidi-0.2.3.patch,
-      debian/patches/99_autoreconf.patch:
-      - Dropped, merged upstream.
-    + debian/build-deps.in,
-      debian/rules:
-      - Build depend on GStreamer and gst-plugins-base 0.10.30.
-      - Build depend on orc instead of liboil.
-      - Build depend on GLib >= 2.20 and GTK >= 2.14.
-      - Build depend on celt >= 0.5.0.
-    + debian/build-deps.in,
-      debian/gstreamer-plugins-bad.install:
-      - Add the new coloreffects, gaudieffects, geometrictransform,
-        gsettingselements, ivfparse, rtmpsrc, shm and videomaxrate
-        plugins.
-  * 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).
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 11 Aug 2010 11:44:23 +0200
-
-gst-plugins-bad0.10 (0.10.19-2) unstable; urgency=low
-
-  [Loïc Minier]
-  * Fail before generating control if type-handling isn't installed; avoids
-    silently generating a bogus control file.
-
-  [Sebastian Dröge]
-  * debian/rules,
-    debian/build-deps.in,
-    debian/gstreamer-plugins-bad.install:
-    + Don't build the resindvd plugin on GNU Hurd (Closes: #585095).
-  * debian/patches/99_autoreconf.patch,
-    debian/patches/01_wildmidi-0.2.3.patch,
-    debian/build-deps.in:
-    + Build against wildmidi 0.2.3 because of API changes and many
-      bugfixes.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 07 Jul 2010 08:46:02 +0200
-
-gst-plugins-bad0.10 (0.10.19-1) unstable; urgency=low
-
-  * New upstream release, "The World Kicked Back".
-
- -- Sebastian Dröge <slomo@debian.org>  Mon, 31 May 2010 05:43:20 +0200
-
-gst-plugins-bad0.10 (0.10.18.3-2) unstable; urgency=low
-
-  * debian/build-deps.in,
-    debian/gstreamer-plugins-bad.install:
-    + Enable and ship the VP8 encoder/decoder plugin.
-
- -- Sebastian Dröge <slomo@debian.org>  Sat, 29 May 2010 07:10:49 +0200
-
-gst-plugins-bad0.10 (0.10.18.3-1) unstable; urgency=low
-
-  * debian/build-deps.in,
-    debian/gstreamer-plugins-bad.install:
-    + Add the zbar plugin, now that zbar >= 0.9 is available.
-  * New upstream pre-release:
-    + debian/patches/*:
-      - Drop all VP8/WebM patches and other patches that are upstream
-        now. VP8 plugin is still not enabled and waiting for libvpx.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 26 May 2010 15:35:21 +0200
-
-gst-plugins-bad0.10 (0.10.18.2-2) unstable; urgency=low
-
-  * debian/patches/00*,
-    debian/patches/98_autoreconf.patch,
-    debian/build-deps.in,
-    debian/gstreamer-plugins-bad.install:
-    + Add VP8 plugin.
-  * debian/control.in:
-    + Let the -doc package depend on the GStreamer core/base documentation
-      for cross references.
-  * Upload to unstable, the VP8 plugin is disabled until libvpx
-    is accepted.
-
- -- Sebastian Dröge <slomo@debian.org>  Sat, 22 May 2010 08:09:15 +0200
-
-gst-plugins-bad0.10 (0.10.18.2-1) experimental; urgency=low
-
-  * New upstream pre-release:
-    + debian/gstreamer-plugins-bad.install:
-      - Remove the oss4audio plugin, it was moved to gstreamer0.10-plugins-good.
-      - Add the segmentclip and invtelecine plugins.
-    + debian/control.in,
-      debian/build-deps.in:
-      - Require GStreamer core/base >= 0.10.29.
-  * debian/build-deps.in:
-    + Build depend on GStreamer core/base documentation to get
-      correct cross references.
-  * debian/patches/01_resindvdbin-linking.patch:
-    + Fix linking of the resindvdbin plugin.
-
- -- Sebastian Dröge <slomo@debian.org>  Sat, 15 May 2010 10:03:19 +0200
-
-gst-plugins-bad0.10 (0.10.18-2) unstable; urgency=low
-
-  * debian/gstreamer-plugins-bad.install:
-    + Add camerabin plugin.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 17 Mar 2010 14:54:11 +0100
-
-gst-plugins-bad0.10 (0.10.18-1) unstable; urgency=low
-
-  * New upstream stable release, "Dimishing Returns":
-    + debian/rules,
-      debian/build-deps.in:
-      - Build depend on gstreamer and gst-plugins-base >= 0.10.27.
-
- -- Sebastian Dröge <slomo@debian.org>  Mon, 08 Mar 2010 10:06:36 +0000
-
-gst-plugins-bad0.10 (0.10.17.3-1) experimental; urgency=low
-
-  * New upstream pre-release:
-    + debian/rules,
-      debian/build-deps.in:
-      - Build depend on gstreamer and gst-plugins-base >= 0.10.26.3.
-    + debian/patches/01_faad-linking.patch:
-      - Dropped, merged upstream.
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 25 Feb 2010 08:29:47 +0100
-
-gst-plugins-bad0.10 (0.10.17.2-1) experimental; urgency=low
-
-  * New upstream pre-release:
-    + Fixes midi plugin that claims that it sometimes doesn't
-      support files (Closes: #502952, #468083).
-    + debian/build-deps.in,
-      debian/rules:
-      - Build depend on gstreamer and gst-plugins-base >= 0.10.26.2.
-    + debian/build-deps.in:
-      - Update orc and gtk build dependencies.
-    + debian/gstreamer-plugins-bad.install,
-      debian/build-deps.in:
-      - Add adpcmdec, adpcmenc, dataurisrc, flite, jpegformat plugins.
-      - Remove shapewipe plugin, it was moved to gst-plugins-good. 
-    + debian/patches/01_cog-orc-memcpy.patch,
-      debian/patches/02_cog-link-lm.patch,
-      debian/patches/03_frei0r.patch:
-      - Dropped, merged upstream.
-    + debian/control.in:
-      - Add Conflict with gst-plugins-ugly << 0.10.13.2 because of the
-        id3mux plugin.
-  * debian/build-deps.in,
-    debian/gstreamer-plugins-bad.install:
-    + Add LV2 plugin again, now that broken plugins
-      can't crash the main process anymore.
-  * debian/patches/01_faad-linking.patch:
-    + Fix linking of the faad plugin.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 19 Feb 2010 14:06:38 +0100
-
-gst-plugins-bad0.10 (0.10.17-4) unstable; urgency=low
-
-  * debian/build-deps.in:
-    + And remove the unnecessary build dependencies for SDL again as
-      bug #565579 is fixed now (Closes: #567775).
-
- -- Sebastian Dröge <slomo@debian.org>  Mon, 01 Feb 2010 05:35:12 +0100
-
-gst-plugins-bad0.10 (0.10.17-3) unstable; urgency=low
-
-  * debian/patches/03_frei0r.patch:
-    + Patch from upstream GIT to ensure correct GObject property
-      names (Closes: #565505).
-  * debian/build-deps.in:
-    + Add some unnecessary build dependencies to be able to build the
-      SDL plugin, see libsdl1.2 bug #565579.
-
- -- Sebastian Dröge <slomo@debian.org>  Sat, 16 Jan 2010 17:04:34 +0100
-
-gst-plugins-bad0.10 (0.10.17-2) unstable; urgency=low
-
-  * debian/build-deps.in,
-    debian/gstreamer-plugins-bad.install:
-    + Enable cog plugin.
-  * debian/patches/01_cog-orc-memcpy.patch,
-    debian/patches/02_cog-link-lm.patch:
-    + Fix build of the cog plugin.
-
- -- Sebastian Dröge <slomo@debian.org>  Mon, 14 Dec 2009 13:20:24 +0100
-
-gst-plugins-bad0.10 (0.10.17-1) unstable; urgency=low
-
-  * New upstream release, "Anny bobany".
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 17 Nov 2009 09:18:15 +0100
-
-gst-plugins-bad0.10 (0.10.16.3-1) experimental; urgency=low
-
-  * New upstream pre-release:
-    + Fixes build with celt >= 0.7.0.
-  * debian/rules:
-    + Add gstreamer0.10-plugins-bad's library directory to LD_LIBRARY_PATH
-      before calling dh_gstscancodecs. Otherwise some plugins can't be
-      loaded because of missing libraries.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 13 Nov 2009 07:58:42 +0100
-
-gst-plugins-bad0.10 (0.10.16.2-1) experimental; urgency=low
-
-  * New upstream pre-release:
-    + debian/gstreamer-plugins-bad.install:
-      - Rename aiffparse plugin to aiff.
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 10 Nov 2009 10:28:32 +0100
-
-gst-plugins-bad0.10 (0.10.16-1) unstable; urgency=low
-
-  [ Fabian Greffrath ]
-  * debian/extra, debian/gstreamer-amrwbenc.install, debian/README.Debian:
-    + Renamed the gstreamer-amrwb extra package to gstreamer-amrwbenc. There's
-      still the amrwb encoder in gst-plugins-bad because the opencore-amr
-      codecs in gst-plugins-ugly have no amrwb encoder.
-
-  [ Sebastian Dröge ]
-  * New upstream bugfix release, "Sensible Precaution":
-    + Fixes build of the faac plugin (Closes: #552080).
-
- -- Sebastian Dröge <slomo@debian.org>  Sat, 24 Oct 2009 06:17:23 +0200
-
-gst-plugins-bad0.10 (0.10.15-1) unstable; urgency=low
-
-  * New upstream release, "Ending the war".
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 21 Oct 2009 19:48:35 +0200
-
-gst-plugins-bad0.10 (0.10.14.4-1) experimental; urgency=low
-
-  * New upstream pre-release.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 16 Oct 2009 14:36:20 +0200
-
-gst-plugins-bad0.10 (0.10.14.3-1) experimental; urgency=low
-
-  * New upstream pre-release.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 16 Oct 2009 09:02:55 +0200
-
-gst-plugins-bad0.10 (0.10.14.2-1) experimental; urgency=low
-
-  * New upstream pre-release:
-    + debian/build-deps.in,
-      debian/gstreamer-plugins-bad.install:
-      - Remove xdgmime plugin, it's in gst-plugins-base now.
-      - Add videomeasure, pnm, rsvg and mpegpsmux plugins.
-    + debian/rules,
-      debian/build-deps.in:
-      - Update GStreamer and gst-plugins-base build dependencies.
-    + debian/patches/02_libass-0.9.7.patch:
-      - Dropped, merged upstream.
-
- -- Sebastian Dröge <slomo@debian.org>  Mon, 12 Oct 2009 17:14:50 +0200
-
-gst-plugins-bad0.10 (0.10.14-4) unstable; urgency=low
-
-  * debian/build-deps.in,
-    debian/gstreamer-plugins-bad.install:
-    + Disable the LV2 plugin until it works reliable and doesn't crash
-      GStreamer on startup every time (Closes: #549189).
-      Unfortunately I can't reproduce that crash...
-
- -- Sebastian Dröge <slomo@debian.org>  Sat, 03 Oct 2009 14:09:46 +0200
-
-gst-plugins-bad0.10 (0.10.14-3) unstable; urgency=low
-
-  * debian/build-deps.in,
-    debian/gstreamer-plugins-bad.install:
-    + Add the LV2 plugin.
-  * debian/gstreamer-plugins-bad.install,
-    debian/patches/01_static-unstable-libraries.patch:
-    + Install the experimental helper libraries into /usr/lib but
-      don't ship any headers or anything else. Static linking
-      causes problems if multiple plugins use the same library.
-  * debian/patches/99_automake.patch:
-    + Dropped, not needed anymore.
-  * debian/build-deps.in,
-    debian/gstreamer-plugins-bad.install:
-    + Drop the neonhttpsrc plugin, the souphttpsrc plugin from
-      gst-plugins-good is better in all cases.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 30 Sep 2009 12:43:23 +0200
-
-gst-plugins-bad0.10 (0.10.14-2) unstable; urgency=low
-
-  * debian/control.in:
-    + Add a Replaces for gstreamer0.10-plugins-really-bad from the
-      Debian Multimedia repository, which also contains the Dirac plugin
-      (Closes: #544667).
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 02 Sep 2009 11:43:32 +0200
-
-gst-plugins-bad0.10 (0.10.14-1) unstable; urgency=low
-
-  * New upstream release, 'Your New Best Friends'.
-  * debian/build-deps.in,
-    debian/gstreamer-plugins-bad.install:
-    + Add game-music-emu plugin.
-
- -- Sebastian Dröge <slomo@debian.org>  Sun, 30 Aug 2009 11:02:59 +0200
-
-gst-plugins-bad0.10 (0.10.13.5-2) experimental; urgency=low
-
-  * debian/build-deps.in,
-    debian/gstreamer-plugins-bad.install:
-    + Add mimic plugin.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 26 Aug 2009 19:02:30 +0200
-
-gst-plugins-bad0.10 (0.10.13.5-1) experimental; urgency=low
-
-  * New upstream pre-release.
-  * debian/build-deps.in,
-    debian/gstreamer-plugins-bad.install:
-    + Add Dirac plugin that uses the Dirac reference implementation.
-  * debian/control.in:
-    + Update Standards-Version to 3.8.3, no additional changes needed.
-  * debian/build-deps.in,
-    debian/patches/02_libass-0.9.7.patch:
-    + Add support for building against libass >= 0.9.7.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 26 Aug 2009 17:40:24 +0200
-
-gst-plugins-bad0.10 (0.10.13.3-1) experimental; urgency=low
-
-  * New upstream pre-release:
-    + debian/build-deps.in:
-      - Build depend on libass-dev (<< 0.9.7) because of API changes
-        in that version that we don't support yet.
-  * debian/build-deps.in,
-    debian/gstreamer-plugins-bad.install:
-    + Remove gmyth plugin because libgmyth will be removed (Closes: #542128).
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 19 Aug 2009 08:55:24 +0200
-
-gst-plugins-bad0.10 (0.10.13.2-1) experimental; urgency=low
-
-  [ Fabian Greffrath ]
-  * debian/extra:
-    + Use @GST_PKGNAME@ instead of hard-coded "gstreamer0.10".
-  * debian/extra, debian/gstreamer-x264.install, debian/README.Debian:
-    + Removed all references to the x264 plugin which has been moved to
-      gst-plugins-ugly0.10.
-
-  [ Sebastian Dröge ]
-  * New upstream pre-release:
-    + Fixes integer overflow in MPEG demuxer that prevents playback of files
-      larger than 4GB (Closes: #537392).
-    + debian/patches/01_static-unstable-libraries.patch,
-      debian/patches/99_automake.patch:
-      - Only build static libraries, they're not API/ABI stable yet
-        but are used by some plugins already.
-    + debian/rules,
-      debian/build-deps.in:
-      - Update build dependencies.
-    + debian/gstreamer-plugins-bad.install:
-      - Add new asfmux, frei0r, kate and schroedinger plugins.
-      - Remove rtpmanager plugin, which was moved to gst-plugins-good.
-    + debian/control.in:
-      - Add Conflicts/Replaces/Provides for gstreamer0.10-schroedinger.
-  * debian/control.in:
-    + Update Standards-Version to 3.8.2, no additional changes needed.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 12 Aug 2009 07:20:46 +0200
-
-gst-plugins-bad0.10 (0.10.13-1) unstable; urgency=low
-
-  * New upstream release, 'Supersonic Rocket':
-    + debian/patches/01_hdvparse-link-libm.patch:
-      - Dropped, merged upstream.
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 18 Jun 2009 13:47:30 +0200
-
-gst-plugins-bad0.10 (0.10.12.2-1) experimental; urgency=low
-
-  [ Fabian Greffrath ]
-  * debian/extra:
-    + gstreamer0.10-faac recommends gstreamer0.10-ffmpeg for
-      the ffmux_mp4 element.
-
-  [ Sebastian Dröge ]
-  * New upstream pre-release:
-    + debian/gstreamer-plugins-bad.install:
-      - Add new plugins: hdvparse, id3tag and shapewipe.
-    + debian/control.in:
-      - Conflict with gst-plugins-ugly << 0.10.11.2 because of
-        the id3tag plugin.
-    + debian/patches/01_hdvparse-link-libm.patch:
-      - Link hdvparse with -lm to fix unresolved symbols.
-
- -- Sebastian Dröge <slomo@debian.org>  Sat, 06 Jun 2009 19:35:24 +0200
-
-gst-plugins-bad0.10 (0.10.12-1) unstable; urgency=low
-
-  * debian/build-deps.in:
-    + Remove liblrdf build dependency as it only causes crashes
-      in dependend packages like pidgin. There seems to be some
-      kind of conflict if libraptor/liblrdf and libxml2 are used
-      in the same process (Closes: #523345).
-  * New upstream release, 'More than I can handle'.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 20 May 2009 23:19:08 +0200
-
-gst-plugins-bad0.10 (0.10.11.3-1) experimental; urgency=low
-
-  [ Sebastian Dröge ]
-  * debian/control.in:
-    + Update Standards-Version to 3.8.1, no additional changes needed.
-  * New upstream pre-release:
-    + debian/gstreamer-plugins-bad.install:
-      - Remove flv, deinterlace and y4menc plugins that were moved
-        to gst-plugins-good.
-
-  [ Fabian Greffrath ]
-  * debian/control, debian/control.in, debian/extra:
-    + Removed duplicate Section fields from gstreamer0.10-plugins-bad and
-      the extra plugins.
-    + Changed Section to debug for gstreamer0.10-plugins-bad-dbg.
-    + Added Depends on ${misc:Depends} to gstreamer0.10-plugins-bad-dbg and
-      the extra plugins.
-    + Improved duplicate short description for gstreamer0.10-plugins-bad-dbg.
-
- -- Sebastian Dröge <slomo@debian.org>  Sat, 16 May 2009 14:04:37 +0200
-
-gst-plugins-bad0.10 (0.10.11.2-1) experimental; urgency=low
-
-  [ Fabian Greffrath ]
-  * debian/TODO.Debian:
-    + Removed, I don't think any of these things are still relevant.
-
-  [ Sebastian Dröge ]
-  * New upstream pre-release:
-    + debian/build-deps.in,
-      debian/rules:
-      - Update build dependencies.
-    + debian/gstreamer-plugins-bad.install:
-      - Add new debugutilsbad plugin.
-  * debian/build-deps.in:
-    + Use unversioned libjack-dev b-d (Closes: #526109).
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 12 May 2009 09:51:24 +0200
-
-gst-plugins-bad0.10 (0.10.11-2) unstable; urgency=low
-
-  * Upload to unstable, now that the DirectFB transition is done.
-  * debian/build-deps.in:
-    + Build depend on liblrdf0-dev for the LADSPA plugin to enable support
-      for reading RDF files for informations about LADSPA plugins.
-
- -- Sebastian Dröge <slomo@debian.org>  Mon, 30 Mar 2009 14:41:32 +0200
-
-gst-plugins-bad0.10 (0.10.11-1) experimental; urgency=low
-
-  [ Sebastian Dröge ]
-  * New upstream release, 'A precious stone'.
-
-  [ Fabian Greffrath ]
-  * debian/extra:
-    + Added XB-GStreamer-* fields for the extra packages.
-  * debian/rules:
-    + Run debian/extra with sh (it has no execute permissions).
-  * debian/build-deps, debian/control, debian/rules:
-    + Order, wrap and indent Build-Depends; this will improve interdiffs for
-      packages that provide the extra plugins.
-
-  [ Sebastian Dröge ]
-  * Upload to experimental to prevent blocking the ffmpeg/etc transition.
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 26 Mar 2009 07:36:33 +0100
-
-gst-plugins-bad0.10 (0.10.10.3-1) unstable; urgency=low
-
-  * New upstream pre-release.
-
- -- Sebastian Dröge <slomo@debian.org>  Sat, 14 Mar 2009 19:49:34 +0100
-
-gst-plugins-bad0.10 (0.10.10.2-1) unstable; urgency=low
-
-  * New upstream pre-release:
-    + debian/patches/01_bpmdetect-stack-overflow.patch:
-      - Dropped, merged upstream.
-    + debian/build-deps.in:
-      - Update gst-plugins-base build dependency to >= 0.10.22.
-      - Update library build dependencies according to configure.ac.
-    + debian/control.in,
-      debian/gstreamer-plugins-bad.install:
-      - This release now contains all plugins from gst-plugins-farsight
-        and thus replaces files of it.
-      - Add new plugins: assrender, autoconvert, dtmf, liveadder,
-        rtpmux, siren, valve, xdgmime.
-      - Remove filter plugin, it's obsoleted by audioiirfilter from
-        gst-plugins-good.
-      - Remove twolame plugin, it was moved to gst-plugins-ugly.
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 10 Mar 2009 08:23:48 +0100
-
-gst-plugins-bad0.10 (0.10.10-3) unstable; urgency=low
-
-  * debian/patches/01_bpmdetect-stack-overflow.patch:
-    + Patch from upstream GIT to fix stack overflow in the bpmdetect
-      plugin.
-  * debian/patches/02_no-Werror.patch,
-    debian/rules:
-    + Pass -Wno-error via C(XX)FLAGS instead of patching configure.
-  * debian/build-deps.in:
-    + Build depend on libdca-dev instead of libdts-dev, which is the
-      successor. libdts-dev is still necessary for the dts.h header.
-
- -- Sebastian Dröge <slomo@debian.org>  Mon, 23 Feb 2009 12:14:32 +0100
-
-gst-plugins-bad0.10 (0.10.10-2) unstable; urgency=low
-
-  * Upload to unstable.
-
- -- Sebastian Dröge <slomo@debian.org>  Sun, 15 Feb 2009 20:12:00 +0100
-
-gst-plugins-bad0.10 (0.10.10-1) experimental; urgency=low
-
-  * New upstream release, 'Keep the dogies rollin'':
-    + debian/rules:
-      - Update GStreamer build dependencies.
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 20 Jan 2009 09:12:34 +0100
-
-gst-plugins-bad0.10 (0.10.9.3-1) experimental; urgency=low
-
-  * New upstream pre-release:
-    + debian/patches/01_ladspa-modules.patch:
-      - Dropped, merged upstream.
-
- -- Sebastian Dröge <slomo@debian.org>  Sun, 11 Jan 2009 21:31:03 +0100
-
-gst-plugins-bad0.10 (0.10.9.2-1) experimental; urgency=low
-
-  * New upstream pre-release:
-    + A lot DVD nagivation fixes (Closes: #506573).
-    + debian/patches/01_ladspa-modules.patch:
-      - Add plugin dependency for the LADSPA modules to make sure
-        that the plugin is updated when new LADSPA modules are installed.
-    + debian/build-deps.in,
-      debian/rules:
-      - Update build dependencies.
-    + debian/gstreamer-plugins-bad.install:
-      - Add new plugins.
-      - Remove speexresample (it's in gst-plugins-base as audioresample now).
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 08 Jan 2009 07:59:36 +0100
-
-gst-plugins-bad0.10 (0.10.9-1) experimental; urgency=low
-
-  * New upstream release, 'Matters Of Fact'.
-
- -- Sebastian Dröge <slomo@debian.org>  Sat, 25 Oct 2008 09:39:49 +0200
-
-gst-plugins-bad0.10 (0.10.8.4-1) experimental; urgency=low
-
-  * New upstream pre-release.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 22 Oct 2008 11:20:04 +0200
-
-gst-plugins-bad0.10 (0.10.8.3-1) experimental; urgency=low
-
-  * New upstream pre-release:
-    + debian/gstreamer-plugins-bad.install:
-      - Add apexsink plugin.
-
- -- Sebastian Dröge <slomo@debian.org>  Sat, 18 Oct 2008 10:23:50 +0200
-
-gst-plugins-bad0.10 (0.10.8.2-1) experimental; urgency=low
-
-  * New upstream pre-release:
-    + Some Midi playback fixes (Closes: #489170).
-    + debian/patches/03_resindvd-update.patch:
-      - Dropped, merged upstream.
-    + debian/rules:
-      - Build depend on gstreamer >= 0.10.21.
-    + debian/build-deps.in:
-      - Build depend on openssl.
-      - Build depend on CELT.
-      - Build depend on Jasper2k.
-      - Build depend on TwoLAME.
-    + debian/gstreamer-plugins-bad.install:
-      - Add aiffparse, celt, dccp, jp2k, mpegdemux, mpegtsmux, pcapparse,
-        scaletempo and twolame plugins (Closes: #482970).
-    + debian/control.in:
-      - Conflict with gstreamer0.10-fluendo-mpegdemux and
-        gstreamer0.10-fluendo-mpegmux as the mpegdemux and mpegtsmux plugins
-        from gst-plugins-bad are their successors.
-
- -- Sebastian Dröge <slomo@debian.org>  Sat, 11 Oct 2008 15:48:19 +0200
-
-gst-plugins-bad0.10 (0.10.8-3) experimental; urgency=low
-
-  * debian/patches/03_resindvd-update.patch:
-    + Update the resindvd plugin from latest CVS to get some important
-      bugfixes.
-
- -- Sebastian Dröge <slomo@debian.org>  Sat, 11 Oct 2008 12:59:59 +0200
-
-gst-plugins-bad0.10 (0.10.8-2) experimental; urgency=low
-
-  * debian/rules,
-    debian/control.in:
-    + Use the new automatic plugin installation infrastructure.
-  * debian/control.in:
-    + Wrap control fields.
-    + Depend on gstreamer0.10-plugins-base as some plugins need it.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 15 Aug 2008 18:43:04 +0200
-
-gst-plugins-bad0.10 (0.10.8-1) experimental; urgency=low
-
-  * New upstream release, 'Vapour Trails'.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 01 Aug 2008 11:33:33 +0200
-
-gst-plugins-bad0.10 (0.10.7.3-1) experimental; urgency=low
-
-  * New upstream pre-release:
-    + debian/patches/03_resindvd-configure.patch,
-      debian/patches/04_ladspa-linking.patch,
-      debian/patches/05_resindvd-missing-header.patch:
-      - Dropped, merged upstream.
-
- -- Sebastian Dröge <slomo@debian.org>  Sat, 26 Jul 2008 12:35:24 +0200
-
-gst-plugins-bad0.10 (0.10.7.2-1) experimental; urgency=low
-
-  * New upstream pre-release:
-    + debian/gstreamer-plugins-bad.install:
-      - Remove replaygain and interleave plugins.
-      - Add deinterlace2 plugin.
-    + debian/gstreamer-plugins-bad.install,
-      debian/build-deps.in:
-      - Add resindvd plugin.
-    + debian/rules,
-      debian/build-deps.in:
-      - Update gstreamer and gst-plugins-base build dependency.
-    + debian/patches/02_wildmidi-config.patch,
-      debian/patches/03_rtspsession_rtcp_bye.patch,
-      debian/patches/04_mpeg4videoparse.patch:
-      - Dropped, merged upstream.
-    + Ported to the new libmpcdec API (Closes: #476380).
-    + Fixes playback of certain mms streams (Closes: #467268).
-  * debian/patches/03_resindvd-configure.patch:
-    + Fix configure check for the resindvd plugin.
-  * debian/patches/04_ladspa-linking.patch:
-    + Link ladspa with -ldl to prevent unresolved symbols.
-  * debian/patches/05_resindvd-missing-header.patch:
-    + Add missing header file.
-  * debian/control.in:
-    + Update Standards-Version to 3.8.0, no additional changes needed.
-
- -- Sebastian Dröge <slomo@debian.org>  Sun, 20 Jul 2008 12:07:37 +0200
-
-gst-plugins-bad0.10 (0.10.7-2) unstable; urgency=low
-
-  * debian/patches/03_rtspsession_rtcp_bye.patch
-    + Added. Send RTCP BYE on EOS (From upstream CVS)
-  * debian/control: Add myself to uploaders
-  * debian/patches/04_mpeg4videoparse.patch
-    + Added. mpeg4videoparse update from CVS
-  * debian/rules: Append extra_plugins entries to debian/control instead of
-    truncating it (Patch from Mike Massonnet) (Closes: #481034)
-
- -- Sjoerd Simons <sjoerd@debian.org>  Sun, 01 Jun 2008 16:08:37 +0200
-
-gst-plugins-bad0.10 (0.10.7-1) unstable; urgency=low
-
-  * New upstream release, 'House of Cards'.
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 24 Apr 2008 07:42:15 +0200
-
-gst-plugins-bad0.10 (0.10.6.4-1) experimental; urgency=low
-
-  * New upstream pre-release.
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 22 Apr 2008 10:29:25 +0200
-
-gst-plugins-bad0.10 (0.10.6.3-1) experimental; urgency=low
-
-  * New upstream pre-release:
-    + debian/patches/01_timidity-missing-header.patch:
-      - Dropped, merged upstream.
-
- -- Sebastian Dröge <slomo@debian.org>  Fri, 18 Apr 2008 10:36:44 +0200
-
-gst-plugins-bad0.10 (0.10.6.2-2) experimental; urgency=low
-
-  * debian/patches/02_no-Werror.patch:
-    + Don't build with -Werror to fix FTBFS on some architectures.
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 15 Apr 2008 05:29:54 +0200
-
-gst-plugins-bad0.10 (0.10.6.2-1) experimental; urgency=low
-
-  * New upstream pre-release:
-    + debian/build-deps.in,
-      debian/rules:
-      - Update build dependencies.
-    + debian/rules,
-      debian/gstreamer-plugins-bad.install:
-      - Ship new dc1394, ofa, oss4audio, subenc plugins.
-      - Drop souphttpsrc plugin which moved to gst-plugins-good.
-    + debian/patches/01_wildmidi-build.patch,
-      debian/patches/03_soup-icecast.patch,
-      debian/patches/04_soup-primary-rank.patch,
-      debian/patches/05_soup-no-dav.patch,
-      debian/patches/06_neon-28.patch,
-      debian/patches/10_fix-faad-header-check.patch
-      debian/patches/75_build_docs_without_python_xml.patch,
-      debian/patches/80_unit-tests.patch:
-      - Dropped, merged upstream.
-    + debian/patches/02_wildmidi-config.patch:
-      - Updated for the new version.
-    + debian/patches/01_timidity-missing-header.patch:
-      - Add missing timidity header file.
-
- -- Sebastian Dröge <slomo@debian.org>  Mon, 14 Apr 2008 12:10:32 +0200
-
-gst-plugins-bad0.10 (0.10.6-7) unstable; urgency=low
-
-  * debian/patches/06_neon-28.patch:
-    + Fix build with neon 0.28.
-  * debian/build-deps.in:
-    + Use neon-gnutls instead of plain neon.
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 01 Apr 2008 13:19:03 +0200
-
-gst-plugins-bad0.10 (0.10.6-6) unstable; urgency=low
-
-  * debian/patches/03_soup-icecast.patch:
-    + Set correct caps on the srcpad if we have an icecast server. Fixes
-      glitches/crackling (Closes: #472135).
-  * debian/patches/04_soup-primary-rank.patch:
-    + Give souphttpsrc RANK_PRIMARY so it's used always as HTTP source if
-      available.
-  * debian/patches/05_soup-no-dav.patch:
-    + Don't use soup for dav/davs. This is better handled by GIO and GnomeVFS
-      as they provide authentication.
-
- -- Sebastian Dröge <slomo@debian.org>  Sat, 22 Mar 2008 19:30:07 +0100
-
-gst-plugins-bad0.10 (0.10.6-5) unstable; urgency=low
-
-  * debian/build-deps.in,
-    debian/gstreamer-plugins-bad.install:
-    + Include the soup HTTP plugin.
-  * debian/build-deps.in:
-    + Drop python-xml build dependency for real now.
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 11 Mar 2008 05:31:11 +0100
-
-gst-plugins-bad0.10 (0.10.6-4) unstable; urgency=low
-
-  * debian/patches/75_build_docs_without_python_xml.patch:
-    + Added. Build documentation using xml.dom.minidom instead of pyxml. Patch
-      by Sebastian Dröge.
-  * debian/control: Drop build-depend on python-xml
-  * debian/patches/10_fix-faad-header-check.patch:
-    + Added. Fix faad header check to match the check faad2 does. Fixes
-      playback of various streams.
-
- -- Sjoerd Simons <sjoerd@debian.org>  Sat, 08 Mar 2008 19:59:00 +0100
-
-gst-plugins-bad0.10 (0.10.6-3) unstable; urgency=low
-
-  * debian/extra,
-    debian/gstreamer-amrwb.install,
-    debian/gstreamer-mpeg2enc.install,
-    debian/README.Debian:
-    + Patch by Fabian Greffrath to add support for an amrwb and mpeg2enc
-      package and making the use of MPEG more conform (Closes: #467439).
-  * debian/build-deps.in,
-    debian/gstreamer-plugins-bad.install:
-    + Add the gmyth plugin.
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 26 Feb 2008 08:35:54 +0100
-
-gst-plugins-bad0.10 (0.10.6-2) unstable; urgency=low
-
-  * debian/extra:
-    + Update for new xvid package names in Debian Multimedia and Debian
-      Unofficial Thanks to Fabian Greffrath (Closes: #466861).
-      Also add support for x264 and do some small cleanup.
-  * debian/rules:
-    + SPC is only available on Linux-i386, enable it as such. Fixes
-      FTBFS on kfreebsd-i386.
-  * debian/build-deps.in,
-    debian/patches/01_wildmidi-build.patch,
-    debian/patches/02_wildmidi-config.patch,
-    debian/gstreamer-plugins-bad.install:
-    + Enable the wildmidi plugin and change the config file path to our
-      default (Closes: #346455).
-
- -- Sebastian Dröge <slomo@debian.org>  Mon, 25 Feb 2008 07:03:11 +0100
-
-gst-plugins-bad0.10 (0.10.6-1) unstable; urgency=low
-
-  * New upstream release, "A Big Deep Breath":
-    + debian/patches/01_linking-fixes.patch:
-      - Dropped, merged upstream.
-  * debian/rules,
-    debian/build-deps.in,
-    debian/gstreamer-plugins-bad.install:
-    + Enable the alsaspdif, libcdaudio, dvb, fbdev and vcd plugins
-      only on Linux architectures to try to fix FTBFS on kfreebsd.
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 21 Feb 2008 13:34:46 +0100
-
-gst-plugins-bad0.10 (0.10.5.4-1) experimental; urgency=low
-
-  * New upstream pre-release.
-  * debian/control.in:
-    + Add Replaces for gstreamer0.10-plugins-bad-multiverse (<< 0.10.5-2) to
-      keep the Ubuntu delta lower and don't break Debian installation with
-      some Ubuntu packages.
-  * 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/patches/01_linking-fixes.patch:
-    + Link the tta plugin with libm.
-
- -- Sebastian Dröge <slomo@debian.org>  Tue, 19 Feb 2008 06:55:50 +0100
-
-gst-plugins-bad0.10 (0.10.5.3-1) experimental; urgency=low
-
-  * New upstream pre-release.
-  * debian/build-deps.in:
-    + Build depend on gstreamer0.10-plugins-base for the unit tests.
-  * debian/patches/80_unit-tests.patch:
-    + Disable some elements for the generic/states unit test.
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 14 Feb 2008 13:18:33 +0100
-
-gst-plugins-bad0.10 (0.10.5.2-1) experimental; urgency=low
-
-  [ Emilio Pozuelo Monfort ]
-  * debian/rules:
-    - Decide the package name and url depending on the distribution.
-  * debian/build-deps.in:
-    - Build-Depend on lsb-release.
-
-  [ Sebastian Dröge ]
-  * New upstream pre-release:
-    + Fixes FTBFS if built twice in a row (Closes: #424399).
-    + Adds support for VCD playback (Closes: #454599).
-    + Fixes conflict between Fluendo mpeg demuxer and
-      DTS decoder (Closes: #448411).
-    + debian/build-deps.in,
-      debian/control.in:
-      - Update liboil and gstreamer build dependencies.
-      - Add and update a few build dependencies.
-    + debian/gstreamer-plugins-bad.install:
-      - Add dvdspu, festival, flv, mpegtsparse, mpeg4videoparse, rawparse,
-        sdp, selector, speexresample, stereo, fbdev, metadata, vcd plugins. 
-      - Remove equalizer, multifile, spectrum, switch, videoparse, xingheader
-        plugins. These have moved to other places now.
-      - Sort everything alphabetically.
-    + debian/control.in,
-      debian/build-deps.in,
-      debian/rules:
-      - Drop the OpenGL plugin. This will go to a new source package named
-        gst-plugins-gl once we have mesa >= 7.1 somewhere.
-  * debian/rules:
-    + Run the unit test suite but don't fail the build on failures.
-  * debian/control.in:
-    + Update Standards-Version to 3.7.3, no additional changes needed.
-
- -- Sebastian Dröge <slomo@debian.org>  Sat, 09 Feb 2008 14:04:01 +0100
-
-gst-plugins-bad0.10 (0.10.5-5) unstable; urgency=low
-
-  * debian/rules:
-    + Fix GST_REGISTRY envirnment variable setting (Closes: #452568).
-
- -- Sebastian Dröge <slomo@debian.org>  Sat, 24 Nov 2007 20:02:13 +0100
-
-gst-plugins-bad0.10 (0.10.5-4) unstable; urgency=low
-
-  * debian/rules:
-      + Set GST_REGISTRY before the dh_gstscancodecs call to save the registry
-        somewhere on buildds without writable home and speed things up a bit.
-  * debian/build-deps.in:
-      + Remove check from build dependencies. This is only an indirect build
-        dependency that is already satisfied by libgstreamer0.10-dev. configure
-        only checks for libgstcheck, not check.
-   * debian/build-deps.in,
-     debian/gstreamer-plugins-bad.install:
-     + Enable the DirectFB video sink plugin.
-
- -- Sebastian Dröge <slomo@debian.org>  Wed, 19 Sep 2007 15:44:46 +0200
-
-gst-plugins-bad0.10 (0.10.5-3) unstable; urgency=low
-
-  * debian/control.in,
-    debian/rules,
-    debian/gstreamer-plugins-bad.install:
-    + Move docs, SDL and GL to a separate package.
-    + Create a package with debug symbols.
-  * debian/rules:
-    + Call dh_gstscancodecs.
-  * debian/control:
-    + Replace Source-Version with binary:Version to make lintian happy.
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 30 Aug 2007 20:22:35 +0200
-
-gst-plugins-bad0.10 (0.10.5-2) unstable; urgency=low
-
-  * debian/build-deps.in:
-    + Drop swfdec build dependency. The plugin doesn't work with 0.5.
-
- -- Sebastian Dröge <slomo@debian.org>  Thu, 30 Aug 2007 10:10:49 +0200
-
-gst-plugins-bad0.10 (0.10.5-1) unstable; urgency=medium
-
-  * Change Maintainer to pkg-gstreamer, add myself to Uploaders and use
-    "standard" GStreamer packaging, used for all the other plugin packages too.
-  * New upstream version (Closes: #429727):
-    + Fixes remaining use of deprecated function (Closes: #436353).
-    + Somewhat fixes FTBFS caused by deprecation warnings by not compiling
-      with -Werror (Closes: #424559).
-  * debian/build-deps.in:
-    + Build depend on new enough GStreamer (Closes: #433495).
-  * debian/gstreamer-plugins-bad.install,
-    debian/build-deps.in:
-    + Ship the GSM plugin (Closes: #429594).
-    + Ship the dtsdec plugins (Closes: #428742).
-    + Ship the ladspa plugin (Closes: #429527).
-  * debian/rules,
-    debian/gstreamer-plugins-bad.install,
-    debian/build-deps.in:
-    + Ship the SPC plugin on i386 (Closes: #430045).
-  * debian/control.in:
-    + Fix typo in package description (Closes: #436664).
-  * debian/gstreamer-plugins-bad.install:
-    + Don't ship the libgstapp library as it still randomly changes
-      API and ABI until it is moved to gst-plugins-good at some point.
-    + Don't ship completely unneeded .a files for the plugins.
-  * debian/changelog:
-    + Urgency medium because of RC bugfixes.
-
- -- Sebastian Dröge <slomo@debian.org>  Sun, 19 Aug 2007 14:41:31 +0200
-
-gst-plugins-bad0.10 (0.10.4+cvs2007.04.30) unstable; urgency=low
-
-  * Get a CVS version which contains the relevant FAAD patches.
-  * Enable FAAD support. (Closes: #399438, #399042, #327163, #403093)
-
- -- Joe Wreschnig <piman@debian.org>  Mon, 30 Apr 2007 21:42:39 -0700
-
-gst-plugins-bad0.10 (0.10.4-2) unstable; urgency=low
-
-  * Disable spcdec for now, as it's i386-only. (Closes: #420444)
-
- -- Joe Wreschnig <piman@debian.org>  Sun, 22 Apr 2007 11:58:24 -0700
-
-gst-plugins-bad0.10 (0.10.4-1) unstable; urgency=low
-
-  * New upstream version. (Closes: #419904)
-  * Remove patch added in 0.10.3-3.1, as it was merged upstream.
-    Thanks to Loic Minier for the fast response and NMU. (Closes: #408213)
-  * debian/control: Explain why the modules are "bad". (Closes: #387970)
-  * Enable sdlvideosink/sdlaudiosink. (Closes: #404493)
-  * Enable jacksink. (Closes: #407679)
-  * Enable dvbsrc. (Closes: #418381)
-  * Enable spcdec.
-
- -- Joe Wreschnig <piman@debian.org>  Sat, 21 Apr 2007 17:11:17 -0700
-
-gst-plugins-bad0.10 (0.10.3-3.1) unstable; urgency=high
-
-  * Non-maintainer upload.
-  * SECURITY: buffer overflow.
-  * Fix potential buffer overflow in gst/modplug/libmodplug/sndfile.cpp;
-    CVE-2006-4192; GNOME #385788; from upstream CVS / next upstream release;
-    closes: #407956.
-
- -- Loic Minier <lool@dooz.org>  Mon, 22 Jan 2007 16:05:35 +0100
-
-gst-plugins-bad0.10 (0.10.3-3) unstable; urgency=low
-
-  * debian/rules:
-    * Enable v4l2src. (Closes: #379867)
-    * Force disabling of MusicBrainz.
-    * Allow FAAD=enable environment variable to override build options.
-  * README.Debian: Explain how to get FAAD support.
-
- -- Joe Wreschnig <piman@debian.org>  Mon, 31 Jul 2006 16:38:12 -0500
-
-gst-plugins-bad0.10 (0.10.3-2) unstable; urgency=low
-
-  * Build-Depend on zlib1g-dev. (Closes: #379752)
-
- -- Joe Wreschnig <piman@debian.org>  Tue, 25 Jul 2006 11:46:05 -0500
-
-gst-plugins-bad0.10 (0.10.3-1) unstable; urgency=low
-
-  * New upstream release.
-  * debian/rules: Disable experimental and libneon modules.
-  * debian/control: Build-Dep on liboil3-dev.
-  * debian/copyright: Add copyrights for new modules.
-
- -- Joe Wreschnig <piman@debian.org>  Thu, 22 Jun 2006 18:46:04 -0500
-
-gst-plugins-bad0.10 (0.10.1-1) unstable; urgency=low
-
-  * New upstream release.
-  * Build-Depend on python for building docs.
-
- -- Joe Wreschnig <piman@debian.org>  Tue, 21 Feb 2006 16:04:33 -0600
-
-gst-plugins-bad0.10 (0.10.0+cvs20060214-2) unstable; urgency=low
-
-  * Update debian/copyright.
-  * Explicitly disable more modules.
-  * Build and include documentation.
-
- -- Joe Wreschnig <piman@debian.org>  Wed, 15 Feb 2006 12:24:20 -0600
-
-gst-plugins-bad0.10 (0.10.0+cvs20060214-1) unstable; urgency=low
-
-  * Initial release.
-
- -- Joe Wreschnig <piman@debian.org>  Tue, 14 Feb 2006 13:22:33 -0600
-
+ -- Coral <coral-support@google.com>  Tue, 22 Oct 2019 15:42:34 -0500
diff --git a/debian/control b/debian/control
index 54e22b1..933a217 100644
--- a/debian/control
+++ b/debian/control
@@ -1,9 +1,7 @@
-Source: gst-plugins-bad1.0
+Source: mtk-gst-plugins-bad
 Section: libs
 Priority: optional
-Maintainer: Maintainers of GStreamer packages <gst-plugins-bad1.0@packages.debian.org>
-Uploaders: Sebastian Dröge <slomo@debian.org>,
-           Sjoerd Simons <sjoerd@debian.org>
+Maintainer: Coral <coral-support@google.com>
 Build-Depends: autoconf (>= 2.69),
                automake (>= 1.14),
                autopoint (>= 0.17),
@@ -16,7 +14,6 @@
                libasound2-dev (>= 0.9.1) [linux-any],
                libcdaudio-dev [linux-any],
                libdc1394-22-dev (>= 2.0.0) [linux-any],
-               libgudev-1.0-dev (>= 143) [linux-any],
                libusb-1.0-0-dev [linux-any],
                libbluetooth-dev (>= 5) [linux-any],
                libsbc-dev (>= 1.1) [linux-any],
@@ -25,7 +22,6 @@
                wayland-protocols (>= 1.4) [linux-any],
                libvulkan-dev [linux-any],
                libgstreamer1.0-dev (>= 1.14.4),
-               gstreamer1.0-plugins-base (>= 1.14.4),
                ladspa-sdk,
                libass-dev (>= 0.10.4),
                libbs2b-dev,
@@ -40,6 +36,8 @@
                libexif-dev (>= 0.6.16),
                libfaad-dev (>= 2.7),
                libfluidsynth-dev (>= 1.0),
+               libgl1-mesa-dev,
+               libgles2-mesa-dev,
                libglib2.0-dev (>= 2.40),
                libgme-dev,
                libgnutls28-dev (>= 2.11.3),
@@ -54,7 +52,6 @@
                libmms-dev (>= 0.4),
                libmodplug-dev,
                libmpcdec-dev,
-               libnice-dev (>= 0.1.14),
                libofa0-dev (>= 0.9.3),
                libopenal-dev (>= 1:1.14),
                libopenexr-dev,
@@ -68,7 +65,6 @@
                libsndfile1-dev (>= 1.0.16),
                libsoundtouch-dev (>= 1.5.0),
                libspandsp-dev,
-               libsrtp2-dev (>= 2.1),
                libssl-dev,
                libtool (>= 2.2.6),
                libvo-aacenc-dev,
@@ -85,9 +81,8 @@
                nettle-dev,
                pkg-config (>= 0.11.0)
 Standards-Version: 3.9.8
-Vcs-Git: https://salsa.debian.org/gstreamer-team/gst-plugins-bad1.0.git
-Vcs-Browser: https://salsa.debian.org/gstreamer-team/gst-plugins-bad1.0/
 Homepage: https://gstreamer.freedesktop.org
+
  
 Package: gstreamer1.0-plugins-bad
 Architecture: any
@@ -180,7 +175,7 @@
 Depends: ${misc:Depends},
          libgstreamer-plugins-bad1.0-0 (= ${binary:Version}),
          libgstreamer1.0-dev,
-         libgstreamer-plugins-base1.0-dev
+         libgstreamer-plugins-base1.0-dev,
 Description: GStreamer development files for libraries from the "bad" set
  GStreamer is a streaming media framework, based on graphs of filters
  which operate on media data.  Applications using this library can do
diff --git a/debian/control.in b/debian/control.in
deleted file mode 100644
index 3c1e541..0000000
--- a/debian/control.in
+++ /dev/null
@@ -1,225 +0,0 @@
-Source: gst-plugins-bad@GST_ABI@
-Section: libs
-Priority: extra
-Maintainer: Maintainers of GStreamer packages <gst-plugins-bad1.0@packages.debian.org>
-Uploaders: Sebastian Dröge <slomo@debian.org>,
-           Sjoerd Simons <sjoerd@debian.org>
-Build-Depends: BUILDDEPS
-Standards-Version: 3.9.3
-Vcs-Git: https://salsa.debian.org/gstreamer-team/gst-plugins-bad1.0.git
-Vcs-Browser: https://salsa.debian.org/gstreamer-team/gst-plugins-bad1.0/
-Homepage: https://gstreamer.freedesktop.org
-
-Package: @GST_PKGNAME@-plugins-bad-doc
-Architecture: all
-Multi-Arch: foreign
-Section: doc
-Depends: ${misc:Depends},
-         gstreamer@GST_ABI@-doc,
-         gstreamer@GST_ABI@-plugins-base-doc
-Description: GStreamer documentation for plugins from the "bad" set
- 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.
- .
- GStreamer Bad Plug-ins is a set of plug-ins that aren't up to par compared
- to the rest. They might be close to being good quality, but they're missing
- something - be it a good code review, some documentation, a set of tests, a
- real live maintainer, or some actual wide use.
- .
- This package contains the documentation for plugins from the "bad" set.
- 
-Package: @GST_PKGNAME@-plugins-bad
-Architecture: any
-Multi-Arch: same
-Pre-Depends: ${misc:Pre-Depends}
-Depends: ${misc:Depends},
-         ${shlibs:Depends},
-         gstreamer@GST_ABI@-plugins-base,
-         libgstreamer-plugins-bad@GST_DEB_ABI@ (= ${binary:Version}),
-Provides: @GST_PKGNAME@-plugins-bad-videoparsers,
-          @GST_PKGNAME@-plugins-bad-faad,
-          ${gstreamer:Provides}
-Suggests: frei0r-plugins
-Conflicts: @GST_PKGNAME@-plugins-bad-videoparsers (<< 1.11.91-1ubuntu1),
-           @GST_PKGNAME@-plugins-bad-faad (<< 1.11.91-1ubuntu1)
-Replaces: gstreamer1.0-plugins-base (<< 0.11.94), gstreamer1.0-plugins-good (<< 1.1.2),
-          @GST_PKGNAME@-plugins-bad-videoparsers (<< 1.11.91-1ubuntu1),
-          @GST_PKGNAME@-plugins-bad-faad (<< 1.11.91-1ubuntu1)
-Breaks: gstreamer1.0-plugins-base (<< 0.11.94), gstreamer1.0-plugins-good (<< 1.1.2)
-XB-GStreamer-Version: ${gstreamer:Version}
-XB-GStreamer-Elements: ${gstreamer:Elements}
-XB-GStreamer-URI-Sources: ${gstreamer:URISources}
-XB-GStreamer-URI-Sinks: ${gstreamer:URISinks}
-XB-GStreamer-Encoders: ${gstreamer:Encoders}
-XB-GStreamer-Decoders: ${gstreamer:Decoders}
-Description: GStreamer plugins from the "bad" set
- 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.
- .
- GStreamer Bad Plug-ins is a set of plug-ins that aren't up to par compared
- to the rest. They might be close to being good quality, but they're missing
- something - be it a good code review, some documentation, a set of tests, a
- real live maintainer, or some actual wide use.
-
-Package: @GST_PKGNAME@-opencv
-Architecture: any
-Multi-Arch: same
-Depends: ${misc:Depends},
-         ${shlibs:Depends},
-         gstreamer@GST_ABI@-plugins-base,
-         libgstreamer-plugins-bad@GST_DEB_ABI@ (= ${binary:Version}),
-         libgstreamer-opencv@GST_DEB_ABI@ (= ${binary:Version}),
-Conflicts: @GST_PKGNAME@-plugins-bad (<< 1.13.1)
-Replaces: @GST_PKGNAME@-plugins-bad (<< 1.13.1)
-XB-GStreamer-Version: ${gstreamer:Version}
-XB-GStreamer-Elements: ${gstreamer:Elements}
-XB-GStreamer-URI-Sources: ${gstreamer:URISources}
-XB-GStreamer-URI-Sinks: ${gstreamer:URISinks}
-XB-GStreamer-Encoders: ${gstreamer:Encoders}
-XB-GStreamer-Decoders: ${gstreamer:Decoders}
-Description: GStreamer OpenCV plugins
- 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.
- .
- GStreamer Bad Plug-ins is a set of plug-ins that aren't up to par compared
- to the rest. They might be close to being good quality, but they're missing
- something - be it a good code review, some documentation, a set of tests, a
- real live maintainer, or some actual wide use.
- .
- This package contains the OpenCV plugins.
-
-Package: @GST_PKGNAME@-plugins-bad-dbg
-Architecture: any
-Multi-Arch: same
-Section: debug
-Priority: extra
-Depends: @GST_PKGNAME@-plugins-bad (= ${binary:Version}),
-         ${misc:Depends}
-Replaces: gstreamer1.0-plugins-base-dbg (<< 0.11.94), gstreamer1.0-plugins-good (<< 1.1.2)
-Breaks: gstreamer1.0-plugins-base-dbg (<< 0.11.94), gstreamer1.0-plugins-good (<< 1.1.2)
-Description: GStreamer plugins from the "bad" set (debug symbols)
- 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: libgstreamer-plugins-bad@GST_DEB_ABI@
-Architecture: any
-Section: libs
-Priority: extra
-Multi-Arch: same
-Pre-Depends: ${misc:Pre-Depends}
-Depends: ${misc:Depends},
-         ${shlibs:Depends},
-Description: GStreamer libraries from the "bad" set
- 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.
- .
- GStreamer Bad Plug-ins is a set of plug-ins that aren't up to par compared
- to the rest. They might be close to being good quality, but they're missing
- something - be it a good code review, some documentation, a set of tests, a
- real live maintainer, or some actual wide use.
- .
- This package contains shared GStreamer libraries from the "bad" set. The API
- is not guaranteed to be stable.
-
-Package: libgstreamer-opencv@GST_DEB_ABI@
-Architecture: any
-Section: libs
-Priority: extra
-Multi-Arch: same
-Pre-Depends: ${misc:Pre-Depends}
-Depends: ${misc:Depends},
-         ${shlibs:Depends},
-Conflicts: libgstreamer-plugins-bad@GST_DEB_ABI@ (<< 1.13.1)
-Replaces: libgstreamer-plugins-bad@GST_DEB_ABI@ (<< 1.13.1)
-Description: GStreamer OpenCV libraries
- 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.
- .
- GStreamer Bad Plug-ins is a set of plug-ins that aren't up to par compared
- to the rest. They might be close to being good quality, but they're missing
- something - be it a good code review, some documentation, a set of tests, a
- real live maintainer, or some actual wide use.
- .
- This package contains shared GStreamer libraries for OpenCV.
-
-Package: libgstreamer-plugins-bad@GST_ABI@-dev
-Architecture: any
-Multi-Arch: same
-Section: libdevel
-Priority: extra
-Depends: ${misc:Depends},
-         libgstreamer-plugins-bad@GST_DEB_ABI@ (= ${binary:Version}),
-         libgstreamer-opencv@GST_DEB_ABI@ (= ${binary:Version}),
-         libgstreamer@GST_ABI@-dev,
-         libgstreamer-plugins-base@GST_ABI@-dev,
-         gir1.2-gst-plugins-bad-@GST_ABI@ (= ${binary:Version}),
-         libopencv-dev (>= 2.3.0)
-Description: GStreamer development files for libraries from the "bad" set
- 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.
- .
- GStreamer Bad Plug-ins is a set of plug-ins that aren't up to par compared
- to the rest. They might be close to being good quality, but they're missing
- something - be it a good code review, some documentation, a set of tests, a
- real live maintainer, or some actual wide use.
- .
- This package contains development files for GStreamer libraries from the
- "bad" set. The API is not guaranteed to be stable.
-
-Package: gir1.2-gst-plugins-bad-@GST_ABI@
-Section: introspection
-Architecture: any
-Multi-Arch: same
-Depends: ${gir:Depends},
-         ${shlibs:Depends},
-         ${misc:Depends}
-Description: GObject introspection data for the GStreamer libraries from the "bad" set
- 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.
- .
- GStreamer Bad Plug-ins is a set of plug-ins that aren't up to par compared
- to the rest. They might be close to being good quality, but they're missing
- something - be it a good code review, some documentation, a set of tests, a
- real live maintainer, or some actual wide use.
- .
- This package contains introspection data for the GStreamer libraries from
- the "bad" set. It can be used by packages using the GIRepository format to
- generate dynamic bindings.
-
diff --git a/debian/gstreamer1.0-plugins-bad.lintian-overrides b/debian/gstreamer1.0-plugins-bad.lintian-overrides
index 039022e..28af17e 100644
--- a/debian/gstreamer1.0-plugins-bad.lintian-overrides
+++ b/debian/gstreamer1.0-plugins-bad.lintian-overrides
@@ -1 +1,2 @@
 gstreamer1.0-plugins-bad: library-not-linked-against-libc *
+
diff --git a/debian/patches/0001-Workaround-concurrency-issue.patch b/debian/patches/0001-Workaround-concurrency-issue.patch
deleted file mode 100644
index c88c14f..0000000
--- a/debian/patches/0001-Workaround-concurrency-issue.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 1a4da293d0d22015240c81e5b056ba322c1529ea Mon Sep 17 00:00:00 2001
-From: Alexandre Bailon <abailon@baylibre.com>
-Date: Tue, 22 Sep 2020 15:33:19 +0200
-Subject: [PATCH] Workaround concurrency issue
-
-There is a concurrency issue between rsvg plugin and it parent's
-class: videofilter.
-Because of this issue, the plugin crash because it tries to write
-a read only buffer.
-
-Until we find a proper way to prevent the concurrency, use this
-workaround to avoid the segfault.
-
-Signed-off-by: Alexandre Bailon <abailon@baylibre.com>
-Change-Id: I14f1c2a857fb949f53220f583615f6faa8e9ca26
----
- ext/rsvg/gstrsvgoverlay.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/ext/rsvg/gstrsvgoverlay.c b/ext/rsvg/gstrsvgoverlay.c
-index 5f661b9a..48384573 100644
---- a/ext/rsvg/gstrsvgoverlay.c
-+++ b/ext/rsvg/gstrsvgoverlay.c
-@@ -137,7 +137,7 @@ gst_rsvg_overlay_set_svg_data (GstRsvgOverlay * overlay, const gchar * data,
-   if (overlay->handle) {
-     g_object_unref (overlay->handle);
-     overlay->handle = NULL;
--    gst_base_transform_set_passthrough (btrans, TRUE);
-+//    gst_base_transform_set_passthrough (btrans, TRUE);
-   }
- 
-   /* data may be NULL */
--- 
-2.25.1
-
diff --git a/debian/patches/0001-add-judge-for-mpeg4-codec-in-mpeg-container.patch b/debian/patches/0001-add-judge-for-mpeg4-codec-in-mpeg-container.patch
deleted file mode 100644
index ab51aa8..0000000
--- a/debian/patches/0001-add-judge-for-mpeg4-codec-in-mpeg-container.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From 11cf797e31a671e0ef4a5ca7c1a0205c15ea9456 Mon Sep 17 00:00:00 2001
-From: Qian Hu <Qian.Hu@mediatek.com>
-Date: Sun, 1 Dec 2019 11:06:20 +0800
-Subject: [PATCH] add judge for mpeg4 codec in mpeg container
-
-Signed-off-by: Qian Hu <Qian.Hu@mediatek.com>
----
- gst/mpegdemux/gstmpegdemux.c | 24 +++++++++++++++++++++---
- 1 file changed, 21 insertions(+), 3 deletions(-)
-
-diff --git a/gst/mpegdemux/gstmpegdemux.c b/gst/mpegdemux/gstmpegdemux.c
-index 4454149..0c684b5 100644
---- a/gst/mpegdemux/gstmpegdemux.c
-+++ b/gst/mpegdemux/gstmpegdemux.c
-@@ -2255,6 +2255,23 @@ gst_ps_demux_data_cb (GstPESFilter * filter, gboolean first,
-       }
-       if (stream_type == -1)
-         goto unknown_stream_type;
-+    } else if (stream_type == ST_GST_VIDEO_MPEG1_OR_2) {
-+        if (datalen >= 4) {
-+          if (!memcmp("\x00\x00\x01\xB0", map.data, 4)) {
-+            stream_type = ST_VIDEO_MPEG4;
-+          }
-+        }
-+        if (datalen >= 5) {
-+          if (!memcmp("\x00\x00\x01\x00\x00", map.data, 5)) {
-+            stream_type = ST_VIDEO_MPEG4;
-+          }
-+        }
-+    } else if (stream_type == ST_AUDIO_MPEG1) {
-+        if (datalen >= 4) {
-+          if (!memcmp("\xFF\xF1\x50\x80", map.data, 4)) {
-+            stream_type = ST_AUDIO_AAC_ADTS;
-+          }
-+        }
-     }
-     if (filter->pts != -1) {
-       demux->next_pts = filter->pts + demux->scr_adjust;
-@@ -2858,9 +2875,10 @@ gst_ps_demux_loop (GstPad * pad)
-     offset += size;
-     gst_segment_set_position (&demux->sink_segment, GST_FORMAT_BYTES, offset);
-     /* check EOS condition */
--    if ((demux->sink_segment.position >= demux->sink_segment.stop) ||
--        (demux->src_segment.stop != (guint64) - 1 &&
--            demux->src_segment.position >= demux->src_segment.stop)) {
-+    if ((demux->src_segment.flags & GST_SEEK_FLAG_SEGMENT) &&
-+        ((demux->sink_segment.position >= demux->sink_segment.stop) ||
-+            (demux->src_segment.stop != (guint64) - 1 &&
-+                demux->src_segment.position >= demux->src_segment.stop))) {
-       GST_DEBUG_OBJECT (demux,
-           "forward mode using segment reached end of " "segment pos %"
-           GST_TIME_FORMAT " stop %" GST_TIME_FORMAT " pos in bytes %"
--- 
-2.6.4
-
diff --git a/debian/patches/0001-mtk-upgrade-gst-bad-to-1-14-4.patch b/debian/patches/0001-mtk-upgrade-gst-bad-to-1-14-4.patch
deleted file mode 100644
index 33c65bd..0000000
--- a/debian/patches/0001-mtk-upgrade-gst-bad-to-1-14-4.patch
+++ /dev/null
@@ -1,656 +0,0 @@
-From 41476a48b06f2b2285659844e88f3e7ffa71b1ec Mon Sep 17 00:00:00 2001
-From: Yuan Fang <yuan.fang@mediatek.com>
-Date: Wed, 14 Aug 2019 16:18:17 +0800
-Subject: [PATCH] upgrade-gst-bad-to-1-14-4
-
----
- ext/resindvd/gstmpegdemux.c           |  17 ++++
- gst-libs/gst/wayland/Makefile.am      |   3 +
- gst-libs/gst/wayland/Makefile.in      |  58 ++++++++---
- gst/adpcmdec/adpcmdec.c               |   4 +
- gst/ivfparse/gstivfparse.c            |   3 +-
- gst/jpegformat/gstjpegformat.c        |   2 +-
- gst/jpegformat/gstjpegparse.c         |   2 +-
- gst/mpegtsdemux/tsdemux.c             | 178 ++++++++++++++++++++++++++++++++++
- gst/videoparsers/gsth264parse.c       |  26 +++--
- gst/videoparsers/gsth264parse.h       |   1 +
- gst/videoparsers/gsth265parse.c       |   8 +-
- gst/videoparsers/gsth265parse.h       |   1 +
- gst/videoparsers/gstmpeg4videoparse.c |   9 +-
- gst/videoparsers/gstmpeg4videoparse.h |   1 +
- gst/videoparsers/gstmpegvideoparse.c  |  91 ++++++++++++++---
- 15 files changed, 361 insertions(+), 43 deletions(-)
-
-diff --git a/ext/resindvd/gstmpegdemux.c b/ext/resindvd/gstmpegdemux.c
-index a35a6a4..562f3bb 100644
---- a/ext/resindvd/gstmpegdemux.c
-+++ b/ext/resindvd/gstmpegdemux.c
-@@ -1932,6 +1932,23 @@ gst_flups_demux_data_cb (GstPESFilter * filter, gboolean first,
-       }
-       if (stream_type == -1)
-         goto unknown_stream_type;
-+	  } else if (stream_type == ST_GST_VIDEO_MPEG1_OR_2) {
-+        if (datalen >= 4) {
-+          if (!memcmp("\x00\x00\x01\xB0", map.data, 4)) {
-+            stream_type = ST_VIDEO_MPEG4;
-+          }
-+        }
-+        if (datalen >= 5) {
-+          if (!memcmp("\x00\x00\x01\x00\x00", map.data, 5)) {
-+            stream_type = ST_VIDEO_MPEG4;
-+          }
-+        }
-+    } else if (stream_type == ST_AUDIO_MPEG1) {
-+        if (datalen >= 4) {
-+          if (!memcmp("\xFF\xF1\x50\x80", map.data, 4)) {
-+            stream_type = ST_AUDIO_AAC_ADTS;
-+          }
-+        }
-     }
-     if (filter->pts != -1) {
-       demux->next_pts = filter->pts + demux->scr_adjust;
-diff --git a/gst-libs/gst/wayland/Makefile.am b/gst-libs/gst/wayland/Makefile.am
-index 743a489..d2e4f6e 100644
---- a/gst-libs/gst/wayland/Makefile.am
-+++ b/gst-libs/gst/wayland/Makefile.am
-@@ -22,6 +22,9 @@ libgstwayland_@GST_API_VERSION@_la_LDFLAGS = \
- 	$(GST_ALL_LDFLAGS) \
- 	$(GST_LT_LDFLAGS)
- 
-+libgstwayland_@GST_API_VERSION@include_HEADERS = \
-+	wayland.h
-+
- noinst_HEADERS = \
- 	wayland.h
- 
-diff --git a/gst/adpcmdec/adpcmdec.c b/gst/adpcmdec/adpcmdec.c
-index 3cfa820..4412d85 100644
---- a/gst/adpcmdec/adpcmdec.c
-+++ b/gst/adpcmdec/adpcmdec.c
-@@ -424,6 +424,10 @@ adpcmdec_handle_frame (GstAudioDecoder * bdec, GstBuffer * buffer)
-         ("frame decode failed"), ret);
-   }
- 
-+  if (bdec->ts_none) {
-+	bdec->sub_ts_none = FALSE;
-+  }
-+
-   if (ret == GST_FLOW_OK)
-     ret = gst_audio_decoder_finish_frame (bdec, outbuf, 1);
- 
-diff --git a/gst/ivfparse/gstivfparse.c b/gst/ivfparse/gstivfparse.c
-index e0e8401..df6a915 100644
---- a/gst/ivfparse/gstivfparse.c
-+++ b/gst/ivfparse/gstivfparse.c
-@@ -331,7 +331,8 @@ gst_ivf_parse_handle_frame_data (GstIvfParse * ivf, GstBaseParseFrame * frame,
-     if (gst_buffer_map (frame->out_buffer, &map, GST_MAP_READ)) {
-       guint32 width, height;
- 
--      if (ivf->fourcc == GST_MAKE_FOURCC ('V', 'P', '8', '0')) {
-+      if ((ivf->fourcc == GST_MAKE_FOURCC ('V', 'P', '8', '0')) ||
-+        (ivf->fourcc == GST_MAKE_FOURCC ('V', 'P', '9', '0'))) {
-         guint32 frame_tag;
-         frame_tag = GST_READ_UINT24_LE (map.data);
-         if (!(frame_tag & 0x01) && map.size >= 10) {    /* key frame */
-diff --git a/gst/jpegformat/gstjpegformat.c b/gst/jpegformat/gstjpegformat.c
-index b410466..1faf1ce 100644
---- a/gst/jpegformat/gstjpegformat.c
-+++ b/gst/jpegformat/gstjpegformat.c
-@@ -30,7 +30,7 @@
- static gboolean
- plugin_init (GstPlugin * plugin)
- {
--  if (!gst_element_register (plugin, "jpegparse", GST_RANK_NONE,
-+  if (!gst_element_register (plugin, "jpegparse", GST_RANK_PRIMARY,
-           GST_TYPE_JPEG_PARSE))
-     return FALSE;
-   if (!gst_element_register (plugin, "jifmux", GST_RANK_SECONDARY,
-diff --git a/gst/jpegformat/gstjpegparse.c b/gst/jpegformat/gstjpegparse.c
-index 0bfdc80..b9f1853 100644
---- a/gst/jpegformat/gstjpegparse.c
-+++ b/gst/jpegformat/gstjpegparse.c
-@@ -151,7 +151,7 @@ gst_jpeg_parse_class_init (GstJpegParseClass * klass)
- 
-   gst_element_class_set_static_metadata (gstelement_class,
-       "JPEG stream parser",
--      "Video/Parser",
-+      "Video/Parser/Codec",
-       "Parse JPEG images into single-frame buffers",
-       "Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>");
- 
-diff --git a/gst/mpegtsdemux/tsdemux.c b/gst/mpegtsdemux/tsdemux.c
-index e5c78e7..49a426f 100644
---- a/gst/mpegtsdemux/tsdemux.c
-+++ b/gst/mpegtsdemux/tsdemux.c
-@@ -39,6 +39,9 @@
- #include <gst/pbutils/pbutils.h>
- #include <gst/base/base.h>
- #include <gst/audio/audio.h>
-+#include <gst/riff/riff-read.h>
-+#include <gst/riff/riff-ids.h>
-+#include <gst/riff/riff-media.h>
- 
- #include "mpegtsbase.h"
- #include "tsdemux.h"
-@@ -1067,6 +1070,168 @@ gst_ts_demux_create_tags (TSDemuxStream * stream)
-   }
- }
- 
-+static GstFlowReturn
-+gst_ts_demux_scan_vc1_wh (MpegTSBase * base, guint * w, guint * h)
-+{
-+  const guint cacheSize = 64 * 1024;
-+  const guint cacheCount = 32;
-+  const guint gapCount = 4 + 2 + 3;
-+  guint cacheStart = 0;
-+  GstFlowReturn ret = GST_FLOW_ERROR;
-+  gboolean done = FALSE;
-+  GstBuffer *buffer = NULL;
-+  guint i = 0;
-+  guint offset = 0;
-+  GstMapInfo map;
-+  guint8 *data = NULL;
-+  size_t size = 0;
-+
-+  if (G_UNLIKELY (base == NULL)) {
-+    GST_DEBUG ("base is NULL");
-+    return ret;
-+  }
-+
-+  if (w == NULL || h == NULL) {
-+    GST_DEBUG ("w or h is NULL");
-+    return ret;
-+  }
-+
-+  GST_DEBUG ("Scanning for width and height");
-+
-+  for (i = 0; (i < cacheCount) && !done; i++) {
-+    if (i == 0) {
-+      cacheStart = 0;
-+    } else {
-+      cacheStart = i * (cacheSize - gapCount);
-+    }
-+
-+    GST_DEBUG ("Grabbing %d => %d", cacheStart, cacheStart + cacheSize);
-+    ret = gst_pad_pull_range (base->sinkpad, cacheStart, cacheSize, &buffer);
-+    if (G_UNLIKELY (ret == GST_FLOW_EOS)) {
-+      break;
-+    }
-+    if (G_UNLIKELY (ret != GST_FLOW_OK)) {
-+      break;
-+    }
-+
-+    gst_buffer_map (buffer, &map, GST_MAP_READ);
-+
-+    data=map.data;
-+    size=map.size;
-+
-+    for (offset = 0; offset <= (size - gapCount); offset++) {
-+      if (memcmp("\x00\x00\x01\x0F", data + offset, 4)) {
-+        offset++;
-+      } else {
-+        offset +=4;
-+        offset +=2;
-+
-+        *w = (((data[offset] << 4) + (data[offset+1] >> 4)) << 1) + 2;
-+        *h = ((((data[offset+1] & 0x0F) << 8) + data[offset+2]) << 1) + 2;
-+        done = TRUE;
-+        ret = GST_FLOW_OK;
-+        break;
-+      }
-+    }
-+
-+    gst_buffer_unmap (buffer, &map);
-+    gst_buffer_unref(buffer);
-+    buffer = NULL;
-+  }
-+
-+  return ret;
-+}
-+
-+static GstFlowReturn
-+gst_ts_demux_separate_vc1_header (GstTSDemux * demux, TSDemuxStream * stream, GstBuffer ** buffer)
-+{
-+  static gboolean headerPushed = FALSE;
-+  GstFlowReturn res = GST_FLOW_OK;
-+
-+  if (memcmp("\x00\x00\x01\x0F", stream->data, 4)) {
-+    if (!headerPushed) {
-+      gst_buffer_unref (*buffer);
-+      GST_DEBUG ("This frame should be dropped!");
-+      res = GST_FLOW_ERROR;
-+      return res;
-+    }
-+  } else {
-+    GstBuffer *bufLeft = NULL;
-+    const guint8 *data = stream->data;
-+    size_t offset = 0;
-+
-+    while (offset + 3 < stream->current_size) {
-+      if (memcmp(data+offset, "\x00\x00\x01", 3)) {
-+        offset++;
-+        continue;
-+      } else {
-+        guint currentStartCode = data[offset+3];
-+
-+        if (currentStartCode == 0x0F || currentStartCode == 0x0E) {
-+          offset++;
-+          continue;
-+        } else {
-+          //found data
-+          break;
-+        }
-+      }
-+    }
-+
-+    if (!headerPushed) {
-+      GstCaps *caps = NULL;
-+      GstStructure *str = NULL;
-+      GstBuffer *bufVids = NULL;
-+      GstBuffer *bufSeq = NULL;
-+      GstBuffer *bufMerged = NULL;
-+      guint width = 0;
-+      guint height = 0;
-+      gst_riff_strf_vids *pVids;
-+      const guint sizeVids = sizeof (gst_riff_strf_vids);
-+
-+      pVids = g_new (gst_riff_strf_vids, 1);
-+      memset (pVids, 0, sizeVids);
-+
-+      caps = gst_pad_get_current_caps (stream->pad);
-+      if (caps) {
-+        str = gst_caps_get_structure (caps, 0);
-+
-+        gst_structure_get_int (str, "width", &width);
-+        gst_structure_get_int (str, "height", &height);
-+      }
-+
-+      pVids->size = sizeVids + offset;
-+      pVids->width = width;
-+      pVids->height = height;
-+
-+      pVids->size = GUINT32_FROM_LE (pVids->size);
-+      pVids->width = GUINT32_FROM_LE (pVids->width);
-+      pVids->height = GUINT32_FROM_LE (pVids->height);
-+      pVids->compression = GST_MAKE_FOURCC ('W', 'V', 'C', '1');
-+
-+      bufVids = gst_buffer_new_wrapped (g_memdup ((guint8 *) pVids,
-+                sizeVids), sizeVids);
-+      bufSeq = gst_buffer_new_wrapped (g_memdup ((guint8 *) data,
-+                offset), offset);
-+      bufMerged = gst_buffer_append (bufVids, bufSeq);
-+
-+      gst_pad_push (stream->pad, bufMerged);
-+      headerPushed = TRUE;
-+
-+      if (pVids) {
-+        g_free (pVids);
-+      }
-+    }
-+
-+    bufLeft = gst_buffer_copy_region (*buffer, GST_BUFFER_COPY_ALL, offset, stream->current_size-offset);
-+    stream->current_size -= offset;
-+    gst_buffer_unref (*buffer);
-+    *buffer = bufLeft;
-+    res = GST_FLOW_OK;
-+  }
-+
-+  return res;
-+}
-+
- static GstPad *
- create_pad_for_stream (MpegTSBase * base, MpegTSBaseStream * bstream,
-     MpegTSBaseProgram * program)
-@@ -1081,6 +1246,8 @@ create_pad_for_stream (MpegTSBase * base, MpegTSBaseStream * bstream,
-   gboolean sparse = FALSE;
-   gboolean is_audio = FALSE, is_video = FALSE, is_subpicture = FALSE,
-       is_private = FALSE;
-+  guint width = 0;
-+  guint height = 0;
- 
-   gst_ts_demux_create_tags (stream);
- 
-@@ -1565,6 +1732,10 @@ create_pad_for_stream (MpegTSBase * base, MpegTSBaseStream * bstream,
-       is_video = TRUE;
-       caps = gst_caps_new_simple ("video/x-wmv",
-           "wmvversion", G_TYPE_INT, 3, "format", G_TYPE_STRING, "WVC1", NULL);
-+
-+	  gst_ts_demux_scan_vc1_wh (base, &width, &height);
-+	  gst_caps_set_simple (caps, "width", G_TYPE_INT, width, NULL);
-+	  gst_caps_set_simple (caps, "height", G_TYPE_INT, height, NULL);
- 
-       break;
-     }
-@@ -2945,6 +3116,13 @@ gst_ts_demux_push_pending_data (GstTSDemux * demux, TSDemuxStream * stream,
-     }
-   }
- 
-+  if (bs->stream_type == ST_PRIVATE_EA) {
-+    if (G_UNLIKELY (gst_ts_demux_separate_vc1_header (demux, stream, &buffer)
-+        != GST_FLOW_OK)) {
-+      goto beach;
-+    }
-+  }
-+
-   if (G_UNLIKELY (stream->need_newsegment))
-     calculate_and_push_newsegment (demux, stream, target_program);
- 
-diff --git a/gst/videoparsers/gsth264parse.c b/gst/videoparsers/gsth264parse.c
-index 7751ea2..ceb2f58 100644
---- a/gst/videoparsers/gsth264parse.c
-+++ b/gst/videoparsers/gsth264parse.c
-@@ -167,6 +167,7 @@ gst_h264_parse_init (GstH264Parse * h264parse)
- 
-   h264parse->aud_needed = TRUE;
-   h264parse->aud_insert = TRUE;
-+  h264parse->caps_flag = FALSE;
- }
- 
- 
-@@ -1835,13 +1836,21 @@ gst_h264_parse_update_src_caps (GstH264Parse * h264parse, GstCaps * caps)
-       caps = gst_caps_copy (sink_caps);
- 
-       /* sps should give this but upstream overrides */
--      if (s && gst_structure_has_field (s, "width"))
--        gst_structure_get_int (s, "width", &width);
-+      if (s && gst_structure_has_field (s, "width")) {
-+         gst_structure_get_int (s, "width", &width);
-+		 if (width != h264parse->width) {
-+          width = h264parse->width;
-+        }
-+      }
-       else
-         width = h264parse->width;
- 
--      if (s && gst_structure_has_field (s, "height"))
--        gst_structure_get_int (s, "height", &height);
-+      if (s && gst_structure_has_field (s, "height")) {
-+          gst_structure_get_int (s, "height", &height);
-+		  if (height != h264parse->height) {
-+          height = h264parse->height;
-+        }
-+      }
-       else
-         height = h264parse->height;
- 
-@@ -1988,7 +1997,10 @@ gst_h264_parse_update_src_caps (GstH264Parse * h264parse, GstCaps * caps)
-         gst_buffer_replace (&h264parse->codec_data, NULL);
-       }
- 
--      gst_pad_set_caps (GST_BASE_PARSE_SRC_PAD (h264parse), caps);
-+      if (sps && !h264parse->caps_flag) {
-+        h264parse->caps_flag = TRUE;
-+        gst_pad_set_caps (GST_BASE_PARSE_SRC_PAD (h264parse), caps);
-+      }
-     }
- 
-     if (src_caps)
-@@ -2581,11 +2593,11 @@ gst_h264_parse_set_caps (GstBaseParse * parse, GstCaps * caps)
-   if (format == GST_H264_PARSE_FORMAT_NONE) {
-     /* codec_data implies avc */
-     if (codec_data_value != NULL) {
--      GST_ERROR ("video/x-h264 caps with codec_data but no stream-format=avc");
-+      GST_LOG ("video/x-h264 caps with codec_data but no stream-format=avc");
-       format = GST_H264_PARSE_FORMAT_AVC;
-     } else {
-       /* otherwise assume bytestream input */
--      GST_ERROR ("video/x-h264 caps without codec_data or stream-format");
-+      GST_LOG ("video/x-h264 caps without codec_data or stream-format");
-       format = GST_H264_PARSE_FORMAT_BYTE;
-     }
-   }
-diff --git a/gst/videoparsers/gsth264parse.h b/gst/videoparsers/gsth264parse.h
-index 137c2cd..997c0e3 100644
---- a/gst/videoparsers/gsth264parse.h
-+++ b/gst/videoparsers/gsth264parse.h
-@@ -132,6 +132,7 @@ struct _GstH264Parse
-   /* For insertion of AU Delimiter */
-   gboolean aud_needed;
-   gboolean aud_insert;
-+  gboolean caps_flag;
- };
- 
- struct _GstH264ParseClass
-diff --git a/gst/videoparsers/gsth265parse.c b/gst/videoparsers/gsth265parse.c
-index 775cd24..13c93ea 100644
---- a/gst/videoparsers/gsth265parse.c
-+++ b/gst/videoparsers/gsth265parse.c
-@@ -154,6 +154,7 @@ static void
- gst_h265_parse_init (GstH265Parse * h265parse)
- {
-   h265parse->frame_out = gst_adapter_new ();
-+  h265parse->has_caps_flag = FALSE;
-   gst_base_parse_set_pts_interpolation (GST_BASE_PARSE (h265parse), FALSE);
-   GST_PAD_SET_ACCEPT_INTERSECT (GST_BASE_PARSE_SINK_PAD (h265parse));
-   GST_PAD_SET_ACCEPT_TEMPLATE (GST_BASE_PARSE_SINK_PAD (h265parse));
-@@ -1761,7 +1762,12 @@ gst_h265_parse_update_src_caps (GstH265Parse * h265parse, GstCaps * caps)
-         gst_buffer_replace (&h265parse->codec_data, NULL);
-       }
- 
--      gst_pad_set_caps (GST_BASE_PARSE_SRC_PAD (h265parse), caps);
-+      if (h265parse->has_caps_flag == FALSE) {
-+        GST_INFO_OBJECT (h265parse, "h265parse->has_caps_flag=FALSE");
-+        gst_pad_set_caps (GST_BASE_PARSE_SRC_PAD (h265parse), caps);
-+        h265parse->has_caps_flag = TRUE;
-+      }
-+
-     }
- 
-     if (src_caps)
-diff --git a/gst/videoparsers/gsth265parse.h b/gst/videoparsers/gsth265parse.h
-index eb82f6f..0d6be87 100644
---- a/gst/videoparsers/gsth265parse.h
-+++ b/gst/videoparsers/gsth265parse.h
-@@ -86,6 +86,7 @@ struct _GstH265Parse
-   /* frame parsing */
-   gint idr_pos, sei_pos;
-   gboolean update_caps;
-+  gboolean has_caps_flag;
-   GstAdapter *frame_out;
-   gboolean keyframe;
-   gboolean header;
-diff --git a/gst/videoparsers/gstmpeg4videoparse.c b/gst/videoparsers/gstmpeg4videoparse.c
-index 38e1f45..990f0db 100644
---- a/gst/videoparsers/gstmpeg4videoparse.c
-+++ b/gst/videoparsers/gstmpeg4videoparse.c
-@@ -210,6 +210,7 @@ gst_mpeg4vparse_reset (GstMpeg4VParse * mp4vparse)
-   mp4vparse->pending_key_unit_ts = GST_CLOCK_TIME_NONE;
-   mp4vparse->force_key_unit_event = NULL;
-   mp4vparse->discont = FALSE;
-+  mp4vparse->vop_flag = FALSE;
- 
-   gst_buffer_replace (&mp4vparse->config, NULL);
-   memset (&mp4vparse->vol, 0, sizeof (mp4vparse->vol));
-@@ -338,6 +339,7 @@ gst_mpeg4vparse_process_sc (GstMpeg4VParse * mp4vparse, GstMpeg4Packet * packet,
-       if (packet->type == GST_MPEG4_VIDEO_OBJ_PLANE) {
-         GST_LOG_OBJECT (mp4vparse, "startcode is VOP");
-         mp4vparse->vop_offset = packet->offset;
-+		mp4vparse->vop_flag = TRUE;
-       } else if (packet->type == GST_MPEG4_GROUP_OF_VOP) {
-         GST_LOG_OBJECT (mp4vparse, "startcode is GOP");
-       } else {
-@@ -527,6 +529,7 @@ out:
-       GST_BUFFER_FLAG_SET (frame->buffer, GST_BUFFER_FLAG_DISCONT);
-       mp4vparse->discont = FALSE;
-     }
-+	mp4vparse->vop_flag = FALSE;
-     return gst_base_parse_finish_frame (parse, frame, framesize);
-   }
- 
-@@ -540,8 +543,8 @@ gst_mpeg4vparse_update_src_caps (GstMpeg4VParse * mp4vparse)
-   GstStructure *s = NULL;
- 
-   /* only update if no src caps yet or explicitly triggered */
--  if (G_LIKELY (gst_pad_has_current_caps (GST_BASE_PARSE_SRC_PAD (mp4vparse)) &&
--          !mp4vparse->update_caps))
-+  if (G_LIKELY (gst_pad_has_current_caps (GST_BASE_PARSE_SRC_PAD (mp4vparse)) ||
-+    !mp4vparse->update_caps || (mp4vparse->vop_flag == FALSE)))
-     return;
- 
-   GST_LOG_OBJECT (mp4vparse, "Updating caps");
-@@ -641,7 +644,7 @@ gst_mpeg4vparse_parse_frame (GstBaseParse * parse, GstBaseParseFrame * frame)
-   else
-     GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_DELTA_UNIT);
- 
--  if (G_UNLIKELY (mp4vparse->drop && !mp4vparse->config)) {
-+  if (G_UNLIKELY (mp4vparse->drop && !mp4vparse->config && (mp4vparse->vop_flag == FALSE))) {
-     GST_LOG_OBJECT (mp4vparse, "dropping frame as no config yet");
-     return GST_BASE_PARSE_FLOW_DROPPED;
-   } else
-diff --git a/gst/videoparsers/gstmpeg4videoparse.h b/gst/videoparsers/gstmpeg4videoparse.h
-index 149289a..73e4407 100644
---- a/gst/videoparsers/gstmpeg4videoparse.h
-+++ b/gst/videoparsers/gstmpeg4videoparse.h
-@@ -54,6 +54,7 @@ struct _GstMpeg4VParse {
-   gboolean config_found;
-   gboolean update_caps;
-   gboolean sent_codec_tag;
-+  gboolean vop_flag;
- 
-   GstMpeg4VisualObject vo;
-   gint vo_offset;
-diff --git a/gst/videoparsers/gstmpegvideoparse.c b/gst/videoparsers/gstmpegvideoparse.c
-index 6896339..6547517 100644
---- a/gst/videoparsers/gstmpegvideoparse.c
-+++ b/gst/videoparsers/gstmpegvideoparse.c
-@@ -561,10 +561,10 @@ gst_mpegv_parse_process_sc (GstMpegvParse * mpvparse,
-         ret = FALSE;
-       } else {
-         /* TSN is stored in first 10 bits */
--        int tsn = info->data[off] << 2 | (info->data[off + 1] & 0xC0) >> 6;
-+        //int tsn = info->data[off] << 2 | (info->data[off + 1] & 0xC0) >> 6;
- 
--        if (tsn == mpvparse->pichdr.tsn)        /* prevent termination if TSN is same */
--          ret = FALSE;
-+        //if (tsn == mpvparse->pichdr.tsn)        /* prevent termination if TSN is same */
-+        //  ret = FALSE;
-       }
-     }
-   }
-@@ -731,12 +731,18 @@ gst_mpegv_parse_update_src_caps (GstMpegvParse * mpvparse)
- {
-   GstCaps *caps = NULL;
-   GstStructure *s = NULL;
-+  static gboolean is_first_in=TRUE;
- 
-   /* only update if no src caps yet or explicitly triggered */
-   if (G_LIKELY (gst_pad_has_current_caps (GST_BASE_PARSE_SRC_PAD (mpvparse)) &&
-           !mpvparse->update_caps))
-     return;
- 
-+  if (!is_first_in) {
-+    return;
-+  }
-+  is_first_in = FALSE;
-+
-   /* carry over input caps as much as possible; override with our own stuff */
-   caps = gst_pad_get_current_caps (GST_BASE_PARSE_SINK_PAD (mpvparse));
-   if (caps) {
-@@ -758,24 +764,12 @@ gst_mpegv_parse_update_src_caps (GstMpegvParse * mpvparse)
-       "parsed", G_TYPE_BOOLEAN, TRUE, NULL);
- 
-   if (mpvparse->sequencehdr.width > 0 && mpvparse->sequencehdr.height > 0) {
--    GstMpegVideoSequenceDisplayExt *seqdispext;
-+
-     gint width, height;
- 
-     width = mpvparse->sequencehdr.width;
-     height = mpvparse->sequencehdr.height;
- 
--    if (mpvparse->config_flags & FLAG_SEQUENCE_DISPLAY_EXT) {
--      seqdispext = &mpvparse->sequencedispext;
--
--      if (seqdispext->display_horizontal_size <= width
--          && seqdispext->display_vertical_size <= height) {
--        width = seqdispext->display_horizontal_size;
--        height = seqdispext->display_vertical_size;
--        GST_INFO_OBJECT (mpvparse,
--            "stream has display extension: display_width=%d display_height=%d",
--            width, height);
--      }
--    }
-     gst_caps_set_simple (caps, "width", G_TYPE_INT, width,
-         "height", G_TYPE_INT, height, NULL);
-   }
-@@ -927,6 +921,61 @@ gst_mpegv_parse_parse_frame (GstBaseParse * parse, GstBaseParseFrame * frame)
- }
- 
- static GstFlowReturn
-+gst_mpegv_parse_frame_max_slice_no (const GstBuffer * buf, guint * max_slice_no)
-+{
-+  GstFlowReturn ret = GST_FLOW_OK;
-+  GstBuffer *buffer = buf;
-+  GstMapInfo map;
-+  guint8 *data = NULL;
-+  size_t size = 0;
-+  size_t offset = 0;
-+  guint max_no = 0;
-+
-+  gst_buffer_map (buffer, &map, GST_MAP_READ);
-+  data = map.data;
-+  size = map.size;
-+
-+  for (offset=0; offset + 3 < size; offset++) {
-+    if (!memcmp(data+offset, "\x00\x00\x01", 3)) {
-+      guint currentStartCode = data[offset+3];
-+
-+      if ((currentStartCode <= GST_MPEG_VIDEO_PACKET_SLICE_MAX) && (currentStartCode > max_no)) {
-+        max_no = currentStartCode;
-+      }
-+    }
-+  }
-+
-+  gst_buffer_unmap (buffer, &map);
-+
-+  *max_slice_no = max_no;
-+  return ret;
-+}
-+
-+static gboolean
-+gst_mpegv_parse_frame_is_invalid (GstBaseParse * parse, GstBaseParseFrame * frame)
-+{
-+  GstMpegvParse *mpvparse = GST_MPEGVIDEO_PARSE (parse);
-+  GstBuffer *buffer = frame->buffer;
-+  static guint preFrameMaxSliceNo = 0;
-+  guint curFrameMaxSliceNo = 0;
-+  static gboolean shouldDrop = FALSE;
-+
-+  if (G_UNLIKELY (mpvparse->pichdr.pic_type != GST_MPEG_VIDEO_PICTURE_TYPE_I)) {
-+    return shouldDrop;
-+  }
-+
-+  gst_mpegv_parse_frame_max_slice_no (buffer, &curFrameMaxSliceNo);
-+  if ((curFrameMaxSliceNo + 13) <= preFrameMaxSliceNo) {
-+    shouldDrop = TRUE;
-+  } else {
-+    shouldDrop = FALSE;
-+  }
-+
-+  preFrameMaxSliceNo = curFrameMaxSliceNo;
-+  return shouldDrop;
-+}
-+
-+static GstFlowReturn
- gst_mpegv_parse_pre_push_frame (GstBaseParse * parse, GstBaseParseFrame * frame)
- {
-   GstMpegvParse *mpvparse = GST_MPEGVIDEO_PARSE (parse);
-@@ -939,6 +988,16 @@ gst_mpegv_parse_pre_push_frame (GstBaseParse * parse, GstBaseParseFrame * frame)
-   GstMpegVideoPictureExt *pic_ext = NULL;
-   GstMpegVideoQuantMatrixExt *quant_ext = NULL;
- 
-+  if (gst_mpegv_parse_frame_is_invalid (parse, frame)) {
-+    frame->flags |= GST_BASE_PARSE_FRAME_FLAG_DROP;
-+    return GST_FLOW_OK;
-+  }
-+
-+  GstBuffer *buffer = frame->buffer;
-+  if (!GST_BUFFER_PTS_IS_VALID (buffer)) {
-+    GST_BUFFER_PTS (buffer) = GST_BUFFER_DTS (buffer);
-+  }
-+
-   /* tag sending done late enough in hook to ensure pending events
-    * have already been sent */
- 
--- 
-1.9.1
-
diff --git a/debian/patches/0002-mtk-gst-libs-gst-wayland-makefile.patch b/debian/patches/0002-mtk-gst-libs-gst-wayland-makefile.patch
deleted file mode 100644
index 08c4c5c..0000000
--- a/debian/patches/0002-mtk-gst-libs-gst-wayland-makefile.patch
+++ /dev/null
@@ -1,126 +0,0 @@
-diff --git a/gst-libs/gst/wayland/Makefile.in b/gst-libs/gst/wayland/Makefile.in
-index 23b16c63..045e493f 100644
---- a/gst-libs/gst/wayland/Makefile.in
-+++ b/gst-libs/gst/wayland/Makefile.in
-@@ -126,8 +126,9 @@ am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
- 	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
- am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- 	$(ACLOCAL_M4)
--DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
--	$(am__DIST_COMMON)
-+DIST_COMMON = $(srcdir)/Makefile.am \
-+  $(libgstwayland_@GST_API_VERSION@include_HEADERS) \
-+  $(noinst_HEADERS) $(am__DIST_COMMON)
- mkinstalldirs = $(install_sh) -d
- CONFIG_HEADER = $(top_builddir)/config.h
- CONFIG_CLEAN_FILES =
-@@ -159,7 +160,8 @@ am__uninstall_files_from_dir = { \
-     || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-          $(am__cd) "$$dir" && rm -f $$files; }; \
-   }
--am__installdirs = "$(DESTDIR)$(libdir)"
-+am__installdirs = "$(DESTDIR)$(libdir)" \
-+  "$(DESTDIR)$(libgstwayland_@GST_API_VERSION@includedir)"
- LTLIBRARIES = $(lib_LTLIBRARIES)
- am__DEPENDENCIES_1 =
- libgstwayland_@GST_API_VERSION@_la_DEPENDENCIES =  \
-@@ -220,7 +222,8 @@ am__can_run_installinfo = \
-     n|no|NO) false;; \
-     *) (install-info --version) >/dev/null 2>&1;; \
-   esac
--HEADERS = $(noinst_HEADERS)
-+HEADERS = $(libgstwayland_@GST_API_VERSION@include_HEADERS) \
-+  $(noinst_HEADERS)
- am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
- # Read a list of newline-separated strings from the standard input,
- # and print each of them once, without duplicates.  Input order is
-@@ -762,6 +765,9 @@ libgstwayland_@GST_API_VERSION@_la_LDFLAGS = \
- 	$(GST_ALL_LDFLAGS) \
- 	$(GST_LT_LDFLAGS)
- 
-+libgstwayland_@GST_API_VERSION@include_HEADERS = \
-+  wayland.h
-+
- noinst_HEADERS = \
- 	wayland.h
- 
-@@ -888,6 +894,28 @@ mostlyclean-libtool:
- clean-libtool:
- 	-rm -rf .libs _libs
- 
-+install-libgstwayland_@GST_API_VERSION@includeHEADERS: $(libgstwayland_@GST_API_VERSION@include_HEADERS)
-+  @$(NORMAL_INSTALL)
-+  @list='$(libgstwayland_@GST_API_VERSION@include_HEADERS)'; test -n "$(libgstwayland_@GST_API_VERSION@includedir)" || list=; \
-+  if test -n "$$list"; then \
-+    echo " $(MKDIR_P) '$(DESTDIR)$(libgstwayland_@GST_API_VERSION@includedir)'"; \
-+    $(MKDIR_P) "$(DESTDIR)$(libgstwayland_@GST_API_VERSION@includedir)" || exit 1; \
-+  fi; \
-+  for p in $$list; do \
-+    if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-+    echo "$$d$$p"; \
-+  done | $(am__base_list) | \
-+  while read files; do \
-+    echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(libgstwayland_@GST_API_VERSION@includedir)'"; \
-+    $(INSTALL_HEADER) $$files "$(DESTDIR)$(libgstwayland_@GST_API_VERSION@includedir)" || exit $$?; \
-+  done
-+
-+uninstall-libgstwayland_@GST_API_VERSION@includeHEADERS:
-+  @$(NORMAL_UNINSTALL)
-+  @list='$(libgstwayland_@GST_API_VERSION@include_HEADERS)'; test -n "$(libgstwayland_@GST_API_VERSION@includedir)" || list=; \
-+  files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-+  dir='$(DESTDIR)$(libgstwayland_@GST_API_VERSION@includedir)'; $(am__uninstall_files_from_dir)
-+
- ID: $(am__tagged_files)
- 	$(am__define_uniq_tagged_files); mkid -fID $$unique
- tags: tags-am
-@@ -977,7 +1005,7 @@ check-am: all-am
- check: check-am
- all-am: Makefile $(LTLIBRARIES) $(HEADERS)
- installdirs:
--	for dir in "$(DESTDIR)$(libdir)"; do \
-+	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(libgstwayland_@GST_API_VERSION@includedir)"; do \
- 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- 	done
- install: install-am
-@@ -1033,7 +1061,8 @@ info: info-am
- 
- info-am:
- 
--install-data-am:
-+install-data-am:  \
-+  install-libgstwayland_@GST_API_VERSION@includeHEADERS
- 
- install-dvi: install-dvi-am
- 
-@@ -1079,7 +1108,8 @@ ps: ps-am
- 
- ps-am:
- 
--uninstall-am: uninstall-libLTLIBRARIES
-+uninstall-am: uninstall-libLTLIBRARIES \
-+  uninstall-libgstwayland_@GST_API_VERSION@includeHEADERS
- 
- .MAKE: install-am install-strip
- 
-@@ -1090,12 +1120,15 @@ uninstall-am: uninstall-libLTLIBRARIES
- 	html-am info info-am install install-am install-data \
- 	install-data-am install-dvi install-dvi-am install-exec \
- 	install-exec-am install-html install-html-am install-info \
--	install-info-am install-libLTLIBRARIES install-man install-pdf \
--	install-pdf-am install-ps install-ps-am install-strip \
--	installcheck installcheck-am installdirs maintainer-clean \
--	maintainer-clean-generic mostlyclean mostlyclean-compile \
--	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
--	tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES
-+	install-info-am install-libLTLIBRARIES \
-+  install-libgstwayland_@GST_API_VERSION@includeHEADERS \
-+  install-man install-pdf install-pdf-am install-ps \
-+  install-ps-am install-strip installcheck installcheck-am \
-+  installdirs maintainer-clean maintainer-clean-generic \
-+  mostlyclean mostlyclean-compile mostlyclean-generic \
-+  mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
-+  uninstall-am uninstall-libLTLIBRARIES \
-+  uninstall-libgstwayland_@GST_API_VERSION@includeHEADERS
- 
- .PRECIOUS: Makefile
- 
diff --git a/debian/patches/0003-waylandsink-support-fullscreen.patch b/debian/patches/0003-waylandsink-support-fullscreen.patch
deleted file mode 100644
index c7465d0..0000000
--- a/debian/patches/0003-waylandsink-support-fullscreen.patch
+++ /dev/null
@@ -1,161 +0,0 @@
-From 9b74df9d87a52885a45d37fe43bb7cc1b7d3b1c4 Mon Sep 17 00:00:00 2001
-From: Fabien Dessenne <fabien.dessenne@st.com>
-Date: Thu, 23 Feb 2017 11:48:13 +0100
-Subject: [PATCH] waylandsink: support fullscreen
-
-Add the fullscreen property that makes the sink displayed all across
-the output.
-
----
- ext/wayland/gstwaylandsink.c | 32 ++++++++++++++++++++++++++++++--
- ext/wayland/gstwaylandsink.h |  1 +
- ext/wayland/wlwindow.c       | 17 +++++++++++++++--
- ext/wayland/wlwindow.h       |  4 +++-
- 4 files changed, 49 insertions(+), 5 deletions(-)
-
-diff --git a/ext/wayland/gstwaylandsink.c b/ext/wayland/gstwaylandsink.c
-index 0d97419..d2ff52b 100644
---- a/ext/wayland/gstwaylandsink.c
-+++ b/ext/wayland/gstwaylandsink.c
-@@ -61,7 +61,8 @@ enum
- enum
- {
-   PROP_0,
--  PROP_DISPLAY
-+  PROP_DISPLAY,
-+  PROP_FULLSCREEN
- };
- 
- GST_DEBUG_CATEGORY (gstwayland_debug);
-@@ -163,6 +164,11 @@ gst_wayland_sink_class_init (GstWaylandSinkClass * klass)
-       g_param_spec_string ("display", "Wayland Display name", "Wayland "
-           "display name to connect to, if not supplied via the GstContext",
-           NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-+
-+  g_object_class_install_property (gobject_class, PROP_FULLSCREEN,
-+      g_param_spec_boolean ("fullscreen", "Fullscreen",
-+          "Whether the surface should be made fullscreen ", FALSE,
-+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- }
- 
- static void
-@@ -173,6 +179,18 @@ gst_wayland_sink_init (GstWaylandSink * sink)
- }
- 
- static void
-+gst_wayland_sink_set_fullscreen (GstWaylandSink * sink, gboolean fullscreen)
-+{
-+  if (fullscreen == sink->fullscreen)
-+    return;
-+
-+  g_mutex_lock (&sink->render_lock);
-+  sink->fullscreen = fullscreen;
-+  gst_wl_window_ensure_fullscreen (sink->window, fullscreen);
-+  g_mutex_unlock (&sink->render_lock);
-+}
-+
-+static void
- gst_wayland_sink_get_property (GObject * object,
-     guint prop_id, GValue * value, GParamSpec * pspec)
- {
-@@ -184,6 +202,11 @@ gst_wayland_sink_get_property (GObject * object,
-       g_value_set_string (value, sink->display_name);
-       GST_OBJECT_UNLOCK (sink);
-       break;
-+    case PROP_FULLSCREEN:
-+      GST_OBJECT_LOCK (sink);
-+      g_value_set_boolean (value, sink->fullscreen);
-+      GST_OBJECT_UNLOCK (sink);
-+      break;
-     default:
-       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-       break;
-@@ -202,6 +225,11 @@ gst_wayland_sink_set_property (GObject * object,
-       sink->display_name = g_value_dup_string (value);
-       GST_OBJECT_UNLOCK (sink);
-       break;
-+    case PROP_FULLSCREEN:
-+      GST_OBJECT_LOCK (sink);
-+      gst_wayland_sink_set_fullscreen (sink, g_value_get_boolean (value));
-+      GST_OBJECT_UNLOCK (sink);
-+      break;
-     default:
-       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-       break;
-@@ -615,7 +643,7 @@ gst_wayland_sink_show_frame (GstVideoSink * vsink, GstBuffer * buffer)
-     if (!sink->window) {
-       /* if we were not provided a window, create one ourselves */
-       sink->window = gst_wl_window_new_toplevel (sink->display,
--          &sink->video_info, &sink->render_lock);
-+          &sink->video_info, sink->fullscreen, &sink->render_lock);
-     }
-   }
- 
-diff --git a/ext/wayland/gstwaylandsink.h b/ext/wayland/gstwaylandsink.h
-index 2704d00..be92fe7 100644
---- a/ext/wayland/gstwaylandsink.h
-+++ b/ext/wayland/gstwaylandsink.h
-@@ -60,6 +60,7 @@ struct _GstWaylandSink
- 
-   gboolean video_info_changed;
-   GstVideoInfo video_info;
-+  gboolean fullscreen;
- 
-   gchar *display_name;
- 
-diff --git a/ext/wayland/wlwindow.c b/ext/wayland/wlwindow.c
-index d08ed87..f0b63f7 100644
---- a/ext/wayland/wlwindow.c
-+++ b/ext/wayland/wlwindow.c
-@@ -150,9 +150,22 @@ gst_wl_window_new_internal (GstWlDisplay * display, GMutex * render_lock)
-   return window;
- }
- 
-+void
-+gst_wl_window_ensure_fullscreen (GstWlWindow * window, gboolean fullscreen)
-+{
-+  if (!window)
-+    return;
-+
-+  if (fullscreen)
-+    wl_shell_surface_set_fullscreen (window->shell_surface,
-+        WL_SHELL_SURFACE_FULLSCREEN_METHOD_SCALE, 0, NULL);
-+  else
-+    wl_shell_surface_set_toplevel (window->shell_surface);
-+}
-+
- GstWlWindow *
- gst_wl_window_new_toplevel (GstWlDisplay * display, const GstVideoInfo * info,
--    GMutex * render_lock)
-+    gboolean fullscreen, GMutex * render_lock)
- {
-   GstWlWindow *window;
-   gint width;
-@@ -166,7 +179,7 @@ gst_wl_window_new_toplevel (GstWlDisplay * display, const GstVideoInfo * info,
-   if (window->shell_surface) {
-     wl_shell_surface_add_listener (window->shell_surface,
-         &shell_surface_listener, window);
--    wl_shell_surface_set_toplevel (window->shell_surface);
-+    gst_wl_window_ensure_fullscreen (window, fullscreen);
-   } else {
-     GST_ERROR ("Unable to get wl_shell_surface");
- 
-diff --git a/ext/wayland/wlwindow.h b/ext/wayland/wlwindow.h
-index e247b4e..10b49fd 100644
---- a/ext/wayland/wlwindow.h
-+++ b/ext/wayland/wlwindow.h
-@@ -74,8 +74,10 @@ struct _GstWlWindowClass
- 
- GType gst_wl_window_get_type (void);
- 
-+void gst_wl_window_ensure_fullscreen (GstWlWindow * window,
-+        gboolean fullscreen);
- GstWlWindow *gst_wl_window_new_toplevel (GstWlDisplay * display,
--        const GstVideoInfo * info, GMutex * render_lock);
-+        const GstVideoInfo * info, gboolean fullscreen, GMutex * render_lock);
- GstWlWindow *gst_wl_window_new_in_surface (GstWlDisplay * display,
-         struct wl_surface * parent, GMutex * render_lock);
- 
--- 
-2.7.4
-
diff --git a/debian/patches/0004-openexr.patch b/debian/patches/02_openexr.patch
similarity index 100%
rename from debian/patches/0004-openexr.patch
rename to debian/patches/02_openexr.patch
diff --git a/debian/patches/series b/debian/patches/series
index c6ce507..b1d8e58 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,7 +1,2 @@
 01_fix-modplug-linking.patch
-0001-add-judge-for-mpeg4-codec-in-mpeg-container.patch
-0001-mtk-upgrade-gst-bad-to-1-14-4.patch
-0002-mtk-gst-libs-gst-wayland-makefile.patch
-0003-waylandsink-support-fullscreen.patch
-0004-openexr.patch
-0001-Workaround-concurrency-issue.patch
+02_openexr.patch
diff --git a/debian/rules b/debian/rules
index 02cf91a..fe41786 100755
--- a/debian/rules
+++ b/debian/rules
@@ -5,6 +5,10 @@
 include /usr/share/cdbs/1/rules/utils.mk
 include /usr/share/cdbs/1/rules/autoreconf.mk
 
+# Work-around for gtk-doc bug:
+# https://bugzilla.gnome.org/show_bug.cgi?id=783926
+export PYTHONIOENCODING="utf-8"
+
 DEB_BUILD_PARALLEL = 1
 
 DEB_DH_AUTORECONF_ARGS += --as-needed
@@ -67,6 +71,7 @@
 ifeq ($(DEB_HOST_ARCH_OS),linux)
 PLUGINS +=
 endif
+VERSIONIZE= \
 
 #debug package
 DEB_DH_STRIP_ARGS := --dbg-package=$(gst_pkgname)-plugins-bad-dbg
@@ -79,7 +84,6 @@
 dc1394 = debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/gstreamer-$(gst_abi)/libgstdc1394.so
 decklink = debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/gstreamer-$(gst_abi)/libgstdecklink.so
 linsys = debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/gstreamer-$(gst_abi)/libgstlinsys.so
-uvch264 = debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/gstreamer-$(gst_abi)/libgstuvch264.so
 bluez = debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/gstreamer-$(gst_abi)/libgstbluez.so
 sbc = debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/gstreamer-$(gst_abi)/libgstsbc.so
 waylandsink = debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/gstreamer-$(gst_abi)/libgstwaylandsink.so
@@ -96,21 +100,7 @@
 resindvd = debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/gstreamer-$(gst_abi)/libgstresindvd.so
 endif
 
-# Let's decide the package name and url depending on the distribution
-DISTRO = "$(shell dpkg-vendor --query vendor)"
-
-GST_PACKAGE_NAME := "GStreamer Bad Plugins (unknown Debian derivative)"
-GST_PACKAGE_ORIGIN="http://packages.qa.debian.org/gst-plugins-bad$(gst_abi)"
-
-ifeq ($(DISTRO),"Debian")
-GST_PACKAGE_NAME := "GStreamer Bad Plugins (Debian)"
-GST_PACKAGE_ORIGIN="http://packages.qa.debian.org/gst-plugins-bad$(gst_abi)"
-endif
-
-ifeq ($(DISTRO),"Ubuntu")
-GST_PACKAGE_NAME := "GStreamer Bad Plugins (Ubuntu)"
-GST_PACKAGE_ORIGIN="https://launchpad.net/distros/ubuntu/+source/gst-plugins-bad$(gst_abi)"
-endif
+GST_PACKAGE_NAME := "GStreamer Bad Plugins"
 
 
 # setup links for packages
@@ -156,15 +146,9 @@
 	--enable-DEBUG \
 	--enable-debug \
 	--with-package-name=$(GST_PACKAGE_NAME) \
-	--with-package-origin=$(GST_PACKAGE_ORIGIN) \
 	--disable-pvr \
 	--disable-mpeg2enc \
 	--disable-mplex \
-	--enable-wayland \
-	--disable-x11 \
-	--disable-glx \
-	--disable-opengl \
-	--enable-gles2
 
 common-binary-fixup-arch::
 	LD_LIBRARY_PATH=debian/libgstreamer-plugins-bad1.0-0/usr/lib/$(DEB_HOST_MULTIARCH):$(LD_LIBRARY_PATH) \
diff --git a/debian/source.lintian-overrides b/debian/source.lintian-overrides
new file mode 100644
index 0000000..1c09b59
--- /dev/null
+++ b/debian/source.lintian-overrides
@@ -0,0 +1,2 @@
+mtk-gst-plugins-bad source: debian-rules-sets-dpkg-architecture-variable *
+
diff --git a/debian/source/lintian-overrides b/debian/source/lintian-overrides
deleted file mode 100644
index e5d03e4..0000000
--- a/debian/source/lintian-overrides
+++ /dev/null
@@ -1 +0,0 @@
-gst-plugins-bad1.0 source: debian-rules-sets-dpkg-architecture-variable *
\ No newline at end of file
diff --git a/debian/watch b/debian/watch
deleted file mode 100644
index 1b7b8ff..0000000
--- a/debian/watch
+++ /dev/null
@@ -1,2 +0,0 @@
-version=3
-http://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-(1\.[\d\.]+)\.tar\.xz
