
Release notes for GStreamer 1.6.1


The GStreamer team is proud to announce the first bugfix release in the stable
1.6 release series of your favourite cross-platform multimedia framework!



This release only contains bugfixes and it is safe to update from 1.6.0. For a
full list of bugfixes see Bugzilla.



See http://gstreamer.freedesktop.org/releases/1.6/
for the full release notes.



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 plugins
gst-plugins-good
contains a set of well-supported plugins under our preferred license
gst-plugins-ugly
contains a set of well-supported plugins, but might pose problems for
    distributors
gst-plugins-bad
contains a set of less supported plugins that haven't passed the
    rigorous quality testing we expect, or are still missing documentation
    and/or unit tests
gst-libav
contains a set of codecs plugins based on libav (formerly gst-ffmpeg)



  

Bugs fixed in this release
     
      * 747612 : Valgrind 3.7.0 chokes on match-leak-kinds in gst.supp
      * 756069 : Gstreamer: Fix sample memory leaks
      * 756136 : gstreamer-1.6.0 doesn't compile on OS X 10.6: header file issue in gst-ptp-helper.c
      * 756645 : multiqueue: Improve incoming SEGMENT handling
      * 756810 : segment_to_stream_time and position_from_stream_time miscalculate when applied_rate < 0
      * 756898 : pad: gst_pad_probe_info_get_buffer_list() has wrong ownership transfer
      * 757065 : uri: incorrect behavior when merging uris ending in ..
      * 757257 : pad: Unblock blocking pad probes when receiving FLUSH_START in send_event() too

==== Download ====

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

The git repository and details how to clone it can be found at
http://cgit.freedesktop.org/gstreamer/gstreamer/

==== Homepage ====

The project's website is 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

Please submit patches via bugzilla as well.

For help and support, please subscribe to and send questions to the
gstreamer-devel mailing list (see below for details).

There is also a #gstreamer IRC channel on the Freenode IRC network.

==== Developers ====

GStreamer is stored in Git, hosted at git.freedesktop.org, and can be cloned
from there (see link above).

Interested developers of the core library, plugins, and applications should
subscribe to the gstreamer-devel list.

        
Contributors to this release
    
      * Edward Hervey
      * Florin Apostol
      * Sebastian Dröge
      * Stefan Sauer
      * Tim-Philipp Müller
      * Vineeth TM
      * Vivia Nikolaidou
 