
Release notes for GStreamer 0.11.1 "Sweet New Blossom"
        


The GStreamer team is proud to announce a new release
in the 0.11.x unstable series of the
core of the GStreamer streaming media framework.


The 0.11.x series is an unstable series targeted at developers
It is not API or ABI compatible with the stable 0.10.x series.
It is, however, parallel installable with the 0.10.x series.


The 0.11.x series has improved memory management and features
various cleanups and enhancements.


This module, gstreamer, only contains core functionality.
For actual media playback, you will need other modules.

gst-plugins-base
contains a basic set of well-supported plug-ins
gst-plugins-good
contains a set of well-supported plug-ins under our preferred license
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.10.x series
      * Remove negotiation from state change in GstBaseSrc
      * Removed our custom FOURCC type
      * Updates to the base classes
There were no bugs fixed in this release
    

Download

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

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

GStreamer is stored in Git, hosted at git.freedesktop.org, and can be cloned 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

No applications are ported to 0.11 as of yet. We are looking for more people to
port plugins and applications.

  
Contributors to this release
    
      * David Schleef
      * Edward Hervey
      * Fabrizio (Misto) Milo
      * Guillaume Desmottes
      * Josep Torra
      * Mark Nauwelaerts
      * Nicolas Dufresne
      * Peteris Krisjanis
      * Piotr Fusik
      * Raimo Järvi
      * Sebastian Dröge
      * Shaun Hoopes
      * Sjoerd Simons
      * Stas Sergeev
      * Stefan Kost
      * Stefan Sauer
      * Thomas Vander Stichele
      * Tim-Philipp Müller
      * Vincent Penquerc'h
      * Wim Taymans
 