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

  * New upstream bugfix release

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

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

  * New upstream bugfix release

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

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

  * New upstream bugfix release

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

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

  * New upstream bugfix release

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

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

  * debian/control:
    + Make sure to properly update debian/control every time, otherwise
      changes to control.in are not applied (Closes: #842526).

 -- Sebastian Dröge <slomo@debian.org>  Mon, 07 Nov 2016 10:42:26 +0200

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

  [ Sebastian Dröge ]
  * debian/control.in:
    + Remove obsolete and redudant build dependency on jade (Closes: #840370).

  [ 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:35:50 +0200

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

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

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

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

  * New upstream unstable release:
    + debian/libgstreamer-dev.install:
      - Move gstconfig.h into the arch independent path again.
    + debian/libgstreamer.symbols:
      - Update new symbols.

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

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

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

 -- Sebastian Dröge <slomo@debian.org>  Wed, 06 Jul 2016 11:51:30 +0300

gstreamer1.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:39:48 +0300

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

  * New upstream bugfix release.

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

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

  * debian/control.in:
    + libgstreamer1.0-0 1.8.0 breaks gstreamer1.0-plugins-base << 1.8.0
      because of a bug in the latter that is exposed by the new version of
      core. See https://bugzilla.gnome.org/show_bug.cgi?id=760234
      (Closes: #819958, #819960).

 -- Sebastian Dröge <slomo@debian.org>  Thu, 07 Apr 2016 12:23:58 +0300

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

  * New upstream stable release.

 -- Sebastian Dröge <slomo@debian.org>  Thu, 24 Mar 2016 11:52:02 +0200

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

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

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

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

  * New upstream release candidate:
    + debian/libgstreamer.symbols:
      - Add new symbols.
    + debian/control.in:
      - Build-depend on texlive-generic-recommended for ulem.sty.
        It's not pulled in automatically anymore for whatever reason.

 -- Sebastian Dröge <slomo@debian.org>  Tue, 01 Mar 2016 16:57:02 +0200

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

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

 -- Sebastian Dröge <slomo@debian.org>  Fri, 19 Feb 2016 10:55:13 +0200

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

  * debian/control.in:
    + Build-depend on libgsl-dev | libgsl0-dev instead of just the latter.
  * New upstream unstable release:
    + debian/control.in:
      - Build-depend on GLib >= 2.40.
    + debian/libgstreamer.symbols:
      - Add new symbols.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 23 Dec 2015 14:13:49 +0100

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

  * New upstream bugfix release.

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

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

  * New upstream bugfix release.

 -- Sebastian Dröge <slomo@debian.org>  Fri, 30 Oct 2015 16:13:37 +0200

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

  * New stable upstream release.

 -- Sebastian Dröge <slomo@debian.org>  Fri, 25 Sep 2015 22:45:29 +0200

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

  * New upstream release candidate.

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

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

  * New upstream release candidate.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 19 Aug 2015 12:40:43 +0300

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

  * New unstable upstream release.

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

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
