gst-plugins-base1.0 (1.10.3-1) unstable; urgency=medium

  * New upstream bugfix release

 -- Sebastian Dröge <slomo@debian.org>  Mon, 30 Jan 2017 15:32:35 +0200

gst-plugins-base1.0 (1.10.2-1) unstable; urgency=medium

  * New upstream bugfix release

 -- Sebastian Dröge <slomo@debian.org>  Tue, 29 Nov 2016 15:38:35 +0200

gst-plugins-base1.0 (1.10.1-1) unstable; urgency=medium

  * New upstream bugfix release

 -- Sebastian Dröge <slomo@debian.org>  Thu, 17 Nov 2016 14:56:14 +0200

gst-plugins-base1.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.

 -- Sebastian Dröge <slomo@debian.org>  Tue, 01 Nov 2016 17:45:24 +0200

gst-plugins-base1.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.
    + debian/libgstreamer-plugins-base.symbols:
      - Update new symbols.

 -- Sebastian Dröge <slomo@debian.org>  Fri, 30 Sep 2016 12:16:56 +0300

gst-plugins-base1.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/libgstreamer-plugins-base.symbols:
      - Update new symbols.

 -- Sebastian Dröge <slomo@debian.org>  Thu, 01 Sep 2016 11:53:46 +0300

gst-plugins-base1.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/libgstreamer-plugins-base.symbols:
      - Update new symbols.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 06 Jul 2016 12:22:14 +0300

gst-plugins-base1.0 (1.8.2-1) unstable; urgency=medium

  * debian/control.in:
    + Remove duplicated field name.
  * New upstream bugfix release.

 -- Sebastian Dröge <slomo@debian.org>  Fri, 13 May 2016 14:37:29 +0300

gst-plugins-base1.0 (1.8.1-1) unstable; urgency=medium

  * New upstream bugfix release.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 20 Apr 2016 18:05:56 +0300

gst-plugins-base1.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:16:44 +0200

gst-plugins-base1.0 (1.7.91-1) experimental; urgency=medium

  * New upstream release candidate:
    + debian/build-deps.in,
      debian/rules:
      - Build-depend on GStreamer >= 1.7.91.
    + debian/libgstreamer-plugins-base.symbols:
      - Update new symbols.

 -- Sebastian Dröge <slomo@debian.org>  Tue, 15 Mar 2016 12:00:12 +0200

gst-plugins-base1.0 (1.7.90-1) experimental; urgency=medium

  * New upstream release candidate:
    + debian/build-deps.in,
      debian/rules:
      - Build-depend on GStreamer >= 1.7.90.
    + debian/build-deps.in,
      debian/control.in,
      debian/gstreamer-plugins-base.install:
      - Add Opus plugin and add Breaks/Replaces for gst-plugins-bad.

 -- Sebastian Dröge <slomo@debian.org>  Tue, 01 Mar 2016 17:03:06 +0200

gst-plugins-base1.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.
    + debian/libgstreamer-plugins-base.symbols:
      - Update for new symbols.
    + debian/control.in:
      - Add Breaks for gstreamer1.0-plugins-bad << 1.7.1 because
        of GstAudioVisualizer moved from a plugin to a library here.

 -- Sebastian Dröge <slomo@debian.org>  Fri, 19 Feb 2016 11:07:18 +0200

gst-plugins-base1.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.
    + debian/libgstreamer-plugins-base.symbols:
      - Update for new symbols.

 -- Sebastian Dröge <slomo@debian.org>  Thu, 24 Dec 2015 13:52:30 +0100

gst-plugins-base1.0 (1.6.2-1) unstable; urgency=medium

  * New upstream bugfix release.

 -- Sebastian Dröge <slomo@debian.org>  Mon, 14 Dec 2015 19:24:29 +0100

