GStreamer
open source multimedia framework
Home
Features
News
Annual Conference
Planet (Blogs)
Download
Applications
Security Center
GitLab
Developers
Documentation
Mailing Lists
File a Bug
Bug Lists
Artwork
Follow @gstreamer on Twitter

Release notes for GStreamer 0.10.26 "Think Twice"

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 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

  • Threadsafe design and API
  • registry: do plugin scanning (on *nix) using an external helper binary
  • lots of performance improvements all over the place (ghostpads, multiqueue, pad construction, superfluous type checks, registry loading)
  • add GstByteWriter, a simple generic byte writer
  • filesink: Use _wfopen on win32 to open files with non-ascii filenames correctly.
  • queue2: add option to remove the temp-file (enabled by default)
  • it is now allowed to use gst_caps_set_simple() on non-simple caps
  • queue2: move from gst-plugins-base into the coreelements plugin in core (this means you may need to remove libgstqueue2.so manually if you installed from source and don't do make uninstall before upgrading, or combine an older -base with a newer core)
  • multiqueue: add support for buffering mode where we post BUFFERING messages based on the level of the queues
  • typefind: speed up typefinding a lot by first trying the typefinder for the file's extension
  • buffer: remove private/internal subbuffer subclass and keep track of the parent buffer directly in the GstBuffer structure (this removes quite a bit of special-casing and will allow for future improvements/ extensions that are harder to do if there's a separate subbuffer class.
  • collectpads: add ability to install clipping functions
  • new tags for TV/Radio shows/episodes, lyrics, composer sortname and grouping
  • miniobject: avoid race when recycling buffers
  • basesrc: fix race in PLAYING->PAUSED->PLAYING

Bugs fixed in this release

  • 476514 : [multiqueue] Doesn't forward EOS event in all cases
  • 590941 : API: add gst_pad_get_caps() variant that avoids unneeded caps copies
  • 595602 : g_child_proxy_get_valist doesn't initialize GValue correctly
  • 535069 : basesrc no longer support non-flushing seeks on itself
  • 560442 : GNOME Goal: Remove deprecated GLib symbols
  • 595511 : Annotations for gst_element_query_{position,duration}
  • 595886 : gst_pad_fixate_caps() does not return fixed caps in case of multiple structures
  • 595964 : [multiqueue] can hang pipeline during startup
  • 596366 : proxy_getcaps reverses direction of getcaps
  • 597407 : GstPipeline calculates base_time incorrectly when a new clock appears during PAUSED state
  • 597550 : basesrc: sometimes no buffers produced after PLAYING - PAUSED - PLAYING
  • 597690 : Improve caps setters API
  • 598297 : make check fails when any --disable option which changes the API has been used
  • 598526 : bytewriter: fails to compile with gcc 4.2.4 on Ubuntu Hardy 64 bits
  • 598700 : scripts: Parallelise git-update.sh build script
  • 598895 : [GstRegistry] Use hash table for feature lookups
  • 598896 : [GstRegistry] Cache lists of ElementFactory and TypeFindFactory
  • 599147 : typefind : Avoid having to re-sort the typefind factory list
  • 599759 : [qtdemux] Add support for more tags
  • 600313 : Visualisations stop updating after seek
  • 600922 : gst-launch: wake up less often to check for Ctrl-C
  • 601587 : MiniObject race condition
  • 601668 : [gstregistry] gstregistry.c uses a variable from gst.c
  • 601669 : [tests] tests/examples/manual depends on libgstcheck
  • 602093 : libgstcheck fails to export some symbols when built under et_EE locale
  • 602275 : [API] Add new sink-message event
  • 602419 : [basesink] Regression with position reporting
  • 603059 : Totem crashes when DVD is encrypted but libdvdcss isn't available
  • 603787 : [registry] Doesn't use GMappedFile
  • 604091 : tee: cleanup requestpads in dispose
  • 604093 : gst-inspect/launch: move gst_tools_print_version to avoid glib warning
  • 605251 : tee causes segfault if there is no source pad
  • 605930 : [shave] common/shave not existing yet when configure checks need it
  • 606435 : gsttee not threadsafe
  • 607283 : segfaults and/or miniobject warnings with GLib > = 2.23.2
  • 607317 : [PATCH] fix unaligned detection for x86-64 when cross compiling
  • 607431 : update common modules before freeze
  • 607481 : Should define G_THREADS_MANDATORY everywhere
  • 607739 : [queue2] Temporary file is removed although code claims the opposite
  • 607842 : Audio comes out with short breaks after resume pipeline (paused- > playing)
  • 608136 : multiqueue handles UNEXPECTED flowreturn wrongly
  • 608398 : Initializing the glib thread system seems not to work
  • 608442 : [filesrc] typo in warning message
  • 608726 : bytewriter: mistake in .h/.c function naming
  • 609166 : Buffer list docs ascii art
  • 590669 : [API] need GstByteWriter or GstChunkWriter
  • 601698 : Rename new plugin-scanner helper executable before release
  • 604565 : [gstcheck] Update check to 0.9.8
  • 596877 : New internal libcheck breaks the Solaris build

API changes

  • API additions
    • GST_DEBUG_REGISTER_FUNCPTR()
    • gst_base_src_new_seamless_segment()
    • gst_event_new_sink_message()
    • gst_event_parse_sink_message()
    • gst_util_fraction_add()
    • gst_util_fraction_multiply()
    • gst_util_greatest_common_divisor()
    • gst_util_double_to_fraction()
    • gst_util_fraction_to_double()
    • gst_registry_get_feature_list_cookie()
    • gst_default_registry_get_feature_list_cookie()
    • gst_pad_get_caps_reffed()
    • gst_pad_peer_get_caps_reffed()
    • gst_structure_id_has_field()
    • gst_structure_id_has_field_typed()
    • gst_plugin_feature_list_copy()
    • gst_caps_set_value()
    • gst_byte_writer_ensure_free_space()
    • gst_byte_writer_free()
    • gst_byte_writer_free_and_get_buffer()
    • gst_byte_writer_free_and_get_data()
    • gst_byte_writer_get_remaining()
    • gst_byte_writer_init()
    • gst_byte_writer_init_with_buffer()
    • gst_byte_writer_init_with_data()
    • gst_byte_writer_init_with_size()
    • gst_byte_writer_new()
    • gst_byte_writer_new_with_buffer()
    • gst_byte_writer_new_with_data()
    • gst_byte_writer_new_with_size()
    • gst_byte_writer_put_data()
    • gst_byte_writer_put_float32_be()
    • gst_byte_writer_put_float32_le()
    • gst_byte_writer_put_float64_be()
    • gst_byte_writer_put_float64_le()
    • gst_byte_writer_put_int16_be()
    • gst_byte_writer_put_int16_le()
    • gst_byte_writer_put_int24_be()
    • gst_byte_writer_put_int24_le()
    • gst_byte_writer_put_int32_be()
    • gst_byte_writer_put_int32_le()
    • gst_byte_writer_put_int64_be()
    • gst_byte_writer_put_int64_le()
    • gst_byte_writer_put_int8()
    • gst_byte_writer_put_string_utf16()
    • gst_byte_writer_put_string_utf32()
    • gst_byte_writer_put_string_utf8()
    • gst_byte_writer_put_uint16_be()
    • gst_byte_writer_put_uint16_le()
    • gst_byte_writer_put_uint24_be()
    • gst_byte_writer_put_uint24_le()
    • gst_byte_writer_put_uint32_be()
    • gst_byte_writer_put_uint32_le()
    • gst_byte_writer_put_uint64_be()
    • gst_byte_writer_put_uint64_le()
    • gst_byte_writer_put_uint8()
    • gst_byte_writer_reset()
    • gst_byte_writer_reset_and_get_buffer()
    • gst_byte_writer_reset_and_get_data()
    • gst_bit_reader_get_size()
    • gst_byte_reader_get_size()
    • gst_data_queue_new_full()
    • gst_collect_pads_set_clip_function()
    • gst_type_find_helper_get_range_ext()
  • API deprecations
    • gst_registry_xml_read_cache()
    • gst_registry_xml_write_cache()

Download

You can find source releases of gstreamer in the gstreamer download directory.

The git repository and details how to clone it can be found at git.freedesktop.org .

Homepage

The project's website is https://gstreamer.freedesktop.org.

Support and Bugs

We use GNOME's bugzilla for bug reports and feature requests.

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

Git is hosted on git.freedesktop.org. You can browse the gstreamer repository.

All code is in Git and can be checked out from there.

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

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

  • Andoni Morales Alastruey
  • Bastien Nocera
  • Benjamin Otte
  • Christian Schaller
  • David Schleef
  • Edward Hervey
  • Frederic Crozat
  • Havard Graff
  • Håvard Graff
  • Jan Schmidt
  • Javier Jardón
  • Johan Bilien
  • LRN
  • Mark Nauwelaerts
  • Michael Smith
  • Ole André Vadla Ravnås
  • Olivier Crête
  • Peter Kjellerstedt
  • Peter van Hardenberg
  • Priit Laes
  • Rob Clark
  • Robert Swain
  • Sebastian Dröge
  • Stefan Kost
  • Thiago Santos
  • Thiago Sousa Santos
  • Thijs Vermeir
  • Tim-Philipp Müller
  • Tommi Myöhänen
  • Wim Taymans
  • Руслан Ижбулатов

Report a problem on this page.