Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package gstreamer-plugins-ugly for 
openSUSE:Factory checked in at 2026-03-05 17:13:11
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gstreamer-plugins-ugly (Old)
 and      /work/SRC/openSUSE:Factory/.gstreamer-plugins-ugly.new.561 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gstreamer-plugins-ugly"

Thu Mar  5 17:13:11 2026 rev:108 rq:1336400 version:1.28.1

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/gstreamer-plugins-ugly/gstreamer-plugins-ugly.changes
    2026-02-12 17:26:17.372547945 +0100
+++ 
/work/SRC/openSUSE:Factory/.gstreamer-plugins-ugly.new.561/gstreamer-plugins-ugly.changes
   2026-03-05 17:14:04.015953202 +0100
@@ -1,0 +2,8 @@
+Thu Feb 26 09:04:49 UTC 2026 - Bjørn Lie <[email protected]>
+
+- Update to version 1.28.1:
+  + asfdemux: Error out on files with more than 32 streams
+  + rmdemux: Check if new video fragment overflows the fragment
+    storage before storing it
+
+-------------------------------------------------------------------

Old:
----
  gst-plugins-ugly-1.28.0.obscpio

New:
----
  gst-plugins-ugly-1.28.1.obscpio

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ gstreamer-plugins-ugly.spec ++++++
--- /var/tmp/diff_new_pack.HbqA4d/_old  2026-03-05 17:14:04.979993273 +0100
+++ /var/tmp/diff_new_pack.HbqA4d/_new  2026-03-05 17:14:04.983993439 +0100
@@ -25,7 +25,7 @@
 %define gstreamer_req_version %(echo %{version} | sed -e "s/+.*//")
 
 Name:           gstreamer-plugins-ugly
-Version:        1.28.0
+Version:        1.28.1
 Release:        0
 Summary:        GStreamer Streaming-Media Framework Plug-Ins
 License:        LGPL-2.1-or-later
@@ -120,7 +120,6 @@
 
 %files
 %license COPYING
-%doc NEWS README.md RELEASE
 %{_libdir}/gstreamer-%{gst_branch}/libgsta52dec.so
 %{_libdir}/gstreamer-%{gst_branch}/libgstasf.so
 %{_libdir}/gstreamer-%{gst_branch}/libgstcdio.so

++++++ _service ++++++
--- /var/tmp/diff_new_pack.HbqA4d/_old  2026-03-05 17:14:05.027995268 +0100
+++ /var/tmp/diff_new_pack.HbqA4d/_new  2026-03-05 17:14:05.039995767 +0100
@@ -5,7 +5,7 @@
     <param 
name="url">https://gitlab.freedesktop.org/gstreamer/gstreamer.git</param>
     <param name="subdir">subprojects/gst-plugins-ugly</param>
     <param name="filename">gst-plugins-ugly</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-plugins-ugly-1.28.0.obscpio -> gst-plugins-ugly-1.28.1.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-ugly-1.28.0/NEWS 
