Codebase list gst-python1.0 / upstream/1.18.0
New upstream version 1.18.0 Sebastian Dröge 3 years ago
6 changed file(s) with 2125 addition(s) and 83 deletion(s). Raw diff Collapse all Expand all
0 === release 1.18.0 ===
1
2 2020-09-08 00:09:33 +0100 Tim-Philipp Müller <tim@centricular.com>
3
4 * ChangeLog:
5 * NEWS:
6 * RELEASE:
7 * gst-python.doap:
8 * meson.build:
9 Release 1.18.0
10
11 2020-08-20 16:03:36 -0400 Thibault Saunier <tsaunier@igalia.com>
12
13 * plugin/gstpythonplugin.c:
14 Fix distcheck by setting up overrides in plugin init
15 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-python/-/merge_requests/40>
16
017 === release 1.17.90 ===
118
219 2020-08-20 16:16:07 +0100 Tim-Philipp Müller <tim@centricular.com>
+2072
-77
NEWS less more
00 GStreamer 1.18 Release Notes
11
2 These release notes are a placeholder, please bear with us while we
3 finish writing up the real thing.
4
5 GStreamer 1.18.0 has not yet been released. It is scheduled for release
6 in late August / early September 2020.
7
8 1.17.x is the unstable development series that is currently being
9 developed in the git master branch and which will eventually result in
10 1.18, and 1.17.90 is the current 1.18 pre-release in that series.
11
12 1.18 will be backwards-compatible to the stable 1.16, 1.14, 1.12, 1.10,
13 1.8, 1.6, 1.4, 1.2 and 1.0 release series.
2 GStreamer 1.18.0 was originally released on 7 September 2020.
143
154 See https://gstreamer.freedesktop.org/releases/1.18/ for the latest
165 version of this document.
176
18 Last updated: Wednesday 20 August 2020, 11:00 UTC (log)
7 Last updated: Monday 7 September 2020, 10:30 UTC (log)
198
209 Introduction
2110
2817
2918 Highlights
3019
31 - FIXME
20 - GstTranscoder: new high level API for applications to transcode
21 media files from one format to another
22
23 - High Dynamic Range (HDR) video information representation and
24 signalling enhancements
25
26 - Instant playback rate change support
27
28 - Active Format Description (AFD) and Bar Data support
29
30 - ONVIF trick modes support in both GStreamer RTSP server and client
31
32 - Hardware-accelerated video decoding on Windows via DXVA2 /
33 Direct3D11
34
35 - Microsoft Media Foundation plugin for video capture and
36 hardware-accelerated video encoding on Windows
37
38 - qmlgloverlay: New overlay element that renders a QtQuick scene over
39 the top of an input video stream
40
41 - New imagesequencesrc element to easily create a video stream from a
42 sequence of jpeg or png images
43
44 - dashsink: Add new sink to produce DASH content
45
46 - dvbsubenc: DVB Subtitle encoder element
47
48 - TV broadcast compliant MPEG-TS muxing with constant bitrate muxing
49 and SCTE-35 support
50
51 - rtmp2: new RTMP client source and sink element implementation
52
53 - svthevcenc: new SVT-HEVC-based H.265 video encoder
54
55 - vaapioverlay compositor element using VA-API
56
57 - rtpmanager support for Google’s Transport-Wide Congestion Control
58 (twcc) RTP extension
59
60 - splitmuxsink and splitmuxsrc gained support for auxiliary video
61 streams
62
63 - webrtcbin now contains some initial support for renegotiation
64 involving stream addition and removal
65
66 - New RTP source and sink elements to easily set up RTP streaming via
67 rtp:// URIs
68
69 - New Audio Video Transport Protocol (AVTP) plugin for Time-Sensitive
70 Applications
71
72 - Support for the Video Services Forum’s Reliable Internet Stream
73 Transport (RIST) TR-06-1 Simple Profile
74
75 - Universal Windows Platform (UWP) support
76
77 - rpicamsrc element for capturing from the Raspberry Pi camera
78
79 - RTSP Server TCP interleaved backpressure handling improvements as
80 well as support for Scale/Speed headers
81
82 - GStreamer Editing Services gained support for nested timelines,
83 per-clip speed rate control and the OpenTimelineIO format.
84
85 - Autotools build system has been removed in favour of Meson
3286
3387 Major new features and changes
3488
35 Noteworthy new API
36
37 - FIXME
38
39 New Elements
40
41 - FIXME
89 Noteworthy new features and API
90
91 Instant playback rate changes
92
93 Changing the playback rate as quickly as possible so far always required
94 a flushing seek. This generally works, but has the disadvantage of
95 flushing all data from the playback pipeline and requiring the demuxer
96 or parser to do a full-blown seek including resetting its internal state
97 and resetting the position of the data source. It might also require
98 considerable decoding effort to get to the right position to resume
99 playback from at the higher rate.
100
101 This release adds a new mechanism to achieve quasi-instant rate changes
102 in certain playback pipelines without interrupting the flow of data in
103 the pipeline. This is activated by sending a seek with the
104 GST_SEEK_FLAG_INSTANT_RATE_CHANGE flag and start_type = stop_type =
105 GST_SEEK_TYPE_NONE. This flag does not work for all pipelines, in which
106 case it is necessary to fall back to sending a full flushing seek to
107 change the playback rate. When using this flag, the seek event is only
108 allowed to change the current rate and can modify the trickmode flags
109 (e.g. keyframe only or not), but it is not possible to change the
110 current playback position, playback direction or do a flush.
111
112 This is particularly useful for streaming use cases like HLS or DASH
113 where the streaming download should not be interrupted when changing
114 rate.
115
116 Instant rate changing is handled in the pipeline in a specific sequence
117 which is detailed in the seeking design docs. Most elements don’t need
118 to worry about this, only elements that sync to the clock need some
119 special handling which is implemented in the GstBaseSink base class, so
120 should be taken care of automatically in most normal playback pipelines
121 and sink elements.
122
123 See Jan’s GStreamer Conference 2019 talk “Changing Playback Rate
124 Instantly” for more information.
125
126 You can try this feature by passing the -i command line option to
127 gst-play-1.0. It is supported at least by qtdemux, tsdemux, hlsdemux,
128 and dashdemux.
129
130 Google Transport-Wide Congestion Control
131
132 rtpmanager now supports the parsing and generating of RTCP messages for
133 the Google Transport-Wide Congestion Control RTP Extension, as described
134 in:
135 https://tools.ietf.org/html/draft-holmer-rmcat-transport-wide-cc-extensions-01.
136
137 This “just” provides the required plumbing/infrastructure, it does not
138 actually make effect any actual congestion control on the sender side,
139 but rather provides information for applications to use to make such
140 decisions.
141
142 See Håvard’s “Google Transport-Wide Congestion Control” talk for more
143 information about this feature.
144
145 GstTranscoder: a new high-level transcoding API for applications
146
147 The new GstTranscoder library, along with transcodebin and
148 uritranscodebin elements, provides high level API for applications to
149 transcode media files from one format to another. Watch Thibault’s talk
150 “GstTranscoder: A High Level API to Quickly Implement Transcoding
151 Capabilities in your Applications” for more information.
152
153 This also comes with a gst-transcoder-1.0 command line utility to
154 transcode one URI into another URI based on the specified encoding
155 profile.
156
157 Active Format Description (AFD) and Bar Data support
158
159 The GstVideo Ancillary Data API has gained support for Active Format
160 Description (AFD) and Bar data.
161
162 This includes various two new buffer metas: GstVideoAFDMeta and
163 GstVideoBarMeta.
164
165 GStreamer now also parses and extracts AFD/Bar data in the h264/h265
166 video parsers, and supports both capturing them and outputting them in
167 the decklink elements. See Aaron’s lightning talk at the GStreamer
168 Conference for more background.
169
170 ONVIF trick modes support in both GStreamer RTSP server and client
171
172 - Support for the various trick modes described in section 6 of the
173 ONVIF streaming spec has been implemented in both gst-rtsp-server
174 and rtspsrc.
175 - Various new properties in rtspsrc must be set to take advantage of
176 the ONVIF support
177 - Examples are available here: test-onvif-server.c and
178 test-onvif-client.c
179 - Watch Mathieu Duponchelle’s talk “Implementing a Trickmode Player
180 with ONVIF, RTSP and GStreamer” for more information and a live
181 demo.
182
183 GStreamer Codecs library with decoder base classes
184
185 This introduces a new library in gst-plugins-bad which contains a set of
186 base classes that handle bitstream parsing and state tracking for the
187 purpose of decoding different codecs. Currently H264, H265, VP8 and VP9
188 are supported. These bases classes are meant primarily for internal use
189 in GStreamer and are used in various decoder elements in connection with
190 low level decoding APIs like DXVA, NVDEC, VAAPI and V4L2 State Less
191 decoders. The new library is named gstreamer-codecs-1.0 /
192 libgstcodecs-1.0 and is not yet guaranteed to be API stable across major
193 versions.
194
195 MPEG-TS muxing improvements
196
197 The GStreamer MPEG-TS muxer has seen major improvements on various
198 fronts in this cycle:
199
200 - It has been ported to the GstAggregator base class which means it
201 can work in defined-latency mode with live input sources and
202 continue streaming if one of the inputs stops producing data.
203
204 - atscmux, a new ATSC-specific tsmux subclass
205
206 - Constant Bit Rate (CBR) muxing support via the new bitrate property
207 which allows setting the target bitrate in bps. If this is set the
208 muxer will insert null packets as padding to achieve the desired
209 multiplex-wide constant bitrate.
210
211 - compliance fixes for TV broadcasting use cases (esp. ATSC). See
212 Jan’s talk “TV Broadcast compliant MPEG-TS” for details.
213
214 - Streams can now be added and removed at runtime: Until now, any
215 streams in tsmux had to be present when the element started
216 outputting its first buffer. Now they can appear at any point during
217 the stream, or even disappear and reappear later using the same PID.
218
219 - new pcr-interval property allows applications to configure the
220 desired interval instead of hardcoding it
221
222 - basic SCTE-35 support. This is enabled by setting the scte-35-pid
223 property on the muxer. Sending SCTE-35 commands is then done by
224 creating the appropriate SCTE-35 GstMpegtsSection and sending them
225 on the muxer.
226
227 - MPEG-2 AAC handling improvements
228
229 New elements
230
231 - New qmlgloverlay element for rendering a QtQuick scene over the top
232 of a video stream. qmlgloverlay requires that Qt support adopting an
233 external OpenGL context and is known to work on X11 and Windows.
234 Wayland is known not to work due to limitations within Qt. Check out
235 the example to see how it works.
236
237 - The clocksync element is a generic element that can be placed in a
238 pipeline to synchronise passing buffers to the clock at that point.
239 This is similar to identity sync=true, but because it isn’t
240 GstBaseTransform-based, it can process GstBufferLists without
241 breaking them into separate GstBuffers. It is also more discoverable
242 than the identity option. Note that you do not need to insert this
243 element into your pipeline to make GStreamer sync to the pipeline
244 clock, this is usually handled automatically by the elements in the
245 pipeline (sources and sinks mostly). This element is useful to feed
246 non-live input such as local files into elements that expect live
247 input such as webrtcbin.`
248
249 - New imagesequencesrc element to easily create a video stream from a
250 sequence of JPEG or PNG images (or any other encoding where the type
251 can be detected), basically a multifilesrc made specifically for
252 image sequences.
253
254 - rpicamsrc element for capturing raw or encoded video (H.264, MJPEG)
255 from the Raspberry Pi camera. This works much like the popular
256 raspivid command line utility but outputs data nicely timestamped
257 and formatted in order to integrate nicely with other GStreamer
258 elements. Also comes with a device provider so applications can
259 discover the camera if available.
260
261 - aatv and cacatv video filters that transform video ASCII art style
262
263 - avtp: new Audio Video Transport Protocol (AVTP) plugin for Linux.
264 See Andre Guedes’ talk “Audio/Video Bridging (AVB) support in
265 GStreamer” for more details.
266
267 - clockselect: a pipeline element that enables clock selection/forcing
268 via gst-launch pipeline syntax.
269
270 - dashsink: Add new sink to produce DASH content. See Stéphane’s talk
271 or blog post for details.
272
273 - dvbsubenc: a DVB subtitle encoder element
274
275 - microdns: a libmicrodns-based mdns device provider to discover RTSP
276 cameras on the local network
277
278 - mlaudiosink: new audio sink element for the Magic Leap platform,
279 accompanied by an MLSDK implementation in the amc plugin
280
281 - msdkvp9enc: VP9 encoder element for the Intel MediaSDK
282
283 - rist: new plugin implementing support for the Video Services Forum’s
284 Reliable Internet Stream Transport (RIST) TR-06-1 Simple Profile.
285 See Nicolas’ blog post “GStreamer support for the RIST
286 Specification” for more details.
287
288 - rtmp2: new RTMP client source and sink elements with fully
289 asynchronous network operations, better robustness and additional
290 features such as handling ping and stats messages, and adobe-style
291 authentication. The new rtmp2src and rtmp2sink elements should be
292 API-compatible with the old rtmpsrc / rtmpsink elements and should
293 work as drop-in replacements.
294
295 - new RTP source and sink elements to easily set up RTP streaming via
296 rtp:// URIs: The rtpsink and rtpsrc elements add an URI interface so
297 that streams can be decoded with decodebin using rtp:// URIs. These
298 can be used as follows: ``` gst-launch-1.0 videotestsrc ! x264enc !
299 rtph264pay config-interval=3 ! rtpsink uri=rtp://239.1.1.1:1234
300
301 gst-launch-1.0 videotestsrc ! x264enc ! rtph264pay config-interval=1
302 ! rtpsink uri=rtp://239.1.2.3:5000 gst-launch-1.0 rtpsrc
303 uri=rtp://239.1.2.3:5000?encoding-name=H264 ! rtph264depay !
304 avdec_h264 ! videoconvert ! xvimagesink
305
306 gst-launch-1.0 videotestsrc ! avenc_mpeg4 ! rtpmp4vpay
307 config-interval=1 ! rtpsink uri=rtp://239.1.2.3:5000 gst-launch-1.0
308 rtpsrc uri=rtp://239.1.2.3:5000?encoding-name=MP4V-ES ! rtpmp4vdepay
309 ! avdec_mpeg4 ! videoconvert ! xvimagesink ```
310
311 - svthevcenc: new SVT-HEVC-based H.265 video encoder
312
313 - switchbin: new helper element which chooses between a set of
314 processing chains (paths) based on input caps, and changes the
315 active chain if new caps arrive. Paths are child objects, which are
316 accessed by the GstChildProxy interface. See the switchbin
317 documentation for a usage example.
318
319 - vah264dec: new experimental va plugin with an element for H.264
320 decoding with VA-API using GStreamer’s new stateless decoder
321 infrastructure (see Linux section below).
322
323 - v4l2codecs: introduce an V4L2 CODECs Accelerator supporting the new
324 CODECs uAPI in the Linux kernel (see Linux section below)
325
326 - zxing new plugin to detect QR codes and barcodes, based on libzxing
327
328 - also see the Rust plugins section below which contains plenty of new
329 exciting plugins written in Rust!
42330
43331 New element features and additions
44332
45 - FIXME
333 GStreamer core
334
335 - filesink: Add a new “full” buffer mode. Previously the default and
336 full modes were the same. Now the default mode is like before: it
337 accumulates all buffers in a buffer list until the threshold is
338 reached and then writes them all out, potentially in multiple
339 writes. The new full mode works by always copying memory to a single
340 memory area and writing everything out with a single write once the
341 threshold is reached.
342
343 - multiqueue: Add stats property and
344 current-level-{buffers, bytes, time} pad properties to query the
345 current levels of the corresponding internal queue.
346
347 Plugins Base
348
349 - alsa: implement a device provider
350
351 - alsasrc: added use-driver-timestamp property to force use of
352 pipeline timestamps (and disable driver timestamps) if so desired
353
354 - audioconvert: fix changing the mix-matrix property at runtime
355
356 - appsrc: added support for segment forwarding or custom GstSegments
357 via GstSample, enabled via the handle-segment-change property. This
358 only works for segments in TIME format for now.
359
360 - compositor: various performance optimisations, checkerboard drawing
361 fixes, and support for VUYA format
362
363 - encodebin: Fix and refactor smart encoding; ensure that a single
364 segment is pushed into encoders; improve force-key-unit event
365 handling.
366
367 - opusenc: Add low delay option (audio-type=restricted-lowdelay) to
368 disable the SILK layer and achieve only 5ms delay.
369
370 - opusdec: add stats property to retrieve various decoder statistics.
371
372 - uridecodebin3: Let decodebin3 do its stream selection if no one
373 answers
374
375 - decodebin3: Avoid overriding explicit user selection of streams
376
377 - playbin: add flag to force use of software decoders over any
378 hardware decoders that might also be available
379
380 - playbin3, playbin: propagate sink context
381
382 - rawvideoparse: Fix tiling support, allow setting colorimetry
383
384 - subparse: output plain utf8 text instead of pango-markup formatted
385 text if downstream requires it, useful for interop with elements
386 that only accept utf8-formatted subtitles such as muxers or closed
387 caption converters.
388
389 - tcpserversrc, tcpclientsrc: add stats property with TCP connection
390 stats (some are only available on Linux though)
391
392 - timeoverlay: add show-times-as-dates, datetime-format and
393 datetime-epoch properties to display times with dates
394
395 - videorate: Fix changing rate property during playback; reverse
396 playback fixes; update QoS events taking into account our rate
397
398 - videoscale: pass through and transform size sensitive metas instead
399 of just dropping them
400
401 Plugins Good
402
403 - avidemux can handle H.265 video now. Our advice remains to
404 immediately cease all contact and communication with anyone who
405 hands you H.265 video in an AVI container, however.
406
407 - avimux: Add support for S24LE and S32LE raw audio and v210 raw video
408 formats; support more than 2 channels of raw audio.
409
410 - souphttpsrc: disable session sharing and cookie jar when the cookies
411 property is set; correctly handle seeks past the end of the content
412
413 - deinterlace: new YADIF deinterlace method which should provide
414 better quality than the existing methods and is LGPL licensed;
415 alternate fields are supported as input to the deinterlacer as well
416 now, and there were also fixes for switching the deinterlace mode on
417 the fly.
418
419 - flvmux: in streamable mode allow adding new pads even if the initial
420 header has already been written. Old clients will only process the
421 initial stream, new clients will get a header with the new streams.
422 The skip-backwards-streams property can be used to force flvmux to
423 skip and drop a few buffers rather than produce timestamps that go
424 backward and confuse librtmp-based clients. There’s also better
425 handling for timestamp rollover when streaming for a long time.
426
427 - imagefreeze: Add live mode, which can be enabled via the new is-live
428 property. In this mode frames will only be output in PLAYING state
429 according to the negotiated framerate, skipping frames if the output
430 can’t keep up (e.g. because it’s blocked downstream). This makes it
431 possible to actually use imagefreeze in live pipelines without
432 having to manually ensure somehow that it starts outputting at the
433 current running time and without still risking to fall behind
434 without recovery.
435
436 - matroskademux, qtdemux: Provide audio lead-in for some lossy formats
437 when doing accurate seeks, to make sure we can actually decode
438 samples at the desired position. This is especially important for
439 non-linear audio/video editing use-cases.
440
441 - matroskademux, matroskamux: Handle interlaced field order (tff, bff)
442
443 - matroskamux:
444
445 - new offset-to-zero property to offset all streams to start at
446 zero. This takes the timestamp of the earliest stream and
447 offsets it so that it starts at 0. Some software (VLC,
448 ffmpeg-based) does not properly handle Matroska files that start
449 at timestamps much bigger than zero, which could happen with
450 live streams.
451 - added a creation-time property to explicitly set the creation
452 time to write into the file headers. Useful when remuxing, for
453 example, but also for live feeds where the DateUTC header can be
454 set a UTC timestamp corresponding to the beginning of the file.
455 - the muxer now also always waits for caps on sparse streams, and
456 warns if caps arrive after the header has already been sent,
457 otherwise the subtitle track might be silently absent in the
458 final file. This might affect applications that send sparse data
459 into matroskamux via an appsrc element, which will usually not
460 send out the initial caps before it sends out the first buffer.
461
462 - pulseaudio: device provider improvements: fix discovery of
463 newly-added devices and hide the alsa device provider if we provide
464 alsa devices
465
466 - qtdemux: raw audio handling improvements, support for AC4 audio, and
467 key-units trickmode interval support
468
469 - qtmux:
470
471 - was ported to the GstAggregator base class which allows for
472 better handling of live inputs, but might entail minor
473 behavioural changes for sparse inputs if inputs are not live.
474 - has also gained a force-create-timecode-trak property to create
475 a timecode trak in non-mov flavors, which may not be supported
476 by Apple but is supported by other software such as Final Cut
477 Pro X
478 - also a force-chunks property to force the creation of chunks
479 even in single-stream files, which is required for Apple ProRes
480 certification.
481 - also supports 8k resolutions in prefill mode with ProRes.
482
483 - rtpbin gained a request-jitterbuffer signal which allows
484 applications to plug in their own jitterbuffer implementation such
485 as the threadsharing jitterbuffer from the Rust plugins, for
486 example.
487
488 - rtprtxsend: add clock-rate-map property to allow generic RTP input
489 caps without a clock-rate whilst still supporting the max-size-time
490 property for bundled streams.
491
492 - rtpssrcdemux: introduce max-streams property to guard against
493 attacks where the sender changes SSRC for every RTP packet.
494
495 - rtph264pay, rtph264pay: implement STAP-A and various aggregation
496 modes controled by the new aggegrate-mode property: none to not
497 aggregate NAL units (as before), zero-latency to aggregate NAL units
498 until a VCL or suffix unit is included, or max to aggregate all NAL
499 units with the same timestamp (which adds one frame of latency). The
500 default has been kept at none for backwards compatibility reasons
501 and because various RTP/RTSP implementions don’t handle aggregation
502 well. For WebRTC use cases this should be set to zero-latency,
503 however.
504
505 - rtpmp4vpay: add support for config-interval=-1 to resend headers
506 with each IDR keyframe, like other video payloaders.
507
508 - rtpvp8depay: Add wait-for-keyframe property for waiting until the
509 next keyframe after packet loss. Useful if the video stream was not
510 encoded with error resilience enabled, in which case packet loss
511 tends to cause very bad artefacts when decoding, and waiting for the
512 next keyframe instead improves user experience considerably.
513
514 - splitmuxsink and splitmuxsrc can now handle auxiliary video streams
515 in addition to the primary video stream. The primary video stream is
516 still used to select fragment cut points at keyframe boundaries.
517 Auxilliary video streams may be broken up at any packet - so
518 fragments may not start with a keyframe for those streams.
519
520 - splitmuxsink:
521
522 - new muxer-preset and sink-preset properties for setting
523 muxer/sink presets
524 - a new start-index property to set the initial fragment id
525 - and a new muxer-pad-map property which explicitly maps
526 splitmuxsink pads to the muxer pads they should connect to,
527 overriding the implicit logic that tries to match pads but
528 yields arbitrary names.
529 - Also includes the actual sink element in the fragment-opened and
530 fragment-closed element messages now, which is especially useful
531 for sinks without a location property or when finalisation of
532 the fragments is done asynchronously.
533
534 - videocrop: add support for Y444, Y41B and Y42B pixel formats
535
536 - vp8enc, vp9enc: change default value of VP8E_SET_STATIC_THRESHOLD
537 from 0 to 1 which matches what Google WebRTC does and results in
538 lower CPU usage; also added a new bit-per-pixel property to select a
539 better default bitrate
540
541 - v4l2: add support for ABGR, xBGR, RGBA, and RGBx formats and for
542 handling interlaced video in alternate fields interlace mode (one
543 field per buffer instead of one frame per picture with both fields
544 interleaved)
545
546 - v4l2: Profile and level probing support for H264, H265, MPEG-4,
547 MPEG-2, VP8, and VP9 video encoders and decoders
548
549 Plugins Ugly
550
551 - asfdemux: extract more metadata: disc number and disc count
552
553 - x264enc:
554
555 - respect YouTube bitrate recommendation when user sets the
556 YouTube profile preset
557 - separate high-10 video formats from 8-bit formats to improve
558 depth negotiation and only advertise suitable input raw formats
559 for the desired output depth
560 - forward downstream colorimetry and chroma-site restrictions to
561 upstream elements
562 - support more color primaries/mappings
563
564 Plugins Bad
565
566 - av1enc: add threads, row-mt and tile-{columns,rows} properties for
567 this AOMedia AV1 encoder
568
569 - ccconverter: implement support for CDP framerate conversions
570
571 - ccextractor: Add remove-caption-meta property to remove caption
572 metas from the outgoing video buffers
573
574 - decklink: add support for 2K DCI video modes, widescreen NTSC/PAL,
575 and for parsing/outputting AFD/Bar data. Also implement a simple
576 device provider for Decklink devices.
577
578 - dtlsrtpenc: add rtp-sync property which synchronises RTP streams to
579 the pipeline clock before passing them to funnel for merging with
580 RTCP.
581
582 - fdkaac: also decode MPEG-2 AAC; encoder now supports more
583 multichannel/surround sound layouts
584
585 - hlssink2: add action signals for custom playlist/fragment handling:
586 Instead of always going through the file system API we allow the
587 application to modify the behaviour. For the playlist itself and
588 fragments, the application can provide a GOutputStream. In addition
589 the sink notifies the application whenever a fragment can be
590 deleted.
591
592 - interlace: can now output data in alternate fields mode; added field
593 switching mode for 2:2 field pattern
594
595 - iqa: Add a mode property to enable strict mode that checks that all
596 the input streams have the exact same number of frames; also
597 implement the child proxy interface
598
599 - mpeg2enc: add disable-encode-retries property for lower CPU usage
600
601 - mpeg4videoparse: allow re-sending codec config at IDR via
602 config-interval=-1
603
604 - mpegtsparse: new alignment property to determine number of TS
605 packets per output buffer, useful for feeding an MPEG-TS stream for
606 sending via udpsink. This can be used in combination with the
607 split-on-rai property that makes sure to start a new output buffer
608 for any TS packet with the Random Access Indicator set. Also set
609 delta unit buffer flag on non-random-access buffers.
610
611 - mpegdemux: add an ignore-scr property to ignore the SCR in
612 non-compliant MPEG-PS streams with a broken SCR, which will work as
613 long as PTS/DTS in the PES header is consistently increasing.
614
615 - tsdemux:
616
617 - add an ignore-pcr property to ignore MPEG-TS streams with broken
618 PCR streams on which we can’t reliably recover correct
619 timestamps.
620 - new latency property to allow applications to lower the
621 advertised worst-case latency of 700ms if they know their
622 streams support this (must have timestamps in higher frequency
623 than required by the spec)
624 - support for AC4 audio
625
626 - msdk - Intel Media SDK plugin for hardware-accelerated video
627 decoding and encoding on Windows and Linux:
628
629 - mappings for more video formats: Y210, Y410, P012_LE, Y212_LE
630 - encoders now support bitrate changes and input format changes in
631 playing state
632 - msdkh264enc, msdkh265enc: add support for CEA708 closed caption
633 insertion
634 - msdkh264enc, msdkh265enc: set Region of Interest (ROI) region
635 from ROI metas
636 - msdkh264enc, msdkh265enc: new tune property to enable low-power
637 mode
638 - msdkh265enc: add support 12-bit 4:2:0 encoding and 8-bit 4:2:2
639 encoding and VUYA, Y210, and Y410 as input formats
640 - msdkh265enc: add support for screen content coding extension
641 - msdkh265dec: add support for main-12/main-12-intra,
642 main-422-10/main-422-10-intra 10bit,
643 main-422-10/main-422-10-intra 8bit,
644 main-422-12/main-422-12-intra, main-444-10/main-444-10-intra,
645 main-444-12/main-444-12-intra, and main-444 profiles
646 - msdkvp9dec: add support for 12-bit 4:4:4
647 - msdkvpp: add support for Y410 and Y210 formats, cropping via
648 properties, and a new video-direction property.
649
650 - mxf: Add support for CEA-708 CDP from S436 essence tracks. mxfdemux
651 can now handle Apple ProRes
652
653 - nvdec: add H264 + H265 stateless codec implementation nvh264sldec
654 and nvh265sldec with fewer features but improved latency. You can
655 set the environment variable GST_USE_NV_STATELESS_CODEC=h264 to use
656 the stateless decoder variant as nvh264dec instead of the “normal”
657 NVDEC decoder implementation.
658
659 - nvdec: add support for 12-bit 4:4:4/4:2:0 and 10-bit 4:2:0 decoding
660
661 - nvenc:
662
663 - add more rate-control options, support for B-frame encoding (if
664 device supports it), an aud property to toggle Access Unit
665 Delimiter insertion, and qp-{min,max,const}-{i,p,b} properties.
666 - the weighted-pred property enables weighted prediction.
667 - support for more input formats, namely 8-bit and 10-bit RGB
668 formats (BGRA, RGBA, RGB10A2, BGR10A2) and YV12 and VUYA.
669 - on-the-fly resolution changes are now supported as well.
670 - in case there are multiple GPUs on the system, there are also
671 per-GPU elements registered now, since different devices will
672 have different capabilities.
673 - nvh265enc can now support 10-bit YUV 4:4:4 encoding and 8-bit
674 4:4:4 / 10-bit 4:2:0 formats up to 8K resolution (with some
675 devices). In case of HDR content HDR related SEI nals will be
676 inserted automatically.
677
678 - openjpeg: enable multi-threaded decoding and add support for
679 sub-frame encoding (for lower latency)
680
681 - rtponviftimestamp: add opt-out “drop-out-of-segment” property
682
683 - spanplc: new stats property
684
685 - srt: add support for IPv6 and for using hostnames instead of IP
686 addresses; add streamid property, but also allow passing the id via
687 the stream URI; add wait-for-connection property to srtsink
688
689 - timecodestamper: this element was rewritten with an updated API
690 (properties); it has gained many new properties, seeking support and
691 support for linear timecode (LTC) from an audio stream.
692
693 - uvch264src now comes with a device provider to advertise available
694 camera sources that support this interface (mostly Logitech C920s)
695
696 - wpe: Add software rendering support and support for mouse scroll
697 events
698
699 - x265enc: support more 8/10/12 bits 4:2:0, 4:2:2 and 4:4:4 profiles;
700 add support for mastering display info and content light level
701 encoding SEIs
702
703 gst-libav
704
705 - Add mapping for SpeedHQ video codec used by NDI
706
707 - Add mapping for aptX and aptX-HD
708
709 - avivf_mux: support VP9 and AV1
710
711 - avvidenc: shift output buffer timestamps and output segment by 1h
712 just like x264enc does, to allow for negative DTS.
713
714 - avviddec: Limit default number of decoder threads on systems with
715 more than 16 cores, as the number of threads used in avdec has a
716 direct impact on the latency of the decoder, which is of as many
717 frames as threads, so a large numbers of threads can make for
718 latency levels that can be problematic in some applications.
719
720 - avviddec: Add thread-type property that allows applications to
721 specify the preferred multithreading method (auto, frame, slice).
722 Note that thread-type=frame may introduce additional latency
723 especially in live pipelines, since it introduces a decoding delay
724 of number of thread frames.
46725
47726 Plugin and library moves
48727
49 - FIXME
728 - There were no plugin moves or library moves in this cycle.
729
730 - The rpicamsrc element was moved into -good from an external
731 repository on github.
50732
51733 Plugin removals
52734
53 The following plugins have been removed from gst-plugins-bad:
54
55 - FIXME
735 The following elements or plugins have been removed:
736
737 - The yadif video deinterlacing plugin from gst-plugins-bad, which was
738 one of the few GPL licensed plugins, has been removed in favour of
739 deinterlace method=yadif.
740
741 - The avdec_cdgraphics CD Graphics video decoder element from
742 gst-libav was never usable in GStreamer and we now have a cdgdec
743 element written in Rust in gst-plugins-rs to replace it.
744
745 - The VDPAU plugin has been unmaintained and unsupported for a very
746 long time and does not have the feature set we expect from
747 hardware-accelerated video decoders. It’s been superseded by the
748 nvcodec plugin leveraging NVIDIA’s NVDEC API.
56749
57750 Miscellaneous API additions
58751
59 - FIXME
60
61 Miscellaneous performance and memory optimisations
752 GStreamer core
753
754 - gst_task_resume(): This new API allows resuming a task if it was
755 paused, while leaving it in stopped state if it was stopped or not
756 started yet. This can be useful for callback-based driver workflows,
757 where you basically want to pause and resume the task when buffers
758 are notified while avoiding the race with a gst_task_stop() coming
759 from another thread.
760
761 - info: add printf extensions GST_TIMEP_FORMAT and GST_STIMEP_FORMAT
762 for printing GstClockTime/GstClockTimeDiff pointers, which is much
763 more convenient to use in debug log statements than the usual
764 GST_TIME_FORMAT-followed-by-GST_TIME_ARGS dance. Also add an
765 explicit GST_STACK_TRACE_SHOW_NONE enum value.
766
767 - gst_element_get_current_clock_time() and
768 gst_element_get_current_running_time(): new helper functions for
769 getting an element clock’s time, and the clock time minus base time,
770 respectively. Useful when adding additional input branches to
771 elements such as compositor, audiomixer, flvmux, interleave or
772 input-selector to determine initial pad offsets and such.
773
774 - seeking: Add GST_SEEK_FLAG_TRICKMODE_FORWARD_PREDICTED to just skip
775 B-frames during trick mode, showing both keyframes + P-frame, and
776 add support for it in h264parse and h265parse.
777
778 - elementfactory: add GST_ELEMENT_FACTORY_TYPE_HARDWARE to allow
779 elements to advertise that they are hardware-based or interact with
780 hardware. This has multiple applications:
781
782 - it makes it possible to easily differentiate hardware and
783 software based element implementations such as audio or video
784 encoders and decoders. This is useful in order to force the use
785 of software decoders for specific use cases, or to check if a
786 selected decoder is actually hardware-accelerated or not.
787 - elements interacting with hardware and their respective drivers
788 typically don’t know the actually supported capabilities until
789 the element is set into at least READY state and can open a
790 device handle and probe the hardware.
791
792 - gst_uri_from_string_escaped(): identical to gst_uri_from_string()
793 except that the userinfo and fragment components of the URI will not
794 be unescaped while parsing. This is needed for correctly parsing
795 usernames or passwords with : in them .
796
797 - paramspecs: new GstParamSpec flag GST_PARAM_CONDITIONALLY_AVAILABLE
798 to indicate that a property might not always exist.
799
800 - gst_bin_iterate_all_by_element_factory_name() finds elements in a
801 bin by factory name
802
803 - pad: gst_pad_get_single_internal_link() is a new convenience
804 function to return the single internal link of a pad, which is
805 useful e.g. to retrieve the output pad of a new multiqueue request
806 pad.
807
808 - datetime: Add constructors to create datetimes with timestamps in
809 microseconds, gst_date_time_new_from_unix_epoch_local_time_usecs()
810 and gst_date_time_new_from_unix_epoch_utc_usecs().
811
812 - gst_debug_log_get_lines() gets debug log lines formatted in the same
813 way the default log handler would print them
814
815 - GstSystemClock: Add GST_CLOCK_TYPE_TAI as GStreamer abstraction for
816 CLOCK_TAI, to support transmission offloading features where network
817 packets are timestamped with the time they are deemed to be actually
818 transmitted. Useful in combination with the new AVTP plugin.
819
820 - miscellaneous utility functions: gst_clear_uri(),
821 gst_structure_take().
822
823 - harness: Added gst_harness_pull_until_eos()
824
825 - GstBaseSrc:
826
827 - gst_base_src_new_segment() allows subclasses to update the
828 segment to be used at runtime from the ::create() function. This
829 deprecates gst_base_src_new_seamless_segment()
830 - gst_base_src_negotiate() allows subclasses to trigger format
831 renegotiation at runtime from inside the ::create() or ::alloc()
832 function
833
834 - GstBaseSink: new stats property and gst_base_sink_get_stats() method
835 to retrieve various statistics such as average frame rate and
836 dropped/rendered buffers.
837
838 - GstBaseTransform: gst_base_transform_reconfigure() is now public
839 API, useful for subclasses that need to completely re-implement the
840 ::submit_input_buffer() virtual method
841
842 - GstAggregator:
843
844 - gst_aggregator_update_segment() allows subclasses to update the
845 output segment at runtime. Subclasses should use this function
846 rather than push a segment event onto the source pad directly.
847 - new sample selection API:
848 - subclasses should now call gst_aggregator_selected_samples()
849 from their ::aggregate() implementation to signal that they
850 have selected the next samples they will aggregate
851 - GstAggregator will then emit the samples-selected signal
852 where handlers can then look up samples per pad via
853 gst_aggregator_peek_next_sample().
854 - This is useful for example to atomically update input pad
855 properties in mixer subclasses such as compositor.
856 Applications can now update properties with precise control
857 of when these changes will take effect, and for which input
858 buffer(s).
859 - gst_aggregator_finish_buffer_list() allows subclasses to push
860 out a buffer list, improving efficiency in some cases.
861 - a ::negotiate() virtual method was added, for consistency with
862 other base classes and to allow subclasses to completely
863 override the negotiation behaviour.
864 - the new ::sink_event_pre_queue() and ::sink_query_pre_queue()
865 virtual methods allow subclasses to intercept or handle
866 serialized events and queries before they’re queued up
867 internally.
868
869 GStreamer Plugins Base Libraries
870
871 Audio library
872
873 - audioaggregator, audiomixer: new output-buffer-duration-fraction
874 property which allows use cases such as keeping the buffers output
875 by compositor on one branch and audiomixer on another perfectly
876 aligned, by requiring the compositor to output a n/d frame rate, and
877 setting output-buffer-duration-fraction to d/n on the audiomixer.
878
879 - GstAudioDecoder: new max-errors property so applications can
880 configure at what point the decoder should error out, or tell it to
881 just keep going
882
883 - gst_audio_make_raw_caps() and gst_audio_formats_raw() are
884 bindings-friendly versions of the GST_AUDIO_CAPS_MAKE() C macro.
885
886 - gst_audio_info_from_caps() now handles encoded audio formats as well
887
888 PbUtils library
889
890 - GstEncodingProfile:
891 - Do not restrict number of similar profiles in a container
892 - add GstValue serialization function
893 - codec utils now support more H.264/H.265 profiles/levels and have
894 improved extension handling
895
896 RTP library
897
898 - rtpbasepayloader: Add scale-rtptime property for scaling RTP
899 timestamp according to the segment rate (equivalent to RTSP speed
900 parameter). This is useful for ONVIF trickmodes via RTSP.
901
902 - rtpbasepayload: add experimental property for embedding twcc
903 sequencenumbers for Transport-Wide Congestion Control (gated behind
904 the GST_RTP_ENABLE_EXPERIMENTAL_TWCC_PROPERTY environment
905 variable) - more generic API for enabling this is expected to land
906 in the next development cycle.
907
908 - rtcpbuffer: add RTPFB_TYPE_TWCC for Transport-Wide Congestion
909 Control
910
911 - rtpbuffer: add
912 gst_rtp_buffer_get_extension_onebyte_header_from_bytes()``, so that one can parse theGBytes`
913 returned by gst_rtp_buffer_get_extension_bytes()
914
915 - rtpbasedepayload: Add max-reorder property to make the
916 previously-hardcoded value when to consider a sender to have
917 restarted configurable. In some scenarios it’s particularly useful
918 to set max-reorder=0 to disable the behaviour that the depayloader
919 will drop packets: when max-reorder is set to 0 all
920 reordered/duplicate packets are considered coming from a restarted
921 sender.
922
923 RTSP library
924
925 - add gst_rtsp_url_get_request_uri_with_control() to create request
926 uri combined with control url
927
928 - GstRTSPConnection: add the possibility to limit the Content-Length
929 for RTSP messages via
930 gst_rtsp_connection_set_content_length_limit(). The same
931 functionality is also exposed in gst-rtsp-server.
932
933 SDP library
934
935 - add support for parsing the extmap attribute from caps and storing
936 inside caps The extmap attribute allows mapping RTP extension header
937 IDs to well-known RTP extension header specifications. See RFC8285
938 for details.
939
940 Tags library
941
942 - update to latest iso-code and support more languages
943
944 - add tags for acoustid id & acoustid fingerprint, plus MusicBrainz ID
945 handling fixes
946
947 Video library
948
949 - High Dynamic Range (HDR) video information representation and
950 signalling enhancements:
951
952 - New APIs for HDR video information representation and
953 signalling:
954 - GstVideoMasteringDisplayInfo: display color volume info as
955 per SMPTE ST 2086
956 - GstVideoContentLightLevel: content light level specified in
957 CEA-861.3, Appendix A.
958 - plus functions to serialise/deserialise and add them to or
959 parse them from caps
960 - gst_video_color_{matrix,primaries,transfer}_{to,from}_iso():
961 new utilility functions for conversion from/to ISO/IEC
962 23001-8
963 - add ARIB STD-B67 transfer chracteristic function
964 - add SMPTE ST 2084 support and BT 2100 colorimetry
965 - define bt2020-10 transfer characteristics for clarity:
966 bt707, bt2020-10, and bt2020-12 transfer characteristics are
967 functionally identical but have their own unique values in
968 the specification.
969 - h264parse, h265parse: Parse mastering display info and content
970 light level from SEIs.
971 - matroskademux: parse HDR metadata
972 - matroskamux: Write MasteringMetadata and Max{CLL,FALL}. Enable
973 muxing with HDR meta data if upstream provided it
974 - avviddec: Extract HDR information if any and map bt2020-10, PQ
975 and HLG transfer functions
976
977 - added bt601 transfer function (for completeness)
978
979 - support for more pixel formats:
980
981 - Y412 (packed 12 bits 4:4:4:4)
982 - Y212 (packed 12 bits 4:2:2)
983 - P012 (semi-planar 4:2:0)
984 - P016_{LE,BE} (semi-planar 16 bits 4:2:0)
985 - Y444_16{LE,BE} (planar 16 bits 4:4:4)
986 - RGB10A2_LE (packed 10-bit RGB with 2-bit alpha channel)
987 - NV12_32L32 (NV12 with 32x32 tiles in linear order)
988 - NV12_4L4 (NV12 with 4x4 tiles in linear order)
989
990 - GstVideoDecoder:
991
992 - new max-errors property so applications can configure at what
993 point the decoder should error out, or tell it to just keep
994 going
995
996 - new qos property to disable dropping frames because of QoS, and
997 post QoS messages on the bus when dropping frames. This is
998 useful for example in a scenario where the decoded video is
999 tee-ed off to go into a live sink that syncs to the clock in one
1000 branch, and an encoding and save to file pipeline in the other
1001 branch. In that case one wouldn’t want QoS events from the video
1002 sink make the decoder drop frames because that would also leave
1003 gaps in the encoding branch then.
1004
1005 - GstVideoEncoder:
1006
1007 - gst_video_encoder_finish_subframe() is new API to push out
1008 subframes (e.g. slices), so encoders can split the encoding into
1009 subframes, which can be useful to reduce the overall end-to-end
1010 latency as we no longer need to wait for the full frame to be
1011 encoded to start decoding or sending out the data.
1012 - new min-force-key-unit-interval property allows configuring the
1013 minimum interval between force-key-unit requests and prevents a
1014 big bitrate increase if a lot of key-units are requested in a
1015 short period of time (as might happen in live streaming RTP
1016 pipelines when packet loss is detected).
1017 - various force-key-unit event handling fixes
1018
1019 - GstVideoAggregator, compositor, glvideomixer: expose
1020 max-last-buffer-repeat property on pads. This can be used to have a
1021 compositor display either the background or a stream on a lower
1022 zorder after a live input stream freezes for a certain amount of
1023 time, for example because of network issues.
1024
1025 - gst_video_format_info_component() is new API to find out which
1026 components are packed into a given plane, which is useful to prevent
1027 us from assuming a 1-1 mapping between planes and components.
1028
1029 - gst_video_make_raw_caps() and gst_video_formats_raw() are
1030 bindings-friendly versions of the GST_VIDEO_CAPS_MAKE() C macro.
1031
1032 - video-blend: Add support for blending on top of 16 bit per component
1033 formats, which makes sure we can support every currently supported
1034 raw video format for blending subtitles or logos on top of video.
1035
1036 - GST_VIDEO_BUFFER_IS_TOP_FIELD() and
1037 GST_VIDEO_BUFFER_IS_BOTTOM_FIELD() convenience macros to check
1038 whether the video buffer contains only the top field or bottom field
1039 of an interlaced picture.
1040
1041 - GstVideoMeta now includes an alignment field with the
1042 GstVideoAlignment so buffer producers can explicitly specify the
1043 exact geometry of the planes, allowing users to easily know the
1044 padded size and height of each plane. Default values will be used if
1045 this is not set.
1046
1047 Use gst_video_meta_set_alignment() to set the alignment and
1048 gst_video_meta_get_plane_size() or gst_video_meta_get_plane_height()
1049 to compute the plane sizes or plane heights based on the information
1050 in the video meta.
1051
1052 - gst_video_info_align_full() works like gst_video_info_align() but
1053 also retrieves the plane sizes.
1054
1055 MPEG-TS library
1056
1057 - support for SCTE-35 sections
1058
1059 - extend support for ATSC tables:
1060
1061 - System Time Table (STT)
1062 - Master Guide Table (MGT)
1063 - Rating Region Table (RRT)
1064
1065 Miscellaneous performance, latency and memory optimisations
621066
631067 As always there have been many performance and memory usage improvements
641068 across all components and modules. Some of them have already been
681072 interesting optimisations that haven’t been mentioned in other contexts
691073 yet:
701074
71 - FIXME
72
73 GstPlayer
74
75 - FIXME
76
77 Miscellaneous changes
78
79 - FIXME
1075 - caps negotiation, structure and GValue performance optimizations
1076
1077 - systemclock: clock waiting performance improvements (moved from
1078 GstPoll to GCond for waiting), especially on Windows.
1079
1080 - rtpsession: add support for buffer lists on the recv path for better
1081 performance with higher packet rate streams.
1082
1083 - rtpjitterbuffer: internal timer handling has been rewritten for
1084 better performance, see Nicolas’ talk “Revisiting RTP Jitter Buffer
1085 Timers” for more details.
1086
1087 - H.264/H.265 parsers and RTP payloaders/depayloaders have been
1088 optimised for latency to make sure data is processed and pushed out
1089 as quickly as possible
1090
1091 - video-scaler: correctness and performance improvements, esp. for
1092 interlaced formats and GBRA
1093
1094 - GstVideoEncoder has gained new API to push out subframes
1095 (e.g. slices), so encoders can split the encoding into subframes,
1096 which can be useful to reduce the overall end-to-end latency as we
1097 no longer need to wait for the full frame to be encoded to start
1098 decoding or sending out the data.
1099
1100 This is complemented by the new GST_VIDEO_BUFFER_FLAG_MARKER which
1101 is a video-specific buffer flag to mark the end of a video frame, so
1102 elements can know that they have received all data for a frame
1103 without waiting for the beginning of the next frame. This is similar
1104 to how the RTP marker flag is used in many RTP video mappings.
1105
1106 The video encoder base class now also releases the internal stream
1107 lock before pushing out data, so as to not block the input side of
1108 things from processing more data in the meantime.
1109
1110 Miscellaneous other changes and enhancements
1111
1112 - it is now possible to modify the initial rank of plugin features
1113 without modifying the source code or writing code to do so
1114 programmatically via the GST_PLUGIN_FEATURE_RANK environment
1115 variable. Users can adjust the rank of plugin(s) by passing a
1116 comma-separated list of feature:rank pairs where rank can be a
1117 numerical value or one of NONE, MARGINAL, SECONDARY, PRIMARY, and
1118 MAX. Example: GST_PLUGIN_FEATURE_RANK=myh264dec:MAX,avdec_h264:NONE
1119 sets the rank of the myh264dec element feature to the maximum and
1120 that of avdec_h264 to 0 (none), thus ensuring that myh264dec is
1121 prefered as H264 decoder in an autoplugging context.
1122
1123 - GstDeviceProvider now does a static probe on start as fallback for
1124 providers that don’t support dynamic probing to make things easier
1125 for users
1126
1127 WebRTC
1128
1129 - webrtcbin now contains initial support for renegotiation involving
1130 stream addition and removal. There are a number of caveats to this
1131 initial renegotiation support and many complex scenarios are known
1132 to require some work.
1133
1134 - webrtcbin now exposes the internal ICE object for advanced
1135 configuration options. Using the internal ICE object, it is possible
1136 to toggle UDP or TCP connection usage as well as provide local
1137 network addresses.
1138
1139 - Fix a number of call flows within webrtcbin’s GstPromise handling
1140 where a promise was never replied to. This has been fixed and now a
1141 promise will always receive a reply.
1142
1143 - webrtcbin now exposes a latency property for configuring the
1144 internal rtpjitterbuffer latency and buffering when receiving
1145 streams.
1146
1147 - webrtcbin now only synchronises the RTP part of a stream, allowing
1148 RTCP messages to skip synchronisation entirely.
1149
1150 - Fixed most of the webrtcbin state properties (connection-state,
1151 ice-connection-state, signaling-state, but not ice-gathering-state
1152 as that requires newer API in libnice and will be fixed in the next
1153 release series) to advance through the state values correctly. Also
1154 implemented DTLS connection states in the DTLS elements so that
1155 peer-connection-state is not always new.
1156
1157 - webrtcbin now accounts for the a=ice-lite attribute in a remote SDP
1158 offer and will configure the internal ICE implementation
1159 accordingly.
1160
1161 - webrtcbin will now resolve .local candidate addresses using the
1162 system DNS resolver. .local candidate addresses are now produced by
1163 web browsers to help protect the privacy of users.
1164
1165 - webrtcbin will now add candidates found in the SDP to the internal
1166 ICE agent. This was previously unsupported and required using the
1167 add-ice-candidate signal manually from the application.
1168
1169 - webrtcbin will now correctly parse a TURN URI that contains a
1170 username or password with a : in it.
1171
1172 - The GStreamer WebRTC library gained a GstWebRTCDataChannel object
1173 roughly matching the interface exposed by the WebRTC specification
1174 to allow for easier binding generation and use of data channels.
801175
811176 OpenGL integration
821177
83 - FIXME
1178 GStreamer OpenGL bindings/build related changes
1179
1180 - The GStreamer OpenGL library (libgstgl) now ships pkg-config files
1181 for platform-specific API where libgstgl provides a public
1182 integration interface and a pkg-config file for a dependency on the
1183 detected OpenGL headers. The new list of pkg-config files in
1184 addition to the original gstreamer-gl-1.0 are gstreamer-gl-x11-1.0,
1185 gstreamer-gl-wayland-1.0, gstreamer-gl-egl-1.0, and
1186 gstreamer-gl-prototypes-1.0 (for OpenGL headers when including
1187 gst/gl/gstglfuncs.h).
1188
1189 - GStreamer OpenGL now ships some platform-specific introspection data
1190 for platforms that have a public interface. This should allow for
1191 easier integration with bindings involving platform specific
1192 functionality. The new introspection data files are named
1193 GstGLX11-1.0, GstGLWayland-1.0, and GstGLEGL-1.0.
1194
1195 GStreamer OpenGL Features
1196
1197 - The iOS implementation no longer accesses UIKit objects off the main
1198 thread fixing a loud warning message when used in iOS applications.
1199
1200 - Support for mouse and keyboard handling using the GstNavigation
1201 interface was added for the wayland implementation complementing the
1202 already existing support for the X11 and Windows implementations.
1203
1204 - A new helper base class for source elements, GstGLBaseSrc is
1205 provided to ease writing source elements producing OpenGL video
1206 frames.
1207
1208 - Support for some more 12-bit and 16-bit video formats (Y412_LE,
1209 Y412_BE, Y212_LE, Y212_BE, P012_LE, P012_BE, P016, NV16, NV61) was
1210 added to glcolorconvert.
1211
1212 - glupload can now import dma-buf’s into external-oes textures.
1213
1214 - A new display type for EGLDevice-based systems was added. It is
1215 currently opt-in by using either the GST_GL_PLATFORM=egl-device
1216 environment variable or manual construction
1217 (gst_gl_display_egl_device_new*()) due to compatibility issues with
1218 some platforms.
1219
1220 - Support was added for WinRT/UWP using the ANGLE project for running
1221 OpenGL-based pipelines within a UWP application.
1222
1223 - Various elements now support changing the GstGLDisplay to be used at
1224 runtime in simple cases. This is primarily helpful for changing or
1225 adding an OpenGL-based video sink that must share an OpenGL context
1226 with an external source to an already running pipeline.
1227
1228 GStreamer Vulkan integration
1229
1230 - There is now a GStreamer Vulkan library to provide integration
1231 points and helpers with applications and external GStreamer Vulkan
1232 based elements. The structure of the library is modelled similarly
1233 to the already existing GStreamer OpenGL library. Please note that
1234 the API is still unstable and may change in future releases,
1235 particularly around memory handling. The GStreamer Vulkan library
1236 contains objects for sharing the vkInstance, vkDevice, vkQueue,
1237 vkImage, VkMemory, etc with other elements and/or the application as
1238 well as some helper objects for using Vulkan in an application or
1239 element.
1240
1241 - Added support for building and running on/for the Android and
1242 Windows systems to complement the existing XCB, Wayland, MacOS, and
1243 iOS implementations.
1244
1245 - XCB gained support for mouse/keyboard events using the GstNavigation
1246 API.
1247
1248 - New vulkancolorconvert element for converting between color formats.
1249 vulkancolorconvert can currently convert to/from all 8-bit RGBA
1250 formats as well as 8-bit RGBA formats to/from the YUV formats AYUV,
1251 NV12, and YUY2.
1252
1253 - New vulkanviewconvert element for converting between stereo view
1254 layouts. vulkanviewconvert can currently convert between all of the
1255 single memory formats (side-by-side, top-bottom, column-interleaved,
1256 row-interleaved, checkerboard, left, right, mono).
1257
1258 - New vulkanimageidentity element for a blit from the input vulkan
1259 image/s to a new vulkan image/s.
1260
1261 - The vulkansink element can now scale the input image to the output
1262 window/surface size where that information is available.
1263
1264 - The vulkanupload element can now configure a transfer from system
1265 memory to VulkanImage-based memory. Previously, this required two
1266 vulkanupload elements.
841267
851268 Tracing framework and debugging improvements
861269
87 - FIXME
1270 - gst_tracing_get_active_tracers() returns a list of active tracer
1271 objects. This can be used to interact with tracers at runtime using
1272 GObject API such as action signals. This has been implemented in the
1273 leaks tracer for snapshotting and retrieving leaked/active objects
1274 at runtime.
1275
1276 - The leaks tracer can now be interacted with programmatically at
1277 runtime via GObject action signals:
1278
1279 - get-live-object returns a list of live (allocated) traced
1280 objects
1281 - log-live-objects logs a list of live objects into the debug log.
1282 This is the same as sending the SIGUSR1 signal on unix systems,
1283 but works on all operating systems including Windows.
1284 - activity-start-tracking, activity-get-checkpoint,
1285 activity-log-checkpoint, activity-stop-tracking: add support for
1286 tracking and checkpointing objects, similar to what was
1287 previously available via SIGUSR2 on unix systems, but works on
1288 all operating systems including Windows.
1289
1290 - various GStreamer gdb debug helper improvements:
1291
1292 - new ‘gst-pipeline-tree’ command
1293 - more gdb helper functions: gst_element_pad(), gst_pipeline() and
1294 gst_bin_get()
1295 - support for queries and buffers
1296 - print more info for segment events, print event seqnums, object
1297 pointers and structures
1298 - improve gst-print command to show more pad and element
1299 information
881300
891301 Tools
901302
91 - FIXME
1303 gst-launch-1.0
1304
1305 - now prints the pipeline position and duration if available when the
1306 pipeline is advancing. This is hopefully more user-friendly and
1307 gives visual feedback on the terminal that the pipeline is actually
1308 up and running. This can be disabled with the --no-position command
1309 line option.
1310
1311 - the parse-launch pipeline syntax now has support for presets:
1312 use@preset=<preset-name>" after an element to load a preset.
1313
1314 gst-inspect-1.0
1315
1316 - new --color command line option to force coloured output even if not
1317 connected to a tty
1318
1319 gst-tester-1.0 (new)
1320
1321 - gst-tester-1.0 is a new tool for plugin developers to launch
1322 .validatetest files with TAP compatible output, meaning it can
1323 easily and cleanly be integrated with the meson test harness. It
1324 allows you to use gst-validate (from the gst-devtools module) to
1325 write integration tests in any GStreamer repository whilst keeping
1326 the tests as close as possible to the code. The tool transparently
1327 handles gst-validate being installed or not: if it is not installed
1328 those integration tests will simply be skipped.
1329
1330 gst-play-1.0
1331
1332 - interactive keyboard controls now also work on Windows
1333
1334 gst-transcoder-1.0 (new)
1335
1336 - gst-transcoder-1.0 is a new command line tool to transcode one URI
1337 into another URI based on the specified encoding profile using the
1338 new GstTranscoder API (see above).
921339
931340 GStreamer RTSP server
941341
95 - FIXME
1342 - Fix issue where the first few packets (i.e. keyframes) could
1343 sometimes be dropped if the rtsp media pipeline had a live input.
1344 This was a regression from GStreamer 1.14. There are more fixes
1345 pending for that which will hopefully land in 1.18.1.
1346
1347 - Fix backpressure handling when sending data in TCP interleave mode
1348 where RTSP requests and responses and RTP/RTCP packets flow over the
1349 same RTSP TCP connection: The previous implementation would at some
1350 point stop sending data to other clients when a single client
1351 stopped consuming data or did not consume data fast enough. This
1352 obviously created problems for shared media, where the same stream
1353 from a single producer pipeline is sent to multiple clients. Instead
1354 we now manage a backlog in the server’s stream-transport component
1355 and remove slow clients once this backlog exceeds a maximum duration
1356 (which is currently hardcoded).
1357
1358 - Onvif Streaming Specification trick modes support (see section at
1359 the beginning)
1360
1361 - Scale/Speed header support: Speed will deliver the data at the
1362 requested speed, which means increasing the data bandwidth for
1363 speeds > 1.0. Scale will attempt to do the same without affecting
1364 the overall bandwidth requirement vis-a-vis normal playback speed
1365 (e.g. it might drop data for fast-forward playback).
1366
1367 - rtspclientsink: send buffer lists in one go for better performance
961368
971369 GStreamer VAAPI
981370
99 - FIXME
1371 - A lot of work was done adding support for media-driver (iHD), the
1372 new VAAPI driver for Intel, mostly for Gen9 onwards.
1373
1374 - Available color formats and frame sizes are now detected at run-time
1375 according to the context configuration.
1376
1377 - Gallium drivers have been re-enabled in the allowed drivers list
1378
1379 - Improved the mapping between VA formats and GStreamer formats by
1380 generating a mapping table at run-time since even among different
1381 drivers the mapping might be different, particularly for RGB with
1382 little endianness.
1383
1384 - The experimental Flexible Encoding Infrastructure (FEI) elements
1385 have been removed since they were not really actively maintained or
1386 tested.
1387
1388 - Enhanced the juggling of DMABuf buffers and VASurface metas
1389
1390 - New vaapioverlay element: a compositor element using VA VPP blend
1391 capabilities to accelerate overlaying and compositing. Example
1392 pipeline:
1393
1394 gst-launch-1.0 -vf videotestsrc ! vaapipostproc ! tee name=testsrc ! queue \
1395 ! vaapioverlay sink_1::xpos=300 sink_1::alpha=0.75 name=overlay ! vaapisink \
1396 testsrc. ! queue ! overlay.
1397
1398 vaapipostproc
1399
1400 - added video-orientation support, supporting frame mirroring and
1401 rotation
1402
1403 - added cropping support, either via properties (crop-left,
1404 crop-right, crop-bottom and crop-top) or buffer meta.
1405
1406 - new skin-tone-enhancenment-level property which is the iHD
1407 replacement of the i965 driver’s sink-tone-level. Both are
1408 incompatible with each other, so both were kept.
1409
1410 - handle video colorimetry
1411
1412 - support HDR10 tone mapping
1413
1414 vaapisink
1415
1416 - resurrected wayland backend for non-weston compositors by extracting
1417 the DMABuf from the VASurface and rendering it.
1418
1419 - merged the video overlay API for wayland. Now applications can
1420 define the “window” to render on.
1421
1422 - demoted the vaapisink element to secondary rank since libva
1423 considers rendering as a second-class feature.
1424
1425 VAAPI Encoders
1426
1427 - new common target-percentage property which is the desired target
1428 percentage of bitrate for variable rate control.
1429
1430 - encoders now extract their caps from the driver at registration
1431 time.
1432
1433 - vaapivp9enc: added support for low power mode and support for
1434 profile 2 (profile 0 by default)
1435
1436 - vaapih264enc: new max-qp property that sets the maximum quantization
1437 value. Support for ICQ and QBVR bitrate control mode, adding a
1438 quality-factor property for these modes. Support baseline profile as
1439 constrained-baseline
1440
1441 - vaapih265enc:
1442
1443 - support for main-444 and main-12 encoding profiles.
1444 - new max-qp property that sets the maximum quantization value.
1445 - support for ICQ and QBVR bitrate control mode, adding a
1446 quality-factor property for these modes.
1447 - handle SCC profiles.
1448 - num-tile-cols and num-tile-row properties to specify the number
1449 of tiles to use.
1450 - the low-delay-b property was deprecated and is now determined
1451 automatically.
1452 - improved profile selection through caps.
1453
1454 VAAPI Decoders
1455
1456 - Decoder surfaces are not bound to their context any longer and can
1457 thus be created and used dynamically, removing the deadlock
1458 headache.
1459
1460 - Reverse playback is now fluid
1461
1462 - Forward Region-of-Interest (ROI) metas downstream
1463
1464 - GLTextureUploadMeta uses DMABuf when GEM is not available. Now
1465 Gallium drivers can use this meta for rendering with EGL.
1466
1467 - vaapivp9dec: support for 4:2:2 and 4:4:4 chroma type streams
1468
1469 - vaapih265dec: skip all pictures prior to the first I-frame. Enable
1470 passing range extension flags to the driver. Handle SCC profiles.
1471
1472 - vaapijpegdec: support for 4:0:0, 4:1:1, 4:2:2 and 4:4:4 chroma types
1473 pictures
1474
1475 - vaapih264dec: handle baseline streams as constrained-baseline if
1476 possible and make it more tolerant when encountering unknown NALs
1001477
1011478 GStreamer OMX
1021479
103 - FIXME
1480 - omxvideoenc: use new video encoder subframe API to push out slices
1481 as soon as they’re ready
1482
1483 - omxh264enc, omxh265enc: negotiate subframe mode via caps. To enable
1484 it, force downstream caps to video/x-h264,alignment=nal or
1485 video/x-h265,alignment=nal.
1486
1487 - omxh264enc: Add ref-frames property
1488
1489 - Zynq ultrascale+ specific video encoder/decoder improvements:
1490
1491 - GRAY8 format support
1492 - support for alternate fields interlacing mode
1493 - video encoder: look-ahead, long-term-ref, and long-term-freq
1494 properties
1041495
1051496 GStreamer Editing Services and NLE
1061497
107 - FIXME
1498 - Added nested timelines and subproject support so that GES projects
1499 can be used as clips, potentially serializing nested projects in the
1500 main file or referencing external project files.
1501
1502 - Implemented an OpenTimelineIO GES formatter. This means GES and
1503 GStreamer can now load and save projects in all the formats
1504 supported by otio.
1505
1506 - Implemented a GESMarkerList object which allow setting timed
1507 metadata on any GES object.
1508
1509 - Fixed audio rendering issues during clip transition by ensuring that
1510 a single segment is pushed into encoders.
1511
1512 - The GESUriClipAsset API is now MT safe.
1513
1514 - Added ges_meta_container_register_static_meta() to allow fixing a
1515 type for a specific metadata without actually setting a value.
1516
1517 - The framepositioner element now handles resizing the project and
1518 keeps the same positioning when the aspect ratio is not changed .
1519
1520 - Reworked the documentation, making it more comprehensive and much
1521 more detailed.
1522
1523 - Added APIs to retrieve natural size and framerate of a clip (for
1524 example in the case of URIClip it is the framerate/size of the
1525 underlying file).
1526
1527 - ges_container_edit() is now deprecated and GESTimelineElement gained
1528 the ges_timeline_element_edit() method so the editing API is now
1529 usable from any element in the timeline.
1530
1531 - GESProject::loading was added so applications can be notified about
1532 when a new timeline starts loading.
1533
1534 - Implemented the GstStream API in GESTimeline.
1535
1536 - Added a way to add a timeoverlay inside the test source (potentially
1537 with timecodes).
1538
1539 - Added APIs to convert times to frame numbers and vice versa:
1540
1541 - ges_timeline_get_frame_time()
1542
1543 - ges_timeline_get_frame_at()
1544
1545 - ges_clip_asset_get_frame_time()
1546
1547 - ges_clip_get_timeline_time_from_source_frame()
1548
1549 Quite a few validate tests have been implemented to check the
1550 behavior for various demuxer/codec formats
1551
1552 - Added ges_layer_set_active_for_tracks() which allows muting layers
1553 for the specified tracks
1554
1555 - Deprecated GESImageSource and GESMultiFileSource now that we have
1556 imagesequencesrc which handles the imagesequence “protocol”
1557
1558 - Stopped exposing ‘deinterlacing’ children properties for clip types
1559 where they do not make sense.
1560
1561 - Added support for simple time remapping effects
1081562
1091563 GStreamer validate
1101564
111 - FIXME
1565 - Introduced the concept of “Test files” allowing to implement “all
1566 included” test cases, meaning that inside the file the following can
1567 be defined:
1568
1569 - The application arguments
1570 - The validate configurations
1571 - The validate scenario
1572
1573 This replaces the previous big dictionary file in
1574 gst-validate-launcher to implement specific test cases.
1575
1576 We set several variables inside the files (as well as inside
1577 scenarios and config files) to make them relocatable.
1578
1579 The file format has been enhanced so it is easier to read and write,
1580 for example line ending with a coma or (curly) brackets can now be
1581 used as continuation marker so you do not need to add \ at the end
1582 of lines to write a structure on several lines.
1583
1584 - Support the imagesequence “protocol” and added integration tests for
1585 it.
1586
1587 - Added action types to allow the scenario to run the Test Clock for
1588 better reproducibility of tests.
1589
1590 - Support generating tests to check that seeking is frame accurate
1591 (base on ssim).
1592
1593 - Added ways to record buffers checksum (in different ways) in the
1594 validateflow module.
1595
1596 - Added vp9 encoding tests.
1597
1598 - Enhanced seeking action types implementation to allow support for
1599 segment seeks.
1600
1601 - Output improvements:
1602
1603 - Logs are now in markdown formats (and bat is used to dump them
1604 if available).
1605 - File format issues in scenarios/configs/tests files are nicely
1606 reported with the line numbers now.
1121607
1131608 GStreamer Python Bindings
1141609
115 - FIXME
1610 - Python 2.x is no longer supported
1611
1612 - Support mapping buffers without any memcpy:
1613
1614 - Added a ContextManager to make the API more pythonic
1615
1616 with buf.map(Gst.MapFlags.READ | Gst.MapFlags.WRITE) as info:
1617 info.data[42] = 0
1618
1619 - Added high-level helper API for constructing pipelines:
1620
1621 - Gst.Bin.make_and_add(factory_name, instance_name=None)
1622 - Gst.Element.link_many(element, ...)
1161623
1171624 GStreamer C# Bindings
1181625
119 - FIXME
120
121 GStreamer Rust Bindings
122
123 - FIXME
124
125 GStreamer Rust Plugins
126
127 - FIXME
1626 - Bind gst_buffer_new_wrapped() manually to fix memory handling.
1627
1628 - Fix gst_promise_new_with_change_func() where bindgen didn’t properly
1629 detect the func as a closure.
1630
1631 - Declare GstVideoOverlayComposition and GstVideoOverlayRectangle as
1632 opaque type and subclasses of Gst.MiniObject. This changes the API
1633 but without this all usage will cause memory corruption or simply
1634 not work.
1635
1636 - on Windows, look for gstreamer, glib and gobject DLLs using the MSVC
1637 naming convention (i.e. gstvideo-1.0-0.dll instead of
1638 libgstvideo-1.0-0.dll).
1639
1640 The names of these DLLs have to be hardcoded in the bindings, and
1641 most C# users will probably be using the Microsoft toolchain anyway.
1642
1643 This means that the MSVC compiler is now required to build the
1644 bindings, MingW will no longer work out of the box.
1645
1646 GStreamer Rust Bindings and Rust Plugins
1647
1648 The GStreamer Rust bindings are released separately with a different
1649 release cadence that’s tied to gtk-rs, but the latest release has
1650 already been updated for the new GStreamer 1.18 API, so there’s
1651 absolutely no excuse why your next GStreamer application can’t be
1652 written in Rust anymore.
1653
1654 gst-plugins-rs, the module containing GStreamer plugins written in Rust,
1655 has also seen lots of activity with many new elements and plugins.
1656
1657 What follows is a list of elements and plugins available in
1658 gst-plugins-rs, so people don’t miss out on all those potentially useful
1659 elements that have no C equivalent.
1660
1661 Rust audio plugins
1662
1663 - audiornnoise: New element for audio denoising which implements the
1664 noise removal algorithm of the Xiph RNNoise library, in Rust
1665 - rsaudioecho: Port of the audioecho element from gst-plugins-good
1666 rsaudioloudnorm: Live audio loudness normalization element based on
1667 the FFmpeg af_loudnorm filter
1668 - claxondec: FLAC lossless audio codec decoder element based on the
1669 pure-Rust claxon implementation
1670 - csoundfilter: Audio filter that can use any filter defined via the
1671 Csound audio programming language
1672 - lewtondec: Vorbis audio decoder element based on the pure-Rust
1673 lewton implementation
1674
1675 Rust video plugins
1676
1677 - cdgdec/cdgparse: Decoder and parser for the CD+G video codec based
1678 on a pure-Rust CD+G implementation, used for example by karaoke CDs
1679 - cea608overlay: CEA-608 Closed Captions overlay element
1680 - cea608tott: CEA-608 Closed Captions to timed-text (e.g. VTT or SRT
1681 subtitles) converter
1682 - tttocea608: CEA-608 Closed Captions from timed-text converter
1683 - mccenc/mccparse: MacCaption Closed Caption format encoder and parser
1684 - sccenc/sccparse: Scenarist Closed Caption format encoder and parser
1685 - dav1dec: AV1 video decoder based on the dav1d decoder implementation
1686 by the VLC project
1687 - rav1enc: AV1 video encoder based on the fast and pure-Rust rav1e
1688 encoder implementation
1689 - rsflvdemux: Alternative to the flvdemux FLV demuxer element from
1690 gst-plugins-good, not feature-equivalent yet
1691 - rsgifenc/rspngenc: GIF/PNG encoder elements based on the pure-Rust
1692 implementations by the image-rs project
1693
1694 Rust text plugins
1695
1696 - textwrap: Element for line-wrapping timed text (e.g. subtitles) for
1697 better screen-fitting, including hyphenation support for some
1698 languages
1699
1700 Rust network plugins
1701
1702 - reqwesthttpsrc: HTTP(S) source element based on the Rust
1703 reqwest/hyper HTTP implementations and almost feature-equivalent
1704 with the main GStreamer HTTP source souphttpsrc
1705 - s3src/s3sink: Source/sink element for the Amazon S3 cloud storage
1706 - awstranscriber: Live audio to timed text transcription element using
1707 the Amazon AWS Transcribe API
1708
1709 Generic Rust plugins
1710
1711 - sodiumencrypter/sodiumdecrypter: Encryption/decryption element based
1712 on libsodium/NaCl
1713 - togglerecord: Recording element that allows to pause/resume
1714 recordings easily and considers keyframe boundaries
1715 - fallbackswitch/fallbacksrc: Elements for handling potentially
1716 failing (network) sources, restarting them on errors/timeout and
1717 showing a fallback stream instead
1718 - threadshare: Set of elements that provide alternatives for various
1719 existing GStreamer elements but allow to share the streaming threads
1720 between each other to reduce the number of threads
1721 - rsfilesrc/rsfilesink: File source/sink elements as replacements for
1722 the existing filesrc/filesink elements
1281723
1291724 Build and Dependencies
1301725
1341729
1351730 - API and plugin documentation are no longer built with gtk_doc. The
1361731 gtk_doc documentation has been removed in favour of a new unified
137 documentation module built with hotdoc. The intention is to
138 distribute the generated documentation in form of tarballs alongside
139 releases.
140
141 - FIXME
1732 documentation module built with hotdoc (also see “Documentation
1733 improvements” section below). Distributors should use the
1734 documentation release tarball instead of trying to package hotdoc
1735 and building the documentation from scratch.
1736
1737 - gst-plugins-bad now includes an internal copy of libusrsctp, as
1738 there are problems in usrsctp with global shared state, lack of API
1739 stability guarantees, and the absence of any kind of release
1740 process. We also can’t rely on distros shipping a version with the
1741 fixes we need. Both firefox and Chrome bundle their own copies too.
1742 It is still possible to build against an external copy of usrsctp if
1743 so desired.
1744
1745 - nvcodec no longer needs the NVIDIA NVDEC/NVENC SDKs available at
1746 build time, only at runtime. This allows distributions to ship this
1747 plugin by default and it will just start to work when the required
1748 run-time SDK libraries are installed by the user, without users
1749 needing to build and install the plugin from source.
1750
1751 - the gst-editing-services tarball is now named gst-editing-services
1752 for consistency (used to be gstreamer-editing-services).
1753
1754 - the gst-validate tarball has been superseded by the gst-devtools
1755 tarball for consistency with the git module name.
1756
1757 gst-build
1758
1759 gst-build is a meta-module and serves primarily as our uninstalled
1760 development environment. It makes it easy to build most of GStreamer,
1761 but unlike Cerbero it only comes with a limited number of external
1762 dependencies that can be built as subprojects if they are not found on
1763 the system.
1764
1765 gst-build is based on Meson and replaces the old autotools
1766 gst-uninstalled script.
1767
1768 - The ‘uninstalled’ target has been renamed to ‘devenv’
1769
1770 - Experimental gstreamer-full library containing all built plugins and
1771 their deps when building with -Ddefault_library=static. A monolithic
1772 library is easier to distribute, and may be required in some
1773 environments. GStreamer core, GLib and GObject are always included,
1774 but external dependencies are still dynamically linked. The
1775 gst-full-libraries meson option allows adding other GStreamer
1776 libraries to the gstreamer-full build. This is an experiment for now
1777 and its behaviour or API may still change in future releases.
1778
1779 - Add glib-networking as a subproject when glib is a subproject and
1780 load gio modules in the devenv, tls option control whether to use
1781 openssl or gnutls.
1782
1783 - git-worktree: Allow multiple worktrees for subproject branches
1784
1785 - Guard against meson being run from inside the uninstalled devenv, as
1786 this might have unexpected consequences.
1787
1788 - our ffmpeg and x264 meson ports have been updated to the latest
1789 stable version (you might need to update the subprojects checkout
1790 manually though, or just remove the checkouts so meson checks out
1791 the latest version again; improvements for this are pending in
1792 meson, but not merged yet).
1421793
1431794 Cerbero
1441795
1461797 on platforms where dependencies are not readily available, such as
1471798 Windows, Android, iOS and macOS.
1481799
149 Cerbero has seen a number of improvements:
150
151 - FIXME
1800 General improvements
1801
1802 - Recipe build steps are done in parallel wherever possible. This
1803 leads to massive improvements in overall build time.
1804 - Several recipes were ported to Meson, which improved build times
1805 - Moved from using both GnuTLS and OpenSSL to only OpenSSL
1806 - Moved from yasm to nasm for all assembly compilation
1807 - Support zsh when running the cerbero shell command
1808 - Numerous version upgrades for dependencies
1809 - Default to xz for tarball binary packages. bz2 can be selected with
1810 the --compress-method option to package.
1811 - Added boolean variant for controlling the optimization level:
1812 -v optimization
1813 - Ship .pc pkgconfig files for all plugins in the binary packages
1814 - CMake and nasm will only be built by Cerbero if the system versions
1815 are unusable
1816 - The nvcodec variant was removed and the nvcodec plugin is built by
1817 default now (as it no longer requires the SDK to be installed at
1818 build time, only at runtime)
1819
1820 macOS / iOS
1821
1822 - Minimum iOS SDK version bumped to 11.0
1823 - Minimum macOS SDK version bumped to 10.11
1824 - No longer need to manually add support for newer iOS SDK versions
1825 - Added Vulkan elements via MoltenVK
1826 - Build times were improved by code-signing all build tools
1827 - macOS framework ships all gstreamer libraries instead of an outdated
1828 subset
1829 - Ship pkg-config in the macOS framework package
1830 - fontconfig: Fix EXC_BAD_ACCESS crash on iOS ARM64
1831 - Improved App Store compatibility by setting LC_VERSION_MIN_MACOSX,
1832 fixing relocations, and improved bitcode support
1833
1834 Windows
1835
1836 - MinGW-GCC toolchain was updated to 8.2. It uses the Universal CRT
1837 instead of MSVCRT which eliminates cross-CRT issues in the Visual
1838 Studio build.
1839 - Require Windows 7 or newer for running binaries produced by Cerbero
1840 - Require Windows x86_64 for running Cerbero to build binary packages
1841 - Cerbero no longer uses C:/gstreamer/1.0 as a prefix when building.
1842 That prefix is reserved for use by the MSI installers.
1843 - Several recipes can now be buit with Visual Studio instead of MinGW.
1844 Ported to meson: opus, libsrtp, harfbuzz, cairo, openh264, libsoup,
1845 libusrsctp. Existing build system: libvpx, openssl.
1846 - Support building using Visual Studio for 32-bit x86. Previously we
1847 only supported building for 32-bit x86 using the MinGW toolchain.
1848 - Fixed annoying msgmerge popups in the middle of cerbero builds
1849 - Added configuration options vs_install_path and vs_install_version
1850 for specifying custom search locations for older Visual Studio
1851 versions that do not support vswhere. You can set these in
1852 ~/.cerbero/cerbero.cbc where ~ is the MSYS homedir, not your Windows
1853 homedir.
1854 - New Windows-specific plugins: d3d11, mediafoundation, wasapi2
1855 - Numerous compatibility and reliability fixes when running Cerbero on
1856 Windows, especially non-English locales
1857 - proxy-libintl now exports the same symbols as gettext, which makes
1858 it a drop-in replacement
1859 - New mapping variant for selecting the Visual Studio CRT to use:
1860 -v vscrt=<value>. Valid values are md, mdd, and auto (default). A
1861 separate prefix is used when building with either md (release) or
1862 mdd (debug), and the outputted package will have +debug in the
1863 filename. This variant is also used for selecting the correct Qt
1864 libraries (debug vs release) to use when building with -v qt5 on
1865 Windows.
1866 - Support cross-compile on Windows to Windows ARM64 and ARMv7
1867 - Support cross-compile on Windows to the Universal Windows Platform
1868 (UWP). Only the subset of plugins that can be built entirely with
1869 Visual Studio will be selected in this case. To do so, use the
1870 config/cross-uwp-universal.cbc configuration, which will build
1871 ARM64, x86, and x86_64 binaries linked to the release CRT, with
1872 optimizations enabled, and debugging turned on. You can combine this
1873 with -v vscrt=mdd to produce binaries linked to the debug CRT. You
1874 can turn off optimizations with the -v nooptimization variant.
1875
1876 Windows MSI installer
1877
1878 - Require Windows 7 or newer for running GStreamer
1879 - Fixed some issues with shipping of pkg-config in the Windows
1880 installers
1881 - Plugin PDB debug files are now shipped in the development package,
1882 not the runtime package
1883 - Ship installers for 32-bit binaries built with Visual Studio
1884 - Ship debug and release “universal” (ARM64, X86, and X86_64) tarballs
1885 built for the Universal Windows Platform
1886 - Windows MSI installers now install into separate prefixes when
1887 building with MSVC and MinGW. Previously both would be installed
1888 into C:/gstreamer/1.0/x86 or C:/gstreamer/1.0/x86_64. Now, the
1889 installation prefixes are:
1890
1891 ----------------------------------------------------------------------------------------------------------------
1892 Target Path Build options
1893 --------------------------- ------------------------------------ -----------------------------------------------
1894 MinGW 32-bit C:/gstreamer/1.0/mingw_x86 -c config/win32.cbc
1895
1896 MinGW 64-bit C:/gstreamer/1.0/mingw_x86_64 -c config/win64.cbc
1897
1898 MSVC 32-bit C:/gstreamer/1.0/msvc_x86 -c config/win32.cbc -v visualstudio
1899
1900 MSVC 64-bit C:/gstreamer/1.0/msvc_x86_64 -c config/win64.cbc -v visualstudio
1901
1902 MSVC 32-bit (debug) C:/gstreamer/1.0/msvc-debug_x86 -c config/win32.cbc -v visualstudio,vscrt=mdd
1903
1904 MSVC 64-bit (debug) C:/gstreamer/1.0/msvc-debug_x86_64 -c config/win64.cbc -v visualstudio,vscrt=mdd
1905 ----------------------------------------------------------------------------------------------------------------
1906
1907 Note: UWP binary packages are tarballs, not MSI installers.
1908
1909 Linux
1910
1911 - Support creating MSI installers using WiX when cross-compiling to
1912 Windows
1913 - Support running cross-windows binaries with Wine when using the
1914 shell and runit cerbero commands
1915 - Added bash-completion support inside the cerbero shell on Linux
1916 - Require a system-wide installation of openssl on Linux
1917 - Added variant -v vaapi to build gstreamer-vaapi and the new gstva
1918 plugin
1919 - Debian packaging was disabled because it does not work. Help in
1920 fixing this is appreciated.
1921 - Trimmed the list of packages needed for bootstrap on Linux
1922
1923 Android
1924
1925 - Updated to NDK r21
1926 - Support Vulkan
1927 - Support Qt 5.14+ binary package layout
1521928
1531929 Platform-specific changes and improvements
1541930
1551931 Android
1561932
157 - FIXME
1933 - opensles: Remove hard-coded buffer-/latency-time values and allow
1934 openslessink to handle 48kHz streams.
1935
1936 - photography interface and camera source: Add additional settings
1937 relevant to Android such as: Exposure mode property, extra colour
1938 tone values (aqua, emboss, sketch, neon), extra scene modes
1939 (backlight, flowers, AR, HDR), and missing virtual methods for
1940 exposure mode, analog gain, lens focus, colour temperature, min &
1941 max exposure time. Add new effects and scene modes to Camera
1942 parameters.
1581943
1591944 macOS and iOS
1601945
161 - FIXME
1946 - vtdec can now output to Vulkan-backed memory for zerocopy support
1947 with the Vulkan elements.
1621948
1631949 Windows
1641950
165 - toolchain upgrade
166
167 - FIXME
1951 - d3d11videosink: new Direct3D11-based video sink with support for
1952 HDR10 rendering if supported.
1953
1954 - Hardware-accelerated video decoding on Windows via DXVA2 /
1955 Direct3D11 using native Windows APIs rather than per-vendor SDKs
1956 (like MSDK for Intel or NVCODEC for NVidia). Plus modern Direct3D11
1957 integration rather than the almost 20-year old Direct3D9 from
1958 Windows XP times used in d3dvideosink. Formats supported for
1959 decoding are H.264, H.265, VP8, and VP9, and zero-copy operation
1960 should be supported in combination with the new d3d11videosink. See
1961 Seungha’s blog post “Windows DXVA2 (via Direct3D 11) Support in
1962 GStreamer 1.17” for more details.
1963
1964 - Microsoft Media Foundation plugin for hardware-accelerated video
1965 encoding on Windows using native Windows APIs rather than per-vendor
1966 SDKs. Formats supported for encoding are H.264, H.265 and VP9. Also
1967 includes audio encoders for AAC and MP3. See Seungha’s blog post
1968 “Bringing Microsoft Media Foundation to GStreamer” for some more
1969 details about this.
1970
1971 - new mfvideosrc video capture source element using the latest Windows
1972 APIs rather than ancient APIs used by ksvideosrc/winks. ksvideosrc
1973 should be considered deprecated going forward.
1974
1975 - d3d11: add d3d11convert, a color space conversion and rescaling
1976 element using shaders, and introduce d3d11upload and d3d11download
1977 elements that work just like glupload and gldownload but for D3D11.
1978
1979 - Universal Windows Platform (UWP) support, including official
1980 GStreamer binary packages for it. Check out Nirbheek’s latest blog
1981 post “GStreamer 1.18 supports the Universal Windows Platform” for
1982 more details.
1983
1984 - systemclock correctness and reliability fixes, and also don’t start
1985 the system clock at 0 any longer (which shouldn’t make any
1986 difference to anyone, as absolute clock time values are supposed to
1987 be meaningless in themselves, only the rate of increase matters).
1988
1989 - toolchain specific plugin registry: the registry cache is now named
1990 differently for MSVC and MinGW toolchains/packages, which should
1991 avoid problems when switching between binaries built with a
1992 different toolchain.
1993
1994 - new wasapi2 plugin mainly to support UWP applications. The core
1995 logic of this plugin is almost identical to existing wasapi plugin,
1996 but the main target is Windows 10 and UWP. This plugin uses WinRT
1997 APIs, so will likely not work on Windows 8 or older. Unlike the
1998 existing wasapi plugin, this plugin supports automatic stream
1999 routing (auto fallback when device was removed) and device level
2000 mute/volume control. Exclusive streaming mode is not supported,
2001 however, and loopback features are not implemented yet. It is also
2002 only possible to build this plugin with MSVC and the Windows 10 SDK,
2003 it can’t be cross-compiled with the MingW toolchain.
2004
2005 - new dxgiscreencapsrc element which uses the Desktop Duplication API
2006 to capture the desktop screen at high speed. This is only supported
2007 on Windows 8 or later. Compared to the existing elements
2008 dxgiscreencapsrc offers much better performance, works in High DPI
2009 environments and draws an accurate mouse cursor.
2010
2011 - d3dvideosink was downgraded to secondary rank, d3d11videosink is
2012 preferred now. Support OverlayComposition for GPU overlay
2013 compositing of subtitles and logos.
2014
2015 - debug log output fixes, esp. with a non-UTF8 locale/codepage
2016
2017 - speex, jack: fixed crashes on Windows caused by cross-CRT issues
2018
2019 - gst-play-1.0 interactive keyboard controls now also work on Windows
2020
2021 Linux
2022
2023 - kmssink: Add support for P010 and P016 formats
2024
2025 - vah264dec: new experimental va plugin with an element for H.264
2026 decoding with VA-API. This novel approach, different from
2027 gstreamer-vaapi, uses the gstcodecs library for decoder state
2028 handling, which it is hoped will make for cleaner code because it
2029 uses VA-API without further layers or wrappers. Check out Víctor’s
2030 blog post “New VA-API H.264 decoder in gst-plugins-bad” for the full
2031 lowdown and the limitations of this new plugin, and how to give it a
2032 spin.
2033
2034 - v4l2codecs: introduce a V4L2 CODECs Accelerator. This plugin will
2035 support the new CODECs uAPI in the Linux kernel, which consists of
2036 an accelerator interface similar to DXVA, NVDEC, VDPAU and VAAPI. So
2037 far H.264 and VP8 are supported. This is used on certain embedded
2038 systems such as i.mx8m, rk3288, rk3399, Allwinner H-series SoCs.
2039
2040 Documentation improvements
2041
2042 - unified documentation containing tutorials, API docs, plugin docs,
2043 etc. all under one roof, shipped in form of a documentation release
2044 tarball containing both devhelp and html documentation.
2045
2046 - all documentation is now generated using hotdoc, gtk-doc is no
2047 longer used. Distributors should use the above-mentioned
2048 documentation release tarball instead of trying to package hotdoc
2049 and building the documentation from scratch.
2050
2051 - there is now documentation for wrapper plugins like gst-libav and
2052 frei0r, as well as tracer plugins.
2053
2054 - for more info, check out Thibault’s “GStreamer Documentation”
2055 lightning talk from the 2019 GStreamer Conference.
2056
2057 - new API for plugins to support the documentation system:
2058
2059 - new GParamSpecFlag GST_PARAM_DOC_SHOW_DEFAULT to make
2060 gst-inspect-1.0 (and the documentation) show the paramspec’s
2061 default value rather than the actually set value as default
2062 - GstPadTemplate getter and setter for “documentation caps”,
2063 gst_pad_template_set_documentation_caps() and
2064 gst_pad_template_get_documentation_caps(): This can be used in
2065 elements where the caps of pad templates are dynamically
2066 generated and/or dependent on the environment, to override the
2067 caps shown in the documentation (usually to advertise the full
2068 set of possible caps).
2069 - gst_type_mark_as_plugin_api() for marking types as plugin API,
2070 used for plugin-internal types like enums, flags, pad
2071 subclasses, boxed types, and such.
2072
2073 Possibly Breaking Changes
2074
2075 - GstVideo: the canonical list of raw video formats (for use in caps)
2076 has been reordered, so video elements such as videotestsrc or
2077 videoconvert might negotiate to a different format now than before.
2078 The new format might be a higher-quality format or require more
2079 processing overhead, which might affect pipeline performance.
2080
2081 - mpegtsdemux used to wrongly advertise H.264 and H.265 video
2082 elementary streams as alignment=nal. This has now been fixed and
2083 changed to alignment=none, which means an h264parse or h265parse
2084 element is now required after tsdemux for some pipelines where there
2085 wasn’t one before, e.g. in transmuxing scenarios (tsdemux ! tsmux).
2086 Pipelines without such a parser may now fail to link or error out at
2087 runtime. As parsers after demuxers and before muxers have been
2088 generally required for a long time now it is hoped that this will
2089 only affect a small number of applications or pipelines.
2090
2091 - The Android opensles audio source and sink used to have hard-coded
2092 buffer-/latency-time values of 20ms. This is no longer needed with
2093 newer Android versions and has now been removed. This means a higher
2094 or lower value might now be negotiated by default, which can affect
2095 pipeline performance and latency.
2096
2097 Known Issues
2098
2099 - None in particular
1682100
1692101 Contributors
1702102
171 - FIXME
2103 Aaron Boxer, Adam Duskett, Adam x Nilsson, Adrian Negreanu, Akinobu
2104 Mita, Alban Browaeys, Alcaro, Alexander Lapajne, Alexandru Băluț, Alex
2105 Ashley, Alex Hoenig, Alicia Boya García, Alistair Buxton, Ali Yousuf,
2106 Ambareesh “Amby” Balaji, Amr Mahdi, Andoni Morales Alastruey, Andreas
2107 Frisch, Andre Guedes, Andrew Branson, Andrey Sazonov, Antonio Ospite,
2108 aogun, Arun Raghavan, Askar Safin, AsociTon, A. Wilcox, Axel Mårtensson,
2109 Ayush Mittal, Bastian Bouchardon, Benjamin Otte, Bilal Elmoussaoui,
2110 Brady J. Garvin, Branko Subasic, Camilo Celis Guzman, Carlos Rafael
2111 Giani, Charlie Turner, Cheng-Chang Wu, Chris Ayoup, Chris Lord,
2112 Christoph Reiter, cketti, Damian Hobson-Garcia, Daniel Klamt, Daniel
2113 Molkentin, Danny Smith, David Bender, David Gunzinger, David Ing, David
2114 Svensson Fors, David Trussel, Debarshi Ray, Derek Lesho, Devarsh
2115 Thakkar, dhilshad, Dimitrios Katsaros, Dmitriy Purgin, Dmitry Shusharin,
2116 Dominique Leuenberger, Dong Il Park, Doug Nazar, dudengke, Dylan McCall,
2117 Dylan Yip, Ederson de Souza, Edward Hervey, Eero Nurkkala, Eike Hein,
2118 ekwange, Eric Marks, Fabian Greffrath, Fabian Orccon, Fabio D’Urso,
2119 Fabrice Bellet, Fabrice Fontaine, Fanchao L, Felix Yan, Fernando
2120 Herrrera, Francisco Javier Velázquez-García, Freyr, Fuwei Tang, Gaurav
2121 Kalra, George Kiagiadakis, Georgii Staroselskii, Georg Lippitsch, Georg
2122 Ottinger, gla, Göran Jönsson, Gordon Hart, Gregor Boirie, Guillaume
2123 Desmottes, Guillermo Rodríguez, Haakon Sporsheim, Haihao Xiang, Haihua
2124 Hu, Havard Graff, Håvard Graff, Heinrich Kruger, He Junyan, Henry
2125 Wilkes, Hosang Lee, Hou Qi, Hu Qian, Hyunjun Ko, ibauer, Ignacio Casal
2126 Quinteiro, Ilya Smelykh, Jake Barnes, Jakub Adam, James Cowgill, James
2127 Westman, Jan Alexander Steffens, Jan Schmidt, Jan Tojnar, Javier Celaya,
2128 Jeffy Chen, Jennifer Berringer, Jens Göpfert, Jérôme Laheurte, Jim
2129 Mason, Jimmy Ohn, J. Kim, Joakim Johansson, Jochen Henneberg, Johan
2130 Bjäreholt, Johan Sternerup, John Bassett, Jonas Holmberg, Jonas Larsson,
2131 Jonathan Matthew, Jordan Petridis, Jose Antonio Santos Cadenas, Josep
2132 Torra, Jose Quaresma, Josh Matthews, Joshua M. Doe, Juan Navarro,
2133 Juergen Werner, Julian Bouzas, Julien Isorce, Jun-ichi OKADA, Justin
2134 Chadwell, Justin Kim, Keri Henare, Kevin JOLY, Kevin King, Kevin Song,
2135 Knut Andre Tidemann, Kristofer Björkström, krivoguzovVlad, Kyrylo
2136 Polezhaiev, Lenny Jorissen, Linus Svensson, Loïc Le Page, Loïc Minier,
2137 Lucas Stach, Ludvig Rappe, Luka Blaskovic, luke.lin, Luke Yelavich,
2138 Marcin Kolny, Marc Leeman, Marco Felsch, Marcos Kintschner, Marek
2139 Olejnik, Mark Nauwelaerts, Markus Ebner, Martin Liska, Martin Theriault,
2140 Mart Raudsepp, Matej Knopp, Mathieu Duponchelle, Mats Lindestam, Matthew
2141 Read, Matthew Waters, Matus Gajdos, Maxim Paymushkin, Maxim P.
2142 Dementiev, Michael Bunk, Michael Gruner, Michael Olbrich, Miguel París
2143 Díaz, Mikhail Fludkov, Milian Wolff, Millan Castro, Muhammet Ilendemli,
2144 Nacho García, Nayana Topolsky, Nian Yan, Nicola Murino, Nicolas
2145 Dufresne, Nicolas Pernas Maradei, Niels De Graef, Nikita Bobkov, Niklas
2146 Hambüchen, Nirbheek Chauhan, Ognyan Tonchev, okuoku, Oleksandr
2147 Kvl,Olivier Crête, Ondřej Hruška, Pablo Marcos Oltra, Patricia Muscalu,
2148 Peter Seiderer, Peter Workman, Philippe Normand, Philippe Renon, Philipp
2149 Zabel, Pieter Willem Jordaan, Piotr Drąg, Ralf Sippl, Randy Li, Rasmus
2150 Thomsen, Ratchanan Srirattanamet, Raul Tambre, Ray Tiley, Richard
2151 Kreckel, Rico Tzschichholz, R Kh, Robert Rosengren, Robert Tiemann,
2152 Roman Shpuntov, Roman Sivriver, Ruben Gonzalez, Rubén Gonzalez,
2153 rubenrua, Ryan Huang, Sam Gigliotti, Santiago Carot-Nemesio, Saunier
2154 Thibault, Scott Kanowitz, Sebastian Dröge, Sebastiano Barrera, Seppo
2155 Yli-Olli, Sergey Nazaryev, Seungha Yang, Shinya Saito, Silvio
2156 Lazzeretti, Simon Arnling Bååth, Siwon Kang, sohwan.park, Song Bing,
2157 Soohyun Lee, Srimanta Panda, Stefano Buora, Stefan Sauer, Stéphane
2158 Cerveau, Stian Selnes, Sumaid Syed, Swayamjeet, Thiago Santos, Thibault
2159 Saunier, Thomas Bluemel, Thomas Coldrick, Thor Andreassen, Tim-Philipp
2160 Müller, Ting-Wei Lan, Tobias Ronge, trilene, Tulio Beloqui, U. Artie
2161 Eoff, VaL Doroshchuk, Varunkumar Allagadapa, Vedang Patel, Veerabadhran
2162 G, Víctor Manuel Jáquez Leal, Vivek R, Vivia Nikolaidou, Wangfei, Wang
2163 Zhanjun, Wim Taymans, Wonchul Lee, Xabier Rodriguez Calvar, Xavier
2164 Claessens, Xidorn Quan, Xu Guangxin, Yan Wang, Yatin Maan, Yeongjin
2165 Jeong, yychao, Zebediah Figura, Zeeshan Ali, Zeid Bekli, Zhiyuan Sraf,
2166 Zoltán Imets,
1722167
1732168 … and many others who have contributed bug reports, translations, sent
1742169 suggestions or helped testing.
1832178
1842179 1.18.0
1852180
186 1.18.0 has not been released yet.
187
188 Known Issues
189
190 - FIXME
2181 1.18.0 was released on 7 September 2020.
1912182
1922183 Schedule for 1.20
1932184
1952186 unstable development version leading up to the stable 1.20 release. The
1962187 development of 1.19/1.20 will happen in the git master branch.
1972188
198 The plan for the 1.20 development cycle is yet to be confirmed.
2189 The plan for the 1.20 development cycle is yet to be confirmed, but it
2190 is now expected that feature freeze will take place some time in January
2191 2021, with the first 1.20 stable release around February/March 2021.
1992192
2002193 1.20 will be backwards-compatible to the stable 1.18, 1.16, 1.14, 1.12,
2012194 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series.
2032196 ------------------------------------------------------------------------
2042197
2052198 These release notes have been prepared by Tim-Philipp Müller with
206 contributions from … (FIXME)
2199 contributions from Mathieu Duponchelle, Matthew Waters, Nirbheek
2200 Chauhan, Sebastian Dröge, Thibault Saunier, and Víctor Manuel Jáquez
2201 Leal.
2072202
2082203 License: CC BY-SA 4.0
0 This is GStreamer gst-python 1.17.90.
0 This is GStreamer gst-python 1.18.0.
11
2 GStreamer 1.17 is the development branch leading up to the next major
3 stable version which will be 1.18.
2 The GStreamer team is thrilled to announce a new major feature release
3 of your favourite cross-platform multimedia framework!
44
5 The 1.17 development series adds new features on top of the 1.16 series and is
5 As always, this release is again packed with new features, bug fixes and
6 other improvements.
7
8 The 1.18 release series adds new features on top of the 1.16 series and is
69 part of the API and ABI-stable 1.x release series of the GStreamer multimedia
710 framework.
811
9 Full release notes will one day be found at:
12 Full release notes can be found at:
1013
1114 https://gstreamer.freedesktop.org/releases/1.18/
1215
3131
3232 <release>
3333 <Version>
34 <revision>1.18.0</revision>
35 <branch>master</branch>
36 <name></name>
37 <created>2020-09-08</created>
38 <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-python/gst-python-1.18.0.tar.xz" />
39 </Version>
40 </release>
41
42 <release>
43 <Version>
3444 <revision>1.17.90</revision>
3545 <branch>master</branch>
3646 <name></name>
00 project('gst-python', 'c', 'cpp',
1 version : '1.17.90',
1 version : '1.18.0',
22 meson_version : '>= 0.46.0',
33 default_options : [ 'warning_level=1',
44 'c_std=gnu99',
216216 gboolean we_initialized = FALSE;
217217 GModule *libpython;
218218 gpointer has_python = NULL;
219 const gchar *override_path;
219220
220221 GST_DEBUG_CATEGORY_INIT (pyplugindebug, "pyplugin", 0,
221222 "Python plugin loader");
253254 state = PyGILState_Ensure ();
254255 }
255256
257 if ((override_path = g_getenv ("GST_OVERRIDE_SRC_PATH"))) {
258 gchar *overrides_setup =
259 g_build_filename (override_path, "..", "..", "testsuite",
260 "overrides_hack.py", NULL);
261 FILE *fd = fopen (overrides_setup, "rb");
262
263 if (!fd || PyRun_SimpleFileExFlags (fd, overrides_setup, 1, 0)) {
264 g_free (overrides_setup);
265
266 return FALSE;
267 } else {
268 g_free (overrides_setup);
269 GST_INFO ("Imported overrides setup");
270 }
271 }
272
256273 GST_LOG ("Running with python version '%s'", Py_GetVersion ());
257274
258275 GST_LOG ("initializing pygobject");