GStreamer is a library that allows the construction of graphs of media-handling components, ranging from simple Ogg/Vorbis playback to complex audio (mixing) and video (non-linear editing) processing.
Applications can take advantage of advances in codec and filter technology transparently. Developers can add new codecs and filters by writing a simple plugin with a clean, generic interface.
GStreamer is released under the LGPL.
Product's homepage
Here are some key features of "GStreamer":
Multiplatform:
· GStreamer has been ported to a wide range of operating systems, processors and compilers. This include but are not limited to Linux on i86,PPC, ARM using GCC. Solaris on x86 and SPARC using both GCC and Forte, MacOSX, Microsoft Windows using MS Visual Developer and IBM OS/400.
Comprehensive Core Library:
· Graph-based structure allows arbitrary pipeline construction
· Based on GLib 2.0 object model for object-oriented design and inheritance
· Small core library of less than 150KB, about 10 K lines of code
· Pluggable scheduling system capable of dealing with most pipeline structures
· Multi-threaded pipelines are trivial and transparent to construct
· Clean and simple API for both plugin and application developers
· Extremely lightweight data passing means very high performance/low latency
· Complete debugging system for both core and plugin/app developers
· Clocking to ensure global inter-stream synchronization
Intelligent Plugin Architecture:
· Dynamically loaded plugins provide elements and media types, demand-loaded via an XML registry, similar to ld.so.cache
· Element interface handles all known types of sources, filters, sinks
· Capabilities system allows verification of element compatibility using MIME types and media-specific properties
· Autoplugging uses capabilities system to complete complex paths automatically
· Pipelines can be saved to XML and loaded back to working state
· Resource friendly plugins don't waste RAM
Extensive Development Tools:
· Graphical editor allows pipelines to be built quickly, run, and saved as XML
· gst-launch command-line tool enables even quicker prototyping and testing, similar to ecasound
· All tools written as libraries to allow easy reuse
· A lot of documentation, including partially completed manual and plugin writer's guide
· Large selection of test programs and example code
· Access to GStreamer API with various programming language
What's New in This Release: [ read full changelog ]
· bin: add "message-forward" property to force forwarding of messages that would usually be filtered such as ASYNC_DONE or EOS
· bin: improve tracking of source elements for more efficient event dispatch
· bufferlist: add function to add a list of buffers
· clock: fix racy shutdown clock id leak
· element: add support for arbitrary element class / factory details
· element: link_many should activate pads if needed
· gst: add math-compat.h header
· datetime: add GstDateTime API
· elementfactory: add utility functions to filter features by type
· plugin: load the gst-python plugin loader with G_MODULE_BIND_LAZY
· query: add buffering ranges API to retrieve informations about the areas of the stream currently buffered
· value: add int64 range type
· info: write debugging output to file if GST_DEBUG_FILE environment variable is set
· pad: use more efficient g_object_notify_by_pspec() for caps notifies if compiling against new-enough GLib
· pipeline: If the currently used clock gets lost update it the next time when going from PAUSED to playing
· plugin: add release datetime field to GstPluginDesc and set it if GST_PACKAGE_RELEASE_DATETIME is defined
· utils: speed up pad linking utility functions by not trying pads that will never work
· adapter: add function to get a list of buffers; support 0-sized buffers
· adapter: optimize gst_adapter_take() and gst_adapter_peek() a little
· basesink: only answer the SEGMENT query in pull mode
· basesrc: return values in stream time for the POSITION query
· basetransform: allow the subclass to add new fields to caps when getting new caps from downstream
· basetransform: avoid useless memcpy
· basetransform: upstream caps-renegotiation fixes
· bitreader: add inlined and unchecked versions of the most important functions
· bytewriter: add inline and unchecked variants of all important functions
· bytewriter: fix possible infinite loop caused by an overflow
· queue: add "silent" property to suppress signal emission (for better performance)
· queue: avoid unnecessary g_cond_signal() (for better performance)
· queue: push newsegment event when linking in PLAYING
· queue2: extend ring buffer to support RAM mode
· queue2: in download mode, prevent range corruption due to race
· queue2: don't send seeks beyond the end of the file upstream in pull mode (fixes apple trailers and youtube/html5 playback in webkit)
· multiqueue: flush the data queue if downstream return WRONG_STATE too
· gst-inspect: print GST_PARAM_MUTABLE_property flags
Bugs fixed since 0.10.30:
· 396774 : Make GstElementDetails extensible
· 482147 : [queue] Issue with current time level if source task is not started
· 579127 : gst-launch: disable CLOCK_LOST message handling
· 594504 : Need a GType of " Date AND Time AND Timezone "
· 600004 : underrun signal emits when i tested queue overrun test case from file /gstreamerXXXX/tests/check/element/queue.c
· 610366 : [gstcollectpads][doc] Add a reminder for 'data' doc
· 611918 : leaky queue might not push newsegment event
· 618919 : Registry/Plugin Loading Memory Leak
· 619522 : basetransform fix for upstream caps-renegotiation
· 621299 : make simple queues faster
· 621332 : BaseTransform should disable proxy alloc if downstream changes caps
· 622740 : GstPad: Do not call gst_pad_accept_caps() when caps change
· 623040 : Add release_datetime field to GstPluginDesc
· 623121 : [queue2] downloaded areas of the media are not exposed
· 623491 : make *_get_type() thread safe
· 623541 : [basetransform] Implement POSITION query
· 623622 : [basesink/basesrc] Should return values in stream time for POSITION query
· 623806 : [pipeline] Doesn't update the clock if the currently used one gets lost and the start time did not change
· 623875 : gstregistrybinary.c compatibility with glib > = 2.25.0
· 624203 : gstutils: Make gst_pad_proxy_getcaps() return empty caps if it's what the other side has
· 625239 : FTBFS: ./gstreamer-decl.txt:9461: warning: GstTagList has multiple definitions.
· 625295 : [info] regression: doesn't flush output stream after every debug print any longer
· 625368 : gstdatetime.c doesn't compile in VS 2008
· 625862 : [docs] unused symbol GST_CAT_LEVEL_LOG_valist breaks the build
· 626027 : [tag] Add GST_TAG_APPLICATION_NAME
· 626181 : GstElementFactory: add listing/filtering API
· 626651 : [tag] Photography/capture settings tags
· 626784 : element: link_many might assert elements are in paused or playing
· 627438 : gst: Add a gst_is_initialized() API
· 627826 : GstInt64Range type
· 627910 : Warnings emitted when -Wcast-qual used
· 627959 : [queue2] on-disk buffering failing for AVI container
· 628014 : Deprecate GST_FLOW_IS_FATAL/GST_FLOW_IS_SUCCESS
· 628174 : New gstvalue checks cause trouble in thoggen
· 628176 : [basetransform] Problems with buffer handling in inplace mode
· 628408 : Use GDateTime that has been released
· 629241 : Build broken with introspection using gobject-introspection from master
· 629410 : GstBaseTransform: position query refers to sink pad, not source pad
· 629494 : Latest gst-launch.c doesn't build in Visual Studio 2008
· 629553 : GstAdapter: timestamp not updated when empty buffer is pushed
· 629831 : [API] add gst_structure_take_value() and gst_structure_id_take_value()
· 629946 : Enumerations have incorrect names of enum values (GEnumValue.value_name)
· 630257 : GST_DEBUG_DUMP_DOT_DIR not working anymore
· 630436 : basesink: renderdelay needs to be subtracted in adjust_time()
· 630437 : basetransform: Make a WARNING into a DEBUG statement
· 630439 : clock: fix racy shutdown clock id leak
· 631755 : Fix build with glib 2.21.3
· 631853 : [queue2] deadlock when using temp-location and dispatch-properties
· 632236 : [gst-inspect] unhelpful uri handler output
· 632433 : [basesink] hangs/drops going to PLAYING following flushing step in PAUSED
· 632977 : [queue2] qtdemux causes soup to request seeks past the end of the range
· 633147 : Simple reverse negotiation pipeline is broken.
· 633886 : Visual Studio emits warnings about double defined _USE_MATH_DEFINES
· 635031 : [datetime] Fix unix epoch handling
· 635389 : Include information on exported packages in GIRs
· 635869 : GST_BOILERPLATE_FULL causes warnings in user C++ code
· 633176 : recent multiqueue changes break DVD playback
API additions since 0.10.30:
· gst_is_initialized
· gst_buffer_list_iterator_add_list
· GstBin:message-forward
· GST_TYPE_DATE_TIME
· gst_date_time_get_day
· gst_date_time_get_hour
· gst_date_time_get_microsecond
· gst_date_time_get_minute
· gst_date_time_get_month
· gst_date_time_get_second
· gst_date_time_get_time_zone_offset
· gst_date_time_get_type
· gst_date_time_get_year
· gst_date_time_new
· gst_date_time_new_from_unix_epoch_local_time
· gst_date_time_new_from_unix_epoch_utc
· gst_date_time_new_local_time
· gst_date_time_new_now_local_time
· gst_date_time_new_now_utc
· gst_date_time_ref
· gst_date_time_unref
· gst_tag_list_get_date_time
· gst_tag_list_get_date_time_index
· GST_TAG_GEO_LOCATION_HORIZONTAL_ERROR
· GST_TAG_APPLICATION_DATA
· GST_TAG_APPLICATION_NAME
· GST_TAG_DATE_TIME
· GST_ELEMENT_IS_SOURCE
· gst_element_class_set_documentation_uri
· gst_element_class_set_icon_name
· gst_element_factory_get_documentation_uri
· gst_element_factory_get_icon_name
· gst_element_factory_list_filter
· gst_element_factory_list_get_elements
· gst_element_factory_list_is_type
· GstElementFactoryListType
· GST_ELEMENT_FACTORY_TYPE_ANY
· GST_ELEMENT_FACTORY_TYPE_AUDIOVIDEO_SINKS
· GST_ELEMENT_FACTORY_TYPE_AUDIO_ENCODER
· GST_ELEMENT_FACTORY_TYPE_DECODABLE
· GST_ELEMENT_FACTORY_TYPE_DECODER
· GST_ELEMENT_FACTORY_TYPE_DEMUXER
· GST_ELEMENT_FACTORY_TYPE_DEPAYLOADER
· GST_ELEMENT_FACTORY_TYPE_ENCODER
· GST_ELEMENT_FACTORY_TYPE_FORMATTER
· GST_ELEMENT_FACTORY_TYPE_MAX_ELEMENTS
· GST_ELEMENT_FACTORY_TYPE_MEDIA_AUDIO
· GST_ELEMENT_FACTORY_TYPE_MEDIA_IMAGE
· GST_ELEMENT_FACTORY_TYPE_MEDIA_METADATA
· GST_ELEMENT_FACTORY_TYPE_MEDIA_SUBTITLE
· GST_ELEMENT_FACTORY_TYPE_MEDIA_VIDEO
· GST_ELEMENT_FACTORY_TYPE_MEDIA_ANY
· GST_ELEMENT_FACTORY_TYPE_MUXER
· GST_ELEMENT_FACTORY_TYPE_PARSER
· GST_ELEMENT_FACTORY_TYPE_PAYLOADER
· GST_ELEMENT_FACTORY_TYPE_SINK
· GST_ELEMENT_FACTORY_TYPE_SRC
· GST_ELEMENT_FACTORY_TYPE_VIDEO_ENCODER
· GST_ELEMENT_FACTORY_KLASS_DECODER
· GST_ELEMENT_FACTORY_KLASS_ENCODER
· GST_ELEMENT_FACTORY_KLASS_SINK
· GST_ELEMENT_FACTORY_KLASS_SRC
· GST_ELEMENT_FACTORY_KLASS_MUXER
· GST_ELEMENT_FACTORY_KLASS_DEMUXER
· GST_ELEMENT_FACTORY_KLASS_PARSER
· GST_ELEMENT_FACTORY_KLASS_PAYLOADER
· GST_ELEMENT_FACTORY_KLASS_DEPAYLOADER
· GST_ELEMENT_FACTORY_KLASS_FORMATTER
· GST_ELEMENT_FACTORY_KLASS_MEDIA_VIDEO
· GST_ELEMENT_FACTORY_KLASS_MEDIA_AUDIO
· GST_ELEMENT_FACTORY_KLASS_MEDIA_IMAGE
· GST_ELEMENT_FACTORY_KLASS_MEDIA_SUBTITLE
· GST_ELEMENT_FACTORY_KLASS_MEDIA_METADATA
· gst_plugin_feature_list_debug
· gst_plugin_feature_rank_compare_func
· gst_query_add_buffering_range
· gst_query_get_n_buffering_ranges
· gst_query_parse_nth_buffering_range
· gst_structure_get_date_time
· gst_structure_id_take_value
· gst_structure_take_value
· GST_TYPE_INT64_RANGE
· gst_int64_range_get_type
· gst_util_fraction_compare
· gst_value_get_int64_range_max
· gst_value_get_int64_range_min
· gst_value_set_int64_range
· GST_VALUE_HOLDS_DATE_TIME
· gst_adapter_take_list
· gst_bit_reader_skip_unchecked
· gst_bit_reader_skip_to_byte_unchecked
· gst_bit_reader_get_bits_uint16_unchecked
· gst_bit_reader_get_bits_uint32_unchecked
· gst_bit_reader_get_bits_uint64_unchecked
· gst_bit_reader_get_bits_uint8_unchecked
· gst_bit_reader_peek_bits_uint16_unchecked
· gst_bit_reader_peek_bits_uint32_unchecked
· gst_bit_reader_peek_bits_uint64_unchecked
· gst_bit_reader_peek_bits_uint8_unchecked
· gst_byte_writer_put_int8_unchecked
· gst_byte_writer_put_int16_be_unchecked
· gst_byte_writer_put_int16_le_unchecked
· gst_byte_writer_put_int24_be_unchecked
· gst_byte_writer_put_int32_be_unchecked
· gst_byte_writer_put_int32_le_unchecked
· gst_byte_writer_put_int64_be_unchecked
· gst_byte_writer_put_int64_le_unchecked
· gst_byte_writer_put_uint8_unchecked
· gst_byte_writer_put_uint16_be_unchecked
· gst_byte_writer_put_uint16_le_unchecked
· gst_byte_writer_put_uint24_be_unchecked
· gst_byte_writer_put_uint24_le_unchecked
· gst_byte_writer_put_uint32_be_unchecked
· gst_byte_writer_put_uint32_le_unchecked
· gst_byte_writer_put_uint64_be_unchecked
· gst_byte_writer_put_uint64_le_unchecked
· gst_byte_writer_put_float32_be_unchecked
· gst_byte_writer_put_float32_le_unchecked
· gst_byte_writer_put_float64_be_unchecked
· gst_byte_writer_put_float64_le_unchecked
· gst_byte_writer_put_data_unchecked
· gst_byte_writer_fill_unchecked
API deprecated since 0.10.30:
· GST_FLOW_IS_FATAL
· GST_FLOW_IS_SUCCESS