open source multimedia framework

GStreamer Conference 2023

25-26 September 2023 · A Coruña, Spain

Registration is open · Lightning Talks can still be submitted · Join us!
Annual Conference
Planet (Blogs)
Security Center
Mailing Lists
File a Bug
@gstreamer on Twitter
@gstreamer on Mastodon
#gstreamer on Matrix

Release notes for GStreamer 0.10.30 "Safety First"

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.

contains a basic set of well-supported plug-ins
contains a set of well-supported plug-ins under our preferred license
contains a set of well-supported plug-ins, but might pose problems for distributors
contains a set of less supported plug-ins that haven't passed the rigorous quality testing we expect

Features of this release

  • GLib requirement was bumped to 2.20, automake requirement to 1.10
  • bin: unlock gst_element_get_state() on error, instead of hanging forever if no timeout is given
  • clock: fix refcounting bug in gst_clock_set_master
  • caps: make sure _normalize() is applied on all structures
  • info: add new TRACE log level and move refcounting there from LOG level
  • pad: don't check twice for changed caps per push
  • pad: fix iterator aggregation of all pads in the internal links fallback
  • tagsetter: protect tagsetter operations with a lock
  • value: support short fourccs (esp. serialisation/deserialisation)
  • adapter: fix _try_to_merge_up(); optimize progressive masked scans
  • basesink: implement percentage position and duration queries
  • basesink: fix segment query return value
  • basetransform: add accept_caps vmethod
  • basetransform: re-evaluate proxy_alloc when reconfigured
  • basetransform: assume in_size equals out_size if there's no transform_size/get_unit_size vfunc
  • fdsink, filesink: make sync property work correctly
  • typefind: make sure buffers' metadata is writable before setting caps on them
  • queue2: fix merging of ranges
  • queue2: don't wait for data when EOS
  • queue2: don't ignore failure to open the temporary file location
  • tools: make gst-launch print things correctly to stderr/stdout and make --quiet work correctly
  • introspection: add many more gobject-introspection annotations
  • xml: serialisation/deserialisation to/from XML has been deprecated, since it's always been broken for all but the most trivial pipelines, and will likely never be fixed

Bugs fixed in this release

  • 623586 : gst/tagsetter check fails
  • 463435 : Skip #include < libxml/parser.h > in when not needed
  • 505770 : gst_element_get_state() should unblock if element posts an error
  • 615820 : implement percentage position and duration queries
  • 616586 : Use GObject's boxed type for GError
  • 617223 : [tags] Add tags for direction of capture and movement
  • 617625 : Commandline utility wrappers (gst-run) don't work on Windows
  • 618644 : gst_pad_get_caps() Return pad template if parent element is in GST_STATE_NULL
  • 619508 : [tag] Add image orientation tag
  • 619815 : GST_PLUGIN_LOADING_WHITELIST env var for unit tests
  • 619828 : [API] adapter: add masked_scan_uint32_peek
  • 620460 : info: add new TRACE log level and move refcounting there from LOG level
  • 620490 : [basesink] segment query unconditionally returns FALSE
  • 621006 : Deprecate unused gst_object_{get|set}_name_prefix()
  • 621282 : Display of short fourccs is in hex instead of text
  • 621332 : BaseTransform should disable proxy alloc if downstream changes caps
  • 621334 : GstBaseTransform should not require a transform_size function
  • 621505 : Disable memory poisoning by default for releases
  • 621527 : gstcaps: New gst_caps_steal_structure() method
  • 621530 : filesink ignores sync=true
  • 621595 : --quiet doesnt make gst-launch be completely quiet, also messages should not go to stdout
  • 621773 : Add introspection annotations
  • 621867 : gst-launch: rename new --no-play command line option
  • 621896 : [API][taglist] Add gst_tag_list_peek_string_index
  • 622504 : [GstPad] Provide more fine-grained linking methods
  • 622546 : distcheck fails in docs/plugins/
  • 622685 : [GstXml] Deprecate GstXml
  • 622967 : [queue2] Problems with progressive downloading
  • 623301 : gst_caps_normalize : doesn't normalize completely
  • 623589 : Fix races/refcounting bugs with slave clocks
  • 624113 : [tags] wrong behaviour in merge function for strings
  • 622025 : Can't build gstreamer due to Gst-0.10.gir: error: Can't resolve type 'PadIntLinkFunction' for field Gst.Pad.intlinkfunc

API changes

  • API additions
    • gst_caps_steal_structure()
    • gst_clock_id_wait_async_full()
    • gst_element_link_pads_full()
    • GstPadLinkCheck
    • gst_pad_link_check_get_type()
    • gst_pad_link_full()
    • gst_structure_fixate_field_string()
    • gst_tag_list_peek_string_index()
    • gst_adapter_masked_scan_uint32_peek
    • GstBaseSink::enable-last-buffer
    • gst_base_sink_is_last_buffer_enabled()
    • gst_base_sink_set_last_buffer_enabled()
    • GstBaseTransform::accept_caps()
  • API deprecations
    • gst_object_get_name_prefix()
    • gst_object_set_name_prefix()
    • gst_caps_load_thyself()
    • gst_caps_save_thyself()
    • gst_class_signal_emit_by_name()
    • gst_object_save_thyself()
    • gst_object_restore_thyself()
    • gst_pad_load_and_link()
    • gst_xml_get_element()
    • gst_xml_get_topelements()
    • gst_xml_get_type()
    • gst_xml_make_element()
    • gst_xml_new()
    • gst_xml_parse_doc()
    • gst_xml_parse_file()
    • gst_xml_parse_memory()
    • gst_xml_write()
    • gst_xml_write_file()


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 .


The project's website is

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

Find us on IRC at #gstreamer.


Git is hosted on 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 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

  • Alessandro Decina
  • Alexander Saprykin
  • Benjamin Gaignard
  • Benjamin Otte
  • David Schleef
  • Eduardo Dobay
  • Edward Hervey
  • Johan Dahlin
  • Mark Nauwelaerts
  • Martin Bisson
  • Olivier Crête
  • Philippe Normand
  • Sebastian Dröge
  • Stefan Kost
  • Thiago Santos
  • Tim-Philipp Müller
  • Tristan Matthews
  • Wim Taymans
  • Zaheer Abbas Merali
  • Руслан Ижбулатов

Report a problem on this page.