2022-10-04 00:14:01 +00:00
|
|
|
|
GStreamer 1.22 Release Notes
|
2018-03-03 22:54:57 +00:00
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
GStreamer 1.22.0 was originally released on 23 January 2023.
|
2022-10-04 00:14:01 +00:00
|
|
|
|
|
|
|
|
|
See https://gstreamer.freedesktop.org/releases/1.22/ for the latest
|
2017-05-04 12:48:44 +00:00
|
|
|
|
version of this document.
|
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
Last updated: Monday 23 January 2023, 17:00 UTC (log)
|
2018-03-03 22:54:57 +00:00
|
|
|
|
|
|
|
|
|
Introduction
|
|
|
|
|
|
|
|
|
|
The GStreamer team is proud to announce a new major feature release in
|
|
|
|
|
the stable 1.x API series of your favourite cross-platform multimedia
|
|
|
|
|
framework!
|
|
|
|
|
|
2019-02-26 12:00:40 +00:00
|
|
|
|
As always, this release is again packed with many new features, bug
|
|
|
|
|
fixes and other improvements.
|
2018-03-03 22:54:57 +00:00
|
|
|
|
|
|
|
|
|
Highlights
|
2017-05-04 12:48:44 +00:00
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
- AV1 video codec support improvements
|
|
|
|
|
- New HLS, DASH and Microsoft Smooth Streaming adaptive streaming
|
|
|
|
|
clients
|
|
|
|
|
- Qt6 support for rendering video inside a QML scene
|
|
|
|
|
- Minimal builds optimised for binary size, including only the
|
|
|
|
|
individual elements needed
|
|
|
|
|
- Playbin3, Decodebin3, UriDecodebin3, Parsebin enhancements and
|
|
|
|
|
stabilisation
|
|
|
|
|
- WebRTC simulcast support and support for Google Congestion Control
|
|
|
|
|
- WebRTC-based media server ingestion/egress (WHIP/WHEP) support
|
|
|
|
|
- New easy to use batteries-included WebRTC sender plugin
|
|
|
|
|
- Easy RTP sender timestamp reconstruction for RTP and RTSP
|
|
|
|
|
- ONVIF timed metadata support
|
|
|
|
|
- New fragmented MP4 muxer and non-fragmented MP4 muxer
|
|
|
|
|
- New plugins for Amazon AWS storage and audio transcription services
|
|
|
|
|
- New gtk4paintablesink and gtkwaylandsink renderers
|
|
|
|
|
- New videocolorscale element that can convert and scale in one go for
|
|
|
|
|
better performance
|
|
|
|
|
- High bit-depth video improvements
|
|
|
|
|
- Touchscreen event support in navigation API
|
|
|
|
|
- Rust plugins now shipped in macOS and Windows/MSVC binary packages
|
|
|
|
|
- H.264/H.265 timestamp correction elements for PTS/DTS reconstruction
|
|
|
|
|
before muxers
|
|
|
|
|
- Improved design for DMA buffer sharing and modifier handling for
|
|
|
|
|
hardware-accelerated video decoders/encoders/filters and
|
|
|
|
|
capturing/rendering on Linux
|
|
|
|
|
- Video4Linux2 hardware accelerated decoder improvements
|
|
|
|
|
- CUDA integration and Direct3D11 integration and plugin improvements
|
|
|
|
|
- New H.264 / AVC, H.265 / HEVC and AV1 hardware-accelerated video
|
|
|
|
|
encoders for AMD GPUs using the Advanced Media Framework (AMF) SDK
|
|
|
|
|
- applemedia: H.265 / HEVC video encoding + decoding support
|
|
|
|
|
- androidmedia: H.265 / HEVC video encoding support
|
|
|
|
|
- New “force-live” property for audiomixer, compositor, glvideomixer,
|
|
|
|
|
d3d11compositor etc.
|
|
|
|
|
- Lots of new plugins, features, performance improvements and bug
|
|
|
|
|
fixes
|
2018-03-19 20:29:07 +00:00
|
|
|
|
|
2018-03-03 22:54:57 +00:00
|
|
|
|
Major new features and changes
|
2017-05-04 12:48:44 +00:00
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
AV1 video codec support improvements
|
|
|
|
|
|
|
|
|
|
AV1 is a royalty free next-generation video codec by AOMedia and a free
|
|
|
|
|
alternative to H.265/HEVC.
|
|
|
|
|
|
|
|
|
|
While supported in earlier versions of GStreamer already, this release
|
|
|
|
|
saw a lot of improvements across the board:
|
|
|
|
|
|
|
|
|
|
- Support for hardware encoding and decoding via VAAPI/VA, AMF, D3D11,
|
|
|
|
|
NVCODEC, QSV and Intel MediaSDK. Hardware codecs for AV1 are slowly
|
|
|
|
|
becoming available in embedded systems and desktop GPUs (AMD, Intel,
|
|
|
|
|
NVIDIA), and these can now be used via GStreamer.
|
|
|
|
|
|
|
|
|
|
- New AV1 RTP payloader and depayloader elements.
|
|
|
|
|
|
|
|
|
|
- New encoder settings in the AOM reference encoder-based av1enc
|
|
|
|
|
element.
|
|
|
|
|
|
|
|
|
|
- Various improvements in the AV1 parser and in the MP4/Matroska/WebM
|
|
|
|
|
muxers/demuxers.
|
|
|
|
|
|
|
|
|
|
- dav1d and rav1e based software decoder/encoder elements shipped as
|
|
|
|
|
part of the binaries.
|
|
|
|
|
|
|
|
|
|
- AV1 parser improvements and various bugfixes all over the place.
|
|
|
|
|
|
|
|
|
|
Touchscreen event support in Navigation API
|
|
|
|
|
|
|
|
|
|
The Navigation API supports the sending of key press events and mouse
|
|
|
|
|
events through a GStreamer pipeline. Typically these will be picked up
|
|
|
|
|
by a video sink on which these events happen and then the event is
|
|
|
|
|
transmitted into the pipeline so it can be handled by elements inside
|
|
|
|
|
the pipeline if it wasn’t handled by the application.
|
|
|
|
|
|
|
|
|
|
This has traditionally been used for DVD menu support, but can also be
|
|
|
|
|
used to forward such inputs to source elements that render a web page
|
|
|
|
|
using a browser engine such as WebKit or Chromium.
|
|
|
|
|
|
|
|
|
|
This API has now gained support for touchscreen events, and this has
|
|
|
|
|
been implemented in various plugins such as the GTK, Qt, XV, and x11
|
|
|
|
|
video sinks as well as the wpevideosrc element.
|
|
|
|
|
|
|
|
|
|
GStreamer CUDA integration
|
|
|
|
|
|
|
|
|
|
- New gst-cuda library
|
|
|
|
|
- integration with D3D11 and NVIDIA dGPU NVMM elements
|
|
|
|
|
- new cudaconvertscale element
|
|
|
|
|
|
|
|
|
|
GStreamer Direct3D11 integration
|
|
|
|
|
|
|
|
|
|
- New gst-d3d11 public library
|
|
|
|
|
- gst-d3d11 library is not integrated with GStreamer documentation
|
|
|
|
|
system yet. Please refer to the examples
|
|
|
|
|
- d3d11screencapture: Add Windows Graphics Capture API based capture
|
|
|
|
|
mode, including Win32 application window capturing
|
|
|
|
|
- d3d11videosink and d3d11convert can support flip/rotation and crop
|
|
|
|
|
meta
|
|
|
|
|
- d3d11videosink: New emit-present property and present signal so that
|
|
|
|
|
applications can overlay an image on Direct3D11 swapchain’s
|
|
|
|
|
backbuffer via Direct3D/Direct2D APIs. See also C++ and Rust
|
|
|
|
|
examples
|
|
|
|
|
- d3d11compositor supports YUV blending/composing without intermediate
|
|
|
|
|
RGB(A) conversion to improve performance
|
|
|
|
|
- Direct3D11 video decoders are promoted to GST_RANK_PRIMARY or
|
|
|
|
|
higher, except for the MPEG2 decoder
|
|
|
|
|
|
|
|
|
|
H.264/H.265 timestamp correction elements
|
|
|
|
|
|
|
|
|
|
- Muxers are often picky and need proper PTS/DTS timestamps set on the
|
|
|
|
|
input buffers, but that can be a problem if the encoded input media
|
|
|
|
|
stream comes from a source that doesn’t provide proper signalling of
|
|
|
|
|
DTS, such as is often the case for RTP, RTSP and WebRTC streams or
|
|
|
|
|
Matroska container files. Theoretically parsers should be able to
|
|
|
|
|
fix this up, but it would probably require fairly invasive changes
|
|
|
|
|
in the parsers, so two new elements h264timestamper and
|
|
|
|
|
h265timestamper bridge the gap in the meantime and can reconstruct
|
|
|
|
|
missing PTS/DTS.
|
|
|
|
|
|
|
|
|
|
Easy sender timestamp reconstruction for RTP and RTSP
|
|
|
|
|
|
|
|
|
|
- it was always possible to reconstruct and retrieve the original RTP
|
|
|
|
|
sender timestamps in GStreamer, but required a fair bit of
|
|
|
|
|
understanding of the internal mechanisms and the right property
|
|
|
|
|
configuration and clock setup.
|
|
|
|
|
|
|
|
|
|
- rtspsrc and rtpjitterbuffer gained a new
|
|
|
|
|
“add-reference-timestamp-meta” property that if set puts the
|
|
|
|
|
original absolute reconstructed sender timestamps on the output
|
|
|
|
|
buffers via a meta. This is particularly useful if the sender is
|
|
|
|
|
synced to an NTP clock or PTP clock. The original sender timestamps
|
|
|
|
|
are either based on the RTCP NTP times, NTP RTP header extensions
|
|
|
|
|
(RFC6051) or RFC7273-style clock signalling.
|
|
|
|
|
|
|
|
|
|
Qt6 support
|
|
|
|
|
|
|
|
|
|
- new qml6glsink element for Qt6 similar to the existing Qt5 element.
|
|
|
|
|
Matching source and overlay elements will hopefully follow in the
|
|
|
|
|
near future.
|
|
|
|
|
|
|
|
|
|
OpenGL + Video library enhancements
|
|
|
|
|
|
|
|
|
|
- Support for new video formats (NV12_4L4, NV12_16L32S, NV12_8L128,
|
|
|
|
|
NV12_10BE_8L128) and dmabuf import in more formats (Y410, Y212_LE,
|
|
|
|
|
Y212_BE, Y210, NV21, NV61)
|
|
|
|
|
|
|
|
|
|
- Improved support for tiled formats with arbitrary tile dimensions,
|
|
|
|
|
as needed by certain hardware decoders/encoders
|
|
|
|
|
|
|
|
|
|
- glvideomixer: New “crop-left,”crop-right, “crop-top” and
|
|
|
|
|
“crop-bottom” pad properties for cropping inputs
|
|
|
|
|
|
|
|
|
|
- OpenGL support for gst_video_sample_convert():
|
|
|
|
|
|
|
|
|
|
- Used for video snapshotting and thumbnailing, to convert buffers
|
|
|
|
|
retrieved from appsinks or sink “last-sample” properties in
|
|
|
|
|
JPG/PNG thumbnails.
|
|
|
|
|
- This function can now take samples and buffers backed by GL
|
|
|
|
|
textures as input and will automatically plug a gldownload
|
|
|
|
|
element in that case.
|
|
|
|
|
|
|
|
|
|
High bit-depth support (10, 12, 16 bits per component value) improvements
|
|
|
|
|
|
|
|
|
|
- compositor can now handle any supported input format and also mix
|
|
|
|
|
high-bitdepth (10-16 bit) formats (naively)
|
|
|
|
|
|
|
|
|
|
- videoflip has gained support for higher bit depth formats.
|
|
|
|
|
|
|
|
|
|
- vp9enc, vp9dec now support 12-bit formats and also 10-bit 4:4:4
|
|
|
|
|
|
|
|
|
|
WebRTC
|
|
|
|
|
|
|
|
|
|
- Allow insertion of bandwidth estimation elements e.g. for Google
|
|
|
|
|
Congestion Control (GCC) support
|
|
|
|
|
|
|
|
|
|
- Initial support for sending or receiving simulcast streams
|
|
|
|
|
|
|
|
|
|
- Support for asynchronous host resolution for STUN/TURN servers
|
|
|
|
|
|
|
|
|
|
- GstWebRTCICE was split into base classes and implementation to make
|
|
|
|
|
it possible to plug custom ICE implementations
|
|
|
|
|
|
|
|
|
|
- webrtcsink: batteries-included WebRTC sender (Rust)
|
|
|
|
|
|
|
|
|
|
- whipsink: WebRTC HTTP ingest (WHIP) to a MediaServer (Rust)
|
|
|
|
|
|
|
|
|
|
- whepsrc: WebRTC HTTP egress (WHEP) from a MediaServer (Rust)
|
|
|
|
|
|
|
|
|
|
- Many other improvements and bug fixes
|
|
|
|
|
|
|
|
|
|
New HLS, DASH and MSS adaptive streaming clients
|
|
|
|
|
|
|
|
|
|
A new set of “adaptive demuxers” to support HLS, DASH and MSS adaptive
|
|
|
|
|
streaming protocols has been added. They provide improved performance,
|
|
|
|
|
new features and better stream compatibility compared to the previous
|
|
|
|
|
elements. These new elements require a “streams-aware” pipeline such as
|
|
|
|
|
playbin3, uridecodebin3 or urisourcebin.
|
|
|
|
|
|
|
|
|
|
The previous elements’ design prevented implementing several use-cases
|
|
|
|
|
and fixing long-standing issues. The new elements were re-designed from
|
|
|
|
|
scratch to tackle those:
|
|
|
|
|
|
|
|
|
|
- Scheduling Only 3 threads are present, regardless of the number of
|
|
|
|
|
streams selected. One in charge of downloading fragments and
|
|
|
|
|
manifests, one in charge of outputting parsed data downstream, and
|
|
|
|
|
one in charge of scheduling. This improves performance, resource
|
|
|
|
|
usage and latency.
|
|
|
|
|
|
|
|
|
|
- Better download control The elements now directly control the
|
|
|
|
|
scheduling and download of manifests and fragments using libsoup
|
|
|
|
|
directly instead of depending on external elements for downloading.
|
|
|
|
|
|
|
|
|
|
- Stream selection, only the selected streams are downloaded. This
|
|
|
|
|
improves bandwith usage. Switching stream is done in such a way to
|
|
|
|
|
ensure there are no gaps, meaning the new stream will be switched to
|
|
|
|
|
only once enough data for it has been downloaded.
|
|
|
|
|
|
|
|
|
|
- Internal parsing, the downloaded streams are parsed internally. This
|
|
|
|
|
allows the element to fully respect the various specifications and
|
|
|
|
|
offer accurate buffering, seeking and playback. This is especially
|
|
|
|
|
important for HLS streams which require parsing for proper
|
|
|
|
|
positioning of streams.
|
|
|
|
|
|
|
|
|
|
- Buffering and adaptive rate switching, the new elements handle
|
|
|
|
|
buffering internally which allows them to have a more accurate
|
|
|
|
|
visibility of which bandwith variant to switch to.
|
|
|
|
|
|
|
|
|
|
Playbin3, Decodebin3, UriDecodebin3, Parsebin improvements
|
|
|
|
|
|
|
|
|
|
The “new” playback elements introduced in 1.18 (playbin3 and its various
|
|
|
|
|
components) have been refactored to allow more use-cases and improve
|
|
|
|
|
performance. They are no longer considered experimental, so applications
|
|
|
|
|
using the legacy playback elements (playbin and (uri)decodebin) can
|
|
|
|
|
migrate to the new components to benefit from these improvements.
|
|
|
|
|
|
|
|
|
|
- Gapless The “gapless” feature allows files and streams to be
|
|
|
|
|
fetched, buffered and decoded in order to provide a “gapless”
|
|
|
|
|
output. This feature has been refactored extensively in the new
|
|
|
|
|
components:
|
|
|
|
|
- A single (uri)decodebin3 (and therefore a single set of
|
|
|
|
|
decoders) is used. This improves memory and cpu usage, since on
|
|
|
|
|
identical codecs a single decoder will be used.
|
|
|
|
|
- The “next” stream to play will be pre-rolled “just-in-time”
|
|
|
|
|
thanks to the buffering improvements in urisourcebin (see below)
|
|
|
|
|
- This feature is now handled at the uridecodebin3 level.
|
|
|
|
|
Applications that wish to have a “gapless” stream and process it
|
|
|
|
|
(instead of just outputting it, for example for transcoding,
|
|
|
|
|
retransmission, …) can now use uridecodebin3 directly. Note that
|
|
|
|
|
a streamsynchronizer element is required in that case.
|
|
|
|
|
- Buffering improvements The urisourcebin element is in charge of
|
|
|
|
|
fetching and (optionally) buffering/downloading the stream. It has
|
|
|
|
|
been extended and improved:
|
|
|
|
|
- When the parse-streams property is used (by default in
|
|
|
|
|
uridecodebin3 and playbin3), compatible streams will be demuxed
|
|
|
|
|
and parsed (via parsebin) and buffering will be done on the
|
|
|
|
|
elementary streams. This provides a more accurate handling of
|
|
|
|
|
buffering. Previously buffering was done on a best-effort basis
|
|
|
|
|
and was mostly wrong (i.e. downloading more than needed).
|
|
|
|
|
- Applications can use urisourcebin with this property as a
|
|
|
|
|
convenient way of getting elementary streams from a given URI.
|
|
|
|
|
- Elements can handle buffering themselves (such as the new
|
|
|
|
|
adaptive demuxers) by answering the GST_QUERY_BUFFERING query.
|
|
|
|
|
In that case urisourcebin will not handle it.
|
|
|
|
|
- Stream Selection Efficient stream selection was previously only
|
|
|
|
|
possible within decodebin3. The downside is that this meant that
|
|
|
|
|
upstream elements had to provide all the streams from which to chose
|
|
|
|
|
from, which is inefficient. With the addition of the
|
|
|
|
|
GST_QUERY_SELECTABLE query, this can now be handled by elements
|
|
|
|
|
upstream (i.e. sources)
|
|
|
|
|
- Elements that can handle stream selection internally (such as
|
|
|
|
|
the new adaptive demuxer elements) answer that query, and handle
|
|
|
|
|
the stream selection events themselves.
|
|
|
|
|
- In this case, decodebin3 will always process all streams that
|
|
|
|
|
are provided to it.
|
|
|
|
|
- Instant URI switching This new feature allows switching URIs
|
|
|
|
|
“instantly” in playbin3 (and uridecodebin3) without having to change
|
|
|
|
|
states. This mimics switching channels on a television.
|
|
|
|
|
- If compatible, decoders will be re-used, providing lower
|
|
|
|
|
latency/cpu/memory than by switching states.
|
|
|
|
|
- This is enabled by setting the instant-uri property to true,
|
|
|
|
|
setting the URI to switch to immediately, and then disabling the
|
|
|
|
|
instant-uri property again afterwards.
|
|
|
|
|
- playbin3, decodebin3, uridecodebin3, parsebin, and urisrc are no
|
|
|
|
|
longer experimental
|
|
|
|
|
- They were originally marked as ‘technology preview’ but have
|
|
|
|
|
since seen extensive usage in production settings, so are
|
|
|
|
|
considered ready for general use now.
|
|
|
|
|
|
|
|
|
|
Fraunhofer AAC audio encoder HE-AAC and AAC-LD profile support
|
|
|
|
|
|
|
|
|
|
- fdkaacenc:
|
|
|
|
|
- Support for encoding to HE-AACv1 and HE-AACv2 profile
|
|
|
|
|
- Support for encoding to AAC Low Delay (LD) profile
|
|
|
|
|
- Advanced bitrate control options via new “rate-control”,
|
|
|
|
|
“vbr-preset”, “peak-bitrate”, and “afterburner” properties
|
|
|
|
|
|
|
|
|
|
RTP rapid synchronization support in the RTP stack (RFC6051)
|
|
|
|
|
|
|
|
|
|
RTP provides several mechanisms how streams can be synchronized relative
|
|
|
|
|
to each other, and how absolute sender times for RTP packets can be
|
|
|
|
|
obtained. One of these mechanisms is via RTCP, which has the
|
|
|
|
|
disadvantage that the synchronization information is only distributed
|
|
|
|
|
out-of-band and usually some time after the start.
|
|
|
|
|
|
|
|
|
|
GStreamer’s RTP stack, specifically the rtpbin, rtpsession and
|
|
|
|
|
rtpjitterbuffer elements, now also have support for retrieving and
|
|
|
|
|
sending the same synchronization information in-band via RTP header
|
|
|
|
|
extensions according to RFC6051 (Rapid Synchronisation of RTP Flows).
|
|
|
|
|
Only 64-bit timestamps are supported currently.
|
|
|
|
|
|
|
|
|
|
This provides per packet synchronization information from the very
|
|
|
|
|
beginning of a stream and allows accurate inter-stream, and (depending
|
|
|
|
|
on setup) inter-device, synchronization at the receiver side.
|
|
|
|
|
|
|
|
|
|
ONVIF XML Timed Metadata support
|
|
|
|
|
|
|
|
|
|
The ONVIF standard implemented by various security cameras also
|
|
|
|
|
specifies a format for timed metadata that is transmitted together with
|
|
|
|
|
the audio/video streams, usually over RTSP.
|
|
|
|
|
|
|
|
|
|
Support for this timed metadata is implemented in the MP4 demuxer now as
|
|
|
|
|
well as the new fragmented MP4 muxer and the new non-fragmented MP4
|
|
|
|
|
muxer from the GStreamer Rust plugins. Additionally, the new onvif
|
|
|
|
|
plugin ‒ which is part of the GStreamer Rust plugins ‒ provides general
|
|
|
|
|
elements for handling the metadata and e.g. overlaying certain parts of
|
|
|
|
|
it over a video stream.
|
|
|
|
|
|
|
|
|
|
As part of this support for absolute UTC times was also implemented
|
|
|
|
|
according to the requirements of the ONVIF standards in the
|
|
|
|
|
corresponding elements.
|
|
|
|
|
|
|
|
|
|
MP3 gapless playback support
|
|
|
|
|
|
|
|
|
|
While MP3 can probably considered a legacy format at this point, a new
|
|
|
|
|
feature was added with this release.
|
|
|
|
|
|
|
|
|
|
When playing back plain MP3 files, i.e. outside a container format,
|
|
|
|
|
switches between files can now be completely gapless if the required
|
|
|
|
|
metadata is provided inside the file. There is no standardized metadata
|
|
|
|
|
for this, but the LAME MP3 encoder writes metadata that can be parsed by
|
|
|
|
|
the mpegaudioparse element now and forwarded to decoders for ensuring
|
|
|
|
|
removal of padding samples at the front and end of MP3 files.
|
|
|
|
|
|
|
|
|
|
“force-live” property for audio + video aggregators
|
|
|
|
|
|
|
|
|
|
This is a quality of life fix for playout and streaming applications
|
|
|
|
|
where it is common to have audio and video mixer elements that should
|
|
|
|
|
operate in live mode from the start and produce output continuously.
|
|
|
|
|
|
|
|
|
|
Often one would start a pipeline without any inputs hooked up to these
|
|
|
|
|
mixers in the beginning, and up until now there was no way to easily
|
|
|
|
|
force these elements into live mode from the start. One would have to
|
|
|
|
|
add an initial live video or audio test source as dummy input to achieve
|
|
|
|
|
this.
|
|
|
|
|
|
|
|
|
|
The new “force-live” property makes these audio and video aggregators
|
|
|
|
|
start in live mode without the need for any dummy inputs, which is
|
|
|
|
|
useful for scenarios where inputs are only added after starting the
|
|
|
|
|
pipeline.
|
|
|
|
|
|
|
|
|
|
This new property should usually be used in connection with the
|
|
|
|
|
“min-upstream-latency” property, i.e. you should always set a non-0
|
|
|
|
|
minimum upstream latency then.
|
|
|
|
|
|
|
|
|
|
This is now supported in all GstAudioAggregator and GstVideoAggregator
|
|
|
|
|
subclasses such as audiomixer, audiointerleave, compositor,
|
|
|
|
|
glvideomixer, d3d11compositor, etc.
|
|
|
|
|
|
|
|
|
|
New elements and plugins
|
|
|
|
|
|
|
|
|
|
- new cudaconvertscale element that can convert and scale in one pass
|
|
|
|
|
|
|
|
|
|
- new gtkwaylandsink element based on gtksink, but similar to
|
|
|
|
|
waylandsink and uses Wayland APIs directly instead of rendering with
|
|
|
|
|
Gtk/Cairo primitives. This approach is only compatible with Gtk3,
|
|
|
|
|
and like gtksink this element only supports Gtk3.
|
|
|
|
|
|
|
|
|
|
- new h264timestamper and h265timestamper elements to reconstruct
|
|
|
|
|
missing pts/dts from inputs that might not provide them such as
|
|
|
|
|
e.g. RTP/RTSP/WebRTC inputs (see above)
|
|
|
|
|
|
|
|
|
|
- mfaacdec, mfmp3dec: Windows MediaFoundation AAC and MP3 decoders
|
|
|
|
|
|
|
|
|
|
- new msdkav1enc AV1 video encoder element
|
|
|
|
|
|
|
|
|
|
- new nvcudah264enc, nvcudah265enc, nvd3d11h264enc, and nvd3d11h265enc
|
|
|
|
|
NVIDIA GPU encoder elements to support zero-copy encoding, via CUDA
|
|
|
|
|
and Direct3D11 APIs, respectively
|
|
|
|
|
|
|
|
|
|
- new nvautogpuh264enc and nvautogpuh265enc NVIDIA GPU encoder
|
|
|
|
|
elements: The auto GPU elements will automatically select a target
|
|
|
|
|
GPU instance in case multiple NVIDIA desktop GPUs are present, also
|
|
|
|
|
taking into account the input memory. On Windows CUDA or Direct3D11
|
|
|
|
|
mode will be determined by the elements automatically as well. Those
|
|
|
|
|
new elements are useful if target GPU and/or API mode (either CUDA
|
|
|
|
|
or Direct3D11 in case of Windows) is undeterminable from the encoder
|
|
|
|
|
point of view at the time when pipeline is configured, and therefore
|
|
|
|
|
lazy target GPU and/or API selection are required in order to avoid
|
|
|
|
|
unnecessary memory copy operations.
|
|
|
|
|
|
|
|
|
|
- new nvav1dec AV1 NVIDIA desktop GPU decoder element
|
|
|
|
|
|
|
|
|
|
- new qml6glsink element to render video with Qt6
|
|
|
|
|
|
|
|
|
|
- qsv: New Intel OneVPL/MediaSDK (a.k.a Intel Quick Sync) based
|
|
|
|
|
decoder and encoder elements, with gst-d3d11 (on Windows) and gst-va
|
|
|
|
|
(on Linux) integration
|
2020-09-07 23:10:18 +00:00
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
- Support multi-GPU environment, for example, concurrent video
|
|
|
|
|
encoding using Intel iGPU and dGPU in a single pipeline
|
|
|
|
|
- H.264 / H.265 / VP9 and JPEG decoders
|
|
|
|
|
- H.264 / H.265 / VP9 / AV1 / JPEG encoders with dynamic encoding
|
|
|
|
|
bitrate update
|
|
|
|
|
- New plugin does not require external SDK for building on Windows
|
2020-09-07 23:10:18 +00:00
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
- vulkanoverlaycompositor: new vulkan overlay compositor element to
|
|
|
|
|
overlay upstream GstVideoOverlayCompositonMeta onto the video
|
|
|
|
|
stream.
|
2020-09-07 23:10:18 +00:00
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
- vulkanshaderspv: performs operations with SPIRV shaders in Vulkan
|
|
|
|
|
|
|
|
|
|
- win32ipcvideosink, win32ipcvideosrc: new shared memory videosrc/sink
|
|
|
|
|
elements for Windows
|
|
|
|
|
|
|
|
|
|
- wicjpegdec, wicpngdec: Windows Imaging Component (WIC) based JPEG
|
|
|
|
|
and PNG decoder elements.
|
|
|
|
|
|
|
|
|
|
- Many exciting new Rust elements, see Rust section below
|
2018-03-19 20:29:07 +00:00
|
|
|
|
|
2018-03-20 10:56:57 +00:00
|
|
|
|
New element features and additions
|
2017-05-04 12:48:44 +00:00
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
- audioconvert: Dithering now uses a slightly slower, less biased PRNG
|
|
|
|
|
which results in better quality output. Also dithering can now be
|
|
|
|
|
enabled via the new “dithering-threshold” property for target bit
|
|
|
|
|
depths of more than 20 bits.
|
|
|
|
|
|
|
|
|
|
- av1enc: Add “keyframe-max-dist” property for controlling max
|
|
|
|
|
distance between keyframes, as well as “enc-pass”, “keyframe-mode”,
|
|
|
|
|
“lag-in-frames” and “usage-profile” properties.
|
|
|
|
|
|
|
|
|
|
- cccombiner: new “output-padding” property
|
|
|
|
|
|
|
|
|
|
- decklink: Add support for 4k DCI, 8k/UHD2 and 8k DCI modes
|
|
|
|
|
|
|
|
|
|
- dvbsubenc: Support for >SD resolutions is working correctly now.
|
|
|
|
|
|
|
|
|
|
- fdkaacenc: Add HE-AAC / HE-AACv2 profile support
|
|
|
|
|
|
|
|
|
|
- glvideomixer: New “crop-left,”crop-right, “crop-top” and
|
|
|
|
|
“crop-bottom” pad properties for cropping inputs
|
|
|
|
|
|
|
|
|
|
- gssink: new ‘content-type’ property. Useful when one wants to upload
|
|
|
|
|
a video as video/mp4 instead of ’video/quicktime` for example.
|
|
|
|
|
|
|
|
|
|
- jpegparse: Rewritten using the common parser library
|
|
|
|
|
|
|
|
|
|
- msdk:
|
|
|
|
|
|
|
|
|
|
- new msdkav1enc AV1 video encoder element
|
|
|
|
|
- msdk decoders: Add support for Scaler Format Converter (SFC) on
|
|
|
|
|
supported Intel platforms for hardware accelerated conversion
|
|
|
|
|
and scaling
|
|
|
|
|
- msdk encoders: support import of dmabuf, va memory and D3D11
|
|
|
|
|
memory
|
|
|
|
|
- msdk encoders: add properties for low delay bitrate control and
|
|
|
|
|
max frame sizes for I/P frames
|
|
|
|
|
- msdkh264enc, msdkh265enc: more properties to control intra
|
|
|
|
|
refresh
|
|
|
|
|
- note that on systems with multi GPUs the Windows D3D11
|
|
|
|
|
integration might only work reliably if the Intel GPU is the
|
|
|
|
|
primary GPU
|
|
|
|
|
|
|
|
|
|
- mxfdemux: Add support for Canon XF-HEVC
|
|
|
|
|
|
|
|
|
|
- openaptx: Support the freeaptx library
|
|
|
|
|
|
|
|
|
|
- qroverlay:
|
|
|
|
|
|
|
|
|
|
- new “qrcode-case-sensitive” property allows encoding case
|
|
|
|
|
sensitive strings like wifi SSIDs or passwords.
|
|
|
|
|
- added the ability to pick up data to render from an
|
|
|
|
|
upstream-provided custom GstQROverlay meta
|
|
|
|
|
|
|
|
|
|
- qtdemux: Add support for ONVIF XML Timed MetaData and AVC-Intra
|
|
|
|
|
video
|
|
|
|
|
|
|
|
|
|
- rfbsrc now supports the uri handler interface, so applications can
|
|
|
|
|
use RFB/VNC sources in uridecodebin(3) and playbin, with
|
|
|
|
|
e.g. rfb://:password@10.1.2.3:5903?shared=1
|
|
|
|
|
|
|
|
|
|
- rtponviftimestamp: Add support for using reference timestamps
|
|
|
|
|
|
|
|
|
|
- rtpvp9depay now has the same keyframe-related properties as
|
|
|
|
|
rtpvp8depay and rtph264depay: “request-keyframe” and
|
|
|
|
|
“wait-for-keyframe”
|
|
|
|
|
|
|
|
|
|
- rtspsrc: Various RTSP servers are using invalid URL operations for
|
|
|
|
|
constructing the control URL. Until GStreamer 1.16 these worked
|
|
|
|
|
correctly because GStreamer was just appending strings itself to
|
|
|
|
|
construct the control URL, but starting version 1.18 the correct URL
|
|
|
|
|
operations were used. With GStreamer 1.22, rtspsrc now first tries
|
|
|
|
|
with the correct control URL and if that fails it will retry with
|
|
|
|
|
the wrongly constructed control URL to restore support for such
|
|
|
|
|
servers.
|
|
|
|
|
|
|
|
|
|
- rtspsrc and rtpjitterbuffer gained a new
|
|
|
|
|
“add-reference-timestamp-meta” property that makes them put the
|
|
|
|
|
unmodified original sender timestamp on output buffers for NTP or
|
|
|
|
|
PTP clock synced senders
|
|
|
|
|
|
|
|
|
|
- srtsrc, srtsink: new “auto-reconnect” property to make it possible
|
|
|
|
|
to disable automatic reconnects (in caller mode) and make the
|
|
|
|
|
elements post an error immediately instead; also stats improvements
|
|
|
|
|
|
|
|
|
|
- srtsrc: new “keep-listening” property to avoid EOS on disconnect and
|
|
|
|
|
keep the source running while it waits for a new connection.
|
|
|
|
|
|
|
|
|
|
- videocodectestsink: added YUV 4:2:2 support
|
|
|
|
|
|
|
|
|
|
- wasapi2src: Add support for process loopback capture
|
|
|
|
|
|
|
|
|
|
- wpesrc: Add support for modifiers in key/touch/pointer events
|
2022-01-28 14:28:35 +00:00
|
|
|
|
|
|
|
|
|
Plugin and library moves
|
2020-09-07 23:10:18 +00:00
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
- The xingmux plugin has been moved from gst-plugins-ugly into
|
|
|
|
|
gst-plugins-good.
|
2022-10-04 00:14:01 +00:00
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
- The various Windows directshow plugins in gst-plugins-bad have been
|
|
|
|
|
unified into a single directshow plugin.
|
2017-05-04 12:48:44 +00:00
|
|
|
|
|
2018-03-03 22:54:57 +00:00
|
|
|
|
Plugin removals
|
2017-05-04 12:48:44 +00:00
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
- The dxgiscreencapsrc element has been removed, use
|
|
|
|
|
d3d11screencapturesrc instead
|
2021-11-03 15:43:36 +00:00
|
|
|
|
|
2020-09-07 23:10:18 +00:00
|
|
|
|
Miscellaneous API additions
|
2019-04-18 23:36:53 +00:00
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
- GST_AUDIO_FORMAT_INFO_IS_VALID_RAW() and
|
|
|
|
|
GST_VIDEO_FORMAT_INFO_IS_VALID_RAW() can be used to check if a
|
|
|
|
|
GstAudioFormatInfo or GstVideoFormatInfo has been initialised to a
|
|
|
|
|
valid raw format.
|
|
|
|
|
|
|
|
|
|
- Video SEI meta: new GstVideoSEIUserDataUnregisteredMeta to carry
|
|
|
|
|
H.264 and H.265 metadata from SEI User Data Unregistered messages.
|
|
|
|
|
|
|
|
|
|
- vulkan: Expose gst_vulkan_result_to_string()
|
2020-09-07 23:10:18 +00:00
|
|
|
|
|
|
|
|
|
Miscellaneous performance, latency and memory optimisations
|
2019-01-17 10:01:50 +00:00
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
- liborc 0.4.33 adds support for aarch64 (64-bit ARM) architecture
|
|
|
|
|
(not enabled by default on Windows yet though) and improvements for
|
|
|
|
|
32-bit ARM and should greatly enhance performance for certain
|
|
|
|
|
operations that use ORC.
|
|
|
|
|
|
|
|
|
|
- as always there have been plenty of performance, latency and memory
|
|
|
|
|
optimisations all over the place.
|
2017-05-04 12:48:44 +00:00
|
|
|
|
|
2022-01-28 14:28:35 +00:00
|
|
|
|
Miscellaneous other changes and enhancements
|
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
- the audio/video decoder base classes will not consider decoding
|
|
|
|
|
errors a hard error by default anymore but will continue trying to
|
|
|
|
|
decode. Previously more than 10 consecutive errors were considered a
|
|
|
|
|
hard error but this caused various partially broken streams to fail.
|
|
|
|
|
The threshold is configurable via the “max-errors” property.
|
|
|
|
|
|
|
|
|
|
- compatibility of the GStreamer PTP clock implementation with
|
|
|
|
|
different PTP server implementations was improved, and
|
|
|
|
|
synchronization is achieved successfully in various scenarios that
|
|
|
|
|
failed before.
|
2022-01-28 14:28:35 +00:00
|
|
|
|
|
2022-10-04 00:14:01 +00:00
|
|
|
|
Tracing framework and debugging improvements
|
2022-01-28 14:28:35 +00:00
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
New tracers
|
|
|
|
|
|
|
|
|
|
- buffer-lateness: Records lateness of buffers and the reported
|
|
|
|
|
latency for each pad in a CSV file. Comes with a script for
|
|
|
|
|
visualisation.
|
|
|
|
|
|
|
|
|
|
- pipeline-snapshot: Creates a .dot file of all pipelines in the
|
|
|
|
|
application whenever requested via SIGUSR1 (on UNIX systems)
|
|
|
|
|
|
|
|
|
|
- queue-levels: Records queue levels for each queue in a CSV file.
|
|
|
|
|
Comes with a script for visualisation.
|
|
|
|
|
|
|
|
|
|
Debug logging system improvements
|
|
|
|
|
|
|
|
|
|
- new log macros GST_LOG_ID, GST_DEBUG_ID, GST_INFO_ID,
|
|
|
|
|
GST_WARNING_ID, GST_ERROR_ID, and GST_TRACE_ID allow passing a
|
|
|
|
|
string identifier instead of a GObject. This makes it easier to log
|
|
|
|
|
non-gobject-based items and also has performance benefits.
|
2022-01-28 14:28:35 +00:00
|
|
|
|
|
2022-10-04 00:14:01 +00:00
|
|
|
|
Tools
|
2022-01-28 14:28:35 +00:00
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
- gst-play-1.0 gained a --no-position command line option to suppress
|
|
|
|
|
position/duration queries, which can be useful to reduce debug log
|
|
|
|
|
noise.
|
|
|
|
|
|
|
|
|
|
GStreamer FFMPEG wrapper
|
|
|
|
|
|
|
|
|
|
- Fixed bitrate management and timestamp inaccuracies for video
|
|
|
|
|
encoders
|
|
|
|
|
|
|
|
|
|
- Fix synchronization issues and errors created by the (wrong)
|
|
|
|
|
forwarding of upstream segment events by ffmpeg demuxers.
|
|
|
|
|
|
|
|
|
|
- Clipping meta support for gapless mp3 playback
|
2017-05-04 12:48:44 +00:00
|
|
|
|
|
2018-03-03 22:54:57 +00:00
|
|
|
|
GStreamer RTSP server
|
2017-05-04 12:48:44 +00:00
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
- Add RFC5576 Source-specific media attribute to the SDP media for
|
|
|
|
|
signalling the CNAME
|
|
|
|
|
|
|
|
|
|
- Add support for adjusting request response on pipeline errors
|
|
|
|
|
|
|
|
|
|
- Give the application the possibility to adjust the error code
|
|
|
|
|
when responding to a request. For that purpose the pipeline’s
|
|
|
|
|
bus messages are emitted to subscribers through a
|
|
|
|
|
“handle-message” signal. The subscribers can then check those
|
|
|
|
|
messages for errors and adjust the response error code by
|
|
|
|
|
overriding the virtual method
|
|
|
|
|
GstRTSPClientClass::adjust_error_code().
|
|
|
|
|
|
|
|
|
|
- Add gst_rtsp_context_set_token() method to make it possible to set
|
|
|
|
|
the RTSPToken on some RTSPContext from bindings such as the Python
|
|
|
|
|
bindings.
|
|
|
|
|
|
|
|
|
|
- rtspclientsink gained a “publish-clock-mode” property to configure
|
|
|
|
|
whether the pipeline clock should be published according to RFC7273
|
|
|
|
|
(RTP Clock Source Signalling), similar to the same API on
|
|
|
|
|
GstRTSPMedia.
|
|
|
|
|
|
|
|
|
|
GStreamer VA-API support
|
|
|
|
|
|
|
|
|
|
- Development activity has shifted towards the new va plugin, with
|
|
|
|
|
gstreamer-vaapi now basically in maintenance-only mode. Most of the
|
|
|
|
|
below refers to the va plugin (not gstreamer-vaapi).
|
|
|
|
|
|
|
|
|
|
- new gst-va library for GStreamer VA-API integration
|
|
|
|
|
|
|
|
|
|
- vajpegdec: new JPEG decoder
|
|
|
|
|
|
|
|
|
|
- vah264enc, vah265enc: new H.264/H.265 encoders
|
|
|
|
|
|
|
|
|
|
- vah264lpenc, vah265lpenc: new low power mode encoders
|
|
|
|
|
|
|
|
|
|
- vah265enc: Add extended formats support such as 10/12 bits, 4:2:2
|
|
|
|
|
and 4:4:4
|
|
|
|
|
|
|
|
|
|
- Support encoder reconfiguration
|
|
|
|
|
|
|
|
|
|
- vacompositor: Add new compositor element using the VA-API VPP
|
|
|
|
|
interface
|
|
|
|
|
|
|
|
|
|
- vapostproc:
|
|
|
|
|
|
|
|
|
|
- new “scale-method” property
|
|
|
|
|
- Process HDR caps if supported
|
|
|
|
|
- parse video orientation from tags
|
|
|
|
|
|
|
|
|
|
- vaapipostproc: Enable the use of DMA-Buf import and export
|
|
|
|
|
(gstreamer-vaapi)
|
|
|
|
|
|
|
|
|
|
GStreamer Video4Linux2 support
|
2017-05-04 12:48:44 +00:00
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
- Added support for Mediatek Stateless CODEC (VP8, H.264, VP9)
|
2017-05-04 12:48:44 +00:00
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
- Stateless H.264 interlaced decoder support
|
|
|
|
|
|
|
|
|
|
- Stateless H.265 decoder support
|
|
|
|
|
|
|
|
|
|
- Stateful decoder support for driver resolution change events
|
|
|
|
|
|
|
|
|
|
- Stateful decoding support fixes for NXP/Amphion driver
|
|
|
|
|
|
|
|
|
|
- Support for hardware crop in v4l2src
|
|
|
|
|
|
|
|
|
|
- Conformance test improvement for stateful decoders
|
|
|
|
|
|
|
|
|
|
- Fixes for Raspberry Pi CODEC
|
2017-05-04 12:48:44 +00:00
|
|
|
|
|
2019-02-26 12:00:40 +00:00
|
|
|
|
GStreamer OMX
|
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
- There were no changes in this module
|
2019-02-26 12:00:40 +00:00
|
|
|
|
|
2018-03-03 22:54:57 +00:00
|
|
|
|
GStreamer Editing Services and NLE
|
2017-05-04 12:48:44 +00:00
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
- Handle compositors that are bins around the actual compositor
|
|
|
|
|
implementation (like glvideomixers which wraps several elements)
|
|
|
|
|
|
|
|
|
|
- Add a mode to disable timeline editing API so the user can be in
|
|
|
|
|
full control of its layout (meaning that the user is responsible for
|
|
|
|
|
ensuring its validity/coherency)
|
|
|
|
|
|
|
|
|
|
- Add a new fade-in transition type
|
|
|
|
|
|
|
|
|
|
- Add support for non-1/1 PAR source videos
|
|
|
|
|
|
|
|
|
|
- Fix frame accuracy when working with very low framerate streams
|
2017-05-04 12:48:44 +00:00
|
|
|
|
|
2018-03-03 22:54:57 +00:00
|
|
|
|
GStreamer validate
|
2017-05-04 12:48:44 +00:00
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
- Clean up and stabilize API so we can now generate rust bindings
|
|
|
|
|
|
|
|
|
|
- Enhance the appsrc-push action type allowing to find tune the
|
|
|
|
|
buffers more in details
|
|
|
|
|
|
|
|
|
|
- Add an action type to verify currently configured pad caps
|
|
|
|
|
|
|
|
|
|
- Add a way to run checks from any thread after executing a ‘wait’
|
|
|
|
|
action. This is useful when waiting on a signal and want to check
|
|
|
|
|
the value of a property right when it is emited for example.
|
2018-03-19 20:29:07 +00:00
|
|
|
|
|
2018-03-20 10:56:57 +00:00
|
|
|
|
GStreamer Python Bindings
|
2018-03-19 20:29:07 +00:00
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
- Add a Gst.init_python() function to be called from plugins which
|
|
|
|
|
will initialise everything needed for the GStreamer Python bindings
|
|
|
|
|
but not call Gst.init() again since this will have been called
|
|
|
|
|
already.
|
|
|
|
|
|
|
|
|
|
- Add support for the GstURIHandlerInterface that allows elements to
|
|
|
|
|
advertise what URI protocols they support.
|
2019-01-17 10:01:50 +00:00
|
|
|
|
|
2020-09-07 23:10:18 +00:00
|
|
|
|
GStreamer C# Bindings
|
2019-01-17 10:01:50 +00:00
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
- Fix AppSrc and AppSink constructors
|
|
|
|
|
|
|
|
|
|
- The C# bindings have yet to be updated to include new 1.22 API,
|
|
|
|
|
which requires improvements in various places in the bindings /
|
|
|
|
|
binding generator stack. See issue #1718 in GitLab for more
|
|
|
|
|
information and to track progress.
|
2020-09-07 23:10:18 +00:00
|
|
|
|
|
|
|
|
|
GStreamer Rust Bindings and Rust Plugins
|
|
|
|
|
|
2022-10-04 00:14:01 +00:00
|
|
|
|
The GStreamer Rust bindings are released separately with a different
|
|
|
|
|
release cadence that’s tied to gtk-rs, but the latest release has
|
2023-01-23 19:29:34 +00:00
|
|
|
|
already been updated for the new GStreamer 1.22 API. Check the bindings
|
|
|
|
|
release notes for details of the changes since 0.18, which was released
|
|
|
|
|
around GStreamer 1.20.
|
2022-10-04 00:14:01 +00:00
|
|
|
|
|
|
|
|
|
gst-plugins-rs, the module containing GStreamer plugins written in Rust,
|
2023-01-23 19:29:34 +00:00
|
|
|
|
has also seen lots of activity with many new elements and plugins. A
|
|
|
|
|
list of all Rust plugins and elements provided with the 0.9 release can
|
|
|
|
|
be found in the repository.
|
|
|
|
|
|
|
|
|
|
- 33% of GStreamer commits are now in Rust (bindings + plugins), and
|
|
|
|
|
the Rust plugins module is also where most of the new plugins are
|
|
|
|
|
added these days.
|
|
|
|
|
|
|
|
|
|
- The Rust plugins are now shipped as part of the Windows MSVC + macOS
|
|
|
|
|
binary packages. See below for the list of shipped plugins and the
|
|
|
|
|
status of Rust support in cerbero.
|
|
|
|
|
|
|
|
|
|
- The Rust plugins are also part of the documentation on the GStreamer
|
|
|
|
|
website now.
|
|
|
|
|
|
|
|
|
|
- Rust plugins can be used from any programming language. To the
|
|
|
|
|
outside they look just like a plugin written in C or C++.
|
|
|
|
|
|
|
|
|
|
New Rust plugins and elements
|
|
|
|
|
|
|
|
|
|
- rtpav1pay / rtpav1depay: RTP (de)payloader for the AV1 video codec
|
|
|
|
|
- gtk4paintablesink: a GTK4 video sink that provides a GdkPaintable
|
|
|
|
|
for rendering a video in any place inside a GTK UI. Supports
|
|
|
|
|
zero-copy rendering via OpenGL on Linux and macOS.
|
|
|
|
|
- ndi: source, sink and device provider for NewTek NDI protocol
|
|
|
|
|
- onvif: Various elements for parsing, RTP (de)payloading, overlaying
|
|
|
|
|
of ONVIF timed metadata.
|
|
|
|
|
- livesync: Element for converting a live stream into a continuous
|
|
|
|
|
stream without gaps and timestamp jumps while preserving live
|
|
|
|
|
latency requirements.
|
|
|
|
|
- raptorq: Encoder/decoder elements for the RaptorQ FEC mechanism that
|
|
|
|
|
can be used for RTP streams (RFC6330).
|
|
|
|
|
|
|
|
|
|
WebRTC elements
|
|
|
|
|
|
|
|
|
|
- webrtcsink: a WebRTC sink (batteries included WebRTC sender with
|
|
|
|
|
specific signalling)
|
|
|
|
|
- whipsink: WebRTC HTTP ingest (WHIP) to MediaServer
|
|
|
|
|
- whepsrc: WebRTC HTTP egress (WHEP) from MediaServer
|
|
|
|
|
- rtpgccbwe: RTP bandwidth estimator based on the Google Congestion
|
|
|
|
|
Control algorithm (GCC), used by webrtcsink
|
|
|
|
|
|
|
|
|
|
Amazon AWS services
|
|
|
|
|
|
|
|
|
|
- awss3src / awss3sink: A source and sink element to talk to the
|
|
|
|
|
Amazon S3 object storage system.
|
|
|
|
|
- awss3hlssink: A sink element to store HLS streams on Amazon S3.
|
|
|
|
|
- awstranscriber: an element wrapping the AWS Transcriber service.
|
|
|
|
|
- awstranscribeparse: an element parsing the packets of the AWS
|
|
|
|
|
Transcriber service.
|
|
|
|
|
|
|
|
|
|
Video Effects (videofx)
|
|
|
|
|
|
|
|
|
|
- roundedcorners: Element to make the corners of a video rounded via
|
|
|
|
|
the alpha channel.
|
|
|
|
|
- colordetect: A pass-through filter able to detect the dominant
|
|
|
|
|
color(s) on incoming frames, using color-thief.
|
|
|
|
|
- videocompare: Compare similarity of video frames. The element can
|
|
|
|
|
use different hashing algorithms like Blockhash, DSSIM, and others.
|
|
|
|
|
|
|
|
|
|
New MP4 muxer + Fragmented MP4 muxer
|
|
|
|
|
|
|
|
|
|
- fmp4mux: New fragmented MP4/ISOBMFF/CMAF muxer for generating
|
|
|
|
|
e.g. DASH/HLS media fragments.
|
|
|
|
|
- isomp4mux: New non-fragmented, normal MP4 muxer.
|
|
|
|
|
|
|
|
|
|
Both plugins provides elements that replace the existing qtmux/mp4mux
|
|
|
|
|
element from gst-plugins-good. While not feature-equivalent yet, the new
|
|
|
|
|
codebase and using separate elements for the fragment and non-fragmented
|
|
|
|
|
case allows for easier extensability in the future.
|
|
|
|
|
|
|
|
|
|
Cerbero Rust support
|
|
|
|
|
|
|
|
|
|
- Starting this release, cerbero has support for building and shipping
|
|
|
|
|
Rust code on Linux, Windows (MSVC) and macOS. The Windows (MSVC) and
|
|
|
|
|
macOS binaries also ship the GStreamer Rust plugins in this release.
|
|
|
|
|
Only dynamic plugins are built and shipped currently.
|
|
|
|
|
|
|
|
|
|
- Preliminary support for Android, iOS and Windows (MinGW) exists but
|
|
|
|
|
more work is needed. Check the tracker issue for more details about
|
|
|
|
|
future work.
|
|
|
|
|
|
|
|
|
|
- The following plugins are included currently: audiofx, aws, cdg,
|
|
|
|
|
claxon, closedcaption, dav1d, fallbackswitch, ffv1, fmp4, gif,
|
|
|
|
|
hlssink3, hsv, json, livesync, lewton, mp4, ndi, onvif, rav1e,
|
|
|
|
|
regex, reqwest, raptorq, png, rtp, textahead, textwrap, threadshare,
|
|
|
|
|
togglerecord, tracers, uriplaylistbin, videofx, webrtc, webrtchttp.
|
2019-01-17 10:01:50 +00:00
|
|
|
|
|
2020-06-19 18:27:58 +00:00
|
|
|
|
Build and Dependencies
|
2019-01-17 10:01:50 +00:00
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
- meson 0.62 or newer is required
|
2021-11-03 15:43:36 +00:00
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
- GLib >= 2.62 is now required (but GLib >= 2.64 is strongly
|
|
|
|
|
recommended)
|
2023-01-13 19:08:48 +00:00
|
|
|
|
|
|
|
|
|
- libnice >= 0.1.21 is now required and contains important fixes for
|
|
|
|
|
GStreamer’s WebRTC stack.
|
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
- liborc >= 0.4.33 is recommended for 64-bit ARM support and 32-bit
|
|
|
|
|
ARM improvements
|
|
|
|
|
|
|
|
|
|
- onnx: OnnxRT >= 1.13.1 is now required
|
|
|
|
|
|
|
|
|
|
- openaptx: can now be built against libfreeaptx
|
|
|
|
|
|
|
|
|
|
- opencv: allow building against any 4.x version
|
|
|
|
|
|
|
|
|
|
- shout: libshout >= 2.4.3 is now required
|
2022-01-28 14:28:35 +00:00
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
- gstreamer-vaapi’s Meson build options have been switched from a
|
|
|
|
|
custom combo type (yes/no/auto) to the built-in Meson feature type
|
|
|
|
|
(enabled/disabled/auto)
|
|
|
|
|
|
|
|
|
|
- The GStreamer Rust plugins module gst-plugins-rs is now considered
|
|
|
|
|
an essential part of the GStreamer plugin offering and packagers and
|
|
|
|
|
distributors are strongly encouraged to package and ship those
|
|
|
|
|
plugins alongside the existing plugin modules.
|
|
|
|
|
|
|
|
|
|
- we now make use of Meson’s install tags feature which allows
|
|
|
|
|
selective installation of installl components and might be useful
|
|
|
|
|
for packagers.
|
|
|
|
|
|
|
|
|
|
Monorepo build (gst-build)
|
|
|
|
|
|
|
|
|
|
- new “orc-source” build option to allow build against a
|
|
|
|
|
system-installed liborc instead of forcing the use of orc as a
|
|
|
|
|
subproject.
|
|
|
|
|
|
|
|
|
|
- GStreamer command line tools can now be linked to the gstreamer-full
|
|
|
|
|
library if it’s built
|
2021-11-03 15:43:36 +00:00
|
|
|
|
|
2019-02-26 12:00:40 +00:00
|
|
|
|
Cerbero
|
|
|
|
|
|
|
|
|
|
Cerbero is a meta build system used to build GStreamer plus dependencies
|
|
|
|
|
on platforms where dependencies are not readily available, such as
|
2023-01-23 19:29:34 +00:00
|
|
|
|
Windows, Android, iOS, and macOS.
|
2019-02-26 12:00:40 +00:00
|
|
|
|
|
2022-10-04 00:14:01 +00:00
|
|
|
|
General improvements
|
2020-09-07 23:10:18 +00:00
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
- Rust support was added for all support configurations, controlled by
|
|
|
|
|
the rust variant; see above for more details
|
|
|
|
|
- All pkgconfig files are now reliably relocatable without requiring
|
|
|
|
|
pkg-config --define-prefix. This also fixes statically linking with
|
|
|
|
|
GStreamer plugins using the corresponding pkgconfig files.
|
|
|
|
|
- New documentation on how to build a custom GStreamer repository
|
|
|
|
|
using Cerbero, please see the README
|
|
|
|
|
- HTTPS certificate checking is enabled for downloads on all platforms
|
|
|
|
|
now
|
|
|
|
|
- Fetching now automatically retries on error for robustness against
|
|
|
|
|
transient errors
|
|
|
|
|
- Support for building the new Qt6 plugin was added
|
|
|
|
|
- pkgconfig files for various recipes were fixed
|
|
|
|
|
- Several recipes were updated to newer versions
|
|
|
|
|
- New plugins: adaptivedemux2 aes codectimestamper dav1d
|
|
|
|
|
- New libraries: cuda webrtcnice
|
2020-09-07 23:10:18 +00:00
|
|
|
|
|
2022-10-04 00:14:01 +00:00
|
|
|
|
macOS / iOS
|
2020-09-07 23:10:18 +00:00
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
- Added support for running Cerbero on ARM64 macOS
|
|
|
|
|
- GStreamer.framework and all libraries in it are now relocatable,
|
|
|
|
|
which means they use LC_RPATH entries to find dependencies instead
|
|
|
|
|
of using an absolute path. If you link to GStreamer using the
|
|
|
|
|
pkgconfig files, no action is necessary. However, if you use the
|
|
|
|
|
framework directly or link to the libraries inside the framework by
|
|
|
|
|
hand, then you need to pass -Wl,-rpath,<path_to_libdir> to the
|
|
|
|
|
linker.
|
|
|
|
|
- Apple bitcode support was dropped, since Apple has deprecated it
|
|
|
|
|
- macOS installer now correctly advertises support for both x86_64 and
|
|
|
|
|
arm64
|
|
|
|
|
- macOS framework now ships the gst-rtsp-server-1.0 library
|
|
|
|
|
- Various fixes were made to make static linking to gstreamer
|
|
|
|
|
libraries and plugins work correctly on macOS
|
|
|
|
|
- When statically linking to the applemedia plugin using Xcode 13, you
|
|
|
|
|
will need to pass -fno-objc-msgsend-selector-stubs which works
|
|
|
|
|
around a backwards-incompatible change in Xcode 14. This is not
|
|
|
|
|
required for the rest of GStreamer at present, but will be in the
|
|
|
|
|
future.
|
|
|
|
|
- macOS installer now shows the GStreamer logo correctly
|
2020-09-07 23:10:18 +00:00
|
|
|
|
|
2022-10-04 00:14:01 +00:00
|
|
|
|
Windows
|
2020-09-07 23:10:18 +00:00
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
- MSVC is now required by default on Windows, and the Visual Studio
|
|
|
|
|
variant is enabled by default
|
|
|
|
|
- To build with MinGW, use the mingw variant
|
|
|
|
|
- Visual Studio props files were updated for newer Visual Studio
|
|
|
|
|
versions
|
|
|
|
|
- Visual Studio 2015 support was dropped
|
|
|
|
|
- MSYS2 is now supported as the base instead of MSYS. Please see the
|
|
|
|
|
README for more details. Some advantages include:
|
|
|
|
|
- Faster build times, since parallel make works
|
|
|
|
|
- Faster bootstrap, since some tools are provided by MSYS2
|
|
|
|
|
- Other speed-ups due to using MSYS2 tools instead of MSYS
|
|
|
|
|
- Faster download by using powershell instead of hand-rolled Python
|
|
|
|
|
code
|
|
|
|
|
- Many recipes were ported from Autotools to Meson, speeding up the
|
|
|
|
|
build
|
|
|
|
|
- Universal Windows Platform is no longer supported, and binaries are
|
|
|
|
|
no longer shipped for it
|
|
|
|
|
- New documentation on how to force a specific Visual Studio
|
|
|
|
|
installation in Cerbero, please see the README
|
|
|
|
|
- New plugins: qsv wavpack directshow amfcodec wic win32ipc
|
|
|
|
|
- New libraries: d3d11
|
2020-09-07 23:10:18 +00:00
|
|
|
|
|
|
|
|
|
Windows MSI installer
|
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
- Universal Windows Platform prebuilt binaries are no longer available
|
2020-09-07 23:10:18 +00:00
|
|
|
|
|
2022-10-04 00:14:01 +00:00
|
|
|
|
Linux
|
2020-09-07 23:10:18 +00:00
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
- Various fixes for RHEL/CentOS 7 support
|
|
|
|
|
- Added support for running on Linux ARM64
|
2020-09-07 23:10:18 +00:00
|
|
|
|
|
2022-10-04 00:14:01 +00:00
|
|
|
|
Android
|
2019-02-26 12:00:40 +00:00
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
- Android support now requires Android API version 21 (Lollipop)
|
|
|
|
|
- Support for Android Gradle plugin 7.2
|
2019-02-26 12:00:40 +00:00
|
|
|
|
|
2019-01-17 10:01:50 +00:00
|
|
|
|
Platform-specific changes and improvements
|
2017-05-04 12:48:44 +00:00
|
|
|
|
|
2018-03-03 22:54:57 +00:00
|
|
|
|
Android
|
2017-05-04 12:48:44 +00:00
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
- Android SDK 21 is required now as minimum SDK version
|
|
|
|
|
|
|
|
|
|
- androidmedia: Add H.265 / HEVC video encoder mapping
|
|
|
|
|
|
|
|
|
|
- Implement JNI_OnLoad() to register static plugins etc. automatically
|
|
|
|
|
in case GStreamer is loaded from Java using System.loadLibrary(),
|
|
|
|
|
which is also useful for the gst-full deployment scenario.
|
|
|
|
|
|
|
|
|
|
Apple macOS and iOS
|
|
|
|
|
|
|
|
|
|
- The GLib version shipped with the GStreamer binaries does not
|
|
|
|
|
initialize an NSApp and does not run a NSRunLoop on the main thread
|
|
|
|
|
anymore. This was a custom GLib patch and caused it to behave
|
|
|
|
|
different from the GLib shipped by Homebrew or anybody else.
|
|
|
|
|
|
|
|
|
|
The change was originally introduced because various macOS APIs
|
|
|
|
|
require a NSRunLoop to run on the main thread to function correctly
|
|
|
|
|
but as this change will never get merged into GLib and it was
|
|
|
|
|
reverted for 1.22. Applications that relied on this behaviour should
|
|
|
|
|
move to the new gst_macos_main() function, which also does not
|
|
|
|
|
require the usage of a GMainLoop.
|
2019-02-26 12:00:40 +00:00
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
See e.g. gst-play.c for an example for the usage of
|
|
|
|
|
gst_macos_main().
|
2018-03-03 22:54:57 +00:00
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
- GStreamer.framework and all libraries in it are now relocatable,
|
|
|
|
|
which means they use LC_RPATH entries to find dependencies instead
|
|
|
|
|
of using an absolute path. If you link to GStreamer using the
|
|
|
|
|
pkgconfig files, no action is necessary. However, if you use the
|
|
|
|
|
framework directly or link to the libraries inside the framework by
|
|
|
|
|
hand, then you need to pass -Wl,-rpath,<path_to_libdir> to the
|
|
|
|
|
linker.
|
|
|
|
|
|
|
|
|
|
- avfvideosrc: Allow specifying crop coordinates during screen capture
|
|
|
|
|
|
|
|
|
|
- vtenc, vtdec: H.265 / HEVC video encoding + decoding support
|
|
|
|
|
|
|
|
|
|
- osxaudiosrc: Support a device as both input and output
|
|
|
|
|
|
|
|
|
|
- osxaudiodeviceprovider now probes devices more than once to
|
|
|
|
|
determine if the device can function as both an input AND and
|
|
|
|
|
output device. Previously, if the device provider detected that
|
|
|
|
|
a device had any output capabilities, it was treated solely as
|
|
|
|
|
an Audio/Sink. This caused issues for devices that have both
|
|
|
|
|
input and output capabilities (for example, USB interfaces for
|
|
|
|
|
professional audio have both input and output channels). Such
|
|
|
|
|
devicesare now listed as both an Audio/Sink as well as an
|
|
|
|
|
Audio/Source.
|
|
|
|
|
|
|
|
|
|
- osxaudio: support hidden devices on macOS
|
|
|
|
|
|
|
|
|
|
- These are devices that will not be shown in the macOS UIs and
|
|
|
|
|
that cannot be retrieved without having the specific UID of the
|
|
|
|
|
hidden device. There are cases when you might want to have a
|
|
|
|
|
hidden device, for example when having a virtual speaker that
|
|
|
|
|
forwards the data to a virtual hidden input device from which
|
|
|
|
|
you can then grab the audio. The blackhole project supports
|
|
|
|
|
these hidden devices and this change provides a way that if the
|
|
|
|
|
device id is a hidden device it will use it instead of checkinf
|
|
|
|
|
the hardware list of devices to understand if the device is
|
|
|
|
|
valid.
|
2022-02-03 19:53:25 +00:00
|
|
|
|
|
2018-03-03 22:54:57 +00:00
|
|
|
|
Windows
|
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
- win32ipcvideosink, win32ipcvideosrc: new shared memory videosrc/sink
|
|
|
|
|
elements
|
|
|
|
|
|
|
|
|
|
- wasapi2: Add support for process loopback capture for a specified
|
|
|
|
|
PID (requires Windows 11/Windows Server 2022)
|
2022-01-28 14:28:35 +00:00
|
|
|
|
|
2023-01-13 19:08:48 +00:00
|
|
|
|
- The Windows universal UWP build is currently non-functional and will
|
|
|
|
|
need updating after the recent GLib upgrade. It is unclear if anyone
|
|
|
|
|
is using these binaries, so if you are please make yourself known.
|
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
- wicjpegdec, wicpngdec: Windows Imaging Component (WIC) based JPEG
|
|
|
|
|
and PNG decoder elements.
|
|
|
|
|
|
|
|
|
|
- mfaacdec, mfmp3dec: Windows MediaFoundation AAC and MP3 decoders
|
|
|
|
|
|
|
|
|
|
- The uninstalled development environment supports PowerShell 7 now
|
|
|
|
|
|
2022-10-04 00:14:01 +00:00
|
|
|
|
Linux
|
2022-01-28 14:28:35 +00:00
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
- Improved design for DMA buffer sharing and modifier handling for
|
|
|
|
|
hardware-accelerated video decoders/encoders/filters and
|
|
|
|
|
capture/rendering on Linux and Linux-like system.
|
|
|
|
|
|
|
|
|
|
- kmssink
|
|
|
|
|
|
|
|
|
|
- new “fd” property which allows an application to provide their
|
|
|
|
|
own opened DRM device fd handle to kmssink. That way an
|
|
|
|
|
application can lease multiple fd’s from a DRM master to display
|
|
|
|
|
on different CRTC outputs at the same time with multiple kmssink
|
|
|
|
|
instances, for example.
|
|
|
|
|
- new “skip-vsync” property to achieve full framerate with legacy
|
|
|
|
|
emulation in drivers.
|
|
|
|
|
- HDR10 infoframe support
|
|
|
|
|
|
|
|
|
|
- va plugin and gstreamer-vaapi improvements (see above)
|
|
|
|
|
|
|
|
|
|
- waylandsink: Add “rotate-method” property and “render-rectangle”
|
|
|
|
|
property
|
|
|
|
|
|
|
|
|
|
- new gtkwaylandsink element based on gtksink, but similar to
|
|
|
|
|
waylandsink and uses Wayland APIs directly instead of rendering with
|
|
|
|
|
Gtk/Cairo primitives. This approach is only compatible with Gtk3,
|
|
|
|
|
and like gtksink this element only supports Gtk3.
|
2022-01-28 14:28:35 +00:00
|
|
|
|
|
2022-10-04 00:14:01 +00:00
|
|
|
|
Documentation improvements
|
2020-09-07 23:10:18 +00:00
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
- The GStreamer Rust plugins are now included and documented in the
|
|
|
|
|
plugin documentation.
|
2020-09-07 23:10:18 +00:00
|
|
|
|
|
2022-10-04 00:14:01 +00:00
|
|
|
|
Possibly Breaking Changes
|
2022-01-28 14:28:35 +00:00
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
- the Opus audio RTP payloader and depayloader no longer accept the
|
|
|
|
|
lower case encoding-format=multiopus but instead produce and accept
|
|
|
|
|
only the upper case variant encoding-format=MULTIOPUS, since those
|
|
|
|
|
should always be upper case in GStreamer (caps fields are always
|
|
|
|
|
case sensitive). This should hopefully only affect applications
|
|
|
|
|
where RTP caps are set manually and multi-channel audio (>= 3
|
|
|
|
|
channels) is used.
|
|
|
|
|
|
|
|
|
|
- wpesrc: the URI handler protocols changed from wpe:// and web:// to
|
|
|
|
|
web+http://, web+https://, and web+file:// which means URIs are RFC
|
|
|
|
|
3986 compliant and the source can simply strip the prefix from the
|
|
|
|
|
protocol.
|
|
|
|
|
|
|
|
|
|
- The Windows screen capture element dxgiscreencapsrc has been
|
|
|
|
|
removed, please use d3d11screencapturesrc instead.
|
|
|
|
|
|
|
|
|
|
- On Android the minimum supported Android API version is now version
|
|
|
|
|
21 and has been increased from 16.
|
|
|
|
|
|
|
|
|
|
- On macOS, the GLib version shipped with the GStreamer binaries will
|
|
|
|
|
no longer initialize an NSApp or run an NSRunLoop on the main
|
|
|
|
|
thread. See macOS/iOS section above for details.
|
|
|
|
|
|
|
|
|
|
- decklink: The decklink plugin is now using the 12.2.2 version of the
|
|
|
|
|
SDK and will not work with drivers older than version 12.
|
2020-09-07 23:10:18 +00:00
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
- On iOS Apple Bitcode support was removed from the binaries. This
|
|
|
|
|
feature is deprecated since XCode 14 and not used on the App Store
|
|
|
|
|
anymore.
|
|
|
|
|
|
|
|
|
|
- The MP4/Matroska/WebM muxers now require the “stream-format” to be
|
|
|
|
|
provided as part of the AV1 caps as only the original “obu-stream”
|
|
|
|
|
format is supported in these containers and not the “annexb” format.
|
2023-01-13 19:08:48 +00:00
|
|
|
|
|
2022-10-04 00:14:01 +00:00
|
|
|
|
Known Issues
|
2020-09-07 23:10:18 +00:00
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
- The Windows UWP build in Cerbero needs fixing after the recent GLib
|
|
|
|
|
upgrade (see above)
|
|
|
|
|
|
|
|
|
|
- The C# bindings have not been updated to include new 1.22 API yet
|
|
|
|
|
(see above)
|
|
|
|
|
|
|
|
|
|
Statistics
|
|
|
|
|
|
|
|
|
|
- 4072 commits
|
|
|
|
|
|
|
|
|
|
- 2224 Merge Requests
|
|
|
|
|
|
|
|
|
|
- 716 Issues
|
|
|
|
|
|
|
|
|
|
- 200+ Contributors
|
|
|
|
|
|
|
|
|
|
- ~33% of all commits and Merge Requests were in Rust modules
|
|
|
|
|
|
|
|
|
|
- 4747 files changed
|
2020-09-07 23:10:18 +00:00
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
- 469633 lines added
|
2019-01-17 10:01:50 +00:00
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
- 209842 lines deleted
|
2019-01-17 10:01:50 +00:00
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
- 259791 lines added (net)
|
2022-11-07 23:53:59 +00:00
|
|
|
|
|
2019-01-17 10:01:50 +00:00
|
|
|
|
Contributors
|
|
|
|
|
|
2022-11-07 23:53:59 +00:00
|
|
|
|
Ádám Balázs, Adam Doupe, Adrian Fiergolski, Adrian Perez de Castro, Alba
|
|
|
|
|
Mendez, Aleix Conchillo Flaqué, Aleksandr Slobodeniuk, Alicia Boya
|
|
|
|
|
García, Alireza Miryazdi, Andoni Morales Alastruey, Andrew Pritchard,
|
2023-01-23 19:29:34 +00:00
|
|
|
|
Arun Raghavan, A. Wilcox, Bastian Krause, Bastien Nocera, Benjamin
|
|
|
|
|
Gaignard, Bill Hofmann, Bo Elmgreen, Boyuan Zhang, Brad Hards, Branko
|
|
|
|
|
Subasic, Bruce Liang, Bunio FH, byran77, Camilo Celis Guzman, Carlos
|
|
|
|
|
Falgueras García, Carlos Rafael Giani, Célestin Marot, Christian Wick,
|
|
|
|
|
Christopher Obbard, Christoph Reiter, Chris Wiggins, Chun-wei Fan, Colin
|
|
|
|
|
Kinloch, Corentin Damman, Corentin Noël, Damian Hobson-Garcia, Daniel
|
|
|
|
|
Almeida, Daniel Morin, Daniel Stone, Daniels Umanovskis, Danny Smith,
|
|
|
|
|
David Svensson Fors, Devin Anderson, Diogo Goncalves, Dmitry Osipenko,
|
|
|
|
|
Dongil Park, Doug Nazar, Edward Hervey, ekwange, Eli Schwartz, Elliot
|
|
|
|
|
Chen, Enrique Ocaña González, Eric Knapp, Erwann Gouesbet, Evgeny
|
|
|
|
|
Pavlov, Fabian Orccon, Fabrice Fontaine, Fan F He, F. Duncanh, Filip
|
|
|
|
|
Hanes, Florian Zwoch, François Laignel, Fuga Kato, George Kiagiadakis,
|
|
|
|
|
Guillaume Desmottes, Gu Yanjie, Haihao Xiang, Haihua Hu, Havard Graff,
|
|
|
|
|
Heiko Becker, He Junyan, Henry Hoegelow, Hiero32, Hoonhee Lee, Hosang
|
|
|
|
|
Lee, Hou Qi, Hugo Svirak, Ignacio Casal Quinteiro, Ignazio Pillai, Igor
|
|
|
|
|
V. Kovalenko, Jacek Skiba, Jakub Adam, James Cowgill, James Hilliard,
|
|
|
|
|
Jan Alexander Steffens (heftig), Jan Lorenz, Jan Schmidt, Jianhui Dai,
|
|
|
|
|
jinsl00000, Johan Sternerup, Jonas Bonn, Jonas Danielsson, Jordan
|
|
|
|
|
Petridis, Joseph Donofry, Jose Quaresma, Julian Bouzas, Junsoo Park,
|
|
|
|
|
Justin Chadwell, Khem Raj, Krystian Wojtas, László Károlyi, Linus
|
|
|
|
|
Svensson, Loïc Le Page, Ludvig Rappe, Marc Leeman, Marek Olejnik, Marek
|
|
|
|
|
Vasut, Marijn Suijten, Mark Nauwelaerts, Martin Dørum, Martin Reboredo,
|
|
|
|
|
Mart Raudsepp, Mathieu Duponchelle, Matt Crane, Matthew Waters, Matthias
|
|
|
|
|
Clasen, Matthias Fuchs, Mengkejiergeli Ba, MGlolenstine, Michael Gruner,
|
|
|
|
|
Michiel Konstapel, Mikhail Fludkov, Ming Qian, Mingyang Ma, Myles
|
|
|
|
|
Inglis, Nicolas Dufresne, Nirbheek Chauhan, Olivier Crête, Pablo Marcos
|
|
|
|
|
Oltra, Patricia Muscalu, Patrick Griffis, Paweł Stawicki, Peter
|
|
|
|
|
Stensson, Philippe Normand, Philipp Zabel, Pierre Bourré, Piotr
|
|
|
|
|
Brzeziński, Rabindra Harlalka, Rafael Caricio, Rafael Sobral, Rafał
|
|
|
|
|
Dzięgiel, Raul Tambre, Robert Mader, Robert Rosengren, Rodrigo
|
|
|
|
|
Bernardes, Rouven Czerwinski, Ruben Gonzalez, Sam Van Den Berge,
|
|
|
|
|
Sanchayan Maity, Sangchul Lee, Sebastian Dröge, Sebastian Fricke,
|
|
|
|
|
Sebastian Groß, Sebastian Mueller, Sebastian Wick, Sergei Kovalev,
|
|
|
|
|
Seungha Yang, Seungmin Kim, sezanzeb, Sherrill Lin, Shingo Kitagawa,
|
|
|
|
|
Stéphane Cerveau, Talha Khan, Taruntej Kanakamalla, Thibault Saunier,
|
|
|
|
|
Tim Mooney, Tim-Philipp Müller, Tomasz Andrzejak, Tom Schuring, Tong Wu,
|
|
|
|
|
toor, Tristan Matthews, Tulio Beloqui, U. Artie Eoff, Víctor Manuel
|
|
|
|
|
Jáquez Leal, Vincent Cheah Beng Keat, Vivia Nikolaidou, Vivienne
|
|
|
|
|
Watermeier, WANG Xuerui, Wojciech Kapsa, Wonchul Lee, Wu Tong, Xabier
|
|
|
|
|
Rodriguez Calvar, Xavier Claessens, Yatin Mann, Yeongjin Jeong, Zebediah
|
|
|
|
|
Figura, Zhao Zhili, Zhiyuaniu, مهدي شينون (Mehdi Chinoune),
|
2019-01-17 10:01:50 +00:00
|
|
|
|
|
|
|
|
|
… and many others who have contributed bug reports, translations, sent
|
2017-05-04 12:48:44 +00:00
|
|
|
|
suggestions or helped testing.
|
|
|
|
|
|
2022-10-04 00:14:01 +00:00
|
|
|
|
Stable 1.22 branch
|
2017-05-04 12:48:44 +00:00
|
|
|
|
|
2022-10-04 00:14:01 +00:00
|
|
|
|
After the 1.22.0 release there will be several 1.22.x bug-fix releases
|
2018-03-03 22:54:57 +00:00
|
|
|
|
which will contain bug fixes which have been deemed suitable for a
|
|
|
|
|
stable branch, but no new features or intrusive changes will be added to
|
2022-10-04 00:14:01 +00:00
|
|
|
|
a bug-fix release usually. The 1.22.x bug-fix releases will be made from
|
|
|
|
|
the git 1.22 branch, which will be a stable branch.
|
2018-03-19 20:29:07 +00:00
|
|
|
|
|
2022-10-04 00:14:01 +00:00
|
|
|
|
1.22.0
|
2018-03-19 20:29:07 +00:00
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
1.22.0 was originally released on 23 January 2023.
|
2017-05-04 12:48:44 +00:00
|
|
|
|
|
2022-10-04 00:14:01 +00:00
|
|
|
|
Schedule for 1.24
|
2017-05-04 12:48:44 +00:00
|
|
|
|
|
2022-10-04 00:14:01 +00:00
|
|
|
|
Our next major feature release will be 1.24, and 1.23 will be the
|
|
|
|
|
unstable development version leading up to the stable 1.24 release. The
|
|
|
|
|
development of 1.23/1.24 will happen in the git main branch of the
|
|
|
|
|
GStreamer mono repository.
|
2017-05-04 12:48:44 +00:00
|
|
|
|
|
2022-10-04 00:14:01 +00:00
|
|
|
|
The plan for the 1.24 development cycle is yet to be confirmed.
|
2017-05-04 12:48:44 +00:00
|
|
|
|
|
2022-10-04 00:14:01 +00:00
|
|
|
|
1.24 will be backwards-compatible to the stable 1.22, 1.20, 1.18, 1.16,
|
|
|
|
|
1.14, 1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series.
|
2017-05-04 12:48:44 +00:00
|
|
|
|
|
2018-03-03 22:54:57 +00:00
|
|
|
|
------------------------------------------------------------------------
|
2017-05-04 12:48:44 +00:00
|
|
|
|
|
2020-08-20 15:16:50 +00:00
|
|
|
|
These release notes have been prepared by Tim-Philipp Müller with
|
2023-01-23 19:29:34 +00:00
|
|
|
|
contributions from Edward Hervey, Matthew Waters, Nicolas Dufresne,
|
|
|
|
|
Nirbheek Chauhan, Olivier Crête, Sebastian Dröge, Seungha Yang, and
|
|
|
|
|
Thibault Saunier.
|
2017-05-04 12:48:44 +00:00
|
|
|
|
|
2020-08-20 15:16:50 +00:00
|
|
|
|
License: CC BY-SA 4.0
|