
Release notes for GStreamer 0.10.9 "On the road again"
        


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


The 0.10.x series is a stable series targeted at 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.


The 0.10.x series has been reworked for threadsafety.  It also features
various feature additions and enchancements.


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.8.x series
      * Threadsafe design and API
      * The testsuite can now generate coverage information
      * Better support for non-linear editing
      * Removed Glib 2.6 compatibility
      * Performance improvements on cpus that support branch hints
      * Bug fixes

Bugs fixed in this release
    
      * 346730 : some warnings about enums and macros
      * 341029 : Ghostpads internal and target should be linked from the b...
      * 346192 : [PATCH] Pad blocking on events
      * 347384 : [ghostpad] padtemplates shouldn't be set automatically
      * 344115 : [patch] make more internal data const
      * 324176 : gst-element-check-0.x.m4 should use versioned gst-inspect
      * 330379 : Bogus commits to basesink, basetransform, collectpads
      * 341667 : restore_from_xml breaks pad links again after creating them
      * 344642 : tools/gst-inspect.c does not compile if --disable-nls is ...
      * 344748 : Fails with non-writable registry
      * 344849 : GstController doesn't handle float properties correct
      * 345086 : [gst-feedback] calls un-versioned tools
      * 346097 : SIGSEGV when using --gst-plugin-load
      * 347337 : GDP does not correctly deserialize events without a struc...
      * 347408 : basesrc causes regressions in pull with 0 bytes
      * 345720 : Bad performance playing files off CD
      * 331727 : make probes and Ghostpads more elegant
      * 343196 : basetransform not handles ro/rw buffer flagging for trans...
      * 346663 : Segmentation error with fakesrc, fakesink and a filter

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

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

Applications ported to GStreamer 0.10 include Totem, RhythmBox, Sound-Juicer,
Gnome Media, Flumotion, Amarok, Jamboree, Pitivi, Istanbul, AnnoAmp, Elisa, and others.
Let us know if you want to be added to this list.

  
Contributors to this release
    
      * Andy Wingo
      * Edward Hervey
      * Jan Schmidt
      * Peter Kjellerstedt
      * Philip Jägenstedt
      * Sebastien Moutte
      * Stefan Kost
      * Thomas Vander Stichele
      * Tim-Philipp Müller
      * Wim Taymans
      * Wouter Paesen
 