gst-plugins-base1.0 (1.14.4-2+mtk) mendel-day; urgency=medium

  * Update to 1.14.4-2
  * Update to Day release

 -- Coral Team <coral-support@google.com>  Tue, 28 Jan 2020 17:06:24 -0800

gst-plugins-base1.0 (1.10.4-1+mtk) mendel-chef; urgency=medium

  * Add patches for MTK support

 -- Coral <coral-support@google.com>  Wed, 07 Aug 2019 10:40:10 -0700

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

  * New upstream bugfix release

 -- Sebastian Dröge <slomo@debian.org>  Thu, 23 Feb 2017 15:35:02 +0200

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

  * New upstream bugfix release

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

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

  * New upstream bugfix release

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

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

  * New upstream bugfix release

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  * New upstream bugfix release.

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

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

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

 -- Sebastian Dröge <slomo@debian.org>  Thu, 24 Mar 2016 12:16:44 +0200

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

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

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

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

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

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

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

  * New upstream unstable release:
    + debian/build-deps.in,
      debian/rules:
      - Build-depend on GStreamer >= 1.7.2.
    + debian/libgstreamer-plugins-base.symbols:
      - Update for new symbols.
    + debian/control.in:
      - Add Breaks for gstreamer1.0-plugins-bad << 1.7.1 because
        of GstAudioVisualizer moved from a plugin to a library here.

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

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

  * New upstream unstable release:
    + debian/build-deps.in,
      debian/rules:
      - Build-depend on GLib >= 2.40 and GStreamer >= 1.7.1.
    + debian/libgstreamer-plugins-base.symbols:
      - Update for new symbols.

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

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

  * New upstream bugfix release.

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

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

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

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

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

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

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

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

  * New upstream release candidate.

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

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

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

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

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

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

  * New unstable upstream release.

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

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

  * New unstable upstream release.

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

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

  * New upstream GIT snapshot.

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

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

  * New upstream GIT snapshot.

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

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

  * New upstream bugfix release.

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

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

  * Upload to unstable.

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

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

  * New upstream bugfix release.

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

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

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

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

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

  * New upstream bugfix release.

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

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

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

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

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

  * New upstream bugfix release.

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

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

  * New upstream stable release.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  * New upstream bugfix release.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  * New upstream bugfix release.

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

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

  * New upstream bugfix release.

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

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

  * New upstream bugfix release.

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

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

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

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

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

  * New upstream bugfix release.

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

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

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

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

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

  * New upstreal bugfix release.

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

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

  * New upstream bugfix release.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  * New upstream bugfix release, "Short Notice".

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

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

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

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

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

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

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

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

  * New upstream pre-release.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  [ Sjoerd Simons ]
  * Transition to gir1.2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  * New upstream pre-release.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  * New upstream pre-release.

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

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

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

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

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

  * New upstream pre-release.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  * New upstream pre-release.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  * Upload to unstable.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  * debian/patches/99_ltmain_as-needed.patch,
    debian/rules:
    + Add -Wl,-z,defs -Wl,-O1 -Wl,--as-needed to LDFLAGS to remove some
      unnecessary dependencies on various packages.

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

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

  [ Emilio Pozuelo Monfort ]
  * debian/rules:
    + Decide the package name and url depending on the distribution.
  * debian/build-deps.in:
    + Build-Depend on lsb-release.

  [ Sebastian Dröge ]
  * debian/patches/01_theoradec-granulepos.patch:
    + Increment granulepos for new-bitstream versions appropriately. Fixes
      playback of some Theora movies, e.g. LCA talks. Patch from upstream CVS
      (Closes: #465106).

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

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

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

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

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

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

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

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

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

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

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

  * New upstream pre-release.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  * Urgency medium because of RC.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  * New upstream

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

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

  * New upstream

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

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

  * New upstream

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

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

  * New upstream

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

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

  * New upstream
    * Versioning package as 0.7

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  * New upstream
  * Add dv1394src to gstreamer-dv

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  * New upstream

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

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

  * New upstream

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  * Rebuild for new avifile

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

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

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

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

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

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

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

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

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

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

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

  * Rebuild for glib/gtk 1.3.15

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

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

  * Build against liblinc1 and newer gnomevfs

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

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

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

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

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

  * Rebuild for glib/gtk 1.3.13

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

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

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

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

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

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

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

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

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

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

gstreamer (0.3.0-3) unstable; urgency=low

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

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

gstreamer (0.3.0-2) unstable; urgency=low

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

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

gstreamer (0.3.0-1) unstable; urgency=low

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

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

gstreamer (0.2.1-4) unstable; urgency=low

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

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

gstreamer (0.2.1-3) unstable; urgency=low

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

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

gstreamer (0.2.1-2) unstable; urgency=low

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

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

gstreamer (0.2.1-1) unstable; urgency=low

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

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

gstreamer (0.2.0-6) unstable; urgency=low

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

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

gstreamer (0.2.0-5) unstable; urgency=low

  * Added element package dependencies to libgstmediaplay0

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

gstreamer (0.2.0-4) unstable; urgency=low

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

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

gstreamer (0.2.0-3) unstable; urgency=low

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

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

gstreamer (0.2.0-2) unstable; urgency=low

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

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

gstreamer (0.2.0-1) unstable; urgency=low

  * Added gstreamer-compprep manpage
  * Upgrade to 0.2.0

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

gstreamer (0.2.0-0.3) unstable; urgency=low

  * GStreamer 0.2.0-pre3

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

gstreamer (0.2.0-0.2) unstable; urgency=low

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

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

gstreamer (0.2.0-0.1) unstable; urgency=low

  * GStreamer 0.2.0-pre1

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

gstreamer (0.1.1.20010504-1) unstable; urgency=low

  * Latest CVS code

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

gstreamer (0.1.1.20010430-2) unstable; urgency=low

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

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

gstreamer (0.1.1.20010430-1) unstable; urgency=low

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

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

gstreamer (0.1.1.20010320-1) unstable; urgency=low

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

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

gstreamer (0.1.1.20010315-1) unstable; urgency=low

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

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

gstreamer (0.1.1-1) unstable; urgency=low

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

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

gstreamer (0.1.0-2) unstable; urgency=low

  * debian/rules: call configure instead of autogen.sh

 -- David I. Lehn <dlehn@vt.edu>  Sat, 24 Feb 2001 18:31:36 -0500

gstreamer (0.1.0-1) unstable; urgency=low

  * Initial Release.

 -- David I. Lehn <dlehn@vt.edu>  Mon, 15 Jan 2001 18:25:18 -0500
