3 GSTREAMER 1.14 RELEASE NOTES
6 The GStreamer team is proud to announce a new major feature release in
7 the stable 1.x API series of your favourite cross-platform multimedia
10 As always, this release is again packed with new features, bug fixes and
13 GStreamer 1.14.0 was released on 19 March 2018.
15 See https://gstreamer.freedesktop.org/releases/1.14/ for the latest
16 version of this document.
18 _Last updated: Monday 19 March 2018, 12:00 UTC (log)_
23 The GStreamer team is proud to announce a new major feature release in
24 the stable 1.x API series of your favourite cross-platform multimedia
27 As always, this release is again packed with new features, bug fixes and
33 - WebRTC support: real-time audio/video streaming to and from web
36 - Experimental support for the next-gen royalty-free AV1 video codec
38 - Video4Linux: encoding support, stable element names and faster
41 - Support for the Secure Reliable Transport (SRT) video streaming
44 - RTP Forward Error Correction (FEC) support (ULPFEC)
46 - RTSP 2.0 support in rtspsrc and gst-rtsp-server
48 - ONVIF audio backchannel support in gst-rtsp-server and rtspsrc
50 - playbin3 gapless playback and pre-buffering support
52 - tee, our stream splitter/duplication element, now does allocation
53 query aggregation which is important for efficient data handling and
56 - QuickTime muxer has a new prefill recording mode that allows file
57 import in Adobe Premiere and FinalCut Pro while the file is still
60 - rtpjitterbuffer fast-start mode and timestamp offset adjustment
63 - souphttpsrc connection sharing, which allows for connection reuse,
66 - nvdec: new plugin for hardware-accelerated video decoding using the
69 - Adaptive DASH trick play support
71 - ipcpipeline: new plugin that allows splitting a pipeline across
74 - Major gobject-introspection annotation improvements for large parts
77 - GStreamer C# bindings have been revived and seen many updates and
80 - The externally maintained GStreamer Rust bindings had many usability
81 improvements and cover most of the API now. Coinciding with the 1.14
82 release, a new release with the 1.14 API additions is happening.
85 Major new features and changes
89 There is now basic support for WebRTC in GStreamer in form of a new
90 webrtcbin element and a webrtc support library. This allows you to build
91 applications that set up connections with and stream to and from other
92 WebRTC peers, whilst leveraging all of the usual GStreamer features such
93 as hardware-accelerated encoding and decoding, OpenGL integration,
94 zero-copy and embedded platform support. And it's easy to build and
95 integrate into your application too!
97 WebRTC enables real-time communication of audio, video and data with web
98 browsers and native apps, and it is supported or about to be support by
99 recent versions of all major browsers and operating systems.
101 GStreamer's new WebRTC implementation uses libnice for Interactive
102 Connectivity Establishment (ICE) to figure out the best way to
103 communicate with other peers, punch holes into firewalls, and traverse
106 The implementation is not complete, but all the basics are there, and
107 the code sticks fairly close to the PeerConnection API. Where
108 functionality is missing it should be fairly obvious where it needs to
111 For more details, background and example code, check out Nirbheek's blog
112 post _GStreamer has grown a WebRTC implementation_, as well as Matthew's
113 _GStreamer WebRTC_ talk from last year's GStreamer Conference in Prague.
117 - webrtcbin handles the transport aspects of webrtc connections (see
118 WebRTC section above for more details)
120 - New srtsink and srtsrc elements for the Secure Reliable Transport
121 (SRT) video streaming protocol, which aims to be easy to use whilst
122 striking a new balance between reliability and latency for low
123 latency video streaming use cases. More details about SRT and the
124 implementation in GStreamer in Olivier's blog post _SRT in
127 - av1enc and av1dec elements providing experimental support for the
128 next-generation royalty free video AV1 codec, alongside Matroska
131 - hlssink2 is a rewrite of the existing hlssink element, but unlike
132 its predecessor hlssink2 takes elementary streams as input and
133 handles the muxing to MPEG-TS internally. It also leverages
134 splitmuxsink internally to do the splitting. This allows more
135 control over the chunk splitting and sizing process and relies less
136 on the co-operation of an upstream muxer. Different to the old
137 hlssink it also works with pre-encoded streams and does not require
138 close interaction with an upstream encoder element.
140 - audiolatency is a new element for measuring audio latency end-to-end
141 and is useful to measure roundtrip latency including both the
142 GStreamer-internal latency as well as latency added by external
143 components or circuits.
145 - 'fakevideosink is basically a null sink for video data and very
146 similar to fakesink, only that it will answer allocation queries and
147 will advertise support for various video-specific things such
148 GstVideoMeta, GstVideoCropMeta and GstVideoOverlayCompositionMeta
149 like a normal video sink would. This is useful for throughput
150 testing and testing the zero-copy path when creating a new pipeline.
152 - ipcpipeline: new plugin that allows the splitting of a pipeline into
153 multiple processes. Usually a GStreamer pipeline runs in a single
154 process and parallelism is achieved by distributing workloads using
155 multiple threads. This means that all elements in the pipeline have
156 access to all the other elements' memory space however, including
157 that of any libraries used. For security reasons one might therefore
158 want to put sensitive parts of a pipeline such as DRM and decryption
159 handling into a separate process to isolate it from the rest of the
160 pipeline. This can now be achieved with the new ipcpipeline plugin.
161 Check out George's blog post _ipcpipeline: Splitting a GStreamer
162 pipeline into multiple processes_ or his lightning talk from last
163 year's GStreamer Conference in Prague for all the gory details.
165 - proxysink and proxysrc are new elements to pass data from one
166 pipeline to another within the same process, very similar to the
167 existing inter elements, but not limited to raw audio and video
168 data. These new proxy elements are very special in how they work
169 under the hood, which makes them extremely powerful, but also
170 dangerous if not used with care. The reason for this is that it's
171 not just data that's passed from sink to src, but these elements
172 basically establish a two-way wormhole that passes through queries
173 and events in both directions, which means caps negotiation and
174 allocation query driven zero-copy can work through this wormhole.
175 There are scheduling considerations as well: proxysink forwards
176 everything into the proxysrc pipeline directly from the proxysink
177 streaming thread. There is a queue element inside proxysrc to
178 decouple the source thread from the sink thread, but that queue is
179 not unlimited, so it is entirely possible that the proxysink
180 pipeline thread gets stuck in the proxysrc pipeline, e.g. when that
181 pipeline is paused or stops consuming data for some other reason.
182 This means that one should always shut down down the proxysrc
183 pipeline before shutting down the proxysink pipeline, for example.
184 Or at least take care when shutting down pipelines. Usually this is
185 not a problem though, especially not in live pipelines. For more
186 information see Nirbheek's blog post _Decoupling GStreamer
187 Pipelines_, and also check out out the new ipcpipeline plugin for
188 sending data from one process to another process (see above).
190 - lcms is a new LCMS-based ICC color profile correction element
192 - openmptdec is a new OpenMPT-based decoder for module music formats,
193 such as S3M, MOD, XM, IT. It is built on top of a new
194 GstNonstreamAudioDecoder base class which aims to unify handling of
195 files which do not operate a streaming model. The wildmidi plugin
196 has also been revived and is also implemented on top of this new
199 - The curl plugin has gained a new curlhttpsrc element, which is
200 useful for testing HTTP protocol version 2.0 amongst other things.
202 - The msdk plugin has gained a MPEG-2 video decoder(msdkmpeg2dec), VP8
203 decoder(msdkvp8dec) and a VC1/WMV decoder(msdkvc1dec)
207 - GstPromise provides future/promise-like functionality. This is used
208 in the GStreamer WebRTC implementation.
210 - GstReferenceTimestampMeta is a new meta that allows you to attach
211 additional reference timestamps to a buffer. These timestamps don't
212 have to relate to the pipeline clock in any way. Examples of this
213 could be an NTP timestamp when the media was captured, a frame
214 counter on the capture side or the (local) UNIX timestamp when the
215 media was captured. The decklink elements make use of this.
217 - GstVideoRegionOfInterestMeta: it's now possible to attach generic
218 free-form element-specific parameters to a region of interest meta,
219 for example to tell a downstream encoder to use certain codec
220 parameters for a certain region.
222 - gst_bus_get_pollfd can be used to obtain a file descriptor for the
223 bus that can be poll()-ed on for new messages. This is useful for
224 integration with non-GLib event loops.
226 - gst_get_main_executable_path() can be used by wrapper plugins that
227 need to find things in the directory where the application
228 executable is located. In the same vein,
229 GST_PLUGIN_DEPENDENCY_FLAG_PATHS_ARE_RELATIVE_TO_EXE can be used to
230 signal that plugin dependency paths are relative to the main
233 - pad templates can be told about the GType of the pad subclass of the
234 pad via newly-added GstPadTemplate API API or the
235 gst_element_class_add_static_pad_template_with_gtype() convenience
236 function. gst-inspect-1.0 will use this information to print pad
239 - new convenience functions to iterate over element pads without using
240 the GstIterator API: gst_element_foreach_pad(),
241 gst_element_foreach_src_pad(), and gst_element_foreach_sink_pad().
243 - GstBaseSrc and appsrc have gained support for buffer lists:
244 GstBaseSrc subclasses can use gst_base_src_submit_buffer_list(), and
245 applications can use gst_app_src_push_buffer_list() to push a buffer
248 - The GstHarness unit test harness has a couple of new convenience
249 functions to retrieve all pending data in the harness in form of a
250 single chunk of memory.
252 - GstAudioStreamAlign is a new helper object for audio elements that
253 handles discontinuity detection and sample alignment. It will align
254 samples after the previous buffer's samples, but keep track of the
255 divergence between buffer timestamps and sample position (jitter).
256 If it exceeds a configurable threshold the alignment will be reset.
257 This simply factors out code that was duplicated in a number of
258 elements into a common helper API.
260 - The GstVideoEncoder base class implements Quality of Service (QoS)
261 now. This is disabled by default and must be opted in by setting the
262 "qos" property, which will make the base class gather statistics
263 about the real-time performance of the pipeline from downstream
264 elements (usually sinks that sync the pipeline clock). Subclasses
265 can then make use of this by checking whether input frames are late
266 already using gst_video_encoder_get_max_encode_time() If late, they
267 can just drop them and skip encoding in the hope that the pipeline
270 - The GstVideoOverlay interface gained a few helper functions for
271 installing and handling a "render-rectangle" property on elements
272 that implement this interface, so that this functionality can also
273 be used from the command line for testing and debugging purposes.
274 The property wasn't added to the interface itself as that would
275 require all implementors to provide it which would not be
276 backwards-compatible.
278 - A new base class, GstNonstreamAudioDecoder for non-stream audio
279 decoders was added to gst-plugins-bad. This base-class is meant to
280 be used for audio decoders that require the whole stream to be
281 loaded first before decoding can start. Examples of this are module
282 formats (MOD/S3M/XM/IT/etc), C64 SID tunes, video console music
283 files (GYM/VGM/etc), MIDI files and others. The new openmptdec
284 element is based on this.
286 - Full list of API new in 1.14:
287 - GStreamer core API new in 1.14
288 - GStreamer base library API new in 1.14
289 - gst-plugins-base libraries API new in 1.14
290 - gst-plugins-bad: no list, mostly GstWebRTC library and new
291 non-stream audio decoder base class.
293 New RTP features and improvements
295 - rtpulpfecenc and rtpulpfecdec are new elements that implement
296 Generic Forward Error Correction (FEC) using Uneven Level Protection
297 (ULP) as described in RFC 5109. This can be used to protect against
298 certain types of (non-bursty) packet loss, and important packets
299 such as those containing codec configuration data or key frames can
300 be protected with higher redundancy. Equally, packets that are not
301 particularly important can be given low priority or not be protected
302 at all. If packets are lost, the receiver can then hopefully restore
303 the lost packet(s) from the surrounding packets which were received.
304 This is an alternative to, or rather complementary to, dealing with
305 packet loss using _retransmission (rtx)_. GStreamer has had
306 retransmission support for a long time, but Forward Error Correction
307 allows for different trade-offs: The advantage of Forward Error
308 Correction is that it doesn't add latency, whereas retransmission
309 requires at least one more roundtrip to request and hopefully
310 receive lost packets; Forward Error Correction increases the
311 required bandwidth however, even in situations where there is no
312 packet loss at all, so one will typically want to fine-tune the
313 overhead and mechanisms used based on the characteristics of the
316 - New _Redundant Audio Data (RED)_ encoders and decoders for RTP as
317 per RFC 2198 are also provided (rtpredenc and rtpreddec), mostly for
318 chrome webrtc compatibility, as chrome will wrap ULPFEC-protected
319 streams in RED packets, and such streams need to be wrapped and
320 unwrapped in order to use ULPFEC with chrome.
322 - a few new buffer flags for FEC support:
323 GST_BUFFER_FLAG_NON_DROPPABLE can be used to mark important buffers,
324 e.g. to flag RTP packets carrying keyframes or codec setup data for
325 RTP Forward Error Correction purposes, or to prevent still video
326 frames from being dropped by elements due to QoS. There already is a
327 GST_BUFFER_FLAG_DROPPABLE. GST_RTP_BUFFER_FLAG_REDUNDANT is used to
328 signal internally that a packet represents a redundant RTP packet
329 and used in rtpstorage to hold back the packet and use it only for
330 recovery from packet loss. Further work is still needed in
331 payloaders to make use of these.
333 - rtpbin now has an option for increasing timestamp offsets gradually:
334 Sudden large changes to the internal ts_offset may cause timestamps
335 to move backwards and may also cause visible glitches in media
336 playback. The new "max-ts-offset-adjustment" and "max-ts-offset"
337 properties let the application control the rate to apply changes to
338 ts_offset. There have also been some EOS/BYE handling improvements
341 - rtpjitterbuffer has a new fast start mode: in many scenarios the
342 jitter buffer will have to wait for the full configured latency
343 before it can start outputting packets. The reason for that is that
344 it often can't know what the sequence number of the first expected
345 RTP packet is, so it can't know whether a packet earlier than the
346 earliest packet received will still arrive in future. This behaviour
347 can now be bypassed by setting the "faststart-min-packets" property
348 to the number of consecutive packets needed to start, and the jitter
349 buffer will start output packets as soon as it has N consecutive
350 packets queued internally. This is particularly useful to get a
351 first video frame decoded and rendered as quickly as possible.
353 - rtpL8pay and rtpL8depay provide RTP payloading and depayloading for
358 - playbin3 has gained support or gapless playback via the
359 "about-to-finish" signal where users can set the uri for the next
360 item to play. For non-live streams this will be emitted as soon as
361 the first uri has finished downloading, so with sufficiently large
362 buffers it is now possible to pre-buffer the next item well ahead of
363 time (unlike playbin where there would not be a lot of time between
364 "about-to-finish" emission and the end of the stream). If the stream
365 format of the next stream is the same as that of the previous
366 stream, the data will be concatenated via the concat element.
367 Whether this will result in true gaplessness depends on the
368 container format and codecs used, there might still be codec-related
369 gaps between streams with some codecs.
371 - tee now does allocation query aggregation, which is important for
372 zero-copy and efficient data handling, especially for video. Those
373 who want to drop allocation queries on purpose can use the identity
374 element's new "drop-allocation" property for that instead.
376 - audioconvert now has a "mix-matrix" property, which obsoletes the
377 audiomixmatrix element. There's also mix matrix support in the audio
378 conversion and channel mixing API.
380 - x264enc: new "insert-vui" property to disable VUI (Video Usability
381 Information) parameter insertion into the stream, which allows
382 creation of streams that are compatible with certain legacy hardware
383 decoders that will refuse to decode in certain combinations of
384 resolution and VUI parameters; the max. allowed number of B-frames
385 was also increased from 4 to 16.
387 - dvdlpcmdec: has gained support for Blu-Ray audio LPCM.
389 - appsrc has gained support for buffer lists (see above) and also seen
390 some other performance improvements.
392 - flvmux has been ported to the GstAggregator base class which means
393 it can work in defined-latency mode with live input sources and
394 continue streaming if one of the inputs stops producing data.
396 - jpegenc has gained a "snapshot" property just like pngenc to make it
397 easier to output just a single encoded frame.
399 - jpegdec will now handle interlaced MJPEG streams properly and also
400 handles frames without an End of Image marker better.
402 - v4l2: There are now video encoders for VP8, VP9, MPEG4, and H263.
403 The v4l2 video decoder handles dynamic resolution changes, and the
404 video4linux device provider now does much faster device probing. The
405 plugin also no longer uses the libv4l2 library by default, as it has
406 prevented a lot of interesting use cases like CREATE_BUFS, DMABuf,
407 usage of TRY_FMT. As the libv4l2 library is totally inactive and not
408 really maintained, we decided to disable it. This might affect a
409 small number of cheap/old webcams with custom vendor formats for
410 which we do not provide conversion in GStreamer. It is possible to
411 re-enable support for libv4l2 at run-time however, by setting the
412 environment variable GST_V4L2_USE_LIBV4L2=1.
414 - rtspsrc now has support for RTSP protocol version 2.0 as well as
415 ONVIF audio backchannels (see below for more details). It also
416 sports a new "accept-certificate" signal for "manually" checking a
417 TLS certificate for validity. It now also prints RTSP/SDP messages
418 to the gstreamer debug log instead of stdout.
420 - shout2send now uses non-blocking I/O and has a configurable network
423 - splitmuxsink has gained a "split-now" action signal and new
424 "alignment-threshold" and "use-robust-muxing" properties. If robust
425 muxing is enabled, it will check and set the muxer's reserved space
426 properties if present. This is primarily for use with mp4mux's
429 - qtmux has a new _prefill recording mode_ which sets up a moov header
430 with the correct sample positions beforehand, which then allows
431 software like Adobe Premiere and FinalCut Pro to import the files
432 while they are still being written to. This only works with constant
433 framerate I-frame only streams, and for now only support for ProRes
434 video and raw audio is implemented. Adding support for additional
435 codecs is just a matter of defining appropriate maximum frame sizes
438 - qtmux also supports writing of svmi atoms with stereoscopic video
439 information now. Trak timescales can be configured on a per-stream
440 basis using the "trak-timescale" property on the sink pads. Various
441 new formats can be muxed: MPEG layer 1 and 2, AC3 and Opus, as well
444 - souphttpsrc now does connection sharing by default: it shares its
445 SoupSession with other elements in the same pipeline via a
446 GstContext if possible (session-wide settings are all the defaults).
447 This allows for connection reuse, cookie sharing, etc. Applications
448 can also force a context to use. In other news, HTTP headers
449 received from the server are posted as element messages on the bus
450 now for easier diagnostics, and it's also possible now to use other
451 types of proxy servers such as SOCKS4 or SOCKS5 proxies, support for
452 which is implemented directly in gio. Before only HTTP proxies were
455 - qtmux, mp4mux and matroskamux will now refuse caps changes of input
456 streams at runtime. This isn't really supported with these
457 containers (or would have to be implemented differently with a
458 considerable effort) and doesn't produce valid and spec-compliant
459 files that will play everywhere. So if you can't guarantee that the
460 input caps won't change, use a container format that does support on
461 the fly caps changes for a stream such as MPEG-TS or use
462 splitmuxsink which can start a new file when the caps change. What
463 would happen before is that e.g. rtph264depay or rtph265depay would
464 simply send new SPS/PPS inband even for AVC format, which would then
465 get muxed into the container as if nothing changed. Some decoders
466 will handle this just fine, but that's often more luck than by
467 design. In any case, it's not right, so we disallow it now.
469 - matroskamux has Table of Content (TOC) support now (chapters etc.)
470 and matroskademux TOC support has been improved. matroskademux has
471 also seen seeking improvements searching for the right cluster and
474 - videocrop now uses GstVideoCropMeta if downstream supports it, which
475 means cropping can be handled more efficiently without any copying.
477 - compositor now has support for _crossfade blending_, which can be
478 used via the new "crossfade-ratio" property on the sink pads.
480 - The avwait element has a new "end-timecode" property and posts
481 "avwait-status" element messages now whenever avwait starts or stops
482 passing through data (e.g. because target-timecode and end-timecode
483 respectively have been reached).
485 - h265parse and h265parse will try harder to make upstream output the
486 same caps as downstream requires or prefers, thus avoiding
487 unnecessary conversion. The parsers also expose chroma format and
488 bit depth in the caps now.
490 - The dtls elements now longer rely on or require the application to
491 run a GLib main loop that iterates the default main context
492 (GStreamer plugins should never rely on the application running a
495 - openh264enc allows to change the encoding bitrate dynamically at
498 - nvdec is a new plugin for hardware-accelerated video decoding using
499 the NVIDIA NVDEC API (which replaces the old VDPAU API which is no
500 longer supported by NVIDIA)
502 - The NVIDIA NVENC hardware-accelerated video encoders now support
503 dynamic bitrate and preset reconfiguration and support the I420
504 4:2:0 video format. It's also possible to configure the gop size via
505 the new "gop-size" property.
507 - The MPEG-TS muxer and demuxer (tsmux, tsdemux) now have support for
510 - openjpegdec and jpeg2000parse support 2-component images now (gray
511 with alpha), and jpeg2000parse has gained limited support for
512 conversion between JPEG2000 stream-formats. (JP2, J2C, JPC) and also
513 extracts more details such as colorimetry, interlace-mode,
514 field-order, multiview-mode and chroma siting.
516 - The decklink plugin for Blackmagic capture and playback cards have
517 seen numerous improvements:
519 - decklinkaudiosrc and decklinkvideosrc now put hardware reference
520 timestamp on buffers in form of GstReferenceTimestampMetas.
521 This can be useful to know on multi-channel cards which frames from
522 different channels were captured at the same time.
524 - decklinkvideosink has gained support for Decklink hardware keying
525 with two new properties ("keyer-mode" and "keyer-level") to control
526 the built-in hardware keyer of Decklink cards.
528 - decklinkaudiosink has been re-implemented around GstBaseSink instead
529 of the GstAudioBaseSink base class, since the Decklink APIs don't
530 fit very well with the GstAudioBaseSink APIs, which used to cause
531 various problems due to inaccuracies in the clock calculations.
532 Problems were audio drop-outs and A/V sync going wrong after
535 - support for more than 16 devices, without any artificial limit
537 - work continued on the msdk plugin for Intel's Media SDK which
538 enables hardware-accelerated video encoding and decoding on Intel
539 graphics hardware on Windows or Linux. Added the video memory,
540 buffer pool, and context/session sharing support which helps to
541 improve the performance and resource utilization. Rendernode support
542 is in place which helps to avoid the constraint of having a running
543 graphics server as DRM-Master. Encoders are exposing a number rate
544 control algorithms now. More encoder tuning options like
545 trellis-quantiztion (h264), slice size control (h264), B-pyramid
546 prediction(h264), MB-level bitrate control, frame partitioning and
547 adaptive I/B frame insertion were added, and more pixel formats and
548 video codecs are supported now. The encoder now also handles
549 force-key-unit events and can insert frame-packing SEIs for
550 side-by-side and top-bottom stereoscopic 3D video.
552 - dashdemux can now do adaptive trick play of certain types of DASH
553 streams, meaning it can do fast-forward/fast-rewind of normal (non-I
554 frame only) streams even at high speeds without saturating network
555 bandwidth or exceeding decoder capabilities. It will keep statistics
556 and skip keyframes or fragments as needed. See Sebastian's blog post
557 _DASH trick-mode playback in GStreamer_ for more details. It also
558 supports webvtt subtitle streams now and has seen improvements when
559 seeking in live streams.
561 - kmssink has seen lots of fixes and improvements in this cycle,
564 - Raspberry Pi (vc4) and Xilinx DRM driver support
566 - new "render-rectangle" property that can be used from the command
567 line as well as "display-width" and "display-height", and
568 "can-scale" properties
570 - GstVideoCropMeta support
572 Plugin and library moves
574 MPEG-1 audio (mp1, mp2, mp3) decoders and encoders moved to -good
576 Following the expiration of the last remaining mp3 patents in most
577 jurisdictions, and the termination of the mp3 licensing program, as well
578 as the decision by certain distros to officially start shipping full mp3
579 decoding and encoding support, these plugins should now no longer be
580 problematic for most distributors and have therefore been moved from
581 -ugly and -bad to gst-plugins-good. Distributors can still disable these
584 In particular these are:
586 - mpg123audiodec: an mp1/mp2/mp3 audio decoder using libmpg123
587 - lamemp3enc: an mp3 encoder using LAME
588 - twolamemp2enc: an mp2 encoder using TwoLAME
590 GstAggregator moved from -bad to core
592 GstAggregator has been moved from gst-plugins-bad to the base library in
593 GStreamer and is now stable API.
595 GstAggregator is a new base class for mixers and muxers that have to
596 handle multiple input pads and aggregate streams into one output stream.
597 It improves upon the existing GstCollectPads API in that it is a proper
598 base class which was also designed with live streaming in mind.
599 GstAggregator subclasses will operate in a mode with defined latency if
600 any of the inputs are live streams. This ensures that the pipeline won't
601 stall if any of the inputs stop producing data, and that the configured
602 maximum latency is never exceeded.
604 GstAudioAggregator, audiomixer and audiointerleave moved from -bad to -base
606 GstAudioAggregator is a new base class for raw audio mixers and muxers
607 and is based on GstAggregator (see above). It provides defined-latency
608 mixing of raw audio inputs and ensures that the pipeline won't stall
609 even if one of the input streams stops producing data.
611 As part of the move to stabilise the API there were some last-minute API
612 changes and clean-ups, but those should mostly affect internal elements.
614 It is used by the audiomixer element, which is a replacement for
615 'adder', which did not handle live inputs very well and did not align
616 input streams according to running time. audiomixer should behave much
617 better in that respect and generally behave as one would expected in
620 Similarly, audiointerleave replaces the 'interleave' element which did
621 not handle live inputs or non-aligned inputs very robustly.
623 GstAudioAggregator and its subclases have gained support for input
624 format conversion, which does not include sample rate conversion though
625 as that would add additional latency. Furthermore, GAP events are now
628 We hope to move the video equivalents (GstVideoAggregator and
629 compositor) to -base in the next cycle, i.e. for 1.16.
631 GStreamer OpenGL integration library and plugin moved from -bad to -base
633 The GStreamer OpenGL integration library and opengl plugin have moved
634 from gst-plugins-bad to -base and are now part of the stable API canon.
635 Not all OpenGL elements have been moved; a few had to be left behind in
636 gst-plugins-bad in the new openglmixers plugin, because they depend on
637 the GstVideoAggregator base class which we were not able to move in this
638 cycle. We hope to reunite these elements with the rest of their family
641 This is quite a milestone, thanks to everyone who worked to make this
644 Qt QML and GTK plugins moved from -bad to -good
646 The Qt QML-based qmlgl plugin has moved to -good and provides a
647 qmlglsink video sink element as well as a qmlglsrc element. qmlglsink
648 renders video into a QQuickItem, and qmlglsrc captures a window from a
649 QML view and feeds it as video into a pipeline for further processing.
650 Both elements leverage GStreamer's OpenGL integration. In addition to
651 the move to -good the following features were added:
653 - A proxy object is now used for thread-safe access to the QML widget
654 which prevents crashes in corner case scenarios: QML can destroy the
655 video widget at any time, so without this we might be left with a
658 - EGL is now supported with the X11 backend, which works e.g. on
661 The GTK+ plugin has also moved from -bad to -good. It includes gtksink
662 and gtkglsink which both render video into a GtkWidget. gtksink uses
663 Cairo for rendering the video, which will work everywhere in all
664 scenarios but involves an extra memory copy, whereas gtkglsink fully
665 leverages GStreamer's OpenGL integration, but might not work properly in
666 all scenarios, e.g. where the OpenGL driver does not properly support
667 multiple sharing contexts in different threads; on Linux Nouveau is
668 known to be broken in this respect, whilst NVIDIA's proprietary drivers
669 and most other drivers generally work fine, and the experience with
670 Intel's driver seems to be mixed; some proprietary embedded Linux
671 drivers don't work; macOS works).
673 GstPhysMemoryAllocator interface moved from -bad to -base
675 GstPhysMemoryAllocator is a marker interface for allocators with
676 physical address backed memory.
680 - the sunaudio plugin was removed, since it couldn't ever have been
681 built or used with GStreamer 1.0, but no one even noticed in all
684 - the schroedinger-based Dirac encoder/decoder plugin has been
685 removed, as there is no longer any upstream or anyone else
686 maintaining it. Seeing that it's quite a fringe codec it seemed best
691 - some MPEG video parser API in the API unstable codecutils library in
692 gst-plugins-bad was removed after having been deprecated for 5
696 Miscellaneous changes
698 - The video support library has gained support for a few new pixel
700 - NV16_10LE32: 10-bit variant of NV16, packed into 32bit words (plus 2
702 - NV12_10LE32: 10-bit variant of NV12, packed into 32bit words (plus 2
704 - GRAY10_LE32: 10-bit grayscale, packed in 32bit words (plus 2 bits
707 - decodebin, playbin and GstDiscoverer have seen stability
708 improvements in corner cases such as shutdown while still starting
709 up or shutdown in error cases (hat tip to the oss-fuzz project).
711 - floating reference handling was inconsistent and has been cleaned up
712 across the board, including annotations. This solves various
713 long-standing memory leaks in language bindings, which e.g. often
714 caused elements and pads to be leaked.
716 - major gobject-introspection annotation improvements for large parts
717 of the library API, including nullability of return types and
718 function parameters, correct types (e.g. strings vs. filenames),
719 ownership transfer, array length parameters, etc. This allows to use
720 bigger parts of the GStreamer API to be safely used from dynamic
721 language bindings (e.g. Python, Javascript) and allows static
722 bindings (e.g. C#, Rust, Vala) to autogenerate more API bindings
723 without manual intervention.
727 - The GStreamer OpenGL integration library has moved to
728 gst-plugins-base and is now part of our stable API.
730 - new MESA3D GBM BACKEND. On devices with working libdrm support, it
731 is possible to use Mesa3D's GBM library to set up an EGL context
732 directly on top of KMS. This makes it possible to use the GStreamer
733 OpenGL elements without a windowing system if a libdrm- and
734 Mesa3D-supported GPU is present.
736 - Prefer wayland display over X11: As most Wayland compositors support
737 XWayland, the X11 backend would get selected.
739 - gldownload can export dmabufs now, and glupload will advertise
740 dmabuf as caps feature.
743 Tracing framework and debugging improvements
745 - NEW MEMORY RINGBUFFER BASED DEBUG LOGGER, useful for long-running
746 applications or to retrieve diagnostics when encountering an error.
747 The GStreamer debug logging system provides in-depth debug logging
748 about what is going on inside a pipeline. When enabled, debug logs
749 are usually written into a file, printed to the terminal, or handed
750 off to a log handler installed by the application. However, at
751 higher debug levels the volume of debug output quickly becomes
752 unmanageable, which poses a problem in disk-space or bandwidth
753 restricted environments or with long-running pipelines where a
754 problem might only manifest itself after multiple days. In those
755 situations, developers are usually only interested in the most
756 recent debug log output. The new in-memory ringbuffer logger makes
757 this easy: just installed it with gst_debug_add_ring_buffer_logger()
758 and retrieve logs with gst_debug_ring_buffer_logger_get_logs() when
759 needed. It is possible to limit the memory usage per thread and set
760 a timeout to determine how long messages are kept around. It was
761 always possible to implement this in the application with a custom
762 log handler of course, this just provides this functionality as part
765 - 'fakevideosink is a null sink for video data that advertises
766 video-specific metas ane behaves like a video sink. See above for
769 - gst_util_dump_buffer() prints the content of a buffer to stdout.
771 - gst_pad_link_get_name() and gst_state_change_get_name() print pad
772 link return values and state change transition values as strings.
774 - The LATENCY TRACER has seen a few improvements: trace records now
775 contain timestamps which is useful to plot things over time, and
776 downstream synchronisation time is now excluded from the measured
779 - Miniobject refcount tracing and logging was not entirley
780 thread-safe, there were duplicates or missing entries at times. This
781 has now been made reliable.
783 - The netsim element, which can be used to simulate network jitter,
784 packet reordering and packet loss, received new features and
785 improvements: it can now also simulate network congestion using a
786 token bucket algorithm. This can be enabled via the "max-kbps"
787 property. Packet reordering can be disabled now via the
788 "allow-reordering" property: Reordering of packets is not very
789 common in networks, and the delay functions will always introduce
790 reordering if delay > packet-spacing, so by setting
791 "allow-reordering" to FALSE you guarantee that the packets are in
792 order, while at the same time introducing delay/jitter to them. By
793 using the new "delay-distribution" property the user can control how
794 the delay applied to delayed packets is distributed: This is either
795 the uniform distribution (as before) or the normal distribution; in
796 addition there is also the gamma distribution which simulates the
797 delay on wifi networks better.
802 - gst-inspect-1.0 now prints pad properties for elements that have pad
803 subclasses with special properties, such as compositor or
804 audiomixer. This only works for elements that use the newly-added
805 GstPadTemplate API API or the
806 gst_element_class_add_static_pad_template_with_gtype() convenience
807 function to tell GStreamer about the special pad subclass.
809 - gst-launch-1.0 now generates a gstreamer pipeline diagram (.dot
810 file) whenever SIGHUP is sent to it on Linux/*nix systems.
812 - gst-discoverer-1.0 can now analyse live streams such as rtsp:// URIs
815 GStreamer RTSP server
817 - Initial support for RTSP protocol version 2.0 was added, which is to
818 the best of our knowledge the first RTSP 2.0 implementation ever!
820 - ONVIF audio backchannel support. This is an extension specified by
821 ONVIF that allows RTSP clients (e.g. a control room operator) to
822 send audio back to the RTSP server (e.g. an IP camera).
823 Theoretically this could have been done also by using the RECORD
824 method of the RTSP protocol, but ONVIF chose not to do that, so the
825 backchannel is set up alongside the other streams. Format
826 negotiation needs to be done out of band, if needed. Use the new
827 ONVIF-specific subclasses GstRTSPOnvifServer and
828 GstRTSPOnvifMediaFactory to enable this functionality.
830 - The internal server streaming pipeline is now dynamically
831 reconfigured on PLAY based on the transports needed. This means that
832 the server no longer adds the pipeline plumbing for all possible
833 transports from the start, but only if needed as needed. This
834 improves performance and memory footprint.
836 - rtspclientsink has gained an "accept-certificate" signal for
837 manually checking a TLS certificate for validity.
839 - Fix keep-alive/timeout issue for certain clients using TCP
840 interleave as transport who don't do keep-alive via some other
841 method such as periodic RTSP OPTION requests. We now put netaddress
842 metas on the packets from the TCP interleaved stream, so can map
843 RTCP packets to the right stream in the server and can handle them
846 - Language bindings improvements: in general there were quite a few
847 improvements in the gobject-introspection annotations, but we also
848 extended the permissions API which was not usable from bindings
851 - Fix corner case issue where the wrong mount point was found when
852 there were multiple mount points with a common prefix.
857 - Improve DMABuf's usage, both upstream and dowstream, and
858 memory:DMABuf caps feature is also negotiated when the dmabuf-based
859 buffer cannot be mapped onto user-space.
861 - VA initialization was fixed when it is used in headless systems.
863 - VA display sharing, through GstContext, among the pipeline, has been
864 improved, adding the possibility to the application share its VA
865 display (external display) via gst.vaapi.app.Display context.
867 - VA display cache was removed.
869 - libva's log messages are now redirected into the GStreamer log
872 - Decoders improved their upstream re-negotiation by avoiding to
873 re-instantiate the internal decoder if stream caps are compatible
874 with the previous one.
876 - When downstream doesn't support GstVideoMeta and the decoded frames
877 don't have standard strides, they are copied onto system
878 memory-based buffers.
880 - H.264 decoder has a low-latency property, for live streams which
881 doesn't conform the H.264 specification but still it is required to
882 push the frames to downstream as soon as possible.
884 - As part of the Google Summer of Code 2017 the H.264 decoder drops
885 MVC and SVC frames when base-only property is enabled.
887 - Added support for libva-2.0 (VA-API 1.0).
889 - H.264 and H.265 encoders handle Region-Of-Interest metas by adding a
890 delta-qp for every rectangle within the frame specified by those
893 - Encoders for H.264 and H.265 set the media profile by the downstream
896 - H.264 encoder inserts an AU delimiter for each encoded frame when
897 aud property is enabled (it is only available for certain drivers
900 - H.264 encoder supports for P and B hierarchical prediction modes.
902 - All encoders handles a quality-level property, which is a number
903 from 1 to 8, where a lower number means higher quality, but slower
904 processing, and vice-versa.
906 - VP8 and VP9 encoders support constant bit-rate mode (CBR).
908 - VP8, VP9 and H.265 encoders support variable bit-rate mode (VBR).
910 - Resurrected GstGLUploadTextureMeta handling for EGL backends.
912 - H.265 encoder can configure its number of reference frames via the
915 - Add H.264 encoder mbbrc property, which controls the macro-block
916 bitrate as auto, on or off.
918 - Add H.264 encoder temporal-levels property, to select the number of
919 temporal levels to be included.
921 - Add to H.264 and H.265 encoders the properties qp-ip and qp-ib, to
922 handle the QP (quality parameter) difference between the I and P
923 frames, and the I and B frames, respectively.
925 - vaapisink was demoted to marginal rank on Wayland because COGL
926 cannot display YUV surfaces.
929 GStreamer Editing Services and NLE
931 - Handle crossfade in complex scenarios by using the new
932 compositorpad::crossfade-ratio property
934 - Add API allowing to stop using proxies for clips in the timeline
936 - Allow management of none square pixel aspect ratios by allowing
937 application to deal with them in the way they want
939 - Misc fixes around the timeline editing API
944 - Handle running scenarios on live pipelines (in the "content sense",
945 not the GStreamer one)
947 - Implement RTSP support with a basic server based on gst-rtsp-server,
948 and add RTSP 1.0 and 2.0 integration tests
950 - Implement a plugin that allows users to implement configurable
951 tests. It currently can check if a particular element is added a
952 configurable number of time in the pipeline. In the future that
953 plugin should allow us to implement specific tests of any kind in a
956 - Add a verbosity configuration which behaves in a similare way as the
957 gst-launch-1.0 verbose flags allowing the informations to be
958 outputed on any running pipeline when enabling GstValidate.
960 - Misc optimization in the launcher, making the tests run much faster.
963 GStreamer C# bindings
965 - Port to the meson build system, autotools support has been removed
967 - Use a new GlibSharp version, set as a meson subproject
969 - Update wrapped API to GStreamer 1.14
971 - Removed the need for "glue" code
978 Build and Dependencies
980 - the new WebRTC support in gst-plugins-bad depends on the GStreamer
981 elements that ship as part of libnice, and libnice version 1.1.14 is
982 required. Also the dtls and srtp plugins.
984 - gst-plugins-bad no longer depends on the libschroedinger Dirac codec
987 - The srtp plugin can now also be built against libsrtp2.
989 - some plugins and libraries have moved between modules, see the
990 _Plugin and_ _library moves_ section above, and their respective
991 dependencies have moved with them of course, e.g. the GStreamer
992 OpenGL integration support library and plugin is now in
993 gst-plugins-base, and mpg123, LAME and twoLAME based audio decoder
994 and encoder plugins are now in gst-plugins-good.
996 - Unify static and dynamic plugin interface and remove plugin specific
997 static build option: Static and dynamic plugins now have the same
998 interface. The standard --enable-static/--enable-shared toggle is
999 sufficient. This allows building static and shared plugins from the
1000 same object files, instead of having to build everything twice.
1002 - The default plugin entry point has changed. This will only affect
1003 plugins that are recompiled against new GStreamer headers. Binary
1004 plugins using the old entry point will continue to work. However,
1005 plugins that are recompiled must have matching plugin names in
1006 GST_PLUGIN_DEFINE and filenames, as the plugin entry point for
1007 shared plugins is now deduced from the plugin filename. This means
1008 you can no longer have a plugin called foo living in a file called
1009 libfoobar.so or such, the plugin filename needs to match. This might
1010 cause problems with some external third party plugin modules when
1011 they get rebuilt against GStreamer 1.14.
1014 Note to packagers and distributors
1016 A number of libraries, APIs and plugins moved between modules and/or
1017 libraries in different modules between version 1.12.x and 1.14.x, see
1018 the _Plugin and_ _library moves_ section above. Some APIs have seen
1019 minor ABI changes in the course of moving them into the stable APIs
1022 This means that you should try to ensure that all major GStreamer
1023 modules are synced to the same major version (1.12 or 1.13/1.14) and can
1024 only be upgraded in lockstep, so that your users never end up with a mix
1025 of major versions on their system at the same time, as this may cause
1028 Also, plugins compiled against >= 1.14 headers will not load with
1029 GStreamer <= 1.12 owing to a new plugin entry point (but plugin binaries
1030 built against older GStreamer versions will continue to load with newer
1031 versions of GStreamer of course).
1033 There is also a small structure size related ABI breakage introduced in
1034 the gst-plugins-bad codecparsers library between version 1.13.90 and
1035 1.13.91. This should "only" affect gstreamer-vaapi, so anyone who ships
1036 the release candidates is advised to upgrade those two modules at the
1040 Platform-specific improvements
1044 - ahcsrc (Android camera source) does autofocus now
1048 - this section will be filled in shortly {FIXME!}
1052 - The GStreamer wasapi plugin was rewritten and should not only be
1053 usable now, but in top shape and suitable for low-latency use cases.
1054 The Windows Audio Session API (WASAPI) is Microsoft's most modern
1055 method for talking with audio devices, and now that the wasapi
1056 plugin is up to scratch it is preferred over the directsound plugin.
1057 The ranks of the wasapisink and wasapisrc elements have been updated
1058 to reflect this. Further improvements include:
1060 - support for more than 2 channels
1062 - a new "low-latency" property to enable low-latency operation (which
1063 should always be safe to enable)
1065 - support for the AudioClient3 API which is only available on Windows
1066 10: in wasapisink this will be used automatically if available; in
1067 wasapisrc it will have to be enabled explicitly via the
1068 "use-audioclient3" property, as capturing audio with low latency and
1069 without glitches seems to require setting the realtime priority of
1070 the entire pipeline to "critical", which cannot be done from inside
1071 the element, but has to be done in the application.
1073 - set realtime thread priority to avoid glitches
1075 - allow opening devices in exclusive mode, which provides much lower
1076 latency compared to shared mode where WASAPI's engine period is
1077 10ms. This can be activated via the "exclusive" property.
1079 - There are now GstDeviceProvider implementations for the wasapi and
1080 directsound plugins, so it's now possible to discover both audio
1081 sources and audio sinks on Windows via the GstDeviceMonitor API
1083 - debug log timestamps are now higher granularity owing to
1084 g_get_monotonic_time() now being used as fallback in
1085 gst_utils_get_timestamp(). Before that, there would sometimes be
1086 10-20 lines of debug log output sporting the same timestamp.
1091 Aaron Boxer, Adrián Pardini, Adrien SCH, Akinobu Mita, Alban Bedel,
1092 Alessandro Decina, Alex Ashley, Alicia Boya García, Alistair Buxton,
1093 Alvaro Margulis, Anders Jonsson, Andreas Frisch, Andrejs Vasiljevs,
1094 Andrew Bott, Antoine Jacoutot, Antonio Ospite, Antoni Silvestre, Anton
1095 Obzhirov, Anuj Jaiswal, Arjen Veenhuizen, Arnaud Bonatti, Arun Raghavan,
1096 Ashish Kumar, Aurélien Zanelli, Ayaka, Branislav Katreniak, Branko
1097 Subasic, Brion Vibber, Carlos Rafael Giani, Cassandra Rommel, Chris
1098 Bass, Chris Paulson-Ellis, Christoph Reiter, Claudio Saavedra, Clemens
1099 Lang, Cyril Lashkevich, Daniel van Vugt, Dave Craig, Dave Johnstone,
1100 David Evans, David Schleef, Deepak Srivastava, Dimitrios Katsaros,
1101 Dmitry Zhadinets, Dongil Park, Dustin Spicuzza, Eduard Sinelnikov,
1102 Edward Hervey, Enrico Jorns, Eunhae Choi, Ezequiel Garcia, fengalin,
1103 Filippo Argiolas, Florent Thiéry, Florian Zwoch, Francisco Velazquez,
1104 François Laignel, fvanzile, George Kiagiadakis, Georg Lippitsch, Graham
1105 Leggett, Guillaume Desmottes, Gurkirpal Singh, Gwang Yoon Hwang, Gwenole
1106 Beauchesne, Haakon Sporsheim, Haihua Hu, Håvard Graff, Heekyoung Seo,
1107 Heinrich Fink, Holger Kaelberer, Hoonhee Lee, Hosang Lee, Hyunjun Ko,
1108 Ian Jamison, James Stevenson, Jan Alexander Steffens (heftig), Jan
1109 Schmidt, Jason Lin, Jens Georg, Jeremy Hiatt, Jérôme Laheurte, Jimmy
1110 Ohn, Jochen Henneberg, John Ludwig, John Nikolaides, Jonathan Karlsson,
1111 Josep Torra, Juan Navarro, Juan Pablo Ugarte, Julien Isorce, Jun Xie,
1112 Jussi Kukkonen, Justin Kim, Lasse Laursen, Lubosz Sarnecki, Luc
1113 Deschenaux, Luis de Bethencourt, Marcin Lewandowski, Mario Alfredo
1114 Carrillo Arevalo, Mark Nauwelaerts, Martin Kelly, Matej Knopp, Mathieu
1115 Duponchelle, Matteo Valdina, Matt Fischer, Matthew Waters, Matthieu
1116 Bouron, Matthieu Crapet, Matt Staples, Michael Catanzaro, Michael
1117 Olbrich, Michael Shigorin, Michael Tretter, Michał Dębski, Michał Górny,
1118 Michele Dionisio, Miguel París, Mikhail Fludkov, Munez, Nael Ouedraogo,
1119 Neos3452, Nicholas Panayis, Nick Kallen, Nicola Murino, Nicolas
1120 Dechesne, Nicolas Dufresne, Nirbheek Chauhan, Ognyan Tonchev, Ole André
1121 Vadla Ravnås, Oleksij Rempel, Olivier Crête, Omar Akkila, Orestis
1122 Floros, Patricia Muscalu, Patrick Radizi, Paul Kim, Per-Erik Brodin,
1123 Peter Seiderer, Philip Craig, Philippe Normand, Philippe Renon, Philipp
1124 Zabel, Pierre Pouzol, Piotr Drąg, Ponnam Srinivas, Pratheesh Gangadhar,
1125 Raimo Järvi, Ramprakash Jelari, Ravi Kiran K N, Reynaldo H. Verdejo
1126 Pinochet, Rico Tzschichholz, Robert Rosengren, Roland Peffer, Руслан
1127 Ижбулатов, Sam Hurst, Sam Thursfield, Sangkyu Park, Sanjay NM, Satya
1128 Prakash Gupta, Scott D Phillips, Sean DuBois, Sebastian Cote, Sebastian
1129 Dröge, Sebastian Rasmussen, Sejun Park, Sergey Borovkov, Seungha Yang,
1130 Shakin Chou, Shinya Saito, Simon Himmelbauer, Sky Juan, Song Bing,
1131 Sreerenj Balachandran, Stefan Kost, Stefan Popa, Stefan Sauer, Stian
1132 Selnes, Thiago Santos, Thibault Saunier, Thijs Vermeir, Tim Allen,
1133 Tim-Philipp Müller, Ting-Wei Lan, Tomas Rataj, Tom Bailey, Tonu Jaansoo,
1134 U. Artie Eoff, Umang Jain, Ursula Maplehurst, VaL Doroshchuk, Vasilis
1135 Liaskovitis, Víctor Manuel Jáquez Leal, vijay, Vincent Penquerc'h,
1136 Vineeth T M, Vivia Nikolaidou, Wang Xin-yu (王昕宇), Wei Feng, Wim
1137 Taymans, Wonchul Lee, Xabier Rodriguez Calvar, Xavier Claessens,
1138 XuGuangxin, Yasushi SHOJI, Yi A Wang, Youness Alaoui,
1140 ... and many others who have contributed bug reports, translations, sent
1141 suggestions or helped testing.
1146 More than 800 bugs have been fixed during the development of 1.14.
1148 This list does not include issues that have been cherry-picked into the
1149 stable 1.12 branch and fixed there as well, all fixes that ended up in
1150 the 1.12 branch are also included in 1.14.
1152 This list also does not include issues that have been fixed without a
1153 bug report in bugzilla, so the actual number of fixes is much higher.
1158 After the 1.14.0 release there will be several 1.14.x bug-fix releases
1159 which will contain bug fixes which have been deemed suitable for a
1160 stable branch, but no new features or intrusive changes will be added to
1161 a bug-fix release usually. The 1.14.x bug-fix releases will be made from
1162 the git 1.14 branch, which is a stable branch.
1166 1.14.0 was released on 19 March 2018.
1170 The first 1.14 bug-fix release (1.14.1) is scheduled to be released
1171 around the end of March or beginning of April.
1173 This release only contains bugfixes and it should be safe to update from
1179 - The webrtcdsp element (which is unrelated to the newly-landed
1180 GStreamer webrtc support) is currently not shipped as part of the
1181 Windows binary packages due to a build system issue.
1186 Our next major feature release will be 1.16, and 1.15 will be the
1187 unstable development version leading up to the stable 1.16 release. The
1188 development of 1.15/1.16 will happen in the git master branch.
1190 The plan for the 1.16 development cycle is yet to be confirmed, but it
1191 is expected that feature freeze will be around August 2018 followed by
1192 several 1.15 pre-releases and the new 1.16 stable release in September.
1194 1.16 will be backwards-compatible to the stable 1.14, 1.12, 1.10, 1.8,
1195 1.6, 1.4, 1.2 and 1.0 release series.
1197 ------------------------------------------------------------------------
1199 _These release notes have been prepared by Tim-Philipp Müller with_
1200 _contributions from Sebastian Dröge, Sreerenj Balachandran, Thibault
1201 Saunier_ _and Víctor Manuel Jáquez Leal._
1203 _License: CC BY-SA 4.0_