2025-01-14 14:52:48 +00:00
|
|
|
|
GStreamer 1.26 Release Notes
|
2018-03-03 22:39:27 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
GStreamer 1.26.0 was originally released on 11 March 2025.
|
2018-03-03 22:39:27 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
See https://gstreamer.freedesktop.org/releases/1.26/ for the latest version of this document.
|
|
|
|
|
|
|
|
|
|
Last updated: Tuesday 11 March 2025, 20:00 UTC (log)
|
2024-02-23 18:20:11 +00:00
|
|
|
|
|
2025-01-14 14:52:48 +00:00
|
|
|
|
## Introduction
|
2018-03-03 22:39:27 +00:00
|
|
|
|
|
2024-02-06 16:37:19 +00:00
|
|
|
|
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!
|
2018-03-03 22:39:27 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
As always, this release is again packed with many new features, bug fixes, and other improvements.
|
2018-03-03 22:39:27 +00:00
|
|
|
|
|
2025-01-14 14:52:48 +00:00
|
|
|
|
## Highlights
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- H.266 Versatile Video Coding (VVC) codec support
|
|
|
|
|
- Low Complexity Enhancement Video Coding (LCEVC) support
|
|
|
|
|
- Closed captions: H.264/H.265 extractor/inserter, cea708overlay, cea708mux, tttocea708 and more
|
|
|
|
|
- New hlscmafsink, hlssink3, and hlsmultivariantsink; HLS/DASH client and dashsink improvements
|
|
|
|
|
- New AWS and Speechmatics transcription, translation and TTS services elements, plus translationbin
|
|
|
|
|
- Splitmux lazy loading and dynamic fragment addition support
|
|
|
|
|
- Matroska: H.266 video and rotation tag support, defined latency muxing
|
|
|
|
|
- MPEG-TS: support for H.266, JPEG XS, AV1, VP9 codecs and SMPTE ST-2038 and ID3 meta; mpegtslivesrc
|
|
|
|
|
- ISO MP4: support for H.266, Hap, Lagarith lossless codecs; raw video support; rotation tags
|
|
|
|
|
- SMPTE 2038 ancillary data streams support
|
|
|
|
|
- JPEG XS image codec support
|
|
|
|
|
- Analytics: New TensorMeta; N-to-N relationships; Mtd to carry segmentation masks
|
|
|
|
|
- ONVIF metadata extractor and conversion to/from relation metas
|
|
|
|
|
- New originalbuffer element that can restore buffers again after transformation steps for analytics
|
|
|
|
|
- Improved Python bindings for analytics API
|
|
|
|
|
- Lots of Vulkan integration and Vulkan Video decoder/encoder improvements
|
|
|
|
|
- OpenGL integration improvements, esp. in glcolorconvert, gldownload, glupload
|
|
|
|
|
- Qt5/Qt6 QML GL sinks now support direct DMABuf import from hardware decoders
|
|
|
|
|
- CUDA: New compositor, Jetson NVMM memory support, stream-ordered allocator
|
|
|
|
|
- NVCODEC AV1 video encoder element, and ndsdewarp
|
|
|
|
|
- New Direct3D12 integration support library
|
|
|
|
|
- New d3d12swapchainsink and d3d12deinterlace elements and D3D12 sink/source for zero-copy IPC
|
|
|
|
|
- Decklink HDR support (PQ + HLG) and frame scheduling enhancements
|
|
|
|
|
- AJA capture source clock handling and signal loss recovery improvements
|
|
|
|
|
- RTP and RTSP: New rtpbin sync modes, client-side MIKEY support in rtspsrc
|
|
|
|
|
- New Rust rtpbin2, rtprecv, rtpsend, and many new Rust RTP payloaders and depayloaders
|
|
|
|
|
- webrtcbin support for basic rollbacks and other improvements
|
|
|
|
|
- webrtcsink: support for more encoders, SDP munging, and a built-in web/signalling server
|
|
|
|
|
- webrtcsrc/sink: support for uncompressed audio/video and NTP & PTP clock signalling and synchronization
|
|
|
|
|
- rtmp2: server authentication improvements incl. Limelight CDN (llnw) authentication
|
|
|
|
|
- New Microsoft WebView2 based web browser source element
|
|
|
|
|
- The GTK3 plugin has gained support for OpenGL/WGL on Windows
|
|
|
|
|
- Many GTK4 paintable sink improvements
|
|
|
|
|
- GstPlay: id-based stream selection and message API improvements
|
|
|
|
|
- Real-time pipeline visualization in a browser using a new dots tracer and viewer
|
|
|
|
|
- New tracers for tracking memory usage, pad push timings, and buffer flow as pcap files
|
|
|
|
|
- VA hardware-acclerated H.266/VVC decoder, VP8 and JPEG encoders, VP9/VP8 alpha decodebins
|
|
|
|
|
- Video4Linux2 elements support DMA_DRM caps negotiation now
|
|
|
|
|
- V4L2 stateless decoders implement inter-frame resolution changes for AV1 and VP9
|
|
|
|
|
- Editing services: support for reverse playback and audio channel reordering
|
|
|
|
|
- New QUIC-based elements for working with raw QUIC streams, RTP-over-QUIC (RoQ) and WebTransport
|
|
|
|
|
- Apple AAC audio encoder and multi-channel support for the Apple audio decoders
|
|
|
|
|
- cerbero: Python bindings and introspection support; improved Windows installer based on WiX5
|
2025-01-14 14:52:48 +00:00
|
|
|
|
- Lots of new plugins, features, performance improvements and bug fixes
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2025-01-14 14:52:48 +00:00
|
|
|
|
## Major new features and changes
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
### H.266 Versatile Video Coding (VVC) codec support
|
|
|
|
|
|
|
|
|
|
- The H.266 / VVC video codec is a successor to H.265 / HEVC and is standardised in ISO/IEC 23090-3.
|
|
|
|
|
|
|
|
|
|
- A new h266parse element was added, along with parsing API, typefinding support and some codec utility functions in the
|
|
|
|
|
gst-plugins-base utility library.
|
|
|
|
|
|
|
|
|
|
- A H.266 decoder base class for hardware-accelerated decoders was added and used to implement a VA-API-based
|
|
|
|
|
hardware-accelerated H.266 decoder.
|
|
|
|
|
|
|
|
|
|
- The FFmpeg H.266 decoder is exposed now (from FFmpeg 7.0 onwards).
|
|
|
|
|
|
|
|
|
|
- H.266 / VVC muxing and demuxing support was implemented for MP4, Matroska and MPEG-TS containers.
|
|
|
|
|
|
|
|
|
|
- A VVdeC-based H.266 decoder element was added to the Rust plugins, based on the Fraunhofer Versatile Video Decoder library.
|
|
|
|
|
|
|
|
|
|
### JPEG XS image codec support
|
|
|
|
|
|
|
|
|
|
- JPEG XS is a visually lossless, low-latency, intra-only video codec for video production workflows, standardised in ISO/IEC
|
|
|
|
|
21122.
|
|
|
|
|
|
|
|
|
|
- JPEG XS encoder and decoder elements based on the SVT JPEG XS library were added, including support for muxing JPEG XS into
|
|
|
|
|
MPEG-TS and demuxing it. Both interlaced and progressive modes are supported.
|
|
|
|
|
|
|
|
|
|
### Low Complexity Enhancement Video Coding (LCEVC) support
|
|
|
|
|
|
|
|
|
|
- LCEVC is a codec that provides an enhancement layer on top of another codec such as H.264 for example. It is standardised as
|
|
|
|
|
MPEG-5 Part 2.
|
|
|
|
|
|
|
|
|
|
- LCEVC encoder and decoder elements based on V-Nova’s SDK libraries were added, including support in h264parse for extracting
|
|
|
|
|
the enhancement layer from H.264 and decoding it via a lcevch264decodebin element.
|
|
|
|
|
|
|
|
|
|
### Closed captions improvements
|
|
|
|
|
|
|
|
|
|
- New H.264 and H.265 closed captions extractor and inserter elements.
|
|
|
|
|
|
|
|
|
|
- These extractor elements don’t actually extract captions from the bitstream, but rely on parser elements to do that and
|
|
|
|
|
add them to buffers in form of caption metas. The problem is that streams might contain B-frames, in which case the
|
|
|
|
|
captions in the bitstream will not be in presentation order and extracting them requires frame-reordering in the same
|
|
|
|
|
way that a decoder would do. These new elements will do exactly that and allow you to extract captions in presentation
|
|
|
|
|
order without having to decode the stream.
|
|
|
|
|
|
|
|
|
|
- The inserter elements do something similar and insert caption SEIs into the H.264 or H.265 bitstream, taking into
|
|
|
|
|
account frame ordering.
|
|
|
|
|
|
|
|
|
|
- This is useful if one wants to extract, process and re-insert captions into an existing video bitstream without decoding
|
|
|
|
|
and re-encoding it (in which case the decoder and encoder would handle the caption reordering).
|
|
|
|
|
|
|
|
|
|
- cdpserviceinject: New element for injecting a CDP service descriptor into closed caption CDP packets
|
|
|
|
|
|
|
|
|
|
- cea708overlay: New element for overlaying CEA608 / CEA708 closed captions over video streams.
|
|
|
|
|
|
|
|
|
|
- The cc708overlay element has been deprecated in favour of the cea708overlay element from the Rust plugins set.
|
|
|
|
|
|
|
|
|
|
- cea608mux gained a "force-live" property to make it always in live mode and aggregate on timeout regardless of whether any
|
|
|
|
|
live sources are linked upstream.
|
|
|
|
|
|
|
|
|
|
- cea708mux: New element that allows to mux multiple CEA708 services into a single stream.
|
|
|
|
|
|
|
|
|
|
- cccombiner has two new properties:
|
|
|
|
|
|
|
|
|
|
- "input-meta-processing" controls how input closed caption metas are processed and can be used to e.g. discard closed
|
|
|
|
|
captions from the input pad if the matching video buffer already has closed caption on it.
|
|
|
|
|
|
|
|
|
|
- "schedule-timeout" to support timing out captions without EOS
|
|
|
|
|
|
|
|
|
|
- tttocea708: New element for converting timed-text to CEA708 closed captions
|
|
|
|
|
|
|
|
|
|
- Miscellaneous improvements and spec compliance fixes
|
|
|
|
|
|
|
|
|
|
### Speech to Text, Translation and Speech Synthesis
|
|
|
|
|
|
|
|
|
|
- awstranscriber2, awstranslate: New elements around the AWS transcription and translation services.
|
|
|
|
|
|
|
|
|
|
- polly: New element around the AWS text-to-speech polly services
|
|
|
|
|
|
|
|
|
|
- speechmatics: New transcriber / speech-to-text and translation element
|
|
|
|
|
|
|
|
|
|
- translationbin: Helper bin around translation elements, similar to the already existing transcriberbin for transcriptions.
|
|
|
|
|
|
|
|
|
|
### HLS DASH adaptive streaming improvements
|
|
|
|
|
|
|
|
|
|
- The adaptivedemux2 client implementation gained support for file:// URIs and as such the ability to play HLS and DASH from
|
|
|
|
|
local files. It also no longer sends spurious flush events when it loses sync in live streams, as that is unexpected and
|
|
|
|
|
will be handled poorly in non-playback scenarios. Lastly, support for HTTP request retries was added via the "max-retries"
|
|
|
|
|
property, along with some exponential backoff logic which can be fine-tuned via properties.
|
|
|
|
|
|
|
|
|
|
- dashsink has received period duration fixes for dynamic MPDs and some memory leak fixes.
|
|
|
|
|
|
|
|
|
|
- hlscmafsink, hlssink3: New single-variant HLS sink elements that can output CMAF (fMP4) or MPEG-TS fragments.
|
|
|
|
|
|
|
|
|
|
- hlsmultivariantsink: New sink element that can output an HLS stream with multiple variants
|
|
|
|
|
|
|
|
|
|
### splitmuxsrc, splitmuxsink: lazy loading and dynamic fragment addition
|
|
|
|
|
|
|
|
|
|
- splitmuxsrc and splitmuxsink were originally designed to handle a small number of large file fragments, e.g. for situations
|
|
|
|
|
where one doesn’t want to exceed a certain file size when recording to legacy file systems. It was also designed for playing
|
|
|
|
|
back a static set of file fragments that have been created by an earlier recording session and no longer changes. Over time
|
|
|
|
|
people have found more applications and use cases for the splitmux elements and have been deploying them in different
|
|
|
|
|
scenarios, exposing the limits of the current implementation.
|
|
|
|
|
|
|
|
|
|
- In this release, splitmuxsink and splitmuxsrc gained new abilities aimed at improving support for recordings with a large
|
|
|
|
|
number of files, and for adding fragments on the fly to allow playback of ongoing recordings:
|
|
|
|
|
|
|
|
|
|
- You can now add fragments directly to splitmuxsrc and provide the offset and duration in the stream:
|
|
|
|
|
|
|
|
|
|
- Providing offset and duration means splitmuxsrc doesn’t need to scan the file to measure it and calculate it. That
|
|
|
|
|
makes for much faster startup.
|
|
|
|
|
|
|
|
|
|
- The new "add-fragment" signal can be used to add files to the set dynamically - allowing to be playing an ongoing
|
|
|
|
|
recording and adding files to the playback set as they are finished.
|
|
|
|
|
|
|
|
|
|
- splitmuxsrc no longer keeps all files open, but instead only keeps 100 files open by default, configurable with the
|
|
|
|
|
"num-open-fragments" property.
|
|
|
|
|
|
|
|
|
|
- There is a new "num-lookahead" property on splitmuxsrc to trigger (re)opening files a certain distance ahead of the play
|
|
|
|
|
position.
|
|
|
|
|
|
|
|
|
|
- splitmuxsink will report fragment offset and fragment duration via a message on the bus when closing a file. This
|
|
|
|
|
information can then be used to add the new fragment to a splitmuxsrc.
|
|
|
|
|
|
|
|
|
|
### MPEG-TS container format improvements
|
|
|
|
|
|
|
|
|
|
- The MPEG-TS muxer and demuxer gained support for
|
|
|
|
|
|
|
|
|
|
- H.266 / VVC video muxing and demuxing
|
|
|
|
|
- JPEG-XS video muxing and demuxing
|
|
|
|
|
- VP9 video muxing and demuxing (using a custom mapping)
|
|
|
|
|
- AV1 video muxing and demuxing (using a custom mapping, since the work-in-progress specification effort doesn’t seem to
|
|
|
|
|
be going anywhere anytime soon)
|
|
|
|
|
- SMPTE ST-2038 ancillary metadata streams (see section above)
|
|
|
|
|
|
|
|
|
|
- mpegtsmux gained support for muxing ID3 metadata into the TS stream, as well as SMPTE 302M audio.
|
|
|
|
|
|
|
|
|
|
- It’s also possible to disable sending SCTE-35 null (heartbeat) packets now in mpegtsmux by setting the
|
|
|
|
|
"scte-35-null-interval" to 0.
|
|
|
|
|
|
|
|
|
|
- tsparse now handles 192-byte M2TS packets
|
|
|
|
|
|
|
|
|
|
- mpegtslivesrc: New source element that can wrap a live MPEG-TS source (e.g. SRT or UDP source) and provides a clock based on
|
|
|
|
|
the PCR.
|
|
|
|
|
|
|
|
|
|
### Matroska container format improvements
|
|
|
|
|
|
|
|
|
|
- H.266 / VVC video muxing and demuxing support
|
|
|
|
|
|
|
|
|
|
- matroskamux
|
|
|
|
|
|
|
|
|
|
- was ported to the GstAggregator base class, ensuring defined-latency muxing in live streaming pipelines.
|
|
|
|
|
- gained rotation tag support
|
|
|
|
|
|
|
|
|
|
- matroskademux now also supports seeks with a stop position in push mode.
|
|
|
|
|
|
|
|
|
|
### ISO MP4 container format improvements
|
|
|
|
|
|
|
|
|
|
- can mux and demux H.266 / VVC in MP4 now
|
|
|
|
|
|
|
|
|
|
- can demux Hap video now, as well as Lagarith lossless video and ISO/IEC 23003-5 raw PCM audio.
|
|
|
|
|
|
|
|
|
|
- qtdemux handles keyunit-only trick mode also in push mode now
|
|
|
|
|
|
|
|
|
|
- support for ISO/IEC 23001-17 raw video in MP4 in qtdemux and isomp4mux.
|
|
|
|
|
|
|
|
|
|
- support for rotation tags in the muxers and demuxers was improved to correctly handle per-media and per-track rotations, and
|
|
|
|
|
support for flips was added as well.
|
|
|
|
|
|
|
|
|
|
SMPTE 2038 ancillary data streams
|
|
|
|
|
|
|
|
|
|
- SMPTE 2038 (pdf) is a generic system to put VBI-style ancillary data into an MPEG-TS container. This could include all kinds
|
|
|
|
|
of metadata such as scoreboard data or game clocks, and of course also closed captions, in this case in form of a distinct
|
|
|
|
|
stream completely separate from any video bitstream.
|
|
|
|
|
|
|
|
|
|
- A number of new elements in the GStreamer Rust closedcaption plugin add support for this, along with mappings for it in the
|
|
|
|
|
MPEG-TS muxer and demuxer. The new elements are:
|
|
|
|
|
|
|
|
|
|
- st2038ancdemux: splits SMPTE ST-2038 ancillary metadata (as received from tsdemux) into separate streams per DID/SDID
|
|
|
|
|
and line/horizontal_offset. Will add a sometimes pad with details for each ancillary stream. Also has an always source
|
|
|
|
|
pad that just outputs all ancillary streams for easy forwarding or remuxing, in case none of the ancillary streams need
|
|
|
|
|
to be modified or dropped.
|
|
|
|
|
|
|
|
|
|
- st2038ancmux: muxes SMPTE ST-2038 ancillary metadata streams into a single stream for muxing into MPEG-TS with
|
|
|
|
|
mpegtsmux. Combines ancillary data on the same line if needed, as is required for MPEG-TS muxing. Can accept individual
|
|
|
|
|
ancillary metadata streams as inputs and/or the combined stream from st2038ancdemux.
|
|
|
|
|
|
|
|
|
|
If the video framerate is known, it can be signalled to the ancillary data muxer via the output caps by adding a
|
|
|
|
|
capsfilter behind it, with e.g. meta/x-st-2038,framerate=30/1.
|
|
|
|
|
|
|
|
|
|
This allows the muxer to bundle all packets belonging to the same frame (with the same timestamp), but that is not
|
|
|
|
|
required. In case there are multiple streams with the same DID/SDID that have an ST-2038 packet for the same frame, it
|
|
|
|
|
will prioritise the one from more recently created request pads over those from earlier created request pads (which
|
|
|
|
|
might contain a combined stream for example if that’s fed first).
|
|
|
|
|
|
|
|
|
|
- st2038anctocc: extracts closed captions (CEA-608 and/or CEA-708) from SMPTE ST-2038 ancillary metadata streams and
|
|
|
|
|
outputs them on the respective sometimes source pad (src_cea608 or src_cea708). The data is output as a closed caption
|
|
|
|
|
stream with caps closedcaption/x-cea-608,format=s334-1a or closedcaption/x-cea-708,format=cdp for further processing by
|
|
|
|
|
other GStreamer closed caption processing elements.
|
|
|
|
|
|
|
|
|
|
- cctost2038anc: takes closed captions (CEA-608 and/or CEA-708) as produced by other GStreamer closed caption processing
|
|
|
|
|
elements and converts them into SMPTE ST-2038 ancillary data that can be fed to st2038ancmux and then to mpegtsmux for
|
|
|
|
|
splicing/muxing into an MPEG-TS container. The line-number and horizontal-offset properties should be set to the desired
|
|
|
|
|
line number and horizontal offset.
|
|
|
|
|
|
|
|
|
|
### Analytics
|
|
|
|
|
|
|
|
|
|
- Added a GstTensorMeta: This meta is designed to carry tensors from the inference element to the model-specific tensor
|
|
|
|
|
decoder. This also includes a basic GstTensor class containing a single tensor. The actual tensor data is a GstBuffer.
|
|
|
|
|
|
|
|
|
|
- Add N_TO_N relationship to GstAnalyticsRelationMeta: This makes it possible to describe N-to-N relationships. For example,
|
|
|
|
|
between classes and regions in an instance segmentation.
|
|
|
|
|
|
|
|
|
|
- Add a new analytics Mtd to carry segmentation masks: Being part of the GstAnalyticsMeta, it can be in relationship with the
|
|
|
|
|
other Mtd, such as the classification and object detection bounding boxes.
|
|
|
|
|
|
|
|
|
|
- onvifmetadataextractor: New element that can extract ONVIF metadata from GstMetas into a separate stream
|
|
|
|
|
|
|
|
|
|
- originalbuffer: New plugin with originalbuffersave / originalbufferrestore elements that allow saving an original buffer,
|
|
|
|
|
modifying it for analytics, and then restoring the original buffer content while keeping any additional metadata that was
|
|
|
|
|
added.
|
|
|
|
|
|
|
|
|
|
- relationmeta: New plugin with elements converting between GstRelationMeta and ONVIF XML metadata.
|
|
|
|
|
|
|
|
|
|
- Improved Python bindings for a more Pythonic interface when iterating over GstRelationMeta’s mtd
|
|
|
|
|
|
|
|
|
|
### Vulkan integration enhancements
|
|
|
|
|
|
|
|
|
|
- Vulkan Integration Improvements:
|
|
|
|
|
|
|
|
|
|
- Memory Management: Non-coherent memory is now invalidated when mapping for read in vkmemory.
|
|
|
|
|
|
|
|
|
|
- Color Space Selection: The vkswapper component now chooses the correct color space based on the format.
|
|
|
|
|
|
|
|
|
|
- Vulkan Plugin Compatibility: Support added for cases where glslc is not available for building Vulkan plugins, along
|
|
|
|
|
with GLSL compiler support for glslang.
|
|
|
|
|
|
|
|
|
|
- Fullscreen Quad Updates: Improved support for setting NULL input/output buffers and added checks for unset video info.
|
|
|
|
|
|
|
|
|
|
- Vulkan Buffer Pool Enhancements: Buffer pool access flags and usage configurations have been refined, offering better
|
|
|
|
|
performance for video decoding and encoding.
|
|
|
|
|
|
|
|
|
|
- Decoder/Encoder Improvements:
|
|
|
|
|
|
|
|
|
|
- H264 Decoder: Enhancements to the vkh264dec component for better support of extended profiles and interlaced content
|
|
|
|
|
decoding.
|
|
|
|
|
|
|
|
|
|
- H265 Decoder fixes: vkh265dec updated for proper handling of VPS/SPS on demand, along with fixes to PicOrderCntVal.
|
|
|
|
|
|
|
|
|
|
- Encoder Performance: Various internal optimizations to the Vulkan encoder, including removal of redundant references and
|
|
|
|
|
better management of the DPB view.
|
|
|
|
|
|
|
|
|
|
- Vulkan Instance and Device Management:
|
|
|
|
|
|
|
|
|
|
- Device Handling: Added new utility functions for managing Vulkan device instances, including
|
|
|
|
|
gst_vulkan_instance_create_device_with_index and gst_vulkan_ensure_element_device.
|
|
|
|
|
|
|
|
|
|
- Device Context Management: Updates to manage Vulkan context handling more effectively within the application.
|
|
|
|
|
|
|
|
|
|
### OpenGL integration enhancements
|
|
|
|
|
|
|
|
|
|
- glcolorconvert gained support for more formats and conversions:
|
|
|
|
|
|
|
|
|
|
- Planar YUV <-> planar YUV conversions
|
|
|
|
|
- Converting to and from v210 in general
|
|
|
|
|
- v210 <-> planar YUV
|
|
|
|
|
- UYVY and YUY2 <-> planar YUV
|
|
|
|
|
- v210 <-> UYVY and YUY2
|
|
|
|
|
- Support for Y444_10, Y444_16, I422_10, I422_12 pixel formats (both little endian and big endian variants)
|
|
|
|
|
|
|
|
|
|
- gldownload can import DMABufs from a downstream pool
|
|
|
|
|
|
|
|
|
|
- glupload gained a DRM raw uploader
|
|
|
|
|
|
|
|
|
|
### Qt5 + Qt6 QML integration improvements
|
|
|
|
|
|
|
|
|
|
- qmlglsink, qml6glsink now support external-oes textures, which allows direct DMABuf import from hardware decoders. Both also
|
|
|
|
|
support NV12 as an input format now.
|
|
|
|
|
|
|
|
|
|
- qmlglsink gained support for RGB16/BGR16 as input format
|
|
|
|
|
|
|
|
|
|
- qmlgl6src can now use a downstream buffer pool when available
|
|
|
|
|
|
|
|
|
|
- qmlgloverlay make the depth/stencil buffer optional, which reduces memory bandwidth on Windows.
|
|
|
|
|
|
|
|
|
|
### CUDA / NVCODEC integration and feature additions
|
|
|
|
|
|
|
|
|
|
- Added AV1 video encoder nvav1enc
|
|
|
|
|
|
|
|
|
|
- CUDA mode nvcuda{CODEC}enc encode elements are renamed to nv{CODEC}enc and old nv{CODEC}enc implementations are removed
|
|
|
|
|
|
|
|
|
|
- Added support for CUDA Stream-Ordered allocator
|
|
|
|
|
|
|
|
|
|
- Added cudacompositor element which is equivalent to the software compositor element but uses CUDA
|
|
|
|
|
|
|
|
|
|
- Added support for CUDA kernel precompile at plugin build time using nvcc and NVCODEC plugin can cache/reuse compiled CUDA
|
|
|
|
|
CUBIN/PTX
|
|
|
|
|
|
|
|
|
|
- cudaupload and cudadownload elements can support Jetson platform’s NVMM memory in addition to already supported desktop NVMM
|
|
|
|
|
memory
|
|
|
|
|
|
|
|
|
|
- Introduced nvdswrapper plugin which uses NVIDIA DeepStream SDK APIs with gst-cuda in an integrated way:
|
|
|
|
|
|
|
|
|
|
- nvdsdewarp: NVIDIA NVWarp360 API based dewarping element
|
|
|
|
|
|
|
|
|
|
### GStreamer Direct3D12 integration
|
|
|
|
|
|
|
|
|
|
- New gst-d3d12 public library. The following elements are integrated with the gst-d3d12 library:
|
|
|
|
|
|
|
|
|
|
- NVIDIA NVCODEC decoders and encoders can support D3D12 memory
|
|
|
|
|
- Intel QSV encoders can accept D3D12 memory
|
|
|
|
|
- All elements in dwrite plugin can support D3D12 memory
|
|
|
|
|
|
|
|
|
|
- The d3d12 library and plugin can be built with MinGW toolchain now (in addition to MSVC)
|
|
|
|
|
|
|
|
|
|
- D3D12 video decoders and d3d12videosink are promoted to have higher rank than D3D11 elements
|
|
|
|
|
|
|
|
|
|
- Added support for multiple mip-levels D3D12 textures:
|
|
|
|
|
|
|
|
|
|
- Newly added d3d12mipmapping element can generate D3D12 textures with multiple mip-levels
|
|
|
|
|
|
|
|
|
|
- max-mip-levels property is added to d3d12convert, d3d12videosink, and d3d12swapchainsink element, so that the elements
|
|
|
|
|
can generate an intermediate texture with multiple mip-levels in order to reduce downscale aliasing artifacts
|
|
|
|
|
|
|
|
|
|
- d3d12convert, d3d12videosink, and d3d12swapchainsink support the GstColorBalanceInterface to offer color balancing functions
|
|
|
|
|
such as hue, saturation, and brightness adjustment
|
|
|
|
|
|
|
|
|
|
- Added d3d12ipcsink and d3d12ipcsrc elements for zero-copy GPU memory sharing between processes
|
|
|
|
|
|
|
|
|
|
- d3d12upload and d3d12download support direct GPU memory copy between D3D12 and D3D12 resources
|
|
|
|
|
|
|
|
|
|
- Added d3d12swapchainsink element to support DirectComposition or UWP/WinUI3 SwapChainPanel based applications
|
|
|
|
|
|
|
|
|
|
- Added d3d12deinterlace element which performs deinterlacing using a GPU vendor agnostic compute shader.
|
|
|
|
|
|
|
|
|
|
- d3d12screencapturesrc element can capture HDR enabled desktop correctly in DDA mode (DXGI Desktop Duplication API)
|
|
|
|
|
|
|
|
|
|
### Capture and playout cards support
|
|
|
|
|
|
|
|
|
|
- ajasrc: Improve clock handling, frame counting, capture timestamping, and signal loss recovery
|
|
|
|
|
|
|
|
|
|
- The Blackmagic Decklink plugin gained support
|
|
|
|
|
|
|
|
|
|
- for HDR output and input (PQ + HLG static metadata)
|
|
|
|
|
|
|
|
|
|
- all modes of Quad HDMI recorder
|
|
|
|
|
|
|
|
|
|
- scheduling frames before they need to be displayed in decklinkvideosink
|
|
|
|
|
|
|
|
|
|
### RTP and RTSP stack improvements
|
|
|
|
|
|
|
|
|
|
- rtspsrc now supports client-managed MIKEY key management. Some RTSP servers (e.g. Axis cameras) expect the client to propose
|
|
|
|
|
the encryption key(s) to be used for SRTP / SRTCP. This is required to allow re-keying. This mode can be enabled by enabling
|
|
|
|
|
the "client-managed-mikey-mode" property and comes with a number of new signals ("request-rtp-key" and "request-rtcp-key"),
|
|
|
|
|
action signals ("set-mikey-parameter" and "remove-key") and properties ("hard-limit" and "soft-limit").
|
|
|
|
|
|
|
|
|
|
- rtpbin: Add new “never” and “ntp” RTCP sync modes
|
|
|
|
|
|
|
|
|
|
- Never is useful for some RTSP servers that report plain garbage both via RTCP SR and RTP-Info, for example.
|
|
|
|
|
- NTP is useful if synchronization should only ever happen based on RTCP SR or NTP-64 RTP header extensions.
|
|
|
|
|
|
|
|
|
|
This is part of a bigger refactoring of the synchronization / offsetting code in rtpbin, which also makes it regularly emit
|
|
|
|
|
the sync signal even if no new synchronisation information is available, controlled by the new "min-sync-interval" property.
|
|
|
|
|
|
|
|
|
|
- rtpjitterbuffer: add RFC7273 active status to jitterbuffer stats so applications can easily check whether RFC7273 sync is
|
|
|
|
|
active.
|
|
|
|
|
|
|
|
|
|
- rtph265depay: Add "wait-for-keyframe" "request-keyframe" properties and improve request keyframe logic
|
|
|
|
|
|
|
|
|
|
- rtppassthroughpay gained the ability to regenerate RTP timestamps from buffer timestamps via the new "retimestamp-mode"
|
|
|
|
|
property. This is useful in a relay RTSP server if one wants to do full drift compensation and ensure that the stream coming
|
|
|
|
|
out of gst-rtsp-server is not drifting compared to the pipeline clock and also not compared to the RTCP NTP times.
|
|
|
|
|
|
|
|
|
|
- New Rust RTP payloaders and depayloaders for AC3, AMR, JPEG, KLV, MPEG-TS (MP2T), MPEG-4 (MP4A, MP4G), Opus, PCMU (uLaw),
|
|
|
|
|
PCMA (aLaw), VP8, VP9.
|
|
|
|
|
|
|
|
|
|
- New rtpbin2 based on separate rtprecv and rtpsend elements
|
|
|
|
|
|
|
|
|
|
### WebRTC improvements
|
|
|
|
|
|
|
|
|
|
- webrtcbin improvements
|
|
|
|
|
|
|
|
|
|
- Make basic rollbacks work
|
|
|
|
|
|
|
|
|
|
- Add "reuse-source-pads" property: When set to FALSE, if a transceiver becomes send-only or inactive then pre-existing
|
|
|
|
|
source pads will receive an EOS event and no further traffic even after further renegotiation. When TRUE, pads will
|
|
|
|
|
simply not receive any output when the negotiated transceiver state doesn’t have incoming traffic. If renegotiated
|
|
|
|
|
later, the pad will receive data again.
|
|
|
|
|
|
|
|
|
|
- Early CNAME support (RFC5576): Have CNAME available to the jitterbuffer before the the first RTCP SR is received, for
|
|
|
|
|
rapid synchronization.
|
|
|
|
|
|
|
|
|
|
- New "post-rtp-aux-sender" signal to allow for placement of an object after rtpbin, before sendbin. This is useful for
|
|
|
|
|
objects such as congestion control elements, that don’t want to be burdened by the synchronization requirements of
|
|
|
|
|
rtpsession.
|
|
|
|
|
|
|
|
|
|
- Create and associate transceivers earlier in negotiation, and other spec compliance improvements
|
|
|
|
|
|
|
|
|
|
- Statistics generation improvements for bundled streams
|
|
|
|
|
|
|
|
|
|
- webrtcsink improvements:
|
|
|
|
|
|
|
|
|
|
- Support for more encoders: nvv4l2av1enc, vpuenc_h264 (for imx8mp), nvav1enc, av1enc, rav1enc and nvh265enc.
|
|
|
|
|
|
|
|
|
|
- The new "define-encoder-bitrates" signal allows applications to fine-tune the bitrate allocation for individual streams
|
|
|
|
|
in cases where there are multiple encoders. By default the bitrate is split equally between encoders.
|
|
|
|
|
|
|
|
|
|
- A generic mechanism was implemented to forward metas over the control channel.
|
|
|
|
|
|
|
|
|
|
- Added a mechanism for SDP munging to handle server-specific quirks.
|
|
|
|
|
|
|
|
|
|
- Can expose a built-in web server and signalling server for prototyping and debugging purposes.
|
|
|
|
|
|
|
|
|
|
- webrtcsink and webrtcsrc enhancements:
|
|
|
|
|
|
|
|
|
|
- Support for raw payloads, i.e. uncompressed audio and video
|
|
|
|
|
|
|
|
|
|
- NTP & PTP clock signalling and synchronization support (RFC 7273)
|
|
|
|
|
|
|
|
|
|
- Generic data channel control mechanism for sending upstream events back to the sender (webrtcsink)
|
|
|
|
|
|
|
|
|
|
- webrtcsrc now has support for multiple producers
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2025-01-14 14:52:48 +00:00
|
|
|
|
## New elements and plugins
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- Many exciting new Rust elements, see Rust section below.
|
|
|
|
|
|
|
|
|
|
- webview2src: new Microsoft WebView2 based web browser source element
|
|
|
|
|
|
|
|
|
|
- h264ccextractor, h264ccinserter: H.264 closed caption extractor / inserter
|
|
|
|
|
|
|
|
|
|
- h265ccextractor, h265ccinserter: H.265 closed caption extractor / inserter
|
|
|
|
|
|
|
|
|
|
- h266parse
|
|
|
|
|
|
|
|
|
|
- lcevch264decodebin
|
|
|
|
|
|
|
|
|
|
- New VA elements (see below): vah266dec, vavp8enc, vajpegenc, vavp8alphadecodebin, vavp9alphadecodebin
|
|
|
|
|
|
|
|
|
|
- svtjpegxsdec, svtjpegxsenc: SVT JPEG XS decoder/encoder
|
|
|
|
|
|
|
|
|
|
- Many other new elements mentioned in other sections (e.g. CUDA, NVCODEC, etc.)
|
2022-01-28 14:28:35 +00:00
|
|
|
|
|
2025-01-14 14:52:48 +00:00
|
|
|
|
## New element features and additions
|
2020-09-07 23:07:45 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- audioconvert enhancements:
|
|
|
|
|
|
|
|
|
|
- Add possibility to reorder input channels when audioconvert has unpositionned audio channels as input. It can now use
|
|
|
|
|
reordering configurations to automatically position those channels via the new "input-channels-reorder" and
|
|
|
|
|
"input-channels-reorder-mode" properties.
|
|
|
|
|
|
|
|
|
|
- Better handling of setting of the mix matrix at run time
|
|
|
|
|
|
|
|
|
|
- handles new GstRequestMixMatrix custom upstream event
|
|
|
|
|
|
|
|
|
|
- audiorate: Take the tolerance into account when filling gaps; better accounting of the number of samples added or dropped.
|
|
|
|
|
|
|
|
|
|
- av1enc: Add "timebase" property to allow configuring a specific time base, in line with what exists for vp8enc and vp9enc
|
|
|
|
|
already.
|
|
|
|
|
|
|
|
|
|
- av1parse can parse annexb streams now, and typefinding support has been added for annexb streams as well.
|
|
|
|
|
|
|
|
|
|
- The GTK3 plugin has gained support for OpenGL/WGL on Windows
|
|
|
|
|
|
|
|
|
|
- fdsrc has a new "is-live" property to make it act like a live source and timestamp the received data with the clock running
|
|
|
|
|
time.
|
|
|
|
|
|
|
|
|
|
- imagefreeze: Add support for JPEG and PNG
|
|
|
|
|
|
|
|
|
|
- kmssink: Extended the functionality to support buffers with DRM formats along with non-linear buffers
|
|
|
|
|
|
|
|
|
|
- pitch now supports reverse playback
|
|
|
|
|
|
|
|
|
|
- queue can emit the notify signal on queue level changes if the "notify-levels" property has been set.
|
|
|
|
|
|
|
|
|
|
- qroverlay: the "pixel-size" property has been removed in favour of a new "size" property with slightly different semantics,
|
|
|
|
|
where the size of the square is expressed in percent of the smallest of width and height.
|
|
|
|
|
|
|
|
|
|
- rsvgdec: Negotiate resolution with downstream and scale accordingly
|
|
|
|
|
|
|
|
|
|
- rtmp2: server authentication improvements
|
|
|
|
|
|
|
|
|
|
- Mimic librtmp’s behaviour and support additional connection parameters for the connect packet, which are commonly used
|
|
|
|
|
for authentication, via the new "extra-connect-args" property.
|
|
|
|
|
|
|
|
|
|
- Add support for Limelight CDN (llnw) authentication
|
|
|
|
|
|
|
|
|
|
- scaletempo has gained support for a “fit-down” mode: In fit-down mode only 1.0 rates are supported, and the element will fit
|
|
|
|
|
audio data in buffers to their advertised duration. This is useful in speech synthesis cases, where elements such as
|
|
|
|
|
awspolly will generate audio data from text, and assign the duration of the input text buffers to their output buffers.
|
|
|
|
|
Translated or synthesised audio might be longer than the original inputs, so this makes sure the audio will be sped up to
|
|
|
|
|
fit the original duration, so it doesn’t go out of sync.
|
|
|
|
|
|
|
|
|
|
- souphttpsrc: Add the notion of "retry-backoff" and retry on 503 (service unavailable) and 500 (internal server error) http
|
|
|
|
|
errors.
|
|
|
|
|
|
|
|
|
|
- taginject now modifies existing tag events of the selected scope, with the new "merge-mode" property allowing finer control.
|
|
|
|
|
|
|
|
|
|
- timecodestamper gained a new running-time source mode that converts the buffer running time into timecodes.
|
|
|
|
|
|
|
|
|
|
- playbin3, uridecodebin3, parsebin
|
|
|
|
|
|
|
|
|
|
- lots of stream-collection handling and stability/reliability fixes
|
|
|
|
|
- error/warning/info message now include the URI (if known) and stream-id
|
|
|
|
|
- missing plugin messages include the stream-id
|
|
|
|
|
|
|
|
|
|
- videocodectestsink gained support for GBR_10LE, GRAY8 and GRAY10_LE{16,32} pixel formats
|
|
|
|
|
|
|
|
|
|
- videoflip gained support for the Y444_16LE and Y444_16BE pixel formats
|
|
|
|
|
|
|
|
|
|
- videoconvertscale:
|
|
|
|
|
|
|
|
|
|
- Handle pixel aspect ratios with large numerators or denominators
|
|
|
|
|
- Explicitly handle the overlaycomposition meta caps feature, so it doesn’t get dropped unnecessarily
|
|
|
|
|
|
|
|
|
|
- waylandsink prefers DMABuf over system memory now
|
|
|
|
|
|
|
|
|
|
- x264enc has a new "nal-hrd" property to make the encoder signal HRD information, which is required for Blu-ray streams,
|
|
|
|
|
television broadcast and a few other specialist areas. It can also be used to force true CBR, and will cause the encoder to
|
|
|
|
|
output null padding packets.
|
|
|
|
|
|
|
|
|
|
- zbar: add support for binary mode and getting symbols as raw bytes instead of a text string.
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2025-01-14 14:52:48 +00:00
|
|
|
|
## Plugin and library moves
|
2017-05-04 12:39:05 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- macOS: atdec was moved from the applemedia plugin in -bad to the osxaudio plugin in -good, in order to be able to share
|
|
|
|
|
audio-related helper methods.
|
2017-05-04 12:39:05 +00:00
|
|
|
|
|
2025-01-14 14:52:48 +00:00
|
|
|
|
## Plugin and element removals
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- None in this cycle
|
2021-11-03 15:43:36 +00:00
|
|
|
|
|
2025-01-14 14:52:48 +00:00
|
|
|
|
## Miscellaneous API additions
|
2019-04-18 23:28:55 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
### GStreamer Core
|
|
|
|
|
|
|
|
|
|
- gst_meta_api_type_set_params_aggregator() allows setting an GstAllocationMetaParamsAggregator function for metas, which has
|
|
|
|
|
been implemented for GstVideoMeta and is used to aggregate alignment requirements of multiple tee branches.
|
|
|
|
|
|
|
|
|
|
- gst_debug_print_object() and gst_debug_print_segment() have been made public API. The can be used to easily get string
|
|
|
|
|
representations of various types of (mini)objects in custom log handlers.
|
|
|
|
|
|
|
|
|
|
- Added gst_aggregator_push_src_event(), so subclasses don’t just push events directly onto the source pad bypassing the base
|
|
|
|
|
class without giving it the chance to send out any pending serialised events that should be sent out before.
|
|
|
|
|
|
|
|
|
|
- GstMessage has gained APIs to generically add “details” to messages:
|
|
|
|
|
|
|
|
|
|
- gst_message_set_details()
|
|
|
|
|
- gst_message_get_details()
|
|
|
|
|
- gst_message_writable_details()
|
|
|
|
|
- gst_message_parse_error_writable_details()
|
|
|
|
|
- gst_message_parse_warning_writable_details()
|
|
|
|
|
- gst_message_parse_info_writable_details() This is used in uridecodebin3 to add the triggering URI to any INFO, WARNING
|
|
|
|
|
or ERROR messages posted on the bus, and in decodebin3 to add the stream ID to any missing plugin messages posted on the
|
|
|
|
|
bus.
|
|
|
|
|
|
|
|
|
|
- gst_util_floor_log2() returns smallest integral value not bigger than log2(v).
|
|
|
|
|
|
|
|
|
|
- gst_util_fraction_multiply_int64() is a 64-bit variant of gst_util_fraction_multiply().
|
|
|
|
|
|
|
|
|
|
#### GstIdStr replaces GQuark in structure and caps APIs
|
|
|
|
|
|
|
|
|
|
- GQuarks are integer identifiers for strings that are inserted into a global hash table, allowing in theory for cheap
|
|
|
|
|
equality comparisons. In GStreamer they have been used to represent GstStructure names and field names. The problem is that
|
|
|
|
|
these strings once added to the global string table can never be freed again, which can lead to ever-increasing memory usage
|
|
|
|
|
for processes where such name identifiers are created based on external input or on locally-created random identifiers.
|
|
|
|
|
|
|
|
|
|
- GstIdStr is a new data structure made to replace quarks in our APIs. It can hold a short string inline, a static string, or
|
|
|
|
|
a reference to a heap-allocated longer string, and allows for cheap storage of short strings and cheap comparisons. It does
|
|
|
|
|
not involve access to a global hash table protected by a global lock, and as most strings used in GStreamer structures are
|
|
|
|
|
very short, it is actually more performant than quarks in many scenarios.
|
|
|
|
|
|
|
|
|
|
- GQuark-using APIs in GstStructure or GstCaps have been deprecated and equivalent APIs using GstIdStr have been added
|
|
|
|
|
instead. For more details about this change watch Sebastian’s GStreamer Conference presentation “GQuark in GStreamer
|
|
|
|
|
structures - what nonsense!”.
|
|
|
|
|
|
|
|
|
|
- Most applications and plugins will have been using the plain string-based APIs which are not affected by this change.
|
|
|
|
|
|
|
|
|
|
#### GstVecDeque
|
|
|
|
|
|
|
|
|
|
- Moved GstQueueArray as GstVecDeque into core for use in GstBus, the ringbuffer logger and in GstBufferPool, where an overly
|
|
|
|
|
complicated signaling mechanism using GstAtomicQueue and GstPoll was replaced with GstVecDeque and a simple mutex/cond.
|
|
|
|
|
|
|
|
|
|
- GstQueueArray in libgstbase was deprecated in favour of GstVecDeque.
|
|
|
|
|
|
|
|
|
|
- GstAtomicQueue will be deprecated once all users in GStreamer have been moved over to GstVecDeque.
|
|
|
|
|
|
|
|
|
|
### Audio Library
|
|
|
|
|
|
|
|
|
|
- Added gst_audio_reorder_channels_with_reorder_map() which allows reordering the samples with a pre-calculated reorder map
|
|
|
|
|
instead of re-calculating the reorder map every time.
|
|
|
|
|
|
|
|
|
|
- Add top-surround-left and top-surround-right channel positions
|
|
|
|
|
|
|
|
|
|
- GstAudioConverter now supports more numerical types for the mix matrix, namely double, int, int64, uint, and uint64 in
|
|
|
|
|
addition to plain floats.
|
|
|
|
|
|
|
|
|
|
### Plugins Base Utils Library
|
|
|
|
|
|
|
|
|
|
- New AV1 caps utility functions for AV1 Codec Configuration Record codec_data handling
|
|
|
|
|
|
|
|
|
|
- The GstEncodingProfile (de)serialization functions are now public
|
|
|
|
|
|
|
|
|
|
- GstEncodingProfile gained a way to specify a factory-name when specifying caps. In some cases you want to ensure that a
|
|
|
|
|
specific element factory is used while requiring some specific caps, but this was not possible so far. You can now do
|
|
|
|
|
e.g. qtmux:video/x-prores,variant=standard|factory-name=avenc_prores_ks to ensure that the avenc_prores_ks factory is used
|
|
|
|
|
to produce the variant of prores video stream.
|
|
|
|
|
|
|
|
|
|
### Tag Library
|
|
|
|
|
|
|
|
|
|
- EXIF handling now support the CAPTURING_LIGHT_SOURCE tag
|
|
|
|
|
|
|
|
|
|
- Vorbis tag handling gained support for the LYRICS tag
|
|
|
|
|
|
|
|
|
|
### Video Library and OpenGL Library
|
|
|
|
|
|
|
|
|
|
- gst_video_convert_sample(), gst_video_convert_sample_async() gained support for D3D12 conversion.
|
|
|
|
|
|
|
|
|
|
- GstVideoEncoder: gst_video_encoder_release_frame() and gst_video_encoder_drop_frame() have been made available as public
|
|
|
|
|
API.
|
|
|
|
|
|
|
|
|
|
- Navigation: gained mouse double click event support
|
|
|
|
|
|
|
|
|
|
- Video element QoS handling was improved so as to not overshoot the QoS earliest time by a factor of 2. This was fixed in the
|
|
|
|
|
video decoder, encoder, aggregator and audiovisualizer base classes, as well as in the adaptivedemux, deinterlace,
|
|
|
|
|
monoscope, shapewipe, and (old) videomixer elements.
|
|
|
|
|
|
|
|
|
|
- GstVideoConverter gained fast paths for v210 to/from I420_10 / I422_10
|
|
|
|
|
|
|
|
|
|
- New gst_video_dma_drm_format_from_gst_format() helper function that converts a video format into a dma drm fourcc / modifier
|
|
|
|
|
pair, plus gst_video_dma_drm_format_to_gst_format() which will do the reverse.
|
2020-09-07 23:07:45 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- In the same vein gst_gl_dma_buf_transform_gst_formats_to_drm_formats() and
|
|
|
|
|
gst_gl_dma_buf_transform_drm_formats_to_gst_formats() have been added to the GStreamer OpenGL support library.
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- GLDisplay/EGL: Add API (gst_gl_display_egl_set_foreign()) for overriding foreign-ness of the EGLDisplay in order to control
|
|
|
|
|
whether GStreamer should call eglTerminate() or not.
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- Additional DMA DRM format definitions/mappings:
|
|
|
|
|
|
|
|
|
|
- NV15, NV20, NV30
|
|
|
|
|
- NV12_16L32S, MT2110T, MT2110R as used on Meditek SoCs
|
|
|
|
|
- NV12_10LE40
|
|
|
|
|
- RGB15, GRAY8, GRAY16_LE, GRAY16_BE
|
|
|
|
|
- plus support for big endian DRM formats and DRM vendor modifiers
|
|
|
|
|
|
|
|
|
|
New Raw Video Formats
|
|
|
|
|
|
|
|
|
|
- Packed 4:2:2 YUV with 16 bits per channel:
|
|
|
|
|
- Y216_LE, Y216_BE
|
|
|
|
|
- Packed 4:4:4:4 YUV with alpha, with 16 bits per channel:
|
|
|
|
|
- Y416_LE, Y416_BE
|
|
|
|
|
- 10-bit grayscale, packed into 16-bit words with left padding:
|
|
|
|
|
- GRAY10_LE16
|
|
|
|
|
|
|
|
|
|
### GstPlay Library
|
|
|
|
|
|
|
|
|
|
- Add stream-id based selection of streams to better match playbin3’s API:
|
|
|
|
|
- Add accessors for the stream ID and selection API based on the stream ID:
|
|
|
|
|
- gst_play_stream_info_get_stream_id()
|
|
|
|
|
- gst_play_set_audio_track_id()
|
|
|
|
|
- gst_play_set_video_track_id()
|
|
|
|
|
- gst_play_set_subtitle_track_id()
|
|
|
|
|
- gst_play_set_track_ids()
|
|
|
|
|
- Deprecate the old index-based APIs:
|
|
|
|
|
- gst_play_stream_info_get_index()
|
|
|
|
|
- gst_play_set_audio_track()
|
|
|
|
|
- gst_play_set_video_track()
|
|
|
|
|
- gst_play_set_subtitle_track()
|
|
|
|
|
- Remove old playbin support
|
|
|
|
|
- Implement the track enable API based on stream selection
|
|
|
|
|
- Distinguish missing plugin errors and include more details (uri, and stream-id if available) in error/warning messages:
|
|
|
|
|
- gst_play_message_get_uri()
|
|
|
|
|
- gst_play_message_get_stream_id()
|
|
|
|
|
- GST_PLAY_ERROR_MISSING_PLUGIN
|
|
|
|
|
- gst_play_message_parse_error_missing_plugin()
|
|
|
|
|
- gst_play_message_parse_warning_missing_plugin()
|
|
|
|
|
- Improve play message API inconsistencies:
|
|
|
|
|
- Consistently name parse functions according to their message type:
|
|
|
|
|
- gst_play_message_parse_duration_changed()
|
|
|
|
|
- gst_play_message_parse_buffering()
|
|
|
|
|
- Deprecate the misnamed functions:
|
|
|
|
|
- gst_play_message_parse_duration_updated()
|
|
|
|
|
- gst_play_message_parse_buffering_percent()
|
|
|
|
|
- Add missing parse functions:
|
|
|
|
|
- gst_play_message_parse_uri_loaded()
|
|
|
|
|
- gst_play_message_parse_seek_done()
|
|
|
|
|
- Support disabling the selected track at startup
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2025-01-14 14:52:48 +00:00
|
|
|
|
## Miscellaneous performance, latency and memory optimisations
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- dvdspu: use multiple minimal sized PGS overlay rectangles instead of a single large one to minimise the total blitting
|
|
|
|
|
surface in case of disjointed rectangles.
|
|
|
|
|
|
|
|
|
|
- video-frame: reduce number of memcpy() calls on frame copies if possible
|
|
|
|
|
|
|
|
|
|
- video-converter: added fast path conversions between v210 and I420_10 / I422_10
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
|
|
|
|
- As always there have been plenty of performance, latency and memory optimisations all over the place.
|
2022-01-28 14:28:35 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
## Miscellaneous other changes and enhancements
|
|
|
|
|
|
|
|
|
|
- netclientclock: now also emits the clock synced signal when corrupted to signal that sync has been lost.
|
|
|
|
|
|
|
|
|
|
- GstValue, GstStructure: can now (de)serialize string arrays (G_TYPE_STRV)
|
|
|
|
|
|
2025-01-14 14:52:48 +00:00
|
|
|
|
## Tracing framework and debugging improvements
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- dot files (pipeline graph dumps) are now written to disk atomically
|
|
|
|
|
|
|
|
|
|
- tracing: add hooks for gst_pad_send_event_unchecked() and GstMemory init/free
|
|
|
|
|
|
|
|
|
|
- tracers: Simplify params handling using GstStructure and object properties and move tracers over to property-based
|
|
|
|
|
configuration (leaks, latency).
|
|
|
|
|
|
|
|
|
|
- textoverlay, clockoverlay, timeoverlay: new "response-time-compensation" property that makes the element render the text or
|
|
|
|
|
timestamp twice: Once in the normal location and once in a different sequentially predictable location for every frame. This
|
|
|
|
|
is useful when measuring video latency by taking a photo with a camera of two screens showing the test video overlayed with
|
|
|
|
|
timeoverlay or clockoverlay. In these cases, you will often see ghosting if the display’s pixel response time is not great,
|
|
|
|
|
which makes it difficult to discern what the current timestamp being shown is. Rendering in a different location for each
|
|
|
|
|
frame makes it easy to tell what the latest timestamp is. In addition, you can also use the fade-time of the previous frame
|
|
|
|
|
to measure with sub-framerate accuracy when the photo was taken, not just clamped to the framerate, giving you a higher
|
|
|
|
|
precision latency value.
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2023-01-23 19:29:34 +00:00
|
|
|
|
New tracers
|
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- memory-tracer: New tracer that can track memory usage over time
|
|
|
|
|
|
|
|
|
|
- pad-push-timings: New tracer for tracing pad push timings
|
|
|
|
|
|
|
|
|
|
- pcap-writer: New tracer that can store the buffers flowing through a pad as PCAP file
|
|
|
|
|
|
|
|
|
|
Dot tracer/viewer
|
|
|
|
|
|
|
|
|
|
- New dots tracer that simplifies the pipeline visualization workflow:
|
|
|
|
|
- Automatically configures dot file directory and cleanup
|
|
|
|
|
- Integrates with the pipeline-snapshotS tracer to allow dumping pipeline on demand from the gst-dots-viewer web interface
|
|
|
|
|
- Uses GST_DEBUG_DUMP_DOT_DIR or falls back to $XDG_CACHE_HOME/gstreamer-dots
|
|
|
|
|
- New gst-dots-viewer web tool for real-time pipeline visualization
|
|
|
|
|
- Provides interface to browse and visualize pipeline dot files
|
|
|
|
|
- Features on-demand pipeline snapshots via “Dump Pipelines” button
|
|
|
|
|
- WebSocket integration for live updates
|
|
|
|
|
- Uses GST_DEBUG_DUMP_DOT_DIR or falls back to $XDG_CACHE_HOME/gstreamer-dots
|
|
|
|
|
- Simple usage:
|
|
|
|
|
- gst-dots-viewer (starts server)
|
|
|
|
|
- GST_TRACERS=dots gst-launch-1.0 videotestsrc ! autovideosink (runs with tracer)
|
|
|
|
|
- View at http://localhost:3000
|
2023-01-23 19:29:34 +00:00
|
|
|
|
|
|
|
|
|
Debug logging system improvements
|
|
|
|
|
|
2024-03-04 23:51:42 +00:00
|
|
|
|
- Nothing major in this cycle.
|
|
|
|
|
|
2025-01-14 14:52:48 +00:00
|
|
|
|
## Tools
|
2023-01-23 19:29:34 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- gst-inspect-1.0 documents tracer properties now and shows element flags
|
|
|
|
|
|
|
|
|
|
- gst-launch-1.0 will show error messages posted during pipeline construction
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2025-01-14 14:52:48 +00:00
|
|
|
|
## GStreamer FFmpeg wrapper
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- Add support for H.266/VVC decoder
|
|
|
|
|
|
|
|
|
|
- Add mappings for the Hap video codec, the Quite OK Image codec (QOI) and the M101 Matrox uncompressed SD video codec.
|
|
|
|
|
|
|
|
|
|
- Don’t register elements for which we have no caps and which were non-functional as a result (showing unknown/unknown caps).
|
|
|
|
|
|
|
|
|
|
- The S302M audio encoder now supports up to 8 channels.
|
|
|
|
|
|
|
|
|
|
- Various tag handling improvements in the avdemux wrappers, especially when there are both upstream tags and additional local
|
|
|
|
|
tags.
|
|
|
|
|
|
|
|
|
|
- Support for 10-bit grayscale formats
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2025-01-14 14:52:48 +00:00
|
|
|
|
## GStreamer RTSP server
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- GstRTSPOnvifMediaFactoryClass gained a ::create_backchannel_stream() vfunc. This allows subclasses to delay creation of the
|
|
|
|
|
backchannel to later in the sequence, which is useful in scenarios where the RTSP server acts as a relay and the supported
|
|
|
|
|
caps depend on the upstream camera, for example.
|
|
|
|
|
|
|
|
|
|
- The ONVIF backchannel example now features support for different codecs, including AAC.
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
## VA-API integration
|
2023-01-23 19:29:34 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
VA plugin
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- New VA elements:
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- H.266 / VVC video decoder
|
|
|
|
|
- VP8 video encoder
|
|
|
|
|
- JPEG encoder
|
|
|
|
|
- VP9 + VP8 alpha decodebin
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
Remember that the availability of these elements depends on your platform and driver.
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- There are a lot of improvements and bug fixes, to hightlight some of them:
|
|
|
|
|
|
|
|
|
|
- Improved B pyramid mode for both H264 and HEVC encoding when reference frame count exceeds 2, optimizing pyramid level
|
|
|
|
|
handling.
|
|
|
|
|
- Enabled ICQ and QVBR modes for several encoders, including H264, H265, VP9 and AV1.
|
|
|
|
|
- Updated rate control features by setting the quality factor parameter, while improving bitrate change handling.
|
|
|
|
|
- Improved VP9 encoder’s ability to avoid reopening or renegotiating encoder settings when parameters remain stable.
|
|
|
|
|
- Added functionality to adjust the trellis parameter in encoders.
|
|
|
|
|
- Optimize encoders throughput with the introduction of output delay.
|
|
|
|
|
- Added support for new interpolation methods for scaling and improvements for handling interlace modes.
|
|
|
|
|
|
|
|
|
|
GStreamer-VAAPI is now deprecated
|
|
|
|
|
|
|
|
|
|
- gstreamer-vaapi has been deprecated and is no longer actively maintained. Users who rely on gstreamer-vaapi are encouraged
|
|
|
|
|
to migrate to the va plugin’s elements at the earliest opportunity.
|
|
|
|
|
|
|
|
|
|
- vaapi*enc encoders have been demoted to a rank of None, so will no longer be autoplugged in encodebin. They have also no
|
|
|
|
|
longer advertise dmabuf caps or unusual pixel formats on their input pad template caps.
|
2023-01-23 19:29:34 +00:00
|
|
|
|
|
2025-01-14 14:52:48 +00:00
|
|
|
|
## GStreamer Video4Linux2 support
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- Implemented DMA_DRM caps negotiation
|
|
|
|
|
|
|
|
|
|
- Framerate negotiation improvements
|
|
|
|
|
|
|
|
|
|
- Support for P010 and BGR10A2_LE pixel formats
|
|
|
|
|
|
|
|
|
|
- The V4L2 stateless decoders now support inter-frame resolution changes for AV1 and VP9
|
|
|
|
|
|
|
|
|
|
- The V4L2 stateful encoders can now handle dynamic frame rates (0/1), and colorimetry negotiation was also improved.
|
2017-05-04 12:39:05 +00:00
|
|
|
|
|
2025-01-14 14:52:48 +00:00
|
|
|
|
## GStreamer Editing Services and NLE
|
2017-05-04 12:39:05 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- Added support for reverse playback with a new reverse property on nlesource which is exposed child property on GESClip
|
|
|
|
|
|
|
|
|
|
- Input channels reordering for flexible audio channel mapping
|
|
|
|
|
|
|
|
|
|
- Added support for transition in the ges-launch-1.0 timeline description format
|
|
|
|
|
|
|
|
|
|
- Added support for GstContext sharing in GESTimeline
|
|
|
|
|
|
|
|
|
|
- Added basic support for duplicated children property in GESTimelineElement
|
|
|
|
|
|
|
|
|
|
- validate: Add an action type to group clips
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2025-01-14 14:52:48 +00:00
|
|
|
|
## GStreamer validate
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- Added new action types:
|
|
|
|
|
|
|
|
|
|
- start-http-server: Start a new instance of our HTTP test server
|
|
|
|
|
- http-requests: Send an HTTP request to a server, designed to work with our test http server
|
|
|
|
|
|
|
|
|
|
- HTTP server control endpoints to allow scenarios to control the server behavior, allowing simulating server failures from
|
|
|
|
|
tests
|
|
|
|
|
|
|
|
|
|
- Improved the select-streams action type, adding support for selecting the same streams several times
|
|
|
|
|
|
|
|
|
|
- Added support for forcing monitoring of all pipelines in validatetest files
|
|
|
|
|
|
|
|
|
|
- Enhanced support for expected Error messages on the bus
|
|
|
|
|
|
|
|
|
|
- Added ways to retrieve HTTP server port in .validatetest files
|
|
|
|
|
|
|
|
|
|
- Added support for lldb in the gst-validate-launcher
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2025-01-14 14:52:48 +00:00
|
|
|
|
## GStreamer Python Bindings
|
2018-03-19 20:24:05 +00:00
|
|
|
|
|
2024-03-04 23:51:42 +00:00
|
|
|
|
gst-python is an extension of the regular GStreamer Python bindings based on gobject-introspection information and PyGObject,
|
|
|
|
|
and provides “syntactic sugar” in form of overrides for various GStreamer APIs that makes them easier to use in Python and more
|
|
|
|
|
pythonic; as well as support for APIs that aren’t available through the regular gobject-introspection based bindings, such as
|
|
|
|
|
e.g. GStreamer’s fundamental GLib types such as Gst.Fraction, Gst.IntRange etc.
|
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- The python Meson build option has been renamed to python-exe (and will yield to the monorepo build option of the same name
|
|
|
|
|
if set, in a monorepo build context).
|
2019-01-17 02:16:53 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- Added an iterator for AnalyticsRelationMeta
|
|
|
|
|
|
|
|
|
|
- Implement __eq__ for Mtd classes
|
|
|
|
|
|
|
|
|
|
- Various build fixes and Windows-related fixes.
|
2019-01-17 02:16:53 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
## GStreamer C# Bindings
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- The C# bindings have been updated for the latest GStreamer 1.26 API
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2025-01-14 14:52:48 +00:00
|
|
|
|
## GStreamer Rust Bindings and Rust Plugins
|
2020-09-07 23:07:45 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
The GStreamer Rust bindings and plugins are released separately with a different release cadence that’s tied to the gtk-rs
|
|
|
|
|
release cycle.
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2025-01-14 14:52:48 +00:00
|
|
|
|
The latest release of the bindings (0.23) has already been updated for the new GStreamer 1.26 APIs, and works with any GStreamer
|
2024-03-04 23:51:42 +00:00
|
|
|
|
version starting at 1.14.
|
2023-01-23 19:29:34 +00:00
|
|
|
|
|
2024-02-06 16:37:19 +00:00
|
|
|
|
gst-plugins-rs, the module containing GStreamer plugins written in Rust, has also seen lots of activity with many new elements
|
2025-03-11 20:14:44 +00:00
|
|
|
|
and plugins. The GStreamer 1.26 binaries will be tracking the main branch of gst-plugins-rs for starters and then track the 0.14
|
|
|
|
|
branch once that has been released (around summer 2025). After that, fixes from newer versions will be backported as needed to
|
|
|
|
|
the 0.14 branch for future 1.26.x bugfix releases.
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
|
|
|
|
Rust plugins can be used from any programming language. To applications they look just like a plugin written in C or C++.
|
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
### New Rust elements
|
|
|
|
|
|
|
|
|
|
- awstranscriber2, awstranslate: New elements around the AWS transcription and translation services.
|
|
|
|
|
|
|
|
|
|
- cea708mux: New element that allows to mux multiple CEA708 services into a single stream.
|
|
|
|
|
|
|
|
|
|
- cdpserviceinject: New element for injecting a CDP service descriptor into closed caption CDP packets
|
|
|
|
|
|
|
|
|
|
- cea708overlay: New element for overlaying CEA608 / CEA708 closed captions over video streams.
|
|
|
|
|
|
|
|
|
|
- gopbuffer: New element that can buffer a minimum duration of data delimited by discrete GOPs (Group of Picture)
|
|
|
|
|
|
|
|
|
|
- hlscmafsink, hlssink3: New single-variant HLS sink elements that can output CMAF (fMP4) or MPEG-TS fragments.
|
|
|
|
|
|
|
|
|
|
- hlsmultivariantsink: New sink element that can output an HLS stream with multiple variants
|
|
|
|
|
|
|
|
|
|
- mpegtslivesrc: New source element that can wrap a live MPEG-TS source (e.g. SRT or UDP source) and provides a clock based on
|
|
|
|
|
the PCR.
|
|
|
|
|
|
|
|
|
|
- onvifmetadataextractor: New element that can extract ONVIF metadata from GstMetas into a separate stream
|
|
|
|
|
|
|
|
|
|
- originalbuffer: New plugin with originalbuffersave / originalbufferrestore elements that allow saving an original buffer,
|
|
|
|
|
modifying it for analytics, and then restoring the original buffer content while keeping any additional metadata that was
|
|
|
|
|
added.
|
|
|
|
|
|
|
|
|
|
- polly: New element around the AWS text-to-speech polly services
|
2023-01-23 19:29:34 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- quinn: New plugin that contains various QUIC-based elements for working with raw QUIC streams, RTP-over-QUIC (RoQ) and
|
|
|
|
|
WebTransport.
|
2023-01-23 19:29:34 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- relationmeta: New plugin with elements converting between GstRelationMeta and ONVIF XML metadata.
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- New Rust RTP payloaders and depayloaders for AC3, AMR, JPEG, KLV, MPEG-TS (MP2T), MPEG-4 (MP4A, MP4G), Opus, PCMU (uLaw),
|
|
|
|
|
PCMA (aLaw), VP8, VP9.
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- New rtpbin2 based on rtprecv / rtpsend elements
|
2023-01-23 19:29:34 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- speechmatics: New transcriber / speech-to-text and translation element
|
|
|
|
|
|
|
|
|
|
- New spotifylyricssrc element for grabbing lyrics from Spotify.
|
|
|
|
|
|
|
|
|
|
- streamgrouper: New element that takes any number of streams as input and adjusts their stream-start events in such a way
|
|
|
|
|
that they all belong to the same stream group.
|
|
|
|
|
|
|
|
|
|
- translationbin: Helper bin around translation elements, similar to the already existing transcriberbin for transcriptions.
|
|
|
|
|
|
|
|
|
|
- tttocea708: New element for converting timed-text to CEA708 closed captions
|
|
|
|
|
|
|
|
|
|
- A VVdeC-based H.266 decoder element was added to the Rust plugins, based on the Fraunhofer Versatile Video Decoder library.
|
2023-01-23 19:29:34 +00:00
|
|
|
|
|
2025-01-14 14:52:48 +00:00
|
|
|
|
For a full list of changes in the Rust plugins see the gst-plugins-rs ChangeLog between versions 0.12 (shipped with GStreamer
|
2025-03-11 20:14:44 +00:00
|
|
|
|
1.24) and 0.14.x (shipped with GStreamer 1.26).
|
2019-01-17 02:16:53 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
Note that at the time of GStreamer 1.26.0 gst-plugins-rs 0.14 was not released yet and the git main branch was included instead
|
|
|
|
|
(see above). As such, the ChangeLog also did not contain the changes between the latest 0.13 release and 0.14.0.
|
2019-01-17 02:16:53 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
## Build and Dependencies
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- Meson >= 1.4 is now required for all modules
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- liborc >= 0.4.41 is strongly recommended
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
|
|
|
|
- libnice >= 0.1.22 is strongly recommended, as it is required for WebRTC ICE consent freshness (RFC 7675).
|
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- The ASIO plugin dropped its external SDK header dependency, so it can always be built and shipped more easily.
|
|
|
|
|
|
|
|
|
|
- Require tinyalsa >= 1.1.0 when building the tinyalsa plugin
|
|
|
|
|
|
|
|
|
|
- The srtp plugin now requires libsrtp2, support for libsrtp1 was dropped.
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
Monorepo build
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- The FFmpeg subproject wrap was updated to 7.1
|
|
|
|
|
|
|
|
|
|
- Many other wrap updates
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
|
|
|
|
gstreamer-full
|
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- No major changes
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
|
|
|
|
Development environment
|
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- Local pre-commit checks via git hooks have been moved over to pre-commit, including the code indentation check.
|
|
|
|
|
|
|
|
|
|
- Code indentation checking no longer relies on a locally installed copy of GNU indent (which had different outcomes depending
|
|
|
|
|
on the exact version installed). Instead pre-commit will automatically install the gst-indent-1.0 indentation tool through
|
|
|
|
|
pip, which also works on Windows and macOS.
|
|
|
|
|
|
|
|
|
|
- A pre-commit hook has been added to check documentation cache updates and since tags.
|
|
|
|
|
|
|
|
|
|
- Many meson wrap updates, including to FFmpeg 7.1
|
|
|
|
|
|
|
|
|
|
- The uninstalled development environment should work better on macOS now, also in combination with homebrew (e.g. when
|
|
|
|
|
libsoup comes from homebrew).
|
|
|
|
|
|
|
|
|
|
- New python-exe Meson build option to override the target Python installation to use. This will be picked up by the
|
|
|
|
|
gst-python and gst-editing-sevices subprojects.
|
|
|
|
|
|
|
|
|
|
## Platform-specific changes and improvements
|
|
|
|
|
|
|
|
|
|
### Android
|
|
|
|
|
|
|
|
|
|
- The recommended mechanism to build Android apps has changed from Android.mk to CMake-in-Gradle using
|
|
|
|
|
FindGStreamerMobile.cmake. Android.mk support has been deprecated and will be removed in the next stable release. For more
|
|
|
|
|
information, see below, in the Cerbero section.
|
|
|
|
|
- More H.264/H.265 profiles and levels have been added to the androidmedia hardware-accelerated video encoder and decoder
|
|
|
|
|
elements, along with mappings for a number of additional pixel formats for P010, packed 4:2:0 variants and RGBA layouts,
|
|
|
|
|
which fixes problems with android decoders refusing to output raw video frames with decoders that announce support for these
|
|
|
|
|
common pixel formats and only allow the ‘hardware surfaces output’ path.
|
|
|
|
|
|
|
|
|
|
### Apple macOS and iOS
|
|
|
|
|
|
|
|
|
|
- atenc: added an Apple AAC audio encoder
|
|
|
|
|
|
|
|
|
|
- atdec can now decode audio with more than two channels
|
|
|
|
|
|
|
|
|
|
- vtenc has received various bug fixes as well as a number of new features:
|
|
|
|
|
|
|
|
|
|
- Support for HEVC with alpha encoding via the new vtenc_h265a element
|
|
|
|
|
- additional rate control options for constant bitrate encoding (only supported on macOS 13.0+ and iOS 16.0+ on Apple
|
|
|
|
|
Silicon), setting data rate limits, and emulating CBR mode via data rate limits where CBR is not supported.
|
|
|
|
|
- HLG color transfer support
|
|
|
|
|
- new "max-frame-delay" property (for ProRes)
|
|
|
|
|
|
|
|
|
|
- Better macOS support for gst-validate tools which now use gst_macos_main() and support lldb
|
|
|
|
|
|
|
|
|
|
- The osxaudio device provider exposes more properties including a unique id
|
|
|
|
|
|
|
|
|
|
- osxaudio will automatically set up AVAudioSession on iOS and always expose the maximum number of channels a device supports
|
|
|
|
|
with an unpositioned layout.
|
|
|
|
|
|
|
|
|
|
- The monorepo development environment should work better on macOS now
|
|
|
|
|
|
|
|
|
|
- CMake apps that build macOS and iOS apps can consume GStreamer more easily now, using FindGStreamer.cmake or
|
|
|
|
|
FindGStreamerMobile.cmake respectively.
|
|
|
|
|
|
|
|
|
|
- In the near future, CMake in Xcode will be the preferred way of building the iOS tutorials. See below, in the Cerbero
|
|
|
|
|
section.
|
|
|
|
|
|
|
|
|
|
### Windows
|
|
|
|
|
|
|
|
|
|
- webview2src: new Microsoft WebView2 based web browser source element
|
|
|
|
|
|
|
|
|
|
- The mediafoundation plugin can also be built with MinGW now.
|
|
|
|
|
|
|
|
|
|
- The GTK3 plugin has gained support for OpenGL/WGL on Windows
|
|
|
|
|
|
|
|
|
|
- qsv: Add support for d3d12 interop in encoder, via D3D11 textures
|
2021-11-03 15:43:36 +00:00
|
|
|
|
|
2025-01-14 14:52:48 +00:00
|
|
|
|
### Cerbero
|
2019-02-26 11:53:22 +00:00
|
|
|
|
|
2024-02-06 16:37:19 +00:00
|
|
|
|
Cerbero is a meta build system used to build GStreamer plus dependencies on platforms where dependencies are not readily
|
|
|
|
|
available, such as Windows, Android, iOS, and macOS.
|
2019-02-26 11:53:22 +00:00
|
|
|
|
|
2022-10-04 00:14:01 +00:00
|
|
|
|
General improvements
|
2020-09-07 23:07:45 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- New features:
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- Python bindings support has been re-introduced and now supports Linux, Windows (MSVC) and macOS. Simply downloading the
|
|
|
|
|
official binaries and setting PYTHONPATH to the appropriate directory is sufficient.
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- This should make it easier for macOS and Windows users to use Python libraries, frameworks, and projects that use
|
|
|
|
|
GStreamer such as Pitivi and gst-python-ml.
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- Introspection support has been re-introduced on Linux, Windows (MSVC), and macOS.
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- New variants assert and checks to disable GLib assertions and runtime checks for performance reasons. Please note that
|
|
|
|
|
these are not recommended because they have significant behavioural side-effects, make debugging harder, and should only
|
|
|
|
|
be enabled when targeting extremely resource-constrained platforms.
|
2020-09-07 23:07:45 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- API/ABI changes:
|
2020-09-07 23:07:45 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- Libsoup has been upgraded from 2.74 to 3.6, which is an API and ABI breaking change. The soup and adaptivedemux2 plugins
|
|
|
|
|
are unchanged, but your applications may need updating since libsoup-2.4 and libsoup-3.0 cannot co-exist in the same
|
|
|
|
|
process.
|
2020-09-07 23:07:45 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- OpenSSL has been updated from 1.1.1 to 3.4, which is an ABI and API breaking change. Plugins are unchanged, but your
|
|
|
|
|
applications may need updating.
|
2025-02-23 23:44:10 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- Plugins added:
|
2025-02-23 23:44:10 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- The svt-av1 plugin is now shipped in the binary releases for all platforms.
|
2020-09-07 23:07:45 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- The svt-jpeg-xs plugin is now shipped in the binary releases for all platforms.
|
2020-09-07 23:07:45 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- The x265 plugin is now shipped in the binary releases for all platforms.
|
2019-02-26 11:53:22 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- All gst-plugins-rs elements are now shipped in the binary releases for all platforms, except those that have C/C++
|
|
|
|
|
system-deps like GTK4. For a full list, see the Rust section above.
|
2023-01-23 19:29:34 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- Plugins changed:
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- The rsvg plugin now uses librsvg written in Rust. The only side-effects of this should be better SVG rendering and
|
|
|
|
|
slightly larger plugin size.
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- The webrtc Rust plugin now also supports aws and livekit integrations .
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- Plugins removed:
|
2022-01-28 14:28:35 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- webrtc-audio-processing has been updated to 2.0, which means the isac plugin is no longer shipped.
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- Development improvements:
|
|
|
|
|
|
|
|
|
|
- Support for the shell command has been added to cross-macos-universal, since the prefix is executable despite being a
|
|
|
|
|
cross-compile target
|
|
|
|
|
|
|
|
|
|
- More recipes have been ported away from Autotools to Meson and CMake, speeding up the build and increasing platform
|
|
|
|
|
support.
|
|
|
|
|
|
|
|
|
|
#### macOS
|
|
|
|
|
|
|
|
|
|
- Python bindings support on macOS only supports using the Xcode-provided Python 3
|
|
|
|
|
|
|
|
|
|
- MoltenVK support in the applemedia plugin now also works on arm64 when doing a cross-universal build.
|
|
|
|
|
|
|
|
|
|
#### iOS
|
|
|
|
|
|
|
|
|
|
- CMake inside Xcode will soon be the recommended way to consume GStreamer when building iOS apps, similar to Android apps.
|
|
|
|
|
|
|
|
|
|
- FindGStreamerMobile.cmake is the recommended way to consume GStreamer now
|
|
|
|
|
|
|
|
|
|
- Tutorials and examples still use Xcode project files, but CMake support will be the active focus going forward
|
|
|
|
|
|
|
|
|
|
#### Windows
|
|
|
|
|
|
|
|
|
|
- The minimum supported OS version is now Windows 10.
|
|
|
|
|
|
|
|
|
|
- GStreamer itself can still be built for an older Windows, so if your project is majorly impacted by this, please open an
|
|
|
|
|
issue with details.
|
|
|
|
|
|
|
|
|
|
- The Windows MSI installers are now based on WiX v5, with several improvements including a much faster MSI creation process,
|
|
|
|
|
improved naming in Add/Remove Programs, and more.
|
|
|
|
|
|
|
|
|
|
- Windows installer packages: Starting with 1.26, due to security reasons, the default installation directory has changed
|
|
|
|
|
from C:\gstreamer to the Program Files folder, e.g. C:\Program Files (x86)\gstreamer for the 32-bit package on 64-bit
|
|
|
|
|
Windows. If you upgrade from 1.24 or older versions, the 1.26 installers will NOT keep using the existing folder.
|
|
|
|
|
Nevertheless if you were using C:\gstreamer we strongly recommend you double-check the install location.
|
|
|
|
|
|
|
|
|
|
- Note for MSI packagers: Starting with 1.26, the installers were ported to WiX 5.0. As part of this, the property for
|
|
|
|
|
setting the installation directory has been changed to INSTALLDIR, and it now requires a full path to the desired
|
|
|
|
|
directory, e.g. C:\gstreamer instead of C:\.
|
|
|
|
|
|
|
|
|
|
- Cross-MinGW build no longer supports the creation of MSIs. Please use tarballs.
|
|
|
|
|
|
|
|
|
|
- MinGW:
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- MinGW toolchain has been updated from GCC 8.2 → 14.2 and MinGW 6.0 → 12.0
|
|
|
|
|
|
|
|
|
|
- The mediafoundation plugin is also shipped in the MinGW packages now.
|
|
|
|
|
|
|
|
|
|
- The d3d12 plugin is also shipped in the MinGW packages now.
|
|
|
|
|
|
|
|
|
|
- Rust support has been enabled on MinGW 64-bit. Rust support cannot work on 32-bit MinGW due to differences in exception
|
|
|
|
|
handling between our 32-bit MinGW toolchain and that used by the Rust project
|
|
|
|
|
|
|
|
|
|
- The asio plugin is shipped now, since it no longer has a build-time dependency on the ASIO SDK.
|
|
|
|
|
|
|
|
|
|
- The new plugin webview2 is shipped with MSVC. It requires the relevant component shipped with Windows.
|
|
|
|
|
|
|
|
|
|
#### Linux
|
|
|
|
|
|
|
|
|
|
- Preliminary support for Alma Linux has been added.
|
|
|
|
|
|
|
|
|
|
- RHEL distro support has been improved.
|
|
|
|
|
|
|
|
|
|
- Cerbero CI now tests the build on Ubuntu 24.04 LTS.
|
|
|
|
|
|
|
|
|
|
- curl is used for downloading sources on Fedora instead of wget, since they have moved to wget2 despite show-stopper
|
|
|
|
|
regressions such as returning a success error code on download failure.
|
|
|
|
|
|
|
|
|
|
#### Android
|
|
|
|
|
|
|
|
|
|
- CMake inside Gradle is now the recommended way to consume GStreamer when building Android apps
|
|
|
|
|
|
|
|
|
|
- FindGStreamerMobile.cmake is the recommended way to consume GStreamer now
|
|
|
|
|
|
|
|
|
|
- 1.26 will support both CMake and Make inside Gradle, but the Make support will likely be removed in 1.28
|
|
|
|
|
|
|
|
|
|
- Documentation updates are still a work-in-progress, help is appreciated
|
|
|
|
|
|
|
|
|
|
- Android tutorials and examples are now built with gradle + cmake instead of gradle + make on the CI
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2025-01-14 14:52:48 +00:00
|
|
|
|
## Documentation improvements
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
- Tracer objects information is now included in the documentation
|
|
|
|
|
|
|
|
|
|
## Possibly Breaking Changes
|
|
|
|
|
|
|
|
|
|
- qroverlay: the "pixel-size" property has been removed in favour of a new "size" property with slightly different semantics,
|
|
|
|
|
where the size of the square is expressed in percent of the smallest of width and height.
|
|
|
|
|
|
|
|
|
|
- svtav1enc: The SVT-AV1 3.0.0 API exposes a different mechanism to configure the level of parallelism when encoding, which
|
|
|
|
|
has been exposed as a new "level-of-parallelism" property. The old "logical-processors" property is no longer functional if
|
|
|
|
|
the plugin has been compiled against the new API, which might affect encoder performance if application code setting it is
|
|
|
|
|
not updated.
|
|
|
|
|
|
|
|
|
|
- udpsrc: now disables allocated port reuse for unicast to avoid unexpected side-effects of SO_REUSEADDR where the kernel
|
|
|
|
|
allocates the same listening port for multiple udpsrc.
|
|
|
|
|
|
|
|
|
|
- uridecodebin3 remove non-functional "source" property that doesn’t make sense and always returned NULL anyway.
|
|
|
|
|
|
|
|
|
|
## Known Issues
|
|
|
|
|
|
|
|
|
|
- GstBuffer now uses C11 atomics for 64 bit atomic operations if available, which may require linking to libatomic on some
|
|
|
|
|
systems, but this is not done automatically yet, see issue #4177.
|
2023-01-23 19:29:34 +00:00
|
|
|
|
|
2024-02-06 16:37:19 +00:00
|
|
|
|
Contributors
|
2023-01-23 19:29:34 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
Aaron Boxer, Adrian Perez de Castro, Adrien De Coninck, Alan Coopersmith, Albert Sjolund, Alexander Slobodeniuk, Alex Ashley,
|
|
|
|
|
Alicia Boya García, Andoni Morales Alastruey, Andreas Wittmann, Andrew Yooeun Chun, Angelo Verlain, Aniket Hande, Antonio
|
|
|
|
|
Larrosa, Antonio Morales, Armin Begovic, Arnaud Vrac, Artem Martus, Arun Raghavan, Benjamin Gaignard, Benjamin Gräf, Bill
|
|
|
|
|
Nottingham, Brad Hards, Brad Reitmeyer, Branko Subasic, Carlo Caione, Carlos Bentzen, Carlos Falgueras García, cdelguercio, Chao
|
|
|
|
|
Guo, Cheah, Cheung Yik Pang, chitao1234, Chris Bainbridge, Chris Spencer, Chris Spoelstra, Christian Meissl, Christopher Degawa,
|
|
|
|
|
Chun-wei Fan, Colin Kinloch, Corentin Damman, Daniel Morin, Daniel Pendse, Daniel Stone, Dan Yeaw, Dave Lucia, David Rosca, Dean
|
|
|
|
|
Zhang (张安迪), Denis Yuji Shimizu, Detlev Casanova, Devon Sookhoo, Diego Nieto, Dongyun Seo, dukesook, Edward Hervey, eipachte,
|
|
|
|
|
Eli Mallon, Elizabeth Figura, Elliot Chen, Emil Ljungdahl, Emil Pettersson, eri, F. Duncanh, Fotis Xenakis, Francisco Javier
|
|
|
|
|
Velázquez-García, Francis Quiers, François Laignel, George Hazan, Glyn Davies, Guillaume Desmottes, Guillermo E. Martinez,
|
|
|
|
|
Haihua Hu, Håvard Graff, He Junyan, Hosang Lee, Hou Qi, Hugues Fruchet, Hyunwoo, iodar, jadarve, Jakub Adam, Jakub Vaněk, James
|
|
|
|
|
Cowgill, James Oliver, Jan Alexander Steffens (heftig), Jan Schmidt, Jeffery Wilson, Jendrik Weise, Jerome Colle, Jesper Jensen,
|
|
|
|
|
Jimmy Ohn, Jochen Henneberg, Johan Sternerup, Jonas K Danielsson, Jonas Rebmann, Jordan Petridis, Jordan Petridіs, Jordan
|
|
|
|
|
Yelloz, Jorge Zapata, Joshua Breeden, Julian Bouzas, Jurijs Satcs, Kévin Commaille, Kevin Wang, Khem Raj, kingosticks, Leonardo
|
|
|
|
|
Salvatore, L. E. Segovia, Liam, Lim, Loïc Le Page, Loïc Yhuel, Lyra McMillan, Maksym Khomenko, Marc-André Lureau, Marek Olejnik,
|
|
|
|
|
Marek Vasut, Marianna Smidth Buschle, Marijn Suijten, Mark-André Schadow, Mark Nauwelaerts, Markus Ebner, Martin Nordholts, Mart
|
|
|
|
|
Raudsepp, Mathieu Duponchelle, Matthew Waters, Maxim P. DEMENTYEV, Max Romanov, Mengkejiergeli Ba, Michael Grzeschik, Michael
|
|
|
|
|
Olbrich, Michael Scherle, Michael Tretter, Michiel Westerbeek, Mikhail Rudenko, Nacho Garcia, Nick Steel, Nicolas Dufresne,
|
|
|
|
|
Niklas Jang, Nirbheek Chauhan, Ognyan Tonchev, Olivier Crête, Oskar Fiedot, Pablo García, Pablo Sun, Patricia Muscalu, Paweł
|
|
|
|
|
Kotiuk, Peter Kjellerstedt, Peter Stensson, pgarciasancho, Philippe Normand, Philipp Zabel, Piotr Brzeziński, Qian Hu (胡骞),
|
|
|
|
|
Rafael Caricio, Randy Li (ayaka), Rares Branici, Ray Tiley, Robert Ayrapetyan, Robert Guziolowski, Robert Mader, Roberto Viola,
|
|
|
|
|
Robert Rosengren, RSWilli,Ruben González, Ruijing Dong, Sachin Gadag, Sam James, Samuel Thibault, Sanchayan Maity, Scott Moreau,
|
|
|
|
|
Sebastian Dröge, Sebastian Gross, Sebastien Cote, Sergey Krivohatskiy, Sergey Radionov, Seungha Yang, Seungmin Kim, Shengqi Yu,
|
|
|
|
|
Sid Sethupathi, Silvio Lazzeretti, Simonas Kazlauskas, Stefan Riedmüller, Stéphane Cerveau, Tamas Levai, Taruntej Kanakamalla,
|
|
|
|
|
Théo Maillart, Thibault Saunier, Thomas Goodwin, Thomas Klausner, Tihran Katolikian, Tim Blechmann, Tim-Philipp Müller, Tjitte
|
|
|
|
|
de Wert, Tomas Granath, Tomáš Polomský, tomaszmi, Tom Schuring, U. Artie Eoff, valadaptive, Víctor Manuel Jáquez Leal, Vivia
|
|
|
|
|
Nikolaidou, W. Bartel, Weijian Pan, William Wedler, Will Miller, Wim Taymans, Wojciech Kapsa, Xavier Claessens, Xi Ruoyao,
|
|
|
|
|
Xizhen, Yaakov Selkowitz, Yacine Bandou, Zach van Rijn, Zeno Endemann, Zhao, Zhong Hongcheng,
|
2024-03-04 23:51:42 +00:00
|
|
|
|
|
|
|
|
|
… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!
|
2023-01-23 19:29:34 +00:00
|
|
|
|
|
2025-01-14 14:52:48 +00:00
|
|
|
|
Stable 1.26 branch
|
2020-09-07 23:07:45 +00:00
|
|
|
|
|
2025-01-14 14:52:48 +00:00
|
|
|
|
After the 1.26.0 release there will be several 1.26.x bug-fix releases 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 a bug-fix release usually. The 1.26.x
|
2025-03-11 20:14:44 +00:00
|
|
|
|
bug-fix releases will be made from the git 1.26 branch, which is a stable release series branch.
|
2019-01-17 02:16:53 +00:00
|
|
|
|
|
2025-01-14 14:52:48 +00:00
|
|
|
|
Schedule for 1.28
|
2019-01-17 02:16:53 +00:00
|
|
|
|
|
2025-01-14 14:52:48 +00:00
|
|
|
|
Our next major feature release will be 1.28, and 1.27 will be the unstable development version leading up to the stable 1.28
|
|
|
|
|
release. The development of 1.27/1.28 will happen in the git main branch of the GStreamer mono repository.
|
2022-11-07 23:53:59 +00:00
|
|
|
|
|
2025-01-14 14:52:48 +00:00
|
|
|
|
The schedule for 1.28 is yet to be decided.
|
2024-02-06 16:37:19 +00:00
|
|
|
|
|
2025-01-14 14:52:48 +00:00
|
|
|
|
1.28 will be backwards-compatible to the stable 1.26, 1.24, 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
|
2024-02-06 16:37:19 +00:00
|
|
|
|
release series.
|
|
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------------------------------------------------------------
|
2019-01-17 02:16:53 +00:00
|
|
|
|
|
2025-03-11 20:14:44 +00:00
|
|
|
|
These release notes have been prepared by Tim-Philipp Müller with contributions from Arun Raghavan, Daniel Morin, Nirbheek
|
|
|
|
|
Chauhan, Olivier Crête, Philippe Normand, Sebastian Dröge, Seungha Yang, Thibault Saunier, and Víctor Manuel Jáquez Leal.
|
2017-05-04 12:39:05 +00:00
|
|
|
|
|
2020-08-20 15:14:23 +00:00
|
|
|
|
License: CC BY-SA 4.0
|