gst-plugins-base1.0 (1.6.1-1) unstable; urgency=medium

  * debian/control.in:
    + Remove Recommends on alsa-base, it's a useless dummy package
      and not needed anyway (Closes: #785268).
  * New upstream bugfix release.

 -- Sebastian Dröge <slomo@debian.org>  Sat, 03 Oct 2015 19:03:14 +0100

gst-plugins-base1.0 (1.6.0-1) unstable; urgency=medium

  * debian/control.in:
    + Remove Recommends on gstreamer-codec-install | gnome-codec-install.
  * New upstream stable release.

 -- Sebastian Dröge <slomo@debian.org>  Fri, 18 Sep 2015 20:54:02 +0200

gst-plugins-base1.0 (1.5.91-1) experimental; urgency=medium

  * New upstream release candidate.

 -- Sebastian Dröge <slomo@debian.org>  Fri, 18 Sep 2015 19:20:16 +0200

gst-plugins-base1.0 (1.5.90-1) experimental; urgency=medium

  [ Iain Lane ]
  * debian/watch: Update for current upstream URL scheme

  [ Sebastian Dröge ]
  * New upstream release candidate.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 19 Aug 2015 13:05:44 +0300

gst-plugins-base1.0 (1.5.2-1) experimental; urgency=medium

  * New unstable upstream release.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 24 Jun 2015 22:53:04 +0200

gst-plugins-base1.0 (1.5.1-1) experimental; urgency=medium

  * New unstable upstream release.

 -- Sebastian Dröge <slomo@debian.org>  Sun, 07 Jun 2015 10:20:35 +0200

gst-plugins-base1.0 (1.5.0.1+git20150513-1) experimental; urgency=medium

  * New upstream GIT snapshot.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 13 May 2015 13:22:51 +0300

gst-plugins-base1.0 (1.5.0.1+git20150316-1) experimental; urgency=medium

  * New upstream GIT snapshot.

 -- Sebastian Dröge <slomo@debian.org>  Mon, 16 Mar 2015 19:33:40 +0100

gst-plugins-base1.0 (1.4.5-1) experimental; urgency=medium

  * New upstream bugfix release.

 -- Sebastian Dröge <slomo@debian.org>  Thu, 18 Dec 2014 12:23:12 +0100

gst-plugins-base1.0 (1.4.4-2) unstable; urgency=medium

  * Upload to unstable.

 -- Sebastian Dröge <slomo@debian.org>  Tue, 11 Nov 2014 13:39:39 +0100

gst-plugins-base1.0 (1.4.4-1) experimental; urgency=medium

  * New upstream bugfix release.

 -- Sebastian Dröge <slomo@debian.org>  Thu, 06 Nov 2014 12:44:20 +0100

gst-plugins-base1.0 (1.4.3-1.1) unstable; urgency=medium

  * Non-maintainer upload.
  * debian/control.in: Drop gstreamer1.0-plugins-base-dbg Suggests against
    non-existant gstreamer1.0-gnomevfs package, this fixes a lintian error.
  * debian/rules: Remove outdated mangling of debian/shlibs.local, this is
    breaking dependencies generation for gir packages (Closes: #761915)

 -- Laurent Bigonville <bigon@debian.org>  Sun, 02 Nov 2014 16:43:22 +0100

gst-plugins-base1.0 (1.4.3-1) unstable; urgency=medium

  * New upstream bugfix release.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 24 Sep 2014 12:06:56 +0300

gst-plugins-base1.0 (1.4.2-1) unstable; urgency=medium

  * New upstream bugfix release.
  * debian/gstreamer-plugins-base-apps.*:
    + Ship gst-device-monitor-1.0 tool.

 -- Sebastian Dröge <slomo@debian.org>  Fri, 19 Sep 2014 14:13:16 +0300

gst-plugins-base1.0 (1.4.1-1) unstable; urgency=medium

  * New upstream bugfix release.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 27 Aug 2014 14:32:29 +0300

gst-plugins-base1.0 (1.4.0-1) unstable; urgency=medium

  * New upstream stable release.

 -- Sebastian Dröge <slomo@debian.org>  Sat, 19 Jul 2014 16:49:51 +0200

gst-plugins-base1.0 (1.3.91-1) experimental; urgency=medium

  * New upstream release candidate:
    + debian/rules:
      - Build-depend on GStreamer core >= 1.3.91.
    + debian/libgstreamer-plugins-base.symbols:
      - Update for new symbols.

 -- Sebastian Dröge <slomo@debian.org>  Fri, 11 Jul 2014 10:59:50 +0200

gst-plugins-base1.0 (1.3.90-1) experimental; urgency=medium

  * New upstream release candidate:
    + debian/rules:
      - Build-depend on GStreamer core >= 1.3.90.
    + debian/libgstreamer-plugins-base.symbols:
      - Update for new symbols.

 -- Sebastian Dröge <slomo@debian.org>  Sat, 28 Jun 2014 11:31:13 +0200

gst-plugins-base1.0 (1.3.3-1) experimental; urgency=medium

  * debian/control.in:
    + Add Recommends on gstreamer1.0-plugins-base for the
      library package (Closes: #749153).
  * debian/rules:
    + Run autopoint during autoreconf too.
  * New upstream development release:
    + debian/rules:
      - Build-depend on GStreamer core >= 1.3.3.
    + debian/libgstreamer-plugins-base.symbols:
      - Update for new symbols.

 -- Sebastian Dröge <slomo@debian.org>  Sun, 25 May 2014 17:11:24 +0200

gst-plugins-base1.0 (1.3.2-1) experimental; urgency=medium

  * New upstream development release:
    + debian/rules:
      - Build-depend on GStreamer core >= 1.3.2.
    + debian/libgstreamer-plugins-base.symbols:
      - Update for new symbols.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 21 May 2014 12:18:16 +0200

gst-plugins-base1.0 (1.3.1-1) experimental; urgency=medium

  * New upstream development release:
    + debian/rules:
      - Build-depend on GStreamer core >= 1.3.1.
    + debian/libgstreamer-plugins-base.symbols:
      - Update for new symbols.

 -- Sebastian Dröge <slomo@debian.org>  Sat, 03 May 2014 18:31:03 +0200

gst-plugins-base1.0 (1.2.4-1) unstable; urgency=medium

  * New upstream bugfix release.

 -- Sebastian Dröge <slomo@debian.org>  Sat, 19 Apr 2014 15:48:06 +0200

gst-plugins-base1.0 (1.2.3-1) unstable; urgency=medium

  * New upstream bugfix release:
    + debian/libgstreamer-plugins-base.symbols:
      - Add new symbol.
  * debian/rules:
    + Run libtoolize in autoreconf. Drop ltmain-as-needed patch
      and use dh_autoreconf --as-needed.

 -- Sebastian Dröge <slomo@debian.org>  Sun, 09 Feb 2014 11:14:56 +0100

gst-plugins-base1.0 (1.2.2-1) unstable; urgency=medium

  * New upstream bugfix release:
    + debian/libgstreamer-plugins-base.symbols:
      - Add new 1.2.2 API additions.

 -- Sebastian Dröge <slomo@debian.org>  Fri, 27 Dec 2013 10:57:30 +0100

gst-plugins-base1.0 (1.2.1-2) unstable; urgency=low

  * debian/gstreamer-plugins-base-apps.install:
    + Include new gst-play-1.0 tool.
  * debian/gstreamer-plugins-base-apps.manpages:
    + Ship the manpages for gst-discoverer-1.0 and gst-play-1.0.

 -- Sebastian Dröge <slomo@debian.org>  Sun, 10 Nov 2013 22:00:37 +0100

gst-plugins-base1.0 (1.2.1-1) unstable; urgency=low

  [ Fabian Greffrath ]
  * Fix gst_version variable generation.
  * Add Vcs-* fields to debian/control{,.in}, update Homepage field.
  * Turn versioned Conflicts into Breaks, remove trailing comma.

  [ Sebastian Dröge ]
  * New upstream bugfix release:
    + debian/libgstreamer-plugins-base.symbols:
      - Add new 1.2.1 API additions.

 -- Sebastian Dröge <slomo@debian.org>  Sat, 09 Nov 2013 16:34:38 +0100

gst-plugins-base1.0 (1.2.0-1) unstable; urgency=low

  * New upstream stable release:
    + debian/rules,
      debian/build-deps.in:
      - Build-depend on GStreamer >= 1.2.0.

 -- Sebastian Dröge <slomo@debian.org>  Tue, 24 Sep 2013 16:24:47 +0200

gst-plugins-base1.0 (1.1.90-1) experimental; urgency=low

  * New upstream release candidate:
    + debian/rules,
      debian/build-deps.in:
      - Build-depend on GStreamer >= 1.1.90.
    + debian/libgstreamer-plugins-base.symbols:
      - Add new symbols.

 -- Sebastian Dröge <slomo@debian.org>  Thu, 19 Sep 2013 12:42:47 +0200

gst-plugins-base1.0 (1.1.4-1) experimental; urgency=low

  * New upstream development snapshot:
    + debian/rules,
      debian/build-deps.in:
      - Build-depend on GStreamer >= 1.1.4.
    + debian/libgstreamer-plugins-base.symbols:
      - Add new symbols.

 -- Sebastian Dröge <slomo@debian.org>  Fri, 30 Aug 2013 12:44:33 +0200

gst-plugins-base1.0 (1.1.3-1) experimental; urgency=low

  * New upstream development snapshot:
    + debian/rules,
      debian/build-deps.in:
      - Build-depend on GStreamer >= 1.1.3.
      - Remove build-dependency on libxml2-dev.
    + debian/libgstreamer-plugins-base.symbols:
      - Add new symbols.

 -- Sebastian Dröge <slomo@debian.org>  Tue, 30 Jul 2013 08:31:11 +0200

gst-plugins-base1.0 (1.1.2-1) experimental; urgency=low

  * New upstream development snapshot:
    + debian/rules,
      debian/build-deps.in:
      - Build-depend on GStreamer >= 1.1.2 and orc >= 0.4.17.
    + debian/libgstreamer-plugins-base.install:
      - Add new allocators library.
    + debian/libgstreamer-plugins-base.symbols:
      - Add new symbols.

 -- Sebastian Dröge <slomo@debian.org>  Sun, 14 Jul 2013 11:16:14 +0200

gst-plugins-base1.0 (1.0.8-1) unstable; urgency=low

  * New upstream bugfix release.

 -- Sebastian Dröge <slomo@debian.org>  Sat, 13 Jul 2013 11:29:27 +0200

gst-plugins-base1.0 (1.0.7-1) unstable; urgency=low

  * New upstream bugfix release.

 -- Sebastian Dröge <slomo@debian.org>  Fri, 26 Apr 2013 14:06:10 +0200

gst-plugins-base1.0 (1.0.6-1) unstable; urgency=low

  * New upstream bugfix release.

 -- Sebastian Dröge <slomo@debian.org>  Fri, 22 Mar 2013 18:15:10 +0100

gst-plugins-base1.0 (1.0.5-1) unstable; urgency=low

  * New upstream bugfix release:
    + debian/rules:
      - Build-depend on GStreamer >= 1.0.5.

 -- Sebastian Dröge <slomo@debian.org>  Tue, 08 Jan 2013 13:40:26 +0100

gst-plugins-base1.0 (1.0.4-1) unstable; urgency=low

  * New upstream bugfix release.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 19 Dec 2012 10:28:51 +0100

gst-plugins-base1.0 (1.0.3-1) unstable; urgency=low

  * New upstream bugfix release:
    + debian/libgstreamer-plugins-base.symbols:
      - Add new symbol.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 21 Nov 2012 14:50:45 +0100

gst-plugins-base1.0 (1.0.2-1) unstable; urgency=low

  * New upstreal bugfix release.

 -- Sebastian Dröge <slomo@debian.org>  Thu, 25 Oct 2012 13:30:04 +0200

gst-plugins-base1.0 (1.0.1-1) unstable; urgency=low

  * New upstream bugfix release.

 -- Sebastian Dröge <slomo@debian.org>  Mon, 08 Oct 2012 10:27:45 +0200

gst-plugins-base1.0 (1.0.0-1) unstable; urgency=low

  * New upstream release:
    + debian/rules:
      - Build-depend on gstreamer core >= 1.0.0.
    + debian/libgstreamer-plugins-base.symbols:
      - Update symbol versions.

 -- Sebastian Dröge <slomo@debian.org>  Tue, 25 Sep 2012 00:11:30 +0200

gst-plugins-base1.0 (0.11.99-1) experimental; urgency=low

  * New upstream release:
    + debian/rules:
      - Build-depend on gstreamer core >= 0.11.94.

 -- Sebastian Dröge <slomo@debian.org>  Tue, 18 Sep 2012 09:16:13 +0200

gst-plugins-base1.0 (0.11.94-1) experimental; urgency=low

  * New upstream release:
    + debian/rules:
      - Build-depend on gstreamer core >= 0.11.94.
    + debian/build-deps.in:
      - Build-depend on gtk-doc >= 1.12.
    + debian/libgstreamer-plugins-base.symbols:
      - Update for API changes.
    + debian/gstreamer-plugins-base-apps.install:
      - Drop gst-visualize tool.

 -- Sebastian Dröge <slomo@debian.org>  Fri, 14 Sep 2012 09:37:04 +0200

gst-plugins-base1.0 (0.11.93-1) experimental; urgency=low

  * New upstream release:
    + debian/rules:
      - Build-depend on gstreamer core >= 0.11.93.
    + debian/libgstreamer-plugins-base.symbols:
      - Update for API changes.
    + debian/patches/0001-videoconvert-Need-LIBM-for-pow.patch:
      - Dropped, merged upstream.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 08 Aug 2012 18:38:24 +0200

gst-plugins-base1.0 (0.11.92-1) experimental; urgency=low

  * debian/control.in:
    + Update automake, autoconf and libtool build dependencies.
  * New upstream release, "Comfortably Numb":
    + debian/rules:
      - Build-depend on gstreamer core >= 0.11.92.
    + debian/libgstreamer-plugins-base.symbols:
      - Update for API changes.
  * debian/patches/0001-videoconvert-Need-LIBM-for-pow.patch:
    + Fix linking of videoconvert by linking to -lm.

 -- Sebastian Dröge <slomo@debian.org>  Fri, 08 Jun 2012 11:10:03 +0200

gst-plugins-base1.0 (0.11.91-1) experimental; urgency=low

  * New upstream release, "Fee-fi-fo-fum":
    + debian/libgstreamer-plugins-base.symbols:
      - Update symbols file.
    + debian/rules:
      - (Build-) depend on GStreamer >= 0.11.91.
    + debian/libgstreamer-plugins-base-dev.install:
      - Drop removed interfaces library.
  * debian/control.in,
    debian/build-deps.in:
    + Update debhelper dependency version and Standards-Version.

 -- Sebastian Dröge <slomo@debian.org>  Mon, 21 May 2012 11:43:57 +0200

gst-plugins-base1.0 (0.11.90-1) experimental; urgency=low

  [ Olivier Naudan ]
  * Imported Upstream version 0.11.90
  * debian/rules and debian/changelog: migration to 1.0
  * Removed 01_riff-big-endian.patch, now upstreamed
  * Removed cdda and netbuffer from .install file, following upstream
  * debian/control: updated package names with 1.0
  * Refreshed 99_ltmain_as-needed.patch to apply cleanly again
  * debian/libgstreamer-plugins-base.install: use @GST_ABI@
  * Updated debian/libgstreamer-plugins-base.symbols based on upstream 0.11.90

  [ Sebastian Dröge ]
  * Build-depend on GLib >= 2.31.14.
  * Fix symbols file versions.
  * Update copyright file.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 02 May 2012 18:01:01 +0200

gst-plugins-base0.11 (0.11.1-3) UNRELEASED; urgency=low

  [ Sebastian Dröge ]
  * debian/build-deps.in:
    + Don't build-depend on GnomeVFS anymore.
    + Build-depend on automake (>= 1.10), autoconf (>= 2.60) and
      libtool (>= 2.0) to make dh-autoreconf actually work.

  [ Loïc Minier ]
  * Track 0.11.* versions instead of 0.10.* versions in watch file.
  * Update my email address in control.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 14 Dec 2011 12:23:16 +0100

gst-plugins-base0.11 (0.11.1-2) experimental; urgency=low

  * debian/build-deps.in:
    + Build-depend on GLib 2.26.
  * debian/patches/01_riff-big-endian.patch:
    + Fix build on big-endian systems. Patch from upstream GIT.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 14 Dec 2011 11:52:26 +0100

gst-plugins-base0.11 (0.11.1-1) experimental; urgency=low

  [ Nicolas Dechesne ]
  * New upstream release, 0.11.1
    + debian/libgstreamer-plugins-base.symbols
    + debian/build-deps.in
      - remove gstreamer-tools
      - replaced 0.10 with 0.11
    + debian/control.in
      - removed old Replaces/Conflicts which no longer make sense on 0.11
      - removed -gnomevfs packages
    + debian/*.install files
      - removed libgstdecodebin, libgstffmpegcolorspace, gstplaybin
      - added libgstvideoconvert, libgstplayback

  [ Sebastian Dröge ]
  * Upload to experimental.
  * debian/copyright:
    + Clean up, fix and complete copyright.
  * Merge 0.10.35.2-1.

 -- Sebastian Dröge <slomo@debian.org>  Mon, 12 Dec 2011 12:21:36 +0100

gst-plugins-base0.10 (0.10.35.2-1) experimental; urgency=low

  * New upstream pre-release:
    + debian/rules,
      debian/build-deps.in:
      - Build-depend on GStreamer core >= 0.10.35.2.
      - Build-depend on GLib >= 2.24.
      - Build-depend on GTK+ 3.0.
      - Build-depend on zlib.
    + debian/patches/99_ltmain_as-needed.patch:
      - Refresh to apply cleanly again.
    + debian/libgstreamer-plugins-base.symbols:
      - Update symbols file with new API.
  * debian/rules:
    + Remove all dependency_libs from the .la files.
  * debian/control.in:
    + Put GI package into section introspection.
  * debian/build-deps.in,
    debian/compat,
    debian/control.in,
    debian/gir1.2-gst-plugins-base.install,
    debian/gstreamer-alsa.install,
    debian/gstreamer-gnomevfs.install,
    debian/gstreamer-plugins-base.install,
    debian/gstreamer-x.install,
    debian/libgstreamer-plugins-base-dev.install,
    debian/libgstreamer-plugins-base.install,
    debian/rules:
    + Transition package to multi-arch (Closes: #647485).
      Patch taken from the Ubuntu package.

 -- Sebastian Dröge <slomo@debian.org>  Sun, 11 Dec 2011 19:27:10 +0100

gst-plugins-base0.10 (0.10.35-1) unstable; urgency=low

  * New upstream bugfix release, "Short Notice".

 -- Sebastian Dröge <slomo@debian.org>  Thu, 23 Jun 2011 09:37:32 +0200

gst-plugins-base0.10 (0.10.34-1) unstable; urgency=low

  * New upstream bugfix release, "Lemmings":
    + debian/rules:
      - Require GStreamer core >= 0.10.34.

 -- Sebastian Dröge <slomo@debian.org>  Sat, 14 May 2011 11:46:16 +0200

gst-plugins-base0.10 (0.10.33-1) unstable; urgency=low

  * New upstream release, "Relaxing Distractions":
    + debian/libgstreamer-plugins-base.symbols:
      - Update version of new symbols to 0.10.33.
    + debian/rules:
      - Build-depend on GStreamer >= 0.10.33.

 -- Sebastian Dröge <slomo@debian.org>  Tue, 10 May 2011 15:48:17 +0200

gst-plugins-base0.10 (0.10.32.3-1) experimental; urgency=low

  * New upstream pre-release.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 27 Apr 2011 15:27:37 +0200

gst-plugins-base0.10 (0.10.32.2-1) experimental; urgency=low

  [ Sebastian Dröge ]
  * debian/control.in:
    + Let the -dev package depend on the GIR package as required by
      the new gobject-introspection policy.
    + Only suggest gvfs, don't recommend it. GStreamer is the default
      phonon backend nowadays and there's no reason to use gvfs
      on a KDE desktop.

  [ Alessandro Decina ]
  * debian/build-deps.in:
    + Add dependency on dh-autoreconf
  * debian/rules:
    + Include dh-autoreconf cdbs rule

  [ Loïc Minier ]
  * Drop dep on type-handling and use linux-any where possible.
  * Reflow sed calls to avoid cat | sed or sed | sed constructs.

  [ Sebastian Dröge ]
  * New upstream pre-release:
    + debian/rules:
      - Build-depend on GStreamer core >= 0.10.32.2.
    + debian/libgstreamer-plugins-base.symbols:
      - Add new API.

 -- Sebastian Dröge <slomo@debian.org>  Sun, 17 Apr 2011 10:25:45 +0200

gst-plugins-base0.10 (0.10.32-2) unstable; urgency=low

  * Upload to unstable.
  * debian/rules,
    debian/gstreamer-plugins-base.install:
    + Drop the video4linux plugin, recent Linux kernels only have v4l2.

 -- Sebastian Dröge <slomo@debian.org>  Tue, 22 Mar 2011 14:17:10 +0100

gst-plugins-base0.10 (0.10.32-1) experimental; urgency=low

  * New upstream stable release, "Your Life You Like It Well":
    + debian/rules:
      - Require GStreamer >= 0.10.32.
    + debian/libgstreamer-plugins-base.symbols:
      - Update new symbols to the release version.

 -- Sebastian Dröge <slomo@debian.org>  Sat, 22 Jan 2011 13:15:54 +0100

gst-plugins-base0.10 (0.10.31.4-1) experimental; urgency=low

  * New upstream pre-release:
    + debian/rules:
      - Require GStreamer >= 0.10.31.4.
    + debian/libgstreamer-plugins-base.symbols:
      - Update new symbols to the latest pre-release version.
  * debian/rules:
    + Use dh_perl -d to generate a dependency on perl-base only.
      Change taken from the Ubuntu package.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 19 Jan 2011 21:11:51 +0100

gst-plugins-base0.10 (0.10.31.3-1) experimental; urgency=low

  * New upstream pre-release:
    + debian/rules:
      - Require GStreamer >= 0.10.31.3.
    + debian/libgstreamer-plugins-base.symbols:
      - Update new symbols to the latest pre-release version.

 -- Sebastian Dröge <slomo@debian.org>  Thu, 13 Jan 2011 11:48:15 +0100

gst-plugins-base0.10 (0.10.31.2-1) experimental; urgency=low

  * New upstream pre-release:
    + debian/rules,
      debian/build-deps.in:
      - Require GStreamer >= 0.10.31.2
      - Require GLib >= 2.22
    + debian/gstreamer-plugins-base.install:
      - Add new encodebin plugin.
    + debian/libgstreamer-plugins-base.symbols:
      - Add new API symbols.

 -- Sebastian Dröge <slomo@debian.org>  Mon, 10 Jan 2011 14:56:10 +0100

gst-plugins-base0.10 (0.10.31-2) experimental; urgency=low

  [ Emilio Pozuelo Monfort ]
  * debian/build-deps.in,
    debian/rules:
    + Use dpkg-vendor instead of lsb_release.

  [ Sjoerd Simons ]
  * Transition to gir1.2

 -- Sjoerd Simons <sjoerd@debian.org>  Tue, 14 Dec 2010 22:09:46 +0000

gst-plugins-base0.10 (0.10.31-1) experimental; urgency=low

  * New upstream release, "Dance Like It's 1982":
    + debian/libgstreamer-plugins-base.symbols:
      - Update symbols file.
    + debian/rules:
      - Require GStreamer >= 0.10.31.

 -- Sebastian Dröge <slomo@debian.org>  Thu, 02 Dec 2010 10:32:35 +0100

gst-plugins-base0.10 (0.10.30.5-2) experimental; urgency=low

  * debian/build-deps.in:
    + Drop gir-repository-dev build dependency. It's not needed and
      only pulls in half of Gnome.
  * New upstream pre-release.

 -- Sebastian Dröge <slomo@debian.org>  Fri, 19 Nov 2010 11:29:57 +0100

gst-plugins-base0.10 (0.10.30.4-1) experimental; urgency=low

  * New upstream pre-release: 
    + debian/libgstreamer-plugins-base.symbols:
      - Update symbols file.
    + debian/gstreamer-plugins-base-apps.install:
      - Add new gst-discoverer-0.10 tool.
    + debian/control.in:
      - Add ${shlibs:Depends} to the apps package.

 -- Sebastian Dröge <slomo@debian.org>  Tue, 02 Nov 2010 08:44:13 +0100

gst-plugins-base0.10 (0.10.30.3-1) experimental; urgency=low

  * New upstream pre-release: 
    + debian/libgstreamer-plugins-base.symbols:
      - Update symbols file.

 -- Sebastian Dröge <slomo@debian.org>  Fri, 22 Oct 2010 19:56:44 +0200

gst-plugins-base0.10 (0.10.30.2-1) experimental; urgency=low

  * New upstream pre-release: 
    + debian/rules,
      debian/build-deps.in:
      - Require GStreamer >= 0.10.30.1.
      - Require ORC >= 0.4.11.
      - Require Theora >= 1.1.
    + debian/patches/0001-videoscale*:
      - Dropped, merged upstream.
    + debian/libgstreamer-plugins-base.symbols:
      - Update symbols file with the new API.

 -- Sebastian Dröge <slomo@debian.org>  Sat, 16 Oct 2010 11:17:36 +0200

gst-plugins-base0.10 (0.10.30-3) experimental; urgency=low

  * debian/build-deps.in:
    + Add the epoch to the orc build dependency to get correct
      dependencies (Closes: #597086).

 -- Sebastian Dröge <slomo@debian.org>  Fri, 17 Sep 2010 13:22:25 +0200

gst-plugins-base0.10 (0.10.30-2) experimental; urgency=low

  * debian/patches/000[1-8]-videoscale*.patch:
    + Patches from upstream GIT for videoscale to fix UYVY scaling,
      improve scaling of interlaced content and add a add-borders
      property (that defaults to the old behaviour) to add black
      borders if necessary to keep the display aspect ratio.

 -- Sebastian Dröge <slomo@debian.org>  Thu, 09 Sep 2010 11:04:17 +0200

gst-plugins-base0.10 (0.10.30-1) unstable; urgency=low

  * New upstream stable release, "Difficult Birth":
    + debian/rules:
      - Build depend on GStreamer 0.10.30.
    + debian/libgstreamer-plugins-base.symbols:
      - Update new symbols version to 0.10.30.

 -- Sebastian Dröge <slomo@debian.org>  Thu, 15 Jul 2010 13:51:22 +0200

gst-plugins-base0.10 (0.10.29.4-1) experimental; urgency=low

  * New upstream pre-release.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 07 Jul 2010 15:13:18 +0200

gst-plugins-base0.10 (0.10.29.3-1) experimental; urgency=low

  * New upstream pre-release:
    + debian/rules:
      - Build depend on GStreamer 0.10.29.3.
    + debian/libgstreamer-plugins-base.symbols:
      - Update new symbols version to 0.10.29.3.
    + debian/patches/01_videotestsrc-libm-linking.patch,
      debian/patches/02_videoscale-libm-linking.patch:
      - Dropped, merged upstream.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 30 Jun 2010 10:43:13 +0200

gst-plugins-base0.10 (0.10.29.2-1) experimental; urgency=low

  * New upstream pre-release:
    + debian/rules,
      debian/compat,
      debian/control.in,
      debian/source/format,
      debian/patches/*:
      - Update to debhelper compat level 7.
      - Update to source format 3.0 (quilt).
      - Update to Standards-Version 3.8.4.
    + debian/build-deps.in,
      debian/rules:
      - Build depend on GLib 2.20 and GStreamer 0.10.29.2.
      - Build depend on ORC instead of liboil.
    + debian/patches/00*:
      - Dropped, merged upstream.
    + debian/libgstreamer-plugins-base.symbols:
      - Update symbols file with the new API.
    + debian/patches/01_videotestsrc-libm-linking.patch,
      debian/patches/02_videoscale-libm-linking.patch:
      - Link videotestsrc and videoscale with libm to fix FTBFS.

 -- Sebastian Dröge <slomo@debian.org>  Sat, 26 Jun 2010 21:12:29 +0200

gst-plugins-base0.10 (0.10.29-4) unstable; urgency=low

  * debian/patches/0007-oggdemux-Drop-all-other-Ogg-VP8-header-packets-and-m.patch,
    debian/patches/0008-oggdemux-Fix-size-checks.patch:
    + Some more fixes for the Ogg VP8 mapping.

 -- Sebastian Dröge <slomo@debian.org>  Thu, 20 May 2010 14:03:47 +0200

gst-plugins-base0.10 (0.10.29-3) unstable; urgency=low

  * debian/patches/0006-ogg-Some-more-minor-adjustments-for-the-VP8-Ogg-mapp.patch:
    + Small update to the Ogg VP8 mapping.

 -- Sebastian Dröge <slomo@debian.org>  Thu, 20 May 2010 09:09:38 +0200

gst-plugins-base0.10 (0.10.29-2) unstable; urgency=low

  * debian/patches/00*:
    + Add support for VP8 in RIFF and the Ogg plugin.

 -- Sebastian Dröge <slomo@debian.org>  Tue, 18 May 2010 20:58:11 +0200

gst-plugins-base0.10 (0.10.29-1) unstable; urgency=low

  * New upstream stable release, "Freaks":
    + debian/libgstreamer-plugins-base.symbols:
      - Update symbols to the stable version.
    + debian/rules:
      - Build depend on GStreamer >= 0.10.29.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 28 Apr 2010 09:43:04 +0200

gst-plugins-base0.10 (0.10.28.3-1) experimental; urgency=low

  * debian/control.in:
    + Recommend alsa-base (Closes: #578027).
    + Suggest alsa-utils, which gives automatic volume restore
      after reboots.
  * New upstream pre-release.

 -- Sebastian Dröge <slomo@debian.org>  Mon, 26 Apr 2010 07:59:37 +0200

gst-plugins-base0.10 (0.10.28.2-1) experimental; urgency=low

  [ Emilio Pozuelo Monfort ]
  * debian/control.in,
    debian/build-deps.in:
    - Move gtk-doc-tools to Build-Deps-Indep.
  * debian/rules:
    - Only build the docs if gtk-doc-tools is installed.

  [ Sebastian Dröge ]
  * New upstream pre-release:
    + debian/libgstreamer-plugins-base.symbols:
      - Update symbols file with the new API.
    + debian/rules:
      - Build depend on GStreamer >= 0.10.28.2.

 -- Sebastian Dröge <slomo@debian.org>  Thu, 15 Apr 2010 12:45:45 +0200

gst-plugins-base0.10 (0.10.28-1) unstable; urgency=low

  * New upstream stable release, "Those Norwegians":
    + debian/rules:
      - Build depend on GStreamer >= 0.10.28.
    + debian/patches/01_ogg-dirac-parsing.patch:
      - Dropped, merged upstream.

 -- Sebastian Dröge <slomo@debian.org>  Tue, 09 Mar 2010 09:47:27 +0000

gst-plugins-base0.10 (0.10.27-1) unstable; urgency=low

  * New upstream stable release, "No Mistakes Allowed":
    + debian/rules:
      - Build depend on GStreamer >= 0.10.27.
  * debian/patches/01_ogg-dirac-parsing.patch:
    + Patch from upstream bugzilla (#611900) to fix parsing
      of Dirac headers inside Ogg files.

 -- Sebastian Dröge <slomo@debian.org>  Mon, 08 Mar 2010 09:48:28 +0000

gst-plugins-base0.10 (0.10.26.3-1) experimental; urgency=low

  * New upstream pre-release:
    + debian/rules:
      - Build depend on GStreamer >= 0.10.26.3.

 -- Sebastian Dröge <slomo@debian.org>  Thu, 25 Feb 2010 08:26:32 +0100

gst-plugins-base0.10 (0.10.26.2-1) experimental; urgency=low

  * New upstream pre-release.

 -- Sebastian Dröge <slomo@debian.org>  Fri, 19 Feb 2010 13:48:54 +0100

gst-plugins-base0.10 (0.10.26-1) unstable; urgency=low

  * New upstream release, "You will know when you get there":
    + debian/rules:
      - Update GStreamer build dependency to >= 0.10.26.
    + debian/libgstreamer-plugins-base.symbols:
      - Update to use the stable versions.

 -- Sebastian Dröge <slomo@debian.org>  Thu, 11 Feb 2010 10:31:17 +0100

gst-plugins-base0.10 (0.10.25.3-1) experimental; urgency=low

  * New upstream pre-release.

 -- Sebastian Dröge <slomo@debian.org>  Fri, 05 Feb 2010 10:10:01 +0100

gst-plugins-base0.10 (0.10.25.2-1) experimental; urgency=low

  * New upstream pre-release:
    + debian/patches/01_baseaudiosink-remove-pulsesink-hack.patch,
      debian/patches/02_playbin2-proxy-volume-changes.patch,
      debian/patches/03_playsink-proxy-volume-changes.patch,
      debian/patches/04_playsink-update-volume-mute-state.patch,
      debian/patches/05_playsink-set-volume-once.patch,
      debian/patches/11_theoradec_timestamp.patch:
      - Dropped, merged upstream.
    + debian/build-deps.in,
      debian/rules,
      debian/control.in:
      - Build depend on Pango 1.16.0, GLib 2.18.0, iso-codes, 
        GStreamer 0.10.25.2.
    + debian/gstreamer-plugins-base.install:
      - Drop queue2 plugin, it's in core now.
    + debian/libgstreamer-plugins-base.symbols:
      - Update for new API.
  * debian/build-deps.in,
    debian/rules,
    debian/gstreamer-plugins-base.install:
    + Don't build cdparanoia plugin on hurd, fixes FTBFS (Closes: #554977).
      Thanks to Samuel Thibault for the patch.
  * debian/control.in:
    + Fix typo in package description (Closes: #557367).
    + Remove David I. Lehn from Uploaders (Closes: #557278).

 -- Sebastian Dröge <slomo@debian.org>  Wed, 27 Jan 2010 07:51:46 +0100

gst-plugins-base0.10 (0.10.25-7) unstable; urgency=low

  * debian/rules:
    + Don't include the plugin library files in the dh_makeshlibs call.

 -- Sebastian Dröge <slomo@debian.org>  Sun, 06 Dec 2009 13:59:12 +0100

gst-plugins-base0.10 (0.10.25-6) unstable; urgency=low

  * debian/patches/11_theoradec_timestamp.patch
    + Added. Use the timestamp of the incoming buffer if it's valid instead of
      the one in the frame. Fixes issues with RTP streams where the framerate
      is less stable then it should be.

 -- Sjoerd Simons <sjoerd@debian.org>  Thu, 12 Nov 2009 23:55:05 +0000

gst-plugins-base0.10 (0.10.25-5) unstable; urgency=low

  * debian/patches/02_playbin2-proxy-volume-changes.patch,
    debian/patches/03_playsink-proxy-volume-changes.patch,
    debian/patches/04_playsink-update-volume-mute-state.patch,
    debian/patches/05_playsink-set-volume-once.patch:
    + Patches from upstream GIT to improve volume/mute handling
      in playbin2. Needed for new totem.

 -- Sebastian Dröge <slomo@debian.org>  Fri, 30 Oct 2009 10:30:54 +0100

gst-plugins-base0.10 (0.10.25-4) unstable; urgency=low

  * debian/patches/01_baseaudiosink-remove-pulsesink-hack.patch,
    debian/control.in:
    + Remove pulsesink hack to fix operation with pulsesink from
      gst-plugins-good 0.10.16-4.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 21 Oct 2009 19:59:08 +0200

gst-plugins-base0.10 (0.10.25-3) unstable; urgency=low

  * debian/libgstreamer-plugins-base.install,
    debian/control.in:
    + Don't ship typelib files in two packages.

 -- Sebastian Dröge <slomo@debian.org>  Tue, 20 Oct 2009 12:12:05 +0200

gst-plugins-base0.10 (0.10.25-2) unstable; urgency=low

  * debian/rules,
    debian/control.in,
    debian/build-deps.in:
    + Update for the GObject-Introspection mini spec.

 -- Sebastian Dröge <slomo@debian.org>  Tue, 20 Oct 2009 11:54:43 +0200

gst-plugins-base0.10 (0.10.25-1) unstable; urgency=low

  * New upstream release, 'Standard disclaimers apply':
    + debian/libgstreamer-plugins-base.symbols:
      - Updated for the new version.

 -- Sebastian Dröge <slomo@debian.org>  Mon, 05 Oct 2009 18:10:19 +0200

gst-plugins-base0.10 (0.10.24.4-1) experimental; urgency=low

  [ Loïc Minier ]
  * Also disable doc building on armel.

  [ Sebastian Dröge ]
  * debian/rules:
    + Use libgudev on Linux for v4l device detection. 
  * New upstream pre-release.

 -- Sebastian Dröge <slomo@debian.org>  Fri, 02 Oct 2009 07:42:27 +0200

gst-plugins-base0.10 (0.10.24.3-1) experimental; urgency=low

  * New upstream pre-release:
    + debian/patches/01_introspection-pkgconfig.patch:
      - Dropped, merged upstream.

 -- Sebastian Dröge <slomo@debian.org>  Thu, 17 Sep 2009 07:14:35 +0200

gst-plugins-base0.10 (0.10.24.2-2) experimental; urgency=low

  * debian/rules:
    + Set HOME to a fake home directory to prevent writing
      to a non-writable buildd home which results in FTBFS. 

 -- Sebastian Dröge <slomo@debian.org>  Sun, 13 Sep 2009 11:30:27 +0200

gst-plugins-base0.10 (0.10.24.2-1) experimental; urgency=low

  * New upstream pre-release:
    + debian/rules,
      debian/build-deps.in:
      - Update build dependencies.
    + debian/libgstreamer-plugins-base0.10-0.symbols:
      - Updated for the new version.
    + debian/control.in,
      debian/build-deps.in,
      debian/libgstreamer-plugins-base.install,
      debian/libgstreamer-plugins-base-dev.install:
      - Enable GObject-Introspection support and ship the generated
        files in the -dev and shared library package.
    + debian/patches/11_fix_skew_clock_slaving.patch:
      - Dropped, merged upstream.
  * debian/control.in:
    + Update Standards-Version to 3.8.3.
  * debian/patches/01_introspection-pkgconfig.patch:
    + Fix build system to actually find the pkg-config files
      when building the introspection files.

 -- Sebastian Dröge <slomo@debian.org>  Sat, 12 Sep 2009 12:56:53 +0200

gst-plugins-base0.10 (0.10.24-2) unstable; urgency=low

  * debian/patches/11_fix_skew_clock_slaving.patch:
    + Added. Fixes resyncing in the skew clock slaving method, which caused
      extra delays to be added to the pipeline. (From upstream git)

 -- Sjoerd Simons <sjoerd@debian.org>  Thu, 10 Sep 2009 22:49:39 +0100

gst-plugins-base0.10 (0.10.24-1) unstable; urgency=low

  * New upstream release, 'Counting the days':
    + debian/libgstreamer-plugins-base.symbols:
      - Updated for the new release.
    + debian/rules:
      - Update GStreamer core build dependency to >= 0.10.24.
  * debian/control.in:
    + Updated Standards-Version to 3.8.2, no additional changes needed.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 05 Aug 2009 08:03:10 +0200

gst-plugins-base0.10 (0.10.23.4-1) experimental; urgency=low

  * New upstream pre-release:
    + debian/libgstreamer-plugins-base.symbols:
      - Updated for the new pre-release.

 -- Sebastian Dröge <slomo@debian.org>  Fri, 24 Jul 2009 18:42:16 +0200

gst-plugins-base0.10 (0.10.23.3-1) experimental; urgency=low

  * New upstream pre-release:
    + debian/libgstreamer-plugins-base.symbols:
      - Updated for the new pre-release.

 -- Sebastian Dröge <slomo@debian.org>  Tue, 21 Jul 2009 09:50:21 +0200

gst-plugins-base0.10 (0.10.23.2-1) experimental; urgency=low

  * New upstream pre-release:
    + debian/build-deps.in,
      debian/rules:
      - Update build dependencies.
    + debian/libgstreamer-plugins-base.symbols:
      - Updated for the new API.
    + debian/patches/01_playbin2-cdda-regression.patch:
      - Dropped, merged upstream.
  * debian/control.in:
    + Updated Standards-Version to 3.8.2, no additional changes needed.

 -- Sebastian Dröge <slomo@debian.org>  Thu, 16 Jul 2009 06:18:35 +0200

gst-plugins-base0.10 (0.10.23-4) UNRELEASED; urgency=low

  * debian/control.in:
    + Fix section of debug package. 

 -- Sebastian Dröge <slomo@debian.org>  Thu, 18 Jun 2009 13:35:45 +0200

gst-plugins-base0.10 (0.10.23-3) unstable; urgency=low

  * debian/build-deps.in,
    debian/control.in:
    + (Build-) depend on libglib2.0-doc and gstreamer0.10-doc to
      get correct cross references.
  * debian/control.in:
    + Add ${misc:Depends} everywhere.
    + Let the -dbg package only suggest the gnomevfs package
      as the GNOME metapackage now conflicts with the gnomevfs
      package (Closes: #532469).

 -- Sebastian Dröge <slomo@debian.org>  Wed, 17 Jun 2009 12:04:43 +0200

gst-plugins-base0.10 (0.10.23-2) unstable; urgency=low

  * debian/patches/01_playbin2-cdda-regression.patch:
    + Fix a regression with cdda:// playback in playbin2.
      Patch from upstream GIT.

 -- Sebastian Dröge <slomo@debian.org>  Fri, 15 May 2009 07:03:35 +0200

gst-plugins-base0.10 (0.10.23-1) unstable; urgency=low

  * New upstream release, 'Emergency de-stress call':
    + debian/libgstreamer.symbols:
      - Change new symbol version to 0.10.23.

 -- Sebastian Dröge <slomo@debian.org>  Mon, 11 May 2009 10:53:55 +0200

gst-plugins-base0.10 (0.10.22.4-1) experimental; urgency=low

  * New upstream pre-release.

 -- Sebastian Dröge <slomo@debian.org>  Thu, 07 May 2009 10:00:24 +0200

gst-plugins-base0.10 (0.10.22.3-1) experimental; urgency=low

  * debian/control.in:
    + Updated Standards-Version to 3.8.1, no additional changes needed.
  * New upstream pre-release.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 22 Apr 2009 08:11:28 +0200

gst-plugins-base0.10 (0.10.22.2-1) experimental; urgency=low

  * New upstream pre-release:
    + debian/rules:
      - Require GStreamer >= 0.10.22.2.
    + debian/patches/01_alsamixer-race-condition.patch,
      debian/patches/02_fft-allocations.patch,
      debian/patches/03_base64-overflow-CVE-2009-0586.patch,
      debian/patches/04_alsamixer-deadlock.patch:
      - Dropped, merged upstream.
    + debian/libgstreamer-plugins-base.symbols:
      - Updated for the new symbols.

 -- Sebastian Dröge <slomo@debian.org>  Thu, 16 Apr 2009 09:19:02 +0200

gst-plugins-base0.10 (0.10.22-5) unstable; urgency=low

  * debian/rules:
    + Include clean-la.mk to remove dependency_libs from the .la files.
      This is a preparation to drop them later and to remove unneeded
      dependencies when linking to the GStreamer libraries.
  * debian/patches/04_alsamixer-deadlock.patch:
    + Fix a deadlock in alsamixer in some error cases. Patch from upstream
      GIT, fixes a gnome-sound-properties freeze.

 -- Sebastian Dröge <slomo@debian.org>  Sat, 04 Apr 2009 08:40:17 +0200

gst-plugins-base0.10 (0.10.22-4) unstable; urgency=high

  * debian/patches/03_base64-overflow-CVE-2009-0586.patch:
    + SECURITY: Fix overflow in the base64 code, CVE-2009-0586.
      Patch from upstream GIT.

 -- Sebastian Dröge <slomo@debian.org>  Tue, 17 Mar 2009 10:46:54 +0100

gst-plugins-base0.10 (0.10.22-3) unstable; urgency=low

  * debian/patches/01_alsamixer-race-condition.patch:
    + Fix race condition in alsamixer which made the volume controls
      useless in many situations (Closes: #514685).
      Patch from upstream GIT.

 -- Sebastian Dröge <slomo@debian.org>  Thu, 26 Feb 2009 11:04:51 +0100

gst-plugins-base0.10 (0.10.22-2) unstable; urgency=low

  * Upload to unstable.

 -- Sebastian Dröge <slomo@debian.org>  Sun, 15 Feb 2009 19:57:57 +0100

gst-plugins-base0.10 (0.10.22-1) experimental; urgency=low

  * New upstream release, 'Hidey Hidey Hidey Ho':
    + debian/patches/01_fft-struct-alignment.patch:
      - Dropped, merged upstream.
    + debian/patches/02_fft-allocations.patch:
      - Initialize some uninitialized variables.
    + debian/rules:
      - Update GStreamer build dependency to 0.10.22.
    + debian/libgstreamer-plugins-base.symbols:
      - Update for the new version.

 -- Sebastian Dröge <slomo@debian.org>  Tue, 20 Jan 2009 09:11:18 +0100

gst-plugins-base0.10 (0.10.21.3-2) experimental; urgency=low

  * debian/patches/01_fft-struct-alignment.patch,
    debian/patches/02_fft-allocations.patch:
    + Fix struct alignment in the FFT library, resulting
      in SIGBUS on sparc.
    + Save one allocation per FFT instance.

 -- Sebastian Dröge <slomo@debian.org>  Tue, 13 Jan 2009 21:09:04 +0100

gst-plugins-base0.10 (0.10.21.3-1) experimental; urgency=low

  * New upstream pre-release:
    + debian/patches/01_gio-modules.patch,
      debian/patches/02_gnome-vfs-modules.patch,
      debian/patches/99_autoconf.patch:
      - Dropped, merged upstream.
    + debian/libgstreamer-plugins-base.symbols:
      - Updated with the new symbols.

 -- Sebastian Dröge <slomo@debian.org>  Sun, 11 Jan 2009 20:23:06 +0100

gst-plugins-base0.10 (0.10.21.2-1) experimental; urgency=low

  * New upstream pre-release:
    + debian/patches/02_gtkdoc-rebase.patch,
      debian/patches/03_image-tag-length.patch:
      - Dropped, merged upstream.
    + debian/rules:
      - Update gstreamer build dependency.
    + debian/gstreamer-plugins-base.install,
      debian/libgstreamer-plugins-base.install:
      - Add new libgstapp library and app plugin.
    + debian/patches/01_gio-modules.patch,
      debian/patches/02_gnome-vfs-modules.patch,
      debian/patches/99_autoconf.patch:
      - Add plugin dependencies for the GnomeVFS, GIO, GVfs
        modules.
    + debian/libgstreamer-plugins-base.symbols:
      - Add new symbols.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 07 Jan 2009 12:12:13 +0100

gst-plugins-base0.10 (0.10.21-3) experimental; urgency=low

  * debian/patches/03_image-tag-length.patch:
    + Patch from upstream CVS to fix a regression with the length of
      image tags which makes all non-URI list image tags broken.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 22 Oct 2008 09:02:26 +0200

gst-plugins-base0.10 (0.10.21-2) experimental; urgency=low

  * debian/patches/02_gtkdoc-rebase.patch:
    + Don't require gtk-doc for the docs. Fixes the build with
      binary-arch only.
  * debian/patches/02_gtk-doc-cflags.patch:
    + Dropped, this was already fixed different upstream.

 -- Sebastian Dröge <slomo@debian.org>  Tue, 07 Oct 2008 11:33:19 +0200

gst-plugins-base0.10 (0.10.21-1) experimental; urgency=low

  * New upstream release, 'We Could Be Wrong':
    + debian/rules:
      - Build depend on gstreamer >= 0.10.21.
    + debian/build-deps.in:
      - Build depend on GTK >= 2.12 for some tests.

 -- Sebastian Dröge <slomo@debian.org>  Sat, 04 Oct 2008 12:27:42 +0200

gst-plugins-base0.10 (0.10.20-3) experimental; urgency=low

  * debian/control.in:
    + Suggest gstreamer-codec-install instead of gnome-app-install.
    + Recommend gvfs for the GIO plugin.
    + Wrap control fields.
  * debian/rules:
    + Build depend on gstreamer >= 0.10.20-3 for the new virtual package
      names.

 -- Sebastian Dröge <slomo@debian.org>  Fri, 15 Aug 2008 09:25:49 +0200

gst-plugins-base0.10 (0.10.20-2) experimental; urgency=low

  * debian/control.in,
    debian/rules:
    + Use new automatic codec installation infrastructure.
  * debian/rules:
    + Use /usr/bin/gstreamer-codec-install as codec installation helper. This
      is an alternative that is provided by gnome-app-install for example.
  * debian/control.in:
    + Let the debug package only depend on gstreamer0.10-alsa on Linux.

 -- Sebastian Dröge <slomo@debian.org>  Thu, 07 Aug 2008 15:49:44 +0200

gst-plugins-base0.10 (0.10.20-1) unstable; urgency=low

  * New upstream release, 'Here I Go Again':
    + debian/libgstreamer-plugins-base.symbols:
      - Updated for the new version.
  * debian/control.in:
    + Updated Standards-Version to 3.8.0, no additional changes needed.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 18 Jun 2008 20:14:42 +0200

gst-plugins-base0.10 (0.10.19.3-1) experimental; urgency=low

  * New upstream pre-release.
  * debian/patches/02_gtk-doc-cflags.patch:
    + Use the CFLAGS passed to configure also for the gtk-doc utitilities.

 -- Sebastian Dröge <slomo@debian.org>  Thu, 12 Jun 2008 12:10:52 +0200

gst-plugins-base0.10 (0.10.19.2-1) experimental; urgency=low

  [ Sjoerd Simons ]
  * debian/patches/12_decodebin_fakesink.patch
    + Added.  Lock the fakesink before setting the state to NULL and removing
    it from the bin so that a concurrent state change cannot interfere. (From
    upstream CVS)

  [ Sebastian Dröge ]
  * New upstream pre-release:
    + Fixes parsing of tmplayer/vplayer subtitles (Closes: #478301).
    + debian/patches/01_gio_no_http.patch,
      debian/patches/03_gio-uri-schemes-fix.patch,
      debian/patches/11_baseaudiosink_rounding_errors.patch,
      debian/patches/12_decodebin_fakesink.patch,
      debian/patches/75_build_docs_without_python_xml.patch:
      - Dropped, merged upstream.
    + debian/build-deps.in,
      debian/rules:
      - Bump gstreamer build dependency to >= 0.10.19.1.
      - Bump liboil build dependency to >= 0.3.14.
    + debian/libgstreamer-plugins-base.symbols:
      - Update symbol files for the new symbols.
  * debian/rules:
    + Pass -c4 to to dh_makeshlibs to fail the build when the symbol files is
      out of date.
    + Don't compress gtk-doc documentation to make gtk-doc happy.
  * debian/patches/02_werror.patch,
    debian/rules:
    + Drop patch to prevent usage of -Werror and append -Wno-error to
      CFLAGS and CXXFLAGS instead.

 -- Sebastian Dröge <slomo@debian.org>  Thu, 05 Jun 2008 08:26:35 +0200

gst-plugins-base0.10 (0.10.19-2) unstable; urgency=low

  * debian/patches/11_baseaudiosink_rounding_errors.patch
    + Added. Prevents the accumulation of rounding errors, causing audio and
    video to get out of sync in certain streams (From upstream CVS)

 -- Sjoerd Simons <sjoerd@debian.org>  Mon, 12 May 2008 12:01:04 +0200

gst-plugins-base0.10 (0.10.19-1) unstable; urgency=high

  * New upstream bugfix release, "Good Times":
    + debian/patches/04_rtsp-eagain.patch:
      - Dropped, merged upstream.

 -- Sebastian Dröge <slomo@debian.org>  Mon, 07 Apr 2008 11:42:41 +0200

gst-plugins-base0.10 (0.10.18-3) unstable; urgency=low

  * debian/patches/03_gio-uri-schemes-fix.patch:
    + Correctly set the supported URI schemes without leaving a NULL
      somewhere except at the end.
  * debian/patches/04_rtsp-eagain.patch:
    + Retry on EAGAIN instead of erroring out.

 -- Sebastian Dröge <slomo@debian.org>  Tue, 25 Mar 2008 09:07:03 +0100

gst-plugins-base0.10 (0.10.18-2) unstable; urgency=low

  * debian/patches/01_gio_no_http.patch:
    + Don't use GIO for HTTP(S). It doesn't work that good and can't support
      icecast metadata by design. Instead souphttpsrc/neonhttpsrc/gnomevfssrc
      should be used for HTTP(S).

 -- Sebastian Dröge <slomo@debian.org>  Sat, 22 Mar 2008 15:19:52 +0100

gst-plugins-base0.10 (0.10.18-1) unstable; urgency=low

  * New upstream release, "I will follow":
    + debian/libgstreamer-plugins-base.symbols:
      - Updated for the new version.

 -- Sebastian Dröge <slomo@debian.org>  Fri, 21 Mar 2008 01:16:21 +0100

gst-plugins-base0.10 (0.10.17.4-1) experimental; urgency=low

  * New upstream pre-release:
    + debian/libgstreamer-plugins-base.symbols,
      debian/rules:
      - Update symbols for 0.10.17.4 and use file versionize magic to
        get the correct filename for the symbols file.
    + debian/patches/02_werror.patch:
      - Don't build with -Werror.
    + debian/rules:
      - Build depend on gstreamer >= 0.10.17.4.

 -- Sebastian Dröge <slomo@debian.org>  Tue, 18 Mar 2008 13:31:18 +0100

gst-plugins-base0.10 (0.10.17.3-1) experimental; urgency=low

  * New upstream pre-release:
    + debian/libgstreamer-plugins-base0.10-0.symbols:
      - Updated.
    + debian/rules:
      - Update GStreamer build dependency to >= 0.10.17.3.
  * debian/patches/75_build_docs_without_python_xml.patch,
    debian/build-deps.in:
    + Stop using pyxml for building the docs (Closes: #468628).
  * debian/gstreamer-plugins-base.install,
    debian/build-deps.in,
    debian/rules:
    + Enable the GIO plugin.

 -- Sebastian Dröge <slomo@debian.org>  Tue, 11 Mar 2008 04:55:40 +0100

gst-plugins-base0.10 (0.10.17.2-1) experimental; urgency=low

  * New upstream pre-release:
    + debian/patches/01_theoradec-granulepos.patch:
      - Dropped, merged upstream.
    + debian/rules:
      - Update gstreamer build dependency.
    + debian/libgstreamer-plugins-base0.10-0.symbols:
      - Update symbols file.
  * debian/control.in:
    + Add Homepage field.

 -- Sebastian Dröge <slomo@debian.org>  Tue, 04 Mar 2008 15:57:08 +0100

gst-plugins-base0.10 (0.10.17-3) unstable; urgency=low

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

 -- Sebastian Dröge <slomo@debian.org>  Tue, 19 Feb 2008 08:11:32 +0100

gst-plugins-base0.10 (0.10.17-2) unstable; 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 ]
  * debian/patches/01_theoradec-granulepos.patch:
    + Increment granulepos for new-bitstream versions appropriately. Fixes
      playback of some Theora movies, e.g. LCA talks. Patch from upstream CVS
      (Closes: #465106).

 -- Sebastian Dröge <slomo@debian.org>  Mon, 11 Feb 2008 07:49:20 +0100

gst-plugins-base0.10 (0.10.17-1) unstable; urgency=low

  * New upstream bugfix-only release, "Peanut Butter and Jelly":
    + Fixes ABI breakage in GstMixer related classes (Closes: #463202).

 -- Sebastian Dröge <slomo@debian.org>  Wed, 30 Jan 2008 16:06:49 +0100

gst-plugins-base0.10 (0.10.16-1) unstable; urgency=low

  * New upstream release, "Scheduled Interruption", with API additions:
    + debian/libgstreamer-plugins-base0.10-0.symbols:
      - Update symbols for 0.10.16.
  * debian/control.in:
    + Add Replaces for gstreamer0.10-plugins-bad/-dbg as found in the
      Ubuntu package to keep their delta lower.
    + Add Conflicts for totem-gstreamer as found in the Ubuntu package
      to keep their delta lower.

 -- Sebastian Dröge <slomo@debian.org>  Tue, 29 Jan 2008 11:08:13 +0100

gst-plugins-base0.10 (0.10.15.4-1) experimental; urgency=low

  * New upstream pre-release.
  * debian/libgstreamer-plugins-base0.10-0.symbols,
    debian/control.in:
    + Add a symbols file for the GStreamer base libraries, generated from all
      0.10 releases since 0.10.0. Build depend on dpkg-dev >= 1.14.13 for this.

 -- Sebastian Dröge <slomo@debian.org>  Tue, 22 Jan 2008 13:22:56 +0100

gst-plugins-base0.10 (0.10.15.3-1) experimental; urgency=low

  * New upstream pre-release.

 -- Sebastian Dröge <slomo@debian.org>  Fri, 18 Jan 2008 05:58:20 +0100

gst-plugins-base0.10 (0.10.15.2-1) experimental; urgency=low

  * New upstream pre-release:
    + Adds support for chained Ogg files (Closes: #415572). This only works
      if the playback application uses the new playbin2 plugin that is still
      API unstable.
    + debian/patches/01_baseaudiosink-eos-hanging.patch,
      debian/patches/02_audioresample-latency.patch:
      - Dropped, merged upstream.
    + debian/gstreamer-plugins-base.install:
      - Drop removed uridecodebin plugin, GstURIDecodeBin is in the decodebin2
        plugin now.
  * debian/rules:
    + Update gstreamer build dependency.
  * debian/control.in:
    + Update Standards-Version to 3.7.3, no additional changes needed.

 -- Sebastian Dröge <slomo@debian.org>  Tue, 15 Jan 2008 15:23:54 +0100

gst-plugins-base0.10 (0.10.15-4) unstable; urgency=low

  [ Sebastian Dröge ]
  * debian/rules:
    + Set package name to "GStreamer Base Plugins" instead of "GStreamer
      Plugins".

  [ Loic Minier ]
  * Bump up type-handling build-dep to >= 0.2.14 and call it with two
    arguments again.

 -- Loic Minier <lool@dooz.org>  Mon, 10 Dec 2007 16:09:53 +0100

gst-plugins-base0.10 (0.10.15-3) unstable; urgency=low

  * debian/patches/01_baseaudiosink-eos-hanging.patch:
    + Properly calculate EOS time to prevent hanging for some time
      before receiving an EOS event (Closes: #452174).
      Patch taken from upstream CVS.
  * debian/patches/02_audioresample-latency.patch:
    + Implement latency query in audioresample. This fixes audioresample
      in a live pipeline. Patch taken from upstream CVS.
  * debian/rules:
    + Run the testsuite but don't fail the build if it doesn't work.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 28 Nov 2007 11:09:04 +0100

gst-plugins-base0.10 (0.10.15-2) unstable; urgency=low

  * debian/rules,
    debian/build-deps.in:
    + Use HOME instead of GNOME_VFS_HOME as the variable name changed in
      2.20.0-2. (Closes: #451905)

 -- Sebastian Dröge <slomo@debian.org>  Mon, 19 Nov 2007 17:24:06 +0100

gst-plugins-base0.10 (0.10.15-1) unstable; urgency=low

  * New upstream release, "Light Years Ahead", with API additions:
    + Fixes FTBFS if built twice in a row (Closes: #442587).
    + debian/patches/02_short-ogg-files.patch:
      - Dropped, merged upstream.
    + debian/control.in:
      - Update gstreamer0.10 build dependency to >= 0.10.14.1.
    + debian/libgstreamer-plugins-base.install:
      - Add new libgstfft library.

 -- Sebastian Dröge <slomo@debian.org>  Tue, 13 Nov 2007 15:06:10 +0100

gst-plugins-base0.10 (0.10.14-4) unstable; urgency=low

  * debian/patches/02_short-ogg-files.patch:
    + Fix playback of very short Ogg/Vorbis files. Patch from upstream CVS,
      (Closes: #441364).
  * debian/rules:
    + s/curdir/CURDIR/ to fix FTBFS.
  * debian/build-deps.in:
    + Fix minimal required GnomeVFS version.

 -- Sebastian Dröge <slomo@debian.org>  Sun, 09 Sep 2007 12:01:19 +0200

gst-plugins-base0.10 (0.10.14-3) unstable; urgency=low

  * debian/build-deps.in,
    debian/rules:
    + Require GnomeVFS >= 2.18.1-4 for the GNOME_VFS_HOME environment
      variable and use this and GST_REGISTRY for the dh_gstscancodecs call
      to make it work on buildds with non-writable homes.

 -- Sebastian Dröge <slomo@debian.org>  Fri, 07 Sep 2007 16:08:15 +0200

gst-plugins-base0.10 (0.10.14-2) unstable; urgency=low

  [ Sebastian Dröge ]
  * debian/rules:
    + Correctly set LD_LIBRARY_PATH for dh_gstscancodecs.
  * debian/control.in:
    + Recommend libgnomevfs2-extra on gstreamer0.10-gnomevfs. This is
      necessary to get HTTP support (Closes: #432363).

  [ Loic Minier ]
  * Fix LD_LIBRARY_PATH.
  * Drop misc obsolete compatibility vars from rules.
  * Drop useless $(version).
  * Cleanup rules.

  [ Sebastian Dröge ]
  * debian/rules:
    + Don't call dh_gstscancodecs for now. As GnomeVFS needs a writable home
      directory when initializing dh_gstscancodecs fails on the GnomeVFS
      plugin and the build fails (Closes: #435978).

 -- Sebastian Dröge <slomo@debian.org>  Mon, 13 Aug 2007 14:22:15 +0200

gst-plugins-base0.10 (0.10.14-1) unstable; urgency=low

  [ Sebastian Dröge ]
  * New upstream release 'Light Years Ahead', with API additions:
    + Uses ALSA mixer notifications instead of polling (Closes: #424016).
  * debian/patches/20_oggmux-schroedinger.patch:
    + Dropped, merged upstream.
  * debian/rules:
    + Update gstreamer0.10 build dependency to >= 0.10.13.1.
  * debian/libgstreamer-plugins-base.install:
    + Add new libgstrtsp and libgstsdp libraries.
  * debian/gstreamer-plugins-base.install:
    + Add queue2 and uridecodebin plugins.
  * debian/control.in:
    + Suggest libvisual-0.4-plugins in gstreamer0.10-plugins-base for the
      libvisual plugin.
    + Use ${binary:Version} instead of ${Source-Version} to make lintian
      happy.

  [ Loic Minier ]
  * Pass --with-install-plugins-helper="/usr/bin/gnome-codec-install" to
    configure; thanks Julian Andres Klode; suggest gnome-app-install;
    closes: 434999.

  [ Sebastian Dröge ]
  * debian/rules,
    debian/build-deps.in:
    + Run dh_gstscancodecs to export the codecs database.

 -- Sebastian Dröge <slomo@debian.org>  Fri, 03 Aug 2007 17:31:53 +0200

gst-plugins-base0.10 (0.10.13-2) unstable; urgency=low

  * debian/patches/20_oggmux-schroedinger.patch:
    + Patch from upstream CVS to fix muxing of Dirac video in Ogg containers.

 -- Sebastian Dröge <slomo@debian.org>  Thu, 07 Jun 2007 16:29:57 +0200

gst-plugins-base0.10 (0.10.13-1) unstable; urgency=low

  * New upstream release with some API additions, "What's going on?":
    + Fixes internal dataflow error with subtitles (Closes: #425323).
  * debian/rules:
    + There's no gstreamer0.10-theora package anymore since ages so don't try
      to generate an install file for it.
  * debian/control:
    + Update libtheora build dependency. At least 1.0alpha5 is now required.

 -- Sebastian Dröge <slomo@debian.org>  Tue, 05 Jun 2007 17:29:51 +0200

gst-plugins-base0.10 (0.10.12.1+cvs20070529-1) unstable; urgency=low

  * Prepare CVS snapshot
  * Bump libgstreamer0.10-dev build-depend to 0.10.12.1
  * Add myself to Uploaders

 -- Sjoerd Simons <sjoerd@debian.org>  Tue, 29 May 2007 09:08:13 +0200

gst-plugins-base0.10 (0.10.12-2) unstable; urgency=low

  * Upload to unstable
  * Merge experimental branch:
    + New upstream release 0.10.12, "Zombie Horde":
      - Updated german translations (Closes: #379505)
      - debian/rules:
        . Update gstreamer build dependency to >= 0.10.11.1
      - debian/libgstreamer-plugins-base.install:
        . Add libgstpbutils-0.10 library
      - debian/patches/20_oggdemux-check-bos.patch:
        . Dropped, applied upstream
    + Let libgstreamer-plugins-base0.10-dev depend on the same version of
      libgstreamer0.10-dev as the one gst-plugins-base0.10 build-depends on.
      (Loic Minier)
    + debian/control:
      - Updated to use my debian.org mail address
    + New upstream release 0.10.11, "Dumb things":
      - debian/patches/70_relibtoolize.patch:
        . Dropped, upstream uses Debian's libtool
      - debian/build-deps.in:
        . Raise liboil0.3-dev build dependency to >= 0.3.8
      - debian/rules:
        . Raise gstreamer0.10 build-dependency to >= 0.10.10.1
      - debian/gstreamer-plugins-base.install:
        . Add decodebin2 plugin

 -- Sebastian Dröge <slomo@debian.org>  Mon,  9 Apr 2007 23:40:49 +0200

gst-plugins-base0.10 (0.10.10-4) unstable; urgency=medium

  * Fix superfluous .orig file in patch 20_oggdemux-check-bos;
    thanks Luk Claes.

 -- Loic Minier <lool@dooz.org>  Mon, 29 Jan 2007 17:59:40 +0100

gst-plugins-base0.10 (0.10.10-3) unstable; urgency=medium

  * New patch, 20_oggdemux-check-bos, fixes handling of problems when reading
    BOS pages in the oggdemux element; reported by Sam Hocevar; from
    GNOME #399340; closes: #407004.

 -- Loic Minier <lool@dooz.org>  Mon, 22 Jan 2007 17:39:59 +0100

gst-plugins-base0.10 (0.10.10-2) unstable; urgency=low

  * Drop superfluous libgstvideo4linux.so lines in
    gstreamer-plugins-base.install; thanks Aurelien Jarno for fixing
    GNU/kFreeBSD again! closes: #391853.

 -- Loic Minier <lool@dooz.org>  Mon,  6 Nov 2006 18:50:31 +0100

gst-plugins-base0.10 (0.10.10-1) unstable; urgency=low

  [ Sebastian Dröge ]
  * New upstream release, "Chorizo", some API additions.
    - Fix handling of ALSA emu10k1 mixer tracks. (Closes: #387095)
    - debian/patches/70_relibtoolize.patch:
      + Updated
    - debian/rules:
      + Bump libgstreamer0.10-dev build dependency to (>= 0.10.9.1)
    - debian/gstreamer-plugins-base.install:
      + Add the new GDP element

  [ Loic Minier ]
  * Force generation of debian/control, whatever the timestamps say.
  * Fix duplicate dependencies.

 -- Loic Minier <lool@dooz.org>  Fri, 15 Sep 2006 17:54:16 +0200

gst-plugins-base0.10 (0.10.9-3) unstable; urgency=low

  * debian/rules,
    debian/control.in:
    + Add a -dbg package
  * debian/compat,
    debian/build-deps.in:
    + Bump debhelper compat level to 5

 -- Sebastian Dröge <slomo@ubuntu.com>  Wed, 23 Aug 2006 22:14:56 +0200

gst-plugins-base0.10 (0.10.9-2) unstable; urgency=medium

  * Don't build the doc on arm and m68k.  It's painfully long, and -- at least
    on arm -- it segfaults; this is to lower the impact of #383147.
  * Update TODO list.

 -- Loic Minier <lool@dooz.org>  Sat, 19 Aug 2006 23:25:01 +0200

gst-plugins-base0.10 (0.10.9-1) unstable; urgency=low

  * New upstream release, "I walk the line", with API additions.
    - Bump up libgstreamer0.10-dev build-dep to >= 0.10.8.1.
    - Update 10_gnome-vfs-dav-url patch.
    - Drop 11_audioresample-non-negociated-errors patch, merged upstream.
    - Update 70_relibtoolize patch.

 -- Loic Minier <lool@dooz.org>  Sat, 15 Jul 2006 11:01:08 +0200

gst-plugins-base0.10 (0.10.8-2) unstable; urgency=low

  [ Loic Minier ]
  * New patch, 10_gnome-vfs-dav-url, to allow the gnomevfs plugin to handle
    dav:// URIs, thanks Mike Hommey. (Closes: #370362)
  * New patch, 11_audioresample-non-negociated-errors from upstream, to clear
    the internal state of audioresample properly and hence avoid
    "non-negociated" errors. (Closes: #376544)

  [ Sebastian Dröge ]
  * Change libvisual0.2-dev Build-Depends to libvisual-0.4-dev

 -- Sebastian Dröge <slomo@ubuntu.com>  Thu,  6 Jul 2006 11:07:35 +0200

gst-plugins-base0.10 (0.10.8-1) unstable; urgency=low

  * New upstream release, "Moar gij ziet mij nie".
    - Bump up libgstreamer0.10-dev build-dep to >= 0.10.6.1.
    - New patch, 70_relibtoolize, ditto.
    - Drop 01_alsasink-query-rates, included and changed upstream.
    - Query the supported sampling rates from ALSA (Closes: #365877)

 -- Loic Minier <lool@dooz.org>  Sun, 11 Jun 2006 14:50:05 +0200

gst-plugins-base0.10 (0.10.7-2) unstable; urgency=low

  * Bump up Standards-Version to 3.7.2.
    [debian/control, debian/control.in]
  * Export OIL_CPU_FLAGS=0 for commands launched during the build process as
    it can cause build failures on buildds with specific hardware at build
    time.
    [debian/rules]

 -- Loic Minier <lool@dooz.org>  Thu, 18 May 2006 14:48:33 +0200

gst-plugins-base0.10 (0.10.7-1) unstable; urgency=low

  * Stop shipping /usr/lib/*.la files in libgstreamer-plugins-base-dev.
    [debian/libgstreamer-plugins-base-dev.install]
  * New upstream release, "Leave the gun", with API additions.
    - Bump up inter-dependencies to 0.10.7.
      [debian/control]
    - Drop relibtoolizing patch as this release was libtoolized under Debian
      or a derivative.
      [debian/patches/70_relibtoolize.patch]
    - Bump up libsgtreamer0.10-dev build-dep to >= 0.10.5.1.
      [debian/control, debian/rules]

 -- Loic Minier <lool@dooz.org>  Sun, 14 May 2006 21:57:10 +0200

gst-plugins-base0.10 (0.10.6-1) unstable; urgency=low

  * New upstream release, "Chao".
    - Relibtoolize.
      [debian/patches/70_relibtoolize.patch]

 -- Loic Minier <lool@dooz.org>  Fri, 28 Apr 2006 23:10:10 +0200

gst-plugins-base0.10 (0.10.5.2-1) unstable; urgency=low

  * New upstream pre-release, with API additions.
    - Bump up libgstreamer0.10-dev build-dep to 0.10.4.1.
      [debian/control, debian/rules]
    - Relibtoolize.
      [debian/patches/70_relibtoolize.patch]

 -- Loic Minier <lool@dooz.org>  Tue, 18 Apr 2006 10:45:48 +0200

gst-plugins-base0.10 (0.10.5-1) unstable; urgency=low

  * New upstream release, "Net", with API additions.
    - Relibtoolize.
      [debian/patches/70_relibtoolize.patch]
    - Drop patch to detect NFS mounts, merged upstream.
      [debian/patches/02_gnomevfssrc.patch]

 -- Loic Minier <lool@dooz.org>  Fri, 17 Mar 2006 17:54:20 +0100

gst-plugins-base0.10 (0.10.4-1) unstable; urgency=low

  [ Loic Minier ]
  * New upstream release, "Power", with API additions.
    - Bump up libgstreamer0.10-dev build-dep to >= 0.10.4.
      [debian/control, debian/rules]
    - Drop patch for force linking against the PIC version of libcheck since
      upstream implemented a better fix.
      [debian/patches/10_libcheck-macro-force-pic.patch]
    - Relibtoolize.
      [debian/patches/70_relibtoolize.patch]

  [ Sebastian Dröge ]
  * debian/patches/02_gnomevfssrc.patch (from GStreamer CVS):
    + gnome_vfs_uri_is_local() alone is not a good indicator whether we can
      operate in pull-mode with a specific URI, as it returns FALSE for
      file:// URIs that point to an NFS-mounted path. Be more conservative
      here: whitelist local files, blacklist http URIs and use the old
      mechanism for anything else (Closes: GNOME #334216).

 -- Sebastian Dröge <slomo@ubuntu.com>  Sun, 12 Mar 2006 17:31:46 +0100

gst-plugins-base0.10 (0.10.3-1) unstable; urgency=low

  * New upstream release, "Under Pressure". (Closes: #352773)

 -- Loic Minier <lool@dooz.org>  Tue, 14 Feb 2006 10:36:59 +0100

gst-plugins-base0.10 (0.10.2.3-1) unstable; urgency=low

  * New upstream pre-release.
  * Add visual plugin.
    . Install plugin.
      [debian/gstreamer-plugins-base.install]
    . Add libvisual0.2-dev (>= 0.2.0) build-dep.
      [debian/build-deps, debian/build-deps.in, debian/control]
  * Use upstream descriptions in packages descriptions.
    [debian/control, debian/control.in]

 -- Loic Minier <lool@dooz.org>  Sat, 11 Feb 2006 17:23:37 +0100

gst-plugins-base0.10 (0.10.2.2-1) unstable; urgency=low

  * New upstream pre-release.
    - Bump liboil0.3-dev build-dep to >= 0.3.6.
      [debian/control, debian/build-deps, debian/build-deps.in]
    - Bump libgstreamer0.10-dev build-dep to >= 0.10.2.2
      [debian/control, debian/rules]
    - Relibtoolize.
      [debian/patches/70_relibtoolize.patch]

 -- Loic Minier <lool@dooz.org>  Wed,  8 Feb 2006 18:01:48 +0100

gst-plugins-base0.10 (0.10.2-2) unstable; urgency=high

  * Bump libgstreamer0.10-dev build-dep to 0.10.2, thanks Bastian Blank.
    (Closes: #348526)
    [debian/control, debian/rules]

 -- Loic Minier <lool@dooz.org>  Fri, 20 Jan 2006 13:58:23 +0100

gst-plugins-base0.10 (0.10.2-1) unstable; urgency=low

  * New upstream release, "Then the devil is six".
    - Add new libgstcdda library.
      [debian/libgstreamer-plugins-base.install, debian/control,
       debian/control.in]
    - Add new cdparanaoia plugin.
      [debian/gstreamer-plugins-base.install]

 -- Loic Minier <lool@dooz.org>  Mon, 16 Jan 2006 23:14:17 +0100

gst-plugins-base0.10 (0.10.1-1) unstable; urgency=medium

  * Drop the version requirement on gstreamer0.10-tools as it might end being
    unsatisfied.
    [debian/control, debian/control.in]
  * Call dh_perl in binary-post-install/$(gst_pkgname)-plugins-base-apps and
    use ${perl:Depends}.
    [debian/control, debian/control.in, debian/rules]
  * New upstream release.
    - Upload as non-native package. (Closes: #345573)
    - Relibtoolize and build-depend on libxt-dev (>= 6.8.2.dfsg.1-3) as an
      additionnal safety measure. (Closes: #345327)
      [debian/build-deps, debian/build-deps.in, debian/control,
       debian/patches/70_relibtoolize.patch]
    - Drop gst-launch-ext and update description of base-apps.
      [debian/control, debian/control.in,
       debian/gstreamer-plugins-base-apps.install,
       debian/gstreamer-plugins-base-apps.manpages]
    - Drop unused cdparanoia patch applied upstream.
      [debian/patches/50_cdparanoia-fix-eos-detection-of-last-title.patch]
    - Bump GST_LIB_DEV_DEP to 0.10.0.2.
      [debian/control, debian/rules]
  * Drop unused GST_PLUGINS_BASE_LIB_DEV_DEP and use the upstream version
    (gst_version) in lieu of gst_plugins_base_version for inter-deps
    consistency.
    [debian/rules]
  * Use gst_plugins_base_lib_dep to define shlibs.
    [debian/rules]
  * Force linking against libcheck_pic instead of libcheck.  Warning: to use
    this patch you need to relibtoolize afterwards or patch configure too.
    [debian/patches/10_libcheck-macro-force-pic.patch]

 -- Loic Minier <lool@dooz.org>  Tue,  3 Jan 2006 22:23:12 +0100

gst-plugins-base0.10 (0.10.0-3) unstable; urgency=low

  * Fix the package name, that's gstreamer0.10-plugins-base
    [debian/gstreamer-plugins-base.install, debian/rules]

 -- Sebastien Bacher <seb128@debian.org>  Thu, 22 Dec 2005 11:39:27 +0100

gst-plugins-base0.10 (0.10.0-2) unstable; urgency=low

  * Rename gstreamer0.10-misc to gstreamer0.10-plugins-good for consistency.
    [debian/control, debian/control.in, debian/gstreamer-misc.install,
     debian/gstreamer-plugins-good.install, debian/rules]

 -- Loic Minier <lool@dooz.org>  Wed, 21 Dec 2005 19:35:20 +0100

gst-plugins-base0.10 (0.10.0-1) unstable; urgency=low

  [ Sebastien Bacher ]
  * New package:
    - build the documentation [debian/rules]
    - no action needed to register the plugins with the new version
      [debian/gstreamer-plugin-template.postinst,
       debian/gstreamer-plugin-template.postrm,
       debian/libgstreamer-plugins.postinst,
       debian/libgstreamer-plugins.postrm, debian/rules]
    - drop mechanism to build extra packages for other distributions around,
      it's not useful for base [debian/extras, debian/rules]
    - drop transitionnal workaround [debian/gstreamer-plugin-template.preinst]
    - new gstreamer-plugin-base-doc package [debian/control.in, debian/rules]
    - remove obsolete patches
      [debian/patches/10_wavpack-high-quality-segfault.patch,
      debian/patches/30_alsa-verify-accepted-period-size.patch,
      debian/patches/31_alsa-advanced-probing.patch,
      debian/patches/40_audioscale-timestamps-and-durations.patch,
      debian/patches/50_ladspa-quiet.patch]
    - updated the Build-Depends [debian/build-dep.in]
    - updated the packages descriptions [debian/control.in]
    - updated the packages names/list [debian/control.in,
      debian/gstreamer-a52dec.install, debian/gstreamer-aa.install,
      debian/gstreamer-artsd.install, debian/gstreamer-audiofile.install,
      debian/gstreamer-avifile.install, debian/gstreamer-caca.install,
      debian/gstreamer-cdio.install, debian/gstreamer-dvd.install,
      debian/gstreamer-dv.install, debian/gstreamer-esd.install,
      debian/gstreamer-festival.install, debian/gstreamer-flac.install,
      debian/gstreamer-gsm.install, debian/gstreamer-gtk.install,
      debian/gstreamer-hermes.install, debian/gstreamer-jpeg.install,
      debian/gstreamer-lame.install, debian/gstreamer-mad.install,
      debian/gstreamer-mikmod.install, debian/gstreamer-mms.install,
      debian/gstreamer-mpeg2dec.install, debian/gstreamer-oss.install,
      debian/gstreamer-sdl.install, debian/gstreamer-sid.install,
      debian/gstreamer-speex.install, debian/gstreamer-swfdec.install,
      debian/libgstreamer-gconf.install, debian/libgstreamer-gconf-dev.install,
      debian/gstreamer-vorbis.install, debian/rules]
    - updated the packages lists [debian/gstreamer-misc.install,
      debian/libgstreamer-plugins-base-dev.install,
      debian/libgstreamer-plugins-base.install]
    - updated packages content
      [debian/gstreamer-misc.install, debian/gstreamer-x.install]
    - updated the version [debian/rules]
    - updated watch file [debian/watch]

  [ Loic Minier ]
  * Minor cleanups.
    [debian/rules]
  * Add Sebastien Bacher to Uploaders.
    [debian/control, debian/control.in]

 -- Loic Minier <lool@dooz.org>  Sat, 17 Dec 2005 18:11:03 +0100

gst-plugins0.8 (0.8.11-3) unstable; urgency=medium

  * New CDIO plugin package.
    . Add libcdio-dev build-dep for CDIO support.
      [debian/build-deps.in, debian/build-deps, debian/control]
    . Add package description and file listing.
      [debian/gstreamer-cdio.install, debian/control.in, debian/control]
    . List package in plugins build-list. [debian/rules]
    . List package in gstreamer-plugins deps.
      [debian/control.in, debian/control]
  * New MMS plugin package. (Closes: #301246)
    . Add libmms-dev build-dep for mms:// and mmsh:// support.
      [debian/build-deps.in, debian/build-deps, debian/control]
    . Add package description and file listing.
      [debian/gstreamer-cdio.install, debian/control.in, debian/control]
    . List package in plugins build-list. [debian/rules]
    . List package in gstreamer-plugins deps.
      [debian/control.in, debian/control]
  * Fix the homepage of the mikmod page and stop linking to an adult web site.
    [debian/control, debian/control.in]
  * Remove "Section: libs" from binary packages.
    [debian/control, debian/control.in]
  * Exit with non-zero code when requesting an unknown plugin.
    [debian/extra]
  * Add sample code to permit other distros to build additional plugins.
    [debian/rules]
  * Minor cleanups.
    [debian/rules]
  * New Gtk / Gdk package to split out this dep-tree for KDE folks, from
    Ubuntu, thanks Sebastien Bacher.
    . Add package description and file listing, remove it from -misc.
      [debian/control.in, debian/control, debian/gstreamer-gtk.install,
      debian/gstreamer-misc.install]
    . List package in plugins build-list. [debian/rules]
    . List package in gstreamer-plugins deps.
      [debian/control.in, debian/control]
    . Only "Replace" with -misc in the first version doing the split
      (0.8.11-0ubuntu3), no Conflict needed.
  * Add wavpack support, build the wavpack plugin and ship it in -misc.
    (Closes: #339598)
    . Add a libwavpack-dev build-dep.
      [debian/build-deps, debian/build-deps.in]
    . Ship plugin in -misc.
      [debian/gstreamer-misc.install]
    . Adjust the size of the internal decode buffer dynamically instead of
      assuming 0.5 seconds are enough;  fixes a segfault when playing files
      encoded with -h;  upstream bug: #317774;  fix committed in branch
      BRANCH-GSTREAMER-0_8.
      [debian/patches/10_wavpack-high-quality-segfault.patch]
  * Backport some interesting upstream fixes from CVS fixing most resampling
    issues for non-standard bitrates and for complex ALSA configurations
    (especially dmix), thanks Tim-Philipp Müller, Luca Ognibene, and others.
    (Closes: #323447, #324163, #326135, #340038)
    - When doing _set_period_size_near(), see what period size was actually
      set in the end and continue working with that value instead of just
      assuming the desired period size was accepted;  upstream bug #318767;
      fix committed in branch BRANCH-GSTREAMER-0_8.
      [debian/patches/30_alsa-verify-accepted-period-size.patch]
    - Don't mess up timestamps and durations when resampling by more than a
      factor of 2 (e.g. 8kHz => 48kHz);  upstream bug #318273;  fix committed
      in branch BRANCH-GSTREAMER-0_8.
      [debian/patches/40_audioscale-timestamps-and-durations.patch]
    - When the default device is being used, try to probe the caps of the
      underlying device instead if possible. This should give more narrowly
      defined caps that are closer to the hardware's capabilities. This is
      enabled by default, but can be switched off via the new
      'advanced-probing' property;  upstream bug #315121;  fix committed in
      branch BRANCH-GSTREAMER-0_8.
      [debian/patches/31_alsa-advanced-probing.patch]
  * Drop the polypaudio plugin package. (Closes: #342278)
    . Drop libpolyp-dev (>= 0.7) build-dep.
      [debian/build-deps.in, debian/build-deps, debian/control]
    . Remove package description and file listing.
      [debian/gstreamer-polypaudio.install, debian/control.in, debian/control]
    . Remove package from plugins build-list. [debian/rules]
    . Remove package from gstreamer-plugins deps.
      [debian/control.in, debian/control]
  * Add libgconf2-dev, libglib2.0-dev, liborbit2-dev, libpopt-dev, libxml2-dev
    deps to libgstreamer-gconf0.8-dev as listed in its .la files.
    [debian/control, debian/control.in]
  * Add libglib2.0-dev, libpopt-dev, libxml2-dev deps to
    libgstreamer-plugins0.8-dev as listed in its .la files.
    [debian/control, debian/control.in]
  * Fix EOS detection for last title (fixes gnome-cd hanging after last track
    ends), thanks Gustavo Noronha Silva;  upstream bug #317630;  fix committed
    in branch BRANCH-GSTREAMER-0_8. (Closes: #330954)
    [debian/patches/50_cdparanoia-fix-eos-detection-of-last-title.patch]
  * Don't overwrite DEB_CONFIGURE_EXTRA_FLAGS.
    [debian/rules]

 -- Loic Minier <lool@dooz.org>  Sun, 11 Dec 2005 14:52:38 +0100

gst-plugins0.8 (0.8.11-2) unstable; urgency=high

  * Add misc:depends to all binary packages. (Closes: #329759)

 -- Loic Minier <lool@dooz.org>  Mon, 17 Oct 2005 21:41:54 +0200

gst-plugins0.8 (0.8.11-1) unstable; urgency=low

  * Override gstreamer-dv section to extra because it depends on libavc1394-0
    which is in extra. [debian/control, debian/control.in]
  * Bump libflac-dev build-dependency for the latest flac soname change
    (libflac6 -> libflac7). (Closes: #325940)
  * New upstream release, "... And Thanks For All The Fix".
    - New plugin imagemixer. [debian/gstreamer-misc.install]
    - New plugin dvdsubdec. [debian/gstreamer-misc.install]
    - Drop obsolete artsd patch, merged upstream.
      [debian/patches/25_artds-no-name.patch]
  * Update FSF address. [debian/copyright]
  * Add cairo plugin. [debian/build-deps, debian/build-deps.in,
    debian/control, debian/gstreamer-misc.install]

 -- Loic Minier <lool@dooz.org>  Sun,  4 Sep 2005 21:19:47 +0200

gst-plugins0.8 (0.8.10-3) unstable; urgency=high

  * Urgency high because this fixes some RC bugs and 0.8.10-2 was caught in
    the C++ transition.
  * Bump up build-deps to get versions past the C++ transition.
    [debian/build-deps, debian/build-deps.in, debian/control]
    - libsdl1.2-dev
    - libsidplay1-dev (Closes: #321315)
    - libarts1-dev, libartsc0-dev
  * Change X11 build-deps for the Xorg transition.
    [debian/build-deps, debian/build-deps.in, debian/control]
    - remove xlibs-dev and xlibs-pic.
    - add libx11-dev, libxext-dev, and libxv-dev.
  * Drop jack plugin. [debian/build-deps, debian/build-deps.in,
    debian/control, debian/control.in, debian/gstreamer-jack.install,
    debian/rules] (Closes: #321648)
  * Add libgstglimagesink plugin. [debian/gstreamer-x.install]
  * Add libgstfreeze plugin. (Closes: #318146) [debian/gstreamer-misc.install]
  * Let libgstreamer-gconf suggest gnome-media. (Closes: #294490)
    [debian/control, debian/control.in]

 -- Loic Minier <lool@dooz.org>  Fri, 12 Aug 2005 18:36:58 +0200

gst-plugins0.8 (0.8.10-2) unstable; urgency=medium

  [ Sebastien Bacher ]
  * debian/build-deps.in:
    - list libpolyp-dev.
  * debian/control.in:
    - gstreamer0.8-plugins depends on gstreamer0.8-polypaudio.
    - gstreamer0.8-polypaudio description.
  * gstreamer-polypaudio.install:
    - install libpolypaudio.so.
  * debian/rules:
    - list polypaudio.

  [ Loic Minier ]
  * Update jack dependency. (Closes: #317197)
    [debian/build-deps, debian/build-deps.in, debian/control]
  * Update aalib dependency. (Closes: #320886)
    [debian/build-deps, debian/build-deps.in, debian/control]

  * Urgency medium because of RC.

 -- Loic Minier <lool@dooz.org>  Sun, 10 Jul 2005 19:27:08 +0200

gst-plugins0.8 (0.8.10-1) unstable; urgency=low

  * Loic Minier:
    * New upstream release "Jangle".
      - Bump inter-dependencies to >= 0.8.10.
    * Use upstream fix for the "name" property of the artsdsink element.
      [debian/patches/25_artds-no-name.patch]

 -- Loic Minier <lool@dooz.org>  Sat,  2 Jul 2005 21:04:40 +0200

gst-plugins0.8 (0.8.9-2) unstable; urgency=medium

  * Loic Minier:
    * Urgency medium as last gstreamer0.8 release exposed an artsdsink
      problem fixed here.
    * Add a versioned dependency with >= current-upstream-version to all
      current shlibs inter-dependencies to ensure consistency of symbols.
      (Closes: #315556) [debian/control, debian/control.in, debian/rules]
    * Remove the "name" property in the artsd plugin as it interferes with
      the usage of this property within GStreamer. (Closes: #314762)
      [debian/patches/25_artds-no-name.patch]
    * Call gst-register and gst-compprep with GST_REGISTRY in their
      environment to override the default behavior of writing to
      /root/.gstreamer-0.8, waiting for an upstream fix.
      [debian/gstreamer-plugin-template.postinst,
      debian/gstreamer-plugin-template.postrm]
    * Add a postinst/postrm snipset to register plugins in
      libgstreamer-plugins0.8. (Closes: #283658)
      [debian/libgstreamer-plugins.postrm,
      debian/libgstreamer-plugins.postinst, debian/changelog, debian/rules]
    * Remove left over /root/.gstreamer-0.8 tree if it hasn't been modified.
      [debian/gstreamer-plugin-template.preinst, debian/rules]
    * Set Maintainer to group. [debian/control, debian/control.in]
    * Bump Standards-Version to 3.6.2, no change needed.
      [debian/control, debian/control.in]
    * Workaround type-handling bug #315761.
      [debian/control, debian/control.in, debian/rules]

 -- Loic Minier <lool@dooz.org>  Mon, 27 Jun 2005 15:44:35 +0200

gst-plugins0.8 (0.8.9-1) unstable; urgency=low

  * Loic Minier:
    * New upstream release "Old Hat".
      - Fix SIGFPE in alsasrc. (Closes: #279399)
      - New Musepack plugin package.
        . Add libmpcdec-dev build-dep for Musepack support, this is now
          detected in a Debian compatible manner via mpcdec/mpcdec.h and
          -lmpcdec. [debian/build-deps.in, debian/build-deps, debian/control]
        . Add package description and file listing.
          [debian/gstreamer-musepack.install, debian/control.in,
          debian/control]
        . List package in plugins build-list. [debian/rules]
        . List package in gstreamer-plugins deps.
          [debian/control.in, debian/control]
      - Renamed and updated "ladspa" patch.
        [debian/patches/ladspa-quiet.patch,
        debian/patches/50_ladspa-quiet.patch]
      - Add video4linuxradio plugin to the gstreamer-misc package.
        [debian/rules]
    * Add compatibility block for older dpkg and use DEB_HOST_ARCH_OS.
    * Add myself as uploader. [debian/control.in, debian/control]
    * Fix indentation and executable permission of package maintaining
      helpers. [debian/extra, debian/maint, debian/mk.control]
    * Remove more bits from the arts plugin, left over in 0.8.1-2.
      [debian/extra, debian/gstreamer-arts.install]
    * Document the role of most files. [debian/HACKING.Debian]
    * Add a TODO list for the Debian package. [debian/TODO.Debian]

 -- Loic Minier <lool@dooz.org>  Tue, 21 Jun 2005 07:47:04 +0200

gst-plugins0.8 (0.8.8-3) unstable; urgency=low

  * debian/build-deps.in:
    * Bump liboil dependency to liboil0.3-dev.  gst-plugins doesn't yet use
      0.3 itself but the swfdec plugin build requires it.

 -- David I. Lehn <dlehn@debian.org>  Wed, 30 Mar 2005 19:08:07 -0500

gst-plugins0.8 (0.8.8-2) unstable; urgency=low

  * debian/control.in:
    * gstreamer0.8-vorbis depends on gstreamer0.8-misc >= 0.8.8-1
      (Closes: #300082, #299954, #299921)

 -- David I. Lehn <dlehn@debian.org>  Thu, 17 Mar 2005 12:53:38 -0500

gst-plugins0.8 (0.8.8-1) unstable; urgency=low

  * New upstream
  * debian/patches/flac.patch:
    * Remove: included upstream
  * debian/gstreamer-misc.install:
    * Add new plugins: autodetect, dvdlpcmdec, puzzle, rfbsrc, subparse
    * Add new plugins with lib dependencies: gconfelements, mng, shout2
      (Closes: #292011)
  * debian/build-deps.in:
    * Add: libmng-dev, libshout3-dev
  * Upstream fixes:
    * Xv falls back to X11 (Closes: #296848)
    * Better audio sink selection (Closes: #284210)
    * alsasink crash (Closes: #296751)

 -- David I. Lehn <dlehn@debian.org>  Wed, 16 Mar 2005 01:00:39 -0500

gst-plugins0.8 (0.8.7-3) unstable; urgency=low

  * debian/rules, debian/build-deps.in
    * Apply additional kfreebsd-gnu patch (Closes: #272568)
  * debian/patches/flac.patch:
    * Upstream fix for FLAC API change (Closes: #290784)

 -- David I. Lehn <dlehn@debian.org>  Mon, 17 Jan 2005 17:53:42 -0500

gst-plugins0.8 (0.8.7-2) unstable; urgency=low

  * debian/rules:
    * Bump libgstreamer0.8-dev dependency to >= 0.8.7.1

 -- David I. Lehn <dlehn@debian.org>  Sat,  8 Jan 2005 15:50:45 -0500

gst-plugins0.8 (0.8.7-1) unstable; urgency=low

  * New upstream
  * debian/build-deps.in, debian/control.in, debian/rules,
    debian/gstreamer-dv.install, debian/gstreamer-misc.install:
    * Patch build system for kfreebsd-gnu (Closes: #272568)
  * debian/rules:
    * Distribute NEWS (as requested in #275717)
  * debian/gstreamer-misc.install:
    * Add new plugins: apetag, tta
  * debian/patches/configure-speex.patch:
    * Remove patch, included upstream
  * debian/build-deps.in:
    * Build against latest libflac-dev

 -- David I. Lehn <dlehn@debian.org>  Fri,  7 Jan 2005 13:52:27 -0500

gst-plugins0.8 (0.8.6-1) unstable; urgency=low

  * New upstream
    * Rhythmbox hangs/crashes fixes (Closes: #245757, #277146)
    * Rhythmbox silence after resume play fixes (Closes: #261841)
    * Ogg seeking fixes (Closes: #277396)
  * debian/build-deps.in:
    * Bump libswfdec to libswfdec0.3-dev
    * Add libavc1394-dev
    * Add liboil0.2-dev
    * Versioned libspeex-dev
  * debian/gstreamer-misc.install:
    * Add new plugin: equalizer
  * debian/watch:
    * Add watch file
  * debian/rules:
    * Update GStreamer core dev dependency to 0.8.4
  * ext/ladspa/gstladspa.c, debian/patches/ladspa-quiet.patch:
    * Move patch to debian/patches/

 -- David I. Lehn <dlehn@debian.org>  Mon, 29 Nov 2004 04:02:43 -0500

gst-plugins0.8 (0.8.5-1) unstable; urgency=low

  * New upstream
  * debian/rules:
    * Use CDBS simple-patchsys
    * debian/control: to debian/control:: for newer CDBS
  * debian/patches/configure-speex.diff:
    * Fix speex detection

 -- David I. Lehn <dlehn@debian.org>  Wed,  6 Oct 2004 20:15:52 -0400

gst-plugins0.8 (0.8.4-1) unstable; urgency=low

  * New upstream
  * debian/control.in:
    * Add -theora package to -plugins package
  * debian/rules:
    * Drop upstream ChangeLog from plugin packages due to size
  * debian/README.Debian:
    * Add note about ChangeLog

 -- David I. Lehn <dlehn@debian.org>  Thu,  2 Sep 2004 23:03:44 -0400

gst-plugins0.8 (0.8.3-1) unstable; urgency=low

  * New upstream
  * debian/control.in, debian/build-deps.in, debian/gstreamer-theora.install,
    debian/rules:
    * New theora plugin
  * debian/gstreamer-misc.install:
    * Add new plugins: alphacolor, decodebin, multifilesink, playbin

 -- David I. Lehn <dlehn@debian.org>  Sat,  7 Aug 2004 09:50:10 -0400

gst-plugins0.8 (0.8.2-3) unstable; urgency=high

  * debian/libgstreamer-gconf.postinst:
    Remove.  schema install now handled by dh_gconf which moved the schema
    location causing old hardcoded /etc path to fail.
    (Closes: #259538, #259119, #259205)
  * Urgency high: GNOME team wants this in sarge now.

 -- David I. Lehn <dlehn@debian.org>  Fri, 16 Jul 2004 09:17:18 -0400

gst-plugins0.8 (0.8.2-2) unstable; urgency=low

  * debian/rules:
    * Bump libgstreamer0.8-dev dep up to get fixed shlibs
  * Rebuild with proper shlibs (Closes: #256181, #256494)

 -- David I. Lehn <dlehn@debian.org>  Wed,  7 Jul 2004 01:16:48 -0400

gst-plugins0.8 (0.8.2-1) unstable; urgency=medium

  * New upstream
  * debian/build-deps.in:
    * Add libdts-dev
  * ext/Makefile.{am,in}:
    * Fix so dts dir is built
  * debian/gstreamer-misc.install:
    * Add DTS plugin
    * Added alpha, audiorate, dtsdec, multipart, videobox, videomixer, and
      videorate
  * debian/rules:
    * Update libgstreamer0.8-dev build dependency to 0.8.3-2
  * debian/control.in:
    * Remove explicit libgstreamer deps, autodetected now

 -- David I. Lehn <dlehn@debian.org>  Wed, 23 Jun 2004 23:50:53 -0400

gst-plugins0.8 (0.8.1-4) unstable; urgency=low

  * gst-libs/gst/riff/riff-media.c:
    * caps type typo fix from CVS
  * gst-libs/gst/resample/private.h:
    * disabled ppc code fix from CVS (Closes: #252991)
  * sys/v4l/gstv4lsrc.c:
    * caps fix NULL->any from CVS

 -- David I. Lehn <dlehn@debian.org>  Wed, 16 Jun 2004 01:24:41 -0400

gst-plugins0.8 (0.8.1-3) unstable; urgency=low

  * rerun autoget.sh to fix arm builds (Closes: #251592)
  * gconf/gstreamer.schemas.in, gcon/gstreamer-0.8.schemas:
    s/xvideosink/xvimagesink/ (Closes: #250575) 

 -- David I. Lehn <dlehn@debian.org>  Tue,  1 Jun 2004 10:10:37 -0400

gst-plugins0.8 (0.8.1-2) unstable; urgency=low

  * debian/build-deps.in:
    * Update "libdv2-dev" to "libdv4-dev | libdv-dev"
  * debian/control.in, debian/extra, debian/rules:
    * Remove arts plugin.  Detection, flags, and include directory build code
      is too buggy for plugin to build at the moment.

 -- David I. Lehn <dlehn@debian.org>  Thu, 29 Apr 2004 18:10:48 -0400

gst-plugins0.8 (0.8.1-1) unstable; urgency=low

  * New upstream
  * debian/gstreamer-misc.install:
    * add libgstdebug.so

 -- David I. Lehn <dlehn@debian.org>  Sun, 18 Apr 2004 01:04:36 -0400

gst-plugins0.8 (0.8.0-2) unstable; urgency=low

  * Bump to -2 to ease upgrades for early -1 testers
  * debian/build-deps.in:
    * Add libgtk2.0-dev 

 -- David I. Lehn <dlehn@debian.org>  Thu, 15 Apr 2004 17:50:14 -0400

gst-plugins0.8 (0.8.0-1) unstable; urgency=low

  * New upstream (Closes: #234071, #240663)
  * debian/rules:
    * Switch to CDBS
    * Version now at 0.8
    * Convert various control files to versioned ones for build
    * Add/rename/remove generated plugins files
  * debian/control.in:
    * Update Standards-Version to 3.6.1
    * Add -caca and -speex plugins
    * Remove -http plugin
  * debian/build-deps.in:
    * Add cdbs
    * Update debhelper >= 4.1.0
    * Add caca, speex, and pango deps
    * Remove libghttp-dev
  * debian/gstreamer-http.install
    * Remove
  * debian/gstreamer-{speex|caca}.install:
    * Add new plugins
  * debian/*.install:
    * Append debian/tmp for CDBS
    * General cleanups to support versioned files and locations
  * debian/gstreamer-esd.install:
    * Remove libgstesdmod
    * Change libgstesdsink to libgstesd
  * debian/gstreamer-plugin-libs.install:
    * Stick locale info in here for lack of a better place
  * debian/gstreamer-plugin-libs[-dev].install:
    * Add support for colorbalance, mixer, navigation, propertyprobe, tag,
      tuner, xoverlay, and xwindowlistener
    * Add pkgconfig support for plugins, interfaces, and media-info
  * debian/gstreamer-gnomevfs.install:
    * s/libgstgnomevfs{src|sink}.so/libgstgnomevfs.so/
  * debian/gstreamer-colorspace.install:
    * Rename to gstreamer-hermes.install
    * Move generic and ffmpeg based colorspace plugins to -misc
    * Provide gstreamerX.Y-colorspace
  * debian/gstreamer-misc.install:
    * v4l/v4l2 support merged to libgstvideo4linux[2].so
    * Add gdkpixbuf, interleave, nassink, ogg, smoothwave, tagedit,
      textoverlay, timeoverlay, typefindfunctions, videobalance, videodrop,
      videofilter, videoflip
    * Move generic and ffmpeg based colorspace plugins from -hermes
    * Provide gstreamerX.Y-colorspace
  * debian/gstreamer-plugin-libs.install:
    * Rename to libgstreamer-plugins.install
  * debian/gstreamer-plugin-libs-dev.install:
    * Rename to libgstreamer-plugins-dev.install
  * debian/gstreamer-gconf.install:
    * Rename libgstreamer-gconf.install
    * Remove dev files
  * debian/gstreamer-gconf.postinst:
    * Rename to libgstreamer-gconf.postinst
  * debian/libgstreamer-gconf-dev.install:
    * Added
    * Add dev parts from gstreamer-gconf.install
  * configure.ac, configure:
    * Patch from CVS to get arts to detect on Debian boxen
  * ext/speex/gstspeex{dec,enc}.c:
    * Upstream patch for static pad templates (caused gst-compprep-0.8 bugs)
  * ext/ladspa/gstladspa.c:
    * Change g_warning to DEBUG_OBJ to silence gst-compprep
  * ext/libcaca/gstcacsink.c:
    * Upstream patch to avoid cacasink windows with gst-inspect/compprep

 -- David I. Lehn <dlehn@debian.org>  Wed, 14 Apr 2004 19:14:14 -0400

gst-plugins0.7 (0.7.6-1) unstable; urgency=low

  * New upstream

 -- David I. Lehn <dlehn@debian.org>  Wed, 17 Mar 2004 19:06:48 -0500

gst-plugins0.7 (0.7.5-1) unstable; urgency=low

  * New upstream

 -- David I. Lehn <dlehn@debian.org>  Wed, 17 Mar 2004 18:47:19 -0500

gst-plugins0.7 (0.7.4-1) unstable; urgency=low

  * New upstream

 -- David I. Lehn <dlehn@debian.org>  Wed, 17 Mar 2004 18:46:27 -0500

gst-plugins0.7 (0.7.3-1) unstable; urgency=low

  * New upstream

 -- David I. Lehn <dlehn@debian.org>  Wed, 17 Mar 2004 18:42:05 -0500

gst-plugins0.7 (0.7.1-1) unstable; urgency=low

  * New upstream
    * Versioning package as 0.7

 -- David I. Lehn <dlehn@debian.org>  Wed, 17 Mar 2004 18:31:51 -0500

gst-plugins (0.6.4-4) unstable; urgency=low

  * ext/alsa/gstalsa.h:
    * Patch to compile with alsa-lib 1.0.x (Closes: #231870)

 -- David I. Lehn <dlehn@debian.org>  Sat, 14 Feb 2004 17:49:01 -0500

gst-plugins (0.6.4-3) unstable; urgency=low

  * debian/build-deps.in:
    * Update jack dependency to libjack0.80.0-dev (>= 0.94.0)
      (Closes: #221620, #228784)
    * Update libmpeg2 dependency to libmpeg2-4-dev (>= 0.4.0b)
  * ext/mpeg2dec/gstmpeg2dec.c: Patch for libmpeg2 0.4.0b

 -- David I. Lehn <dlehn@debian.org>  Mon, 26 Jan 2004 18:21:45 -0500

gst-plugins (0.6.4-2) unstable; urgency=low

  * debian/rules: Disable ffmpeg for everything but i386 due to PIC issues
    (Closes: #219284)

 -- David I. Lehn <dlehn@debian.org>  Thu,  6 Nov 2003 16:30:35 -0500

gst-plugins (0.6.4-1) unstable; urgency=low

  * New upstream
    * ESD updates (Closes: #218736)
  * Acknowledge NMU (Closes: #217981, #213811)
  * Rebuild to fix gconf liblinc1 dependency (Closes: #217771)
  * gstreamer-misc: add v4l2 support (Closes: #199900)
  * Use pre-Linux-2.6 videodev.h to compile v4l support

 -- David I. Lehn <dlehn@debian.org>  Mon,  3 Nov 2003 15:10:59 -0500

gst-plugins (0.6.3-1.1) unstable; urgency=low

  * NMU - Patch from Jordi Mallach
  * debian/build-deps.in: libgconf2-dev and libgnomevfs2-dev need GNOME 2.4
    versions for the liblinc1 transition (closes: #217981).
  * debian/rules: gstreamer build-dep should be versioned (>= 0.6.3)
    (closes: #213811).

 -- LaMont Jones <lamont@debian.org>  Thu, 30 Oct 2003 09:12:11 -0700

gst-plugins (0.6.3-1) unstable; urgency=low

  * New upstream
    * Includes ESD seeking fix (Closes: #201171)

 -- David I. Lehn <dlehn@debian.org>  Mon,  1 Sep 2003 23:15:49 -0400

gst-plugins (0.6.2-2) unstable; urgency=low

  * Fix ffmpeg makefile install rule to work even when ffmpeg build is
    disabled (Closes: #198148, #199072)
  * Apply partial patches from running autogen.sh to fix arm builds (excluding
    other unrelated generated file changes) (Closes: #199872)
  * Update to support libdvdnav 0.1.9 API

 -- David I. Lehn <dlehn@debian.org>  Fri, 11 Jul 2003 01:01:15 -0400

gst-plugins (0.6.2-1) unstable; urgency=low

  * New upstream
  * Add dv1394src to gstreamer-dv

 -- David I. Lehn <dlehn@debian.org>  Thu, 12 Jun 2003 11:39:51 -0400

gst-plugins (0.6.1-2) unstable; urgency=low

  * (unreleased)
  * Adapt to gstreamer package merge: remove -core, -core-libs, -core-libs-dev
    dependencies as needed.  Fixes missing scheduler bugs.
    (Closes: #181503, #191720)
  * Use versioned gst-{register,compprep}-0.6
  * Update jack dependency to libjack0.71.2-dev (Closes: #195401)
  * Update libdvdnav dependency to (>= 0.1.7) and revert patch for
    compatibility with 0.1.3.
  * Update libdvdread2 dependency to libdvdread3-dev
  * Remove DISPLAY unset hacks from postinst/postrm scripts and fix non-X
    installs with 0.6.2 CVS xvideosink patch. (Closes: #165372, #168438)
  * Link libgstplay to libgstcontrol. (Closes: #194107)

 -- David I. Lehn <dlehn@debian.org>  Thu,  5 Jun 2003 02:29:44 -0400

gst-plugins (0.6.1-1) unstable; urgency=low

  * New upstream
  * Update maintainer address to @debian.org
  * gstreamer-gconf libs properly linked upstream (Closes: Bug#187353)
  * debian/control.in:
    * gstreamer-vorbis depends on gstreamer-core-libs (Closes: Bug#188606)
  * Apply gnomevfs patch from http://bugzilla.gnome.org/show_bug.cgi?id=94113
  * ffmpeg plugin only builds, and now is only packaged, on i386/powerpc (Yes
    this is bad - better shared lib support needed.) (Closes: Bug#186525)
  * Revert dvdnav support to libdvdnav 0.1.3 API
  * Unset DISPLAY before calling gst-register/gst-compprep
  * ext/ladspa/gstladspa.c:472: s/g_warning/GST_DEBUG/ to avoid printing of a
    warning on every plugin package install when swh-plugins is installed.
    (sinCos plugin executes this code path)

 -- David I. Lehn <dlehn@debian.org>  Sat,  3 May 2003 18:30:16 -0400

gst-plugins (0.6.0-4) unstable; urgency=low

  * debian/build-deps.in:
    * Updated libvorbis-dev to (>= 1.0.0-2) (Closes: Bug#184671)

 -- David I. Lehn <dlehn@vt.edu>  Fri, 14 Mar 2003 11:12:21 -0500

gst-plugins (0.6.0-3) unstable; urgency=low

  * debian/build-deps.in:
    * Add libartsc0-dev so artsc-config is present so arts[d] plugins get
      built so the arts[d] packages actually include the arts[d] plugins
      (Closes: Bug#181438)
    * Update JACK dependency to 0.50.0

 -- David I. Lehn <dlehn@vt.edu>  Fri,  7 Mar 2003 23:51:46 -0500

gst-plugins (0.6.0-2) unstable; urgency=low

  * NMU (with maintainer's permission)
  * Change libarts-dev build-dep to libarts1-dev (Closes: #180537)

 -- David Schleef <ds@schleef.org>  Mon, 10 Feb 2003 21:33:47 -0800

gst-plugins (0.6.0-1) unstable; urgency=low

  * New upstream

 -- David I. Lehn <dlehn@vt.edu>  Sat,  1 Feb 2003 21:51:54 -0500

gst-plugins (0.5.2.3-1) unstable; urgency=low

  * New upstream

 -- David I. Lehn <dlehn@vt.edu>  Thu, 30 Jan 2003 23:52:08 -0500

gst-plugins (0.5.2.2-1) unstable; urgency=low

  * New upstream
    * pre-release for 0.6.0
  * debian/gstreamer-gconf.install:
    * add gstreamer-gconf-*.pc
  * debian/gstreamer-misc.install:
    * remove libgstaviparse.so

 -- David I. Lehn <dlehn@vt.edu>  Wed, 29 Jan 2003 15:07:06 -0500

gst-plugins (0.5.2-1) unstable; urgency=low

  * New upstream
  * debian/build-deps.in:
    - Update swfdec dependency to 0.2.0
  * debian/gstreamer-misc.install:
    - add libgstaviparse.so

 -- David I. Lehn <dlehn@vt.edu>  Thu, 23 Jan 2003 22:17:31 -0500

gst-plugins (0.5.1-1) unstable; urgency=low

  * New upstream
  * Update GStreamer dependency to 0.5.1
  * Update JACK dependency to 0.44.0
  * Remove gstreamer-avifile package (avifile not supported on many
    architectures and upstream is deprecating it in favor of ffmpeg)
  * Add support for building unsupported plugin packages (avifile, lame, etc)
  * Tighten shlib deps for gstreamer-plugin-libs and gstreamer-gconf packages
    (may split off true lib* packages eventually, was trying to avoid even
    more packages)
  * gstreamer-misc: add oneton and vbidec
  * Rebuild for newer sid libs (Closes: Bug#177410)
  * Various small fixes from CVS

 -- David I. Lehn <dlehn@vt.edu>  Mon, 20 Jan 2003 11:57:26 -0500

gst-plugins (0.5.0-1) unstable; urgency=low

  * New upstream
  * Update libpng dependency to libpng12-0-dev
  * Patch from CVS to support mpeg2dec 0.3.1
  * Patch from CVS to improve X error handling and remote X usage
  * gstreamer-plugin-libs[-dev]: add media-info lib
  * gstreamer-misc: add png plugin
  * Use swfdec 0.1.3 API: s/swf_init/swfdec_decoder_new/ to avoid symbol
    conflicts with avifile plugin

 -- David I. Lehn <dlehn@vt.edu>  Tue, 17 Dec 2002 20:27:42 -0500

gst-plugins (0.4.2-2) unstable; urgency=low

  * Update JACK dependency to 0.40.1
  * Apply gst-launch-ext perlism patch (Closes: #170736)
  * Apply patch from Erik Meusel <meusel@codixx.de> to allow building with
    other KDE arts packages (Closes: Bug#167538)
  * Update mpeg2dec dependency to 0.3.0, convert over to gstmpeg2deccvs plugin
    code, and adjust mpeg2dec check
  * Add Provides: for virtual gstreamer-{audio,video}sink packages to make it
    easier for applications to ensure output sinks are available.  This isn't
    foolproof and it's possible that a rare user might not need the standard
    packaged audio/video sinks.  For now those users can use the "equivs"
    package to get around the problem. (Closes: Bug#169968)

 -- David I. Lehn <dlehn@vt.edu>  Wed,  4 Dec 2002 02:25:41 -0500

gst-plugins (0.4.2-1.1) unstable; urgency=low

  * NMU
  * Depend on swfdec-0.1.2-3, since it had a bug.

 -- David Schleef <ds@schleef.org>  Tue, 12 Nov 2002 17:43:48 -0800

gst-plugins (0.4.2-1) unstable; urgency=low

  * New upstream
  * Add libpng2-dev to Build-Depends for snapshot
  * Add smpte, snapshot, and wavenc to gstreamer-misc
  * Add video and play libs to gstreamer-plugin-libs{-dev}
  * Add gstreamer-swfdec plugin package
  * Add hack to swfdec plugin to not segfault when avifile also loaded due to
    symbols conflicts.  This annoyance will spew errors during gst-compprep
    and probably will cause errors in apps that use both swfdec and avifile.
  * Tighten dependency on libgstreamer until upstream code can deal with
    multiple plugin versions and upgrades better
  * Move gstreamer-plugin-apps to Section: utils from x11

 -- David I. Lehn <dlehn@vt.edu>  Wed,  6 Nov 2002 21:41:01 -0500

gst-plugins (0.4.1-1) unstable; urgency=low

  * New upstream
  * Update FLAC dependency to 1.0.4 and add support patch from CVS
  * Rebuild for libflac4 (Closes: Bug#163549)
  * Build gconf code as a library rather than a plugin
  * Improved plugin descriptions
  * Added to -misc: cdplayer, videocrop, videotestsrc, mixmatrix
  * Add autotools-dev to Build-Depends
  * Update config.{guess,sub}

 -- David I. Lehn <dlehn@vt.edu>  Mon,  7 Oct 2002 17:51:43 -0400

gst-plugins (0.4.0.2-cvs20020919-1) unstable; urgency=low

  * CVS snapshot, release branch
  * gstreamer-gconf.files: libgstgconf.so moved to /usr/lib
  * added control.in, build-deps, and mk.control script.  Edit control.in
    and/or build-deps, and run 'debian/rules debian/control' from toplevel
    directory to recreate debian/control.  This should make it a lot
    easier to diff build dependencies.

 -- David Schleef <ds@schleef.org>  Thu, 19 Sep 2002 15:18:41 -0700

gst-plugins (0.4.0-5) unstable; urgency=low

  * Update Build-Depends
  * Use pkg-config checking vs m4 macros for libdv

 -- David I. Lehn <dlehn@vt.edu>  Fri, 23 Aug 2002 10:33:29 -0400

gst-plugins (0.4.0-4) unstable; urgency=low

  * Fixes from CVS for gstgnomevfssrc.c and endian issue in vorbisfile.c

 -- David I. Lehn <dlehn@vt.edu>  Fri,  2 Aug 2002 20:51:38 -0400

gst-plugins (0.4.0-3) unstable; urgency=low

  * Add ladspa-sdk to Build-Depends
  * Removed qcam plugin from -misc.
    It's i386 only and probably not widely used.  Will figure out how to
    package in the future if someone needs it.

 -- David I. Lehn <dlehn@vt.edu>  Mon, 29 Jul 2002 16:32:33 -0400

gst-plugins (0.4.0-2) unstable; urgency=low

  * Clean up the Build-Depends:
    - stricter versioning
    - remove gnome deps (used for examples which are not build now)
  * Fix segfault in vorbis.m4 check

 -- David I. Lehn <dlehn@vt.edu>  Mon, 29 Jul 2002 10:47:12 -0400

gst-plugins (0.4.0-1) unstable; urgency=low

  * New upstream
  * FLAC compile fixes from CVS
  * DV comiled fixes
  * Upated ltmain hack
  * autogen.sh with more recent tools
  * Update config.{guess,sub}
  * Added plugin packages: -gconf, -http, -jack, -dv
  * Added dvdnav plugin to -dvd
  * Removed osshelper plugin from -oss
  * Added xvideosink back to -x
  * Added effectv, filter, and qtdemux plugins to -misc
  * Rename gstreamer-lib-misc{-dev} to gstreamer-plugin-libs{-dev} to match
    gstreamer core.
  * Added gstreamer-plugin-apps package for a lonely 2 scripts
  * Renamed gstreamer-all to gstreamer-plugins

 -- David I. Lehn <dlehn@vt.edu>  Tue, 16 Jul 2002 02:10:07 -0400

gst-plugins (0.3.4-2) unstable; urgency=low

  * Rebuild for new avifile

 -- David I. Lehn <dlehn@vt.edu>  Wed, 24 Apr 2002 14:06:46 -0400

gst-plugins (0.3.4-1) unstable; urgency=low

  * New upstream
  * Fix mpeg2dec.m4 to use newer mpeg2dec libs

 -- David I. Lehn <dlehn@vt.edu>  Mon, 15 Apr 2002 03:34:21 -0400

gst-plugins (0.3.3-2) unstable; urgency=low

  * Port a52dec plugin to 0.7.3 API (applied upstream)
  * Use a52dec packages in Debian vs current external ones
    * This switches a52dec plugin to static linking
  * Remove LAME support
    * No LAME packages in Debian to depend on
    * Added explanation in README.Debian since this will likely
      cause no end of "Why is there no LAME plugin?"
  * Depend on and rebuild for mpeg2dec 0.2.1
  * Depend on and rebuild for glib 2.0
  * Remove gtk from Build-Depends: (not needed for the built plugins)

 -- David I. Lehn <dlehn@vt.edu>  Sat, 23 Mar 2002 17:52:03 -0500

gst-plugins (0.3.3-1) unstable; urgency=low

  * New upstream version
  * SDL fixed upstream, remove patch
  * Require libid3tag for mad support
  * Remove xvideosink from gstreamer-x package in favor of videosink
    Needed to be removed due to symbol conflicts with videosink
  * Sync with upstream changes:
    * Added videosink to gstreamer-x package
    * parseau renamed to auparse in -misc
    * Added various plugins to -misc: goom, monoscope, modplug, ...
  * Note: new upstream scripts gst-launch-ext and gst-visualise not
    packaged yet

 -- David I. Lehn <dlehn@vt.edu>  Thu, 21 Mar 2002 02:06:21 -0500

gst-plugins (0.3.2-3) unstable; urgency=low

  * Rebuild for glib/gtk 1.3.15

 -- David I. Lehn <dlehn@vt.edu>  Mon, 25 Feb 2002 00:06:51 -0500

gst-plugins (0.3.2-2) unstable; urgency=low

  * Build against liblinc1 and newer gnomevfs

 -- David I. Lehn <dlehn@vt.edu>  Sun, 17 Feb 2002 15:52:57 -0500

gst-plugins (0.3.2-1) unstable; urgency=low

  * New upstream release
  * Many diffs merged upstream
  * Unversioned plugins upstream, just packaging .so (no .la, .a)
  * Added cdxa plugin to -misc
  * Various plugins in -misc moved around and merged upstream

 -- David I. Lehn <dlehn@vt.edu>  Fri, 15 Feb 2002 21:54:27 -0500

gst-plugins (0.3.1-4) unstable; urgency=low

  * Rebuild for glib/gtk 1.3.13

 -- David I. Lehn <dlehn@vt.edu>  Wed,  6 Feb 2002 02:16:16 -0500

gst-plugins (0.3.1-3) unstable; urgency=low

  * Fix arts symbol problem (add -lartsflow -lartsflow_idl)
  * Replace m4/gst-sdl.m4 with Debian's sdl.m4
  * Use SDL_LIBS_FOR_PLUGINS instead of SDL_LIBS

 -- David I. Lehn <dlehn@vt.edu>  Wed, 23 Jan 2002 12:37:00 -0500

gst-plugins (0.3.1-2) unstable; urgency=low

  * Rebuild against fixed gstreamer.pc in libgst-dev 0.3.1-2
    Should just link to libxml2 now rather than v1 and v2

 -- David I. Lehn <dlehn@vt.edu>  Wed, 23 Jan 2002 02:29:49 -0500

gst-plugins (0.3.1-1) unstable; urgency=low

  * Upstream split plugins into new package
  * Upstream removed mpg123 plugin - use mad plugin
  * Upstream removed ac3dec plugin - use a52dec
  * Added -lib-misc and -lib-misc-dev packages for
    library plugins and headers
  * Patch to link all plugins to GST_LIBS

 -- David I. Lehn <dlehn@vt.edu>  Fri, 11 Jan 2002 11:22:01 -0500

gstreamer (0.3.0-3) unstable; urgency=low

  * Remove upstream ChangeLog from packages: 128k changelog.gz per
    plugin package for 40 packages is too much

 -- David I. Lehn <dlehn@vt.edu>  Tue, 25 Dec 2001 23:36:28 -0500

gstreamer (0.3.0-2) unstable; urgency=low

  * Fix bug that slipped into 0.3.0: s/aasink/xvideosink/ in
    gstplay/gstplay.c

 -- David I. Lehn <dlehn@vt.edu>  Tue, 25 Dec 2001 17:56:29 -0500

gstreamer (0.3.0-1) unstable; urgency=low

  * New upstream release
  * Attempt to update various Build-Depends versions
  * Added plugin packages: -a52dec, -dvd, -mikmod, -sid
  * Renamed -elements to -core
  * Added to -core: gstbasicscheduler
  * Moved from -common to -core: gsttypes, autoplug related
  * Renamed -common to -misc
  * Added to -misc: speed, qcam, bytesteram, control, silence, sinesrc,
    mpegstream, playondemand, resample
  * Added gstreamer-guilaunch to gstreamer-tools package
  * Added dependencies on unofficial LAME packages
  * Use PIC libs for Xv
  * Disable broken building of PDF/PS docs
  * Renamed -all-plugins to -all
  * Disable docs -- too hard to build

 -- David I. Lehn <dlehn@vt.edu>  Fri, 21 Dec 2001 12:00:02 -0500

gstreamer (0.2.1-4) unstable; urgency=low

  * Fix some problems reported from lintian 1.20.14:
    * copyright-lists-upstream-authors-like-dh_make
    * debian-changelog-file-contains-user-emacs-settings
  * Patch from CVS to link libgst into plugins
    Plugins now properly depend on libgst package
  * Use RedHat Gtk+-1.3 hack to fix relink issues with ltmain.sh
  * Patch from CVS for xvideosink segfault when no DISPLAY set
  * Remove builddir references from gstreamer-config.in
  * Move libgstelements.la from libgst-dev to gstreamer-elements

 -- David I. Lehn <dlehn@vt.edu>  Tue, 28 Aug 2001 20:05:28 -0400

gstreamer (0.2.1-3) unstable; urgency=low

  * Update build dependencies to FLAC 1.0
  * Enable debug features
  * Fixup broken doc build -scan voodoo with link into .libs/ dir

 -- David I. Lehn <dlehn@vt.edu>  Sun,  5 Aug 2001 23:04:28 -0400

gstreamer (0.2.1-2) unstable; urgency=low

  * Fix lib deps: run debhelper tools in the right order
  * Added arts dir to Makefile.am SUBDIRS so it builds again
  * Changed libmpeg2dec to libgstmpeg2dec to avoid naming issues
    when using -lmpeg2dec
  * Updated system_encode/ with CVS segfaulter bug fix

 -- David I. Lehn <dlehn@vt.edu>  Thu, 19 Jul 2001 15:47:24 -0400

gstreamer (0.2.1-1) unstable; urgency=low

  * New upstream 0.2.1: "Return of the Sedi Master"
  * New plugin packages: -festival, -flac, -avifile, -x
  * New plugins in -common: chart, deinterlace, udp
  * Added some post-0.2.1 fixes for FLAC, build system, ALSA

 -- David I. Lehn <dlehn@vt.edu>  Thu, 28 Jun 2001 20:15:15 -0400

gstreamer (0.2.0-6) unstable; urgency=low

  * Move -compprep to -runtime and call it same places as -register
  * Do -register and -compprep in postrm instead of prerm
  * Make -arts plugin actually build all the source (sent upstream)
  * Purge of -runtime removes /etc/gstreamer

 -- David I. Lehn <dlehn@vt.edu>  Tue, 19 Jun 2001 13:09:32 -0400

gstreamer (0.2.0-5) unstable; urgency=low

  * Added element package dependencies to libgstmediaplay0

 -- David I. Lehn <dlehn@vt.edu>  Mon, 18 Jun 2001 11:18:53 -0400

gstreamer (0.2.0-4) unstable; urgency=low

  * Add --gst-mask=0 to -runtime.postinst

 -- David I. Lehn <dlehn@vt.edu>  Fri, 15 Jun 2001 11:47:24 -0400

gstreamer (0.2.0-3) unstable; urgency=low

  * Fix the plugin control file symlink creation
  * Add audiofile to Build-Depends

 -- David I. Lehn <dlehn@vt.edu>  Fri, 15 Jun 2001 05:22:28 -0400

gstreamer (0.2.0-2) unstable; urgency=low

  * Fixed ALSA checks to not include -lasound in -every- link
  * Update LAME plugin to use latest CVS API
  * Removed OSS src/sink from -common.files (was in -oss too)
  * Swapped -arts.files and -artsd.files contents

 -- David I. Lehn <dlehn@vt.edu>  Fri, 15 Jun 2001 04:02:21 -0400

gstreamer (0.2.0-1) unstable; urgency=low

  * Added gstreamer-compprep manpage
  * Upgrade to 0.2.0

 -- David I. Lehn <dlehn@vt.edu>  Thu,  7 Jun 2001 12:53:59 -0400

gstreamer (0.2.0-0.3) unstable; urgency=low

  * GStreamer 0.2.0-pre3

 -- David I. Lehn <dlehn@vt.edu>  Wed,  6 Jun 2001 15:09:59 -0400

gstreamer (0.2.0-0.2) unstable; urgency=low

  * GStreamer 0.2.0-pre2 + CVS 20010604
  * Added -artsd (vs -arts), -audiofile, -gnomevfs, -gsm, -jpeg,
    -oss, and -sdl plugin packages
  * Added osshelper lib to oss package
  * Added more AVI related plugins and autoplug libs to -common
  * Added pkgconfig file to libgst-dev
  * Added gstreamer-all-plugins pseudo package that depends on
    all other plugin pacakges

 -- David I. Lehn <dlehn@vt.edu>  Mon,  4 Jun 2001 17:33:20 -0400

gstreamer (0.2.0-0.1) unstable; urgency=low

  * GStreamer 0.2.0-pre1

 -- David I. Lehn <dlehn@vt.edu>  Thu, 31 May 2001 17:16:23 -0400

gstreamer (0.1.1.20010504-1) unstable; urgency=low

  * Latest CVS code

 -- David I. Lehn <dlehn@vt.edu>  Fri,  4 May 2001 21:48:45 -0400

gstreamer (0.1.1.20010430-2) unstable; urgency=low

  * Added -colorspace package for Hermes dependent conversion
  * Added -arts package for aRts sink

 -- David I. Lehn <dlehn@vt.edu>  Tue,  1 May 2001 19:46:08 -0400

gstreamer (0.1.1.20010430-1) unstable; urgency=low

  * Latest CVS code
  * Added -aa package for aasink output
  * Added -mad package for mad mp3 decoder

 -- David I. Lehn <dlehn@vt.edu>  Mon, 30 Apr 2001 18:25:52 -0400

gstreamer (0.1.1.20010320-1) unstable; urgency=low

  * Latest CVS code
  * enable main docs
  * disable broken plugin docs with new option

 -- David I. Lehn <dlehn@vt.edu>  Tue, 20 Mar 2001 18:15:19 -0500

gstreamer (0.1.1.20010315-1) unstable; urgency=low

  * Latest CVS code
  * Added man pages
  * Split mpeg2dec to seperate plugin
  * libgst Architectures updated to cothread supported archs

 -- David I. Lehn <dlehn@vt.edu>  Thu, 15 Mar 2001 20:17:19 -0500

gstreamer (0.1.1-1) unstable; urgency=low

  * New upstream release
  * disable docs build, broken at the momemnt

 -- David I. Lehn <dlehn@vt.edu>  Sun, 25 Feb 2001 17:58:25 -0500

gstreamer (0.1.0-2) unstable; urgency=low

  * debian/rules: call configure instead of autogen.sh

 -- David I. Lehn <dlehn@vt.edu>  Sat, 24 Feb 2001 18:31:36 -0500

gstreamer (0.1.0-1) unstable; urgency=low

  * Initial Release.

 -- David I. Lehn <dlehn@vt.edu>  Mon, 15 Jan 2001 18:25:18 -0500
