gst-plugins-good1.0 (1.14.4-1+mtk+1) mendel-eagle; urgency=medium

  * Update to Eagle release
  * v4l2 feature fix

 -- Coral Team <coral-support@google.com>  Thu, 10 Sep 2020 10:46:41 -0700

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

  * Update to debian 1.14.4-1
  * Update to Day release
  * Remove doc from package
  * Remove qt5 from package

 -- Coral Team <coral-support@google.com>  Wed, 29 Jan 2020 20:01:36 -0800

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

  * Add Mediatek patches

 -- Coral <coral-support@google.com>  Wed, 07 Aug 2019 11:28:56 -0700

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

  * New upstream bugfix release

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

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

  * New upstream bugfix release

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

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

  * New upstream bugfix release

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

gst-plugins-good1.0 (1.10.1-2) unstable; urgency=high

  * debian/patches/0001-flxdec-add-some-write-bounds-checking.patch,
    debian/patches/0002-flxdec-fix-some-warnings-comparing-unsigned-0.patch,
    debian/patches/0003-flxdec-Don-t-unref-parent-in-the-chain-function.patch,
    debian/patches/0004-flxdec-rewrite-logic-based-on-GstByteReader-Writer.patch:
    + Fix out of bound memory writes/reads (CVE-2016-9634, CVE-2016-9635, CVE-2016-9636).

 -- Sebastian Dröge <slomo@debian.org>  Thu, 24 Nov 2016 12:26:58 +0200

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

  * New upstream bugfix release

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

gst-plugins-good1.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:49:48 +0200

gst-plugins-good1.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:21:28 +0300

gst-plugins-good1.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:07:12 +0300

gst-plugins-good1.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.

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

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

  * New upstream bugfix release.

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

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

  * New upstream bugfix release.

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

gst-plugins-good1.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:23:30 +0200

gst-plugins-good1.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:05:31 +0200

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

  * New upstream release candidate:
    + debian/build-deps.in,
      debian/rules:
      - Build-depend on GStreamer >= 1.7.90.
    + debian/control.in:
      - Add Breaks for gst-plugins-bad << 1.7.90 because of the moved
        Opus RTP payloader/depayloader.

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

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

  * New upstream unstable release:
    + debian/build-deps.in,
      debian/rules:
      - Build-depend on GStreamer >= 1.7.2.
    + debian/control.in:
      - Add Breaks for gst-plugins-bad << 1.7.2 because of the moved
        h265/HEVC RTP payloader/depayloader.

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

gst-plugins-good1.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.
      - Build-depend on Soup >= 2.48.

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

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

  * New upstream bugfix release.

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

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

  * New upstream bugfix release.

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

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

  * New upstream stable release.

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

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

  * New upstream release candidate.

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

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

  * New upstream release candidate.

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

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

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

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

 -- Iain Lane <laney@debian.org>  Mon, 15 Jun 2015 10:56:07 +0100

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

  * New unstable upstream release.

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

gst-plugins-good1.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:24:34 +0300

gst-plugins-good1.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:14:23 +0100

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

  * New upstream bugfix release.

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

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

  * Upload to unstable.

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

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

  * New upstream bugfix release.

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

