GStreamer Changelog

What's new in GStreamer 1.16.0

Apr 23, 2019
  • GStreamer WebRTC stack gained support for data channels for peer-to-peer communication based on SCTP, BUNDLE support, as well as support for multiple TURN servers.
  • AV1 video codec support for Matroska and QuickTime/MP4 containers and more configuration options and supported input formats for the AOMedia AV1 encoder
  • Support for Closed Captions and other Ancillary Data in video
  • Support for planar (non-interleaved) raw audio
  • GstVideoAggregator, compositor and OpenGL mixer elements are now in -base
  • New alternate fields interlace mode where each buffer carries a single field
  • WebM and Matroska ContentEncryption support in the Matroska demuxer
  • new WebKit WPE-based web browser source element
  • Video4Linux: HEVC encoding and decoding, JPEG encoding, and improved dmabuf import/export
  • Hardware-accelerated Nvidia video decoder gained support for VP8/VP9 decoding, whilst the encoder gained support for H.265/HEVC encoding.
  • Many improvements to the Intel Media SDK based hardware-accelerated video decoder and encoder plugin (msdk): dmabuf import/export for zero-copy integration with other components; VP9 decoding; 10-bit HEVC encoding; video post-processing (vpp) support including deinterlacing; and the video decoder now handles dynamic resolution changes.
  • The ASS/SSA subtitle overlay renderer can now handle multiple subtitles that overlap in time and will show them on screen simultaneously
  • The Meson build is now feature-complete (with the exception of plugin docs) and it is now the recommended build system on all platforms. The Autotools build is scheduled to be removed in the next cycle.
  • The GStreamer Rust bindings and Rust plugins module are now officially part of upstream GStreamer.
  • The GStreamer Editing Services gained a gesdemux element that allows directly playing back serialized edit list with playbin or (uri)decodebin
  • Many performance improvements

New in GStreamer 1.14.1 (May 18, 2018)

  • Bugfix release.

New in GStreamer 1.14.0 (Mar 20, 2018)

  • WebRTC support: real-time audio/video streaming to and from web browsers
  • Experimental support for the next-gen royalty-free AV1 video codec
  • Video4Linux: encoding support, stable element names and faster device probing
  • Support for the Secure Reliable Transport (SRT) video streaming protocol
  • RTP Forward Error Correction (FEC) support (ULPFEC)
  • RTSP 2.0 support in rtspsrc and gst-rtsp-server
  • ONVIF audio backchannel support in gst-rtsp-server and rtspsrc
  • playbin3 gapless playback and pre-buffering support
  • tee, our stream splitter/duplication element, now does allocation query aggregation which is important for efficient data handling and zero-copy
  • QuickTime muxer has a new prefill recording mode that allows file import in Adobe Premiere and FinalCut Pro while the file is still being written.
  • rtpjitterbuffer fast-start mode and timestamp offset adjustment smoothing
  • souphttpsrc connection sharing, which allows for connection reuse, cookie sharing, etc.
  • nvdec: new plugin for hardware-accelerated video decoding using the NVIDIA NVDEC API
  • Adaptive DASH trick play support
  • ipcpipeline: new plugin that allows splitting a pipeline across multiple processes
  • Major gobject-introspection annotation improvements for large parts of the library API
  • GStreamer C# bindings have been revived and seen many updates and fixes
  • The externally maintained GStreamer Rust bindings had many usability improvements and cover most of the API now. Coinciding with the 1.14 release, a new release with the 1.14 API additions is happening.

