
Release notes for GStreamer 0.10.10 "Pais"
        


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

Bugs fixed in this release
     
      * 349180 : gst_parse_launch is not reentrant (or recursively callable)
      * 348455 : [filesrc] should not use mmap() by default, since it migh...
      * 340674 : marry gst-debugs & plot-timeline.py
      * 350449 : [GstBaseTransform] buffer_alloc should alway try downstream
      * 352580 : implement proper caps merging
      * 345444 : Linking to an audioconvert (pad-added callback) multiple ...
      * 347293 : GstValueList comparison is flawed
      * 347311 : element_unlink leaks its iterator wich will leak the src ...
      * 348179 : gst_parse_lauch is not reentrant
      * 348354 : failure in bison version detection breaks build
      * 350419 : API: GST_SEGMENT_FORMAT printf extension for GstSegments
      * 350879 : [init] Mark gstreamer as being initialized during registr...
      * 350935 : API: add GST_TAG_EXTENDED_COMMENT
      * 353976 : asssertion about element sanity in gst_registry_xml_write...
      * 350432 : micro-optimising quarks
      * 341029 : Ghostpads internal and target should be linked from the b...
      * 345295 : [PATCH] gstreamer/libs/gst/net for Windows
      * 347756 : Allow --disable-trace without --disable-parse
      * 347794 : Do not reset SIGSEGV handler when --gst-disable-segtrap i...
      * 348918 : application should decide whether or not to use fork() to...
      * 349943 : [QOS] documentation/code mismatch
      * 351768 : Unwanted concurent buffer modifications
      * 352958 : pad_alloc_buffer and stream lock
      * 353121 : gst_query_new_segment should initialize all structure fields
      * 353122 : gst_element_get_bus refs the bus unconditionally
      * 347385 : [ghostpad] gst_ghost_pad_new_from_template() method
      * 348677 : Upgrade to 0.10.9 breaks existing applications (failed se...

API changed in this release
     
- API additions:
    
* gst_segtrap_is_enabled
* gst_segtrap_set_enabled
* gst_registry_fork_is_enabled
* gst_registry_fork_set_enabled
* gst_ghost_pad_new_from_template
* gst_ghost_pad_new_no_target_from_template
* gst_caps_merge
* GST_TAG_EXTENDED_COMMENT
* GstClockCLass:wait_jitter
* GST_SEGMENT_FORMAT
* gst_structure_id_set
* gst_structure_id_set_valist

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
      * Antoine Tremblay
      * Edward Hervey
      * Jan Schmidt
      * Marc-Andre Lureau
      * Michael Smith
      * Peter Kjellerstedt
      * Stefan Kost
      * Thomas Vander Stichele
      * Tim-Philipp Müller
      * Torsten Schoenfeld
      * Wim Taymans
 