gstreamer1.0 (1.5.1-3) experimental; urgency=medium

  * debian/rules,
    debian/libgstreamer.postinst:
    + Explicitely specify the architecture dependent lib directory, otherwise
      setcap will fail if the package is installed for multiple architures.
      It only allows one filename at a time (Closes: #788282).

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

gstreamer1.0 (1.5.1-2) experimental; urgency=medium

  * debian/patches/0001-ptp-Check-for-the-actual-API-we-use-instead-of-just-.patch:
    + Hopefully fix build on kFreeBSD and non-Linux in general.

 -- Sebastian Dröge <slomo@debian.org>  Tue, 09 Jun 2015 11:15:55 +0200

gstreamer1.0 (1.5.1-1) experimental; urgency=medium

  * New unstable upstream release.
  * debian/control.in,
    debian/libgstreamer.postinst:
    + Install gst-ptp-helper with cap_net_bind_service,cap_net_admin
      capabilities, and otherwise fall back to setuid root. It needs
      to be able to listen for multicast on port 319 and 320.

 -- Sebastian Dröge <slomo@debian.org>  Sun, 07 Jun 2015 09:48:18 +0200

gstreamer1.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:19:02 +0300

gstreamer1.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:10:11 +0100

gstreamer1.0 (1.4.5-1) experimental; urgency=medium

  * New upstream bugfix release.

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

gstreamer1.0 (1.4.4-2) unstable; urgency=medium

  * Upload to unstable.

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

gstreamer1.0 (1.4.4-1) experimental; urgency=medium

  * New upstream bugfix release.

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

gstreamer1.0 (1.4.3-1.2) unstable; urgency=medium

  * Non-maintainer upload.
  * debian/rules: Remove outdated mangling of debian/shlibs.local, this is
    breaking dependencies generation for gir packages. This fix should really
    Closes: #761019

 -- Laurent Bigonville <bigon@debian.org>  Sun, 02 Nov 2014 17:14:38 +0100

gstreamer1.0 (1.4.3-1.1) unstable; urgency=medium

  * Non-maintainer upload.
  * Add missing libgstreamer dependency to the gir package (closes: #761019).

 -- Michael Gilbert <mgilbert@debian.org>  Sun, 02 Nov 2014 04:02:20 +0000

gstreamer1.0 (1.4.3-1) unstable; urgency=medium

  * New upstream bugfix release.

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

gstreamer1.0 (1.4.2-1) unstable; urgency=medium

  * New upstream bugfix release.

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

gstreamer1.0 (1.4.1-1) unstable; urgency=medium

  * New upstream bugfix release.

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

gstreamer1.0 (1.4.0-1) unstable; urgency=medium

  * New upstream stable release.

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

gstreamer1.0 (1.3.91-1) experimental; urgency=medium

  * New upstream release candidate:
    + debian/libgstreamer.symbols:
      - Update for new symbols.

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

gstreamer1.0 (1.3.90-1) experimental; urgency=medium

  * New upstream release candidate:
    + debian/libgstreamer.symbols:
      - Update for new symbols.

 -- Sebastian Dröge <slomo@debian.org>  Sat, 28 Jun 2014 10:50:47 +0200

gstreamer1.0 (1.3.3-1) experimental; urgency=medium

  * New upstream development release:
    + debian/libgstreamer.symbols:
      - Update for new symbols.
    + debian/rules:
      - Run autopoint too during autoreconf now.

 -- Sebastian Dröge <slomo@debian.org>  Sun, 22 Jun 2014 17:22:51 +0200

gstreamer1.0 (1.3.2-1) experimental; urgency=medium

  * New upstream development release:
    + debian/libgstreamer.symbols:
      - Update for new symbols.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 21 May 2014 11:41:29 +0200

gstreamer1.0 (1.3.1-1) experimental; urgency=medium

  * New upstream development release:
    + debian/control.in:
      - Build-depend on bison >= 2.4.
    + debian/libgstreamer.symbols:
      - Update for new symbols.

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

gstreamer1.0 (1.2.4-1) unstable; urgency=medium

  * New upstream bugfix release.

 -- Sebastian Dröge <slomo@debian.org>  Fri, 18 Apr 2014 15:28:56 +0200

gstreamer1.0 (1.2.3-1) unstable; urgency=medium

  [ Iain Lane ]
  * Run libtoolize in autoreconf. Drop ltmain-as-needed patch and use
    dh_autoreconf --as-needed. 

  [ Sebastian Dröge ]
  * New upstream bugfix release:
    + debian/libgstreamer.symbols:
      - Add new symbol.

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

gstreamer1.0 (1.2.2-1) unstable; urgency=medium

  * New upstream bugfix release.

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

gstreamer1.0 (1.2.1-1) unstable; urgency=low

  * New upstream bugfix release.

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

gstreamer1.0 (1.2.0-1) unstable; urgency=low

  * New upstream stable release.

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

gstreamer1.0 (1.1.90-1) experimental; urgency=low

  * New upstream release candidate:
    + debian/libgstreamer.symbols:
      - Add new symbols.

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

gstreamer1.0 (1.1.4-1) experimental; urgency=low

  * New upstream development snapshot:
    + debian/libgstreamer.symbols:
      - Add new symbols.

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

gstreamer1.0 (1.1.3-1) experimental; urgency=low

  * New upstream development snapshot:
    + debian/libgstreamer.symbols:
      - Add new symbols.

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

gstreamer1.0 (1.1.2-1) experimental; urgency=low

  * New upstream development snapshot:
    + debian/libgstreamer.symbols:
      - Add new symbols.

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

gstreamer1.0 (1.0.8-1) unstable; urgency=low

  * New upstream bugfix release.

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

gstreamer1.0 (1.0.7-1) unstable; urgency=low

  * New upstream bugfix release.

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

gstreamer1.0 (1.0.6-1) unstable; urgency=low

  * New upstream bugfix release.

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

gstreamer1.0 (1.0.5-1) unstable; urgency=low

  * New upstream bugfix release.

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

gstreamer1.0 (1.0.4-1) unstable; urgency=low

  * New upstream bugfix release.

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

gstreamer1.0 (1.0.3-1) unstable; urgency=low

  * New upstream bugfix release.

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

gstreamer1.0 (1.0.2-1) unstable; urgency=low

  * New upstream stable release.

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

gstreamer1.0 (1.0.1-1) unstable; urgency=low

  * New upstream stable release:
    + debian/libgstreamer.symbols:
      - Add new symbols.

 -- Sebastian Dröge <slomo@debian.org>  Mon, 08 Oct 2012 09:59:20 +0200

gstreamer1.0 (1.0.0-1) unstable; urgency=low

  * New upstream stable release:
    + debian/libgstreamer.symbols:
      - Update symbols file.
    + debian/*:
      - Change remaining parts from 0.11 to 1.0.

 -- Sebastian Dröge <slomo@debian.org>  Mon, 24 Sep 2012 16:28:50 +0200

gstreamer1.0 (0.11.99-1) experimental; urgency=low

  * New upstream release.

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

gstreamer1.0 (0.11.94-1) experimental; urgency=low

  * New upstream release:
    + debian/libgstreamer.symbols:
      - Update symbols file.
    + debian/control.in:
      - Build-depend on gtk-doc >= 1.12.
    + debian/patches/0001-netclientclock-simplify-by-using-g_socket_condition_.patch:
      - Dropped, merged upstream.

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

gstreamer1.0 (0.11.93-2) experimental; urgency=low

  * debian/control.in:
    + Build-depend on GLIB >= 2.23.
  * debian/patches/0001-netclientclock-simplify-by-using-g_socket_condition_.patch:
    + Fix unit test hang that causes the build to fail sometimes.

 -- Sebastian Dröge <slomo@debian.org>  Fri, 10 Aug 2012 12:59:53 +0200

gstreamer1.0 (0.11.93-1) experimental; urgency=low

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

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

gstreamer1.0 (0.11.92-1) experimental; urgency=low

  * debian/control.in:
    + Update automake, autoconf and libtool build dependencies.
  * New upstream release, "High Hopes":
    + debian/libgstreamer.symbols:
      - Update symbols file.
  * debian/gst-codec-info.c:
    + Updated for API changes.

 -- Sebastian Dröge <slomo@debian.org>  Fri, 08 Jun 2012 09:38:04 +0200

gstreamer1.0 (0.11.91-1) experimental; urgency=low

  * New upstream release, "I will give you five magic beans!":
    + debian/libgstreamer.symbols:
      - Update symbols file.
  * debian/libgstreamer-dev.install:
    + Don't ship useless .la file for the core plugins.
    + Don't ship .a and .la files for the library.
  * debian/control.in:
    + Update debhelper dependency version and Standards-Version.

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

gstreamer1.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
  * debian/control*: aligned libglib2.0-dev version requirement with configure.ac
  * gst-codec-info.c: migration to gst 1.0
  * Updated debian/patches to use GST_API_VERSION
  * Refreshed 99_ltmain_as-needed.patch to apply cleanly again
  * debian/control: updated package names with 1.0
  * Updated debian/libgstreamer.symbols based on upstream 0.11.90
  * debian/control*: added a new build-dep on libxml2-dev

  [ Sebastian Dröge ]
  * Fix symbols file versions.
  * 79_multiarch-backwards-compat.patch: Dropped, there's no need for
    backwards compatibility anymore.
  * Remove libxml2-dev build-dependency again.
  * Update copyright.
  * 80_ia32-hack.patch: Dropped, shouldn't be needed anymore.

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

gstreamer0.11 (0.11.1-3) UNRELEASED; urgency=low

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

  [ Loïc Minier ]
  * Only track 0.11.* versions in watch file.
  * Update my email address in control.

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

gstreamer0.11 (0.11.1-2) experimental; urgency=low

  * debian/control.in:
    + Build-depend on GLib 2.26.
  * debian/dh_gstscancodecs:
    + Fix for multi-arch to look in the correct directories.
      Patch by YunQiang Su <wzssyqa@gmail.com>.

 -- Sebastian Dröge <slomo@debian.org>  Tue, 13 Dec 2011 10:11:55 +0100

gstreamer0.11 (0.11.1-1) experimental; urgency=low

  [ Nicolas Dechesne ]
  * New upstream release.
    + debian/libstreamer.symbols
    + debian/control.in
      - removed unversioned gstreamer-tools since removed upstream
      - removed old Replaces/Conflicts which no longer make sense on 0.11
    + debian/rules
      - updated abi number
    + misc
      - removed xmllaunch, feedback and xmlinspect
      - replaced reference to GST_PLUGIN_FEATURE_NAME to GST_OBJECT_NAME

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

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

gstreamer0.10 (0.10.35.2-1) experimental; urgency=low

  * New upstream pre-release:
    + debian/control.in:
      - Build-depend on GLib >= 2.24.
    + debian/patches/99_ltmain_as-needed.patch:
      - Refreshed to apply cleanly again.
    + debian/libgstreamer.symbols:
      - Update symbols file with new API.
  * debian/rules:
    + Remove all dependency_libs from the .la files (Closes: #633319).
  * debian/control.in:
    + Put GI package into section introspection.
  * debian/compat,
    debian/control.in,
    debian/gir1.2-gstreamer.install,
    debian/libgstreamer-dev.install,
    debian/libgstreamer.install,
    debian/patches/79_multiarch-backwards-compat.patch,
    debian/patches/80_ia32-hack.patch,
    debian/rules:
    + Transition package to multi-arch (Closes: #647481).
      Patch taken from the Ubuntu package.

 -- Sebastian Dröge <slomo@debian.org>  Sun, 11 Dec 2011 18:52:12 +0100

gstreamer0.10 (0.10.35-1) unstable; urgency=low

  * New upstream bugfix release, "Nuclear Fission".

 -- Sebastian Dröge <slomo@debian.org>  Thu, 23 Jun 2011 08:48:30 +0200

gstreamer0.10 (0.10.34-1) unstable; urgency=low

  * New upstream bugfix release, "Misfits".

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

gstreamer0.10 (0.10.33-1) unstable; urgency=low

  * New upstream release, "Prior Spaceflight Experience is an Advantage":
    + debian/libgstreamer.symbols:
      - Update version of new symbols to 0.10.33.

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

gstreamer0.10 (0.10.32.3-1) experimental; urgency=low

  * New upstream pre-release.

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

gstreamer0.10 (0.10.32.2-1) experimental; urgency=low

  * debian/control.in:
    + Let the -dev package depend on the GIR package as required by
      the new gobject-introspection policy.

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

  [ Sebastian Dröge ]
  * New upstream pre-release:
    + debian/patches/01_valve-only-set-discont-once.patch:
      - Dropped, merged upstream.
    + debian/libgstreamer.symbols:
      - Add new API.

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

gstreamer0.10 (0.10.32-6) unstable; urgency=low

  * Upload to unstable for the gobject-introspection transition.

 -- Sebastian Dröge <slomo@debian.org>  Tue, 22 Mar 2011 13:58:41 +0100

gstreamer0.10 (0.10.32-5) experimental; urgency=low

  * debian/control.in:
    + Revert gobject-introspection versio revert and provide
      gir1.2-gstreamer-0.10 again.

 -- Sebastian Dröge <slomo@debian.org>  Mon, 07 Mar 2011 09:26:32 +0100

gstreamer0.10 (0.10.32-4) unstable; urgency=low

  * debian/control.in: Remove Conflict on gst-plugins-bad, the registry
    itself works around it.
  * debian/control.in: Move back to the old gobject-introspection stack as it
    hasn't migrated to unstable yet
  * Both of the above fixes FTBS on unstable (Closes: #615911)

 -- Sjoerd Simons <sjoerd@debian.org>  Wed, 02 Mar 2011 00:18:29 +0000

gstreamer0.10 (0.10.32-3) unstable; urgency=low

  * debian/patches/01_valve-only-set-discont-once.patch
    - Added. Fixes bad audio quality in calls from Empathy (From upstream git)

 -- Sjoerd Simons <sjoerd@debian.org>  Mon, 28 Feb 2011 18:42:54 +0000

gstreamer0.10 (0.10.32-2) unstable; urgency=low

  * Upload to unstable.

 -- Sebastian Dröge <slomo@debian.org>  Tue, 08 Feb 2011 10:55:58 +0100

gstreamer0.10 (0.10.32-1) experimental; urgency=low

  * New upstream stable release, "Take Me to the Bonus Level":
    + debian/libgstreamer.symbols:
      - Update new symbols to the release version.

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

gstreamer0.10 (0.10.31.4-1) experimental; urgency=low

  * New upstream pre-release:
    + debian/libgstreamer.symbols:
      - Update new symbols to the latest pre-release version.

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

gstreamer0.10 (0.10.31.3-1) experimental; urgency=low

  * debian/control.in:
    + Conflict with gstreamer0.10-plugins-bad0.10 (<< 0.10.20.2) because
      of the moved selector and valve plugins. There's no file conflict.
  * New upstream pre-release:
    + debian/libgstreamer.symbols:
      - Update new symbols to the latest pre-release version.

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

gstreamer0.10 (0.10.31.2-1) experimental; urgency=low

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

  [ Sebastian Dröge ]
  * debian/control.in:
    + Suggest gstreamer0.10-plugins-base instead of the non-existing
      gstreamer0.10-plugins package (Closes: #607466).
  * New upstream pre-release:
    + debian/control.in:
      - Require GLib >= 2.22.
    + debian/patches/*.patch:
      - Refreshed.
    + debian/libgstreamer.symbols:
      - Add new API symbols.

 -- Sebastian Dröge <slomo@debian.org>  Sat, 08 Jan 2011 17:05:50 +0100

gstreamer0.10 (0.10.31-2) experimental; urgency=low

  * Transition from gir1.0-gstreamer-0.10 to gir1.2-gstreamer-0.10

 -- Sjoerd Simons <sjoerd@debian.org>  Sun, 12 Dec 2010 19:45:03 +0000

gstreamer0.10 (0.10.31-1) experimental; urgency=low

  * New upstream release, "Safety Pins":
    + debian/libgstreamer.symbols:
      - Update symbols.

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

gstreamer0.10 (0.10.30.5-1) experimental; urgency=low

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

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

gstreamer0.10 (0.10.30.4-1) experimental; urgency=low

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

 -- Sebastian Dröge <slomo@debian.org>  Mon, 01 Nov 2010 20:11:56 +0100

gstreamer0.10 (0.10.30.3-1) experimental; urgency=low

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

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

gstreamer0.10 (0.10.30.2-1) experimental; urgency=low

  * New upstream pre-release:
    + debian/patches/80_ia32-hack.patch:
      - Refreshed.
    + debian/libgstreamer.symbols:
      - Add new symbols.

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

gstreamer0.10 (0.10.30-1) unstable; urgency=low

  * New upstream stable release, "Safety First":
    + debian/libgstreamer.symbols:
      - Update new symbols version to 0.10.30.

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

gstreamer0.10 (0.10.29.4-1) experimental; urgency=low

  * New upstream pre-release:
    + debian/libgstreamer.symbols:
      - Update new symbols version to 0.10.29.4.
      - Add new symbols.

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

gstreamer0.10 (0.10.29.3-1) experimental; urgency=low

  * New upstream pre-release:
    + debian/libgstreamer.symbols:
      - Update new symbols version to 0.10.29.3.

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

gstreamer0.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/libgstreamer.symbols:
      - Update symbols file for the new API.
    + debian/control.in:
      - Build depend on GLib 2.20.

 -- Sebastian Dröge <slomo@debian.org>  Sat, 26 Jun 2010 20:17:40 +0200

gstreamer0.10 (0.10.29-1) unstable; urgency=low

  * New upstream release, "It's a Trap":
    + debian/libgstreamer.symbols:
      - Update symbol versions to the stable release.

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

gstreamer0.10 (0.10.28.3-1) experimental; urgency=low

  * New upstream pre-release.

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

gstreamer0.10 (0.10.28.2-1) experimental; urgency=low

  * New upstream pre-release:
    + debian/libgstreamer.symbols:
      - Update symbols file for the new API.

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

gstreamer0.10 (0.10.28-1) unstable; urgency=low

  * New upstream stable release, "Same Old, Same Old".

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

gstreamer0.10 (0.10.27-1) unstable; urgency=low

  * New upstream stable release, "You're Shocked, We Know":
    + debian/libgstreamer.symbols:
      - Updated symbol versions to the stable version.

 -- Sebastian Dröge <slomo@debian.org>  Sun, 07 Mar 2010 10:18:53 +0000

gstreamer0.10 (0.10.26.3-1) experimental; urgency=low

  * New upstream pre-release.

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

gstreamer0.10 (0.10.26.2-2) experimental; urgency=low

  * New upstream pre-release:
    + debian/libgstreamer.symbols:
      - Added new API.

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

gstreamer0.10 (0.10.26-1) unstable; urgency=low

  * New upstream release, "Think Twice":
    + debian/libgstreamer.symbols:
      - Update to use the stable versions.

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

gstreamer0.10 (0.10.25.3-1) experimental; urgency=low

  * New upstream pre-release.

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

gstreamer0.10 (0.10.25.2-3) experimental; urgency=low

  * debian/patches/80_ia32-hack.patch:
    + Fix FTBFS if sys/utsname.h is not included indirectly by
      other headers.

 -- Sebastian Dröge <slomo@debian.org>  Thu, 28 Jan 2010 17:54:47 +0100

gstreamer0.10 (0.10.25.2-2) experimental; urgency=low

  * debian/libgstreamer.install:
    + Also ship the registry update helper application.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 27 Jan 2010 10:38:21 +0100

gstreamer0.10 (0.10.25.2-1) experimental; urgency=low

  * New upstream pre-release:
    + debian/patches/01_multiqueue-iterate-internal-links.patch:
      - Dropped, merged upstream.
    + debian/patches/80_ia32-hack.patch:
      - Updated to apply cleanly again.
    + debian/control.in:
      - Conflict with gstreamer0.10-plugins-base (<< 0.10.25.2) because
        of a moved plugin. This is no file conflict but a GObject type
        name conflict.
      - Build depend on GLib 2.18.
    + debian/libgstreamer.symbols:
      - Added new API.
  * debian/control.in:
    + Remove David I. Lehn from Uploaders (Closes: #557284).
    + Fix typo in package description (Closes: #557365).

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

gstreamer0.10 (0.10.25-4) unstable; urgency=low

  * debian/rules:
    + Don't include the plugin library files in the dh_makeshlibs
      call (Closes: #559657).

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

gstreamer0.10 (0.10.25-3) unstable; urgency=low

  * debian/rules,
    debian/control.in,
    debian/gir1.0-gstreamer.install:
    + Update for the new GObject-Introspection mini spec (Closes: #551568).

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

gstreamer0.10 (0.10.25-2) unstable; urgency=low

  * debian/patches/01_multiqueue-iterate-internal-links.patch:
    + Patch from upstream GIT to improve the iterate internal links
      function of the multiqueue element. It's more robust and faster
      now.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 07 Oct 2009 08:52:26 +0200

gstreamer0.10 (0.10.25-1) unstable; urgency=low

  * New upstream release, 'Feel the burn':
    + debian/libgstreamer.symbols:
      - Updated for the new release.

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

gstreamer0.10 (0.10.24.4-1) experimental; urgency=low

  * New upstream pre-release.

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

gstreamer0.10 (0.10.24.3-1) experimental; urgency=low

  * New upstream pre-release:
    + debian/patches/01_gir-pkgconfig-path.patch,
      debian/patches/02_pkgconfig-first.patch:
      - Dropped, merged upstream.

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

gstreamer0.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 (Closes: #546444).

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

gstreamer0.10 (0.10.24.2-1) experimental; urgency=low

  * New upstream pre-release:
    + debian/control.in,
      debian/libgstreamer.install,
      debian/libgstreamer-dev.install:
      - Enable GObject-Introspection support and ship the generated
        files in the -dev and shared library package.
    + debian/control.in:
      - Update build dependencies.
    + debian/patches/90_dont-link-gstcheck-with-check.patch:
      - Dropped, not needed anymore.
    + debian/libgstreamer.symbols:
      - Updated for the new version.
  * debian/control.in:
    - Update Standards-Version to 3.8.3.
  * debian/patches/01_gir-pkgconfig-path.patch:
    - Add correct pkg-config search path for introspection
      generation.
  * debian/patches/02_pkgconfig-first.patch:
    - Generate pkg-config before all binaries.

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

gstreamer0.10 (0.10.24-1) unstable; urgency=low

  * New upstream release, 'It matters':
    + debian/libgstreamer.symbols:
      - Updated for the new release.

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

gstreamer0.10 (0.10.23.4-1) experimental; urgency=low

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

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

gstreamer0.10 (0.10.23.3-1) experimental; urgency=low

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

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

gstreamer0.10 (0.10.23.2-1) experimental; urgency=low

  * debian/control.in:
    + Fix section of debug package.
    + Update Standards-Version to 3.8.2, no additional changes needed.
  * New upstream pre-release:
    + debian/control.in:
      - Update build dependencies.
    + debian/patches/01_urihandler-get_type_full.patch:
      - Dropped, merged upstream.
    + debian/libgstreamer.symbols:
      - Updated for the new API additions.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 15 Jul 2009 09:07:03 +0200

gstreamer0.10 (0.10.23-2) unstable; urgency=low

  * debian/control.in:
    + (Build-) depend on libxml2-doc and libglib2.0-doc to get correct
      cross references in the docs.
    + Add ${misc:Depends} everywhere.
  * debian/gstreamer-doc.links:
    + Add links to /usr/share/gtk-doc to allow cross references to
      the gstreamer core docs.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 17 Jun 2009 16:31:46 +0200

gstreamer0.10 (0.10.23-1) unstable; urgency=low

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

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

gstreamer0.10 (0.10.22.4-1) experimental; urgency=low

  * debian/patches/90_dont-link-gstcheck-with-check.patch:
    + Patch by Arnaud Soyez to fix FTBFS because of invalid make syntax.
      (Closes: #527007).
  * debian/patches/01_urihandler-get_type_full.patch:
    + Use get_type_full() vmethod instead of get_type() if specified.
      This makes it possible to implement GstURIHandler from bindings.
  * New upstream pre-release.

 -- Sebastian Dröge <slomo@debian.org>  Thu, 07 May 2009 09:27:44 +0200

gstreamer0.10 (0.10.22.3-1) experimental; urgency=low

  * New upstream pre-release.

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

gstreamer0.10 (0.10.22.2-1) experimental; urgency=low

  * New upstream pre-release:
    + debian/control.in:
      - Require GLib >= 2.14.
    + debian/libgstreamer.symbols:
      - Add new symbols.
  * debian/control.in:
    + Update Standards-Version to 3.8.1, no additional changes needed.

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

gstreamer0.10 (0.10.22-3) unstable; urgency=low

  * debian/patches/90_dont-link-gstcheck-with-check.patch:
    + Don't link libgstcheck with check. check is a static library
      and by linking it to libgstcheck and to everything using libgstcheck
      we're introducing the check symbols twice and export the check
      API from libgstcheck (Closes: #521735).
  * 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.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 01 Apr 2009 16:07:22 +0200

gstreamer0.10 (0.10.22-2) unstable; urgency=low

  * Upload to unstable.

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

gstreamer0.10 (0.10.22-1) experimental; urgency=low

  * New upstream release, 'I heard a disturbing sound':
    + debian/libgstreamer.symbols:
      - Updated for the new version.
    + Fixes segfault in gst_register_typefind() (Closes: #511902).

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

gstreamer0.10 (0.10.21.3-1) experimental; urgency=low

  * New upstream pre-release.

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

gstreamer0.10 (0.10.21.2-3) experimental; urgency=low

  * debian/rules:
    + Fix check introduced in last version to prevent FTBFS.

 -- Sebastian Dröge <slomo@debian.org>  Fri, 09 Jan 2009 11:05:19 +0100

gstreamer0.10 (0.10.21.2-2) experimental; urgency=low

  * debian/rules:
    + Only build the docs when binary-indep is called.

 -- Sebastian Dröge <slomo@debian.org>  Thu, 08 Jan 2009 10:05:43 +0100

gstreamer0.10 (0.10.21.2-1) experimental; urgency=low

  * New upstream pre-release:
    + debian/patches/01_wrapper-plugins.patch,
      debian/patches/02_gtkdoc-rebase.patch,
      debian/patches/03_registry-failure-crash.patch,
      debian/patches/04_pad-caps-acception.patch,
      debian/patches/05_basetransform-caps-refcount.patch,
      debian/patches/06_basetransform-buffer-allocation.patch:
      - Dropped, merged upstream.
    + debian/patches/80_ia32-hack.patch:
      - Updated to apply cleanly again.
    + debian/libgstreamer.symbols:
      - Updated with the new symbols.

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

gstreamer0.10 (0.10.21-5) experimental; urgency=low

  * debian/patches/06_basetransform-buffer-allocation.patch:
    + Patch from upstream CVS to fix buffer allocation. Before it could
      happen that invalid memory references were returned.

 -- Sebastian Dröge <slomo@debian.org>  Fri, 24 Oct 2008 14:49:42 +0200

gstreamer0.10 (0.10.21-4) experimental; urgency=low

  * debian/patches/04_pad-caps-acception.patch:
    + Patch from upstream CVS to fix several cases where basetransform
      elements didn't accept caps while they should.
  * debian/patches/05_basetransform-caps-refcount.patch:
    + Patch from upstream CVS to make sure that basetransform's pad caps
      have the correct refcount and are not destroyed by accident.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 22 Oct 2008 07:53:14 +0200

gstreamer0.10 (0.10.21-3) experimental; urgency=low

  * debian/patches/03_registry-failure-crash.patch:
    + Patch from upstream CVS to fix a crash when writing the registry file
      failed. Fixes builds on buildd's with non-writable $HOME.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 08 Oct 2008 12:22:10 +0200

gstreamer0.10 (0.10.21-2) experimental; urgency=low

  * debian/libgstreamer.symbols:
    - Updated for 0.10.21 so we depend on a stable version.
  * debian/patches/02_gtkdoc-rebase.patch:
    - Don't require gtk-doc for the docs. Fixes the build with
      binary-indep (Closes: #499818).

 -- Sebastian Dröge <slomo@debian.org>  Sun, 05 Oct 2008 10:02:37 +0200

gstreamer0.10 (0.10.21-1) experimental; urgency=low

  * New upstream release, 'Take These Things From Me'.

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

gstreamer0.10 (0.10.20.2-1) experimental; urgency=low

  * debian/gst-codec-info.c:
    + Ignore decoders with a less than marginal rank as they're
      not autoplugged by playbin/decodebin. This only applies to the
      X-Gst-Decoders field.
  * New upstream pre-release:
    + debian/patches/02_gtk-doc-cflags.patch:
      - Dropped, merged upstream.
    + debian/libgstreamer.symbols:
      - Updated for the new version.

 -- Sebastian Dröge <slomo@debian.org>  Sun, 21 Sep 2008 16:22:29 +0200

gstreamer0.10 (0.10.20-3) experimental; urgency=low

  [ Loic Minier ]
  * Bdep on perl-doc; thanks Marc 'HE' Brockschmidt; closes: #495043.
  * Wrap uploaders, bdeps and deps.

  [ Sebastian Dröge ]
  * debian/gst-codec-info.c:
    + Rename gstreamer0.10-{audio,video}src to
      gstreamer0.10-{audio,video}source.
    + Remove some more useless fields from the encoder/decoder caps.
  * debian/control.in:
    + Let the -dev package recommends debhelper for the dh_gstscancodecs
      script (Closes: #494999).

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

gstreamer0.10 (0.10.20-2) experimental; urgency=low

  * debian/control.in:
    + Update flex build dependency to >= 2.5.34 for the new symbols this
      adds to the library (Closes: #492028).
  * debian/gst-codec-info.c,
    debian/control.in,
    debian/rules,
    debian/dh_gstscancodecs,
    debian/libgstreamer-dev.install:
    + Implement infrastructure to export the codec installation informations
      via binary package control fields. Move dh_gstscancodecs to the -dev
      package and implement helper utility gst-codec-info-0.10 for getting
      the codec information for a package.
  * debian/rules,
    debian/libgstreamer-dev.install:
    + Add a manpage for dh_gstscancodecs (Closes: #445456).

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

gstreamer0.10 (0.10.20-1) unstable; urgency=low

  * New upstream release, 'You Crazy Diamond':
    + debian/libgstreamer.symbols:
      - Updated for the new version.
  * debian/control.in:
    + Replace gs build dependency by ghostscript as the former is only a
      transitional dummy package.
    + Update Standards-Version to 3.8.0, no additional changes needed.
  * debian/libgstreamer.symbols:
    + Append '~' to the versions for symbols which were introduced between
      different Debian package versions.
  * debian/gstreamer-doc.links:
    + Link the GStreamer plugins documentation into the devhelp directories
      too.
  * debian/gstreamer0.10-doc.doc-base.manual,
    debian/gstreamer0.10-doc.doc-base.pwg,
    debian/gstreamer0.10-doc.doc-base.core-ref,
    debian/gstreamer0.10-doc.doc-base.libs-ref,
    debian/gstreamer0.10-doc.doc-base.faq:
    + Fix sections.

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

gstreamer0.10 (0.10.19.3-1) experimental; urgency=low

  * New upstream pre-release:
    + debian/patches/02_link-dl.patch:
      - Dropped, merged upstream.
  * 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 10:53:21 +0200

gstreamer0.10 (0.10.19.2-1) experimental; urgency=low

  [ Sjoerd Simons ]
  * debian/patches/07_bus_flushing_race.patch
    + Added. Patch from upstream CVS to handle the bus_dispatch function
    popping NULL from the message queue, which can happen if the bus is set to
    flushing between check/prepare and dispatch.

  [ Sebastian Dröge ]
  * New upstream pre-release:
    + debian/patches/03_binary-registry-version.patch,
      debian/patches/04_binary-registry-alignment.patch,
      debian/patches/05_binary-registry-empty-uri-schemes-corruption.patch,
      debian/patches/06_binary-registry-checksum.patch,
      debian/patches/07_bus_flushing_race.patch,
      debian/patches/75_build_docs_without_python_xml.patch:
      - Dropped, merged upstream.
    + debian/control.in:
      - Drop python-twisted-core from build dependencies as it's not needed
        anymore.
      - Bump glib build dependency to >= 2.12.
    + debian/rules:
      - Drop configure parameter to build the binary registry. It's the
        default now.
    + debian/libgstreamer.symbols:
      - Updated symbol file with 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.
  * debian/patches/02_link-dl.patch:
    + Link with -ldl for dladdr().

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

gstreamer0.10 (0.10.19-3) unstable; urgency=low

  * debian/patches/06_binary-registry-checksum.patch:
    + Patch from upstream CVS to include a CRC32 checksum for the registry
      data to make sure it's not corrupted. Also plug a memory leak in error
      cases.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 16 Apr 2008 23:01:20 +0200

gstreamer0.10 (0.10.19-2) unstable; urgency=medium

  * debian/control.in:
    + Require bison >= 1.875 as per configure.ac.
  * debian/patches/05_binary-registry-empty-uri-schemes-corruption.patch:
    + Patch from upstream CVS to not corrupt the registry if a plugin gives
      a valid pointer for the supported URI schemes list but this contains
      no URI schemes. Also don't unref a variable from which we don't own
      the reference and improve debugging (Closes: #475735). Set urgency to
      medium because this closes an RC bug.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 16 Apr 2008 15:18:24 +0200

gstreamer0.10 (0.10.19-1) unstable; urgency=high

  * New upstream bugfix release, "Me Again":
    + debian/patches/05_fdsrc-fdsink-eagain.patch:
      - Dropped, merged upstream.

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

gstreamer0.10 (0.10.18-4) unstable; urgency=low

  * debian/patches/05_fdsrc-fdsink-eagain.patch:
    + Retry when we get EAGAIN. Fixes the totem mozilla plugin to actually
      work again.

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

gstreamer0.10 (0.10.18-3) unstable; urgency=low

  * debian/patches/04_binary-registry-alignment.patch:
    + Fix alignment of the binary registry on 64 bit architectures
      and whitelist amd64 for unaligned access too.

 -- Sebastian Dröge <slomo@debian.org>  Sun, 23 Mar 2008 12:23:21 +0100

gstreamer0.10 (0.10.18-2) unstable; urgency=low

  * debian/rules:
    + Start using the binary registry instead of the XML registry. This has
      the advantage of being much faster (especially startup of applications
      will be faster) and lower memory usage.
  * debian/patches/03_binary-registry-version.patch:
    + Patch from upstream CVS to use a sane value for the binary registry
      format version and not print an error when there is a version mismatch.
      Instead silently recreate the registry.
  * debian/libgstreamer.symbols:
    + Update for the binary registry. These symbols are private ones and
      should in theory not be exported at all.

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

gstreamer0.10 (0.10.18-1) unstable; urgency=low

  * New upstream release, "So far away":
    + debian/libgstreamer.symbols:
      - Updated for the new version.

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

gstreamer0.10 (0.10.17.4-1) experimental; urgency=low

  * New upstream pre-release:
    + debian/libgstreamer0.10-0.symbols:
      - Update symbols for 0.10.17.4.
    + debian/rules:
      - Use file versionize magic to get the correct filename for the
        symbols file.
    + debian/patches/02_werror.patch:
      - Don't build with -Werror.

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

gstreamer0.10 (0.10.17.3-1) experimental; urgency=low

  * New upstream pre-release:
    + debian/libgstreamer0.10-0.symbols:
      - Updated.
  * debian/patches/75_build_docs_without_python_xml.patch,
    debian/control.in:
    + Stop using pyxml for building the docs (Closes: #468627).

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

gstreamer0.10 (0.10.17.2-2) experimental; urgency=low

  * debian/patches/80_ia32-hack.patch:
    + Updated to build without warnings on other architectures than i386.
      Fixes FTBFS as we use -Werror for pre-releases.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 05 Mar 2008 06:50:43 +0100

gstreamer0.10 (0.10.17.2-1) experimental; urgency=low

  * New upstream pre-release:
    + debian/libgstreamer0.10-0.symbols:
      - Updated for the new version.
  * debian/libgstreamer.{post*,pre*},
    debian/libgstreamer.dirs,
    debian/rules:
    + Don't use non-existing configure parameters and for 0.10 we don't need
      a cache dir anymore, so let's not create one and remove it with
      maintainer scripts on remove.
  * debian/control.in:
    + Add Homepage field.

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

gstreamer0.10 (0.10.17-2) unstable; urgency=low

  [ Emilio Pozuelo Monfort ]
  * debian/rules:
    - Decide the package name and url depending on the distribution.
  * debian/control.in:
    - Build-Depend on lsb-release.
    - Add a Conflicts for libgstreamer-plugins-base0.10-0 <<
      0.10.11cvs20070110-0ubuntu5 to keep the Ubuntu delta lower.

  [ Sebastian Dröge ]
  * debian/patches/99_ltmain_as-needed.patch,
    debian/rules:
    + Add -Wl,-z,defs -Wl,-O1 -Wl,--as-needed to LDFLAGS to remove some
      unnecessary dependencies on various packages.
  * debian/libgstreamer0.10-0.symbols:
    + Add new symbol added by using flex 2.3.34.

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

gstreamer0.10 (0.10.17-1) unstable; urgency=low

  * New upstream bugfix-only release, "Due Negligence".

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

gstreamer0.10 (0.10.16-1) unstable; urgency=low

  * New upstream release, "Special Dispensation", with API additions:
    + debian/libgstreamer0.10-0.symbols:
      - Updated symbols for 0.10.16.
  * debian/patches/80_ia32-hack.patch:
     + Set the plugin dir to /usr/lib32/gstreamer-0.10, when running the
       i386 binaries on amd64. Patch taken from the Ubuntu package, originally
       created by Matthias Klose.

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

gstreamer0.10 (0.10.15.4-1) experimental; urgency=low

  * New upstream pre-release.
  * debian/libgstreamer0.10-0.symbols,
    debian/control.in:
    + Add a symbols file for the GStreamer core 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:20:05 +0100

gstreamer0.10 (0.10.15.3-1) experimental; urgency=low

  * New upstream pre-release.

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

gstreamer0.10 (0.10.15.2-1) experimental; urgency=low

  * New upstream pre-release:
    + debian/patches/02_basesink-event-forwarding.patch,
      debian/patches/03_filesink-seek-failure.patch:
      - Dropped, merged upstream.

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

gstreamer0.10 (0.10.15-4) unstable; urgency=low

  * debian/dh_gstscancodecs:
    + Fix typo: extention->extension.
  * debian/patches/01_wrapper-plugins.patch:
    + Update to also handle the ffmpeg plugin and rebuild the registry
      if libavcodec and friends change.
  * 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:11:26 +0100

gstreamer0.10 (0.10.15-3) unstable; urgency=low

  * debian/rules:
    + Don't make the build fail if the testsuite fails.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 28 Nov 2007 10:38:37 +0100

gstreamer0.10 (0.10.15-2) unstable; urgency=low

  * debian/patches/02_basesink-event-forwarding.patch:
    + Only forward upstream events upstream. This prevents some useless
      warnings. Patch taken from upstream CVS.
  * debian/patches/03_filesink-seek-failure.patch:
    + Only try to seek if it is really necessary in filesink. This fixes
      filesink on a FIFO. Patch taken from upstream CVS.
  * debian/rules:
    + Enable test suite.

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

gstreamer0.10 (0.10.15-1) unstable; urgency=low

  * New upstream release, "October", with API additions:
    + Fixes FTBFS if built twice in a row (Closes: #424386).
  * debian/control.in:
    + Only suggest the docs package instead of recommending (Closes: #436667).

 -- Sebastian Dröge <slomo@debian.org>  Tue, 13 Nov 2007 14:42:33 +0100

gstreamer0.10 (0.10.14-2) unstable; urgency=low

  * debian/control.in:
    + Let the -dev package depend on check as some headers include check.h.
      check is no dependency of the libs package because it's linked
      statically.

 -- Sebastian Dröge <slomo@debian.org>  Sat, 08 Sep 2007 21:38:18 +0200

gstreamer0.10 (0.10.14-1) unstable; urgency=low

  * New upstream release 'Breathing Vacuum', with API additions.
  * debian/control.in:
    + Use ${binary:Version} and ${source:Version} instead of ${Source-Version}
      to make lintian happy.
  * debian/gstreamer-tools.install,
    debian/dh_gstscancodecs:
    + Add debhelper script for extracting GStreamer codec informations. This
      will be used for semi-automatic codec installation.

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

gstreamer0.10 (0.10.13-2) unstable; urgency=low

  * debian/patches/01_wrapper-plugins.patch:
    + Add hacks for gnomevfs, ladspa and libvisual plugin to have the registry
      rebuild if the plugins of them change. This for example lets GStreamer
      recognize if new gnomevfs methods are installed after the gnomevfs
      plugin is installed. (Closes: #426694)
      This is a temporary workaround until the upstream bug is fixed:
      http://bugzilla.gnome.org/show_bug.cgi?id=350477

 -- Sebastian Dröge <slomo@debian.org>  Sun, 10 Jun 2007 12:38:27 +0200

gstreamer0.10 (0.10.13-1) unstable; urgency=low

  * New upstream release with API additions, "With or without you".

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

gstreamer0.10 (0.10.12.1+cvs20070529-1) unstable; urgency=low

  * Prepare CVS snapshot
  * debian/patches/01_yacc-reentrant.patch
    debian/patches/02_filesrc_no_location.patch
    debian/patches/03_system_clock_wait_jitter_block.patch:
    + All dropped, fixed upstream.

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

gstreamer0.10 (0.10.12-5) unstable; urgency=low

  * debian/patches/03_system_clock_wait_jitter_block.patch:
    + Patch from upstream CVS. Make the GstSystemCLock wait_jitter
    implementation  really block untill a timeout occurs instead of returning
    when the first entries_changed condition occurs. Fixes problems with
    farsight.
  * Add myself to Uploaders.

 -- Sjoerd Simons <sjoerd@debian.org>  Thu, 03 May 2007 20:48:30 +0200

gstreamer0.10 (0.10.12-4) unstable; urgency=low

  * debian/patches/02_filesrc_no_location.patch:
    + Patch from upstream CVS to also allow "file://" as URI. This is used
      by some applications, like quodlibet, to check if there's an element
      that handles the file protocol. (Closes: #421167)

 -- Sebastian Dröge <slomo@debian.org>  Fri, 27 Apr 2007 09:28:53 +0200

gstreamer0.10 (0.10.12-3) unstable; urgency=low

  * Upload to unstable
  * Merged experimental branch:
    + New upstream release 0.10.12, "Inevitable Demise":
      - Fixes typo in manual (Closes: #408516)
    + New upstream release 0.10.11, "Love never runs on time":
      - debian/patches/10_assertion-failure-on-signal-full-when-empty.patch:
        . Dropped, merged upstream
      - debian/patches/70_relibtoolize.patch:
        . Dropped, upstream used Debian's libtool
    + Add common/gst.supp to libgstreamer-dbg.docs for valgrind suppressions.
      (Loic Minier)

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

gstreamer0.10 (0.10.10-4) unstable; urgency=low

  * debian/patches/01_yacc-reentrant.patch,
    debian/control.in:
    + Make gst_parse_launch reentrant. This fixes a crash in gaim. Also update
      flex build-dependency to >= 2.5.31 for this.
      Patch with some changes taken from:
      http://bugzilla.gnome.org/show_bug.cgi?id=349180
      (Closes: #404637, #403343, #400602)
  * debian/control.in:
    + Update to use my debian.org address

 -- Sebastian Dröge <slomo@debian.org>  Sun, 18 Mar 2007 22:50:59 +0100

gstreamer0.10 (0.10.10-3) unstable; urgency=low

  * Rename 10_dont-leak-buffer-on-emptied-queue to
    10_assertion-failure-on-signal-full-when-empty, what the patch fixes is
    really an assertion failure which happens when the queue is empty at the
    moment where the "queue full" signal is processed.
  * Fix typo in control, "versionned" -> "versioned"; thanks J S Bygott;
    closes: #408931.

 -- Loic Minier <lool@dooz.org>  Mon, 29 Jan 2007 13:35:23 +0100

gstreamer0.10 (0.10.10-2) unstable; urgency=low

  * New patch, 10_dont-leak-buffer-on-emptied-queue, to avoid leaking a buffer
    when a queue is emptied while sending out a signal.

 -- Loic Minier <lool@dooz.org>  Fri, 13 Oct 2006 11:04:59 +0200

gstreamer0.10 (0.10.10-1) unstable; urgency=low

  [ Sebastian Dröge ]
  * New upstream release, "Pais", some additional API
  * debian/patches/70_relibtoolize.patch:
    + updated for new upstream version

  [ Loic Minier ]
  * Drop the versionned Recommends which will break with binNMUs.
  * Fix duplicate dependencies.

 -- Loic Minier <lool@dooz.org>  Fri, 15 Sep 2006 15:05:55 +0200

gstreamer0.10 (0.10.9-2) unstable; urgency=low

  [ Loic Minier ]
  * Update control.

  [ Sebastian Dröge ]
  * debian/rules,
    debian/control.in:
    + Add a -dbg package for libgstreamer0.10-0 and add me to Uploaders
  * debian/compat,
    debian/control.in:
    + Bump debhelper compat level to 5

  [ Loic Minier ]
  * Build-depend on python-twisted-core instead of python-twisted, thanks
    Matthias Klose. (Closes: #385428)
  * 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.

 -- Loic Minier <lool@dooz.org>  Thu, 31 Aug 2006 11:48:25 +0200

gstreamer0.10 (0.10.9-1) unstable; urgency=low

  * Clean up Build-Depends-Indep of packages already referenced in
    Build-Depends.
  * New upstream release, "On the road again", no API changes.
    - Drop 10_no-registry-file-fallback patch, merged upstream.
    - Update 70_relibtoolize patch.

 -- Loic Minier <lool@dooz.org>  Fri, 14 Jul 2006 23:14:30 +0200

gstreamer0.10 (0.10.8-2) unstable; urgency=low

  * Update 70_relibtoolize to not ship config.guess and config.sub already
    updated by CDBS.
  * New patch, 10_no-registry-file-fallback.patch from upstream CVS to re-read
    the registry when the forked child fails to write it for example because
    the home dir isn't writable; see discussion in GNOME #344748.

 -- Loic Minier <lool@dooz.org>  Tue, 13 Jun 2006 18:42:06 +0200

gstreamer0.10 (0.10.8-1) unstable; urgency=low

  * New upstream releases with API additions, "Soepeke, ik zie ou nog altijd
    nie".
    - New patch, 70_relibtoolize, ditto.
    - Drop 10_accept-empty-strings-in-registry patch, included upstream.

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

gstreamer0.10 (0.10.6-2) unstable; urgency=low

  * Bump up Standards-Version to 3.7.2.
    [debian/control, debian/control.in]
  * New patch from upstream to let the registry handle empty strings,
    especially important because of a bug in a m4 macro which lets the name of
    official GStreamer packages empty if you use --with-package-name as is the
    case in Debian.
    [debian/patches/10_accept-empty-strings-in-registry.patch]
  * 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>  Wed, 17 May 2006 18:49:42 +0200

gstreamer0.10 (0.10.6-1) unstable; urgency=low

  * New upstream release, "Take the cannoli", with API additions.
    - Bump up inter-dependencies to 0.10.6.
      [debian/control]
    - Bump up libglib2.0-dev build-dep to >= 2.8.
      [debian/control, debian/control.in]
    - Drop relibtoolizing patch as this release was libtoolized under Debian
      or a derivative.
      [debian/patches/70_relibtoolize.patch]

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

gstreamer0.10 (0.10.5-1) unstable; urgency=low

  * New upstream release, "Fogo".
    - Force debian/control rebuild, a debian/changelog Makefile dep wouldn't
      be wise.
      [debian/control]

 -- Loic Minier <lool@dooz.org>  Sat, 29 Apr 2006 12:04:39 +0200

gstreamer0.10 (0.10.4.2-1) unstable; urgency=low

  * New upstream pre-release, with API additions.
    - Drop patch for the check libraries in pkg-config files (merged
      upstream).
      [debian/patches/11_libcheck-pkgconfig-force-pic.patch]
    - Relibtoolize.
      [debian/patches/70_relibtoolize.patch]
    - Drop all references to the gst-md5sum utility (removed upstream).
      [debian/gstreamer-tools-abi.install, debian/gstreamer-tools.install,
       debian/gstreamer-tools-abi.manpages]

 -- Loic Minier <lool@dooz.org>  Mon, 17 Apr 2006 23:19:50 +0200

gstreamer0.10 (0.10.4-1) unstable; urgency=low

  * New upstream release, "Light".

 -- Loic Minier <lool@dooz.org>  Sat, 11 Mar 2006 09:55:26 +0100

gstreamer0.10 (0.10.3.2-1) unstable; urgency=low

  * New upstream pre-release, with API additions.
    - Backward incompatible change: removes support for quoted strings and
      mimetypes when writing filtered caps.
    - 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]
  * Use upstream descriptions for packages descriptions.
    [debian/control, debian/control.in]

 -- Loic Minier <lool@dooz.org>  Fri, 10 Mar 2006 10:43:57 +0100

gstreamer0.10 (0.10.3-1) unstable; urgency=low

  * New upstream release, "Like a virgin".

 -- Loic Minier <lool@dooz.org>  Wed,  8 Feb 2006 20:49:29 +0100

gstreamer0.10 (0.10.2.3-1) unstable; urgency=low

  * New upstream pre-release.

 -- Loic Minier <lool@dooz.org>  Wed,  8 Feb 2006 17:13:14 +0100

gstreamer0.10 (0.10.2.2-1) unstable; urgency=low

  * New upstream pre-release.
    - Relibtoolize.
      [debian/patches/70_relibtoolize.patch]

 -- Loic Minier <lool@dooz.org>  Wed,  8 Feb 2006 16:08:38 +0100

gstreamer0.10 (0.10.2-1) unstable; urgency=low

  * New upstream release, "If man is 5".

 -- Loic Minier <lool@dooz.org>  Mon, 16 Jan 2006 21:42:56 +0100

gstreamer0.10 (0.10.1-2) unstable; urgency=low

  * Drop unneeded passivetex and xmltex from the build-deps, thanks Frank
    Küster; this is urgent since xmltex is RC-buggy. (Closes: #348214)
    [debian/control, debian/control.in]

 -- Loic Minier <lool@dooz.org>  Sun, 15 Jan 2006 19:40:59 +0100

gstreamer0.10 (0.10.1-1) unstable; urgency=low

  * Suggest gstreamer0.10-plugins-base instead of misc. (Closes: #345118)
    [debian/control, debian/control.in]
  * Add Sebastien Bacher to Uploaders.
    [debian/control, debian/control.in]
  * Replace occurrences of GST_PREFIX in GST_PKGNAME since they hold the same
    value and GST_PREFIX isn't used in the other source packages.
    [debian/control.in, debian/gstreamer-doc.install,
     debian/gstreamer-doc.links, debian/gstreamer-doc.lintian, debian/rules]
  * New upstream release.
  * 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]
  * Advertise this in pkgconfig files.
    [debian/patches/11_libcheck-pkgconfig-force-pic.patch]
  * Relibtoolize.
    [debian/patches/70_relibtoolize.patch]
  * Move check to arch-dependent build-deps and version to >= 0.9.3-2 to get a
    PIC version of the static lib.
    [debian/control, debian/control.in]

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

gstreamer0.10 (0.10.0-1) unstable; urgency=medium

  [ Sebastien Bacher ]
  * New upstream version.
  * Changes for gstreamer0.10:
    - Rename 0.8 packages to 0.10. [debian/rules]
    - Build-Depends on check, python-twisted, python-xml [debian/control.in]
    - Bump shlibs deps for 0.10. [debian/rules]
    - Create a cache directory [debian/libgstreamer.dirs, debian/rules]
    - Don't use alternatives [debian/gstreamer-tools-abi.postinst,.
      debian/gstreamer-tools-abi.prerm]
    - Drop references to deprecated tools [debian/gstreamer-tools-abi.install,.
      debian/gstreamer-tools-abi.manpages,debian/gstreamer-tools-abi.postinst,.
      debian/gstreamer-tools-abi.prerm, debian/libgstreamer.install,.
      debian/libgstreamer.manpages, debian/libgstreamer.postinst, debian/rules]
    - New gstreamer-tools (unversionned binaries) package
      [debian/control.in, debian/gstreamer-tools.install, debian/rules].
    - Remove transition code. [debian/libgstreamer.preinst]
    - Rename documentation lists. [debian/gstreamer0.8-doc.doc-base.core-ref,
      debian/gstreamer0.8-doc.doc-base.faq,
      debian/gstreamer0.8-doc.doc-base.libs-ref,
      debian/gstreamer0.8-doc.doc-base.manual,
      debian/gstreamer0.8-doc.doc-base.pwg]
    - Updated descriptions [debian/control.in]
    - Updated lists of files. [debian/libgstreamer.install
      debian/gstreamer-tools-abi.install debian/libgstreamer-dev.install]
    - Updated options for the documentation build [debian/rules]
    - Updated the TODO list [debian/TODO]
  * debian/patches/64_sparc-gcc4-build-fix.patch,
    debian/patches/doc-build.patch:
    - fixed with the new version.

  [ Loic Minier ]
  * Merge changes from Sebastien Bacher, thanks!
  * Update upstream URL to http://gstreamer.freedesktop.org/.
    [debian/control, debian/control.in, debian/copyright]
  * Minor cleanups.
    [debian/rules]
  * Let gstreamer-tools conflict with gstreamer0.8-tools << 0.8.11-2 which
    shipped the gst-* command line tools as symlinks.
    [debian/control, debian/control.in]
  * Add gst-xmlinspect to man pages.
    [debian/gstreamer-tools-abi.manpages]

 -- Loic Minier <lool@dooz.org>  Sun, 11 Dec 2005 20:57:56 +0100

gstreamer0.8 (0.8.11-2) unstable; urgency=low

  [ Sebastien Bacher ]
  * Clean the alternatives, we use real files now
    [debian/gstreamer-tools.postinst, debian/gstreamer-tools.preinst,
    debian/gstreamer-tools.prerm]

  [ Loic Minier ]
  * Merge the work of Sebastien Bacher (above), thanks!
  * Completely drop the now obsolete prerm and postinst scripts.
    [debian/gstreamer-tools.postinst, debian/gstreamer-tools.preinst,
    debian/rules]
  * With this upload, you will loose the gst-* commands such as gst-launch,
    only the versionned version will remain, the unversionned tools will be
    built and shipped from the 0.10 series sources.

 -- Loic Minier <lool@dooz.org>  Sun, 11 Dec 2005 18:55:40 +0100

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

  * New upstream release, "No Fun".
    - Bump libxml2-dev build-dep to 2.6.0.
  * Update FSF address. [debian/copyright]
  * Fix FTBFS with GCC 4 in a code path only built by sparc (but unused).
    (Closes: #319147) [debian/patches/64_sparc-gcc4-build-fix.patch]
  * Bump shlibs.

 -- Loic Minier <lool@dooz.org>  Sun,  4 Sep 2005 22:20:20 +0200

gstreamer0.8 (0.8.10-2) unstable; urgency=low

  * Loic Minier:
    * Install alternatives for the gst-* binaries with a priority
      corresponding to the GStreamer ABI. (Closes:  #265223) [debian/rules,
      debian/gstreamer-tools.prerm, debian/gstreamer-tools.postinst]
    * 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. (Closes: #301190)
      [debian/libgstreamer.postinst, debian/TODO.Debian]
    * Remove /var/lib/gstreamer if empty.
      [debian/libgstreamer.postrm]
    * Remove left over /root/.gstreamer-0.8 tree if it hasn't been modified.
      [debian/libgstreamer.preinst, debian/rules]
    * Add a versioned dependency with >= current-upstream-version to all
      current shlibs inter-dependencies to ensure consistency of symbols to
      avoid things such as #315556.
      [debian/control, debian/control.in, 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]
    * Add a TODO list for the Debian package. [debian/TODO.Debian]

 -- Loic Minier <lool@dooz.org>  Mon, 27 Jun 2005 16:21:55 +0200

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

  * Loic Minier:
    * New upstream release "No Fun". (Closes: #312355)
      - Don't drop buffers on interrupt, fixes reported problems on MP3
        playback. (Closes: #303139)
      - Fix a typo in the gst-launch manual page where "--silent" was used
        instead of "--verbose". (Closes: #292267)
      - Bump shlibs to current version since new elements were added.
        [debian/rules]
      - Drop CPUID instruction detection patch, upstream used a SIGILL handler
        instead. [debian/patches/cpuid.patch]
    * Add myself as uploader.

 -- Loic Minier <lool@dooz.org>  Tue, 14 Jun 2005 21:49:55 +0200

gstreamer0.8 (0.8.9-2) unstable; urgency=low

  * debian/patches/cpuid.patch:
    * Patch from upstream to check for cpuid support (Closes: #289362)
  * debian/watch:
    * Watch for gstreamer not gst-plugins

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

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

  * New upstream
  * debian/rules:
    * Bump shlibs to current version
  * debian/patches/doc-build.patch:
    * Update and refer to bug #286160
  * debian/watch:
    * Add
  * debian/gstreamer0.8-doc.doc-base.*
    * Register docs with doc-base (Closes: #293871)

 -- David I. Lehn <dlehn@debian.org>  Wed,  9 Feb 2005 10:24:16 -0500

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

  * New upstream
    * Fixes Ogg stream bug (Closes: #273086)
    * Fixes mp3 infinite loop (Closes: #277650)
  * debian/rules:
    * Bump shlibs to current version
  * debian/rules:
    * Distribute NEWS (Closes: #275717)
  * Should fix Rhythmbox image and cpu problems
    (Closes: #277146, #278661, #278663, #278656, #281426, #284507, #288102)

 -- David I. Lehn <dlehn@debian.org>  Fri,  7 Jan 2005 01:44:26 -0500

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

  * New upstream
  * debian/rules:
    * Bump shlibs to current version

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

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

  * New upstream
  * debian/rules:
    * Bump shlibs to current version
    * Use debian/control:: vs debian/control: to work with recent CDBS changes
    * Use CDBS simple-patchsys
  * docs/pwg/advanced-types.xml:
    * Remove patch
  * debian/patches/doc-build.patch:
    * Add goofy doc patch

 -- David I. Lehn <dlehn@debian.org>  Tue,  5 Oct 2004 13:15:06 -0400

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

  * New upstream
  * debian/rules:
    * Bump shlibs to current version

 -- David I. Lehn <dlehn@debian.org>  Tue, 17 Aug 2004 23:06:54 -0400

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

  * New upstream
  * debian/rules:
    * Bump shlibs version
  * gst/queue.h:
    * Fix GstQueue binary compatibility (patch from upstream CVS)
  * libs/gst/control/Makefile.{am,in}:
    * Link libgstcontrol to libgstreamer (patch from upstream CVS)
      (Closes: #262019)

 -- David I. Lehn <dlehn@debian.org>  Thu, 29 Jul 2004 15:07:20 -0400

gstreamer0.8 (0.8.3-3) unstable; urgency=low

  * debian/rules:
    * Typo, s/DEB_MAKESHLIBS_ARGS_/DEB_DH_MAKESHLIBS_ARGS_/, broke versioned
      shlibs

 -- David I. Lehn <dlehn@debian.org>  Wed, 30 Jun 2004 17:11:13 -0400

gstreamer0.8 (0.8.3-2) unstable; urgency=medium

  * debian/libgstreamer.install, debian/libgstreamer-dev.install:
    * Include dataprotocol library and development files
  * debian/rules:
    * Bump shlibs dep to 0.8.3-2 due to dataprotocol

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

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

  * New upstream

 -- David I. Lehn <dlehn@debian.org>  Sat, 12 Jun 2004 00:05:23 -0400

gstreamer0.8 (0.8.2-1) unstable; urgency=low

  * New upstream

 -- David I. Lehn <dlehn@debian.org>  Sat, 12 Jun 2004 00:01:21 -0400

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

  * debain/rules:
    * Convert to use CDBS
      * Fixes rpath and .la libdir problems from previous builds
      * Always builds the docs even on -arch builds, sorry
  * debian/compat:
    * Bump to 4
  * debian/control.in:
    * Update Standards-Version to 3.6.1 due to CDBS use
    * Add CDBS and newer debhelper dependencies
  * debian/*:
    * Adjust install paths to work with CDBS

 -- David I. Lehn <dlehn@debian.org>  Sun, 18 Apr 2004 22:21:30 -0400

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

  * New upstream
  * New schedulers:
  * debian/libgstreamer.install:
    * Add libgstentrygthreadscheduler.so
    * Add libgstentryomegascheduler.so
  * docs/gst/Makefile.{in,am}:
    * Patch from CVS to fix docs build

 -- David I. Lehn <dlehn@debian.org>  Sat, 17 Apr 2004 19:47:18 -0400

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

  * Bump to -2 to ease upgrades for early -1 testers
  * gstreamer-tools.links:
    * Link gst-xmlinspect manpage to gst-inspect

 -- David I. Lehn <dlehn@debian.org>  Fri, 16 Apr 2004 00:52:46 -0400

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

  * New upstream (Closes: #239114)
    * Branch 0.7.x to 0.8.x
  * debian/control.in:
    * Version all packages as 0.8 series
  * debian/rules:
    * Update to 0.8
    * Build 0.8 series package control files
    * Remove older hacks fixed upstream
  * debian/*:
    * Reorg many control files for 0.8 versioning
    * s/--gst-mask=0/--gst-debug-level=0/
    * Remove "VERSION" from input package file names
  * debian/libgstreamer[-dev].install:
    * Plugins removed upstream: gsttypes, gststaticautoplug*,
      gstautoplugcache, gstautoplugger, gstputbits, gststaticautoplug,
      gststaticautoplugrender, gsttypes
    * Add locale files
  * debian/gstreamer-tools.install:
    * Add gst-xmlinspect-*
  * Upstream installs versioned manpages (Closes: #199444)

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

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

  * New upstream
  * debian/control.in:
    * Build-Depends-Indep: add netpbm so ps and pdf docs build

 -- David I. Lehn <dlehn@debian.org>  Fri, 12 Mar 2004 18:30:54 -0500

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

  * New upstream

 -- David I. Lehn <dlehn@debian.org>  Thu, 11 Mar 2004 23:30:32 -0500

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

  * New upstream

 -- David I. Lehn <dlehn@debian.org>  Thu, 11 Mar 2004 23:11:58 -0500

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

  * New upstream

 -- David I. Lehn <dlehn@debian.org>  Thu, 11 Mar 2004 05:54:52 -0500

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

  * New upstream
    * Branch 0.6.x to 0.7.x
  * debian/rules:
    * Update to 0.7

 -- David I. Lehn <dlehn@debian.org>  Thu, 11 Mar 2004 04:58:40 -0500

gstreamer (0.6.4-1) unstable; urgency=low

  * New upstream (Closes: #217880)
  * Add xmlto, xmltex, and passivetex dependencies for doc creation
  * debian/rules: adjust for new doc locations
  * docs/{manual,pwg,faq}/Makefile.in: temporary hack to disable ps/pdf
    generation

 -- David I. Lehn <dlehn@debian.org>  Fri, 31 Oct 2003 14:08:46 -0500

gstreamer (0.6.3-1) unstable; urgency=low

  * New upstream
  * configure, configure.ac:
    * disable -Werror
  * gst/gstplugin.c: CVS patch to fix type punning

 -- David I. Lehn <dlehn@debian.org>  Sat, 30 Aug 2003 23:20:43 -0400

gstreamer (0.6.2-2) unstable; urgency=low

  * m68k patch by Matthias Urlichs <smurf@smurf.noris.de> (forwarded from Rick
    Younie <rick@def.debian.net>) (Closes: #172269)

 -- David I. Lehn <dlehn@debian.org>  Tue, 12 Aug 2003 13:24:12 -0400

gstreamer (0.6.2-1) unstable; urgency=low

  * New upstream
  * debian/gstreamer-tools.install/manpages: add gst-typefind
  * docs/gst/: change www.oasis-open.org dtd to local dtd
  * docs/libs/: use some code from cdbs to change dtd in gtk-doc tools output
    to local dtd

 -- David I. Lehn <dlehn@debian.org>  Wed, 11 Jun 2003 10:36:17 -0400

gstreamer (0.6.1-2) unstable; urgency=low

  * (unreleased)
  * Merge packages:
    * Simplify for users, developers, and maintainers.
    * Current number of packages is confusing.
    * Users/developers need to install all the packages anyway due to tight
      (circular) dependencies.
    * The libraries and plugins are all versioned - no need (currently) for a
      "-common" type package.
    * Progress towards capability for parallel GStreamer installs (more work
      needed).
    * Decision long ago to make very modular has turned out to be complex and
      is not utilized by any current applications.
  * Merge changes:
    * Add -core, -core-libs, -runtime files to libgstreamer0.6-0
    * Add -core-libs-dev files to libgstreaer0.6-dev
    * Version gst-{register,compprep} (and manpages) as
      gst-{register,compprep}-0.6
    * Many other supporting debian/ adjustments
  * Remove DISPLAY unset hacks from postinst/postrm scripts and fix non-X
    installs with 0.6.2 CVS xvideosink patch in gst-plugins.
    (Closes: #192693, #195342, #169100, #195113, #194975)
  * docs/devhelp/Makefile.*: stop regeneration of devhelp files during install
  * gst/elements/gstmd5sink.c: make md5_* functions static to avoid symbol
    conflicts with libdvdnav 0.1.9
  * Fix gstreamer-doc Recommends: to use versioned -dev package

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

gstreamer (0.6.1-1) unstable; urgency=low

  * New upstream
  * Change maintainer address to @debian.org
  * Added gst-element-check.m4 to -dev package (Closes: Bug#187456)
  * debian/control.in:
    * gstreamer-tools: gst-feedback depends on pkg-config (Closes: Bug#180076)
    * libgstreamer0.6-dev depends on libxml2-dev (Closes: Bug#190103)
    * gstreamer-runtime depends on gstreamer-core.  Sigh.  Didn't want to do
      this but looks like no other option. (Closes: Bug#181502, Bug#181745,
      Bug#185817)
  * gst/gstatomic_impl.h: disable mips asm in favor of generic implementation
    (sparc disabled upstream) (Closes: Bug#186440)
  * Upstream now linking libraries properly (Closes: Bug#187360)
  * Patch from 0.6.1+ to add back _get_props_entry_type
  * Unset DISPLAY before running gst-register/gst-compprep

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

gstreamer (0.6.0-1) unstable; urgency=low

  * New upstream
  * Upstream manpage updates (Closes: Bug#179190)

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

gstreamer (0.5.2.3-1) unstable; urgency=low

  * New upstream

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

gstreamer (0.5.2.2-1) unstable; urgency=low

  * New upstream
    * pre-release for API frozen 0.6.x series
  * Slight pacakge refactoring so a possible future parallel dev series is
    slightly less painful
  * Update libgstreamer-dev to libgstreamer0.6-dev
  * Update libgstreamer0.5.2 to libgstreamer0.6-0
  * debian/libgstreamer0.6-dev.install:
    * explicitly mention gstreamer-[0-9]*.pc
  * debian/gstreamer-core-libs-dev.install:
    * add gstreamer-control-*.pc

 -- David I. Lehn <dlehn@vt.edu>  Wed, 29 Jan 2003 13:42:01 -0500

gstreamer (0.5.2-1) unstable; urgency=low

  * New upstream
  * Update libgstreamer0.5.1 to libgstreamer0.5.2
  * Upstream fixes Python requirement when not building docs
    (Closes: Bug#178114)

 -- David I. Lehn <dlehn@vt.edu>  Thu, 23 Jan 2003 20:15:24 -0500

gstreamer (0.5.1-1) unstable; urgency=low

  * New upstream (Closes: Bug#176474)
  * Update libgstreamer0.5.0 to libgstreamer0.5.1
  * Tighten gstreamer-core-libs shlibs (Closes: Bug#174363)

 -- David I. Lehn <dlehn@vt.edu>  Thu, 16 Jan 2003 18:46:41 -0500

gstreamer (0.5.0-1) unstable; urgency=low

  * New upstream
  * Make core Architecture: any:  It's almost true, or might be now, or will
    be soon and autobuilders are ignoring that field anyway.
  * Generated files moved from /etc/gstreamer to /var/lib/gstreamer/0.5/
  * Update libgstreamer0.4.2 to libgstreamer0.5.0
  * Hack gst/autoplug/gstautoplugger.c to not use the non-existant
    "caps_changed" signal

 -- David I. Lehn <dlehn@vt.edu>  Thu, 19 Dec 2002 20:43:26 -0500

gstreamer (0.4.2-2) unstable; urgency=low

  * Update gtk-doc.m4 with CVS patch to handle multidigit version check
  * Add S/390 support patch (Closes: Bug#171473)
  * Update config.{guess,sub}

 -- David I. Lehn <dlehn@vt.edu>  Tue,  3 Dec 2002 22:22:22 -0500

gstreamer (0.4.2-1) unstable; urgency=low

  * New upstream (Closes: Bug#167479)
  * Update libgstreamer0.4.1 to libgstreamer0.4.2
  * libgstreamer0.4.2 conflicts with 0.4.0, 0.4.1
    * Upstream needs more work to properly support parallel lib installs
  * Tighten dependencies
    * Upstream ABI/API changes require this for any hope of smooth upgrades at
      the moment
  * Move gstreamer-runtime to Section: utils from libs
  * Move gstreamer-tools to Section: utils from x11
  * Doc fixes: (Closes: Bug#165279)
    * Call xsltproc with --nonet
    * Refer xsl:import urls to local docbook-xsl package xsl files
    * Refer www.oasis-open.org dtds to local docbook-xml package dtd files
    * Add docbook-xml and docbook-xsl to Build-Depends-Indep

 -- David I. Lehn <dlehn@vt.edu>  Wed,  6 Nov 2002 20:32:46 -0500

gstreamer (0.4.1-3) unstable; urgency=low

  * Fix formatting of Architecture: list to fix alpha and sparc builds

 -- David I. Lehn <dlehn@vt.edu>  Tue, 15 Oct 2002 22:08:54 -0400

gstreamer (0.4.1-2) unstable; urgency=low

  * Update debian/rules to not fail on binary-arch only builds (configure was
    unconditionally run with --enable-docs-build which caused it to fail when
    Build-Depends-Indep packages were not installed)
    (Closes: Bug#164589, Bug#164698)
  * Fix version check in common/m4/as-python.m4 to use sys.version_info

 -- David I. Lehn <dlehn@vt.edu>  Mon, 14 Oct 2002 20:00:29 -0400

gstreamer (0.4.1-1) unstable; urgency=low

  * New upstream
  * Update libgstreamer0.4.0 to libgstreamer0.4.1
  * gstreamer-tools.files/manpages: add gst-md5sum
  * Use xsltproc 1.0.21 to fix doc image problems
  * Add patch from CVS to fix GST_TYPE_CAPS/PROPS macro typos
  * Build libgstcontrol as a lib not a plugin module
  * Update config.{guess,sub}

 -- David I. Lehn <dlehn@vt.edu>  Mon,  7 Oct 2002 20:36:28 -0400

gstreamer (0.4.0.2-cvs20020919-1) unstable; urgency=low

  * CVS snapshot, release branch
  * gstreamer-core.files: change to libgst*scheduler, since the
    scheduler names have changed.
  * gstreamer-core-libs.files: libgstcontrol.so moved
  * add debian/control.in, and create debian/control rule in debian/rules
    to change the version number automatically

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

gstreamer (0.4.0-2) unstable; urgency=low

  * Remove libtool hack
  * Dependency change from libc6-dev to libc6-dev | libc-dev

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

gstreamer (0.4.0-1) unstable; urgency=low

  * New upstream
  * Update library package: libgstreamer0.3.4 -> libgstreamer0.4.0
  * Add automake Python support to find python binary to run devhelp doc
    helper script.  This touches -every- Makefile.in and since the package
    diff will already be large just use automake 1.6 instead of 1.5 as used
    upstream.  Sorry.
  * Update config.{guess,sub}
  * Temporarily comment out figures from manual so it builds
  * Apply CVS patch for s/&percnt;/%/ in XML docs
  * Added devhelp support
  * Added gst-feedback to gstreamer-tools
  * Break stuff: blindly reanme gstreamer-lib-core{-dev} to
    gstreamer-core-libs{-dev}.  Hard to chose naming as these are half-plugins
    and half-linkable libs.  Picking a scheme that also works with
    gstreamer-plugins-* packages.  Still looking for a better solution...

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

gstreamer (0.3.4-1) unstable; urgency=low

  * New upstream
  * libgstreamer0.3.3 -> libgstreamer0.3.4
  * Conflict and Replace libgstreamer0.3.3 so upgrades work
    This shouldn't be required because plugins know what version they were
    compiled with.  Apparently this doesn't yet work properly.
  * Add bison and flex to Build-Depends
  * Add libgstfastscheduler.so to -core

 -- David I. Lehn <dlehn@vt.edu>  Mon, 15 Apr 2002 01:13:00 -0400

gstreamer (0.3.3-3) unstable; urgency=low

  * Add libgstreamer-dev dependencies on libpopt-dev and libglib2.0-dev
  * CVS fix for GstElement NEW_PAD and PAD_REMOVED g_signal_new parameters

 -- David I. Lehn <dlehn@vt.edu>  Fri, 29 Mar 2002 03:04:22 -0500

gstreamer (0.3.3-2) unstable; urgency=low

  * Depend on and rebuld for glib 2.0
  * Remove libgtk from Build-Depends
  * Move gs from Build-Depends to Build-Depends-Indep
  * Added lintian overrides for base.css zero length files

 -- David I. Lehn <dlehn@vt.edu>  Fri, 22 Mar 2002 19:29:24 -0500

gstreamer (0.3.3-1) unstable; urgency=low

  * New upstream
  * Renamed libgstX to libgstreamerX.Y.Z
    will move to better versioning once upstream starts interface versioning
  * Renamed libgst-dev to libgstreamer-dev
  * Patch to build plugins as only .so
  * Added libstandardscheduler.so to -core
  * Guessing that mips support handles mipsel too
  * From David Schleef <ds@schleef.org>:
    * Add popt, gs to Build-Depends:
    * #include <errno.h> compile fix

 -- David I. Lehn <dlehn@vt.edu>  Thu, 21 Mar 2002 01:42:18 -0500

gstreamer (0.3.2-2) unstable; urgency=low

  * Rebuild for glib/gtk 1.3.15

 -- David I. Lehn <dlehn@vt.edu>  Sun, 24 Feb 2002 23:48:33 -0500

gstreamer (0.3.2-1) unstable; urgency=low

  * The "I should have started using cvs-buildpacakge long ago" release
  * New upstream release
  * Once again stripped CVS dirs from upstream tarball
  * Add spider autoplugger
  * Added gst-xmllaunch and man page to -tools
  * Despite my complaints, upstream is using new lib versioning
    until they decide API is "stable" enough to provide support.
    At that point proper versioning will happen.
    This release lib change:
       libgst.so.2.0.0 -> libgst-0.3.2.so.0.0.0
    This release lib package change:
       libgst2 -> libgst3
    Hopefully this is mostly transparent.

    Due to a conflict with GNU Smalltalk the next upstream release
    will be renaming some "gst" to "gstreamer".  This will change
    the lib to libgstreamer*.  Some header locations will change too
    so prepare for broken code.

    Plan for next upstream release is to rename packages:
       libgst3 -> libgstreamer0
       libgst-dev -> libgstreamer-dev
  * Plugins now unversioned upstream:
    * Just .so, no more .so.x.y.z
    * Drop .la and .a
    * Fixup a few
    * Wait and see if anyone even notices...
  * Add back some docs that escaped via the diff
  * Fixup some more doc cruft in the diff

 -- David I. Lehn <dlehn@vt.edu>  Thu, 14 Feb 2002 02:20:48 -0500

gstreamer (0.3.1-4) unstable; urgency=low

  * (Unreleased)
  * find . -type d -name CVS -exec rm -rf {} \;
  * Hack upstream tarball to exclude above CVS/ dirs
  * Rebuild for conversion to cvs-buildpackage management

 -- David I. Lehn <dlehn@vt.edu>  Wed, 13 Feb 2002 18:18:34 -0500

gstreamer (0.3.1-3) unstable; urgency=low

  * Rebuild for glib/gtk 1.3.13

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

gstreamer (0.3.1-2) unstable; urgency=low

  * Upstream fix for proper libxml version in pkg-config
  * Undo some of the auto docs/*/tmpl breakage

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

gstreamer (0.3.1-1) unstable; urgency=low

  * New upstream release
  * Upstream broken into multiple packages
  * Core plugins left in -core
  * Core lib plugins moved to -core
  * Other plugins now built from gst-plugins source pacakge
  * libgst1 -> libgst2
  * Tool prefix renamed upstream: s/gstreamer/gst/
  * Moved gstreamer-guilaunch to gst-editor source package
  * Removed gstreamer-config and .m4 in favor of pkg-config use
  * Build for glib2
  * Change doc build system a bit
  * Added -lib-core and -lib-core-dev packages for library plugins

 -- David I. Lehn <dlehn@vt.edu>  Thu, 10 Jan 2002 23:09:34 -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
