Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package gstreamer-plugins-base for
openSUSE:Factory checked in at 2025-09-17 16:43:13
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gstreamer-plugins-base (Old)
and /work/SRC/openSUSE:Factory/.gstreamer-plugins-base.new.27445 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gstreamer-plugins-base"
Wed Sep 17 16:43:13 2025 rev:122 rq:1305239 version:1.26.6
Changes:
--------
---
/work/SRC/openSUSE:Factory/gstreamer-plugins-base/gstreamer-plugins-base.changes
2025-08-13 16:29:00.340640916 +0200
+++
/work/SRC/openSUSE:Factory/.gstreamer-plugins-base.new.27445/gstreamer-plugins-base.changes
2025-09-17 16:43:20.088595056 +0200
@@ -1,0 +2,17 @@
+Mon Sep 15 15:33:13 UTC 2025 - Bjørn Lie <[email protected]>
+
+- Update to version 1.26.6:
+ + decodebin3: Update stream tags
+ + rtpbasedepayload: Avoid potential use-after free
+ + rtspconnection: Add get_url and get_ip return value annotation
+ + gst_rtsp_connection_get_url return value transfer annotation
+ missing
+ + videometa: Fix valgrind warning when deserializing video meta
+ + videorate: don't hold the reference to the buffer in drop-only
+ mode
+ + gst-device-monitor-1.0: Fix device-path regression on Windows
+ + gst-device-monitor-1.0: Add quoting for powershell and cmd
+ + Monorepo: opengl, vorbis, plugins require explicit enablement
+ now for a build using the Meson subproject fallback
+
+-------------------------------------------------------------------
Old:
----
gst-plugins-base-1.26.5.obscpio
New:
----
gst-plugins-base-1.26.6.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gstreamer-plugins-base.spec ++++++
--- /var/tmp/diff_new_pack.G9u3zo/_old 2025-09-17 16:43:22.912714371 +0200
+++ /var/tmp/diff_new_pack.G9u3zo/_new 2025-09-17 16:43:22.928715047 +0200
@@ -20,7 +20,7 @@
%define gst_branch 1.0
%define gstreamer_req_version %(echo %{version} | sed -e "s/+.*//")
Name: gstreamer-plugins-base
-Version: 1.26.5
+Version: 1.26.6
Release: 0
Summary: GStreamer Streaming-Media Framework Plug-Ins
License: GPL-2.0-or-later AND LGPL-2.1-or-later
++++++ _service ++++++
--- /var/tmp/diff_new_pack.G9u3zo/_old 2025-09-17 16:43:23.348732792 +0200
+++ /var/tmp/diff_new_pack.G9u3zo/_new 2025-09-17 16:43:23.396734820 +0200
@@ -5,7 +5,7 @@
<param
name="url">https://gitlab.freedesktop.org/gstreamer/gstreamer.git</param>
<param name="subdir">subprojects/gst-plugins-base</param>
<param name="filename">gst-plugins-base</param>
- <param name="revision">1.26.5</param>
+ <param name="revision">1.26.6</param>
<param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param>
<param name="versionrewrite-pattern">v?(.*)\+0</param>
<param name="versionrewrite-replacement">\1</param>
++++++ gst-plugins-base-1.26.5.obscpio -> gst-plugins-base-1.26.6.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-base-1.26.5/NEWS
new/gst-plugins-base-1.26.6/NEWS
--- old/gst-plugins-base-1.26.5/NEWS 2025-08-07 20:06:46.000000000 +0200
+++ new/gst-plugins-base-1.26.6/NEWS 2025-09-14 14:13:58.000000000 +0200
@@ -2,11 +2,11 @@
GStreamer 1.26.0 was originally released on 11 March 2025.
-The latest bug-fix release in the stable 1.26 series is 1.26.5 and was
released on 07 August 2025.
+The latest bug-fix release in the stable 1.26 series is 1.26.6 and was
released on 14 September 2025.
See https://gstreamer.freedesktop.org/releases/1.26/ for the latest version of
this document.
-Last updated: Thursday 07 August 2025, 18:00 UTC (log)
+Last updated: Sunday 14 September 2025, 12:00 UTC (log)
## Introduction
@@ -2198,23 +2198,40 @@
Highlighted bugfixes in 1.26.5
- audioconvert: Fix caps negotiation regression when using a mix matrix
+
- aws: Add support for brevity in awstranslate and add option to partition
speakers in the transcription output of
awstranscriber2
+
- speechmatics speech-to-text: Expose mask-profanities property
+
- cea708mux: Add support for discarding select services on each input
+
- cea608overlay, cea708overlay: Accept GPU memory buffers if downstream
supports the overlay composition meta
+
- d3d12screencapture source element and device provider fixes
+
- decodebin3: Don’t error on an incoming ONVIF metadata stream
+
- uridecodebin3: Fix potential crash when adding URIs to messages, e.g. if
no decoder is available
+
- v4l2: Fix memory leak for dynamic resolution change
+
- VA encoder fixes
+
- videorate, imagefreeze: Add support for JPEG XS
+
- Vulkan integration fixes
+
- wasapi2 audio device monitor improvements
+
- webrtc: Add WHEP client signaller and add whepclientsrc element on top of
webrtcsrc using that
+
- threadshare: Many improvements and fixes to the generic threadshare and
RTP threadshare elements
+
- rtpbin2 improvements and fixes
+
- gst-device-monitor-1.0 command line tool improvements
+
- Various bug fixes, build fixes, memory leak fixes, and other stability and
reliability improvements
gstreamer
@@ -2260,33 +2277,63 @@
GStreamer Rust plugins
-- awstranscriber2,awstranslate: Handle multiple stream-start event
-- awstranslate: expose property for turning brevity on
-- awstranscriber2: add property for setting show_speaker_labels
-- cea708mux: expose “discarded-services” property on sink pads
+- Note: This list has been updated, since it originally accidentally
included some Merge Requests that only landed in the main
+ branch, not in the 0.14 branch that ships with our GStreamer 1.26.5
packages.
+
+- awstranscriber2, awstranslate: Handle multiple stream-start event
+
+- awstranslate: expose property for turning brevity on)
+
+- awstranscriber2: add property for setting show_speaker_labels)
+
+- cea708mux: expose “discarded-services” property on sink pads)
+
- ceaX08overlay: support ANY caps features, allowing e.g. memory:GLMemory if
downstream supports the overlay composition meta
+
- hlsmultivariantsink: Fix master playlist version
+
- rtprecv: Drop state lock before chaining RTCP packets from the RTP chain
function
-- rtpbin2: Add examples
+
+- Add rtpbin2 examples
+
- rtpmp4apay2: fix payload size prefix
+
- rtp: threadshare: fix some property ranges
+
- mpegtslivesrc: Remove leftover debug message
-- speechmatics: expose mask-profanities property
+
+- speechmatics: expose mask-profanities property)
+
- ts-audiotestsrc fixes
+
- threadshare: fix flush for ts-queue ts-proxy & ts-intersrc
+
- threadshare: fix regression in ts-proxysrc
+
- threadshare: improvements to some elements
-- threadshare: udp: avoid getifaddrs in android
+
+- threadshare: udp: avoid getifaddrs in android)
+
- threadshare: Enable windows Win32_Networking feature
+
- threadshare: queue & proxy: fix race condition stopping
+
- threadshare: Also enable windows Win32_Networking_WinSock feature
+
- tracers: pipeline-snapshot: reduce WebSocket connection log level
+
- tracers: queue-levels: add support for threadshare DataQueue related
elements
+
- tracers: Update to etherparse 0.19
+
- transcriberbin: Fix handling of upstream latency query
-- webrtc: android example: fix media handling initialization sequence
+
+- webrtc: android example: fix media handling initialization sequence)
+
- webrtcsink: Move videorate before videoconvert and videoscale to avoid
processing frames that would be dropped
+
- whep: add WHEP client signaller
+
- Fix various new clippy 1.89 warnings
gst-libav
@@ -2352,6 +2399,206 @@
- List of Merge Requests applied in 1.26.5
- List of Issues fixed in 1.26.5
+1.26.6
+
+The sixth 1.26 bug-fix release (1.26.6) was released on 14 September 2025.
+
+This release only contains bugfixes including some important playback fixes,
and it should be safe to update from 1.26.x.
+
+Highlighted bugfixes in 1.26.6
+
+- analytics GstTensorMeta handling changes (see note below)
+- closed caption combiner and transcriberbin stability fixes
+- decklinkvideosrc: fix unrecoverable state after failing to start streaming
because device is busy
+- decodebin3 tag handling improvements
+- fallbacksrc: Fix sources only being restarted once, as well as some
deadlocks and race conditions on shutdown
+- gtk4paintablesink: Try importing dmabufs withouth DMA_DRM caps
+- hlsdemux2: Fix parsing of byterange and init map directives
+- rtpmp4gdepay2: allow only constantduration with neither constantsize nor
sizelength set
+- spotifysrc: update to librespot 0.7 to make work after recent Spotify
changes
+- threadshare: new blocking adapter element for use in front of block
elements such as sinks that sync to the clock
+- threadshare: various other threadshare element fixes and improvements
+- v4l2: Add support for WVC1 and WMV3
+- videorate: possible performance improvements when operating in drop-only
mode
+- GstBaseParse fixes
+- Vulkan video decoder fixes
+- Fix gst-device-monitor-1.0 tool device-path regression on Windows
+- Monorepo development environment builds fewer plugins using subprojects by
default, those require explicit enablement now
+- Python bindings: Handle buffer PTS, DTS, duration, offset, and offset-end
as unsigned long long (regression fix)
+- Cerbero: Reduce recipe parallelism in various cases and dump cerbero and
recipe versions into datadir during packaging
+- Various bug fixes, build fixes, memory leak fixes, and other stability and
reliability improvements
+
+Possibly breaking behavioural changes
+
+- 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).
+
+gstreamer
+
+- baseparse: Try harder to fixate caps based on upstream in default
negotiation
+- gst-discoverer reports 1x1 dimensions for “valid” MP4 files
+- baseparse: don’t clear most sticky events after a FLUSH_STOP event
+- gstreamer: Disable miniobject inline functions for gobject-introspection
for non-subprojects too
+- gstreamer: Make sure to zero-initialize the GValue before
G_VALUE_COLLECT_INIT
+- ptp: Fix a new Rust 1.89 compiler warning on Windows
+- ptp: Fix new compiler warning with Rust 1.89
+- Segmentation fault when compiled with “-ftrivial-auto-var-init=pattern”.
Use of unitialized GValue.
+
+gst-plugins-base
+
+- decodebin3: Update stream tags
+- rtpbasedepayload: Avoid potential use-after free
+- rtspconnection: Add get_url and get_ip return value annotation
+- gst_rtsp_connection_get_url return value transfer annotation missing
+- videometa: Fix valgrind warning when deserializing video meta
+- videorate: don’t hold the reference to the buffer in drop-only mode
+- gst-device-monitor-1.0: Fix device-path regression on Windows
+- gst-device-monitor-1.0: Add quoting for powershell and cmd
+- Monorepo: opengl, vorbis, plugins require explicit enablement now for a
build using the Meson subproject fallback
+
+gst-plugins-good
+
+- adaptivedemux2: fix crash due to log
+- adaptivedemux2: Crash in logging when “Dropping EOS before next period”
+- hlsdemux2: Fix parsing of byterange and init map directives
+- mpg123audiodec: Always break the decoding loop and relay downstream flow
errors upstream
+- v4l2: Add support for WVC1 and WMV3
+- Monorepo: dv plugin requires explicit enablement now for a build using the
Meson subproject fallback
+
+gst-plugins-bad
+
+- analytics: always add GstTensorMeta
+- cccombiner: Crash fixes
+- curlsmtpsink: adapt to date formatting issue
+- decklinkvideosrc: fix decklinkvideosrc becomes unrecoverable if it fails
to start streaming
+- decklinkvideosrc gets into unrecoverable state if device is busy
+- dwrite: Fix D3D12 critical warning
+- hlsdemux: Fix parsing of byterange and init map directives
+- mpegtsmux: Caps event fails with stream type change error
+- vulkanh24xdec: couple of fixes
+- vulkanh26xdec: fix discont state handling
+- waylandsink: add some error handler for event dispatch
+- zbar: tests: Handle symbol-bytes as not null-terminated
+- Monorepo: avtp, codec2json, iqa, microdns, openjpeg, qroverlay,
soundtouch, tinyalsa plugins require explicit enablement now
+ for a build using the Meson subproject fallback
+
+gst-plugins-ugly
+
+- No changes
+
+GStreamer Rust plugins
+
+- analyticscombiner: Use NULL caps instead of EMPTY caps in the array for
streams with no caps
+- aws: Ensure task stopping on paused-to-ready state change
+- fallbacksrc: Don’t panic during retries if the element was shut down in
parallel
+- fallbacksrc: Don’t restart source if the element is just being shut down
+- fallbacksrc: Fix some custom source deadlocks
+- fallbacksrc: Fix sources only being restarted once
+- gtk4: Try importing dmabufs withouth DMA_DRM caps
+- inter: Give the appsrc/appsink a name that has the parent element as prefix
+- mp4: Skip tests using x264enc if it does not exist
+- rtpgccbwe: avoid clamp() panic when min_bitrate > max_bitrate
+- rtpmp4gdepay2: allow only constantduration with neither constantsize nor
sizelength set
+- rtprecv: fix race condition on first buffer
+- speechmatics: Specify rustls as an explicit dependency
+- spotify: update to librespot 0.7
+- threadshare: add a blocking adapter element
+- threadshare: always use block_on_or_add_subtask
+- threadshare: audiotestsrc: fix setting samples-per-buffer…
+- threadshare: blocking_adapter: fix Since marker in docs
+- threadshare: fix resources not available when preparing asynchronously
+- threadshare: fix ts-inter test one_to_one_up_first
+- threadshare: have Task log its obj
+- threadshare: intersink: return from blocking tasks when stopping
+- threadshare: inter: update doc example
+- threadshare: runtime/pad: lower log level pushing Buffer to flushing pad
+- threadshare: separate blocking & throttling schedulers
+- threadshare: update examples
+- threadshare: Update to getifaddrs 0.5
+- threadshare: Fix macOS build post getifaddrs 0.5 update
+- threadshare: Bump up getiffaddrs to 0.1.5 and revert “udp: avoid
getifaddrs in android”
+- threadshare: Reapply “udp: avoid getifaddrs in android”
+- transcriberbin: Fix some deadlocks
+- Update dependencies
+- webrtc: Migrate to warp 0.4 and switch to tokio-rustls
+- webrtc/signalling: Fix setting of host address
+- ci: add script to check readme against plugins list
+- Fix various new clippy 1.89 warnings
+- Don’t suggest running cargo cinstall after cargo cbuild
+- meson: Isolate built plugins from cargo target directory
+
+gst-libav
+
+- No changes
+
+gst-rtsp-server
+
+- rtsp-server: tests: Switch to fixtures to ensure pool shutdown
+
+gstreamer-vaapi
+
+- No changes
+
+gstreamer-sharp
+
+- No changes
+
+gst-python
+
+- python: Handle buffer PTS/DTS/duration/offset/offset-end as unsigned long
long
+
+gst-editing-services
+
+- gstreamer: Make sure to zero-initialize the GValue before
G_VALUE_COLLECT_INIT
+- Fix various memory leaks
+
+gst-devtools, gst-validate + gst-integration-testsuites
+
+- validate: http-actions: Replace GUri with GstURI for GLib 2.64
compatibility
+- Fix memory leak and use of incorrect context
+
+gst-examples
+
+- No changes
+
+gstreamer-docs
+
+- No changes
+
+Development build environment
+
+- gobject-introspection: Fix introspection failing on Linux with subproject
GLib
+- glib: update to 2.82.5 and backport shebangs patch
+- ci: Work around PowerShell broken argument parsing
+- Disable more plugins on Windows by default by not pulling in fallback
subprojects automatically, only if plugins are enabled
+ explicitly
+- Fix build on windows due to proxy-libintl not being invoked
+- python: Reapply fixes to enable running Python bindings on Windows
+
+Cerbero build tool and packaging changes in 1.26.6
+
+- ffmpeg: enable filters needed by avvideocompare
+- cache: Fix detection of build tools prefix when using a cache
+- cerbero/package: fix –tarball –compress-method=none
+- cerbero: Reduce recipe parallelism in various cases
+- ci: remove unpacked apk dir on completion
+- package: Dump cerbero and recipe versions into datadir
+
+Contributors to 1.26.6
+
+Andrey Khamukhin, Daniel Morin, Doug Nazar, François Laignel, Guillaume
Desmottes, Hou Qi, Ian Napier, Jan Alexander Steffens
+(heftig), Jan Schmidt, Jordan Petridis, L. E. Segovia, Marko Kohtala, Matthew
Waters, Monty C, Nirbheek Chauhan, Ola Fornander,
+Olivier Crête, Piotr Brzeziński, Qian Hu (胡骞), r4v3n6101, Robert Mader, Ruben
Gonzalez, Sanchayan Maity, Sebastian Dröge,
+Seungha Yang, Taruntej Kanakamalla, Thibault Saunier, Tim-Philipp Müller,
Víctor Manuel Jáquez Leal, Vivian LEE, Vivienne
+Watermeier, Xavier Claessens,
+
+… and many others who have contributed bug reports, translations, sent
suggestions or helped testing. Thank you all!
+
+List of merge requests and issues fixed in 1.26.6
+
+- List of Merge Requests applied in 1.26.6
+- List of Issues fixed in 1.26.6
+
Schedule for 1.28
Our next major feature release will be 1.28, and 1.27 will be the unstable
development version leading up to the stable 1.28
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-base-1.26.5/RELEASE
new/gst-plugins-base-1.26.6/RELEASE
--- old/gst-plugins-base-1.26.5/RELEASE 2025-08-07 20:06:46.000000000 +0200
+++ new/gst-plugins-base-1.26.6/RELEASE 2025-09-14 14:13:58.000000000 +0200
@@ -1,4 +1,4 @@
-This is GStreamer gst-plugins-base 1.26.5.
+This is GStreamer gst-plugins-base 1.26.6.
The GStreamer team is thrilled to announce a new major feature release
of your favourite cross-platform multimedia framework!
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-base-1.26.5/ext/gl/meson.build
new/gst-plugins-base-1.26.6/ext/gl/meson.build
--- old/gst-plugins-base-1.26.5/ext/gl/meson.build 2025-08-07
20:06:46.000000000 +0200
+++ new/gst-plugins-base-1.26.6/ext/gl/meson.build 2025-09-14
14:13:58.000000000 +0200
@@ -110,7 +110,6 @@
graphene_dep = dependency('graphene-gobject-1.0',
version : '>=1.4.0',
required : get_option('gl-graphene'),
- fallback: ['graphene', 'graphene_gobject_dep'],
default_options: ['introspection=disabled', 'installed_tests=false',
'tests=false'])
if graphene_dep.found()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-base-1.26.5/ext/opus/meson.build
new/gst-plugins-base-1.26.6/ext/opus/meson.build
--- old/gst-plugins-base-1.26.5/ext/opus/meson.build 2025-08-07
20:06:46.000000000 +0200
+++ new/gst-plugins-base-1.26.6/ext/opus/meson.build 2025-09-14
14:13:58.000000000 +0200
@@ -25,7 +25,7 @@
}
opus_dep = dependency('opus', version: '>= 0.9.4', required:
get_option('opus'),
- fallback: ['opus', 'opus_dep'], default_options:
['docs=disabled'])
+ allow_fallback: true, default_options: ['docs=disabled'])
if opus_dep.found()
gstopus = library('gstopus',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-base-1.26.5/ext/pango/meson.build
new/gst-plugins-base-1.26.6/ext/pango/meson.build
--- old/gst-plugins-base-1.26.5/ext/pango/meson.build 2025-08-07
20:06:46.000000000 +0200
+++ new/gst-plugins-base-1.26.6/ext/pango/meson.build 2025-09-14
14:13:58.000000000 +0200
@@ -27,8 +27,7 @@
}
pango_dep = dependency('pangocairo', version : '>=1.22.0', required :
get_option('pango'),
- fallback: ['pango', 'libpangocairo_dep'],
- default_options: ['cairo=enabled'])
+ allow_fallback: true, default_options: ['cairo=enabled'])
if pango_dep.found()
gstpango = library('gstpango',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-base-1.26.5/ext/vorbis/meson.build
new/gst-plugins-base-1.26.6/ext/vorbis/meson.build
--- old/gst-plugins-base-1.26.5/ext/vorbis/meson.build 2025-08-07
20:06:46.000000000 +0200
+++ new/gst-plugins-base-1.26.6/ext/vorbis/meson.build 2025-09-14
14:13:58.000000000 +0200
@@ -52,12 +52,11 @@
'ivorbisdec': pathsep.join(doc_sources)
}
-vorbis_dep = dependency('vorbis', version : '>= 1.3.1', allow_fallback: true,
- include_type: 'system', required :
get_option('vorbis'))
-vorbisenc_dep = dependency('vorbisenc', version : '>= 1.3.1', allow_fallback:
true,
- include_type: 'system', required :
get_option('vorbis'))
-vorbisidec_dep = dependency('vorbisidec', allow_fallback: true,
- include_type: 'system', required :
get_option('tremor'))
+vorbis_dep = dependency('vorbis', version : '>= 1.3.1', include_type: 'system',
+ required : get_option('vorbis'))
+vorbisenc_dep = dependency('vorbisenc', version : '>= 1.3.1', include_type:
'system',
+ required : get_option('vorbis'))
+vorbisidec_dep = dependency('vorbisidec', include_type: 'system', required :
get_option('tremor'))
if vorbis_dep.found()
vorbis_deps = [vorbis_dep]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-base-1.26.5/gst/playback/gstdecodebin3.c
new/gst-plugins-base-1.26.6/gst/playback/gstdecodebin3.c
--- old/gst-plugins-base-1.26.5/gst/playback/gstdecodebin3.c 2025-08-07
20:06:46.000000000 +0200
+++ new/gst-plugins-base-1.26.6/gst/playback/gstdecodebin3.c 2025-09-14
14:13:58.000000000 +0200
@@ -1014,6 +1014,16 @@
gst_stream_set_caps (input->active_stream, caps);
}
break;
+ case GST_EVENT_TAG:
+ {
+ GstTagList *tags = NULL;
+ gst_event_parse_tag (ev, &tags);
+ GST_DEBUG_OBJECT (pad, "tags %" GST_PTR_FORMAT, tags);
+ if (tags && gst_tag_list_get_scope (tags) == GST_TAG_SCOPE_STREAM &&
+ input->active_stream)
+ gst_stream_set_tags (input->active_stream, tags);
+ }
+ break;
case GST_EVENT_EOS:
{
GST_DEBUG_OBJECT (pad, "Marking input as EOS");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-base-1.26.5/gst/videorate/gstvideorate.c
new/gst-plugins-base-1.26.6/gst/videorate/gstvideorate.c
--- old/gst-plugins-base-1.26.5/gst/videorate/gstvideorate.c 2025-08-07
20:06:46.000000000 +0200
+++ new/gst-plugins-base-1.26.6/gst/videorate/gstvideorate.c 2025-09-14
14:13:58.000000000 +0200
@@ -765,6 +765,12 @@
/* We do not need to update time in VFR (variable frame rate) mode */
if (!videorate->drop_only) {
GST_BUFFER_PTS (outbuf) = push_ts;
+ } else {
+ /* In drop-only mode, we want GstBaseTransform to push the buffer.
+ * This avoids storing extra reference to the buffer. */
+ gst_buffer_unref (outbuf);
+
+ return res;
}
GST_LOG_OBJECT (videorate,
@@ -1819,17 +1825,8 @@
if (videorate->drop_only) {
if ((videorate->segment.rate > 0.0 && in_ts >= videorate->next_ts) ||
(videorate->segment.rate < 0.0 && in_ts <= videorate->next_ts)) {
- GstFlowReturn r;
-
- /* The buffer received from basetransform is guaranteed to be writable.
- * It just needs to be reffed so the buffer won't be consumed once
pushed and
- * GstBaseTransform can get its reference back. */
- if ((r = gst_video_rate_push_buffer (videorate,
- gst_buffer_ref (buffer), FALSE,
- GST_CLOCK_TIME_NONE, FALSE)) != GST_FLOW_OK) {
- res = r;
- goto done;
- }
+ res = gst_video_rate_push_buffer (videorate,
+ gst_buffer_ref (buffer), FALSE, GST_CLOCK_TIME_NONE, FALSE);
} else {
videorate->drop++;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-base-1.26.5/gst-libs/gst/rtp/gstrtpbasedepayload.c
new/gst-plugins-base-1.26.6/gst-libs/gst/rtp/gstrtpbasedepayload.c
--- old/gst-plugins-base-1.26.5/gst-libs/gst/rtp/gstrtpbasedepayload.c
2025-08-07 20:06:46.000000000 +0200
+++ new/gst-plugins-base-1.26.6/gst-libs/gst/rtp/gstrtpbasedepayload.c
2025-09-14 14:13:58.000000000 +0200
@@ -498,8 +498,7 @@
g_ptr_array_unref (rtpbasedepayload->priv->header_exts);
gst_clear_buffer_list (&rtpbasedepayload->priv->hdrext_buffers);
- if (priv->hdrext_delayed)
- gst_buffer_unref (priv->hdrext_delayed);
+ gst_clear_buffer (&priv->hdrext_delayed);
G_OBJECT_CLASS (parent_class)->finalize (object);
}
@@ -1759,8 +1758,7 @@
priv->discont = FALSE;
priv->segment_seqnum = GST_SEQNUM_INVALID;
priv->hdrext_seen = FALSE;
- if (priv->hdrext_delayed)
- gst_buffer_unref (priv->hdrext_delayed);
+ gst_clear_buffer (&priv->hdrext_delayed);
gst_rtp_base_depayload_reset_hdrext_buffers (filter);
break;
case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-base-1.26.5/gst-libs/gst/rtsp/gstrtspconnection.c
new/gst-plugins-base-1.26.6/gst-libs/gst/rtsp/gstrtspconnection.c
--- old/gst-plugins-base-1.26.5/gst-libs/gst/rtsp/gstrtspconnection.c
2025-08-07 20:06:46.000000000 +0200
+++ new/gst-plugins-base-1.26.6/gst-libs/gst/rtsp/gstrtspconnection.c
2025-09-14 14:13:58.000000000 +0200
@@ -3594,7 +3594,7 @@
*
* Retrieve the URL of the other end of @conn.
*
- * Returns: The URL. This value remains valid until the
+ * Returns: (transfer none): The URL. This value remains valid until the
* connection is freed.
*/
GstRTSPUrl *
@@ -3611,8 +3611,8 @@
*
* Retrieve the IP address of the other end of @conn.
*
- * Returns: The IP address as a string. this value remains valid until the
- * connection is closed.
+ * Returns: (nullable): The IP address as a string.
+ * This value remains valid until the connection is closed.
*/
const gchar *
gst_rtsp_connection_get_ip (const GstRTSPConnection * conn)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-base-1.26.5/gst-libs/gst/video/gstvideometa.c
new/gst-plugins-base-1.26.6/gst-libs/gst/video/gstvideometa.c
--- old/gst-plugins-base-1.26.5/gst-libs/gst/video/gstvideometa.c
2025-08-07 20:06:46.000000000 +0200
+++ new/gst-plugins-base-1.26.6/gst-libs/gst/video/gstvideometa.c
2025-09-14 14:13:58.000000000 +0200
@@ -265,6 +265,8 @@
if (version != 0)
return NULL;
+ gst_video_alignment_reset (&align);
+
GstByteReader br;
gboolean success = TRUE;
gst_byte_reader_init (&br, data, size);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-base-1.26.5/gst-plugins-base.doap
new/gst-plugins-base-1.26.6/gst-plugins-base.doap
--- old/gst-plugins-base-1.26.5/gst-plugins-base.doap 2025-08-07
20:06:46.000000000 +0200
+++ new/gst-plugins-base-1.26.6/gst-plugins-base.doap 2025-09-14
14:13:58.000000000 +0200
@@ -36,6 +36,16 @@
<release>
<Version>
+ <revision>1.26.6</revision>
+ <branch>1.26</branch>
+ <name></name>
+ <created>2025-09-14</created>
+ <file-release
rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-1.26.6.tar.xz"
/>
+ </Version>
+ </release>
+
+ <release>
+ <Version>
<revision>1.26.5</revision>
<branch>1.26</branch>
<name></name>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-base-1.26.5/meson.build
new/gst-plugins-base-1.26.6/meson.build
--- old/gst-plugins-base-1.26.5/meson.build 2025-08-07 20:06:46.000000000
+0200
+++ new/gst-plugins-base-1.26.6/meson.build 2025-09-14 14:13:58.000000000
+0200
@@ -1,5 +1,5 @@
project('gst-plugins-base', 'c',
- version : '1.26.5',
+ version : '1.26.6',
meson_version : '>= 1.4',
default_options : [ 'warning_level=1',
'buildtype=debugoptimized' ])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-base-1.26.5/tests/check/elements/videorate.c
new/gst-plugins-base-1.26.6/tests/check/elements/videorate.c
--- old/gst-plugins-base-1.26.5/tests/check/elements/videorate.c
2025-08-07 20:06:46.000000000 +0200
+++ new/gst-plugins-base-1.26.6/tests/check/elements/videorate.c
2025-09-14 14:13:58.000000000 +0200
@@ -2162,6 +2162,60 @@
GST_END_TEST;
+static GstFlowReturn
+gst_check_drop_only_ref_chain_func (GstPad * pad, GstObject * parent,
+ GstBuffer * buffer)
+{
+ GST_DEBUG_OBJECT (pad, "chain_func: received buffer %p", buffer);
+ ASSERT_BUFFER_REFCOUNT (buffer, "buf", 1);
+ buffers = g_list_append (buffers, buffer);
+
+ g_mutex_lock (&check_mutex);
+ g_cond_signal (&check_cond);
+ g_mutex_unlock (&check_mutex);
+
+ return GST_FLOW_OK;
+}
+
+
+GST_START_TEST (test_drop_only_ref_count)
+{
+ GstElement *videorate;
+ GstBuffer *buf;
+ GstCaps *caps;
+ GstSegment segment;
+
+ /* Create a videorate that outputs at most 1 frame per second. */
+ videorate = gst_check_setup_element ("videorate");
+ mysrcpad = gst_check_setup_src_pad (videorate, &srctemplate);
+ mysinkpad = gst_check_setup_sink_pad (videorate, &sinktemplate);
+ gst_pad_set_chain_function (mysinkpad, gst_check_drop_only_ref_chain_func);
+ gst_pad_set_active (mysrcpad, TRUE);
+ gst_pad_set_active (mysinkpad, TRUE);
+
+ g_object_set (videorate, "drop-only", TRUE, NULL);
+ fail_unless (gst_element_set_state (videorate,
+ GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
+ "could not set to playing");
+ caps = gst_caps_from_string (VIDEO_CAPS_STRING);
+ gst_check_setup_events (mysrcpad, videorate, caps, GST_FORMAT_TIME);
+ gst_caps_unref (caps);
+
+ /* Segment starts at 0 */
+ gst_segment_init (&segment, GST_FORMAT_TIME);
+ fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment
(&segment)));
+
+ buf = gst_buffer_new_and_alloc (4);
+ GST_BUFFER_PTS (buf) = 0;
+ fail_unless (gst_pad_push (mysrcpad, buf) == GST_FLOW_OK);
+ fail_unless_equals_int (g_list_length (buffers), 1);
+
+ /* cleanup */
+ cleanup_videorate (videorate);
+}
+
+GST_END_TEST;
+
static Suite *
videorate_suite (void)
{
@@ -2193,6 +2247,7 @@
tcase_add_test (tc_chain, test_segment_update_same);
tcase_add_test (tc_chain, test_segment_update_average_period);
tcase_add_test (tc_chain, test_segment_update);
+ tcase_add_test (tc_chain, test_drop_only_ref_count);
return s;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-base-1.26.5/tools/gst-device-monitor.c
new/gst-plugins-base-1.26.6/tools/gst-device-monitor.c
--- old/gst-plugins-base-1.26.5/tools/gst-device-monitor.c 2025-08-07
20:06:46.000000000 +0200
+++ new/gst-plugins-base-1.26.6/tools/gst-device-monitor.c 2025-09-14
14:13:58.000000000 +0200
@@ -53,52 +53,108 @@
SHELL_POWERSHELL,
} ShellType;
-static ShellType
+static inline ShellType
get_shell_type (void)
{
+ if (g_getenv ("PROMPT") != NULL)
+ return SHELL_CMD;
if (g_getenv ("PSModulePath") != NULL)
return SHELL_POWERSHELL;
- if (g_getenv ("ComSpec") != NULL)
- return SHELL_CMD;
return SHELL_POSIX;
}
-static char *
+/*
+ * Some quoting rules here:
+ *
https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/cmd
+ *
+ * The rest has been deduced from trial-and-error, since command-line parsing
+ * is different on Windows compared to UNIX. There is no char* argument array
+ * when processes are created. There is a single argument, and the CRT splits
+ * it into an array based on its own arcane rules when running a POSIX
+ * command-line app with a `main()` instead of `WinMain()`.
+ *
+ *
https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-winmain
+ *
+ * So for arguments passed to gst-launch, we need to deal with both how cmd.exe
+ * handles quoting/escaping and also how the UCRT does argument splitting. The
+ * current algorithm is:
+ *
+ * - Everything is quoted with " except
+ * - % needs to be escaped with ^ otherwise it will undergo variable expansion
+ * - % must not be quoted with " otherwise the caret-escaping doesn't work
+ * - " needs to be escaped as "" when inside " quotes
+ * - \ needs to be escaped as \\ due to gst_value_deserialize()
+ *
+ * So for example `%PATH% bar" wdwd |` becomes `""^%"PATH"^%" bar"" wdwd |"`
+ */
+static inline char *
+cmd_quote (const char *s)
+{
+ GString *str = g_string_new (s);
+ g_string_replace (str, "\"", "\"\"", 0);
+ g_string_replace (str, "\\", "\\\\", 0);
+ str = g_string_prepend_c (str, '"');
+ str = g_string_append_c (str, '"');
+ /* Very simple and very ugly: simply terminate the " quoting when we
+ * encounter % then escape it and continue the " quoting */
+ g_string_replace (str, "%", "\"^%\"", 0);
+ return g_string_free (str, FALSE);
+}
+
+/* Verbatim quoting rules:
+ *
https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_quoting_rules
+ *
+ * On top of this, \ needs to be escaped as \\ due to gst_value_deserialize()
+ * when parsing launch-lines.
+ *
+ * The main vs WinMain issue exists here, but the quoting rules are simple
+ * enough to cover both.
+ */
+static inline char *
+powershell_quote (const char *s)
+{
+ GString *str = g_string_new (s);
+ g_string_replace (str, "'", "''", 0);
+ g_string_replace (str, "‘", "‘‘", 0);
+ g_string_replace (str, "’", "’’", 0);
+ g_string_replace (str, "\\", "\\\\", 0);
+ str = g_string_prepend_c (str, '\'');
+ str = g_string_append_c (str, '\'');
+ return g_string_free (str, FALSE);
+}
+
+static inline char *
do_shell_quote (const char *s)
{
switch (get_shell_type ()) {
case SHELL_POSIX:
return g_shell_quote (s);
case SHELL_CMD:
+ return cmd_quote (s);
case SHELL_POWERSHELL:
- /* TODO: implement some kind of quoting for cmd.exe and powershell.exe */
- return g_strdup (s);
+ return powershell_quote (s);
}
g_assert_not_reached ();
}
-static char *
+static inline char *
value_to_string (const GValue * v)
{
- const char *d, *s = NULL;
- char *ret, *ser = NULL;
+ const char *d;
+ char *ret, *s;
gboolean need_quote = FALSE;
- gboolean need_serialize = FALSE;
if (G_VALUE_HOLDS_STRING (v)) {
- s = g_value_get_string (v);
- need_serialize = !g_utf8_validate (s, -1, NULL);
+ const char *str = g_value_get_string (v);
+ if (!g_utf8_validate (str, -1, NULL)) {
+ s = gst_value_serialize (v);
+ } else {
+ s = g_strdup (str);
+ }
} else {
- need_serialize = TRUE;
+ s = gst_value_serialize (v);
}
- /* Don't mess around if the value is weird */
- if (need_serialize) {
- ser = gst_value_serialize (v);
- ret = do_shell_quote (ser);
- g_free (ser);
- return ret;
- }
d = s;
while (*++d) {
@@ -108,9 +164,12 @@
}
}
- if (need_quote)
- return do_shell_quote (s);
- return g_strdup (s);
+ if (need_quote) {
+ ret = do_shell_quote (s);
+ g_free (s);
+ return ret;
+ }
+ return s;
}
static gchar *
++++++ gst-plugins-base.obsinfo ++++++
--- /var/tmp/diff_new_pack.G9u3zo/_old 2025-09-17 16:43:25.540825405 +0200
+++ /var/tmp/diff_new_pack.G9u3zo/_new 2025-09-17 16:43:25.544825573 +0200
@@ -1,5 +1,5 @@
name: gst-plugins-base
-version: 1.26.5
-mtime: 1754590006
-commit: 82cbccedf7946a32d28a5aaec8ebbcb627770c19
+version: 1.26.6
+mtime: 1757852038
+commit: 6cbdcfaca66dd52cdc4670d6f5122c68b9161170