gst-plugins-ugly1.0 (1.14.4-1) unstable; urgency=medium

  * New upstream bugfix release

 -- Sebastian Dröge <slomo@debian.org>  Wed, 03 Oct 2018 14:02:07 +0300

gst-plugins-ugly1.0 (1.14.3-1) unstable; urgency=medium

  * New upstream bugfix release.

 -- Sebastian Dröge <slomo@debian.org>  Mon, 17 Sep 2018 10:04:28 +0300

gst-plugins-ugly1.0 (1.14.2-1) unstable; urgency=medium

  * New upstream bugfix release

 -- Sebastian Dröge <slomo@debian.org>  Mon, 23 Jul 2018 12:23:41 +0300

gst-plugins-ugly1.0 (1.14.1-1) unstable; urgency=medium

  * New upstream bugfix release

 -- Sebastian Dröge <slomo@debian.org>  Fri, 18 May 2018 10:42:43 +0300

gst-plugins-ugly1.0 (1.14.0-1) unstable; urgency=medium

  * New upstream stable release.

 -- Sebastian Dröge <slomo@debian.org>  Tue, 20 Mar 2018 10:11:02 +0200

gst-plugins-ugly1.0 (1.13.91-1) experimental; urgency=medium

  * New upstream release candidate.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 14 Mar 2018 11:10:44 +0200

gst-plugins-ugly1.0 (1.13.90-1) experimental; urgency=medium

  * New upstream release candidate.

 -- Sebastian Dröge <slomo@debian.org>  Mon, 05 Mar 2018 10:15:17 +0200

gst-plugins-ugly1.0 (1.13.1-1) experimental; urgency=medium

  * New upstream development release.
  * debian/build-deps.in,
    debian/gstreamer-plugins-ugly.install:
    + Remove LAME, mpg123 and twolame plugins. They're in gst-plugins-good now.

 -- Sebastian Dröge <slomo@debian.org>  Sun, 18 Feb 2018 13:05:17 +0200

gst-plugins-ugly1.0 (1.12.4-1) unstable; urgency=medium

  * New upstream bugfix release

 -- Sebastian Dröge <slomo@debian.org>  Thu, 07 Dec 2017 19:49:42 +0200

gst-plugins-ugly1.0 (1.12.3-1) unstable; urgency=medium

  * New upstream bugfix release

 -- Sebastian Dröge <slomo@debian.org>  Mon, 18 Sep 2017 21:36:42 +0300

gst-plugins-ugly1.0 (1.12.2-1) unstable; urgency=medium

  * New upstream bugfix release

 -- Sebastian Dröge <slomo@debian.org>  Fri, 14 Jul 2017 13:37:28 +0300

gst-plugins-ugly1.0 (1.12.1-1) unstable; urgency=medium

  * New upstream bugfix release

 -- Sebastian Dröge <slomo@debian.org>  Tue, 20 Jun 2017 11:52:48 +0300

gst-plugins-ugly1.0 (1.12.0-1) experimental; urgency=medium

  * debian/rules: Install with --fail-missing so we don't miss files.
  * debian/control{,.in}: Provide C/R/P for -amr package to ease upgrades in
    Ubuntu.
  * New upstream stable release

 -- Iain Lane <iain.lane@canonical.com>  Thu, 04 May 2017 15:19:30 +0300

gst-plugins-ugly1.0 (1.11.91-1) experimental; urgency=medium

  * New upstream release canditate

 -- Sebastian Dröge <slomo@debian.org>  Thu, 27 Apr 2017 17:17:42 +0300

gst-plugins-ugly1.0 (1.11.90-1) experimental; urgency=medium

  * New upstream release candidate.

 -- Sebastian Dröge <slomo@debian.org>  Fri, 07 Apr 2017 16:04:08 +0300

gst-plugins-ugly1.0 (1.11.2-1) experimental; urgency=medium

  * New development release

 -- Sebastian Dröge <slomo@debian.org>  Fri, 24 Feb 2017 14:48:20 +0200

gst-plugins-ugly1.0 (1.11.1-1) experimental; urgency=medium

  * New upstream development release.

 -- Sebastian Dröge <slomo@debian.org>  Thu, 12 Jan 2017 15:26:09 +0200

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

  * New upstream bugfix release

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

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

  * New upstream bugfix release

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

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

  * New upstream bugfix release

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

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

  * New upstream bugfix release

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

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

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

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

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

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

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

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

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

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

 -- Sebastian Dröge <slomo@debian.org>  Thu, 01 Sep 2016 12:16:09 +0300

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

  * New upstream unstable release:
    + debian/build-deps.in,
      debian/rules:
      - Build-depend on GStreamer >= 1.9.1.
      - Build-depend on libmpeg2 >= 0.5.3.

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

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

  * New upstream bugfix release.

 -- Sebastian Dröge <slomo@debian.org>  Thu, 09 Jun 2016 11:35:45 +0300

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

  * New upstream bugfix release.

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

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

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

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

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

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

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

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

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

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

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

  * New upstream unstable release:
    + debian/build-deps.in,
      debian/rules:
      - Build-depend on GStreamer >= 1.7.2.
      - Update build-depends on opencore-amrnb/wb to >= 0.1.3.
      - Build-depend on libmpg123-dev >= 1.13
    + debian/gstreamer-plugins-ugly.install,
      debian/control.in:
      - Add new mpg123 plugin and add Replaces/Breaks for
        gstreamer1.0-plugins-bad << 1.7.2 where it came from.

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

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

  * New upstream unstable release:
    + debian/build-deps.in,
      debian/rules:
      - Build-depend on GLib >= 2.40 and GStreamer >= 1.7.1.

 -- Sebastian Dröge <slomo@debian.org>  Thu, 24 Dec 2015 14:34:41 +0100

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

  * New upstream bugfix release.

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

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

  * New upstream bugfix release.

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

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

  * New upstream stable release.

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

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

  * New upstream release candidate.

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

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

  * New upstream release candidate.

 -- Iain Lane <laney@debian.org>  Wed, 19 Aug 2015 14:01:48 +0300

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

  [ Iain Lane ]
  * debian/watch: Update to match current URL scheme

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

 -- Iain Lane <laney@debian.org>  Mon, 15 Jun 2015 09:36:32 +0100

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

  * New unstable upstream release.

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