gst-plugins-good1.0 (1.4.3-2) unstable; urgency=medium

  * debian/patches/rtpmux-Don-t-set-PROXY_CAPS-flag-on-the-src-pad.patch
    + Added. Fix caps negotation in the rtpmux element, fixes Empathy voice
      calls (Closes: #760964) (From upstream git)

 -- Sjoerd Simons <sjoerd@debian.org>  Fri, 17 Oct 2014 22:35:46 +0200

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

  * New upstream bugfix release.

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

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

  * New upstream bugfix release.

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

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

  * New upstream bugfix release.

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

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

  * New upstream stable release.

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

gst-plugins-good1.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:30:26 +0200

gst-plugins-good1.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 11:44:49 +0200

gst-plugins-good1.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.2.
  * debian/rules:
    + Run autopoint during autoreconf too.

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

gst-plugins-good1.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:38:54 +0200

gst-plugins-good1.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.
      - Build-depend on libsoup >= 2.40.

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

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

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

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

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

  [ Iain Lane ]
  * Drop ltmain-as-needed patch and do the same with dh_autoreconf
    --as-needed.
  * Enable parallel builds 

  [ Sebastian Dröge ]
  * New upstream bugfix release:
    + debian/build-deps.in:
      - Build-depend on gst-plugins-base >= 1.2.3.

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

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

  * New upstream bugfix release.
  * debian/build-deps.in:
    + Build-depend on libvpx-dev >= 1.3.0 for VP9 support.

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

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

  [ Fabian Greffrath ]
  * Team upload.
  * Add Vcs-* and Homepage fields to debian/control[,.in}.
  * Turn versioned Conflicts into Breaks to simplify lockstep upgrades.

  [ Sebastian Dröge ]
  * New upstream bugfix release:
    + debian/build-deps.in:
      - Build-depend on gst-plugins-base >= 1.2.1.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  * New upstream development snapshot:
    + debian/rules,
      debian/build-deps.in:
      - Build depend on GStreamer and gst-plugins-base >= 1.1.2.
      - Build depend on orc >= 0.4.17.
      - Build depend on pulseaudio >= 2.0.
      - Build depend on libsoup2.4-dev instead of libsoup-gnome2.4-dev.
      - Build depend on libjack-jackd2-dev instead of libjack-dev.
    + debian/gstreamer-plugins-good.install,
      debian/control.in:
      - Add dtmf plugin which moved from gst-plugins-bad.
      - Add newly ported cairo plugin.
  * debian/patches/0001-souphttpsrc-ignore-errors-from-HEAD-request.patch:
    + Patch from upstream GIT to ignore errors that happened as a result
      of the HEAD request. Only error out later if the GET request fails.

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

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

  * New upstream bugfix release.

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

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

  * New upstream bugfix release.

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

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

  * New upstream bugfix release.

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

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

  * New upstream bugfix release.

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

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

  * New upstream bugfix release.

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

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

  * New upstream bugfix release.

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

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

  * New upstream bugfix release.

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

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

  * New upstream bugfix release.

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

gst-plugins-good1.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:19:31 +0200

gst-plugins-good1.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 09:38:33 +0200

gst-plugins-good1.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.94.
      - Build depend on gtk-doc >= 1.12.
    + debian/gstreamer-plugins-good.install:
      - Add gdkpixbuf plugin.
    + debian/patches/0001-configure-Fix-GTK-required-version-variable-name.patch,
      debian/patches/0002-configure-And-fix-the-GTK-check-to-use-the-correct-p.patch:
      - Dropped, merged upstream.

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

gst-plugins-good1.0 (0.11.93-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 GLib >= 2.32.
      - Build depend on ORC >= 0.4.16.
      - Build depend on libsoup >= 2.26.1.
      - Build depend on GTK3 instead of GTK2.
    + debian/gstreamer-plugins-good.install:
      - Add the imagefreeze, interleave, deinterlace, monoscope,
        smpte and wavpack plugins.
    + debian/patches/0001-configure-Fix-GTK-required-version-variable-name.patch:
      - Fix GTK configure check.

 -- Sebastian Dröge <slomo@debian.org>  Thu, 09 Aug 2012 10:23:42 +0200

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

  * New upstream release, "Money":
    + debian/rules,
      debian/build-deps.in:
      - Build depend on GStreamer core/base >= 0.11.92.
    + debian/gstreamer-plugins-good.install,
      debian/build-deps.in:
      - Remove annodex plugin.

 -- Sebastian Dröge <slomo@debian.org>  Fri, 08 Jun 2012 12:25:20 +0200

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

  * Build-depend on GLib > 2.31.14.
  * New upstream release, "I smell the blood of an Englishman":
    + debian/rules,
      debian/build-deps.in:
      - Build depend on GStreamer core/base >= 0.11.91.
    + debian/gstreamer-plugins-good.install:
      - Ship some plugins again that were now ported.
  * debian/build-deps.in:
    + Update automake, autoconf and libtool build dependencies.
  * debian/control.in,
    debian/build-deps.in:
    + Update debhelper dependency version and Standards-Version.

 -- Sebastian Dröge <slomo@debian.org>  Mon, 21 May 2012 12:56:30 +0200

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

  [ Olivier Naudan ]
  * Imported Upstream version 0.11.90
  * Imported debian/ from gst-plugins-good 0.10.30-1
  * Updated debian/ for 0.11.90
  * Removed -gconf package
  * gstreamer-plugins-good.intall: Removed the plugins that are not ported or o

  [ Sebastian Dröge ]
  * Build-depend on libpng-dev instead of libpng12-dev.
  * Update copyright.
  * Remove GConf build dependency.

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

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

  * New upstream release, "Faster":
    + debian/rules,
      debian/build-deps.in:
      - (Build-) depend on GStreamer core/base >= 0.10.36.

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

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

  * New upstream pre-release.

 -- Sebastian Dröge <slomo@debian.org>  Mon, 06 Feb 2012 09:59:53 +0100

gst-plugins-good0.10 (0.10.30.2-3) 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 12:58:12 +0100

gst-plugins-good0.10 (0.10.30.2-2) experimental; urgency=low

  * debian/control.in:
    + Depend on gstreamer0.10-pulseaudio | gstreamer0.10-audiosink
      instead of only depending on the virtual package.

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

gst-plugins-good0.10 (0.10.30.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 PulseAudio 1.0.
    + debian/patches/04_rtpgst722pay-compensate-for-clockrate.patch:
      - Dropped, merged upstream.
    + debian/patches/03_pulse-rank.patch:
      - Dropped, merged upstream.
    + debian/patches/99_ltmain_as-needed.patch:
      - Refreshed to apply cleanly again.
  * debian/control.in,
    debian/build-deps.in:
    + ACK NMU 0.10.30.2-2.1 and 0.10.30.2-2.2 (Closes: #646325, #633438).
    + Correctly change control file from the last two NMUs.
  * debian/build-deps.in,
    debian/compat,
    debian/control.in,
    debian/gstreamer-gconf.install,
    debian/gstreamer-plugins-good.install,
    debian/gstreamer-pulseaudio.install,
    debian/rules:
    + Transition package to multi arch (Closes: #647486).
      Patch taken from the Ubuntu package.

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

gst-plugins-good0.10 (0.10.30-2.2) unstable; urgency=low

  * Non-maintainer upload.
  * Transition to libjpeg8 by build-depending against libjpeg-dev
    (instead of libjpeg62-dev), closes: #633438

 -- Philipp Kaluza <debian@ghostroute.eu>  Sat, 03 Dec 2011 13:34:20 +0100

gst-plugins-good0.10 (0.10.30-2.1) unstable; urgency=low

  * Non-maintainer upload.
  * Add Replaces/Breaks to gstreamer0.10-gconf for old 
    gstreamer0.10-plugins-good (Closes: #646325)

 -- Philipp Kaluza <debian@ghostroute.eu>  Sat, 03 Dec 2011 10:34:02 +0000

gst-plugins-good0.10 (0.10.30-2) unstable; urgency=low

  [ Sebastian Dröge ]
  * debian/control.in:
    + Let gstreamer0.10-plugins-good depend on gstreamer0.10-gconf for
      wheezy to guarantee correct upgrades to wheezy (Closes: #625567).

  [ Sjoerd Simons ]
  * debian/patches/04_rtpgst722pay-compensate-for-clockrate.patch:
    + Correct clockrate vs. samplerate difference for G722. Fixes people
      sounding like chipmunks on voip calls with G722 (From upstream git)

 -- Sjoerd Simons <sjoerd@debian.org>  Wed, 09 Nov 2011 14:20:22 +0000

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

  * New upstream release, "Adagio":
    + debian/patches/01_path-max.patch:
      - Dropped, merged upstream.

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

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

  * debian/patches/01_path-max.patch:
    + Define PATH_MAX if it isn't defined, e.g. on GNU Hurd. Thanks
      to Pino Toscano for the patch (Closes: #626698).
  * debian/rules,
    debian/gstreamer-plugins-good.install:
    + Don't build the oss4 plugin on GNU Hurd, it does not compile
      because of the way how ioctl() works there. Thanks to Pino
      Toscano for the patch (Closes: #626698).

 -- Sebastian Dröge <slomo@debian.org>  Mon, 16 May 2011 09:10:14 +0200

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

  * New upstream release, "Soft Cheese Enthusiast":
    + debian/gstreamer-plugins-good.install:
      - The quicktime plugin was renamed to isomp4 because
        of trademark concerns.
    + debian/rules,
      debian/build-deps.in:
      - Build-depend on GStreamer core/base 0.10.33.

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

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

  * New upstream pre-release:
    + debian/gstreamer-plugins-good.install:
      - The qtdemux plugin was renamed to quicktime because
        it contains a muxer too now.

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

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

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

  [ Loïc Minier ]
  * Use linux-any in build-deps instead of type-handling.
  * Rework sed calls to avoid sed | sed.

  [ Sebastian Dröge ]
  * debian/control.in,
    debian/build-deps.in,
    debian/gstreamer-esd.install,
    debian/rules:
    + Drop ESD plugin, nothing is using it anymore, it is
      unmaintained upstream and pulseaudio is a better 
      replacement for it.
  * New upstream pre-release:
    + debian/build-deps.in,
      debian/rules:
      - Build-depend on GStreamer core/base >= 0.10.32.2.
    + debian/build-deps.in:
      - Build-depend on libcairo2-dev >= 1.10.0.
    + debian/gstreamer-plugins-good.install,
      debian/control.in:
      - Add audioparsers plugin, which was moved from -bad
        and Conflict with -bad << 0.10.21.2.

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

gst-plugins-good0.10 (0.10.28-3) unstable; urgency=low

  * debian/control.in,
    debian/rules,
    debian/gstreamer-plugins-good.install,
    debian/gstreamer-gconf.install:
    + Split the GConf plugin into it's own package. GStreamer is used
      as the default phonon backend nowadays and there's no reason
      why KDE should depend on half of GNOME (Closes: #595651).

 -- Sebastian Dröge <slomo@debian.org>  Fri, 01 Apr 2011 10:13:13 +0200

gst-plugins-good0.10 (0.10.28-2) unstable; urgency=low

  * Upload to unstable.

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

gst-plugins-good0.10 (0.10.28-1) experimental; urgency=low

  * New upstream bugfix release, "Inconvenienced by the Solar System":
    + Fixes build with kernels that have v4l2 support but not v4l support.

 -- Sebastian Dröge <slomo@debian.org>  Sun, 13 Mar 2011 13:03:07 +0100

gst-plugins-good0.10 (0.10.27-1) experimental; urgency=low

  * New upstream stable release, "Some Kind of Temporal Blend":
    + debian/build-deps,
      debian/rules:
      - Require GStreamer, gst-plugins-base >= 0.10.32.

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

gst-plugins-good0.10 (0.10.26.4-1) experimental; urgency=low

  * New upstream pre-release:
    + debian/build-deps,
      debian/rules:
      - Require GStreamer, gst-plugins-base >= 0.10.31.4.

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

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

  * New upstream pre-release:
    + debian/build-deps,
      debian/rules:
      - Require GStreamer, gst-plugins-base >= 0.10.31.3.

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

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

  [ Sebastian Dröge ]
  * New upstream pre-release:
    + debian/control.in:
      - Conflict/Replace gstreamer0.10-plugins-bad (<< 0.10.20.2) because
        of the moved JACK plugin.
    + debian/build-deps.in,
      debian/gstreamer-plugins-good.install:
      - Add the JACK plugin which was moved from gst-plugins-bad.
    + debian/build-deps,
      debian/rules:
      - Require GStreamer, gst-plugins-base >= 0.10.31.2.
      - Require GLib >= 2.22.

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

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

gst-plugins-good0.10 (0.10.26-1) experimental; urgency=low

  * New upstream release, "Escapades".

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

gst-plugins-good0.10 (0.10.25.5-1) experimental; urgency=low

  * New upstream pre-release.

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

gst-plugins-good0.10 (0.10.25.4-1) experimental; urgency=low

  * New upstream pre-release.

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

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

  * New upstream pre-release.

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

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

  * New upstream pre-release:
    + debian/patches/01_alphacolor-passthrough.patch,
      debian/patches/02_qtdemux-eos-handling.patch,
      debian/patches/04_qtdemux-eos-handling.patch:
      - Dropped, merged upstream.
    + debian/rules,
      debian/build-deps.in:
      - Require GStreamer core/plugins-base >= 0.10.30.2.
      - Require ORC >= 0.4.11.

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

gst-plugins-good0.10 (0.10.25-5) experimental; urgency=low

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

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

gst-plugins-good0.10 (0.10.25-4) experimental; urgency=low

  * debian/patches/02_qtdemux-eos-handling.patch:
    + Another patch from upstream GIT to fix EOS handling in the
      QT/MP4 demuxer even more.

 -- Sebastian Dröge <slomo@debian.org>  Thu, 16 Sep 2010 11:18:01 +0200

gst-plugins-good0.10 (0.10.25-3) experimental; urgency=low

  * debian/patches/02_qtdemux-eos-handling.patch:
    + Patch from upstream GIT to fix EOS handling in the QT/MP4 demuxer.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 15 Sep 2010 08:21:56 +0200

gst-plugins-good0.10 (0.10.25-2) experimental; urgency=low

  * debian/patches/01_alphacolor-passthrough.patch:
    + Simple patch from upstream GIT to fix passthrough mode
      of the alphacolor element.

 -- Sebastian Dröge <slomo@debian.org>  Fri, 10 Sep 2010 11:40:40 +0200

gst-plugins-good0.10 (0.10.25-1) experimental; urgency=low

  * New upstream release, "Woe to You Oh Earth and Sea".

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

gst-plugins-good0.10 (0.10.24.5-1) experimental; urgency=low

  * New upstream pre-release.

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

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

  * New upstream pre-release.

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

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

  * New upstream pre-release.

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

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

  * New upstream pre-release.

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

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

  * New upstream stable release, "Taking Liberties":
    + debian/build-deps.in,
      debian/rules:
      - Build depend on GStreamer 0.10.30.

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

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

  * New upstream pre-release.

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

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

  * New upstream pre-release:
    + debian/build-deps.in,
      debian/rules:
      - Build depend on GStreamer 0.10.29.3.
    + debian/patches/01_jpeg-libgstbase-linking.patch:
      - Dropped, merged upstream.

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

gst-plugins-good0.10 (0.10.23.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).
    + debian/build-deps.in,
      debian/rules:
      - Build depend on GLib 2.20 and GStreamer 0.10.29.2.
      - Build depend on libraw1394 2.0.0.
      - Build depend on ORC instead of liboil.
    + debian/patches/02_pulsesink-reuse.patch,
      debian/patches/04_theora_delivery_method.patch,
      debian/patches/05_rtph264pay_short_startcodes.patch:
      - Dropped, merged upstream.
    + debian/patches/01_jpeg-libgstbase-linking.patch:
      - Link the jpeg plugin with libgstbase to fix FTBFS.

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

gst-plugins-good0.10 (0.10.23-4) unstable; urgency=low

  * debian/patches/05_rtph264pay_short_startcodes.patch:
    + Patch from upstream GIT to let rtph264 cope with the shorter
      startcodes that are now used by by x264enc. This fixes interoperability
      with Google Video and Nokia N900 among others.

 -- Sjoerd Simons <sjoerd@debian.org>  Fri, 04 Jun 2010 12:51:01 +0100

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

  * debian/patches/02_pulsesink-reuse.patch:
    + Patch from upstream GIT to fix reuse of pulsesink.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 02 Jun 2010 10:54:42 +0200

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

  * debian/patches/04_theora_delivery_method.patch
    + Added. Let the theora payloader advertise delivery-method in its caps.
      Needed for backwards compatibility with older gstreamer/farsight
      versions. (From Gnome bugzilla #618940)

 -- Sjoerd Simons <sjoerd@debian.org>  Mon, 31 May 2010 22:31:06 +0100

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

  * New upstream release, "Stylish Kids in Riot".

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

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

  * New upstream pre-release:
    + debian/patches/*:
      - Drop all VP8/WebM patches and other patches that
        are upstream now.

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

gst-plugins-good0.10 (0.10.22.2-3) unstable; urgency=low

  * Upload to unstable.

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

gst-plugins-good0.10 (0.10.22.2-2) experimental; urgency=low

  * debian/patches/00*:
    + Add support for VP8 in the AVI, Matroska and QT/MP4 plugins
      and fix some Matroska issues.
  * debian/patches/04-pulse-0001-pulse-Don-t-lock-the-mainloop-in-NULL.patch:
    + Don't try to use a NULL pulse mainloop.

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

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

  * New upstream pre-release:
    + debian/gstreamer-plugins-good.install,
      debian/control.in:
      - Ship the imagefreeze and oss4audio plugins here, they were
        moved from gstreamer0.10-plugins-bad.
      - Add conflicts for gstreamer0.10-plugins-bad because of the
        moved capssetter element.
  * debian/patches/01_efence-configure-check.patch:
    + Fix configure check for efence.

 -- Sebastian Dröge <slomo@debian.org>  Sat, 15 May 2010 09:55:08 +0200

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

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

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

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

  * New upstream pre-release.

 -- Sebastian Dröge <slomo@debian.org>  Mon, 26 Apr 2010 08:01:09 +0200

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

  * New upstream pre-release:
    + debian/build-deps.in,
      debian/rules:
      - Build depend on GStreamer core/base >= 0.10.28.2.
  * debian/build-deps.in,
    debian/control.in:
    + (Build-) depend on GStreamer core/base documentation to get
      documentation cross references right.

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

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

  * New upstream stable release, "Lemons".

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

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

  * New upstream stable release, "Closer to the Edit":
    + debian/rules,
      debian/build-deps.in:
      - Build depend on gstreamer and gst-plugins-base >= 0.10.27.

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

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

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

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

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

  * New upstream pre-release:
    + debian/gstreamer-plugins-good.install,
      debian/control.in:
      - Add shapewipe plugin, which moved from gst-plugins-bad. Also
        add Replaces for gst-plugins-bad << 0.10.17.2.
    + debian/build-deps.in:
      - Build depend on gst-plugins-base 0.10.26.2.

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

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

  * New upstream release, "Short Circuit":
    + debian/rules,
      debian/build-deps.in:
      - Update GStreamer and gst-plugins-base build dependencies to >= 0.10.26.

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

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

  * debian/build-deps.in,
    debian/gstreamer-plugins-good.install:
    + Remove HAL plugin, HAL will most probably be dropped soon and
      nobody uses this plugin anymore.
  * New upstream pre-release.

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

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

  * New upstream pre-release:
    + debian/rules,
      debian/control.in:
      - Build depend on GStreamer 0.10.25.2, gst-plugins-base 0.10.25.2
        and GLib 2.18.
    + Fixes demuxing of some MOV files (Closes: #561227).
    + Fixes FTBFS with gcc 4.5 (Closes: #564998).
  * debian/control.in:
    + Fix typo in package description (Closes: #557368).
    + Remove David I. Lehn from Uploaders (Closes: #557285).

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

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

  * debian/build-deps.in:
    + Build depend on pulseaudio >= 0.9.20 for additional
      features.
  * New upstream release, "They used to sparkle".

 -- Sebastian Dröge <slomo@debian.org>  Tue, 17 Nov 2009 09:17:35 +0100

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

  * New upstream pre-release.

 -- Sebastian Dröge <slomo@debian.org>  Fri, 13 Nov 2009 07:58:08 +0100

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

  * New upstream pre-release:
    + debian/patches/00*pulse*.patch,
      debian/patches/00*equalizer*.patch,
      debian/patches/04_oss-rank.patch:
      - Dropped, merged upstream.
    + debian/build-deps.in,
      debian/rules:
      - Update build dependencies.

 -- Sebastian Dröge <slomo@debian.org>  Tue, 10 Nov 2009 10:28:49 +0100

gst-plugins-good0.10 (0.10.16-5) unstable; urgency=low

  * debian/patches/0021-pulsesink-Only-set-the-volume-on-stream-connection-i.patch:
    + Only set the volume on stream connection if pulse >= 0.9.20 is available,
      this prevents weird volume changes in totem.

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

gst-plugins-good0.10 (0.10.16-4) unstable; urgency=low

  * debian/patches/000{1,2}-equalizer*.patch:
    + Patches from upstream GIT to fix equalizer in stereo mode and
      to use better filters for the first and last band.
  * debian/patches/00[1-20]-pulse*.patch:
    + Patches from upstream GIT to improve PulseAudio plugin and fix
      some major issues, like decreasing the volume after every track
      in some cases.

 -- Sebastian Dröge <slomo@debian.org>  Sun, 18 Oct 2009 14:00:56 +0200

gst-plugins-good0.10 (0.10.16-3) unstable; urgency=low

  * debian/patches/04_oss-rank.patch:
    + Downgrade the rank of osssrc to secondary
  * debian/rules: Change default audio input to autoaudiosrc

 -- Sjoerd Simons <sjoerd@debian.org>  Wed, 07 Oct 2009 22:33:02 +0100

gst-plugins-good0.10 (0.10.16-2) unstable; urgency=low

  * debian/rules:
    + Use libgudev on Linux for v4l2 device detection.

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

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

  * New upstream release, 'Secret Handshakes'.

 -- Sebastian Dröge <slomo@debian.org>  Sun, 30 Aug 2009 11:02:26 +0200

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

  * New upstream pre-release.
  * debian/control.in:
    + Update Standards-version to 3.8.3, no additional changes needed.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 26 Aug 2009 17:39:36 +0200

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

  * New upstream pre-release.

 -- Sebastian Dröge <slomo@debian.org>  Mon, 17 Aug 2009 08:11:59 +0200

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

  * New upstream pre-release:
    + debian/build-deps.in,
      debian/rules:
      - Update build dependencies.
    + debian/control.in,
      debian/gstreamer-plugins-good.install:
      - Add the rtpmanager plugin which was moved from gst-plugins-bad.
        For this also add Replaces for gst-plugins-bad << 0.10.13.2.
    + debian/patches/01_equalizer-integer-arithmetic-distortions.patch,
      debian/patches/02_SA35205-pngdec-integer-overflow.patch:
      - Dropped, merged upstream.
  * debian/control.in:
    + Update Standards-version to 3.8.2, no additional changes needed.

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

gst-plugins-good0.10 (0.10.15-2) unstable; urgency=high

  * debian/patches/01_equalizer-integer-arithmetic-distortions.patch:
    + Patch from upstream GIT to fix distortions when the integer
      arithmetic mode of the equalizer is used.
  * debian/patches/02_SA35205-pngdec-integer-overflow.patch:
    + SECURITY: SA35205 - PNG Processing Integer Overflow Vulnerability
      Patch from upstream GIT to fix an integer overflow in pngdec:
      A malformed (or simply huge) PNG file can lead to integer overflow in
      calculating the size of the output buffer, leading to crashes or buffer
      overflows later (Closes: #531631).

 -- Sebastian Dröge <slomo@debian.org>  Wed, 03 Jun 2009 08:22:36 +0200

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

  * New upstream release, 'I've been up all night'.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 20 May 2009 23:19:36 +0200

gst-plugins-good0.10 (0.10.14.3-1) experimental; urgency=low

  * New upstream pre-release:
    + Fixes regression in AVI seeking (Closes: #528813).
    + debian/patches/01_rtp-libm-linking.patch:
      - Dropped, merged upstream.
    + debian/gstreamer-plugins-good.install,
      debian/control.in:
      - Add the flv, deinterlace and y4menc plugins that
        were moved from gst-plugins-bad.
  * debian/control.in:
    + Change section of the debug package to debug and add ${misc:Depends}
      to it's dependencies.

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

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

  * New upstream pre-release:
    + debian/patches/01_gconf-notifications.patch:
      - Dropped, merged upstream.
    + debian/rules,
      debian/build-deps.in:
      - Updated build dependencies.
    + debian/patches/01_rtp-libm-linking.patch:
      - Link with -lm to fix unresolved symbols.
  * debian/control.in:
    + Update Standards-version to 3.8.1, no additional changes needed.

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

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

  * Upload to unstable.

 -- Sebastian Dröge <slomo@debian.org>  Fri, 06 Mar 2009 23:41:50 +0100

gst-plugins-good0.10 (0.10.14-1) experimental; urgency=low

  * New upstream release, 'Disaffected Affectation'.
  * debian/patches/02_no-Werror.patch,
    debian/rules:
    + Pass -Wno-error via C(XX)FLAGS instead of patching configure.
  * debian/patches/01_gconf-notifications.patch:
    + Disconnect GConf notifications after usage, patch from upstream GIT.

 -- Sebastian Dröge <slomo@debian.org>  Fri, 20 Feb 2009 10:31:38 +0100

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

  * debian/build-deps.in:
    + Build depend on gstreamer0.10-plugins-base 0.10.22 for the
      new videotestsrc colors to fix the videocrop unit test.
  * debian/gstreamer-plugins-good.install:
    + Include the new equalizer presets.
  * New upstream pre-release.

 -- Sebastian Dröge <slomo@debian.org>  Mon, 16 Feb 2009 15:30:35 +0100

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

  * New upstream pre-release:
    + debian/patches/04_equalizer-coefficients.patch,
      debian/patches/05_soup-live-source.patch,
      debian/patches/06_libv4l.patch,
      debian/patches/07_pulse-hang-and-thread-leak.patch,
      debian/patches/99_autoreconf.patch:
      - Dropped, merged upstream.
    + debian/rules,
      debian/build-deps.in:
      - Build depend on gstreamer and gst-plugins-base 0.10.22.
      - Build depend on pulseaudio 0.9.13 to enable some optional
        features in the pulse plugin.

 -- Sebastian Dröge <slomo@debian.org>  Sat, 07 Feb 2009 20:36:03 +0100

gst-plugins-good0.10 (0.10.13-2) experimental; urgency=low

  * debian/patches/07_pulse-hang-and-thread-leak.patch:
    + Patches from upstream GIT to fix some deadlocks when
      the pulseaudio daemon disappears and also fix
      a memory leak.

 -- Sebastian Dröge <slomo@debian.org>  Mon, 26 Jan 2009 15:41:46 +0100

gst-plugins-good0.10 (0.10.13-1) experimental; urgency=low

  * New upstream security release, 'Blatant Discouragement':
    + Fix potential buffer overflows while reading quicktime headers.
      Security issue noticed by Tobias Klein (TKADV2009-0xx).
    + debian/patches/99_autoreconf.patch:
      - Updated for the new release.
  * debian/build-deps.in:
    + Build depend on libcairo2-dev instead of the virtual package
      libcairo-dev.
  * -

 -- Sebastian Dröge <slomo@debian.org>  Mon, 26 Jan 2009 15:41:45 +0100

gst-plugins-good0.10 (0.10.11-2) experimental; urgency=low

  * debian/patches/06_libv4l.patch,
    debian/patches/99_autoreconf.patch,
    debian/rules:
    + Patch from upstream CVS to use libv4l for the v4l2 plugin instead
      of direct access to the v4l device. This adds support for a lot
      more v4l2 devices.

 -- Sebastian Dröge <slomo@debian.org>  Wed, 05 Nov 2008 12:38:36 +0100

gst-plugins-good0.10 (0.10.11-1) experimental; urgency=low

  * New upstream release, 'Secondary Consideration'.

 -- Sebastian Dröge <slomo@debian.org>  Sat, 25 Oct 2008 09:39:23 +0200

gst-plugins-good0.10 (0.10.10.4-1) experimental; urgency=low

  [ Loic Minier ]
  * Set gstreamer0.10-pulseaudio's Section to sound to match overrides.

  [ Sebastian Dröge ]
  * New upstream pre-release.
  * debian/patches/04_equalizer-coefficients.patch:
    + Patch from upstream bugtracker to not recalculate the equalizer
      coefficients for every single buffer but only when it's needed.
  * debian/patches/05_soup-live-source.patch:
    + Patch from upstream bugtracker to allow souphttpsrc to work
      as live source and have it provide timestamps.

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

gst-plugins-good0.10 (0.10.10.3-1) experimental; urgency=low

  * New upstream pre-release.

 -- Sebastian Dröge <slomo@debian.org>  Sat, 18 Oct 2008 10:23:40 +0200

gst-plugins-good0.10 (0.10.10.2-1) experimental; urgency=low

  * New upstream pre-release:
    + debian/rules,
      debian/build-deps.in:
      - Build depend on gstreamer and gst-plugins-base >= 0.10.21.
    + debian/build-deps.in:
      - Build depend on FLAC >= 1.1.3.
      - Build depend on bzip2.

 -- Sebastian Dröge <slomo@debian.org>  Sat, 11 Oct 2008 15:42:49 +0200

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

  * New upstream release, 'Barely Moving'.

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

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

  * New upstream pre-release:
    + debian/build-deps.in,
      debian/gstreamer-plugins-good.install:
      - Remove the cdio plugin, it moved to gst-plugins-ugly because libcdio
        is GPL licensed.
  * debian/rules:
    + Build depend on gstreamer >= 0.10.20-3 for the new virtual package
      names.
  * debian/control.in:
    + Wrap control fields.
    + Depend on gstreamer0.10-plugins-base as some plugins need it.

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

gst-plugins-good0.10 (0.10.9-2) experimental; urgency=low

  * debian/control.in,
    debian/rules:
    + Use new automatic codec installation infrastructure.

 -- Sebastian Dröge <slomo@debian.org>  Sat, 09 Aug 2008 16:56:46 +0200

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

  * New upstream release, 'Steam Train Rolling'.

 -- Sebastian Dröge <slomo@debian.org>  Fri, 01 Aug 2008 11:32:53 +0200

gst-plugins-good0.10 (0.10.8.4-1) experimental; urgency=low

  * New upstream pre-release.

 -- Sebastian Dröge <slomo@debian.org>  Tue, 29 Jul 2008 12:01:45 +0200

gst-plugins-good0.10 (0.10.8.3-1) experimental; urgency=low

  * New upstream pre-release.

 -- Sebastian Dröge <slomo@debian.org>  Sat, 26 Jul 2008 12:34:57 +0200

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

  * New upstream pre-release:
    + debian/patches/10_speex_caps.patch,
      debian/patches/11_rtsp_fdleak.patch,
      debian/patches/12_matroskamux_track_duration.patch,
      debian/patches/13_equalizer.patch:
      - Dropped, merged upstream.
    + debian/build-deps.in,
      debian/control.in,
      debian/gstreamer-pulseaudio.install,
      debian/rules:
      - Add the pulseaudio plugin.
    + debian/gstreamer-plugins-good.install,
      debian/control.in:
      - Add the interleave and replaygain plugins.
    + debian/build-deps.in,
      debian/rules:
      - Update gstreamer, gst-plugins-base and libcdio build dependencies.
  * debian/control.in:
    + Depend on gstreamer0.10-audiosink instead of a specific audiosink
      plugin (Closes: #482796).
  * debian/patches/03_pulse-rank.patch:
    + Update the rank of the pulse elements to PRIMARY+10.
  * debian/control.in:
    + Update Standards-version to 3.8.0, no additional changes needed.

 -- Sebastian Dröge <slomo@debian.org>  Sun, 20 Jul 2008 11:59:00 +0200

gst-plugins-good0.10 (0.10.8-4) unstable; urgency=low

  * debian/patches/13_equalizer.patch:
    + Fix clipping in integer mode, correctly implement passthrough mode if
      all bands have a gain of 0dB and delay filter coefficient calculation
      until they're really needed. Patch from upstream CVS.

 -- Sebastian Dröge <slomo@debian.org>  Mon, 02 Jun 2008 13:44:41 +0200

gst-plugins-good0.10 (0.10.8-3) unstable; urgency=low

  * debian/patches/11_rtsp_fdleak.patch
    - Added. Fix filedescriptor leak on errors. (From upstream CVS)
  * debian/patches/12_matroskamux_track_duration.patch
    - Added. Fix track time calculation when muxing matroska files (From
      upstream CVS)

 -- Sjoerd Simons <sjoerd@debian.org>  Sun, 01 Jun 2008 16:15:48 +0200

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

  * debian/patches/10_speex_caps.patch
    - Added. Fix speexenc and rtpspeexpay caps negotiation (From gnome
    bugzilla #465146)

 -- Sjoerd Simons <sjoerd@debian.org>  Fri, 25 Apr 2008 21:51:20 +0200

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

  * New upstream bugfix release, 'One For The Money'.

 -- Sebastian Dröge <slomo@debian.org>  Thu, 24 Apr 2008 07:41:30 +0200

gst-plugins-good0.10 (0.10.7.4-1) experimental; urgency=low

  * New upstream pre-release.

 -- Sebastian Dröge <slomo@debian.org>  Tue, 22 Apr 2008 10:28:29 +0200

gst-plugins-good0.10 (0.10.7.3-1) experimental; urgency=low

  * New upstream pre-release:
    + debian/patches/01_goom-missing-header.patch:
      - Dropped, merged upstream.
    + debian/build-deps.in:
      - flex and bison are not necessary anymore.

 -- Sebastian Dröge <slomo@debian.org>  Fri, 18 Apr 2008 10:35:19 +0200

gst-plugins-good0.10 (0.10.7.2-2) experimental; urgency=low

  * debian/patches/02_no-Werror.patch:
    + Don't build with -Werror to fix FTBFS on some architectures.

 -- Sebastian Dröge <slomo@debian.org>  Tue, 15 Apr 2008 05:29:28 +0200

gst-plugins-good0.10 (0.10.7.2-1) experimental; urgency=low

  * New upstream pre-release:
    + debian/control.in:
      - Adjust conflicts for gst-plugins-bad because of moved plugins.
    + debian/rules,
      debian/build-deps.in:
      - Update build dependencies.
    + debian/gstreamer-plugins-good.install:
      - Ship soup and goom2k1 plugins.
    + debian/rules:
      - Set default audio/video sinks/srcs depending on the platform.
    + debian/patches/02_v4l2_default.patch,
      debian/patches/05_speexenc_double_unref.patch,
      debian/patches/75_build_docs_without_python_xml.patch,
      debian/patches/80_unit-tests.patch:
      - Dropped, merged upstream.
    + debian/patches/01_goom-missing-header.patch:
      - Add missing header file that was forgotten.

 -- Sebastian Dröge <slomo@debian.org>  Mon, 14 Apr 2008 10:59:00 +0200

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

  * debian/patches/05_speexenc_double_unref.patch:
    + Added. Don't unref a buffer twice when hitting a not-negotiated error
    in speexenc (from upstream CVS) (Closes: #472096)

 -- Sjoerd Simons <sjoerd@debian.org>  Sat, 22 Mar 2008 02:35:15 +0100

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

  * debian/patches/02_v4l2_default.patch:
    + Patch by Mario Limonciello to use v4l2 as default video source instead
      of the nowadays deprecated v4l (Closes: #468073).
  * debian/patches/75_build_docs_without_python_xml.patch,
    debian/build-deps.in:
    Stop using pyxml for building the docs (Closes: #468630).

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

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

  * New upstream release, "Red Door Black":
    + debian/patches/01_linking-fixes.patch:
      - Dropped, merged upstream.

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

gst-plugins-good0.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.
  * debian/patches/01_linking-fixes.patch:
    + Link gstalpha with libgstbase.
  * debian/build-deps.in:
    + Build depend on libxv-dev to get Xv support in ximagsink.

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

gst-plugins-good0.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.
  * debian/patches/80_unit-tests.patch:
    + Disable gconfaudiosrc for the generic/states unit test.

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

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

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

  [ 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: #424398).
    + Fixes playback of realaudio streams (Closes: #430364).
    + Fixes switching of sink after song changes (Closes: #444769).
    + debian/gstreamer-plugins-good.install:
      - Add new equalizer, spectrum and multifile plugins and sort
        alphabetically.
    + debian/build-deps.in,
      debian/rules:
      - Update liboil and gstreamer build dependencies.
    + debian/patches/20_gconf-state-change.patch,
      debian/patches/30_id3_gst_tag_defines.patch:
      - Dropped, merged upstream.
    + debian/control.in:
      - Update Replaces on gst-plugins-bad for the plugin moves.
      - Update Standards-Version to 3.7.3, no additional changes needed.
  * debian/rules:
    + Run the unit test suite but don't fail the build on failures.

 -- Sebastian Dröge <slomo@debian.org>  Sat, 09 Feb 2008 12:11:21 +0100

gst-plugins-good0.10 (0.10.6-4) unstable; urgency=low

  * debian/patches/30_id3_gst_tag_defines.patch:
    + Added. Use GST_TAG_ARTIST_SORTNAME instead of the deprecated
      GST_TAG_MUSICBRAINZ_SORTNAME (Closes: #452671)
    + Also add support for GST_TAG_ALBUM_SORTNAME, GST_TAG_TITLE_SORTNAME and
      GST_TAG_COMPOSER
    + Based on the current CVS version of gstid3v2mux

 -- Sjoerd Simons <sjoerd@debian.org>  Sat, 24 Nov 2007 22:07:19 +0100

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

  * 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.
  * debian/patches/20_gconf-state-change.patch:
    + Fix errors while changing the state of the gconf sink. Patch from
      upstream CVS, see http://bugzilla.gnome.org/show_bug.cgi?id=471364 .

 -- Sebastian Dröge <slomo@debian.org>  Tue, 25 Sep 2007 15:31:31 +0200

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

  * debian/control.in:
    + Add Replaces on gstreamer0.10-plugins-really-bad (<< 0.10.4.2), which is
      maintained in the Debian Multimedia project and also contained the
      WavPack plugin.
  * debian/build-deps.in,
    debian/rules:
    + Call dh_gstinstallcodecs to generate the codecs database.
  * debian/gstreamer-plugins-good.install,
    debian/gstreamer-plugins-good-doc.install,
    debian/control.in:
    + Move translations from the docs package to the plugin package.

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

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

  * New upstream release, "Wobble Board":
    + Fixes muxing of raw audio in Matroska files (Closes: #360536).
    + Fixes memory leak in cutter and level plugins (Closes: #425114).
    + debian/patches/20_gstavidemux-error-out-on-pull_range.patch,
      debian/patches/30_speex-rtp-fixes.patch,
      debian/patches/40_flac1.1.3.patch,
      debian/patches/99_autoreconf.patch:
      - Dropped, merged upstream.
    + debian/build-deps.in,
      debian/rules:
      - Require gstreamer and gst-plugins-base >= 0.10.13.
    + debian/gstreamer-plugins-good.install,
      debian/build-deps.in,
      debian/control.in:
      - Add wavpack, qtdemux, videocrop, monoscope and gamma plugins.
        For this add Replaces on gstreamer0.10-plugins-bad (<< 0.10.4.2).

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

gst-plugins-good0.10 (0.10.5-7) unstable; urgency=low

  * debian/control.in:
    + Use ${binary:Version} instead of ${Source-Version} to make lintian happy.
  * debian/patches/40_flac1.1.3.patch:
    + Patch from upstream CVS to work with flac >= 1.1.3. (Closes: #427744, #426647).
      http://bugzilla.gnome.org/show_bug.cgi?id=385887
  * debian/patches/99_autoreconf.patch:
    + Regenerate configure for the above change.

 -- Sebastian Dröge <slomo@debian.org>  Sun, 10 Jun 2007 22:58:34 +0200

gst-plugins-good0.10 (0.10.5-6) unstable; urgency=low

  * debian/patches/30_speex-rtp-fixes.patch
    + Added. Fix the speex rtp payloader and depayloader. (From upstream CVS)

 -- Sjoerd Simons <sjoerd@debian.org>  Thu, 10 May 2007 13:27:36 +0200

gst-plugins-good0.10 (0.10.5-5) unstable; urgency=low

  * Upload to unstable
  * Merge experimental branch:
    [ Loic Minier ]
    + Build-depend on libpng12-dev instead of libpng12-0-dev to get the
      libpng12.pc file.

    [ Sebastian Dröge ]
    + New upstream release 0.10.5, "The Path of Thorns":
      - Fixes playback of some internet radio streams (Closes: #384377)
      - debian/patches/12_gstcacasink-header-include.patch,
        debian/patches/13_separate-handle-for-avc-ops.patch:
        . Dropped, merged upstream
      - debian/rules,
      - debian/build-deps.in:
        . Build depend on gstreamer / gst-plugins-base >= 0.10.10.1
      - debian/gstreamer-plugins-good.install:
        . Add audiofx plugin
    + debian/patches/11_esdsink-priority.patch:
      - Dropped, priorities are cached in the gst registry, thus this patch had
        almost no effect. This should somehow be solved by a determined priority
        order for sinks
    + debian/control:
      - Updated to use my debian.org mail address
    + debian/control,
      debian/gstreamer-plugins-good.install:
      - Only build the video4linux2 plugin on Linux. Fixes FTBFS everywhere else
    + debian/build-deps.in,
      debian/rules:
      - Use type-handling to only depend on libraw1394 and friends on Linux
 
    [ Sjoerd Simons ]
    + Enable experimental plugins (the v4l2src plugin)
    + Conflict with gstreamer0.10-plugins-bad < 0.10.4 which used to provide the
      v4l2src plugin.
    + Add myself to uploaders

  * debian/patches/20_gstavidemux-error-out-on-pull_range.patch:
    + Updated for the new upstream version

 -- Sebastian Dröge <slomo@debian.org>  Tue, 10 Apr 2007 20:34:53 +0200

gst-plugins-good0.10 (0.10.4-3) unstable; urgency=high

  * New patch, 13_separate-handle-for-avc-ops, to use a separate handle on
    raw1394 for AVC operations.
  * Urgency high as the dv plugin is unusable without this patch.
  * Merge 0.10.4-2.

 -- Loic Minier <lool@dooz.org>  Wed, 25 Oct 2006 16:07:07 +0200

gst-plugins-good0.10 (0.10.4-2) experimental; urgency=low

  * Re-add -dbg package and target at experimental.

 -- Loic Minier <lool@dooz.org>  Fri, 13 Oct 2006 12:27:45 +0200

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

  [ Loic Minier ]
  * New patch, 11_esdsink-priority, taken from Ubuntu to include esdsink in
    the candidates of autoaudiosink. (Closes: #373703)

  [ Sebastian Dröge ]
  * New upstream release, "Dear Leader".
    - Fixes reading and parsing of some id3v2 tags. (Closes: #361310)
    - Tries esdsink but does not autospawn esound. (Closes: #361841)
    - Fixes crash of dv1394src by using a separate handle for AVC operations.
      (Closes: #369936)
    - debian/patches/10_fix-h263-caps.patch:
      + dropped, merged upstream
    - debian/patches/11_esdsink-priority.patch:
      + Updated, partially upstream
    - debian/rules:
      + Require libraw1394-dev (>= 1.2.1) and libiec61883-dev (>= 1.0.0)
  * debian/control.in:
    + Added myself to Uploaders
  * debian/gstreamer-plugins-good.install:
    + Remove the duplicated entries for the dv1394 element
  * debian/compat,
    debian/build-deps.in:
    + Update to debhelper compat level 5
  * debian/rules,
    debian/control.in:
    + Add a -dbg package

  [ Loic Minier ]
  * Rename patch 11_gstcacasink-header-include to
    12_gstcacasink-header-include.
  * Drop -dbg package for now, this version is for etch.

 -- Loic Minier <lool@dooz.org>  Fri, 13 Oct 2006 12:13:08 +0200

gst-plugins-good0.10 (0.10.3-3) unstable; urgency=medium

  * New patch, 11_gstcacasink-header-include, to fix building of the libcaca
    plugin; thanks Sam Hocevar. (Closes: #386169)

 -- Loic Minier <lool@dooz.org>  Sat,  9 Sep 2006 20:32:43 +0200

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

  * Bump up Standards-Version to 3.7.2.
    [debian/control, debian/control.in]
  * New patch from upstream to fix caps of H263 RTP streams, thanks Paul van
    Tilburg.
    [debian/patches/10_fix-h263-caps.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 23:05:56 +0200

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

  * New upstream release, "Desplazado".
    - Bump libgstreamer0.10-dev build-dep to 0.10.4.1.
      [debian/control, debian/rules]
    - Bump libgstreamer-plugins-base0.10-dev build-dep to 0.10.5.1.
      [debian/build-deps.in, debian/build-deps, debian/control]
    - New ximagesrc plugin.
      . Add libxdamage-dev, libxext-dev, and libxfixes-dev build-deps.
        [debian/build-deps.in, debian/build-deps, debian/control]
      . Install in gstreamer-plugins-good.
        [debian/gstreamer-plugins-good.install]
    - New annodex plugin.
      . Add libxml2-dev build-dep.
        [debian/build-deps.in, debian/build-deps, debian/control]
      . Install in gstreamer-plugins-good.
        [debian/gstreamer-plugins-good.install]
    - New gdkpixbuf plugin.
      . Add libgtk2.0-dev build-dep.
        [debian/build-deps.in, debian/build-deps, debian/control]
      . Install in gstreamer-plugins-good.
        [debian/gstreamer-plugins-good.install]
    - New halelements plugin.
      . Add libdbus-1-dev (>= 0.32) and libhal-dev (>= 0.5.6) build-deps.
        [debian/build-deps.in, debian/build-deps, debian/control]
      . Install in gstreamer-plugins-good.
        [debian/gstreamer-plugins-good.install]
    - New taglib plugin.
      . Add libtag1-dev build-dep.
        [debian/build-deps.in, debian/build-deps, debian/control]
      . Install in gstreamer-plugins-good.
        [debian/gstreamer-plugins-good.install]
    - New videobalance plugin, installed in gstreamer-plugins-good.
      [debian/gstreamer-plugins-good.install]
    - New icydemux plugin.
      . Install in gstreamer-plugins-good.
        [debian/gstreamer-plugins-good.install]

 -- Loic Minier <lool@dooz.org>  Sat,  6 May 2006 11:52:57 +0200

gst-plugins-good0.10 (0.10.2-2) unstable; urgency=low

  * Depend on the alsa package instead of recommending it, since package
    managers don't honor Recommends: in all cases. (Closes: #352212)
    [debian/control, debian/control.in]

 -- Loic Minier <lool@dooz.org>  Thu, 16 Feb 2006 14:45:38 +0100

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

  * New upstream release, "Papa was a rolling stone".

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

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

  * New upstream pre-release.
    - Bump up libgstreamer0.10-dev build-dep to >= 0.10.2.2.
      [debian/control, debian/rules]
    - Bump up libgstreamer-plugins-base0.10-dev to >= 0.10.2.2.
      [debian/build-deps.in, debian/build-deps, debian/control]
    - Add apetag plugin.
      . Install plugin.
      [debian/gstreamer-plugins-good.install]
    - Add cdio plugin.
      . Add libcdio-dev >= 0.71 build-dep.
      . Install plugin.
      [debian/build-deps, debian/build-deps.in, debian/control, debian/gstreamer-plugins-good.install]
  * Use upstream descriptions in packages descriptions.
    [debian/control, debian/control.in]

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

gst-plugins-good0.10 (0.10.1-2) unstable; urgency=low

  * Recommend gstreamer0.10-alsa and gstreamer0.10-x, as these are used by
    default upstream -- in the GConf schemas -- and used from the autodetect
    audio and videosinks.
    [debian/control, debian/control.in]

 -- Loic Minier <lool@dooz.org>  Sun,  5 Feb 2006 15:08:53 +0100

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

  * New upstream release, "Li".
    - Bump libgstreamer-plugins-base0.10-dev build-dep to >= 0.10.1.
      [debian/build-deps.in, debian/control]
    - Bump libgstreamer0.10-dev build-dep to >= 0.10.1.
      [debian/control, debian/rules]
    - Add id3demux plugin.
      [debian/gstreamer-plugins-good.install]
    - Add translated strings from /usr/share/locale.
      [debian/gstreamer-plugins-good.install]
  * Drop useless gst_plugins_base_lib_dev_dep, gst_plugins_base_lib_dev,
    gst_plugins_base_lib, and gst_plugins_good_version definitions.
    [debian/rules]

 -- Loic Minier <lool@dooz.org>  Sun, 15 Jan 2006 18:04:49 +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
