Release 1.14.0
[platform/upstream/gstreamer.git] / NEWS
1
2
3 GSTREAMER 1.14 RELEASE NOTES
4
5
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
8 framework!
9
10 As always, this release is again packed with new features, bug fixes and
11 other improvements.
12
13 GStreamer 1.14.0 was released on 19 March 2018.
14
15 See https://gstreamer.freedesktop.org/releases/1.14/ for the latest
16 version of this document.
17
18 _Last updated: Monday 19 March 2018, 12:00 UTC (log)_
19
20
21 Introduction
22
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
25 framework!
26
27 As always, this release is again packed with new features, bug fixes and
28 other improvements.
29
30
31 Highlights
32
33 -   WebRTC support: real-time audio/video streaming to and from web
34     browsers
35
36 -   Experimental support for the next-gen royalty-free AV1 video codec
37
38 -   Video4Linux: encoding support, stable element names and faster
39     device probing
40
41 -   Support for the Secure Reliable Transport (SRT) video streaming
42     protocol
43
44 -   RTP Forward Error Correction (FEC) support (ULPFEC)
45
46 -   RTSP 2.0 support in rtspsrc and gst-rtsp-server
47
48 -   ONVIF audio backchannel support in gst-rtsp-server and rtspsrc
49
50 -   playbin3 gapless playback and pre-buffering support
51
52 -   tee, our stream splitter/duplication element, now does allocation
53     query aggregation which is important for efficient data handling and
54     zero-copy
55
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
58     being written.
59
60 -   rtpjitterbuffer fast-start mode and timestamp offset adjustment
61     smoothing
62
63 -   souphttpsrc connection sharing, which allows for connection reuse,
64     cookie sharing, etc.
65
66 -   nvdec: new plugin for hardware-accelerated video decoding using the
67     NVIDIA NVDEC API
68
69 -   Adaptive DASH trick play support
70
71 -   ipcpipeline: new plugin that allows splitting a pipeline across
72     multiple processes
73
74 -   Major gobject-introspection annotation improvements for large parts
75     of the library API
76
77 -   GStreamer C# bindings have been revived and seen many updates and
78     fixes
79
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.
83
84
85 Major new features and changes
86
87 WebRTC support
88
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!
96
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.
100
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
104 NATs.
105
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
109 go.
110
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.
114
115 New Elements
116
117 -   webrtcbin handles the transport aspects of webrtc connections (see
118     WebRTC section above for more details)
119
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
125     GStreamer_.
126
127 -   av1enc and av1dec elements providing experimental support for the
128     next-generation royalty free video AV1 codec, alongside Matroska
129     support for it.
130
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.
139
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.
144
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.
151
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.
164
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).
189
190 -   lcms is a new LCMS-based ICC color profile correction element
191
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
197     base class.
198
199 -   The curl plugin has gained a new curlhttpsrc element, which is
200     useful for testing HTTP protocol version 2.0 amongst other things.
201
202 -   The msdk plugin has gained a MPEG-2 video decoder(msdkmpeg2dec), VP8
203     decoder(msdkvp8dec) and a VC1/WMV decoder(msdkvc1dec)
204
205 Noteworthy new API
206
207 -   GstPromise provides future/promise-like functionality. This is used
208     in the GStreamer WebRTC implementation.
209
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.
216
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.
221
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.
225
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
231     executable.
232
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
237     properties.
238
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().
242
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
246     list into appsrc.
247
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.
251
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.
259
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
268     will catch up.
269
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.
277
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.
285
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.
292
293 New RTP features and improvements
294
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
314     link at the time.
315
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.
321
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.
332
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
339     in rtpbin.
340
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.
352
353 -   rtpL8pay and rtpL8depay provide RTP payloading and depayloading for
354     8-bit raw audio
355
356 New element features
357
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.
370
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.
375
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.
379
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.
386
387 -   dvdlpcmdec: has gained support for Blu-Ray audio LPCM.
388
389 -   appsrc has gained support for buffer lists (see above) and also seen
390     some other performance improvements.
391
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.
395
396 -   jpegenc has gained a "snapshot" property just like pngenc to make it
397     easier to output just a single encoded frame.
398
399 -   jpegdec will now handle interlaced MJPEG streams properly and also
400     handles frames without an End of Image marker better.
401
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.
413
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.
419
420 -   shout2send now uses non-blocking I/O and has a configurable network
421     operations timeout.
422
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
427     robust muxing mode.
428
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
436     though.
437
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
442     as PNG and VP9.
443
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
453     allowed.
454
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.
468
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
472     position.
473
474 -   videocrop now uses GstVideoCropMeta if downstream supports it, which
475     means cropping can be handled more efficiently without any copying.
476
477 -   compositor now has support for _crossfade blending_, which can be
478     used via the new "crossfade-ratio" property on the sink pads.
479
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).
484
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.
489
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
493     GLib main loop).
494
495 -   openh264enc allows to change the encoding bitrate dynamically at
496     runtime now
497
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)
501
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.
506
507 -   The MPEG-TS muxer and demuxer (tsmux, tsdemux) now have support for
508     JPEG2000
509
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.
515
516 -   The decklink plugin for Blackmagic capture and playback cards have
517     seen numerous improvements:
518
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.
523
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.
527
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
533     pausing/seeking.
534
535 -   support for more than 16 devices, without any artificial limit
536
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.
551
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.
560
561 -   kmssink has seen lots of fixes and improvements in this cycle,
562     including:
563
564 -   Raspberry Pi (vc4) and Xilinx DRM driver support
565
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
569
570 -   GstVideoCropMeta support
571
572 Plugin and library moves
573
574 MPEG-1 audio (mp1, mp2, mp3) decoders and encoders moved to -good
575
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
582 plugins if desired.
583
584 In particular these are:
585
586 -   mpg123audiodec: an mp1/mp2/mp3 audio decoder using libmpg123
587 -   lamemp3enc: an mp3 encoder using LAME
588 -   twolamemp2enc: an mp2 encoder using TwoLAME
589
590 GstAggregator moved from -bad to core
591
592 GstAggregator has been moved from gst-plugins-bad to the base library in
593 GStreamer and is now stable API.
594
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.
603
604 GstAudioAggregator, audiomixer and audiointerleave moved from -bad to -base
605
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.
610
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.
613
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
618 most scenarios.
619
620 Similarly, audiointerleave replaces the 'interleave' element which did
621 not handle live inputs or non-aligned inputs very robustly.
622
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
626 handled correctly.
627
628 We hope to move the video equivalents (GstVideoAggregator and
629 compositor) to -base in the next cycle, i.e. for 1.16.
630
631 GStreamer OpenGL integration library and plugin moved from -bad to -base
632
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
639 for 1.16 though.
640
641 This is quite a milestone, thanks to everyone who worked to make this
642 happen!
643
644 Qt QML and GTK plugins moved from -bad to -good
645
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:
652
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
656     dangling pointer.
657
658 -   EGL is now supported with the X11 backend, which works e.g. on
659     Freescale imx6
660
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).
672
673 GstPhysMemoryAllocator interface moved from -bad to -base
674
675 GstPhysMemoryAllocator is a marker interface for allocators with
676 physical address backed memory.
677
678 Plugin removals
679
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
682     these years.
683
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
687     to simply remove it.
688
689 API removals
690
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
693     years.
694
695
696 Miscellaneous changes
697
698 -   The video support library has gained support for a few new pixel
699     formats:
700 -   NV16_10LE32: 10-bit variant of NV16, packed into 32bit words (plus 2
701     bits padding)
702 -   NV12_10LE32: 10-bit variant of NV12, packed into 32bit words (plus 2
703     bits padding)
704 -   GRAY10_LE32: 10-bit grayscale, packed in 32bit words (plus 2 bits
705     padding)
706
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).
710
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.
715
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.
724
725 OpenGL integration
726
727 -   The GStreamer OpenGL integration library has moved to
728     gst-plugins-base and is now part of our stable API.
729
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.
735
736 -   Prefer wayland display over X11: As most Wayland compositors support
737     XWayland, the X11 backend would get selected.
738
739 -   gldownload can export dmabufs now, and glupload will advertise
740     dmabuf as caps feature.
741
742
743 Tracing framework and debugging improvements
744
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
763     of GStreamer.
764
765 -   'fakevideosink is a null sink for video data that advertises
766     video-specific metas ane behaves like a video sink. See above for
767     more details.
768
769 -   gst_util_dump_buffer() prints the content of a buffer to stdout.
770
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.
773
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
777     values.
778
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.
782
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.
798
799
800 Tools
801
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.
808
809 -   gst-launch-1.0 now generates a gstreamer pipeline diagram (.dot
810     file) whenever SIGHUP is sent to it on Linux/*nix systems.
811
812 -   gst-discoverer-1.0 can now analyse live streams such as rtsp:// URIs
813
814
815 GStreamer RTSP server
816
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!
819
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.
829
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.
835
836 -   rtspclientsink has gained an "accept-certificate" signal for
837     manually checking a TLS certificate for validity.
838
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
844     properly.
845
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
849     before.
850
851 -   Fix corner case issue where the wrong mount point was found when
852     there were multiple mount points with a common prefix.
853
854
855 GStreamer VAAPI
856
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.
860
861 -   VA initialization was fixed when it is used in headless systems.
862
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.
866
867 -   VA display cache was removed.
868
869 -   libva's log messages are now redirected into the GStreamer log
870     handler.
871
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.
875
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.
879
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.
883
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.
886
887 -   Added support for libva-2.0 (VA-API 1.0).
888
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
891     metas.
892
893 -   Encoders for H.264 and H.265 set the media profile by the downstream
894     caps.
895
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
898     and platforms).
899
900 -   H.264 encoder supports for P and B hierarchical prediction modes.
901
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.
905
906 -   VP8 and VP9 encoders support constant bit-rate mode (CBR).
907
908 -   VP8, VP9 and H.265 encoders support variable bit-rate mode (VBR).
909
910 -   Resurrected GstGLUploadTextureMeta handling for EGL backends.
911
912 -   H.265 encoder can configure its number of reference frames via the
913     refs property.
914
915 -   Add H.264 encoder mbbrc property, which controls the macro-block
916     bitrate as auto, on or off.
917
918 -   Add H.264 encoder temporal-levels property, to select the number of
919     temporal levels to be included.
920
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.
924
925 -   vaapisink was demoted to marginal rank on Wayland because COGL
926     cannot display YUV surfaces.
927
928
929 GStreamer Editing Services and NLE
930
931 -   Handle crossfade in complex scenarios by using the new
932     compositorpad::crossfade-ratio property
933
934 -   Add API allowing to stop using proxies for clips in the timeline
935
936 -   Allow management of none square pixel aspect ratios by allowing
937     application to deal with them in the way they want
938
939 -   Misc fixes around the timeline editing API
940
941
942 GStreamer validate
943
944 -   Handle running scenarios on live pipelines (in the "content sense",
945     not the GStreamer one)
946
947 -   Implement RTSP support with a basic server based on gst-rtsp-server,
948     and add RTSP 1.0 and 2.0 integration tests
949
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
954     descriptive way
955
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.
959
960 -   Misc optimization in the launcher, making the tests run much faster.
961
962
963 GStreamer C# bindings
964
965 -   Port to the meson build system, autotools support has been removed
966
967 -   Use a new GlibSharp version, set as a meson subproject
968
969 -   Update wrapped API to GStreamer 1.14
970
971 -   Removed the need for "glue" code
972
973 -   Provide a nuget
974
975 -   Misc API fixes
976
977
978 Build and Dependencies
979
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.
983
984 -   gst-plugins-bad no longer depends on the libschroedinger Dirac codec
985     library.
986
987 -   The srtp plugin can now also be built against libsrtp2.
988
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.
995
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.
1001
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.
1012
1013
1014 Note to packagers and distributors
1015
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
1020 section.
1021
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
1026 breakages.
1027
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).
1032
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
1037 same time.
1038
1039
1040 Platform-specific improvements
1041
1042 Android
1043
1044 -   ahcsrc (Android camera source) does autofocus now
1045
1046 macOS and iOS
1047
1048 -   this section will be filled in shortly {FIXME!}
1049
1050 Windows
1051
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:
1059
1060 -   support for more than 2 channels
1061
1062 -   a new "low-latency" property to enable low-latency operation (which
1063     should always be safe to enable)
1064
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.
1072
1073 -   set realtime thread priority to avoid glitches
1074
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.
1078
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
1082
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.
1087
1088
1089 Contributors
1090
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,
1139
1140 ... and many others who have contributed bug reports, translations, sent
1141 suggestions or helped testing.
1142
1143
1144 Bugs fixed in 1.14
1145
1146 More than 800 bugs have been fixed during the development of 1.14.
1147
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.
1151
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.
1154
1155
1156 Stable 1.14 branch
1157
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.
1163
1164 1.14.0
1165
1166 1.14.0 was released on 19 March 2018.
1167
1168 1.14.1
1169
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.
1172
1173 This release only contains bugfixes and it should be safe to update from
1174 1.14.0.
1175
1176
1177 Known Issues
1178
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.
1182
1183
1184 Schedule for 1.16
1185
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.
1189
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.
1193
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.
1196
1197 ------------------------------------------------------------------------
1198
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._
1202
1203 _License: CC BY-SA 4.0_