
Release notes for GStreamer 1.8.3

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


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


See /releases/1.8/ 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
     
      * 739289 : basesink: Stepping incorrectly updates start time when stepping in PAUSED, causing step amount to be calculated wrongly
      * 762330 : Probe only flush events, is not possible
      * 767413 : tee: Properly handle return value when only 1 pad
      * 767688 : queue2: fix crash deleting current region for small ring buffers
      * 768141 : bus: chain up constructed.
      * 768326 : Building GStreamer for Android fails on Windows (new since 1.8.2)
      * 768450 : pad: check caps not NULL before referring
      * 768649 : queue2: Force final average input rate calculation on EOS
      * 769802 : queue2: Post buffering messages earlier in ringbuffer mode

==== Download ====

You can find source releases of gstreamer in the download
directory: https://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 https://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
      * Guillaume Desmottes
      * Jan Schmidt
      * Linus Svensson
      * Miguel París Díaz
      * Nicolas Dufresne
      * Ray Strode
      * Sebastian Dröge
      * Thiago Santos
      * Tim-Philipp Müller
      * Vincent Penquerc'h
 