0 | 0 |
GStreamer 1.18 Release Notes
|
1 | 1 |
|
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.
|
14 | 3 |
|
15 | 4 |
See https://gstreamer.freedesktop.org/releases/1.18/ for the latest
|
16 | 5 |
version of this document.
|
17 | 6 |
|
18 | |
Last updated: Wednesday 20 August 2020, 11:00 UTC (log)
|
|
7 |
Last updated: Monday 7 September 2020, 10:30 UTC (log)
|
19 | 8 |
|
20 | 9 |
Introduction
|
21 | 10 |
|
|
28 | 17 |
|
29 | 18 |
Highlights
|
30 | 19 |
|
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
|
32 | 86 |
|
33 | 87 |
Major new features and changes
|
34 | 88 |
|
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!
|
42 | 330 |
|
43 | 331 |
New element features and additions
|
44 | 332 |
|
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.
|
46 | 725 |
|
47 | 726 |
Plugin and library moves
|
48 | 727 |
|
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.
|
50 | 732 |
|
51 | 733 |
Plugin removals
|
52 | 734 |
|
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.
|
56 | 749 |
|
57 | 750 |
Miscellaneous API additions
|
58 | 751 |
|
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
|
62 | 1066 |
|
63 | 1067 |
As always there have been many performance and memory usage improvements
|
64 | 1068 |
across all components and modules. Some of them have already been
|
|
68 | 1072 |
interesting optimisations that haven’t been mentioned in other contexts
|
69 | 1073 |
yet:
|
70 | 1074 |
|
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.
|
80 | 1175 |
|
81 | 1176 |
OpenGL integration
|
82 | 1177 |
|
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.
|
84 | 1267 |
|
85 | 1268 |
Tracing framework and debugging improvements
|
86 | 1269 |
|
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
|
88 | 1300 |
|
89 | 1301 |
Tools
|
90 | 1302 |
|
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).
|
92 | 1339 |
|
93 | 1340 |
GStreamer RTSP server
|
94 | 1341 |
|
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
|
96 | 1368 |
|
97 | 1369 |
GStreamer VAAPI
|
98 | 1370 |
|
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
|
100 | 1477 |
|
101 | 1478 |
GStreamer OMX
|
102 | 1479 |
|
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
|
104 | 1495 |
|
105 | 1496 |
GStreamer Editing Services and NLE
|
106 | 1497 |
|
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
|
108 | 1562 |
|
109 | 1563 |
GStreamer validate
|
110 | 1564 |
|
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.
|
112 | 1607 |
|
113 | 1608 |
GStreamer Python Bindings
|
114 | 1609 |
|
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, ...)
|
116 | 1623 |
|
117 | 1624 |
GStreamer C# Bindings
|
118 | 1625 |
|
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
|
128 | 1723 |
|
129 | 1724 |
Build and Dependencies
|
130 | 1725 |
|
|
134 | 1729 |
|
135 | 1730 |
- API and plugin documentation are no longer built with gtk_doc. The
|
136 | 1731 |
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).
|
142 | 1793 |
|
143 | 1794 |
Cerbero
|
144 | 1795 |
|
|
146 | 1797 |
on platforms where dependencies are not readily available, such as
|
147 | 1798 |
Windows, Android, iOS and macOS.
|
148 | 1799 |
|
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
|
152 | 1928 |
|
153 | 1929 |
Platform-specific changes and improvements
|
154 | 1930 |
|
155 | 1931 |
Android
|
156 | 1932 |
|
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.
|
158 | 1943 |
|
159 | 1944 |
macOS and iOS
|
160 | 1945 |
|
161 | |
- FIXME
|
|
1946 |
- vtdec can now output to Vulkan-backed memory for zerocopy support
|
|
1947 |
with the Vulkan elements.
|
162 | 1948 |
|
163 | 1949 |
Windows
|
164 | 1950 |
|
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
|
168 | 2100 |
|
169 | 2101 |
Contributors
|
170 | 2102 |
|
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,
|
172 | 2167 |
|
173 | 2168 |
… and many others who have contributed bug reports, translations, sent
|
174 | 2169 |
suggestions or helped testing.
|
|
183 | 2178 |
|
184 | 2179 |
1.18.0
|
185 | 2180 |
|
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.
|
191 | 2182 |
|
192 | 2183 |
Schedule for 1.20
|
193 | 2184 |
|
|
195 | 2186 |
unstable development version leading up to the stable 1.20 release. The
|
196 | 2187 |
development of 1.19/1.20 will happen in the git master branch.
|
197 | 2188 |
|
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.
|
199 | 2192 |
|
200 | 2193 |
1.20 will be backwards-compatible to the stable 1.18, 1.16, 1.14, 1.12,
|
201 | 2194 |
1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series.
|
|
203 | 2196 |
------------------------------------------------------------------------
|
204 | 2197 |
|
205 | 2198 |
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.
|
207 | 2202 |
|
208 | 2203 |
License: CC BY-SA 4.0
|