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
 

Reply via email to