new/gst-plugins-ugly-1.28.1/NEWS
--- old/gst-plugins-ugly-1.28.0/NEWS    2026-01-27 18:07:29.000000000 +0100
+++ new/gst-plugins-ugly-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-plugins-ugly-1.28.0/README.md 
new/gst-plugins-ugly-1.28.1/README.md
--- old/gst-plugins-ugly-1.28.0/README.md       2026-01-27 18:07:29.000000000 
+0100
+++ new/gst-plugins-ugly-1.28.1/README.md       1970-01-01 01:00:00.000000000 
+0100
@@ -1,196 +0,0 @@
-GStreamer 1.28.x stable series
-
-WHAT IT IS
-----------
-
-This is GStreamer, a framework for streaming media.
-
-WHERE TO START
---------------
-
-We have a website at
-
-  https://gstreamer.freedesktop.org
-
-Our documentation, including tutorials, API reference and FAQ can be found at
-
-  https://gstreamer.freedesktop.org/documentation/
-
-You can ask questions on the GStreamer Discourse at
-
-  https://discourse.gstreamer.org/
-
-We track bugs, feature requests and merge requests (patches) in GitLab at
-
-  https://gitlab.freedesktop.org/gstreamer/
-
-You can join us on our Matrix room at
-
-  https://matrix.to/#/#gstreamer:gstreamer.org
-
-GStreamer 1.0 series
---------------------
-
-Starring
-
-  GSTREAMER
-
-The core around which all other modules revolve.  Base functionality and
-libraries, some essential elements, documentation, and testing.
-
-  BASE
-
-A well-groomed and well-maintained collection of GStreamer plug-ins and
-elements, spanning the range of possible types of elements one would want
-to write for GStreamer.  
-
-And introducing, for the first time ever, on the development screen ...
-
-  THE GOOD
-
- --- "Such ingratitude.  After all the times I've saved your life."
-
-A collection of plug-ins you'd want to have right next to you on the
-battlefield.  Shooting sharp and making no mistakes, these plug-ins have it
-all: good looks, good code, and good licensing.  Documented and dressed up
-in tests.  If you're looking for a role model to base your own plug-in on,
-here it is.
-
-If you find a plot hole or a badly lip-synced line of code in them,
-let us know - it is a matter of honour for us to ensure Blondie doesn't look
-like he's been walking 100 miles through the desert without water.
-
-  THE UGLY
-
-  --- "When you have to shoot, shoot.  Don't talk."
-
-There are times when the world needs a color between black and white.
-Quality code to match the good's, but two-timing, backstabbing and ready to
-sell your freedom down the river.  These plug-ins might have a patent noose
-around their neck, or a lock-up license, or any other problem that makes you
-think twice about shipping them.
-
-We don't call them ugly because we like them less.  Does a mother love her
-son less because he's not as pretty as the other ones ? No  - she commends
-him on his great personality.  These plug-ins are the life of the party.
-And we'll still step in and set them straight if you report any unacceptable
-behaviour - because there are two kinds of people in the world, my friend:
-those with a rope around their neck and the people who do the cutting.
-
-  THE BAD
-
-  --- "That an accusation?"
-
-No perfectly groomed moustache or any amount of fine clothing is going to
-cover up the truth - these plug-ins are Bad with a capital B. 
-They look fine on the outside, and might even appear to get the job done, but
-at the end of the day they're a black sheep. Without a golden-haired angel
-to watch over them, they'll probably land in an unmarked grave at the final
-showdown.
-
-Don't bug us about their quality - exercise your Free Software rights,
-patch up the offender and send us the patch on the fastest steed you can
-steal from the Confederates. Because you see, in this world, there's two
-kinds of people, my friend: those with loaded guns and those who dig.
-You dig.
-
-The Lowdown
------------
-
-  --- "I've never seen so many plug-ins wasted so badly."
-
-GStreamer Plug-ins has grown so big that it's hard to separate the wheat from
-the chaff.  Also, distributors have brought up issues about the legal status
-of some of the plug-ins we ship.  To remedy this, we've divided the previous
-set of available plug-ins into four modules:
-
-- gst-plugins-base: a small and fixed set of plug-ins, covering a wide range
-  of possible types of elements; these are continuously kept up-to-date
-  with any core changes during the development series.
-
-  - We believe distributors can safely ship these plug-ins.
-  - People writing elements should base their code on these elements.
-  - These elements come with examples, documentation, and regression tests.
-
-- gst-plugins-good: a set of plug-ins that we consider to have good quality
-  code, correct functionality, our preferred license (LGPL for the plug-in
-  code, LGPL or LGPL-compatible for the supporting library).
-
-  - We believe distributors can safely ship these plug-ins.
-  - People writing elements should base their code on these elements.
- 
-- gst-plugins-ugly: a set of plug-ins that have good quality and correct
-  functionality, but distributing them might pose problems.  The license
-  on either the plug-ins or the supporting libraries might not be how we'd
-  like. The code might be widely known to present patent problems.
-
-  - Distributors should check if they want/can ship these plug-ins.
-  - People writing elements should base their code on these elements.
-
-- gst-plugins-bad: a set of plug-ins that aren't up to par compared to the
-  rest.  They might be close to being good quality, but they're missing
-  something - be it a good code review, some documentation, a set of tests,
-  a real live maintainer, or some actual wide use.
-  If the blanks are filled in they might be upgraded to become part of
-  either gst-plugins-good or gst-plugins-ugly, depending on the other factors.
-
-  - If the plug-ins break, you can't complain - instead, you can fix the
-    problem and send us a patch, or bribe someone into fixing them for you.
-  - New contributors can start here for things to work on.
-
-PLATFORMS
----------
-
-- Linux is of course fully supported
-- FreeBSD is reported to work; other BSDs should work too; same for Solaris
-- MacOS works, binary 1.x packages can be built using the cerbero build tool
-- Windows works; binary 1.x packages can be built using the cerbero build tool
-  - MSys/MinGW builds
-  - Microsoft Visual Studio builds are also available and supported
-- Android works, binary 1.x packages can be built using the cerbero build tool
-- iOS works
-
-INSTALLING FROM PACKAGES
-------------------------
-
-You should always prefer installing from packages first.  GStreamer is
-well-maintained for a number of distributions, including Fedora, Debian,
-Ubuntu, Mandrake, Arch Linux, Gentoo, ...
-
-Only in cases where you:
-
- - want to hack on GStreamer
- - want to verify that a bug has been fixed
- - do not have a sane distribution
-
-should you choose to build from source tarballs or git.
-
-Find more information about the various packages at
-
-  https://gstreamer.freedesktop.org/download/
-
-For in-depth instructions about building GStreamer visit:
-[getting-started](https://gitlab.freedesktop.org/gstreamer/gstreamer/-/blob/main/README.md#getting-started).
-
-PLUG-IN DEPENDENCIES AND LICENSES
----------------------------------
-
-GStreamer is developed under the terms of the LGPL (see COPYING file for
-details). Some of our plug-ins however rely on libraries which are available
-under other licenses. This means that if you are distributing an application
-which has a non-GPL compatible license (for instance a closed-source
-application) with GStreamer, you have to make sure not to distribute GPL-linked
-plug-ins.
-
-When using GPL-linked plug-ins, GStreamer is for all practical reasons
-under the GPL itself.
-
-HISTORY
--------
-
-The fundamental design comes from the video pipeline at Oregon Graduate
-Institute, as well as some ideas from DirectMedia.  It's based on plug-ins that
-will provide the various codec and other functionality.  The interface
-hopefully is generic enough for various companies (ahem, Apple) to release
-binary codecs for Linux, until such time as they get a clue and release the
-source.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-ugly-1.28.0/RELEASE 
new/gst-plugins-ugly-1.28.1/RELEASE
--- old/gst-plugins-ugly-1.28.0/RELEASE 2026-01-27 18:07:29.000000000 +0100
+++ new/gst-plugins-ugly-1.28.1/RELEASE 1970-01-01 01:00:00.000000000 +0100
@@ -1,104 +0,0 @@
-This is GStreamer gst-plugins-ugly 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-plugins-ugly-1.28.0/gst/asfdemux/gstasfdemux.c 
new/gst-plugins-ugly-1.28.1/gst/asfdemux/gstasfdemux.c
--- old/gst-plugins-ugly-1.28.0/gst/asfdemux/gstasfdemux.c      2026-01-27 
18:07:29.000000000 +0100
+++ new/gst-plugins-ugly-1.28.1/gst/asfdemux/gstasfdemux.c      2026-02-26 
03:09:39.000000000 +0100
@@ -2616,6 +2616,9 @@
 {
   AsfStream *stream;
 
+  /* Checked in the callers */
+  g_assert (demux->num_streams < G_N_ELEMENTS (demux->stream));
+
   gst_pad_use_fixed_caps (src_pad);
   gst_pad_set_caps (src_pad, caps);
 
@@ -3071,6 +3074,12 @@
     case ASF_STREAM_AUDIO:{
       asf_stream_audio audio_object;
 
+      if (demux->num_streams >= G_N_ELEMENTS (demux->stream)) {
+        GST_ELEMENT_ERROR (demux, STREAM, DEMUX, (NULL),
+            ("File has too many streams"));
+        return NULL;
+      }
+
       if (!gst_asf_demux_get_stream_audio (&audio_object, &data, &size))
         goto not_enough_data;
 
@@ -3149,6 +3158,12 @@
       asf_stream_video video_object;
       guint16 vsize;
 
+      if (demux->num_streams >= G_N_ELEMENTS (demux->stream)) {
+        GST_ELEMENT_ERROR (demux, STREAM, DEMUX, (NULL),
+            ("File has too many streams"));
+        return NULL;
+      }
+
       if (!gst_asf_demux_get_stream_video (&video_object, &data, &size))
         goto not_enough_data;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-ugly-1.28.0/gst/realmedia/rmdemux.c 
new/gst-plugins-ugly-1.28.1/gst/realmedia/rmdemux.c
--- old/gst-plugins-ugly-1.28.0/gst/realmedia/rmdemux.c 2026-01-27 
18:07:29.000000000 +0100
+++ new/gst-plugins-ugly-1.28.1/gst/realmedia/rmdemux.c 2026-02-26 
03:09:39.000000000 +0100
@@ -2348,7 +2348,8 @@
     }
     GST_DEBUG_OBJECT (rmdemux, "fragment size %d", fragment_size);
 
-    if (map.size < (data - map.data) + fragment_size)
+    if (fragment_size > map.size
+        || (data - map.data) > map.size - fragment_size)
       goto not_enough_data;
 
     /* get the fragment */
@@ -2369,15 +2370,17 @@
       stream->frag_length = fragment_size;
     }
 
+    if (stream->frag_count >= MAX_FRAGS) {
+      gst_buffer_unref (fragment);
+      goto too_many_fragments;
+    }
+
     /* put fragment in adapter */
     gst_adapter_push (stream->adapter, fragment);
     stream->frag_offset[stream->frag_count] = stream->frag_current;
     stream->frag_current += fragment_size;
     stream->frag_count++;
 
-    if (stream->frag_count > MAX_FRAGS)
-      goto too_many_fragments;
-
     GST_DEBUG_OBJECT (rmdemux, "stored fragment in adapter %d/%d",
         stream->frag_current, stream->frag_length);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-ugly-1.28.0/gst-plugins-ugly.doap 
new/gst-plugins-ugly-1.28.1/gst-plugins-ugly.doap
--- old/gst-plugins-ugly-1.28.0/gst-plugins-ugly.doap   2026-01-27 
18:07:29.000000000 +0100
+++ new/gst-plugins-ugly-1.28.1/gst-plugins-ugly.doap   2026-02-26 
03:09:39.000000000 +0100
@@ -35,6 +35,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-plugins-ugly/gst-plugins-ugly-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-plugins-ugly-1.28.0/meson.build 
new/gst-plugins-ugly-1.28.1/meson.build
--- old/gst-plugins-ugly-1.28.0/meson.build     2026-01-27 18:07:29.000000000 
+0100
+++ new/gst-plugins-ugly-1.28.1/meson.build     2026-02-26 03:09:39.000000000 
+0100
@@ -1,5 +1,5 @@
 project('gst-plugins-ugly', 'c',
-  version : '1.28.0',
+  version : '1.28.1',
   meson_version : '>= 1.4',
   default_options : [ 'warning_level=1',
                       'buildtype=debugoptimized' ])
@@ -354,6 +354,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-plugins-ugly-1.28.0/scripts/dist-common-files.py 
new/gst-plugins-ugly-1.28.1/scripts/dist-common-files.py
--- old/gst-plugins-ugly-1.28.0/scripts/dist-common-files.py    1970-01-01 
01:00:00.000000000 +0100
+++ new/gst-plugins-ugly-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-plugins-ugly.obsinfo ++++++
--- /var/tmp/diff_new_pack.HbqA4d/_old  2026-03-05 17:14:05.528016051 +0100
+++ /var/tmp/diff_new_pack.HbqA4d/_new  2026-03-05 17:14:05.536016384 +0100
@@ -1,5 +1,5 @@
 name: gst-plugins-ugly
-version: 1.28.0
-mtime: 1769533649
-commit: 9058212f43074ef7df229e73cea135c4ea96e0d6
+version: 1.28.1
+mtime: 1772071779
+commit: dcb37e20147e3b59344bab1e1cbb57e908cc6b92
 

Reply via email to