
Release notes for GStreamer 0.11.90 "And all with pearl and ruby glowing was the fair palace door"
        


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 and will
eventually lead up to the stable 1.0 series.
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
    
      * Lots of bugfixes, cleanup and other improvements
      * Improvements to the buffer and memory managment API
      * A new GstTOC interface, e.g. for handling chapters
      * The GstChildProxy interface works with any GObject now
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

Various applications have early ports to GStreamer 0.11 including Totem, RhythmBox,
Webkit, Jokosher, Transmageddon and others. We're working on porting more applications.

  
Contributors to this release
    
      * Alessandro Decina
      * Alexander Saprykin
      * Christian Fredrik Kalager Schaller
      * David Schleef
      * Edward Hervey
      * Fabrizio (Misto) Milo
      * Mark Nauwelaerts
      * Matej Knopp
      * Olivier Crête
      * Ryan Lortie
      * Sebastian Dröge
      * Sreerenj Balachandran
      * Stefan Sauer
      * Tim-Philipp Müller
      * Wim Taymans
      * Руслан Ижбулатов
 