gst-plugins-bad1.0 (1.9.90-2) UNRELEASED; urgency=medium

  [ Sebastian Dröge ]
  * New upstream stable release (Closes: #841413, #828335).

  [ Helmut Grohne ]
  * Mark gstreamer1.0-doc Multi-Arch: foreign (Closes: #842526).

 -- Sebastian Dröge <slomo@debian.org>  Mon, 31 Oct 2016 09:31:43 +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