gst-plugins-ugly1.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:25:26 +0300

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

  * New upstream GIT snapshot.

 -- Sebastian Dröge <slomo@debian.org>  Tue, 17 Mar 2015 09:24:19 +0100

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

  * New upstream bugfix release.

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

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

  * Upload to unstable.

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

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

  * New upstream bugfix release.

 -- Sebastian Dröge <slomo@debian.org>  Thu, 06 Nov 2014 13:02:56 +0100

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

  * New upstream bugfix release.

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

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

  * New upstream bugfix release.

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

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

  * New upstream bugfix release.

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

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

  * New upstream stable release.

 -- Sebastian Dröge <slomo@debian.org>  Sat, 19 Jul 2014 17:44:56 +0200

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

  * New upstream release candidate:
    + debian/rules,
      debian/build-deps.in:
      - Build-depend on GStreamer core and base >= 1.3.91.

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

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

  * New upstream release candidate:
    + debian/rules,
      debian/build-deps.in:
      - Build-depend on GStreamer core and base >= 1.3.90.

 -- Sebastian Dröge <slomo@debian.org>  Sat, 28 Jun 2014 12:16:48 +0200

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

  * New upstream development release:
    + debian/rules,
      debian/build-deps.in:
      - Build-depend on GStreamer core and base >= 1.3.3.
  * debian/rules:
    + Run autopoint during autoreconf.

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

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

  * New upstream development release:
    + debian/rules,
      debian/build-deps.in:
      - Build-depend on GStreamer core and base >= 1.3.2.

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

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

  * New upstream development release:
    + debian/rules,
      debian/build-deps.in:
      - Build-depend on GStreamer core and base >= 1.3.1.

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

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

  * New upstream bugfix release:
    + debian/patches/01_a52dec-configure.patch:
      - Dropped, merged upstream.

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

