gst-plugins-bad1.0 (1.14.4-1+mtku1) mendel-eagle; urgency=medium

  * Enable waylandsink fullscreen.
  * Enable v4l2convert and apply workaround to avoid concurrency issue with
    rsvgoverlay.

 -- 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

