
GStreamer: Release notes for GStreamer Good Plug-ins 0.9.6 "Everything's Not Lost"
        

The GStreamer team is petrified to announce a new release
in the 0.9.x development series of the
GStreamer Good Plug-ins.


The 0.9.x series is a development series and not recommended for end users.
It is not API or ABI compatible with the stable 0.8.x series.
It is, however, parallel installable with the 0.8.x series.


"Such ingratitude.  After all the times I've saved your life."


A collection of plug-ins you'd want to have right next to you on the
battlefield.  Shooting sharp and making no mistakes, these plug-ins have it
all: good looks, good code, and good licensing.  Documented and dressed up
in tests.  If you're looking for a role model to base your own plug-in on,
here it is.


If you find a plot hole or a badly lip-synced line of code in them,
let us know - it is a matter of honour for us to ensure Blondie doesn't look
like he's been walking 100 miles through the desert without water.


This module contains a set of plug-ins that we consider to have good quality
  code, correct functionality, our preferred license (LGPL for the plug-in
  code, LGPL or LGPL-compatible for the supporting library).
We believe distributors can safely ship these plug-ins.
People writing elements should base their code on these elements.

Other modules containing plug-ins are:


gst-plugins-base
contains a basic set of well-supported plug-ins
gst-plugins-ugly
contains a set of well-supported plug-ins, but might pose problems for
    distributors
gst-plugins-bad
contains a set of less supported plug-ins that haven't passed the
    rigorous quality testing we expect



  
Features of this release
    
      * Parallel installability with 0.8.x series
      * Threadsafe design and API
      * added speex RTP payloader/depayloader
      * ported cutter
      * fractional framerates
      * more video filters now use BaseTransform

Bugs fixed in this release
    

Download

You can find source releases of gst-plugins-good in the download directory:
http://gstreamer.freedesktop.org/src/gst-plugins-good/

GStreamer Homepage

More details can be found on the project's website:
http://gstreamer.freedesktop.org/

Support and Bugs

We use GNOME's bugzilla for bug reports and feature requests:
http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer

Developers

CVS is hosted on cvs.freedesktop.org.
All code is in CVS and can be checked out from there.
Interested developers of the core library, plug-ins, and applications should
subscribe to the gstreamer-devel list. If there is sufficient interest we
will create more lists as necessary.

        
Applications
  
Contributors to this release
    
      * Andy Wingo
      * Edgard Lima
      * Edward Hervey
      * Jan Schmidt
      * Julien Moutte
      * Michael Smith
      * Thomas Vander Stichele
      * Tim-Philipp Müller
      * Vincent Torri
      * Wim Taymans
 