New in GStreamer 1.12.0 (May 4, 2017)

  • Highlights:
  • new msdk plugin for Intel's Media SDK for hardware-accelerated video encoding and decoding on Intel graphics hardware on Windows or Linux.
  • x264enc can now use multiple x264 library versions compiled for different bit depths at runtime, to transparently provide support for multiple bit depths.
  • videoscale and videoconvert now support multi-threaded scaling and conversion, which is particularly useful with higher resolution video.
  • h264parse will now automatically insert AU delimiters if needed when outputting byte-stream format, which improves standard compliance and is needed in particular for HLS playback on iOS/macOS.
  • rtpbin has acquired bundle support for incoming streams
  • Major new features and changes:
  • Noteworthy new API:
  • The video library gained support for a number of new video formats:GBR_12LE, GBR_12BE, GBRA_12LE, GBRA_12BE (planar 4:4:4 RGB/RGBA, 12 bits per channel)GBRA_10LE, GBRA_10BE (planar 4:4:4:4 RGBA, 10 bits per channel)GBRA (planar 4:4:4:4 ARGB, 8 bits per channel)I420_12BE, I420_12LE (planar 4:2:0 YUV, 12 bits per channel)I422_12BE,I422_12LE (planar 4:2:2 YUV, 12 bits per channel)Y444_12BE, Y444_12LE (planar 4:4:4 YUV, 12 bits per channel)VYUY (another packed 4:2:2 YUV format)
  • The high-level GstPlayer API was extended with functions for taking video snapshots and enabling accurate seeking. It can optionally also use the still-experimental playbin3 element now.
  • New Elements:
  • msdk: new plugin for Intel's Media SDK for hardware-accelerated video encoding and decoding on Intel graphics hardware on Windows or Linux. This includes an H.264 encoder/decoder (msdkh264dec, msdkh264enc), an H.265 encoder/decoder (msdkh265dec, msdkh265enc), an MJPEG encoder/encoder (msdkmjpegdec, msdkmjpegenc), an MPEG-2 video encoder (msdkmpeg2enc) and a VP8 encoder (msdkvp8enc).
  • iqa is a new Image Quality Assessment plugin based on DSSIM, similar to the old (unported) videomeasure element.
  • The faceoverlay element, which allows you to overlay SVG graphics over a detected face in a video stream, has been ported from 0.10.
  • our ffmpeg wrapper plugin now exposes/maps the ffmpeg Opus audio decoder (avdec_opus) as well as the GoPro CineForm HD / CFHD decoder (avdec_cfhd), and also a parser/writer for the IVF format (avdemux_ivf and avmux_ivf).
  • audiobuffersplit is a new element that splits raw audio buffers into equal-sized buffers
  • audiomixmatrix is a new element that mixes N:M audio channels according to a configured mix matrix.
  • The timecodewait element got renamed to avwait and can operate in different modes now.
  • The opencv video processing plugin has gained a new dewarp element that dewarps fisheye images.
  • ttml is a new plugin for parsing and rendering subtitles in Timed Text Markup Language (TTML) format. For the time being these elements will not be autoplugged during media playback however, unless the GST_TTML_AUTOPLUG=1 environment variable is set. Only the EBU-TT-D profile is supported at this point.
  • New element features and additions:
  • x264enc can now use multiple x264 library versions compiled for different bit depths at runtime, to transparently provide support for multiple bit depths. A new configure parameter --with-x264-libraries has been added to specify additional paths to look for additional x264 libraries to load. Background is that the libx264 library is always compile for one specific bit depth and the x264enc element would simply support the depth supported by the underlying library. Now we can support multiple depths.
  • x264enc also picks up the interlacing mode automatically from the input caps now and passed interlacing/TFF information correctly to the library.
  • videoscale and videoconvert now support multi-threaded scaling and conversion, which is particularly useful with higher resolution video. This has to be enabled explicitly via the "n-threads" property.
  • videorate's new "rate" property lets you set a speed factor on the output stream
  • splitmuxsink's buffer collection and scheduling was rewritten to make processing and splitting deterministic; before it was possible for a buffer to end up in a different file chunk in different runs. splitmuxsink also gained a new "format-location-full" signal that works just like the existing "format-location" signal only that it is also passed the primary stream's first buffer as argument, so that it is possible to construct the file name based on metadata such as the buffer timestamp or any GstMeta attached to the buffer. The new "max-size-timecode" property allows for timecode-based splitting. splitmuxsink will now also automatically start a new file if the input caps change in an incompatible way.
  • fakesink has a new "drop-out-of-segment" property to not drop out-of-segment buffers, which is useful for debugging purposes.
  • identity gained a "ts-offset" property.
  • both fakesink and identity now also print what kind of metas are attached to buffers when printing buffer details via the "last-message" property used by gst-launch-1.0 -v.
  • multiqueue: made "min-interleave-time" a configurable property.
  • video nerds will be thrilled to know that videotestsrc's snow is now deterministic. videotestsrc also gained some new properties to make the ball pattern based on system time, and invert colours each second ("animation-mode", "motion", and "flip" properties).
  • oggdemux reverse playback should work again now. You're welcome.
  • playbin3 and urisourcebin now have buffering enabled by default, and buffering message aggregation was fixed.
  • tcpclientsrc now has a "timeout" property
  • appsink has gained support for buffer lists. For backwards compatibility reasons users need to enable this explicitly with gst_app_sink_set_buffer_list_support(), however. Once activated, a pulled GstSample can contain either a buffer list or a single buffer.
  • splitmuxsrc reverse playback was fixed and handling of sparse streams, such as subtitle tracks or metadata tracks, was improved.
  • matroskamux has acquired support for muxing G722 audio; it also marks all buffers as keyframes now when streaming only audio, so that tcpserversink will behave properly with audio-only streams.
  • qtmux gained support for ProRes 4444 XQ, HEVC/H.265 and CineForm (GoPro) formats, and generally writes more video stream-related metadata into the track headers. It is also allows configuration of the maximum interleave size in bytes and time now. For fragmented mp4 we always write the tfdt atom now as required by the DASH spec.
  • qtdemux supports FLAC, xvid, mp2, S16L and CineForm (GoPro) tracks now, and generally tries harder to extract more video-related information from track headers, such as colorimetry or interlacing details. It also received a couple of fixes for the scenario where upstream operates in TIME format and feeds chunks to qtdemux (e.g. DASH or MSE).
  • audioecho has two new properties to apply a delay only to certain channels to create a surround effect, rather than an echo on all channels. This is useful when upmixing from stereo, for example. The "surround-delay" property enables this, and the "surround-mask" property controls which channels are considered surround sound channels in this case.
  • webrtcdsp gained various new properties for gain control and also exposes voice activity detection now, in which case it will post "voice-activity" messages on the bus whenever the voice detection status changes.
  • The decklink capture elements for Blackmagic Decklink cards have seen a number of improvements:
  • decklinkvideosrc will post a warning message on "no signal" and an info message when the signal lock has been (re)acquired. There is also a new read-only "signal" property that can be used to query the signal lock status. The GAP flag will be set on buffers that are captured without a signal lock. The new drop-no-signal-frames will make decklinkvideosrc drop all buffers that have been captured without an input signal. The "skip-first-time" property will make the source drop the first few buffers, which is handy since some devices will at first output buffers with the wrong resolution before they manage to figure out the right input format and decide on the actual output caps.
  • decklinkaudiosrc supports more than just 2 audio channels now.
  • The capture sources no longer use the "hardware" timestamps which turn out to be useless and instead just use the pipeline clock directly.
  • srtpdec now also has a readonly "stats" property, just like srtpenc.
  • rtpbin gained RTP bundle support, as used by e.g. WebRTC. The first rtpsession will have a rtpssrcdemux element inside splitting the streams based on their SSRC and potentially dispatch to a different rtpsession. Because retransmission SSRCs need to be merged with the corresponding media stream the ::on-bundled-ssrc signal is emitted on rtpbin so that the application can find out to which session the SSRC belongs.
  • rtprtxqueue gained two new properties exposing retransmission statistics ("requests" and "fulfilled-requests")
  • kmssink will now use the preferred mode for the monitor and render to the base plane if nothing else has set a mode yet. This can also be done forcibly in any case via the new "force-modesetting" property. Furthermore, kmssink now allows only the supported connector resolutions as input caps in order to avoid scaling or positioning of the input stream, as kmssink can't know whether scaling or positioning would be more appropriate for the use case at hand.
  • waylandsink can now take DMAbuf buffers as input in the presence of a compatible Wayland compositor. This enables zero-copy transfer from a decoder or source that outputs DMAbuf. It will also set surface opacity hint to allow better rendering optimization in the compositor.
  • udpsrc can be bound to more than one interface when joining a multicast group, this is done by giving a comma separate list of interfaces such as multicast-iface="eth0,eth1".
  • Plugin moves:
  • dataurisrc moved from gst-plugins-bad to core
  • The rawparse plugin containing the rawaudioparse and rawvideoparse elements moved from gst-plugins-bad to gst-plugins-base. These elements supersede the old videoparse and audioparse elements. They work the same, with just some minor API changes. The old legacy elements still exist in gst-plugins-bad, but may be removed at some point in the future.
  • timecodestamper is an element that attaches time codes to video buffers in form of GstVideoTimeCodeMetas. It had a "clock-source" property which has now been removed because it was fairly useless in practice. It gained some new properties however: the "first-timecode" property can be used to set the inital timecode; alternatively "first-timecode-to-now" can be set, and then the current system time at the time the first buffer arrives is used as base time for the time codes.
  • Plugin removals:
  • The mad mp1/mp2/mp3 decoder plugin was removed from gst-plugins-ugly, as libmad is GPL licensed, has been unmaintained for a very long time, and there are better alternatives available. Use the mpg123audiodec element from the mpg123 plugin in gst-plugins-ugly instead, or avdec_mp3 from the gst-libav module which wraps the ffmpeg library. We expect that we will be able to move mp3 decoding to gst-plugins-good in the next cycle seeing that most patents around mp3 have expired recently or are about to expire.
  • The mimic plugin was removed from gst-plugins-bad. It contained a decoder and encoder for a video codec used by MSN messenger many many years ago (in a galaxy far far away). The underlying library is unmaintained and no one really needs to use this codec any more. Recorded videos can still be played back with the MIMIC decoder in gst-libav.
  • Miscellaneous API additions:
  • Request pad name templates passed to gst_element_request_pad() may now contain multiple specifiers, such as e.g. src_%u_%u.
  • gst_buffer_iterate_meta_filtered() is a variant of gst_buffer_iterate_meta() that only returns metas of the requested type and skips all other metas.
  • gst_pad_task_get_state() gets the current state of a task in a thread-safe way.
  • gst_uri_get_media_fragment_table() provides the media fragments of an URI as a table of key=value pairs.
  • gst_print(), gst_println(), gst_printerr(), and gst_printerrln() can be used to print to stdout or stderr. These functions are similar to g_print() and g_printerr() but they also support all the additional format specifiers provided by the GStreamer logging system, such as e.g. GST_PTR_FORMAT.
  • a GstParamSpecArray has been added, for elements who want to have array type properties, such as the audiomixmatrix element for example. There are also two new functions to set and get properties of this type from bindings:gst_util_set_object_array()gst_util_get_object_array()
  • various helper functions have been added to make it easier to set or get GstStructure fields containing caps-style array or list fields from language bindings (which usually support GValueArray but don't know about the GStreamer specific fundamental types):gst_structure_get_array()gst_structure_set_array()gst_structure_get_list()gst_structure_set_list()
  • a new 'dynamic type' registry factory type was added to register dynamically loadable GType types. This is useful for automatically loading enum/flags types that are used in caps, such as for example the GstVideoMultiviewFlagsSet type used in multiview video caps.
  • there is a new GstProxyControlBinding for use with GstController. This allows proxying the control interface from one property on one GstObject to another property (of the same type) in another GstObject. So e.g. in parent-child relationship, one may need to call gst_object_sync_values() on the child and have a binding (set elsewhere) on the parent update the value. This is used in glvideomixer and glsinkbin for example, where sync_values() on the child pad or element will call sync_values() on the exposed bin pad or element.
  • Note that this doesn't solve GObject property forwarding, that must be taken care of by the implementation manually or using GBinding.
  • gst_base_parse_drain() has been made public for subclasses to use.
  • `gst_base_sink_set_drop_out_of_segment()' can be used by subclasses to prevent GstBaseSink from dropping buffers that fall outside of the segment.
  • gst_calculate_linear_regression() is a new utility function to calculate a linear regression.
  • gst_debug_get_stack_trace is an easy way to retrieve a stack trace, which can be useful in tracer plugins.
  • allocators: the dmabuf allocator is now sub-classable, and there is a new GST_CAPS_FEATURE_MEMORY_DMABUF define.
  • video decoder subclasses can use the newly-added function gst_video_decoder_allocate_output_frame_with_params() to pass a GstBufferPoolAcquireParams to the buffer pool for each buffer allocation.
  • the video time code API has gained a dedicated GstVideoTimeCodeInterval type plus related API, including functions to add intervals to timecodes.
  • There is a new libgstbadallocators-1.0 library in gst-plugins-bad, which may go away again in future releases once the GstPhysMemoryAllocator interface API has been validated by more users and was moved to libgstallocators-1.0 from gst-plugins-base.
  • GstPlayer:
  • New API has been added to:
  • get the number of audio/video/subtitle streams:gst_player_media_info_get_number_of_streams()gst_player_media_info_get_number_of_video_streams()gst_player_media_info_get_number_of_audio_streams()gst_player_media_info_get_number_of_subtitle_streams()
  • enable accurate seeking: gst_player_config_set_seek_accurate() and gst_player_config_get_seek_accurate()
  • get a snapshot image of the video in RGBx, BGRx, JPEG, PNG or native format: gst_player_get_video_snapshot()
  • selecting use of a specific video sink element (gst_player_video_overlay_video_renderer_new_with_sink())
  • If the environment variable GST_PLAYER_USE_PLAYBIN3 is set, GstPlayer will use the still-experimental playbin3 element and the GstStreams API for playback.
  • Miscellaneous changes:
  • video caps for interlaced video may contain an optional "field-order" field now in the case of interlaced-mode=interleaved to signal that the field order is always the same throughout the stream. This is useful to signal to muxers such as mp4mux. The new field is parsed from/to GstVideoInfo of course.
  • video decoder and video encoder base classes try harder to proxy interlacing, colorimetry and chroma-site related fields in caps properly.
  • The buffer stored in the PROTECTION events is now left unchanged. This is a change of behaviour since 1.8, especially for the mssdemux element which used to decode the base64 parsed data wrapped in the protection events emitted by the demuxer.
  • PROTECTION events can now be injected into the pipeline from the application; source elements deriving from GstBaseSrc will forward those downstream now.
  • The DASH demuxer is now correctly parsing the MSPR-2.0 ContentProtection nodes and emits Protection events accordingly. Applications relying on those events might need to decode the base64 data stored in the event buffer before using it.
  • The registry can now also be disabled by setting the environment variable GST_REGISTRY_DISABLE=yes, with similar effect as the GST_DISABLE_REGISTRY compile time switch.
  • Seeking performance with gstreamer-vaapi based decoders was improved. It would recreate the decoder and surfaces on every seek which can be quite slow.
  • more robust handling of input caps changes in videoaggregator-based elements such as compositor.
  • Lots of adaptive streaming-related fixes across the board (DASH, MSS, HLS). Also:
  • mssdemux, the Microsoft Smooth Streaming demuxer, has seen various fixes for live streams, duration reporting and seeking.
  • The DASH manifest parser now extracts MS PlayReady ContentProtection objects from manifests and sends them downstream as PROTECTION events. It also supports multiple Period elements in external xml now.
  • gst-libav was updated to ffmpeg 3.3 but should still work with any 3.x version.
  • GstEncodingProfile has been generally enhanced so it can, for example, be used to get possible profiles for a given file extension. It is now possible to define profiles based on element factory names or using a path to a .gep file containing a serialized profile.
  • audioconvert can now do endianness conversion in-place. All other conversions still require a copy, but e.g. sign conversion and a few others could also be implemented in-place now.
  • The new, experimental playbin3 and urisourcebin elements got many bugfixes and improvements and should generally be closer to a full replacement of the old elements.
  • interleave now supports > 64 channels.
  • OpenCV elements, grabcut and retinex has been ported to use GstOpencvVideoFilter base class, increasing code reuse and fixing buffer map/unmap issues. Redundant copie of images has been removed in edgedetect, cvlaplace and cvsobel. This comes with various cleanup and Meson support.
  • OpenGL integration:
  • As usual the GStreamer OpenGL integration library has seen numerous fixes and performance improvements all over the place, and is hopefully ready now to become API stable and be moved to gst-plugins-base during the 1.14 release cycle.
  • The GStreamer OpenGL integration layer has also gained support for the Vivante EGL FB windowing system, which improves performance on platforms such as Freescale iMX.6 for those who are stuck with the proprietary driver. The qmlglsink element also supports this now if Qt is used with eglfs or wayland backend, and it works in conjunction with gstreamer-imx of course.
  • various qmlglsrc improvements
  • Tracing framework and debugging improvements:
  • New tracing hooks have been added to track GstMiniObject and GstObject ref/unref operations.
  • The memory leaks tracer can optionally use this to retrieve stack traces if enabled with e.g. GST_TRACERS=leaks(filters="GstEvent,GstMessage",stack-traces-flags=full)
  • The GST_DEBUG_FILE environment variable, which can be used to write the debug log output to a file instead of printing it to stderr, can now contain a name pattern, which is useful for automated testing and continuous integration systems. The following format specifiers are supported:%p: will be replaced with the PID%r: will be replaced with a random number, which is useful for instance when running two processes with the same PID but in different containers.
  • Tools:
  • gst-inspect-1.0 can now list elements by type with the new --types command-line option, e.g. gst-inspect-1.0 --types=Audio/Encoder will show a list of audio encoders.
  • gst-launch-1.0 and gst_parse_launch() have gained a new operator (:) that allows linking all pads between two elements. This is useful in cases where the exact number of pads or type of pads is not known beforehand, such as in the uridecodebin : encodebin scenario, for example. In this case, multiple links will be created if the encodebin has multiple profiles compatible with the output of uridecodebin.
  • gst-device-monitor-1.0 now shows a gst-launch-1.0 snippet for each device that shows how to make use of it in a gst-launch-1.0 pipeline string.
  • GStreamer RTSP server:
  • The RTSP server now also supports Digest authentication in addition to Basic authentication.
  • The GstRTSPClient class has gained a pre-*-request signal and virtual method for each client request type, emitted in the beginning of each rtsp request. These signals or virtual methods let the application validate the requests, configure the media/stream in a certain way and also generate error status codes in case of an error or a bad request.
  • GStreamer VAAPI:
  • GstVaapiDisplay now inherits from GstObject, thus the VA display logging messages are better and tracing the context sharing is more readable.
  • When uploading raw images into a VA surfaces now VADeriveImages are tried fist, improving the upload performance, if it is possible.
  • The decoders and the post-processor now can push dmabuf-based buffers to downstream under certain conditions. For example:
  • GST_GL_PLATFORM=egl gst-play-1.0 video-sample.mkv --videosink=glimagesink
  • Refactored the wrapping of VA surface into gstreamer memory, adding lock when mapping and unmapping, and many other fixes.
  • Now vaapidecodebin loads vaapipostproc dynamically. It is possible to avoid it usage with the environment variable GST_VAAPI_DISABLE_VPP=1.
  • Regarding encoders: they have primary rank again, since they can discover, in run-time, the color formats they can use for upstream raw buffers and caps renegotiation is now possible. Also the encoders push encoding info downstream via tags.
  • About specific encoders: added constant bit-rate encoding mode for VP8 and H265 encoder handles P010_10LE color format.
  • Regarding decoders, flush operation has been improved, now the internal VA encoder is not recreated at each flush. Also there are several improvements in the handling of H264 and H265 streams.
  • VAAPI plugins try to create their on GstGL context (when available) if they cannot find it in the pipeline, to figure out what type of VA Display they should create.
  • Regarding vaapisink for X11, if the backend reports that it is unable to render correctly the current color format, an internal VA post-processor, is instantiated (if available) and converts the color format.
  • GStreamer Editing Services and NLE
  • Enhanced auto transition behaviour
  • Fix some races in nlecomposition
  • Allow building with msvc:
  • Added a UNIX manpage for ges-launch
  • API changes:Added ges_deinit (allowing the leak tracer to work properly)Added ges_layer_get_clips_in_intervalFinally hide internal symbols that should never have been exposed
  • GStreamer validate:
  • Port gst-validate-launcher to python 3
  • gst-validate-launcher now checks if blacklisted bugs have been fixed on bugzilla and errors out if it is the case
  • Allow building with msvc
  • Add ability for the launcher to run GStreamer unit tests
  • Added a way to activate the leaks tracer on our tests and fix leaks
  • Make the http server multithreaded
  • New testsuite for running various test scenarios on the DASH-IF test vectors
  • GStreamer Python Bindings:
  • Overrides has been added for IntRange, Int64Range, DoubleRange, FractionRange, Array and List. This finally enables Python programmers to fully read and write GstCaps objects.
  • Build and Dependencies:
  • Meson build files are now disted in tarballs, for jhbuild and so distro packagers can start using it. Note that the Meson-based build system is not 100% feature-equivalent with the autotools-based one yet.
  • Some plugin filenames have been changed to match the plugin names: for example the file name of the encoding plugin in gst-plugins-base containing the encodebin element was libgstencodebin.so and has been changed to libgstencodebin.so. This affects only a handful of plugins across modules.
  • Developers who install GStreamer from source and just do make install after updating the source code, without doing make uninstall first, will have to manually remove the old installed plugin files from the installation prefix, or they will get 'Cannot register existing type' critical warnings.
  • Most of the docbook-based documentation (FAQ, Application Development Manual, Plugin Writer's Guide, design documents) has been converted to markdown and moved into a new gst-docs module. The gtk-doc library API references and the plugins documentation are still built as part of the source modules though.
  • GStreamer core now optionally uses libunwind and libdw to generate backtraces. This is useful for tracer plugins used during debugging and development.
  • There is a new libgstbadallocators-1.0 library in gst-plugins-bad (which may go away again in future releases once the GstPhysMemoryAllocator interface API has been validated by more users).
  • gst-omx and gstreamer-vaapi modules can now also be built using the Meson build system.
  • The qtkitvideosrc element for macOS was removed. The API is deprecated since 10.9 and it wasn't shipped in the binaries since a few releases.
  • Platform-specific improvements:
  • Android
  • androidmedia: add support for VP9 video decoding/encoding and Opus audio decoding (where supported)
  • OS/X and iOS:
  • avfvideosrc, which represents an iPhone camera or, on a Mac, a screencapture session, so far allowed you to select an input device by device index only. New API adds the ability to select the position (front or back facing) and device-type (wide angle, telephoto, etc.). Furthermore, you can now also specify the orientation (portrait, landscape, etc.) of the videostream.
  • Windows:
  • dx9screencapsrc can now optionally also capture the cursor.

New in GStreamer 1.10.0 (Nov 1, 2016)

  • Several convenience APIs have been added to make developers' lives easier
  • A new `GstStream` API provides applications a more meaningful view of the structure of streams, simplifying the process of dealing with media in complex container formats
  • Experimental `decodebin3` and `playbin3` elements which bring a number of improvements which were hard to implement within `decodebin` and `playbin`
  • A new `parsebin` element to automatically unpack and parse a stream, stopping just short of decoding
  • Experimental new `meson`-based build system, bringing faster build and much better Windows support (including for building with Visual Studio)
  • A new `gst-docs` module has been created, and we are in the process of moving our documentation to a markdown-based format for easier maintenance and updates
  • A new `gst-examples` module has been create, which contains example GStreamer applications and is expected to grow with many more examples in the future
  • Various OpenGL and OpenGL|ES-related fixes and improvements for greater efficiency on desktop and mobile platforms, and Vulkan support on Wayland was also added
  • Extensive improvements to the VAAPI plugins for improved robustness and efficiency
  • Lots of fixes and improvements across the board, spanning RTP/RTSP, V4L2, Bluetooth, audio conversion, echo cancellation, and more!

New in GStreamer 1.8.1 (Apr 20, 2016)

  • This release only contains bugfixes and it should be safe to update from 1.8.0.

New in GStreamer 1.8.0 (Mar 24, 2016)

  • Hardware-accelerated zero-copy video decoding on Android
  • New video capture source for Android using the android.hardware.Camera API
  • Windows Media reverse playback support (ASF/WMV/WMA)
  • New tracing system provides support for more sophisticated debugging tools
  • New high-level GstPlayer playback convenience API
  • Initial support for the new Vulkan API, see Matthew Waters' blog post for more details
  • Improved Opus audio codec support: Support for more than two channels; MPEG-TS demuxer/muxer can now handle Opus; sample-accurate encoding/decoding/transmuxing with Ogg, Matroska, ISOBMFF (Quicktime/MP4), and MPEG-TS as container; new codec utility functions for Opus header and caps handling in pbutils library. The Opus encoder/decoder elements were also moved to gst-plugins-base (from -bad), and the opus RTP depayloader/payloader to -good.
  • GStreamer VAAPI module now released and maintained as part of the GStreamer project
  • Asset proxy support in the GStreamer Editing Services

New in GStreamer 1.6.3 (Jan 20, 2016)

  • Fix regression in GL library that made glimagesink unsable on Android
  • Integer arithmetic overflow in queue2 element that could break buffering or cause crashes due to NULL pointer dereference
  • Fix crash in AAC/ADTS typefinder caused by reading more memory than is available
  • Stop ignoring encoder errors in the VP8/VP9 encoders
  • Deprecate GstVideoEncoder GST_VIDEO_ENCODER_FLOW_DROPPED. It's redudant and was never actually implemented
  • Ensure to store the correct video info in GstVideoBufferPool
  • Fix caps in rtspsrc when doing SRTP over interleaved TCP
  • Fix crash in pcap parser on 0-sized packets
  • Clear EOS flag in appsrc to allow reuse after EOS and flushing
  • Ignore flushing streams in streamsynchronizer during stream switches to fix problems caused by this in gst-editing-services
  • Ignore tags and other metadata in WAV files after the "data" chunk in PUSH mode to prevent them from being interpreted as audio
  • Correctly use colorimetry in v4l2 only for YUV color formats
  • Set reserved bits in MPEG TS muxer to 1s
  • Fix calculation of SBC frame lengths
  • Fix output of the RTP JPEG2000 depayloader to have one frame per buffer and crash in the OpenJPEG decoder on incomplete frames
  • Update ffmpeg snapshot in gst-libav to 2.8.5
  • Memory leak fixes in scaletempo, the raw video RTP depayloader, and in playsink related to audio/video filters
  • Fixes for error handling in the OSX audio plugin
  • Various gobject-introspection annotation fixes and additions
  • Compiler warning fixes for latest clang compiler

New in GStreamer 1.6.2 (Dec 14, 2015)

  • Crashes in gst-libav with sinks that did not provide a buffer pool but supported video metadata were fixed. This affected d3dvideosink and some 3rd party sinks. Also related fixes for crashes when a downstream buffer pool failed allocation.
  • Big GL performance improvement on iOS by a factor of 2 by using Apple's sync extension.
  • Deadlocks in the DirectSound elements on Windows, and the behaviour of its mute property were fixed.
  • The Direct3D video sink does not crash anymore when minimizing the window
  • The library soname generation on Android >= 6.0 was fixed, which previously caused GStreamer to fail to load there.
  • File related elements have large-file (>2GB) support on Android now.
  • gst-libav was updated to ffmpeg 2.8.3.
  • Deserialization of custom events in the GDP depayloader was fixed.
  • Missing OpenGL context initialization in the Qt/QML video sink was fixed in certain situations.
  • Interoperability with some broken RTSP servers using HTTP tunnel was improved.
  • Various compilation fixes for Windows.
  • Various smaller memory leak and other fixes in different places.
  • and many, many more

New in GStreamer 1.6.1 (Oct 31, 2015)

  • Crashes in the gst-libav encoders were fixed
  • More DASH-IF test streams are working now
  • Live DASH, HLS and MS SmoothStreaming streams work more reliable and other fixes for the adaptive streaming protocols
  • Reverse playback works with scaletempo to keep the audio pitch
  • Correct stream-time is reported for negative applied_rate
  • SRTP packet validation during decoding does not reject valid packets anymore
  • Fixes for audioaggregator and aggregator to start producing output at the right time, and e.g. not outputting lots of silence in the beginning
  • gst-libav's internal ffmpeg snapshot was updated to 2.8.1
  • cerbero has support for Mac OS X 10.11 (El Capitan)
  • Various memory leaks were fixed, including major leaks in playbin, playsink and decodebin
  • Various GObject-Introspection annotation fixes for bindings
  • and many, many more

New in GStreamer 1.6.0 (Sep 26, 2015)

  • Stereoscopic 3D and multiview video support
  • Trick mode API for key-frame only fast-forward/fast-reverse playback etc.
  • Improved DTS (decoding timestamp) vs. PTS (presentation timestamp) handling to account for negative DTS
  • New GstVideoConverter API for more optimised and more correct conversion of raw video frames between all supported formats, with rescaling
  • v4l2src now supports renegotiation
  • v4l2transform can now do scaling
  • V4L2 Element now report Colorimetry properly
  • Easier chunked recording of MP4, Matroska, Ogg, MPEG-TS: new splitmuxsink and multifilesink improvements
  • Content Protection signalling API and Common Encryption (CENC) support for DASH/MP4
  • Many adaptive streaming (DASH, HLS and MSS) improvements
  • New PTP and NTP network client clocks and better remote clock tracking stability
  • High-quality text subtitle overlay at display resolutions with glimagesink or gtkglsink
  • RECORD support for the GStreamer RTSP Server
  • Retransmissions (RTX) support in RTSP server and client
  • RTSP seeking support in client and server has been fixed
  • RTCP scheduling improvements and reduced size RTCP support
  • MP4/MOV muxer acquired a new "robust" mode of operation which attempts to keep the output file in a valid state at all times
  • Live mixing support in aggregator, audiomixer and compositor was improved a lot
  • compositor now also supports rescaling of inputs streams on the fly
  • New audiointerleave element with proper input synchronisation and live input support
  • Blackmagic Design DeckLink capture and playback card support was rewritten from scratch; 2k/4k support; mode sensing
  • KLV metadata support in RTP and MPEG-TS
  • H.265 video encoder (x265), decoders (libav, libde265) and RTP payloader and depayloaders
  • New DTLS plugin and SRTP/DTLS support
  • OpenGL3 support, multiple contexts and context propagation, 3D video, transfer/conversion separation, subtitle blending
  • New OpenGL-based QML video sink, Gtk GL video sink, CoreAnimation CAOpenGLLayerSink video sink
  • gst-libav switched to ffmpeg as libav-provider, gains support for 3D/multiview video, trick modes, and the CAVS codec
  • GstHarness API for unit tests
  • gst-editing-services got a completely new ges-launch-1.0 interface, improved mixing support and integration into gst-validate
  • gnonlin has been deprecated in favor of nle (Non Linear Engine) in gst-editing-services
  • gst-validate has a new plugin system, an extensive default testsuite, support for concurrent test runs and valgrind support
  • cerbero build tool for SDK binary packages gains new 'bundle-source' command
  • Various improvements to the Android, iOS, OS X and Windows platform support

New in GStreamer 1.5.2 (Jun 26, 2015)

  • 740502 : Add absolute property to GstDirectControlBinding
  • 740575 : Fixing DTS in GStreamer
  • 745366 : concat: Forward FLUSH_START / FLUSH_STOP events
  • 746949 : concat: Add active-pad property
  • 750027 : concat: Reset internal start offset to 0 after flushing seek
  • 750033 : basetransform - allow collation/separation of buffers
  • 750039 : Keeping buffers with shared memory alive
  • 750319 : memory: subclasses don't know map flags in unmap
  • 750530 : ptp: FreeBSD, DragonFly and other BSDs don't have ifreq.ifw_hwaddr
  • 750574 : netclientclock: Make the clock a wrapper clock around an internal clock
  • 750761 : inputselector: Handle different duration track selection
  • 750782 : pipeline: Add gst_pipeline_set_latency(), getter and GObject property
  • 751026 : basesink: Properly handle buffer lists for the last-sample property
  • 751047 : concat: Add adjust-base property
  • 751107 : concat: when releasing pad, send EOS appropriately.
  • 751235 : utils: get_compatible_pad does not fully respect filter caps
  • 751420 : basesink: need to deep-copy last buffer list in drain

New in GStreamer 1.4.5 (Dec 21, 2014)

  • GStreamer core:
  • 736969 : queue2: dead lock when buffering
  • 738092 : basesink: clamp reported position based on direction
  • 740001 : task: race condition when pausing and stopping
  • GStreamer Plugins Base:
  • 741420 : video pools: should update size in configuration after applying alignment
  • 715050 : add typefinder for audio/x-audible
  • 739544 : tcp: Add test and fix memory leak in tcp elements
  • 739840 : typefind should recognize Apple Core Audio Format (CAF)
  • 740556 : videodecoder: don't complain when DTS != PTS on keyframes
  • 740675 : playsink: continues playback, reset mute property
  • 740730 : rtspconnection: don't remove child source if parent source is already destroyed
  • 740853 : audiodecoder: Push pending events before sending EOS.
  • 740952 : alsa: NetBSD fixes
  • 741045 : audiorate can can lose timestamp precision in some cases
  • 741198 : playbin: leaks GstPads
  • GStreamer Plugins Good:
  • 711437 : apev2mux: should not put APEv2 tags at beginning of WavPack files
  • 726194 : v4l2src does not cope well when a capture card is sometimes interlaced, sometimes progressive at the same resolution
  • 736397 : flvdemux: Per-stream resyncing behavior causes A/V-desyncs
  • 737603 : v4l2bufferpool: set buffer interlace flags when field is V4L2_FIELD_INTERLACED
  • 739476 : vpx: fails to build against libvpx from git
  • 739722 : matroskamux: Thread safe register GstMatroskamuxPad
  • 739789 : v4l2allocator: fix error message if allocator is already active
  • 739791 : v4l2bufferpool: unref pool when v4l2_allocator_new() fails
  • 739792 : v4l2allocator: fix gst_v4l2_allocator_stop prototype
  • 739996 : videomixer: Drops a lot of frames, if one of the sources is live
  • 740040 : v4l2src: Fails in presence of V4L2_BUF_FLAG_ERROR
  • 740392 : rtspsrc: mikey base64 decoded key-mgmt leak
  • 740407 : qtmux limits capture to 4096x4096
  • 740633 : v4l2src: RW io-mode is broken
  • 740636 : v4l2src: framerate is not always set on driver
  • 740671 : aspectratiocrop: crop needs to be reset when video size changes
  • 740905 : v4l2: still has 1 include to linux/videodev.h
  • 741271 : rtph264pay: Buffer leak in H.264 payloader when using SPS/PPS
  • 741381 : rtph264pay: Race condition may cause crash when going from PAUSED- > READY
  • 741407 : deinterlace: in query_caps return only supported formats if filter is interlaced
  • 737579 : v4l2object: set colorspace for output devices
  • 739754 : v4l2bufferpool: Should validate that all memories are writeable before queueing back
  • GStreamer Plugins Bad:
  • 722764 : rawparse: fix SEEKING query handling
  • 729768 : mpegtsbase: Raise limit to read more bytes initially to find PCR
  • 739152 : gl/cocoa: build with GNUStep fails
  • 740191 : dvbbasesink: segfaults on 32-bit (rpi)
  • 740201 : gl/cocoa: Does not compile on OSX < 10.7 anymore
  • 740451 : srtpdec: leaks rtp/rtcp sink events
  • 740953 : configure.ac: unportable test(1) comparison operator
  • 741321 : opusparse: fix header parsing esp. of encoded output of libopus
  • GStreamer RTSP Server:
  • 739481 : rtsp-stream: leaks srtp decoder when leaving rtpbin

New in GStreamer 1.4.4 (Nov 10, 2014)

  • Bugs fixed in this release:
  • 737498 : multiqueue: doesn't take GAP event into account when calculating current level
  • 737794 : multiqueue: deadlock if queue overruns with serialized events
  • 737999 : systemclock: multi-thread entry status issue
  • 738198 : multiqueue: Does not wake up not-linked streams on EOS

New in GStreamer 1.4.1 (Aug 28, 2014)

  • The 1.4 release series is adding new features on top of the 1.2 series and is part of the API and ABI-stable 1.x release series of the GStreamer multimedia framework that contains new features. The 1.4.x bugfix releases only contain important bugfixes compared to 1.4.0.

New in GStreamer 1.4 RC2 (Jul 12, 2014)

  • The GStreamer team is pleased to announce the second release candidate of the stable 1.4 release series. The 1.4 release series is adding new features on top of the 1.0 and 1.2 series and is part of the API and ABI-stable 1.x release series of the GStreamer multimedia framework.
  • This release candidate will hopefully shortly be followed by the stable 1.4.0 release if no bigger regressions or bigger issues are detected, and enough testing of the release candidate happened. The new API that was added during the 1.3 release series is not expected to change anymore at this point.

New in GStreamer 1.4 RC1 (Jun 30, 2014)

  • New API:
  • GstMessageType has GST_MESSAGE_EXTENDED added. All types before that can be used together as a flags type as before, but from that message onwards the types are just counted incrementally. This was necessary to be able to add more message types. In 2.0 GstMessageType will just become an enum and not a flags type anymore.
  • GstDeviceMonitor for device probing, e.g. to list all available audio or video capture devices. This is the replacement for GstPropertyProbe from 0.10.
  • Events accumulate the running-time offset now when travelling through pads, as set by the gst_pad_set_offset() function. This allows to compensate for this in the QOS event for example.
  • GstBuffer has a new flag "tag-memory" that is set automatically when memory is added or removed to a buffer. This allows buffer pools to detect if they can recycle a buffer or need to reset it first.
  • GstToc has new API to mark GstTocEntries as loops.
  • A not-authorized resource error has been defined to notify applications that accessing the resource has failed because of missing authorization and to distinguish this case from others. This change is actually already in 1.2.4.
  • GstPad has a new flag "accept-intersect", that will let the default ACCEPT_CAPS query handler do an intersection instead of subset check. This is interesting for parser elements that can handle incomplete caps.
  • GstCollectPads has support for flushing and a default handler for SEEK events now.
  • New GstFlowAggregator helper object that simplifies handling of flow returns in elements with multiple source pads. Additionally GstPad now always stores the last flow return and provides an API to retrieve it.
  • GstSegment has new API to offset the running time by a specific value and this is used in GstPad to allow positive and negative offsets in gst_pad_set_offset() in all situations.
  • Support for h265/HEVC and VP8 has been added to the codec utils and codec parsers library, and was integrated into various elements.
  • API for adjusting the TLS validation of RTSP connection has been added.
  • The RTSP and SDP library has MIKEY (RFC 3830) support now, and there is API to distinguish between the different RTSP profiles.
  • API to access RTP time information and statistics.
  • Support for auxiliary streams was added to rtpbin.
  • Support for tiled, raw video formats has been added.
  • GstVideoDecoder and GstAudioDecoder have API to help aggregating tag events and merge custom tags into them consistently.
  • GstBufferPool has support for flushing now.
  • playbin/playsink has support for application provided audio and video filters.
  • GstDiscoverer has new and simplified API to get details about missing plugins and information to pass to the plugin installer.
  • The GL library was merged from gst-plugins-gl to gst-plugins-bad, providing a generic infrastructure for handling GL inside GStreamer pipelines and a plugin with some elements using these, especially a video sink. Supported platforms currently are Android, Cocoa (OS X), DispManX (Raspberry Pi), EAGL (iOS), WGL (Windows) and generic X11, Wayland and EGL platforms. This replaces eglglessink and also is supposed to replace osxvideosink.
  • New GstAggregator base class in gst-plugins-bad. This is supposed to replace GstCollectPads in the future and fix long-known shortcomings in its API. Together with the base class some elements are provided already, like a videomixer (compositor).
  • Major changes:
  • New plugins and elements:
  • v4l2videodec element for accessing hardware codecs on platforms that make them accessible via V4L2, e.g. Samsung Exynos. This comes together with major refactoring of the existing V4L2 elements and the corresponding infrastructure. The v4l2videodec element replaces the mfcdec element.
  • New downloadbuffer element that replaces the download buffering feature of queue2. Compared to queue2's code it is much simpler and only for this single use case. A noteworthy new feature is that it's downloading gaps in the already downloaded stream parts when nothing else is to be downloaded. This is now used by playbin when download buffering is enabled.
  • rtpstreampay and rtpstreamdepay elements for transmitting RTP packets over a stream API (e.g. TCP) according to RFC 4571.
  • rtprtx elements for standard compliant implementation of retransmissions, integrated into the rtpmanager plugin.
  • audiomixer element that mixes multiple audio streams together into a single one while keeping synchronization. This is planned to become the replacement of the adder element.
  • OpenNI2 plugin for 3D cameras like the Kinect camera.
  • OpenEXR plugin for decoding high-dynamic-range EXR images.
  • curlsshsink and curlsftpsink to write files via SSH/SFTP.
  • videosignal, ivfparse and sndfile plugins ported from 0.10.
  • avfvideosrc, vtdec and other elements were ported from 0.10 and are available on OS X and iOS now.
  • Other changes:
  • gst-libav now uses libav 10.1, and gained support for H265/HEVC.
  • Support for hardware codecs and special memory types has been improved with bugfixes and feature additions in various plugins and base classes.
  • Various bugfixes and improvements to buffering in queue2 and multiqueue elements.
  • dvbsrc supports more delivery mechanisms and other features now, including DVB S2 and T2 support.
  • The MPEGTS library has support for many more descriptors.
  • Major improvements to tsdemux and tsparse, especially time and seeking related.
  • souphttpsrc now has support for keep-alive connections, compression, configurable number of retries and configuration for SSL certificate validation.
  • hlsdemux has undergone major refactoring and works more reliable now and supports more HLS features like trick modes. Also fragments are pushed downstream while they're downloaded now instead of waiting for each fragment to finish.
  • dashdemux and mssdemux are now also pushing fragments downstream while they're downloaded instead of waiting for each fragment to finish.
  • videoflip can automatically flip based on the orientation tag.
  • openjpeg supports the OpenJPEG2 API.
  • waylandsink was refactored and should be more useful now. It also includes a small library which most likely is going to be removed in the future and will result in extensions to the GstVideoOverlay interface.
  • gst-rtsp-server supports SRTP and MIKEY now.
  • gst-libav encoders are now negotiating any profile/level settings with downstream via caps.
  • Lots of fixes for coverity warnings all over the place.
  • Negotiation related performance improvements.
  • 800+ fixed bug reports, and many other bug fixes and other improvements everywhere that had no bug report.
  • Things to look out for:
  • The eglglessink element was removed and replaced by the glimagesink element.
  • The mfcdec element was removed and replaced by v4l2videodec.
  • osxvideosink is only available in OS X 10.6 or newer.
  • On Android the namespace of the automatically generated Java class for initialization of GStreamer has changed from com.gstreamer to org.freedesktop.gstreamer to prevent namespace pollution.
  • On iOS you have to update your gst_ios_init.h and gst_ios_init.m in your projects from the one included in the binaries if you used the GnuTLS GIO module before. The loading mechanism has slightly changed.

New in GStreamer 1.2.4 (Apr 22, 2014)

  • GStreamer core:
  • 724373 : Queue2 truncates its temp file when pipeline is paused
  • 725517 : docs: Fix typos and remove unknown annotations
  • 725809 : ghostpad: rare crash because of missing reference count on its target pad
  • 727253 : parse: Bison generated file included in the release tarballs causes compile errors
  • 727883 : baseparse: Memory leak of queue frames
  • GStreamer Plugins Base:
  • 693263 : typefinding: MPEG-2 video ES detected as H.263
  • 683504 : playsink: deadlock when disabling subtitles and suboptimal disabling of subtitles
  • 700770 : typefinding: mp3 file mis-detected as h263 video
  • 723597 : tagdemux: Seek event in GST_FORMAT_TIME are converted to BYTES to early
  • 724633 : oggdemux: ignores last page in push mode
  • 724720 : rtspconnection: not possible to disconnect/reconnect read connection in tunneled mode
  • 725313 : rtspconnection: closed() callback is never called in tunneled mode
  • 725644 : typefinding: mp3 file is misdetected as H.263
  • 726642 : rtspconnection: minor memory leak in error handling
  • 727025 : adder: rework the logic to check if eos has to be sent.
  • GStreamer Plugins Good:
  • 725104 : qtdemux: reverse playback and video stream switching failure
  • 722185 : souphttpsrc: racy " server does not support seeking " error
  • 724619 : crash when reading the device name property of pulsesink
  • 725124 : rtspsrc: Fix deadlock when task creation is no successful
  • 725712 : rtpsession: Crash when RTCP FIR received with unknown SSRC
  • 725860 : v4l2src: Fix using v4l2src with Hauppauge HDPVR video capture device
  • 726777 : rtpjpegpay: payload size not correctly calculated
  • 728017 : [regression]eos event could not be send out from gstrtpjitterbuffer.
  • 728041 : rtph264depay: marks all output buffers as delta units when outputting avc format
  • 724638 : aacparse : Missing resilience when no audio frame is found
  • 727329 : check: souphttpsrc: unknown type name ‘SoupStatus’
  • GStreamer Plugins Bad:
  • 724013 : Don't hardcode /usr/share/sounds/sf2 path in fluiddec
  • 725137 : hlsdemux: fails to compute media playlist URL if there is a query parameter
  • 725140 : hlsdemux: fails to correctly parse CODECS and RESOLUTION
  • GStreamer libav Plugins:
  • 727779 : avdec_h264, matroskademux: crash while seeking (1.2 regression)

New in GStreamer 1.2.2 (Dec 28, 2013)

  • The 1.2 release series is adding new features on top of the 1.0 series and is part of the API and ABI-stable 1.x release series of the GStreamer multimedia framework that contains new features.

New in GStreamer 1.2.0 (Sep 25, 2013)

  • New API:
  • GstContext negotiation / sharing / announcing for sharing a generic context between elements, e.g. a display handle
  • GL texture upload conversion meta for allowing different buffer types to be converted to an OpenGL texture
  • GstCapsFeatures as extension to GstCaps for allowing the negotiation of specific memory or meta requirements between elements
  • GstMemory flags for contiguous and non-mappable memory
  • The stream-start event has optional flags now, e.g. for signalling sparse streams
  • The stream-start even has an optional group-id field now to signal all streams that should be played together
  • Allocators library in gst-plugins-base, currently only with generic dmabuf memory support
  • insertbin library for easier handling of dynamically linked pipelines (in -bad for now)
  • EGL helper library (in -bad for now)
  • MPEG-TS data structure library (in -bad for now)
  • New GstVideoRegionOfInterestMeta to describe a region of interest on video frames.
  • GstVideoDecoder/Encoder has new ::flush() vfunc to replace the ill-defined ::reset() vfunc.
  • The URI query allows to query the redirected URI now.
  • Major changes:
  • New tool: gst-play-1.0 in gst-plugins-base for basic playback testing on the command line.
  • New plugins:
  • mssdemux for Microsoft Smooth Streaming
  • dashdemux for DASH adaptive streaming protocol
  • bluez for interaction with Bluetooth devices
  • openjpeg for JPEG2000 decoding and encoding
  • daala for experimental Daala decoding and encoding
  • vpx plugin has experimental VP9 decoding and encoding support
  • webp plugin for WebP decoding (encoding to be added later)
  • Various others: yadif, srtp, sbc, fluidsynth, midiparse, mfc, ivtv, accuraterip and audiofxbad
  • Moved plugins:
  • dtmf, vp8rtp, scaletempo and rtpmux plugins are in gst-plugins-good now
  • Video:
  • Fix handling of interlaced video in converters such as videoscale and videoconvert (e.g. scale both fields independently)
  • videoconvert will try harder to minimise quality losses when conversion is necessary
  • The experimental GstSurfaceConverter, GstSurfaceMeta and GstVideoContext APIs from the (confusingly-named) libgstbasevideo-1.0 library in gst-plugins-bad have now been removed and been replaced by new APIs in GStreamer Core and gst-plugins-base (see above). Since that was all that was left in this library, the entire experimental libgstbasevideo-1.0 library has been removed from gst-plugins-bad
  • Chroma subsampling and chroma siting conversion is better handled in videoconvert and the support for interlaced video was improved.
  • New pinwheel and spoke patterns in videotestsrc
  • videomixer can now accept different video formats on its sinkpads and converts to a common format during mixing
  • Audio:
  • audioconvert will try harder to minimise quality losses when conversion is necessary
  • adder now allows muting/unmuting of its input streams, and also per-input stream volume
  • pulseaudio elements can switch between devices during playback now
  • aacparse can convert between ADTS←→RAW
  • Platform specific changes:
  • Caps, events, etc. are now printed in the GStreamer debug logs with their content instead of just the pointer address even on non-glibc platforms (e.g. Windows, OSX, Android).
  • Network elements (UDP/TCP) now work better with platforms, where IPv6 sockets can't handle IPv4 (e.g. Windows)
  • Linux/BSD: v4l2 had many improvements and cleanups
  • Other changes:
  • gst-libav now uses libav 9
  • Static linking of plugins is supported now (also in 1.0.7)
  • rtspsrc: add support for NetClientClock: when the server suggests a GstNetTimeProvider in the SDP, set up a GstNetClientClock that slaves to the remote clock and suggest this clock in provide_clock. Simplifies synchronized playback of a resource from an RTSP server. gst-rtsp-server now supports adding this to the SDP and can provide a network clock
  • RTP retransmission / NACK support and big RTP jitterbuffer improvements
  • SRTP and DTLS support
  • Changes to many elements and core to use the correct sticky event order and also not lose any important sticky events during flushing
  • >1000 fixed bug reports, and many other bug fixes and other improvements everywhere that had no bug report
  • Things to look out for:
  • Single header includes for all libraries, e.g. #include - this was needed for some bindings.
  • Stricter (correct) caps subset checking in some cases where this was not correct before. Caps will now always fail to be a compatible subset of another set of caps if the subset caps are missing some fields that the superset caps have. This might lead to not-negotiated errors if caps are incomplete now. However, it also prevents possible data corruption caused by piping data formatted in an incompatible/unexpected way into some elements. Check your h264 caps for stream-format and alignment fields and AAC caps for the stream-format field. This change will also be included in the next stable 1.0.8 release.
  • Stricter checking for missing events and correct sticky event order (stream-start, caps, segment) in some places; this is not enabled in stable releases by default, but you may get warnings when using git builds, development releases or when compiling with -UG_DISABLE_ASSERT in CFLAGS
  • x264enc now outputs data in byte-stream by default if downstream has ANY caps (e.g. appsink without caps set, filesink, udpsink, tcpserversink etc.)
  • The MPEG TS demuxer posts messages contain the PMT, PAT, etc. in a different format now. This new format uses the data structures from the new MPEGTS library
  • The GstContext API has changed between 1.1.4 and 1.1.90

New in GStreamer 1.1.4 (Aug 29, 2013)

  • New API:
  • GstContext negotiation / sharing / announcing for sharing a generic context between elements, e.g. a display handle
  • GL texture upload conversion meta for allowing different buffer types to be converted to an OpenGL texture
  • GstCapsFeatures as extension to GstCaps for allowing the negotiation of specific memory or meta requirements between elements
  • GstMemory flags for contiguous and non-mappable memory
  • The stream-start event has optional flags now, e.g. for signalling sparse streams
  • The stream-start even has an optional group-id field now to signal all streams that should be played together
  • Allocators library in gst-plugins-base, currently only with generic dmabuf memory support
  • insertbin library for easier handling of dynamically linked pipelines (in -bad for now)
  • EGL helper library (in -bad for now)
  • MPEG-TS data structure library (in -bad for now)
  • New GstVideoRegionOfInterestMeta to describe a region of interest on video frames.
  • GstVideoDecoder/Encoder has new ::flush() vfunc to replace the ill-defined ::reset() vfunc.
  • The URI query allows to query the redirected URI now.
  • Major changes:
  • New tool: gst-play-1.0 in gst-plugins-base for basic playback testing on the command line.
  • New plugins:
  • mssdemux for Microsoft Smooth Streaming
  • dashdemux for DASH adaptive streaming protocol
  • bluez for interaction with Bluetooth devices
  • openjpeg for JPEG2000 decoding and encoding
  • daala for experimental Daala decoding and encoding
  • vpx plugin has experimental V9 decoding and encoding support
  • webp plugin for WebP decoding (encoding to be added later)
  • Various others: yadif, srtp, sbc, fluidsynth, midiparse, mfc, ivtv, accuraterip and audiofxbad
  • Moved plugins:
  • dtmf, vp8rtp, scaletempo and rtpmux plugins are in gst-plugins-good now
  • Video:
  • Fix handling of interlaced video in converters such as videoscale and videoconvert (e.g. scale both fields independently)
  • videoconvert will try harder to minimise quality losses when conversion is necessary
  • The experimental GstSurfaceConverter, GstSurfaceMeta and GstVideoContext APIs from the (confusingly-named) libgstbasevideo-1.0 library in gst-plugins-bad have now been removed and been replaced by new APIs in GStreamer Core and gst-plugins-base (see above). Since that was all that was left in this library, the entire experimental libgstbasevideo-1.0 library has been removed from gst-plugins-bad.
  • Chroma subsampling and siting conversion is better handled in videoconvert
  • New pinwheel and spoke patterns in videotestsrc
  • Audio:
  • adder now allows muting/unmuting of its input streams, and also per-input stream volume
  • pulseaudio elements can switch between devices during playback now
  • aacparse can convert between ADTS←→RAW
  • Platform specific changes:
  • Caps, events, etc. are now printed in the GStreamer debug logs with their content instead of just the pointer address even on non-glibc platforms (e.g. Windows, OSX, Android).
  • Network elements (UDP/TCP) now work better with platforms, where IPv6 sockets can't handle IPv4 (e.g. Windows)
  • Windows: d3dvideosink provides a bufferpool to upstream elements
  • Linux/BSD: v4l2 had many improvements and cleanups
  • Other changes:
  • gst-libav now uses libav 9
  • Static linking of plugins is supported now (also in 1.0.7)
  • rtspsrc: add support for NetClientClock: when the server suggests a GstNetTimeProvider in the SDP, set up a GstNetClientClock that slaves to the remote clock and suggest this clock in provide_clock. Simplifies synchronized playback of a resource from an RTSP server. gst-rtsp-server now supports adding this to the SDP and can provide a network clock
  • RTP retransmission / NACK support and big RTP jitterbuffer improvements
  • SRTP and DTLS support
  • Changes to many elements and core to use the correct sticky event order and also not lose any important sticky events during flushing
  • >1000 fixed bug reports, and many other bug fixes and other improvements everywhere that had no bug report
  • Things to look out for:
  • Single header includes for all libraries, e.g. #include - this was needed for some bindings.
  • Stricter (correct) caps subset checking in some cases where this was not correct before. Caps will now always fail to be a compatible subset of another set of caps if the subset caps are missing some fields that the superset caps have. This might lead to not-negotiated errors if caps are incomplete now. However, it also prevents possible data corruption caused by piping data formatted in an incompatible/unexpected way into some elements. Check your h264 caps for stream-format and alignment fields and AAC caps for the stream-format field. This change will also be included in the next stable 1.0.8 release.
  • Stricter checking for missing events and correct sticky event order (stream-start, caps, segment) in some places; this is not enabled in stable releases by default, but you may get warnings when using git builds, development releases or when compiling with -UG_DISABLE_ASSERT in CFLAGS
  • x264enc now outputs data in byte-stream by default if downstream has ANY caps (e.g. appsink without caps set, filesink, udpsink, tcpserversink etc.)

New in GStreamer 1.0.8 (Jul 12, 2013)

  • GStreamer core changes since 1.0.7:
  • basesink: improve position reporting without clock
  • fix caps leak in typefind/decodebin/playbin
  • gobject-introspection fixes for bindings
  • GStreamer core bugs fixed since 1.0.7:
  • 693365 : gst_structure_is_subset false positive
  • 702617 : buffer: Wrong size/index handling when merging memory
  • 702778 : REGRESSION : Backward seeking doesn't work with mp3 files.
  • 703562 : Missing few allow-none annotation
  • GStreamer Plugins Base changes since 1.0.7:
  • tag: ignore malformed ID3v2 TDAT frames
  • GStreamer Plugins Base bugs fixed since 1.0.7:
  • 636245 : riff: for ADPCM codecs the average bitrate should be calculated instead of trusting the format header
  • 688803 : playbin: converters don't work? not-negotiated error with non-1/1 PAR and ximagesink
  • 690420 : decodebin: Race between GstBin and decodebin trying to change states of child elements
  • 698896 : liveadder: What is the unit for " latency " ?
  • 699923 : typefind: fix detection of HLS playlists with alternative renditions
  • 701976 : flvdemux: Forwards CAPS events from upstream
  • 703128 : videotestsrc leaks memory
  • 703283 : id3: gst_date_time_new: assertion `(month > 0 & & month < = 12) || month == -1' failed with malformed TDAT frames
  • 699794 : uridecodebin: Leaking queue2 elements in playbin gapless mode
  • GStreamer Plugins Good changes since 1.0.7:
  • pngenc: fix massive memory leak
  • pngdec: parse incoming data into frames before decoding
  • osvideo: many osxvideosink fixes
  • udpsink, multiudpsink, dynudpsink: bind socket before using it, fixes sending udp on windows
  • GStreamer Plugins Good bug fixes since 1.0.7:
  • 682110 : qtdemux: discont flag set on multiple buffers in push mode
  • 692400 : udpsrc: fix socket options not getting set on windows, resulting in packet drop in high bitrate movie
  • 693727 : rtpvrawpay/depay negotiation broken
  • 699260 : pngenc: unmap source frame when done
  • 699303 : matroskademux: stream-format=raw missing from aac caps
  • 699314 : rtph264pay: CRITICAL **: gst_adapter_map: assertion `size > 0' failed
  • 700047 : pngdec: make decoding work without png parser
  • 700382 : qtdemux: handle 96kHz/24 bits ALAC audio
  • 700514 : rtpmp4apay: clear config buffer before using it
  • 700878 : udpsink: Not sending anything on Windows
  • 701586 : rtspsrc memleak
  • 702167 : matroskademux: missing mutex unlock leading to wrong STREAM_LOCK count
  • 702457 : rtpmp2tdepay: unable to depay MPEG2-TS RTP streams from GStreamer 0.10
  • 702705 : rtspsrc does not pause properly (race condition)
  • 702732 : v4l2: Does not link statically on linux
  • 703076 : flvdemux: Add flvversion 1 to flash-video caps
  • 703100 : osxvideosink: deadlock on re-use
  • 703171 : rtph264pay: segfault because of double buffer unmap on error
  • 703729 : osxvideosink doesn't display video anymore if once set to READY
  • 691419 : osxvideosink: doesn't close internal window in case of window-id assignment
  • GStreamer Plugins Ugly changes since 1.0.7:
  • lamemp3enc: fix timestamping of outgoing buffers if the encoder resamples internally, which fixes transcoding pipelines deadlocking after a while
  • GStreamer Plugins Bad changes since 1.0.7:
  • rfbsrc, neonhttpsrc, ofa, and openal plugins ported to 1.0
  • mpegvideoparse: don't announce incomplete source caps
  • tsdemux: many fixes
  • GStreamer Plugins Bad bugs fixed since 1.0.7:
  • 702495 : sdpdemux fails if not explicitly added to the pipeline
  • 674536 : tsdemux: Freeze on pts-wrap with streaming sources
  • 685103 : mpegvideoparse: wrong pixel-aspect-ratio
  • 695412 : mpegtsmux AAC ADTS header seems incorrect
  • 695879 : mpegvideoparse: outputs incomplete caps with different mpegversion before outputting proper caps
  • 697283 : mpegdemux: accept ID_PRIVATE_STREAM_1 to avoid loosing sync
  • 699786 : mpegtsmux: memory leak when using prepare_func
  • 700038 : rfbsrc: port to 1.0
  • 700402 : openalsink: 'AL_FORMAT_MONO_ALAW_EXT' undeclared
  • 702597 : shmsink: events not propagated to basesink
  • GStreamer Libav Plugins changes since 1.0.7:
  • gst-libav: internal libav snapshot version bumped to v0.8.8

New in GStreamer 1.0.6 (Mar 23, 2013)

  • build fixes for out-of-tree autogen.sh and automake 1.13, and recent kernel/video4linux
  • gobject-introspection fixes for bindings
  • videoscale: Correct DAR and border calculations
  • playbin: make sure converters are always plugged when needed, fixes not-negotiated errors with some sinks
  • playbin: fix subtitleoverlay caps handling to avoid not-negotiated errors when subtitle plugins are missing
  • adder: make "caps" property work properly
  • alsasink: don't use 100% CPU in some cases
  • reliability fixes for flushing seeks and shutdowns in queue and bastransform
  • appsrc: fix locking order
  • audiovisualisation fixes
  • deinterlace: fix infinite loop on EOS with non-default methods or fields
  • avidemux push mode fixes, make dv-in-avidemux work
  • level: send a final level message on EOS
  • osxvideosink fixes
  • ximagesrc: Set the pixel aspect ratio correctly in the output caps
  • v4l2: don't check stride for encoded formats
  • leak fixes in GstBin, pango, auparse, gdppay
  • qtdemux: skip disabled tracks and ignore chapter subtitle tracks
  • RTSP and RTP fixes
  • Opus audio decoder, encoder and RTP payloader fixes
  • codecparser fixes for H.264, MPEG-2 and VC-1 parsing
  • opensles, eglglessink, and decklink plugins ported to 1.0
  • libav: fix H.264 decoding errors in some files and update to 0.8.5 release
  • miscellaneous bug fixes

New in GStreamer 1.0.5 (Jan 8, 2013)

  • rtspsrc: fix regression that make rtspsrc hang when stopping
  • alsasrc: don't output buffers without timestamps or with bogus timestamps
  • add GST_CLOCK_TYPE_OTHER clock type
  • discoverer, decodebin: fix state change re-sync race that might lead to deadlocks
  • add GST_BIN_FLAG_NO_RESYNC flag that disables a resync when an element is added, removed or linked in the bin; this is interesting for complex bins that dynamically add elements to themselves and want to manage the state of those elements without interference from state resync threads (which may cause deadlocks)
  • video: fix crashes with and frame sizes of A420 video format
  • fix VP6-alpha video playback
  • jpegenc: pass flow returns upstream
  • audio/video parsers: fix negotiation with encoders in some transcoding cases
  • qtdemux: fix pixel-aspect-ratio of some files with ProRes video
  • cairo: port cairooverlay to 1.0
  • psdemux: tentative port to 1.0; take into account both DTS and PTS
  • shm: Actually get the permissions on get_property
  • waylandsink: do not default to fullscreen mode
  • build: fix build with new automake 1.13
  • build: pass CC, LD, AS, AR and NM to the libav configure if set
  • miscellaneous bug fixes

New in GStreamer 1.0.4 (Dec 19, 2012)

  • basesrc: fix potential leaks when re-activating in a different mode
  • bindings: make all pad probe types work with bindings
  • bindings: fix gst_event_parse_stream_start() annotation, fixing crash
  • bindings: fix annotation for gst_app_src_push_buffer(), fixing crash
  • bindings: add several missing annotations for GstRtspMessage API
  • documentation improvements
  • playbin: fix occasional not-negotiated errors when switching visualisations
  • ssaparse: ignore invalid UTF-8 in SSA/ASS subtitles init sections in matroska files
  • streamsynchronizer: better timestamp and gap handling at EOS, fixing potential OOM in baseaudiosink
  • deinterleave: properly set srcpad channel position
  • osxvideosink: Fix resizing the Cocoa window on receiving new caps
  • rtspsrc fixes
  • shout2send: also accept audio/webm in addition to video/webm
  • videobox: fix border filling for planar YUV formats
  • webmmux: fix linking to shout2send
  • v4l2: fix build on FreeBSD
  • siddec: initialize debug category
  • mpeg4videoparse: also parse divx 4/5
  • mpeg4videoparse: export number of sprite warping points in caps (decoders might have no or only limited GMC support)
  • mpegtsmux: propagate flow returns upstream; don't crash when reused
  • rtmpsrc: disable seeking if the configured url specifies live=true
  • build fixes for OS/X (shm) and Windows (d3dvideosink)
  • libav G.726 decoder fixes
  • miscellaneous bug fixes
  • some memory leak fixes

New in GStreamer 1.0.3 (Nov 21, 2012)

  • bufferpool: fix deadlock
  • baseparse: forward stream-start event in push mode, fixing issues with streamsynchronizer
  • basesink: reset START_TIME when needed, fixing position reporting after seeking beyond end
  • typefind: detect isml ftyp as iso-fragmented video/quicktime
  • typefinding improvements fixing playback of some wavpack files
  • textoverlay rendering fixes
  • gobject-introspection annotation fixes
  • API: gst_video_decoder_get_qos_proportion()
  • rtspsrc: numerous improvements
  • build fix for gst-plugins-base installed in non-default prefix
  • multifilesink: post messages in max-size mode as well
  • vp8dec: improve robustness on decoding errors, e.g. for videocalling
  • cdio: try to handle CD-TEXT in non-UTF8 encodings
  • xingmux, siddec, dvdlpcmdec and dvdsubdec fixes
  • mpegtsmux: fix DTS/PTS confusion
  • tsdemux, tsparse: seeking fixes
  • tsdemux, tsparse: fix timestamping with push-based input
  • h264parse: fix PPS insertion
  • mpg123audiodec: fix leaks from not chaining up in the finalize function
  • avcodecmap: Y41B is YUV411P, not YUV410P
  • numerous bug fixes
  • some memory leak fixes

New in GStreamer 1.0.2 (Oct 25, 2012)

  • Changes since 1.0.0:
  • Capsfilter prefers filter caps over passthrough now
  • Application Development Manual, Plugin Writer's Guide and other documentation updated and extended for 1.0
  • Bug fixes
  • Bugs fixed since 1.0.0:
  • 680862 : identity with single-segment=true gives buffer.pts of CLOCK_TIME_NONE
  • 684538 : baseparse: no timestamps after seeking in mp3 or aac
  • 684755 : typo - whithin > within
  • 684765 : Plugins without a klass in the metadata crashes autoaudiosink
  • 684809 : proxypad don't hold a ref to their internal pad while streaming through it
  • 684970 : Don't register printf extension for %p when glib is not using system printf
  • 684981 : Pipeline hangs on PREROLLING negotiating caps
  • 685072 : memory: map(READ)/unmap clears the READONLY status
  • API additions since 1.0.0:
  • gst_base_transform_set_prefer_passthrough()

New in GStreamer 1.0.1 (Oct 8, 2012)

  • This is a new bug-fix release for the new API and ABI-stable 1.x series of the GStreamer multimedia framework.

New in GStreamer 1.0.0 (Sep 25, 2012)

  • more flexible memory handling
  • extensible and negotiable metadata for buffers
  • caps negotiation and renegotiation mechanisms, decoupled from buffer allocation
  • improved caps renegotiation
  • automatic re-sending of state for dynamic pipelines
  • reworked and more fine-grained pad probing
  • simpler and more descriptive audio and video caps
  • more efficient allocation of buffers, events and other mini objects
  • improved timestamp handling
  • support for gobject-inspection-based language bindings
  • countless other improvements

New in GStreamer 0.10.31 (Dec 2, 2010)

  • 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

New in GStreamer 0.10.29 (Apr 28, 2010)

  • improve plugin loading robustness: do not ever unload a plugin after calling into it: should fix mystery crashers during registry loading when a plugin init function returns FALSE (e.g. when some supporting library fails to initialise or a wrapper plugin found no features to wrap and wrongly returned FALSE)
  • configurable memory alignment for GstBuffers
  • add QoS message to inform apps of lost data, dropped frames etc.
  • basesink, basetransform: add support for new QoS message
  • basetransform: accept non-fixed caps suggestions
  • basesrc: fix gst_base_src_new_seamless_segment()
  • GstController fixes and optimisations
  • set thread name for pad tasks on Linux
  • pipeline, bin: fix refcount issue when removing elements during a state change
  • queue2: implement seeking in download mode
  • queue2: implement flushing in download buffering
  • queue2: improve buffer level measurement in download mode
  • fdsrc: allow specifying the size in bytes on the uri
  • build fixes: better checks for uint128_t, inline assembly on OSX, compilation if HAVE_REGISTER_PRINTF_SPECIFIER is undefined, gobject-introspection
  • two symbols were removed that had been exported but never been used or been declared in any header file: gst_element_default_error and gst_element_request_compatible_pad