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
