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
