Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package gstreamer-rtsp-server for
openSUSE:Factory checked in at 2026-03-05 17:14:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gstreamer-rtsp-server (Old)
and /work/SRC/openSUSE:Factory/.gstreamer-rtsp-server.new.561 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gstreamer-rtsp-server"
Thu Mar 5 17:14:22 2026 rev:71 rq:1336399 version:1.28.1
Changes:
--------
---
/work/SRC/openSUSE:Factory/gstreamer-rtsp-server/gstreamer-rtsp-server.changes
2026-02-12 17:27:08.058698203 +0100
+++
/work/SRC/openSUSE:Factory/.gstreamer-rtsp-server.new.561/gstreamer-rtsp-server.changes
2026-03-05 17:17:35.064703130 +0100
@@ -1,0 +2,8 @@
+Thu Feb 26 09:08:46 UTC 2026 - Bjørn Lie <[email protected]>
+
+- Update to version 1.28.1:
+ + rtspclientsink: don't error out when stream transport notifies
+ timeout
+ + rtspclientsink <-> MediaMTX times out when migrating to 1.28
+
+-------------------------------------------------------------------
Old:
----
gst-rtsp-server-1.28.0.obscpio
New:
----
gst-rtsp-server-1.28.1.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gstreamer-rtsp-server.spec ++++++
--- /var/tmp/diff_new_pack.oHac6d/_old 2026-03-05 17:17:35.728730610 +0100
+++ /var/tmp/diff_new_pack.oHac6d/_new 2026-03-05 17:17:35.732730776 +0100
@@ -20,7 +20,7 @@
%define _name gst-rtsp-server
Name: gstreamer-rtsp-server
-Version: 1.28.0
+Version: 1.28.1
Release: 0
Summary: GStreamer-based RTSP server library
License: LGPL-2.0-or-later
++++++ _service ++++++
--- /var/tmp/diff_new_pack.oHac6d/_old 2026-03-05 17:17:35.844735410 +0100
+++ /var/tmp/diff_new_pack.oHac6d/_new 2026-03-05 17:17:35.860736073 +0100
@@ -5,7 +5,7 @@
<param
name="url">https://gitlab.freedesktop.org/gstreamer/gstreamer.git</param>
<param name="subdir">subprojects/gst-rtsp-server</param>
<param name="filename">gst-rtsp-server</param>
- <param name="revision">1.28.0</param>
+ <param name="revision">1.28.1</param>
<param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param>
<param name="versionrewrite-pattern">v?(.*)\+0</param>
<param name="versionrewrite-replacement">\1</param>
++++++ gst-rtsp-server-1.28.0.obscpio -> gst-rtsp-server-1.28.1.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-rtsp-server-1.28.0/NEWS
new/gst-rtsp-server-1.28.1/NEWS
--- old/gst-rtsp-server-1.28.0/NEWS 2026-01-27 18:07:29.000000000 +0100
+++ new/gst-rtsp-server-1.28.1/NEWS 1970-01-01 01:00:00.000000000 +0100
@@ -1,1096 +0,0 @@
-GStreamer 1.28 Release Notes
-
-GStreamer 1.28.0 was originally released on 27 January 2026.
-
-See https://gstreamer.freedesktop.org/releases/1.28/ for the latest version of
this document.
-
-Last updated: Tuesday 27 January 2026, 17:00 UTC (log)
-
-## 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!
-
-As always, this release is again packed with many new features, bug fixes, and
other improvements.
-
-## Highlights
-
-- AMD HIP plugin and integration helper library
-- Vulkan Video AV1 and VP9 decoding, H.264 encoding, and 10-bit support for
H.265 decoder
-- waylandsink: Parse and set the HDR10 metadata and other color management
improvements
-- Audio source separation element based on demucs in Rust
-- Analytics combiner and splitter elements plus batch meta to batch buffers
from one or more streams
-- LiteRT inference element; move modelinfo to analytics lib; add script to
help with modelinfo generation and upgrade
-- Add general classifier tensor-decoder, facedetector, and more analytics
convenience API
-- New tensordecodebin element to auto-plug compatible tensor decoders based
on their caps and many other additions and
- improvements
-- Add a burn-based YOLOX inference element and a YOLOX tensor decoder in Rust
-- applemedia: VideoToolbox VP9 and AV1 hardware-accelerated decoding
support, and 10-bit HEVC encoding
-- Add new GIF decoder element in Rust with looping support
-- input-selector: implements a two-phase sinkpad switch now to avoid races
when switching input pads
-- The inter wormhole sink and source elements gained a way to forward
upstream events to the producer as well as new
- fine-tuning properties
-- webrtcsink: add renegotiation support and support for va hardware encoders
-- webrtc WHEP client and server signaller
-- New ST-2038 ancillary data combiner and extractor elements
-- fallbacksrc gained support for encoded streams
-- flv: enhanced rtmp H.265 video support, and support for multitrack audio
-- glupload: Implement udmabuf uploader to share buffers between software
decoders/sources and GPUs, display engines (wayland),
- and other dma devices
-- video: Add crop, scale, rotate, flip, shear and more GstMeta transformation
-- New task pool GstContext to share a thread pool amongst elements for
better resource management and performance, especially
- for video conversion and compositing
-- New Deepgram speech-to-text transcription plugin and many other
translation and transcription improvements
-- Speech synthesizers: expose new “compress” overflow mode that can speed up
audio while preserving pitch
-- ElevenLabs voice cloning element and support for Speechmatics speaker
identification API
-- textaccumulate: new element for speech synthesis or translation
preprocessing
-- New vmaf element to calculate perceptual video quality assessment scores
using Netflix’s VMAF framework
-- decodebin3: expose KLV, ID3 PES and ST-2038 ancillary data streams with
new metadata GstStream type
-- New MPEG-H audio decoding plugin plus MP4 demuxing support
-- LCEVC: Add autoplugging decoding support for LCEVC H265 and H266 video
streams and LCEVC H.265 and H.266 encoders
-- RTP “robust MPEG audio”, raw audio (L8, L16, L24), and SMPTE ST291
ancillary metadata payloaders/depayloaders in Rust
-- Add a Rust-based icecastsink element with AAC support
-- The Windows IPC plugin gained support for passing generic data in addition
to raw audio/video, and various properties
-- New D3D12 interlace and overlay compositor elements, plus many other D3D12
improvements
-- Blackmagic Decklink elements gained support for capturing and outputting
all types of VANC via GstAncillaryMeta
-- GstLogContext API to reduce log spam in several components and
GST_DEBUG_ONCE (etc) convenience macros to log things only
- once
-- hlssink3, hlscmafsink: Support the use of a single media file, plus
I-frame only playlist support
-- Webkit: New wpe2 plugin making use of the “WPE Platform API”
-- MPEG-TS demuxer can now disable skew corrections
-- New Qt6 QML render source element
-- qml6gloverlay: support directly passing a QQuickItem for QML the render
tree
-- unifxfdsink: Add a property to allow copying to make sink usable with more
upstream elements
-- dots-viewer: Improve dot file generation and interactivity
-- Python bindings: more syntactic sugar, analytics API improvements and type
annotations
-- cerbero: add support for Python wheel packaging, Windows ARM64, new iOS
xcframework, Gtk4 on macOS and Windows, and more
- plugins
-- Smaller binary sizes of Rust plugins in Windows and Android binary packages
-- Peel: New C++ bindings for GStreamer
-- Lots of new plugins, features, performance improvements and bug fixes
-- Countless bug fixes, build fixes, memory leak fixes, and other stability
and reliability improvements
-
-## Major new features and changes
-
-### AMD HIP plugin and integration library
-
-- HIP (formerly known as Heterogeneous-computing Interface for Portability)
is AMD’s GPU programming API that enables
- portable, CUDA-like development across both AMD and NVIDIA platforms:
-
- - On AMD GPUs, HIP runs natively via the ROCm stack.
- - On NVIDIA GPUs, HIP operates as a thin translation layer over the CUDA
runtime and driver APIs.
-
- This allows developers to maintain a single codebase that can target
multiple GPU vendors with minimal effort.
-
-- The new HIP plugin provides the following elements:
-
- - hipcompositor: a HIP-based video mixer/compositor
- - hipconvert: Converts video from one colorspace to another using HIP
- - hipconvertscale: Resizes video and allow color conversion using HIP
- - hipscale: Resize video using HIP
- - hipdownload: Downloads HIP device memory into system memory
- - hipupload: Uploads system memory into HIP device memory
-
-- The GStreamer HIP integration helper library provides HIP integration
functionality to applications and other HIP users.
-
-- Watch the Bringing AMD HIP into GStreamer talk from last year’s GStreamer
Conference for more details or read Seungha’s
- devlog post on the subject.
-
-### Low Complexity Enhancement Video Coding (LCEVC) support for H.265 and H.266
-
-- 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 H.265 and H.266 encoder and decoder elements based on V-Nova’s SDK
libraries were added in this cycle
-
-- Autoplugging support for LCEVC H265 and H266 video streams, so these can
be decoded automatically in a decodebin3 or
- playbin3 scenario.
-
-### Closed captions and text handling improvements
-
-- cea708overlay: suport non-relative positioning for streams with CCs that
do not have relative positions. Instead of
- displaying them at the top, they are positioned relatively.
-
-- cea708mux: expose “discarded-services” property on sink pads. This can be
useful when muxing in an original caption stream
- with a newly-created one (e.g. transcription / translation), in which case
one might wish to discard select services from
- the original stream in order to avoid garbled captions.
-
-- sccparse: Better handling of streams with more byte tuples in the SCC
field.
-
-- tttocea608: expose “speaker-prefix” property
-
-- Miscellaneous improvements and spec compliance fixes
-
-- Also see SMPTE ST-2038 metadata section below.
-
-### Speech to Text, Translation and Speech Synthesis
-
-- New audio source separation element based on demucs in Rust. This is
useful to separate speech from background audio before
- running speech to text transcription, but could also be used to separate
vocals from music for karaoke.
-
-- New Deepgram speech-to-text transcription plugin in Rust.
-
-- The Speechmatics transcriber has seen a major refactoring for better
timings, gap and discontinuity handling and has gained
- support for the new Speechmatics speaker identification API as well as a
new property to mask profanities.
-
-- New ElevenLabs voice cloning element. The new element can operate in two
modes:
-
- - In single speaker mode, the element will directly clone a single voice
from its input, without storing any samples.
- - Otherwise, the element will store a backlog of samples, and wait to
receive certain events from a transcriber on its
- source pad before draining them to create potentially multiple voices.
-
-- New “compress” overflow mode for speech synthesizers that can speed up the
audio while preserving pitch. This may be needed
- to keep or regain audio/video synchronisation if translated speech output
has been consistently longer in duration than the
- original and there hasn’t been a sufficient amount of silence that could
be filled in to make up the difference.
-
-- awstranslate: new “brevity-on” property for turning brevity on.
-
-- The awstranscriber2 has been refactored to match the speechmatics
transcriber design and gained a “show-speaker-label”
- property that defines whether to partition speakers in the transcription
output.
-
-- New textaccumulate element for speech synthesis or translation
preprocessing that can be used to accumulate words and
- punctuation into complete sentences (or sentence fragments) for synthesis
and / or translation by further elements
- downstream.
-
-### HLS DASH adaptive streaming improvements
-
-- Reverse playback, seeking and stream selection fixes in the HLS/DASH
clients.
-
-- hlscmafsink can generate I-frame only playlists now
-
-- Both hlssink3 and hlscmafsink gained support for use of a single media
file, in which case the media playlist will use byte
- range tags for each chunk whilst always referencing the same single media
file. This can be useful for VOD use cases.
-
-### decodebin3 and playbin3 improvements
-
-- decodebin3 now has a separate pad template for metadata streams and
considers KLV, ID3 PES streams and ST-2038 ancillary
- streams as raw formats for meta streams. This comes also with a new
dedicated GST_STREAM_TYPE_METADATA stream type in the
- stream collection.
-
-### Enhanced RTMP and multitrack audio/video support in FLV
-
-- The FLV container used for RTMP streaming is fairly old and limited in
terms of features: It only supports one audio and one
- video track, and also only a very limited number of audio and video
codecs, most of which are by now quite long in the
- tooth.
-
-- The Enhanced RTMP (V2) specification seeks to remedy this and adds support
for modern video codecs such H.265 and AV1 as
- well as support for more than one audio and video track inside the
container.
-
-- Both H.265 video and multiple audio/video tracks are now supported for FLV
in GStreamer.
-
-- Support for this comes in form of a new eflvmux muxer element, which is
needed to accommodate both the need of backwards
- compatibility in the existing FLV muxer and the requirements of the new
format. See Tarun’s blog post for more details.
-
-### MPEG-TS container format improvements
-
-- The MPEG-TS demuxer gained a “skew-corrections” property that allows
disabling of skew corrections, which are done by
- default for live inputs to make sure downstream consumes data at the same
rate as it comes in if the local clock and the
- sender clock drift apart (as they usually do). Disabling skew corrections
is useful if the input stream has already been
- clock-corrected (for example with mpegtslivesrc) or where the output
doesn’t require synchronisation against a clock,
- e.g. when it’s re-encoded and/or remuxed and written to file (incl.
HLS/DASH output) where it’s desirable to maintain the
- original timestamps and frame spacings.
-
- It is also useful for cases where we want to refer to the PCR stream to
figure out global positioning, gap detection and
- wrapover correction.
-
-- tsdemux now also supports demuxing of ID3 tags in MPEG-TS as specified in
the Apple Timed Metadata for HTTP Live Streaming
- specification. These timed ID3 tags have a media type of meta/x-id3 which
is different from the one used to tag audio files,
- and an id3metaparse element is needed to properly frame the PES data
coming out of the demuxer.
-
-- The MPEG-TS muxer now also reads prog-map[PMT_ORDER_<PID>] for PMT order
key in addition to prog-map[PMT_%d], which fixes a
- wart in the API and provides an unambiguous way to specify ordering keys.
-
-### Matroska container format improvements
-
-- matroskademux now supports relative position cues in the seek table and
also had its maximum block size restrictions updated
- so that it can support uncompressed video frames also in 4k UHD resolution
and higher bit depths.
-
-### ISO MP4 container format improvements
-
-- mp4mux now supports E-AC3 muxing
-
-- qtdemux, the MP4 demuxer, has seen countless fixes for various advanced
use cases (with lots more in the pipeline for
- 1.28.1).
-
-- The isomp4mux from the Rust plugins set now support caps changes and has
also gained support for raw audio as per ISO/IEC
- 23003-5. Plus improved brand selection.
-
-- The isomp4mux, isofmp4mux and related elements were merged into a single
isobmff plugin, which allows sharing more code. As
- part of this, codec support was consolidated between the two.
-
-### MXF container format improvements
-
-- The MXF muxer and demuxer gained support for non-closed-caption VANC
ancillary metdata:
-
- - Extends mxfdemux with support for outputting VANC (ST436M) essence
tracks as ST2038 streams instead of extracting closed
- captions internally.
-
- - Extends mxfmux with support for consuming ST2038 streams for
outputting VANC (ST436M) essence tracks instead of only
- supporting closed captions.
-
-To support ST2038 instead of the earlier closed captions, we introduce a
breaking change to the caps handling on the pad. This
-was deemed the cleanest way and should hopefully not cause too much breakage
in the real world, as it is likely not something
-that was used much in practice in this form. The st2038anctocc element can be
used to convert a ST2038 stream to plain closed
-captions.
-
-We also now support both 8 and 10-bit VANC data when reading from MXF.
-
-### MPEG-H audio support
-
-- New MPEG-H audio decoding plugin based on the Fraunhofer MPEG-H decoder
implementation plus MP4 demuxing support
-
-SMPTE 2038 ancillary data stream handling improvements
-
-- New ST-2038 ancillary data combiner and extractor elements in the
rsclosedcaption Rust plugin that extract ST-3028 metadata
- streams from GstAncillaryMetas on video frames or converts ST-2038
metadata streams to GstAncillaryMeta and combines it with
- a given video stream.
-
-- The MXF demuxer and muxer gained support for muxing and demuxing generic
ancillary metadata in ST-2038 format (see below).
-
-- decodebin3 now treats ST-2038 metadata streams as a “raw metadata format”
and exposes those streams as
- GST_STREAM_TYPE_METADATA.
-
-### Analytics
-
-This release introduces a major improvement in how analytics pipelines are
built, moving away from manual configuration toward a
-fully negotiated analytics pipeline.
-
-- Robust Tensor Negotiation & Smart Selection: All inference and tensor
decoder elements adopt the tensor capability
- negotiation mechanism. This provides informative error handling by
validating the pipeline during the setup phase and
- providing descriptive error messages for configuration mismatches before
processing begins. Complementing this, the new
- tensordecodebin acts as an intelligent proxy that abstracts decoder
selection by auto-plugging the correct tensor decoder.
- This simplifies the use of existing tensor decoders and allows new tensor
decoders to be utilized instantly without
- requiring changes to pipeline definitions.
-
-- Simplified Model Integration with modelinfo: The modelinfo library,
configuration files, and the modelinfo-generator.py
- script work together to make using any ML model inside a GStreamer
pipeline very simple. The new utility script helps you
- quickly generate or upgrade metadata files for existing models. Combined
with tensor negotiation and tensordecodebin, these
- tools facilitate the seamless utilization of new models within the
analytics chain.
-
-- analyticsoverlay: New “expire-overlay” property added to
objectdetectionoverlay and can also show tracking-id; New
- ‘segmentationoverlay’ to visualize segmented regions.
-
-- Add LiteRT inference element
-
-- Analytics: add general classifier tensor-decoder, facedetector, YOLOv8
(detection), YOLOv8segmentation tensor decoders and
- more convenience API.
-
-- onnx: Add Verisilicon provider support
-
-- New IoU based tracker
-
-- Add GstAnalyticsBatchMeta representing a batch of buffers from one or more
streams together with the relevant events to be
- able to interpret the buffers and to be able to reconstruct the original
streams.
-
-- New analyticscombiner and analyticssplitter elements in the Rust plugin
set which batch buffers from one or more streams
- into a single stream via the new GstAnalyticsBatchMeta and allow splitting
that single stream into the individual ones again
- later.
-
-- Add a burn-based YOLOX inference element and a YOLOX tensor decoder in
Rust.
-
-### Vulkan integration enhancements
-
-- The Vulkan Video encoders and decoders now dynamically generate their pad
template caps at runtime instead of hardcoding
- them, so they more accurately reflect the actual capabilities of the
hardware and drivers.
-
-- New Vulkan AV1 and VP9 video decoding support
-
-- New Vulkan H.264 encoding support
-
-- The Vulkan H.265 decoder now also supports 10-bit depth
-
-### OpenGL integration enhancements
-
-- Implement keyboard, mouse, and scroll wheel navigation event handling for
the OpenGL Cocoa backend.
-
-- Added support for the NV24 and Y444_12 pixel formats. The latter is used
by certain HEVC decoders for 12-bit non-subsampled
- profiles.
-
-### udmabuf allocator with glupload support
-
-- Implement a udmabuf-based memory allocator for user-space mappable dmabufs.
-
-- glupload: add udmabuf uploader to share buffers between software
decoders/sources and GPUs, display engines (wayland), and
- other dma devices. This can help reduce memory copies and can massively
improve performance in video players like Showtime
- or Totem for software-decoded video such as AV1 with dav1ddec.
-
-- gtk4paintablesink: Similar to glupload, this now proposes the udmabuf
memory allocator to upstream which can reduce memory
- copies and improve performance with certain software decoders.
-
-### Wayland integration
-
-- Added basic colorimetry support
-
-- waylandsink:
-
- - Parse and set the HDR10 metadata and other color management
improvements
-
- - udmabuf support (see above)
-
- - video crop meta support
-
- - New “fullscreen-output” and “force-aspect-ratio” properties
-
-### Qt5 + Qt6 QML integration improvements
-
-- New Qt6 QML qml6 render source element
-
-- qml6gloverlay: support directly passing a QQuickItem for QML the render
tree
-
-### GTK4 integration improvements
-
-- gtk4paintablesink: Added YCbCr memory texture formats and improve
color-state fallbacks. The sink will also propose a
- udmabuf buffer pool and allocator now if upstream asks for sysmem, which
would allow direct imports of the memory by
- GL/Vulkan or the compositor. Plus many other improvements which have also
been backported into the 0.14 branch.
-
-### CUDA / NVCODEC integration and feature additions
-
-- cudacompositor, cudaconvert and its variants gained crop meta support
-
-- nvencoder: interlaced video handling improvements and “emit-frame-stats”
property which if enabled makes the encoder emit
- the “frame-stats” signal for each encoded frame, allowing applications to
monitor things like the average QP per frame.
-
-- nvjpegenc: Add an autogpu mode element (nvautogpunvenc) similar to
nvautogpu{h264,h265,av1}enc.
-
-- nvh264enc, nvh265enc gained a new “num-slices” property which is
conditionally available based on device support for dynamic
- slice mode
-
-- nvdsdewarp: performance improvements and support for output resizing
support, along with a new “add-borders” property.
-
-### Capture and playout cards support
-
-- Blackmagic Decklink elements gained support for capturing and outputting
all types of VANC via GstAncillaryMeta
-
-### RTP and RTSP stack improvements
-
-- rtspsrc now sends RTSP keepalives also in TCP/interleaved modes. This
fixes problems with some cameras that don’t see the
- RTCP traffic as sufficient proof of liveness, when using TCP/HTTP
tunnelled modes.
-
-- New Rust RTP mparobust depayloader for “robust mp3” audio**, a more
loss-tolerant RTP payload format for MP3 audio (RFC
- 5219)
-
-- New Rust RTP L8/L16/L24 raw audio payloader and depayloader, which offer
more correct timestamp handling compared to the old
- payloader and depayloader and more correctly implements multichannel
support.
-
-- New Rust RTP SMTPE ST291 ancillary data payloader and depayloader for
sending or receiving ancillary data over RTP. This is
- also the payload format used by ST2110-40.
-
-- Various performance improvements and fixes for rtprecv / rtpsend
(“rtpbin2”).
-
-- Support for “multi-time aggregation packets” (MTAP) in the H264 RTP
depayloader rtph264depay.
-
-### WebRTC improvements
-
-- webrtcbin and GstWebRTC library improvements:
-
- - Add support for getting the selected ICE candidate pairs
-
- - Improve spec compliance for ICE candidate stats by filling the
foundation, related-address, related-port,
- username-fragment and tcp-type fields of stats.
-
- - improve compatibility with LiveKit
-
-- webrtcsink and webrtcsrc enhancements:
-
- - webrtcsink gained renegotiation support, and support for va hardware
encoders
-
-- Added a WHEP client signaller and server signaller to the Rust webrtc
plugin, including support for server side offers for
- the WHEP client.
-
-- webrtc-api: Set default bundle policy to max-bundle.
-
-- The dtls plugin now uses a ECDSA private key for the default certificate.
ECDSA is widely used in browsers and SFUs, and
- some servers such as the ones using BouncyCastle only accept certificates
signed with ECDSA.
-
-### New GStreamer C++ bindings
-
-The old GStreamer C++ bindings (gstreamermm and qt-gstreamer) have been
unmaintained for a long time, leaving C++ developers
-only with the option to use the GStreamer C API.
-
-In recent years, a new approach for C++ bindings was developed by the GNOME
community: peel. While initially developed for GTK,
-with various GObject Introspection and API fixes included in GStreamer 1.28,
this is now also usable for GStreamer.
-
-Compared to gstreamermm this offers a much lower overhead, headers-only C++
binding that just depends on the C libraries and not
-even the C++ STL, and provides a modern C++ API top of the GStreamer C API.
Compared to qt-gstreamer there is no dependency on
-Qt.
-
-It’s still in active development and various MRs for improving the GStreamer
development experience are not merged yet, but it’s
-already usable and a great improvement over using the plain C API from C++.
-
-Various GStreamer examples can be found in Sebastian’s GStreamer peel examples
repository.
-
-## New elements and plugins
-
-- Many exciting new Rust elements, see Rust section below.
-
-- New D3D12 interlace, overlay compositor, fish eye dewarp and uv coordinate
remapping elements
-
-- VMAF: New element to calculate perceptual video quality assessment scores
using Netflix’s VMAF framework
-
-- Webkit: New wpe2 plugin that makes use of the “WPE Platform API” with
support for rendering into GL and SHM buffers and
- navigation events (but not audio yet).
-
-- Many other new elements mentioned in other sections (e.g. CUDA, NVCODEC,
D3D12, Speech, AMD HIP, Rust etc.)
-
-## New element features and additions
-
-- The AWS S3 sink and source elements now support S3 compatible URI schemes.
-
-- clocksync: new “rate” property and “resync” action signal so that
clocksync can synchronise buffer running time against the
- pipeline clock with a specified rate factor. This can be useful if one
wants to throttle pipeline throughput such as e.g. in
- a non-realtime transcoding pipeline where the pipeline’s CPU and/or
hardware resource consumption needs to be limited.
-
-- fallbacksrc is able to support encoded outputs now, not just uncompressed
audio/video. As part of this it supports stream
- selection via the GstStream API now.
-
-- h265parse now automatically inserts AUDs where needed if it outputs
byte-stream format, which helps fix decoding artefacts
- for multi-slice HEVC streams with some hardware decoders.
-
-- input-selector now implements a two-phase sinkpad switch to avoid races
when switching input pads. Extensive tests have been
- added to avoid regressions.
-
-- The inter plugin wormhole sink and source elements for sending data
between pipelines within the same application process
- gained new properties to fine tune the inner elements. intersrc can now
also be configured to forward upstream events to the
- producer pipeline via the new “event-types” property.
-
-- The quinn plugin supports sharing of the QUIC/WebTransport
connection/session with an element upstream or downstream. This
- is required for supporting Media over QUIC (MoQ) later, for which an MR is
already pending.
-
-- replaygain will use EBU-R128 gain tags now if available.
-
-- threadshare: many improvements to the various threadshare elements, plus
examples and a new benchmark program. The plugin
- was also relicensed to MPL-2.0.
-
-- The unixfdsink element for zero-copy 1:N IPC on Linux can now also copy
the input data if needed, which makes it usable with
- more upstream elements. Before it would only work with elements that made
use of the special memory allocator it advertised.
- This (copy if needed) is enabled by default, but can be disabled by
setting the new “min-memory-size” property to -1.
-
- There’s also a new “num-clients” property that gets notified when the
number of clients (unixfdsrc elements tapping the same
- unixfdsink) changes.
-
-- videorate and imagefreeze now also support JPEG XS.
-
-- videorate’s formerly defunct “new-pref” property was revived for better
control which frame to prefer for output in case of
- caps changes.
-
-## Plugin and library moves and renames
-
-- The y4mdec plugin moved from gst-plugins-bad into gst-plugins-good and was
merged with the existing y4menc there into a
- single y4m plugin containing both a YUV4MPEG encoder and decoder.
-
-- The fmp4 and mp4 plugins in the Rust plugins set were merged into a single
isobmff plugin.
-
-## Plugin and element deprecations
-
-- The old librtmp-based rtmpsrc and rtmpsink elements are deprecated are
scheduled for removal in the next release cycle. Use
- the rtmp2src and rtmp2sink elements instead (which will likely also be
registered under the old names after removal of the
- old rtmp plugin).
-
-- Deprecate the webrtchttp plugin in the Rust plugins set along with its
whipsink and whepsrc elements, in favour of the
- whipclientsink and whepclientsrc elements from the webrtc plugin in the
Rust plugins set.
-
-- The libmpeg2-based mpeg2dec element is deprecated and scheduled for
removal in the next release cycle, as libmpeg2 has been
- unmaintained for a very long time. The libavcodec-based decoder has had a
higher rank for many years already and is also
- more performant. We would recommend that distros that also ship the
FFmpeg-based decoder out of the box stop shipping the
- mpeg2dec plugin now or reduce its rank to GST_RANK_NONE.
-
-## Plugin and element removals
-
-- The cc708overlay element has been removed. It is replaced by the
cea708overlay element from the rsclosedcaption plugin in
- the Rust plugins module.
-
-- Drop registration of rusotos3src and rusotos3sink in the AWS plugin in the
Rust plugins set. These were legacy names that
- were renamed to awss3src and awss3sink in 2022, but had been kept around
for a while so applications had time to move to the
- new name space.
-
-## Miscellaneous API additions
-
-### GStreamer Core
-
-- gst_call_async() and gst_object_call_async() are more generic and
convenient replacements for gst_element_call_async()
-
-- gst_check_version() is a new convenience function to check for a minimum
GStreamer core version at runtime.
-
-- GstClock: Add gst_clock_is_system_monotonic() utility function
-
-- GstController: gst_timed_value_control_source_list_control_points() is a
thread-safe method to retrieve the list of control
- points, replacing gst_timed_value_control_source_get_all().
-
-- GstCpuId: gst_cpuid_supports_x86_avx() and friends can be used to check
which SIMD instruction sets are supported on the
- current machine’s CPU without relying on liborc for that. This is useful
for plugins that rely on an external library that
- wants to be told which SIMD code paths to use.
-
-- gst_object_get_toplevel() can be used to get the toplevel parent of an
object, e.g. the pipeline an element is in.
-
-- New API for tensor caps descriptions:
-
- - GstUniqueList is a new unordered, unique container value type for
GValues similar to GstValueList but guaranteed to have
- unique values. Can only be queried and manipulated via the gst_value_*
API same as GstValueList and GstValueArray.
-
- - gst_structure_get_caps() gets a GstCaps from a structure
-
-- More accessor functions for GstPadProbeInfo fields and the GstMapInfo data
field, as well as a generic gst_map_info_clear()
- which is useful for language bindings.
-
-- New EBU-R128 variants of the replay gain tags: GST_TAG_TRACK_GAIN_R128 and
GST_TAG_ALBUM_GAIN_R128
-
-- GstReferenceTimestampMeta: additional information about the timestamp can
be provided via the new optional info
- GstStructure. This should only be used for information about the timestamp
and not for information about the clock source.
- This is used in an implementation of the TAI timestamp functionality
described in ISO/IEC 23001-17 Amendment 1 in the Rust
- MP4 muxer.
-
-- GstValue: add gst_value_hash() and support 0b / 0B prefix for bitmasks
when deserialising.
-
-- Add missing _take() and _steal() functions for some mini objects:
-
- - gst_buffer_take(), gst_buffer_steal()
- - gst_buffer_list_steal()
- - gst_caps_steal()
- - gst_memory_take(), gst_memory_replace(), gst_memory_steal()
- - gst_message_steal()
- - gst_query_steal()
-
-- GstElement: Deprecate gst_element_state_*() API and provide gst_state_*()
replacements with the right namespace
-
-#### GstMetaFactory to dynamically register metas
-
-- gst_meta_factory_register() allows to dynamically register metas and store
them in the registry by name. This is useful in
- combination with the GstMeta serialisation and deserialisation
functionality introduced in GStreamer 1.24, for metas that
- are not provided by GStreamer core. If an element comes across a meta name
that is not registered yet with GStreamer, it can
- check the registry and load the right plugin which will in turn register
the meta with GStreamer. This is similar to how
- flag and enum types can be stored in the registry so that if during caps
deserialisation an unknown enum or flag type is
- encountered, it can be loaded dynamically and registered with the type
system before deserialisation continues.
-
- The pbtypes plugin in gst-plugins-base registers GstAudioMeta and
GstVideoMeta in the registry so that e.g. unixfdsrc and
- other elements can make sure they get pulled in and registered with
GStreamer before deserialising them.
-
-### App Sink and Source Library
-
-- appsrc and appsink gained support for a more bindings-friendly “simple
callbacks” API that can be used instead of GObject
- signals (which have considerable overhead) or the normal callbacks API
(which couldn’t be used from most bindings).
-
-### Audio Library
-
-- added support for 20-bit PCM audio stored in 32-bit containers, both
signed (S20_32) and unsigned (U20_32), each in
- little-endian and big-endian variants.
-
-### Plugins Base Utils Library
-
-- Many minor improvements.
-
-### Tag Library
-
-- Vorbis comments: parse EBU R128 tags
-
-### Video Library and OpenGL Library
-
-- Add DRM equivalents for various 10/12/16 bit SW-decoders formats
-
-- New GstVideoMetaTransformMatrix that adds crop, scale, rotate, flip, shear
and more meta transformations. The current
- “scaling” transformation doesn’t work if either the input buffer is
cropped or if any kinds of borders are added. And it
- completely falls down with more complex transformations like compositor.
-
-- GstVideoOverlayCompositionMeta: handling of multiple video overlay
composition metas on a single buffer has been fixed in
- lots of places (overlays and sinks). Many elements assumed there would
only ever be a single overlay composition meta per
- buffer. For that reason gst_buffer_get_video_overlay_composition_meta()
has been deprecated, so that elements have to
- iterate over the metas and handle multiple occurences of it.
-
-New Raw Video Formats
-
-- Add more 10bit RGB formats commonly used on ARM SoCs in GStreamer Video,
OpenGL and Wayland, as well as in deinterlace and
- gdkpixbufoverlay:
- - BGR10x2_LE: packed 4:4:4 RGB (B-G-R-x), 10 bits for R/G/B channel and
MSB 2 bits for padding
- - RGB10x2_LE: packed 4:4:4 RGB (R-G-B-x), 10 bits for R/G/B channel and
MSB 2 bits for padding
-- Add 10-bit 4:2:2 NV16_10LE40 format, which is a fully-packed variant of
NV16_10LE32 and also known as NV20 and is produced
- by Rockchip rkvdec decoders.
-
-### GstPlay Library
-
-- GstPlay: Add support for gapless looping
-
-## Miscellaneous performance, latency and memory optimisations
-
-- New task pool GstContext to share a thread pool amongst elements in a
pipeline for better resource management and
- performance, especially for video conversion and compositing. This is
currently only made use of automatically in the
- GStreamer Editing Services library.
-
-- glupload: Implement udmabuf uploader to share buffers between software
decoders/sources and GPUs, display engines (wayland),
- and other dma devices (see above).
-
-- GstDeviceMonitor now starts device providers in a separate thread. This
avoids blocking the application when
- gst_device_monitor_start() is called, which avoids each app having to
spawn a separate thread just to start device
- monitoring. This is especially important on Windows, where device probing
can take several seconds or on macOS where device
- access can block on user input. A new GST_MESSAGE_DEVICE_MONITOR_STARTED
is posted on the bus to signal to the application
- that the device monitor has completed its async startup.
-
-- On Windows audioresample now has SIMD optimisations enabled also for the
MSVC build.
-
-- audiomixmatrix / audioconvert: sparse matrix LUT optimisation which uses
precomputed LUTs for non-zero coefficients instead
- of blindly traversing all input/output channel combinations.
-
-- As always there have been plenty of performance, latency and memory
optimisations all over the place.
-
-## Miscellaneous other changes and enhancements
-
-- The ALSA device provider now supports enumerating virtual PCM sinks
-
-- The ASIO device monitor can now detect dynamically added and removed
devices by monitoring USB events.
-
-## Tracing framework and debugging improvements
-
-- There are new hooks to track when buffers are queued or dequeued from
buffer pools in the tracing system.
-
-- The pad-push-timings tracer gained a new “write-log” action signal
-
-Dot tracer/viewer
-
-- Enhanced dots-viewer: Major refactoring with modular JavaScript
architecture, bundled dependencies (no more CDN), clickable
- pipeline references for navigation between related dot files, download SVG
button, and improved UI/UX with better text
- handling and zoom fixes.
-
-Dot file pipeline graphs
-
-- Dot file dumps of pipeline graphs now show the list of active tracers at
the bottom along with the tracer configuration.
-
-Debug logging system improvements
-
-GstLogContext to fine-tune logging output and reduce log message spam
-
-- GstLogContext is a new API to control logging behavior, particularly for
implementing “log once” functionality and periodic
- logging. This helps avoid spamming logs with repetitive messages. This
comes with a whole suite of new GST_CTX_* debug log
- macros that take a context argument in addition to the usual arguments.
-
-- A number of GST_{MEMDUMP,TRACE,LOG,DEBUG,INFO,WARNING,ERROR}_ONCE
convenience macros for logging something only once.
-
-- The source code of elements and plugins has to be updated to make use of
this new feature, so if there are any particular
- log messages in certain elements that you feel are particularly spammy,
please feel free to file an issue in GitLab so we
- can see if it would make sense to use the new API there.
-
-## Tools
-
-- gst-inspect-1.0 now shows the type of each field when it prints caps and
also pretty-prints tensor caps.
-
-## GStreamer FFmpeg wrapper
-
-- The avdec video decoders have seen many improvements and fixes for their
buffer pool and allocation query handling.
-
-## GStreamer RTSP server
-
-- rtsp-client: Add a “pre-closed” signal which provides a way for an
application to be notified when a connection is closed,
- before the client’s sessions are cleaned up. This is useful when a client
terminates its session improperly, for example, by
- sending a TCP RST.
-
-- rtsp-stream-transport: expose new “timed-out” property. Upon RTCP timeout,
rtpsession emits a signal that we can catch and
- then also expose the timed out state a property of the transport in order
for users (such as rtspclientsink) to get notified
- about it.
-
-- rtspclientsink now errors out on timeout.
-
-## VA-API integration
-
-VA plugin for Hardware-Accelerated Video Encoding and Decoding on Intel/AMD
-
-- vaav1enc: Enable intrablock copy and palette mode.
-
-- Lots of other improvements and bug fixes.
-
-GStreamer-VAAPI has been removed in favour of the va plugin
-
-- gstreamer-vaapi has been removed and is no longer updated going forward
Users who relied on gstreamer-vaapi are encouraged
- to migrate to the va plugin’s elements at the earliest opportunity. It
should still be possible to build old versions of
- gstreamer-vaapi against newer versions of GStreamer.
-
-## GStreamer Editing Services and NLE
-
-- Task Pool Context Support: GESPipeline now supports task pool context
handling for better resource management. It
- automatically creates and manages a GstSharedTaskPool with threads set to
the number of processors, also allowing
- applications to provide their own shared task pool via context negotiation.
-
-- MT-Safe Controller API: New
gst_timed_value_control_source_list_control_points() function provides
thread-safe access to
- control points, addressing use-after-free bugs in the previous API which
returned references to internal structures.
-
-- OTIO Formatter Migration: The OpenTimelineIO formatter has been moved from
embedded GLib resources to a standalone Python
- plugin located in gst-python, simplifying the implementation and avoiding
duplicated code.
-
-- Framepositioner Z-order Enhancements: The z-order property is now
controllable and exposed for manipulation, enabling
- dynamic adjustment of layer stacking order during timeline editing.
-
-- Clip Layer Movement Detection: New ges_clip_is_moving_between_layers() API
distinguishes actual layer moves from other
- operations like split/ungroup, with separate flags for track element
freezing and layer movement.
-
-- GES Error Domain: Added ges_error_quark() function for proper GError
domain support, enabling automatic ErrorDomain
- implementation generation in language bindings.
-
-- Timeline Error Reporting: Added GError parameter to
ges_base_bin_set_timeline() for proper error reporting when timeline
- setup fails.
-
-- Various bug fixes for memory leaks, frame position calculations with
non-square pixel aspect ratios, and control binding
- handling.
-
-GStreamer validate
-
-- New check-last-frame-qrcode action type: New action type (from the Rust
validate plugin) to validate QR code content in
- video frames. Supports exact string matching for single or multiple QR
codes, and JSON field validation.
-
-- Override Severity Levels: New overrides parameter in the meta action type
allows changing issue severity levels during test
- execution. Tests can now pass when encountering known issues by
downgrading severity from critical to warning/issue/ignore.
-
-- Enhanced dots-viewer (see dots-viewer section above)
-
-- SSIM Validation Improvements: Changed validation to check all images
before reporting errors instead of stopping at the
- first error.
-
-- Reverse Playback Validation: Changed segment.time mismatch from critical
to warning for reverse playback scenarios,
- acknowledging the additional complexity demuxers face during reverse
playback.
-
-- Launcher Improvements: Log files for passing tests are now removed by
default to reduce storage usage (with option to keep
- them), and debug log colors are now supported when redirected to files.
-
-- Python 3.14 Compatibility: Fixed file:/// URI generation for Python 3.14
with proper RFC 8089 compliance.
-
-- Various bug fixes for scenario handling, memory leaks, and improved
backward compatibility with GLib 2.64.
-
-## GStreamer Python Bindings
-
-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.
-
-- More pythonic API for analytics
-
-- Type annotations have been updated in PyGObject-stubs.
-
-- Writability of Gst.Structure, Gst.Caps and other objects has been improved.
-
- - caps.writable_structure() now returns a ContextManager inside of which
the returned Gst.Structure can be modified.
- - obj.make_writable() makes any MiniObject writable.
- - Pad probe callbacks now has info.writable_object() and
info.set_object() to modify objects inside the callback.
-
-## GStreamer C# Bindings
-
-- The C# bindings have been updated for the latest GStreamer 1.28 APIs.
-
-## GStreamer Rust Bindings and Rust Plugins
-
-The GStreamer Rust bindings and plugins are released separately with a
different release cadence that’s tied to the gtk-rs
-release cycle.
-
-The latest release of the bindings (0.24) has already been updated for the new
GStreamer 1.28 APIs, and works with any GStreamer
-version starting from 1.14.
-
-gst-plugins-rs, the module containing GStreamer plugins written in Rust, has
also seen lots of activity with many new elements
-and plugins.
-
-The GStreamer 1.28 binaries will be tracking the main branch of gst-plugins-rs
for starters and then track the 0.15 branch once
-that has been released (around the end of February 2026). After that, fixes
from newer versions will be backported as needed
-into the new 0.15 branch for future 1.28.x bugfix releases.
-
-Rust plugins can be used from any programming language. To applications, they
look just like a plugin written in C or C++.
-
-### New Rust elements
-
-- New icecastsink element with AAC support that is similar in functionality
to the existing shout2send element but also
- supports AAC, which upstream libshout is not planning to support.
-
-- New audio source separation element based on demucs (see above).
-
-- New Deepgram speech-to-text transcription plugin, ElevenLabs voice cloning
element and textaccumulate element. See Speech to
- Text, Translation and Speech Synthesis section above.
-
-- New analytics combiner and splitter elements for batch metas (see above).
-
-- New mpa robust RTP depayloader, L8/L16/L24 raw audio payloaders and
depayloaders and SMPTE ST291 ancillary data payloader
- and depayloader.
-
-- New GIF decoder element that supports looping.
-
-- New ST-2038 ancillary data combiner and extractor elements (see above)
-
-- Added a burn-based YOLOX inference element and a YOLOX tensor decoder
-
-- s302mparse: Add new S302M audio parser
-
-- New Rust validate plugin with a check-last-frame-qrcode action.
-
-For a full list of changes in the Rust plugins see the gst-plugins-rs
ChangeLog between versions 0.14 (shipped with GStreamer
-1.26) and current main (soon 0.15) branch (shipped with GStreamer 1.28).
-
-Note that at the time of GStreamer 1.28.0 gst-plugins-rs 0.15 was not released
yet and the git main branch was included instead
-(see above).
-
-## Build and Dependencies
-
-- Meson >= 1.4 is now required for all modules
-
-- liborc >= 0.4.42 is strongly recommended
-
-- libnice >= 0.1.23 is now required for the WebRTC library.
-
-- The closedcaption plugin in gst-plugins-bad no longer depends on
pangocairo after removal of the cc708overlay element (see
- above).
-
-- Please also note plugin removals and deprecations.
-
-Monorepo build
-
-- Updated wraps, incl. glib: cairo, directxmath, expat, fdk-aac, ffmpeg,
flac, freetype2, gdk-pixbuf, gtest, harfbuzz,
- json-glib, lame, libjpeg-turbo, libnice, libopenjp2, libpng, libsrtp2,
libxml2, nghttp2, ogg, pango, pcre2, pygobject,
- soundtoch, sqlite3, wayland-protocols, zlib.
-
-- Added wraps: librsvg, svtjpegxs
-
-Development environment
-
-- 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 (FFmpeg 8.0 is pending)
-
-- 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
-
-- Overhaul hw-accelerated video codecs detection:
-
- - Android 10 (API 29) added support for isHardwareAccelerated() to
MediaCodecInfo to detect whether a particular
- MediaCodec is backed by hardware or not. We can now use that to ensure
that the video hw-codec is rank PRIMARY+1 on
- Android, since using a software codec for video is simply not feasible
most of the time.
-
- - If we’re not able to detect isHardwareAccelerated(), perhaps because
the Android API version is too old, we try to use
- the codec name as a fallback and also rank as PRIMARY+1 the
c2.android, c2.exynos and c2.amlogic audio codecs alongside
- OMX.google, because they are known-good.
-
-### Apple macOS and iOS
-
-- VP9 and AV1 hardware-accelerated video decoding support
-
-- Support for 10-bit HEVC encoding
-
-- Implement keyboard, mouse, and scroll wheel navigation event handling for
the OpenGL Cocoa backend.
-
-### Windows
-
-#### GStreamer Direct3D12 integration
-
-- New elements:
-
- - d3d12interlace: A Direct3D12 based interlacing element
- - d3d12overlaycompositor: A Direct3D12-based overlay composing element
- - d3d12fisheyedewarp: A Direct3D12-based fisheye dewarping element
- - d3d12remap: A Direct3D12-based UV coordinate remapping element
-
-- Upload/download optimisations via a staging memory implementation
-
-- d3d12swapchainsink improvements:
-
- - added a “last-rendered-sample” action signal to retrieve the last
rendered frame
- - added “uv-remap” and “redraw” action signals
-
-#### Windows inter process communication
-
-- The Windows IPC plugin gained support for passing generic data in addition
to raw audio/video, and various new properties.
- It also serialises metas now where that is supported.
-
-#### Windows audio
-
-- wasapi2: add support for dynamic audio device switching, exclusive mode
and format negotiation, in addition to device
- provider improvements and latency enhancements.
-
-- Disable all audio device providers except wasapi2 by default (by setting
the others’ rank to NONE). We had too many device
- providers outputting duplicate device entries, and it wasn’t clear to
people what they should be using. After the recent
- device switching work done on WASAPI2, there is no reason to use
directsound anymore.
-
-### Cerbero
-
-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. It is also used to create
the GStreamer Python Wheels.
-
-General improvements
-
-- New features:
-
- - Support for generating Python wheels for macOS and Windows
- - These will be uploaded to PyPI, currently blocked on PyPI
- - Support for iPhone Simulator on ARM64 macOS, via the new iOS
xcframework
- - Inno Setup is now used for Windows installers, which also bundle the
MSVC runtime
- - An installer is now shipped for Windows ARM64, built using MSVC
- - GTK4 is now shipped on macOS and Windows (MSVC and MinGW)
- - Smaller binary sizes of Rust plugins on all platforms except macOS and
iOS
- - Linux builds now integrate better with system dependencies
- - Debuginfo is now correctly shipped on Windows and macOS
-
-- API/ABI changes:
-
- - Android NDK r25 is now used, targeting API level 24 (Android 7.0)
- - Merge modules are no longer shipped for Windows
- - Windows installers are no longer MSIs
- - The legacy iOS framework with iPhone ARM64 and iPhoneSimulator x86_64
binaries is now deprecated. It will be removed in
- the next release. Please use the new iOS xcframework which supports
iPhone ARM64 and iPhoneSimulator ARM64+x86_64.
-
-- Plugins added:
-
- - pbtypes is now shipped on all platforms
- - curl is now shipped on all platforms except iOS and Android
- - lcevcdec is now shipped on all platforms except Windows ARM64 and
Windows 32-bit x86
- - svtjpegxs is now shipped on Linux and Windows, only on 64-bit
- - unixfd is now shipped on all platforms except Windows
- - mediafoundation is now shipped additionally on MinGW
- - wasapi2 is now shipped additionally on MinGW
- - New Rust plugins on all platforms except Windows ARM64:
- - analytics
- - audioparsers
- - burn
- - demucs
- - elevenlabs
- - gopbuffer
- - hlsmultivariantsink
- - icecastsink
- - mpegtslive
- - raptorq
- - speechmatics
- - streamgrouper
- - vvdec
-
-- Plugins changed:
-
- - mp4 and fmp4 plugins have been merged into isobmff
-
-- Development improvements:
-
- - Debuginfo is now correctly shipped on Windows and macOS
- - Support for iPhone Simulator on ARM64 macOS, via the new iOS
xcframework
-
-- Known issues:
-
- - cerbero: Rust plugins fail to link with Xcode 26 on macOS
- - cerbero: Rust plugins are not shipped in the Windows ARM64 installer
- - cerbero: Android devices with API level >= 30 cannot play tutorials 4
or 5 – Fix aimed for 1.28.1
- - cerbero: Missing pkg-config for macOS in the Android release
-
-## Documentation improvements
-
-- Added a Windows section to “building from source” page
-
-- New Python tutorials for dynamic pipelines and time handling
-
-- The Android tutorials were updated: provided projects were updated to
Gradle 8.11 and API level 24
-
-- Updates of the Machine Learning and Analytics design documentation and the
GstMeta design docs
-
-## Possibly Breaking Changes
-
-- The MXF muxer and demuxer used to have direct support for standalone
closed caption streams (closedcaption/x-cea-708) as
- ancillary data, but that was removed in favour of more generic ST 2038
ancillary metadata which is a better fit for how the
- data is stored internally and also supports generic ancillary metadata.
Closed captions can still be stored or extracted by
- using the ST 2038 elements from the Rust plugins module. Also see the MXF
section above.
-
-- Analytics: Previously it was guaranteed that there is only ever up to one
GstTensorMeta per buffer. This is no longer true
- and code working with GstTensorMeta must be able to handle multiple
GstTensorMeta now (after this Merge Request, which was
- apparently backported into 1.26 as well).
-
-- The thread ID reported in debug logs is no longer prefixed with a 0x on
Windows, Linux and FreeBSD platforms. This change
- can potentially break log parsers. GstDebugViewer was adapted accordingly.
-
-## Known Issues
-
-- There are some open issues with the Apple hardware-accelerated AV1
decoding, which we hope will be fixed in due course.
- Please let us know if you run into them and can test patches.
-
-- Autoplugging LCEVC H.264/H.265/H.266 streams is currently disabled until
an issue with decodebin3 and non-LCEVC streams has
- been resolved. It is still possible to re-enable this locally by
overriding the rank of lcevch26*decodebin using the
- GST_PLUGIN_FEATURE_RANK environment variable.
-
-## Statistics
-
-- 3548 commits
-
-- 1765 Merge requests merged
-
-- 476 Issues closed
-
-- 190+ Contributors
-
-- more than 35% of all commits and Merge Requests were in Rust modules/code
-
-- 5430 files changed
-
-- 395856 lines added
-
-- 249844 lines deleted
-
-- 146012 lines added (net)
-
-Contributors
-
-Aaron Boxer, Abd Razak, Adrian Perez de Castro, Adrien Plazas, Albert Sjolund,
Aleix Pol, Alexander Slobodeniuk, Alicia Boya
-García, Alyssa Ross, Amotz Terem, Amy Ko, Andoni Morales Alastruey, Andrew
Yooeun Chun, Andrey Khamukhin, anonymix007, Arnout
-Engelen, Artem Martus, Arun Raghavan, Ben Butterworth, Biswapriyo Nath, Brad
Hards, Brad Reitmeyer, Branko Subasic, Camilo Celis
-Guzman, Carlos Bentzen, Carlos Falgueras García, Carlos Rafael Giani, César
Alejandro Torrealba Vázquez, Changyong Ahn, Chengfa
-Wang, Christian Gräfe, Christo Joseph, Christopher Degawa, Christoph Reiter,
Daniel Almeida, Daniel Morin, David Maseda Neira,
-David Monge, David Smitmanis, Denis Shimizu, Derek Foreman, Detlev Casanova,
Devon Sookhoo, Diego Nieto, Dominique Leroux,
-DongJoo Kim, Dongyun Seo, Doug Nazar, Edward Hervey, Ekwang Lee, eipachte, Eli
Mallon, Elliot Chen, Enock Gomes Neto, Enrique
-Ocaña González, Eric, Eva Pace, F. Duncanh, François Laignel, Gang Zhao, Glyn
Davies, Guillaume Desmottes, Gustav Fahlen,
-Haejung Hwang, Haihua Hu, Havard Graff, Hanna Weiß, He Junyan, Hou Qi, Hyunjun
Ko, Ian Napier, Inbok Kim, Jaehoon Lee, Jakub
-Adam, James Cowgill, Jan Alexander Steffens (heftig), Jan Schmidt, Jan Tojnar,
Jan Vermaete, Jaslo Ziska, Jeehyun Lee, Jeffery
-Wilson, jeongmin kwak, Jeongmin Kwak, Jerome Colle, Jiayin Zhang, Jihoon Lee,
Jochen Henneberg, Johan Sternerup, Jonathan Lui,
-Jordan Petridis, Jordan Yelloz, Jorge Zapata, Julian Bouzas, Kevin Scott,
Kevin Wolf, L. E. Segovia, Linus Svensson, Loïc Le
-Page, Manuel Torres, Marc-André Lureau, Marc Leeman, Marek Olejnik, Mark
Nauwelaerts, Marko Kohtala, Markus Hofstaetter, Mathieu
-Duponchelle, Matteo Bruni, Matthew Semeniuk, Matthew Waters, Max Goltzsche,
Mazdak Farzone, Michael Grzeschik, Michael Olbrich,
-Michiel Westerbeek, Monty C, Muhammad Azizul Hazim, Nicholas Jin, Nicolas
Dufresne, Nirbheek Chauhan, Norbert Hańderek, Ognyan
-Tonchev, Ola Fornander, Olivier Blin, Olivier Crête, Oz Donner, Pablo García,
Patricia Muscalu, Patrick Fischer, Paul Fee, Paweł
-Kotiuk, Paxton Hare, Peter Stensson, pfee, Philippe Normand, Piotr
Brzeziński, Piotr Brzeziński, Pratik Pachange, Qian Hu
-(胡骞), r4v3n6101Rafael Caricio, Raghavendra Rao, Rares Branici, Ratchanan
Srirattanamet, Razvan Grigore, Rick Ye, Rinat Zeh,
-Robert Ayrapetyan, Robert Mader, Ross Burton, Ruben Gonzalez, Ruben Sanchez,
Samuel Thibault, Sanchayan Maity, Santiago
-Carot-Nemesio, Santosh Mahto, Sebastian Dröge, Seungha Yang, Shengqi Yu (喻盛琪),
Sjoerd Simons, Slava Sokolovsky, Stefan
-Andersson, Stefan Dangl, Stéphane Cerveau, stevn, Sven Püschel, Sylvain
Garrigues, Taruntej Kanakamalla, Teus Groenewoud, Théo
-Maillart, Thibault Saunier, Tim-Philipp Müller, Tjitte de Wert, Tobias
Schlager, Tobias Koenig, Tomasz Mikolajczyk, Tulio
-Beloqui, Val Packett, Vasiliy Doylov, Víctor Manuel Jáquez Leal, Vincent Beng
Keat Cheah, Vineet Suryan, Vivia Nikolaidou,
-Vivian Lee, Vivienne Watermeier, Wilhelm Bartel, William Wedler, Wim Taymans,
Xavier Claessens, Yun Liu,
-
-… and many others who have contributed bug reports, translations, sent
suggestions or helped testing. Thank you all!
-
-Stable 1.28 branch
-
-After the 1.28.0 release there will be several 1.28.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.28.x
-bug-fix releases will be made from the git 1.28 branch, which is a stable
release series branch.
-
-1.28.1
-
-The first 1.28 bug-fix release (1.28.1) is expected to be released in February
2026.
-
-Schedule for 1.30
-
-Our next major feature release will be 1.30, and 1.29 will be the unstable
development version leading up to the stable 1.30
-release. The development of 1.29/1.30 will happen in the git main branch of
the GStreamer mono repository.
-
-The schedule for 1.30 is still to be determined, but it will likely be in
Q4/2026.
-
-1.30 will be backwards-compatible to the stable 1.28, 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 release series.
-
-## 1.27 pre-releases (superseded by 1.28)
-
-- 1.27.1 development snapshot release notes
-- 1.27.2 development snapshot release notes
-- 1.27.50 development snapshot release notes
-- 1.27.90 pre-release release notes
-
---------------------------------------------------------------------------------------------------------------------------------
-
-These release notes have been prepared by Tim-Philipp Müller with
contributions from Daniel Morin, Nirbheek Chauhan, Philippe
-Normand, Sebastian Dröge, Thibault Saunier, Víctor Manuel Jáquez Leal, and
Xavier Claessens
-
-License: CC BY-SA 4.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-rtsp-server-1.28.0/RELEASE
new/gst-rtsp-server-1.28.1/RELEASE
--- old/gst-rtsp-server-1.28.0/RELEASE 2026-01-27 18:07:29.000000000 +0100
+++ new/gst-rtsp-server-1.28.1/RELEASE 1970-01-01 01:00:00.000000000 +0100
@@ -1,104 +0,0 @@
-This is GStreamer gst-rtsp-server 1.28.0.
-
-The GStreamer team is thrilled to announce a new major feature release
-of your favourite cross-platform multimedia framework!
-
-As always, this release is again packed with new features, bug fixes and
-other improvements.
-
-The 1.28 release series adds new features on top of the 1.26 series and is
-part of the API and ABI-stable 1.x release series.
-
-Full release notes can be found at:
-
- https://gstreamer.freedesktop.org/releases/1.28/
-
-Binaries for Android, iOS, Mac OS X and Windows will usually be provided
-shortly after the release.
-
-This module will not be very useful by itself and should be used in conjunction
-with other GStreamer modules for a complete multimedia experience.
-
- - gstreamer: provides the core GStreamer libraries and some generic plugins
-
- - gst-plugins-base: a basic set of well-supported plugins and additional
- media-specific GStreamer helper libraries for audio,
- video, rtsp, rtp, tags, OpenGL, etc.
-
- - gst-plugins-good: a set of well-supported plugins under our preferred
- license
-
- - gst-plugins-ugly: a set of well-supported plugins which might pose
- problems for distributors
-
- - gst-plugins-bad: a set of plugins of varying quality that have not made
- their way into one of core/base/good/ugly yet, for one
- reason or another. Many of these are are production quality
- elements, but may still be missing documentation or unit
- tests; others haven't passed the rigorous quality testing
- we expect yet.
-
- - gst-libav: a set of codecs plugins based on the ffmpeg library. This is
- where you can find audio and video decoders and encoders
- for a wide variety of formats including H.264, AAC, etc.
-
- - gst-rtsp-server: library to serve files or streaming pipelines via RTSP
-
- - gst-editing-services: library an plugins for non-linear editing
-
- - gst-plugins-rs: an exciting collection of well-maintained plugins written
- in the Rust programming language (usable from any language)
-
-==== Download ====
-
-You can find source releases of gstreamer in the download
-directory: https://gstreamer.freedesktop.org/src/gstreamer/
-
-The git repository and details how to clone it can be found at
-https://gitlab.freedesktop.org/gstreamer/gstreamer/
-
-==== Homepage ====
-
-The project's website is https://gstreamer.freedesktop.org/
-
-==== Support and Bugs ====
-
-We track bugs and feature requests in GitLab:
-
- https://gitlab.freedesktop.org/gstreamer/gstreamer/
-
-Please submit patches via GitLab as well, in form of Merge Requests. See
-
- https://gstreamer.freedesktop.org/documentation/contribute/
-
-for more details.
-
-For help and support, please head over to our Discourse forum at
-
- https://discourse.gstreamer.org/
-
-or pop into one of our Matrix chat rooms, see
-
- https://discourse.gstreamer.org/t/new-gstreamer-matrix-chat-space/675
-
-for more details.
-
-Please do not submit support requests in GitLab, we only use it for
-bug tracking and merge requests review. Use the Discourse forum instead.
-
-==== Developers ====
-
-The GStreamer source code repository can be found on GitLab on freedesktop.org:
-
- https://gitlab.freedesktop.org/gstreamer/gstreamer/
-
-and can also be cloned from there and this is also where you can submit
-Merge Requests or file issues for bugs or feature requests.
-
-Interested developers of the core library, plugins, and applications should
-join us on Matrix for chat and the Discourse forum for announcements, help
-and discussions.
-
-There is also a gstreamer-devel mailing list, but Discourse is preferred:
-
- https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-rtsp-server-1.28.0/gst/rtsp-sink/gstrtspclientsink.c
new/gst-rtsp-server-1.28.1/gst/rtsp-sink/gstrtspclientsink.c
--- old/gst-rtsp-server-1.28.0/gst/rtsp-sink/gstrtspclientsink.c
2026-01-27 18:07:29.000000000 +0100
+++ new/gst-rtsp-server-1.28.1/gst/rtsp-sink/gstrtspclientsink.c
2026-02-26 03:09:39.000000000 +0100
@@ -3998,14 +3998,8 @@
GST_DEBUG_OBJECT (sink, "Transport %p timed out notify: %d", transport,
timed_out);
-
- if (timed_out) {
- GST_ELEMENT_ERROR (sink, RESOURCE, WRITE, (NULL),
- ("stream transport timed out"));
- }
}
-
static GstRTSPResult
gst_rtsp_client_sink_setup_streams (GstRTSPClientSink * sink, gboolean async)
{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-rtsp-server-1.28.0/gst-rtsp-server.doap
new/gst-rtsp-server-1.28.1/gst-rtsp-server.doap
--- old/gst-rtsp-server-1.28.0/gst-rtsp-server.doap 2026-01-27
18:07:29.000000000 +0100
+++ new/gst-rtsp-server-1.28.1/gst-rtsp-server.doap 2026-02-26
03:09:39.000000000 +0100
@@ -32,6 +32,16 @@
<release>
<Version>
+ <revision>1.28.1</revision>
+ <branch>1.28</branch>
+ <name></name>
+ <created>2026-02-26</created>
+ <file-release
rdf:resource="https://gstreamer.freedesktop.org/src/gst-rtsp-server/gst-rtsp-server-1.28.1.tar.xz"
/>
+ </Version>
+ </release>
+
+ <release>
+ <Version>
<revision>1.28.0</revision>
<branch>main</branch>
<name></name>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-rtsp-server-1.28.0/meson.build
new/gst-rtsp-server-1.28.1/meson.build
--- old/gst-rtsp-server-1.28.0/meson.build 2026-01-27 18:07:29.000000000
+0100
+++ new/gst-rtsp-server-1.28.1/meson.build 2026-02-26 03:09:39.000000000
+0100
@@ -1,5 +1,5 @@
project('gst-rtsp-server', 'c',
- version : '1.28.0',
+ version : '1.28.1',
meson_version : '>= 1.4',
default_options : ['warning_level=1', 'buildtype=debugoptimized'])
@@ -231,6 +231,11 @@
meson.add_dist_script('scripts/gen-changelog.py', meson.project_name(),
'1.26.0', meson.project_version())
+# dist common files from monorepo root
+if not meson.is_subproject()
+ meson.add_dist_script('scripts/dist-common-files.py',
meson.project_version())
+endif
+
plugin_names = []
gst_plugins = []
foreach plugin: plugins
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-rtsp-server-1.28.0/scripts/dist-common-files.py
new/gst-rtsp-server-1.28.1/scripts/dist-common-files.py
--- old/gst-rtsp-server-1.28.0/scripts/dist-common-files.py 1970-01-01
01:00:00.000000000 +0100
+++ new/gst-rtsp-server-1.28.1/scripts/dist-common-files.py 2026-02-26
03:09:39.000000000 +0100
@@ -0,0 +1,73 @@
+#!/usr/bin/env python3
+#
+# Copyright (C) 2023-2026 Tim-Philipp Müller <tim centricular net>
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Library General Public
+# License as published by the Free Software Foundation; either
+# version 2 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+#
+# You should have received a copy of the GNU Library General Public
+# License along with this library; if not, write to the
+# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+
+import os
+import subprocess
+import shutil
+import tempfile
+import sys
+
+if __name__ == "__main__":
+ dist_root = os.environ['MESON_DIST_ROOT']
+ build_root = os.environ['MESON_BUILD_ROOT']
+ source_root = os.environ['MESON_SOURCE_ROOT']
+ project_version = sys.argv[1]
+ pwd = os.environ['PWD']
+ tmpdir = tempfile.gettempdir()
+
+ ver_array = project_version.split('.')
+ major_minor = '{}.{}'.format(ver_array[0], ver_array[1])
+
+ module = os.path.basename(os.path.normpath(source_root))
+
+ print('Copying README.md into dist staging directory ..')
+ readme_src = os.path.join(source_root, '..', '..', 'README.md')
+ shutil.copy2(readme_src, dist_root)
+
+ # Release notes (instead of NEWS) - could also write it out as NEWS.md
+ print('Copying release notes into dist staging directory ..')
+ relnotes_src = os.path.join(source_root, '..', '..', 'release-notes',
major_minor, f'release-notes-{major_minor}.md')
+ with open(relnotes_src, 'r') as f:
+ lines = f.readlines()
+ if not f'### {project_version}\n' in lines:
+ sys.exit(f'Update {relnotes_src} first, must contain a section for
{project_version}')
+ if not project_version.endswith('.0'):
+ found = False
+ for line in lines:
+ if line.startswith('The latest') and project_version in line:
+ found = True
+ if not found:
+ sys.exit(f'Update {relnotes_src} first, header should say latest
version is {project_version}.')
+ shutil.copy2(relnotes_src, dist_root)
+
+ # RELEASE
+ print('Copying RELEASE into dist staging directory ..')
+ rel_src = os.path.join(source_root, '..', '..', 'release-notes',
major_minor, f'RELEASE-{major_minor}.template')
+ with open(rel_src, 'r') as f:
+ lines = f.readlines()
+
+ assert (lines[0].startswith('This is GStreamer'))
+
+ if module == 'gstreamer':
+ lines[0] = f'This is GStreamer core {project_version}\n'
+ else:
+ lines[0] = f'This is GStreamer {module} {project_version}\n'
+
+ with open(os.path.join(dist_root, 'RELEASE'), 'w') as f:
+ f.writelines(lines)
++++++ gst-rtsp-server.obsinfo ++++++
--- /var/tmp/diff_new_pack.oHac6d/_old 2026-03-05 17:17:36.560765043 +0100
+++ /var/tmp/diff_new_pack.oHac6d/_new 2026-03-05 17:17:36.568765375 +0100
@@ -1,5 +1,5 @@
name: gst-rtsp-server
-version: 1.28.0
-mtime: 1769533649
-commit: 9058212f43074ef7df229e73cea135c4ea96e0d6
+version: 1.28.1
+mtime: 1772071779
+commit: dcb37e20147e3b59344bab1e1cbb57e908cc6b92