gst-plugins-ugly1.0 (1.2.3-2) unstable; urgency=medium

  * debian/patches/01_a52dec-configure.patch:
    + Fix configure check for a52dec after latest upload of a52dec.
      Patch taken from multiple upstream commits (Closes: #739803).

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

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

  [ Iain Lane ]
  * Drop ltmain-as-needed and do the same with dh_autoreconf --as-needed.
    Thanks, Logan Rosen. (Closes: #734560) 

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

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

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

  * New upstream bugfix release.

 -- Sebastian Dröge <slomo@debian.org>  Fri, 27 Dec 2013 11:03:19 +0100

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

  [ Fabian Greffrath ]
  * Team upload.
  * Update Vcs-Browser field in debian/control{,.in}.

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

 -- Sebastian Dröge <slomo@debian.org>  Sat, 09 Nov 2013 17:10:37 +0100

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

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

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

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

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

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

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

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

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

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

  * New upstream development snapshot:
    + debian/build-deps.in,
      debian/rules:
      - Build depend on GStreamer and gst-plugins-base >= 1.1.3.

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

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

  * New upstream development snapshot:
    + debian/build-deps.in,
      debian/rules:
      - Build depend on GStreamer and gst-plugins-base >= 1.1.2.
      - Build depend on orc >= 0.4.17.

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

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

  * New upstream bugfix release.

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

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

  * New upstream bugfix release.

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

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

  * New upstream bugfix release.

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

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

  * New upstream bugfix release.

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

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

  * New upstream bugfix release.

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

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

  * New upstream bugfix release.

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

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

  * New upstream bugfix release.

 -- Sebastian Dröge <slomo@debian.org>  Thu, 25 Oct 2012 14:01:36 +0200

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

  * New upstream bugfix release.

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

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

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

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

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

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

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

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

  * New upstream release:
    + debian/rules,
      debian/build-deps.in:
      - Build-depend on GStreamer core/base >= 0.11.93.
      - Build-depend on gtk-doc >= 1.12.

 -- Sebastian Dröge <slomo@debian.org>  Fri, 14 Sep 2012 10:39:56 +0200

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

  * New upstream release:
    + debian/rules,
      debian/build-deps.in:
      - Depend on GStreamer core/base >= 0.11.93.
    + debian/build-deps.in:
      - Depend on libx264-dev >= 2:0.106.
      - Depend on ORC >= 0.4.16.
      - Depend on GLIB >= 2.23.

 -- Sebastian Dröge <slomo@debian.org>  Thu, 09 Aug 2012 11:28:47 +0200

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

  * New upstream release, "Hey You":
    + debian/rules,
      debian/build-deps.in:
      - Depend on GStreamer core/base >= 0.11.92.
    + debian/build-deps.in:
      - Depend on libx264-dev >= 2:0.106.

 -- Sebastian Dröge <slomo@debian.org>  Fri, 08 Jun 2012 13:30:02 +0200

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

  * New upstream release, "I’ll grind his bones to make my bread!":
    + debian/rules,
      debian/build-deps.in:
      - Depend on GStreamer core/base >= 0.11.91.
  * debian/build-deps.in:
    + Update debhelper, autoconf, automake and libtool dependencies.
  * debian/control.in:
    + Update Standards-Version.

 -- Sebastian Dröge <slomo@debian.org>  Mon, 21 May 2012 15:16:03 +0200

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

  [ Olivier Naudan ]
  * Imported Upstream version 0.11.90
  * Imported debian/ from gst-plugins-ugly 0.10.19-1
  * Updated debian/ for GStreamer 1.0
  * debian/*.install: removed the plugins that have disappeared upstream
  * debian/*.install: added a new plugin, xingmux

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

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

gst-plugins-ugly0.10 (0.10.19-1) unstable; urgency=low

  * New upstream stable release, "Stronger":
    + debian/rules,
      debian/build-deps.in:
      - Require GStreamer core/base >= 0.10.36.

 -- Sebastian Dröge <slomo@debian.org>  Tue, 21 Feb 2012 10:51:40 +0100

gst-plugins-ugly0.10 (0.10.18.3-1) experimental; urgency=low

  * New upstream pre-release.

 -- Sebastian Dröge <slomo@debian.org>  Mon, 06 Feb 2012 11:08:55 +0100

gst-plugins-ugly0.10 (0.10.18.2-2) experimental; urgency=low

  * debian/control.in:
    + Build-depend on automake (>= 1.10), autoconf (>= 2.60) and
      libtool (>= 2.0) to make dh-autoreconf actually work.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 14 Dec 2011 09:51:04 +0100

gst-plugins-ugly0.10 (0.10.18.2-1) experimental; urgency=low

  * New upstream pre-release:
    + debian/build-deps.in,
      debian/rules:
      - Build-depend on GStreamer core/base 0.10.35.2.
      - Build-depend on GLib 2.24.
      - Build-depend on ORC 0.4.11.
      - Don't build-depend anymore on libid3tag.
    + debian/patches/99_ltmain_as-needed.patch:
      - Refreshed to apply cleanly again.
  * debian/build-deps.in,
    debian/compat,
    debian/control.in,
    debian/gstreamer-plugins-ugly.install,
    debian/rules:
    + Transition package to multi-arch (Closes: #647488).
      Patch taken from the Ubuntu package.

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

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

  * Add lame to the ugly plugin set as it's available in Debian now (Closes: #636065).

 -- Fabian Greffrath <fabian+debian@greffrath.com>  Fri, 29 Jul 2011 13:33:09 +0200

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

  * Add x264enc to the ugly plugin set as it's available in debian now

 -- Sjoerd Simons <sjoerd@debian.org>  Tue, 26 Jul 2011 20:46:34 +0100

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

  * New upstream release, "Extra Life".

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

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

  * New upstream pre-release.

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

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

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

  [ Sebastian Dröge ]
  * New upstream pre-release.

 -- Sebastian Dröge <slomo@debian.org>  Sun, 17 Apr 2011 11:34:16 +0200

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

  * Upload to unstable.

 -- Sebastian Dröge <slomo@debian.org>  Tue, 22 Mar 2011 15:25:53 +0100

gst-plugins-ugly0.10 (0.10.17-1) experimental; urgency=low

  * New upstream stable release, "Raised by Wolves".

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

gst-plugins-ugly0.10 (0.10.16.4-1) experimental; urgency=low

  * New upstream pre-release.

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

gst-plugins-ugly0.10 (0.10.16.3-1) experimental; urgency=low

  * New upstream pre-release.

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

gst-plugins-ugly0.10 (0.10.16.2-1) experimental; urgency=low

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

  [ Sebastian Dröge ]
  * New upstream pre-release:
    + debian/build-deps.in:
      - Require ORC >= 0.4.6.

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

gst-plugins-ugly0.10 (0.10.16-2) experimental; urgency=low

  * debian/build-deps.in:
    + Add epoch to the orc build dependency to get dependencies on
      the correct version.

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

gst-plugins-ugly0.10 (0.10.16-1) experimental; urgency=low

  * New upstream release, "Because He Knows the Time is Short".

 -- Sebastian Dröge <slomo@debian.org>  Fri, 03 Sep 2010 12:36:41 +0200

gst-plugins-ugly0.10 (0.10.15.6-1) experimental; urgency=low

  * New upstream pre-release.

 -- Sebastian Dröge <slomo@debian.org>  Mon, 30 Aug 2010 16:12:57 +0200

gst-plugins-ugly0.10 (0.10.15.5-1) experimental; urgency=low

  * New upstream pre-release.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 25 Aug 2010 22:12:59 +0200

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

  * New upstream pre-release.

 -- Sebastian Dröge <slomo@debian.org>  Sat, 21 Aug 2010 21:59:43 +0200

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

  * New upstream pre-release.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 11 Aug 2010 21:20:10 +0200

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

  [ Sebastian Dröge ]
  * debian/patches/01_x264-i-weighted-pred.patch:
    + Don't fail the build if x264 is accidentially installed but
      an older version is used (Closes: #584094).
      Patch from upstream bugzilla.

  [ أحمد المحمودي (Ahmed El-Mahmoudy) ]
  * Added patch rmdemux_pass_bitrate_on_caps.patch from upstream to fix
    a problem with playing some media files with Sipro codec.

  [ Sebastian Dröge ]
  * New upstream pre-release:
    + debian/patches/rmdemux_pass_bitrate_on_caps.patch,
      debian/patches/01_x264-i-weighted-pred.patch:
      - Dropped, merged upstream.
    + debian/build-deps.in:
      - Build depend on orc instead of liboil.
      - Build depend on GLib >= 2.20.
  * 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). 

 -- Sebastian Dröge <slomo@debian.org>  Wed, 11 Aug 2010 09:19:36 +0200

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

  * New upstream release, "Englishman in a Baseball Cap":
    + debian/build-deps.in:
      - Build depend on GLib >= 2.18 and liboil >= 0.3.14.

 -- Sebastian Dröge <slomo@debian.org>  Mon, 31 May 2010 05:41:45 +0200

gst-plugins-ugly0.10 (0.10.14.3-1) unstable; urgency=low

  * New upstream pre-release.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 26 May 2010 15:36:52 +0200

gst-plugins-ugly0.10 (0.10.14.2-2) unstable; urgency=low

  * debian/control.in:
    + Let the -dev package depend on the GStreamer core/base documentation
      for cross references.
  * Upload to unstable.

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

gst-plugins-ugly0.10 (0.10.14.2-1) experimental; urgency=low

  * New upstream pre-release.
  * debian/build-deps.in:
    + Build depend on GStreamer core/base documentation to get correct
      cross references.

 -- Sebastian Dröge <slomo@debian.org>  Sat, 15 May 2010 10:00:57 +0200

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

  * New upstream stable release, "Run Rabbit".

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

gst-plugins-ugly0.10 (0.10.13.3-1) experimental; urgency=low

  * New upstream pre-release.

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

gst-plugins-ugly0.10 (0.10.13.2-1) experimental; urgency=low

  * New upstream pre-release:
    + Broken id3mux plugin is removed now (Closes: #383825).
      A better version of it is in gst-plugins-bad >= 0.10.17.2.
    + debian/build-deps.in,
      debian/rules:
      - Build depend on gstreamer and gst-plugins-base >= 0.10.26.
  * debian/control.in:
    + Fix typos in package descriptions (Closes: #557472, #557478).
    + Remove David I. Lehn from Uploaders (Closes: #557282).

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

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

  * debian/extra, debian/gstreamer-amrnb.install, debian/README.Debian:
    + Removed the gstreamer-amrnb extra package which got dropped upstream
      in favor of opencore-amr.

 -- Fabian Greffrath <fabian@debian-unofficial.org>  Thu, 22 Oct 2009 11:34:41 +0200

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

  * New upstream release, "Appointed Point".

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

gst-plugins-ugly0.10 (0.10.12.3-1) experimental; urgency=low

  * New upstream pre-release.

 -- Sebastian Dröge <slomo@debian.org>  Fri, 16 Oct 2009 08:58:54 +0200

gst-plugins-ugly0.10 (0.10.12.2-1) experimental; urgency=low

  [ Fabian Greffrath ]
  * debian/extra, debian/gstreamer-x264.install, debian/README.Debian:
    + Introduced the gstreamer-x264 package which has been moved here from
      gst-plugins-bad0.10.

  [ Sebastian Dröge ]
  * New upstream pre-release:
    + debian/rules,
      debian/build-deps.in:
      - Update GStreamer and gst-plugins-base build dependencies.
  * debian/build-deps.in,
    debian/gstreamer-plugins-ugly.install:
    + Enable the OpenCore AMR WB/NB plugins.
  * debian/control.in:
    + Update Standards-Version to 3.8.3.

 -- Sebastian Dröge <slomo@debian.org>  Mon, 12 Oct 2009 17:12:15 +0200

gst-plugins-ugly0.10 (0.10.12-1) unstable; urgency=low

  * New upstream release, 'Moving Along The Highway'.

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

gst-plugins-ugly0.10 (0.10.11.2-1) experimental; urgency=low

  [ Fabian Greffrath ]
  * debian/extra:
    + Added XB-GStreamer-* fields for the extra packages.
  * debian/rules:
    + Run debian/extra with sh (it has no execute permissions).
    + Append extra packages to debian/control (and do not override it).
  * debian/build-deps, debian/control, debian/rules:
    + Order, wrap and indent Build-Depends; this will improve interdiffs for
      packages that provide the extra plugins.
  * debian/TODO.Debian:
    + Removed, I don't think any of these things are still relevant.
  * debian/control, debian/control.in, debian/extra:
    + Removed duplicate Section fields from gstreamer0.10-plugins-ugly and
      the extra plugins.
    + Changed Section to debug for gstreamer0.10-plugins-ugly-dbg.
    + Added Depends on ${misc:Depends} to gstreamer0.10-plugins-ugly-dbg and
      the extra plugins.
    + Improved duplicate short description for gstreamer0.10-plugins-ugly-dbg.

  [ Sebastian Dröge ]
  * New upstream pre-release:
    + debian/build-deps.in,
      debian/rules:
      - Update build dependencies.
  * debian/control.in:
    + Update Standards-Version to 3.8.1, no additional changes needed.

 -- Sebastian Dröge <slomo@debian.org>  Sat, 06 Jun 2009 17:54:30 +0200

gst-plugins-ugly0.10 (0.10.11-1) unstable; urgency=low

  * debian/build-deps.in:
    + Only depend on libdvdread-dev, libdvdread3-dev only existed in sarge
      (Closes: #499585).
  * New upstream release, 'Their swords and their knives'.

 -- Sebastian Dröge <slomo@debian.org>  Sat, 21 Mar 2009 09:36:41 +0100

gst-plugins-ugly0.10 (0.10.10.2-1) unstable; urgency=low

  * debian/rules:
    + Pass -Wno-error via C(XX)FLAGS.
  * New upstream pre-release:
    + debian/control.in,
      debian/gstreamer-plugins-ugly.install,
      debian/build-deps.in:
      - Build and ship twolame plugin which was moved from gst-plugins-bad.

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

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

  * Upload to unstable.

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

gst-plugins-ugly0.10 (0.10.10-1) experimental; urgency=low

  * New upstream release, 'Under the House'.

 -- Sebastian Dröge <slomo@debian.org>  Thu, 20 Nov 2008 08:34:17 +0100

gst-plugins-ugly0.10 (0.10.9.2-1) experimental; urgency=low

  [ Loic Minier ]
  * Let the -dbg package replace gstreamer0.10-plugins-good-dbg (<< 0.10.9.2);
    thanks Emilio Pozuelo Monfort; see Launchpad #292870.

  [ Sebastian Dröge ]
  * New upstream pre-release:
    + debian/patches/01_asfdemux-flow-returns.patch:
      - Dropped, merged upstream.

 -- Sebastian Dröge <slomo@debian.org>  Sun, 09 Nov 2008 16:19:21 +0100

gst-plugins-ugly0.10 (0.10.9-1) experimental; urgency=low

  * New upstream release, 'Back The Way It Was'.
  * debian/patches/01_asfdemux-flow-returns.patch:
    + Patch from upstream CVS to fix a regression on aggregating flow
      returns of different src pads.

 -- Sebastian Dröge <slomo@debian.org>  Thu, 28 Aug 2008 10:31:02 +0200

gst-plugins-ugly0.10 (0.10.8.2-1) experimental; urgency=low

  * New upstream pre-release:
    + debian/build-deps.in,
      debian/gstreamer-plugins-ugly.install,
      debian/control.in:
      - Add the cdio plugin, it moved from gst-plugins-good because libcdio
        is GPL licensed.
  * debian/control.in:
    + Update Standards-Version to 3.8.0, no additional changes needed.
    + Wrap Uploaders and Depends.
  * debian/control.in,
    debian/rules:
    + Use new automatic codec installation infrastructure.

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

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

  * New upstream stable release, "And yet".

 -- Sebastian Dröge <slomo@debian.org>  Thu, 22 May 2008 09:40:41 +0200

gst-plugins-ugly0.10 (0.10.7.4-1) unstable; urgency=low

  * New upstream pre-release:
    + Fixes some bugs with the Real demuxer (Closes: #479996).

 -- Sebastian Dröge <slomo@debian.org>  Tue, 20 May 2008 09:42:17 +0200

gst-plugins-ugly0.10 (0.10.7.3-1) unstable; urgency=low

  * New upstream pre-release.

 -- Sebastian Dröge <slomo@debian.org>  Thu, 15 May 2008 09:53:02 +0200

gst-plugins-ugly0.10 (0.10.7.2-1) unstable; urgency=low

  * New upstream pre-release:
    + debian/patches/01_xingmux-header-position.patch,
      debian/patches/02_mp3parse-timestamps.patch,
      debian/patches/03_mp3-tag-caching.patch,
      debian/patches/75_build_docs_without_python_xml.patch:
      - Dropped, merged upstream.

 -- Sebastian Dröge <slomo@debian.org>  Sat, 10 May 2008 20:30:46 +0200

gst-plugins-ugly0.10 (0.10.7-3) unstable; urgency=low

  * debian/patches/03_mp3-tag-caching.patch:
    + Don't take the stream lock when caching the events, this is a) not
      necessary and b) will result in deadlocks in some cases.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 12 Mar 2008 17:07:31 +0100

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

  * debian/extra:
    + Update for new lame package names in Debian Multimedia and Debian
      Unofficial. Thanks to Fabian Greffrath (Closes: #466863).
      Also add amrnb package and be more consistent with MPEG in the
      descriptions.
  * debian/patches/75_build_docs_without_python_xml.patch,
    debian/build-deps.in:
    + Stop using pyxml for building the docs (Closes: #468626).
  * debian/patches/01_xingmux-header-position.patch:
    + Write the Xing header at the correct position for stereo files.
      Patch from upstream CVS.
  * debian/patches/02_mp3parse-timestamps.patch:
    + Try harder to get correct timestamps with mp3parse.
      Patch from upstream CVS.
  * debian/patches/03_mp3-tag-caching.patch:
    + Cache all events except EOS, this fixes missing tags when reenconding
      MP3s. Patch from upstream CVS.

 -- Sebastian Dröge <slomo@debian.org>  Tue, 11 Mar 2008 05:20:22 +0100

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

  * New upstream release, "I Cheated Time".

 -- Sebastian Dröge <slomo@debian.org>  Thu, 21 Feb 2008 10:49:32 +0100

gst-plugins-ugly0.10 (0.10.6.4-1) experimental; urgency=low

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

 -- Sebastian Dröge <slomo@debian.org>  Tue, 19 Feb 2008 06:55:26 +0100

gst-plugins-ugly0.10 (0.10.6.3-1) experimental; urgency=low

  * New upstream pre-release.
  * debian/build-deps.in:
    + Build depend on gstreamer0.10-plugins-base for the unit tests.

 -- Sebastian Dröge <slomo@debian.org>  Thu, 14 Feb 2008 13:17:48 +0100

gst-plugins-ugly0.10 (0.10.6.2-1) experimental; urgency=low

  [ Sebastian Dröge ]
  * debian/rules:
    + Fix setting of the GST_REGISTRY environment variable.

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

  [ Sebastian Dröge ]
  * New upstream pre-release:
    + Fixes FTBFS if built twice in a row (Closes: #424383).
    + debian/rules,
      debian/build-deps.in:
      - Update liboil and gstreamer build dependencies.
    + debian/patches/00-mpegaudioparse-cvs20071117.patch:
      - Dropped, merged upstream.
    + debian/control.in:
      - Add Conflicts for gst-plugins-bad as the xingmux element moved
        to the mpegaudioparse plugin and having the one from bad and ugly
        installed at the same time will give errors.
      - Update Standards-Version to 3.7.3, no additional changes needed.
  * debian/rules:
    + Run unit test suite but don't fail the build on failures.

 -- Sebastian Dröge <slomo@debian.org>  Sat, 09 Feb 2008 13:48:43 +0100

gst-plugins-ugly0.10 (0.10.6-3) unstable; urgency=low

  [ Sebastian Dröge ]
  * debian/rules:
      + Set GST_REGISTRY before the dh_gstscancodecs call to save the registry
        somewhere on buildds without writable home and speed things up a
        bit.
  * debian/build-deps.in:
      + Remove check from build dependencies. This is only an indirect build
        dependency that is already satisfied by libgstreamer0.10-dev. configure
        only checks for libgstcheck, not check.

  [ Sjoerd Simons ]
  * Added debian/patches/00-mpegaudioparse-cvs20071117.patch
    - Updates mpegaudioparse to the CVS version of 17-11-2007
    - No longer sends segments before the caps are fixed which seems to confuse
      autopluggers and causes MP3 playback to fail with the latest gstreamer

 -- Sjoerd Simons <sjoerd@debian.org>  Sat, 17 Nov 2007 20:58:36 +0100

gst-plugins-ugly0.10 (0.10.6-2) unstable; urgency=low

  * debian/build-deps.in,
    debian/rules:
    + Call dh_gstinstallcodecs to generate the codecs database.
  * debian/gstreamer-plugins-ugly.install:
    + Ship translations with the plugin package.

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

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

  [ Sebastian Dröge ]
  * New upstream release, "The Sacrifice":
    + debian/rules,
      debian/build-deps.in:
      - Require gstreamer and gst-plugins-base (>= 0.10.13).
    + debian/patches/30_gstasfdemux_length-guards.patch:
      - Dropped, merged upstream.
  * debian/control.in:
    + Use ${binary:Version} instead of ${Source-Version} to make lintian happy.

  [ Loic Minier ]
  * Cleanup sed foo and add a rule to strip empty build-dep substistutions.
  * Add a grep to the Perl build-deps generation to strip empty lines.

 -- Sebastian Dröge <slomo@debian.org>  Tue, 19 Jun 2007 19:30:44 +0200

gst-plugins-ugly0.10 (0.10.5-2) unstable; urgency=low

  * Upload to unstable
  * Merge experimental branch:
    + New upstream release 0.10.5, "She Said":
      - Fixes playing of avi files over the network (Closes: #370364)
      - debian/rules:
        . Require gstreamer >= 0.10.6
      - debian/patches/01_ac3-handling-fix.patch,
        debian/patches/02_mpeg2dec-ppc.patch:
        . Dropped, merged upstream 
  * debian/control.in:
    + Update to use my debian.org address

 -- Sebastian Dröge <slomo@debian.org>  Wed, 11 Apr 2007 08:57:18 +0200

gst-plugins-ugly0.10 (0.10.4-5) unstable; urgency=medium

  * New patch, 30_gstasfdemux_length-guards, adds length guarding checks and
    fixes a memory leak; backported from GNOME #336370.

 -- Loic Minier <lool@dooz.org>  Mon, 26 Feb 2007 17:33:24 +0100

gst-plugins-ugly0.10 (0.10.4-4) unstable; urgency=low

  * Merge 0.10.4-3 from experimental.
  * Upload to unstable.

 -- Loic Minier <lool@dooz.org>  Mon, 13 Nov 2006 13:50:34 +0100

gst-plugins-ugly0.10 (0.10.4-3) experimental; urgency=low

  * Re-add -dbg package.
  * Target at experimental.

 -- Loic Minier <lool@dooz.org>  Tue, 17 Oct 2006 18:34:55 +0200

gst-plugins-ugly0.10 (0.10.4-2sid2) unstable; urgency=low

  * debian/patches/02_mpeg2dec-ppc.patch:
    + Updated. Fix warnings when there are GstBaseTransform elements
      downstream. Also take a timestamp fix from upstream CVS.

 -- Sebastian Dröge <slomo@ubuntu.com>  Mon,  6 Nov 2006 18:17:14 +0100

gst-plugins-ugly0.10 (0.10.4-2sid1) unstable; urgency=low

  [ Sebastian Dröge ]
  * debian/patches/patches/02_mpeg2dec-ppc.patch:
    + 16byte-align the mpeg2dec outbuf buffer to prevent segfaults on PPC with
      altivec optimizations (Closes: #365718)
      http://bugzilla.gnome.org/show_bug.cgi?id=327350

  [ Loic Minier ]
  * Set version to 0.10.4-2sid1 as -3 was uploaded towards experimental.

 -- Loic Minier <lool@dooz.org>  Thu,  2 Nov 2006 18:35:11 +0100

gst-plugins-ugly0.10 (0.10.4-2) unstable; urgency=low

  [ Sebastian Dröge ]
  * debian/patches/01_ac3-handling-fix.patch:
    + Fix volume handling when downmixing
  * debian/rules,
    debian/control.in:
    + Add a -dbg package

  [ Loic Minier ]
  * Drop -dbg package for now, this version is for etch.

 -- Loic Minier <lool@dooz.org>  Tue, 17 Oct 2006 18:31:37 +0200

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

  [ Sebastian Dröge ]
  * New upstream release, "Metal Molly"
  * debian/compat,
    debian/build-deps.in:
    + Update to debhelper compat level 5

  [ Loic Minier ]
  * Don't build the doc on arm and m68k.  It's painfully long, and -- at least
    on arm -- it sometimes segfaults; also see #383147.

 -- Loic Minier <lool@dooz.org>  Wed, 23 Aug 2006 21:43:58 +0200

gst-plugins-ugly0.10 (0.10.3-2) unstable; urgency=low

  * Bump up Standards-Version to 3.7.2.
    [debian/control, debian/control.in]
  * Build-dep on libdvdread-dev (>= 0.9.0) | libdvdread3-dev (>= 0.9.0) since
    sbuild fails building despite the added Provides, thanks Julien Danjou.
    (Closes: #366169)

 -- Loic Minier <lool@dooz.org>  Wed, 14 Jun 2006 22:24:06 +0200

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

  [ Sebastian Dröge ]
  * New upstream release, "Late Plane".
  * Added myself to Uploaders

  [ Loic Minier ]
  * Fixed release name above. :)

 -- Loic Minier <lool@dooz.org>  Mon,  3 Apr 2006 17:09:57 +0200

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

  * New upstream release, "Season to Taste".

 -- Loic Minier <lool@dooz.org>  Tue, 21 Feb 2006 17:02:44 +0100

gst-plugins-ugly0.10 (0.10.1.3-1) unstable; urgency=low

  * New upstream pre-release.

 -- Loic Minier <lool@dooz.org>  Mon, 20 Feb 2006 20:09:41 +0100

gst-plugins-ugly0.10 (0.10.1.2-1) unstable; urgency=low

  * New upstream pre-release.
    - Bump up libgstreamer-plugins-base0.10-dev build-dep to 0.10.3.
      [debian/build-deps, debian/build-deps.in, debian/control]
    - Add asfdemux plugin.
      [debian/gstreamer-plugins-ugly.install]
    - Add dvdread plugin and build-dep on libdvdread3-dev >= 0.9.0.
      [debian/build-deps, debian/build-deps.in, debian/control,
       debian/gstreamer-plugins-ugly.install]

 -- Loic Minier <lool@dooz.org>  Sat, 18 Feb 2006 09:02:11 +0100

gst-plugins-ugly0.10 (0.10.1-1) unstable; urgency=low

  * New upstream release, "Peng".
    - Bump libgstreamer-plugins-base0.10-dev to >= 0.10.1.
      [debian/build-deps, debian/build-deps.in, debian/control]
    - Bump libgstreamer0.10-dev to >= 0.10.1.
      [debian/control, debian/rules]
  * Drop useless gst_plugins_base_lib, gst_plugins_base_lib_dev,
    gst_plugins_base_lib_dev_dep, and gst_plugins_ugly_version declarations.
    [debian/rules]
  * Use upstream descriptions in packages descriptions.
    [debian/control, debian/control.in]

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

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

  [ Sebastian Dröge ]
  * New package;
    + Re-added the debian/extra hack from the gst-plugins0.8 package
    + Adjusted package names, install files, etc

  [ Loic Minier ]
  * Upload to unstable.

 -- Loic Minier <lool@dooz.org>  Sun,  1 Jan 2006 22:50:13 +0100

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

  [ Sebastien Bacher ]
  * New package:
    - clean patches
      [debian/patches/50_cdparanoia-fix-eos-detection-of-last-title.patch]
    - updated Build-Depends [debian/build-deps.in]
    - updated documentation [debian/README.Debian, debian/TODO.Debian]
    - updated packages list [debian/control.in, debian/gstreamer-alsa.install,
      debian/gstreamer-gnomevfs.install, debian/gstreamer-misc.install,
      debian/gstreamer-plugins-base-apps.instal,
      debian/gstreamer-plugins-base-apps.manpages,
      debian/gstreamer-plugins-base-doc.install,
      debian/gstreamer-x.install, debian/libgstreamer-plugins-base-dev.install,
      debian/libgstreamer-plugins-base.install, debian/gstreamer-aa.install,
      debian/gstreamer-auto.install, debian/gstreamer-caca.install,
      debian/gstreamer-esd.install, debian/gstreamer-misc-good.install,
      debian/gstreamer-oss.install, debian/gstreamer-plugins-good-doc.install,
      debian/rules]
    - updated upstream location [debian/watch]
    - don't use type-handling it's not useful
      [debian/build-deps.in, debian/control.in, debian/rules]

  [ Loic Minier ]
  * Merge aa, auto, caca, and oss packages and plugins in misc and let it
    provide audio and videosinks;  use a couple of @GST_ABI@s where
    appropriate.
    [debian/control, debian/control.in,
    debian/gstreamer-aa.install, debian/gstreamer-caca.install,
    debian/gstreamer-misc-good.install, debian/gstreamer-oss.install,
    debian/rules]
  * Rename for good misc-good in good.
    [debian/control debian/control.in
     debian/gstreamer-misc-good.install debian/rules]
  * Downgrade cdbs build-dep for Debian.
    [debian/build-deps, debian/build-deps.in, debian/control]
  * Rename gstreamer0.10-good in gstreamer0.10-plugins-good.
    [debian/control, debian/control.in, debian/gstreamer-good.install,
    debian/gstreamer-plugins-good.install, debian/rules]
  * Add a build-dep on check.
    [debian/build-deps, debian/build-deps.in, debian/control]
  * Remove python-twisted build-dep.
    [debian/build-deps, debian/build-deps.in, debian/control]

 -- Loic Minier <lool@dooz.org>  Wed, 21 Dec 2005 17:37:46 +0100

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  * Urgency medium because of RC.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  * New upstream

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

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

  * New upstream

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

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

  * New upstream

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

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

  * New upstream

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

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

  * New upstream
    * Versioning package as 0.7

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  * New upstream
  * Add dv1394src to gstreamer-dv

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  * New upstream

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

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

  * New upstream

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  * Rebuild for new avifile

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

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

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

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

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

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

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

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

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

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

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

  * Rebuild for glib/gtk 1.3.15

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

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

  * Build against liblinc1 and newer gnomevfs

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

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

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

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

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

  * Rebuild for glib/gtk 1.3.13

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

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

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

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

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

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

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

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

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

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

gstreamer (0.3.0-3) unstable; urgency=low

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

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

gstreamer (0.3.0-2) unstable; urgency=low

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

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

gstreamer (0.3.0-1) unstable; urgency=low

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

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

gstreamer (0.2.1-4) unstable; urgency=low

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

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

gstreamer (0.2.1-3) unstable; urgency=low

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

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

gstreamer (0.2.1-2) unstable; urgency=low

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

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

gstreamer (0.2.1-1) unstable; urgency=low

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

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

gstreamer (0.2.0-6) unstable; urgency=low

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

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

gstreamer (0.2.0-5) unstable; urgency=low

  * Added element package dependencies to libgstmediaplay0

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

gstreamer (0.2.0-4) unstable; urgency=low

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

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

gstreamer (0.2.0-3) unstable; urgency=low

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

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

gstreamer (0.2.0-2) unstable; urgency=low

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

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

gstreamer (0.2.0-1) unstable; urgency=low

  * Added gstreamer-compprep manpage
  * Upgrade to 0.2.0

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

gstreamer (0.2.0-0.3) unstable; urgency=low

  * GStreamer 0.2.0-pre3

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

gstreamer (0.2.0-0.2) unstable; urgency=low

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

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

gstreamer (0.2.0-0.1) unstable; urgency=low

  * GStreamer 0.2.0-pre1

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

gstreamer (0.1.1.20010504-1) unstable; urgency=low

  * Latest CVS code

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

gstreamer (0.1.1.20010430-2) unstable; urgency=low

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

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

gstreamer (0.1.1.20010430-1) unstable; urgency=low

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

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

gstreamer (0.1.1.20010320-1) unstable; urgency=low

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

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

gstreamer (0.1.1.20010315-1) unstable; urgency=low

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

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

gstreamer (0.1.1-1) unstable; urgency=low

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

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

gstreamer (0.1.0-2) unstable; urgency=low

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

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

gstreamer (0.1.0-1) unstable; urgency=low

  * Initial Release.

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