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-12-10 15:29:13
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gstreamer-plugins-base (Old)
 and      /work/SRC/openSUSE:Factory/.gstreamer-plugins-base.new.1939 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gstreamer-plugins-base"

Wed Dec 10 15:29:13 2025 rev:125 rq:1321734 version:1.26.9

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/gstreamer-plugins-base/gstreamer-plugins-base.changes
    2025-11-13 17:26:00.939657302 +0100
+++ 
/work/SRC/openSUSE:Factory/.gstreamer-plugins-base.new.1939/gstreamer-plugins-base.changes
  2025-12-10 15:29:41.960138926 +0100
@@ -1,0 +2,31 @@
+Sun Dec  7 08:16:18 UTC 2025 - Bjørn Lie <[email protected]>
+
+- Update to version 1.26.9:
+  + allocators: drmdumb: Keep dmabuf mapped
+  + alsadeviceprovider: Fix device name leak
+  + audiovisualizer: Use break instead of goto for escape logic
+  + decodebin3:
+    - Clear previous collection on input
+    - Consider certain meta caps in decodebin3 as raw format to
+      avoid warnings
+  + decodebin3: Protect again NULL dereference if input slot can't
+    be mapped
+  + glbasesrc: Add unlock handling for non-negotiated cases
+  + glcolorconvert: Fix memory leak in _create_shader
+  + gldownload: Keep dmabuf mapped
+  + glfiltershader: Add missing unlock
+  + glstereosplit: Add missing unlock for exceptional case
+  + pbutils: Fix bit shifting when generate hevc mime codec string
+  + rtpbaseaudiopay: Consider RESYNC flag as discontinuity too
+  + rtpbasedepayload: Add missing unlock in error code path
+  + uridecodebin3:
+    - Add null check of play items in purge
+    - Add missing unlock
+  + urisourcebin: Fix initial values of min_byte_level and
+    min_time_level variables
+  + videoencoder: Fix warning of uninitialized buffer
+  + gst-play-1.0:
+    - Fix printing of missing plugin details
+    - Add missing unlock for invalid track type
+
+-------------------------------------------------------------------

Old:
----
  gst-plugins-base-1.26.8.obscpio

New:
----
  gst-plugins-base-1.26.9.obscpio

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

Other differences:
------------------
++++++ gstreamer-plugins-base.spec ++++++
--- /var/tmp/diff_new_pack.Ev4QqE/_old  2025-12-10 15:29:42.724171248 +0100
+++ /var/tmp/diff_new_pack.Ev4QqE/_new  2025-12-10 15:29:42.728171418 +0100
@@ -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.8
+Version:        1.26.9
 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.Ev4QqE/_old  2025-12-10 15:29:42.764172941 +0100
+++ /var/tmp/diff_new_pack.Ev4QqE/_new  2025-12-10 15:29:42.768173110 +0100
@@ -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.8</param>
+    <param name="revision">1.26.9</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.8.obscpio -> gst-plugins-base-1.26.9.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-base-1.26.8/NEWS 
new/gst-plugins-base-1.26.9/NEWS
--- old/gst-plugins-base-1.26.8/NEWS    2025-11-10 18:22:05.000000000 +0100
+++ new/gst-plugins-base-1.26.9/NEWS    2025-12-01 18:27:07.000000000 +0100
@@ -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.8 and was 
released on 10 November 2025.
+The latest bug-fix release in the stable 1.26 series is 1.26.9 and was 
released on 01 December 2025.
 
 See https://gstreamer.freedesktop.org/releases/1.26/ for the latest version of 
this document.
 
-Last updated: Monday 10 November 2025, 17:00 UTC (log)
+Last updated: Monday 01 December 2025, 17:00 UTC (log)
 
 ## Introduction
 
@@ -2940,12 +2940,192 @@
 -   List of Merge Requests applied in 1.26.8
 -   List of Issues fixed in 1.26.8
 
+1.26.9
+
+The ninth 1.26 bug-fix release (1.26.9) was released on 01 December 2025.
+
+This release only contains bugfixes and it should be safe to update from 
1.26.x.
+
+Highlighted bugfixes in 1.26.9
+
+-   playback: playbin3 and decodebin3 stability fixes
+-   Ancillary metadata handling fixes for AJA playout and Blackmagic Decklink 
capture cards
+-   HLS and DASH adaptive streaming clients stability improvements
+-   gst-play-1.0 will now print details of any missing plugins again
+-   gtk4paintablesink: Add property to fine-tune reconfiguration behaviour on 
window-resize
+-   macOS device monitoring: fix potential crash when probing for audio devices
+-   macOS video decoder stability improvements
+-   NDI source: fix audio corruption for non-interleaved audio with stride 
padding
+-   Add SMPTE ST291-1 ancillary metadata RTP payloader and depayloader
+-   Add ST-2038 metadata combiner and extractor
+-   webrtcsink: support hardware-accelerated encoders from the va VA-API plugin
+-   spotifysrc: fix the Spotify integration by using Spotify’s extended 
metadata endpoint
+-   Python bindings cross compilation fixes
+-   cerbero: add Visual Studio 2026 support, fix building on drives other than 
C:, and ship svtjpegxs plugin on Windows
+-   Various bug fixes, build fixes, memory leak fixes, and other stability and 
reliability improvements
+
+gstreamer
+
+-   info: Force comparison to same types
+-   queue: Use GST_PTR_FORMAT everywhere
+-   streamcollection: Fix race condition between disconnecting notify proxy 
and notifications
+-   value: Fix GstAllocationParams string serialisation on 32-bit architectures
+
+gst-plugins-base
+
+-   allocators: drmdumb: Keep dmabuf mapped
+-   alsadeviceprovider: Fix device name leak
+-   audiovisualizer: Use break instead of goto for escape logic
+-   decodebin3: Clear previous collection on input
+-   decodebin3: Consider certain meta caps in decodebin3 as raw format to 
avoid warnings
+-   decodebin3: Protect again NULL dereference if input slot can’t be mapped
+-   glbasesrc: Add unlock handling for non-negotiated cases
+-   glcolorconvert: Fix memory leak in _create_shader
+-   gldownload: Keep dmabuf mapped
+-   glfiltershader: Add missing unlock
+-   glstereosplit: Add missing unlock for exceptional case
+-   pbutils: Fix bit shifting when generate hevc mime codec string
+-   rtpbaseaudiopay: Consider RESYNC flag as discontinuity too
+-   rtpbasedepayload: Add missing unlock in error code path
+-   uridecodebin3: Add null check of play items in purge
+-   urisourcebin: Add missing unlock
+-   urisourcebin: Fix initial values of min_byte_level and min_time_level 
variables
+-   videoencoder: fix warning of uninitialized buffer
+
+Tools:
+
+-   gst-play-1.0: fix printing of missing plugin details
+-   gst-play-1.0: Add missing unlock for invalid track type
+
+gst-plugins-good
+
+-   adaptivedemux2: Fix a crash on rapid state changes, and startup busy 
waiting
+-   hlsdemux2: Keep streams with different names
+-   hlsdemux2: error out instead of asserting on negative stream time
+-   hlsdemux2: Not all subtitles are present in track/collection. Usage of 
FORCE EXT-X-MEDIA field
+-   osxaudio: Remove unnecessary if, add comment about GstDevice lifetime
+-   osxaudio: Various fixes, incl a potential crash when probing
+-   v4l2allocator: Add KEEP_MAPPED flag to the allocated buffers
+-   v4l2videoenc: Fix codec frame leak on error
+
+gst-plugins-bad
+
+-   Add missing G_DECLS symbols to gstvkqueue and gstvkcommandqueue
+-   ajasink, decklinkvideosrc: Fix some GstAncillaryMeta handling bugs
+-   analyticsmeta: Initialize span to avoid undefined behavior
+-   GstPlay: Fixed wrong initial position update interval configuration
+-   id3tag: Fix resource leak
+-   mpegtsmux: Avoid infinite recursion writing PCR packets
+-   mxfdemux: Fix typo on mxf_ffv1_create_caps
+-   mxfmux: Fix memset usage
+-   mpegtsmux: segfaults when bitrate is configured lower than bitrate that’s 
coming in
+-   osxaudio: Various fixes, incl a potential crash when probing
+-   scte-section: fix missing cleanup on splice component parse failure
+-   tsdemux: expose audio GstStream for DTS
+-   va, unixfdsrc: keep dmabufs mapped
+-   vkh265dec: Fix a typo
+-   vkvideo-private: Replace GstBuffer with GstMemory array for video sessions
+-   vtdec: Fix race condition in decoder draining. Fluster runs were unstable
+
+gst-plugins-ugly
+
+-   rmdemux: Remove unnecessary condition
+
+GStreamer Rust plugins
+
+-   analytics splitter/combiner: Remove the separate fields to events and 
buffer
+-   audiornnoise: copy input metadatas to ouput buffer
+-   closedcaption: cctost2038anc: Support alignment
+-   closedcaption: st2038ancdemux: Support alignment
+-   closedcaption: st2038ancmux: Support frame alignment
+-   closedcaption: st2038: Forward frame rate in caps where available
+-   closedcaption: Add ST-2038 combiner and extractor element
+-   closedcaption: st2038extractor: Some fixes
+-   closedcaption: st2038combiner: Some fixes
+-   gif: Update to gif 0.14
+-   gtk4: Add property to control reconfigure on window-resize behavior
+-   gtk4: Fix compile warning
+-   fmp4, mp4: Implement GstChildProxy for MP4Mux and FMP4Mux
+-   fmp4: Update to dash-mpd 0.19
+-   ndisrcdemux: fix audio corruption with non-interleaved stride padding
+-   net/quinn: Update web-transport-quinn and fix flaky QUIC test
+-   rtp: Add SMPTE ST291-1 (ANC) RTP payloader and depayloader
+-   spotify: bump librespot 0.8.0
+-   webrtcsink: Don’t let recalculate_latency block tokio worker thread
+-   webrtcsink: support va encoders
+-   Update dependencies
+-   meson: fix build when GTK is not present
+
+gst-libav
+
+-   No changes
+
+gst-rtsp-server
+
+-   No changes
+
+gstreamer-vaapi
+
+-   No changes
+
+gstreamer-sharp
+
+-   No changes
+
+gst-python
+
+-   gst-python: fix cross-compiling
+-   python: Add some typing annotation to overrides
+
+gst-editing-services
+
+-   No changes
+
+gst-devtools, gst-validate + gst-integration-testsuites
+
+-   debug-viewer: Make 0x prefix optional thread ID regexes
+
+gst-examples
+
+-   No changes
+
+gstreamer-docs
+
+-   No changes
+
+Development build environment
+
+-   libsoup wrap: remove fallback gio-unix on windows build
+-   webrtc-audio-processing wrap: Fix build with abseil-cpp 202508
+
+Cerbero build tool and packaging changes in 1.26.9
+
+-   Add support for Visual Studio 2026 (Insiders)
+-   Fix extraction on Windows when building on a different drive than C:, bump 
pixman and pygobject
+-   cookbook: List all the dependencies when listed in reverse
+-   gst-plugins-bad: actually build svtjpegxs plugin on 64-bit Windows
+
+Contributors to 1.26.9
+
+Artem Martus, Chengfa Wang, Dominique Leroux, Dongjoo Kim, Doug Nazar, Edward 
Hervey, Gang Zhao, Hyunjun Ko, Jaehoon Lee, Jakub
+Adam, Jan Schmidt, Jeongmin Kwak, Jerome Colle, Jihoon Lee, Jordan Yelloz, L. 
E. Segovia, Matthew Semeniuk, Max Goltzsche,
+Michael Olbrich, Monty C, Nicolas Dufresne, Nirbheek Chauhan, Olivier Crête, 
Philippe Normand, Pratik Pachange, Qian Hu (胡骞),
+Robert Mader, Ruben Gonzalez, Sanchayan Maity, Santiago Carot-Nemesio, 
Sebastian Dröge, Seungha Yang, Stéphane Cerveau,
+Tim-Philipp Müller, 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.9
+
+-   List of Merge Requests applied in 1.26.9
+-   List of Issues fixed in 1.26.9
+
 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
 release. The development of 1.27/1.28 will happen in the git main branch of 
the GStreamer mono repository.
 
-The schedule for 1.28 is yet to be decided, but we’re aiming for a release 
towards the end of 2025.
+For 1.28 we’re aiming for feature freeze in December 2025 and then the new 
stable 1.28.0 release in January 2026.
 
 1.28 will be backwards-compatible to the stable 1.26, 1.24, 1.22, 1.20, 1.18, 
1.16, 1.14, 1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0
 release series.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-base-1.26.8/RELEASE 
new/gst-plugins-base-1.26.9/RELEASE
--- old/gst-plugins-base-1.26.8/RELEASE 2025-11-10 18:22:05.000000000 +0100
+++ new/gst-plugins-base-1.26.9/RELEASE 2025-12-01 18:27:07.000000000 +0100
@@ -1,4 +1,4 @@
-This is GStreamer gst-plugins-base 1.26.8.
+This is GStreamer gst-plugins-base 1.26.9.
 
 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.8/docs/plugins/gst_plugins_cache.json 
new/gst-plugins-base-1.26.9/docs/plugins/gst_plugins_cache.json
--- old/gst-plugins-base-1.26.8/docs/plugins/gst_plugins_cache.json     
2025-11-10 18:22:05.000000000 +0100
+++ new/gst-plugins-base-1.26.9/docs/plugins/gst_plugins_cache.json     
2025-12-01 18:27:07.000000000 +0100
@@ -9882,7 +9882,7 @@
                         "construct": false,
                         "construct-only": false,
                         "controllable": false,
-                        "default": "video/x-raw(ANY); audio/x-raw(ANY); 
text/x-raw(ANY); subpicture/x-dvd; subpicture/x-dvb; subpicture/x-xsub; 
subpicture/x-pgs; closedcaption/x-cea-608; closedcaption/x-cea-708; 
application/x-onvif-metadata",
+                        "default": "video/x-raw(ANY); audio/x-raw(ANY); 
text/x-raw(ANY); subpicture/x-dvd; subpicture/x-dvb; subpicture/x-xsub; 
subpicture/x-pgs; closedcaption/x-cea-608; closedcaption/x-cea-708; 
application/x-onvif-metadata; meta/x-klv; meta/x-id3; meta/x-st-2038",
                         "mutable": "null",
                         "readable": true,
                         "type": "GstCaps",
@@ -10205,7 +10205,7 @@
                         "construct": false,
                         "construct-only": false,
                         "controllable": false,
-                        "default": "video/x-raw(ANY); audio/x-raw(ANY); 
text/x-raw(ANY); subpicture/x-dvd; subpicture/x-dvb; subpicture/x-xsub; 
subpicture/x-pgs; closedcaption/x-cea-608; closedcaption/x-cea-708; 
application/x-onvif-metadata",
+                        "default": "video/x-raw(ANY); audio/x-raw(ANY); 
text/x-raw(ANY); subpicture/x-dvd; subpicture/x-dvb; subpicture/x-xsub; 
subpicture/x-pgs; closedcaption/x-cea-608; closedcaption/x-cea-708; 
application/x-onvif-metadata; meta/x-klv; meta/x-id3; meta/x-st-2038",
                         "mutable": "null",
                         "readable": true,
                         "type": "GstCaps",
@@ -11877,7 +11877,7 @@
                         "construct": false,
                         "construct-only": false,
                         "controllable": false,
-                        "default": "video/x-raw(ANY); audio/x-raw(ANY); 
text/x-raw(ANY); subpicture/x-dvd; subpicture/x-dvb; subpicture/x-xsub; 
subpicture/x-pgs; closedcaption/x-cea-608; closedcaption/x-cea-708; 
application/x-onvif-metadata",
+                        "default": "video/x-raw(ANY); audio/x-raw(ANY); 
text/x-raw(ANY); subpicture/x-dvd; subpicture/x-dvb; subpicture/x-xsub; 
subpicture/x-pgs; closedcaption/x-cea-608; closedcaption/x-cea-708; 
application/x-onvif-metadata; meta/x-klv; meta/x-id3; meta/x-st-2038",
                         "mutable": "null",
                         "readable": true,
                         "type": "GstCaps",
@@ -12195,7 +12195,7 @@
                         "construct": false,
                         "construct-only": false,
                         "controllable": false,
-                        "default": "video/x-raw(ANY); audio/x-raw(ANY); 
text/x-raw(ANY); subpicture/x-dvd; subpicture/x-dvb; subpicture/x-xsub; 
subpicture/x-pgs; closedcaption/x-cea-608; closedcaption/x-cea-708; 
application/x-onvif-metadata",
+                        "default": "video/x-raw(ANY); audio/x-raw(ANY); 
text/x-raw(ANY); subpicture/x-dvd; subpicture/x-dvb; subpicture/x-xsub; 
subpicture/x-pgs; closedcaption/x-cea-608; closedcaption/x-cea-708; 
application/x-onvif-metadata; meta/x-klv; meta/x-id3; meta/x-st-2038",
                         "mutable": "null",
                         "readable": true,
                         "type": "GstCaps",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.26.8/ext/alsa/gstalsadeviceprovider.c 
new/gst-plugins-base-1.26.9/ext/alsa/gstalsadeviceprovider.c
--- old/gst-plugins-base-1.26.8/ext/alsa/gstalsadeviceprovider.c        
2025-11-10 18:22:05.000000000 +0100
+++ new/gst-plugins-base-1.26.9/ext/alsa/gstalsadeviceprovider.c        
2025-12-01 18:27:07.000000000 +0100
@@ -56,7 +56,7 @@
   if (snd_pcm_open (&handle, device_name, stream, SND_PCM_NONBLOCK) < 0) {
     GST_ERROR_OBJECT (provider, "Could not open device %s for inspection!",
         device_name);
-    free (device_name);
+    g_free (device_name);
 
     return NULL;
   }
@@ -89,6 +89,7 @@
 
   snd_card_get_longname (card, &longname);
   device = gst_alsa_device_new (longname, caps, device_name, stream, props);
+  g_free (device_name);
   free (longname);
 
   snd_pcm_close (handle);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.26.8/ext/gl/gstgldownloadelement.c 
new/gst-plugins-base-1.26.9/ext/gl/gstgldownloadelement.c
--- old/gst-plugins-base-1.26.8/ext/gl/gstgldownloadelement.c   2025-11-10 
18:22:05.000000000 +0100
+++ new/gst-plugins-base-1.26.9/ext/gl/gstgldownloadelement.c   2025-12-01 
18:27:07.000000000 +0100
@@ -1208,7 +1208,8 @@
 
       info = g_new0 (struct DmabufInfo, 1);
       info->dmabuf =
-          gst_dmabuf_allocator_alloc (download->dmabuf_allocator, fd, size);
+          gst_dmabuf_allocator_alloc_with_flags (download->dmabuf_allocator,
+          fd, size, GST_FD_MEMORY_FLAG_KEEP_MAPPED);
       info->stride = stride;
       info->offset = offset;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-base-1.26.8/ext/gl/gstglfiltershader.c 
new/gst-plugins-base-1.26.9/ext/gl/gstglfiltershader.c
--- old/gst-plugins-base-1.26.8/ext/gl/gstglfiltershader.c      2025-11-10 
18:22:05.000000000 +0100
+++ new/gst-plugins-base-1.26.9/ext/gl/gstglfiltershader.c      2025-12-01 
18:27:07.000000000 +0100
@@ -505,6 +505,7 @@
     return shader;
   }
 
+  GST_OBJECT_UNLOCK (filtershader);
   return NULL;
 
 print_error:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-base-1.26.8/ext/gl/gstglstereosplit.c 
new/gst-plugins-base-1.26.9/ext/gl/gstglstereosplit.c
--- old/gst-plugins-base-1.26.8/ext/gl/gstglstereosplit.c       2025-11-10 
18:22:05.000000000 +0100
+++ new/gst-plugins-base-1.26.9/ext/gl/gstglstereosplit.c       2025-12-01 
18:27:07.000000000 +0100
@@ -215,8 +215,10 @@
     case GST_STATE_CHANGE_NULL_TO_READY:
       g_rec_mutex_lock (&stereosplit->context_lock);
       if (!gst_gl_ensure_element_data (element, &stereosplit->display,
-              &stereosplit->other_context))
+              &stereosplit->other_context)) {
+        g_rec_mutex_unlock (&stereosplit->context_lock);
         return GST_STATE_CHANGE_FAILURE;
+      }
 
       gst_gl_display_filter_gl_api (stereosplit->display, SUPPORTED_GL_APIS);
       g_rec_mutex_unlock (&stereosplit->context_lock);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-base-1.26.8/gst/playback/gstdecodebin3.c 
new/gst-plugins-base-1.26.9/gst/playback/gstdecodebin3.c
--- old/gst-plugins-base-1.26.8/gst/playback/gstdecodebin3.c    2025-11-10 
18:22:05.000000000 +0100
+++ new/gst-plugins-base-1.26.9/gst/playback/gstdecodebin3.c    2025-12-01 
18:27:07.000000000 +0100
@@ -353,8 +353,8 @@
    * be avoided */
   gboolean input_is_parsed;
 
-  /* List of events that need to be pushed once we get the first
-   * GST_EVENT_STREAM_COLLECTION */
+  /* List of events that need to be pushed once we get the
+   * GST_EVENT_STREAM_COLLECTION for a GstStream */
   GList *events_waiting_for_collection;
 
   /* input buffer probe for detecting whether input has caps or not */
@@ -566,6 +566,8 @@
     GstStateChange transition);
 static gboolean gst_decodebin3_send_event (GstElement * element,
     GstEvent * event);
+static const gchar *stream_in_collection (GstStreamCollection * collection,
+    const gchar * sid);
 
 static void gst_decode_bin_update_factories_list (GstDecodebin3 * dbin);
 
@@ -991,8 +993,9 @@
             SELECTION_LOCK (input->dbin);
             gst_decodebin_input_link_to_slot (input);
             SELECTION_UNLOCK (input->dbin);
-          } else
+          } else {
             gst_object_unref (stream);
+          }
         }
       }
         break;
@@ -1824,8 +1827,9 @@
     gst_bin_remove (GST_BIN (dbin), input->identity);
     gst_clear_object (&input->identity);
   }
-  if (input->collection)
+  if (input->collection) {
     gst_clear_object (&input->collection);
+  }
 
   if (input->input_probe) {
     gst_pad_remove_probe (input->ghost_sink, input->input_probe);
@@ -1984,6 +1988,8 @@
       }
       gst_query_unref (q);
 
+      INPUT_LOCK (dbin);
+
       /* FIXME : We force `decodebin3` to upstream selection mode if *any* of 
the
          inputs is. This means things might break if there's a mix */
       if (input->upstream_selected)
@@ -2002,8 +2008,24 @@
 
       /* Make sure group ids will be recalculated */
       input->group_id = GST_GROUP_ID_INVALID;
-      INPUT_LOCK (dbin);
       recalculate_group_id (dbin);
+
+      GstStream *stream = NULL;
+
+      gst_event_parse_stream (event, &stream);
+      if (stream) {
+        const gchar *stream_id = gst_stream_get_stream_id (stream);
+        if (input->collection != NULL
+            && !stream_in_collection (input->collection, stream_id)) {
+          GST_DEBUG_OBJECT (sinkpad,
+              "Stream %" GST_PTR_FORMAT
+              " is from a new collection on this input", stream);
+          /* This is a stream from a new collection. Invalidate the old 
collection */
+          gst_clear_object (&input->collection);
+        }
+        gst_object_unref (stream);
+      }
+
       INPUT_UNLOCK (dbin);
       break;
     }
@@ -2567,7 +2589,7 @@
 }
 
 static const gchar *
-stream_in_collection (GstStreamCollection * collection, gchar * sid)
+stream_in_collection (GstStreamCollection * collection, const gchar * sid)
 {
   guint i, len;
 
@@ -3636,6 +3658,14 @@
   MultiQueueSlot *slot =
       gst_decodebin_get_slot_for_input_stream_locked (dbin, input_stream);
 
+  if (!slot) {
+    GST_ERROR_OBJECT (dbin,
+        "Fatal, could not get a multiqueue slot for input stream");
+    GST_ELEMENT_ERROR (dbin, STREAM, FAILED, (NULL),
+        ("Fatal, could not get a multiqueue slot for input stream"));
+    return;
+  }
+
   if (slot->input != NULL && slot->input != input_stream) {
     GST_ERROR_OBJECT (slot->dbin, "Input stream is already linked to a slot");
     return;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-base-1.26.8/gst/playback/gstrawcaps.h 
new/gst-plugins-base-1.26.9/gst/playback/gstrawcaps.h
--- old/gst-plugins-base-1.26.8/gst/playback/gstrawcaps.h       2025-11-10 
18:22:05.000000000 +0100
+++ new/gst-plugins-base-1.26.9/gst/playback/gstrawcaps.h       2025-12-01 
18:27:07.000000000 +0100
@@ -35,7 +35,10 @@
     "subpicture/x-pgs; " \
     "closedcaption/x-cea-608; " \
     "closedcaption/x-cea-708; " \
-    "application/x-onvif-metadata; "
+    "application/x-onvif-metadata; " \
+    "meta/x-klv; " \
+    "meta/x-id3; " \
+    "meta/x-st-2038; "
 
 G_END_DECLS
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.26.8/gst/playback/gsturidecodebin3.c 
new/gst-plugins-base-1.26.9/gst/playback/gsturidecodebin3.c
--- old/gst-plugins-base-1.26.8/gst/playback/gsturidecodebin3.c 2025-11-10 
18:22:05.000000000 +0100
+++ new/gst-plugins-base-1.26.9/gst/playback/gsturidecodebin3.c 2025-12-01 
18:27:07.000000000 +0100
@@ -2031,7 +2031,8 @@
     free_play_item (dec, item);
   }
 
-  dec->output_item = dec->input_item = dec->play_items->data;
+  dec->output_item = dec->input_item =
+      (dec->play_items ? dec->play_items->data : NULL);
   dec->output_item->posted_about_to_finish = FALSE;
   PLAY_ITEMS_UNLOCK (dec);
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.26.8/gst/playback/gsturisourcebin.c 
new/gst-plugins-base-1.26.9/gst/playback/gsturisourcebin.c
--- old/gst-plugins-base-1.26.8/gst/playback/gsturisourcebin.c  2025-11-10 
18:22:05.000000000 +0100
+++ new/gst-plugins-base-1.26.9/gst/playback/gsturisourcebin.c  2025-12-01 
18:27:07.000000000 +0100
@@ -1040,8 +1040,9 @@
 get_queue_statistics (GstURISourceBin * urisrc)
 {
   GstStructure *ret = NULL;
-  guint min_byte_level = 0, max_byte_level = 0;
-  guint64 min_time_level = 0, max_time_level = 0;
+  gboolean has_queue_stats = FALSE;
+  guint min_byte_level = G_MAXUINT32, max_byte_level = 0;
+  guint64 min_time_level = G_MAXUINT64, max_time_level = 0;
   gdouble avg_byte_level = 0., avg_time_level = 0.;
   guint i = 0;
   GList *iter, *cur;
@@ -1061,6 +1062,8 @@
       g_object_get (slot->queue, "current-level-bytes", &byte_limit,
           "current-level-time", &time_limit, NULL);
 
+      has_queue_stats = TRUE;
+
       if (byte_limit < min_byte_level)
         min_byte_level = byte_limit;
       if (byte_limit > max_byte_level)
@@ -1078,6 +1081,11 @@
   }
   GST_URI_SOURCE_BIN_UNLOCK (urisrc);
 
+  if (!has_queue_stats) {
+    min_byte_level = 0;
+    min_time_level = 0;
+  }
+
   ret = gst_structure_new ("application/x-urisourcebin-stats",
       "minimum-byte-level", G_TYPE_UINT, (guint) min_byte_level,
       "maximum-byte-level", G_TYPE_UINT, (guint) max_byte_level,
@@ -2125,6 +2133,7 @@
 
   info->demuxer = gst_element_factory_make ("parsebin", NULL);
   if (!info->demuxer) {
+    GST_URI_SOURCE_BIN_UNLOCK (urisrc);
     post_missing_plugin_error (GST_ELEMENT_CAST (urisrc), "parsebin");
     return FALSE;
   }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.26.8/gst-libs/gst/allocators/gstdrmdumb.c 
new/gst-plugins-base-1.26.9/gst-libs/gst/allocators/gstdrmdumb.c
--- old/gst-plugins-base-1.26.8/gst-libs/gst/allocators/gstdrmdumb.c    
2025-11-10 18:22:05.000000000 +0100
+++ new/gst-plugins-base-1.26.9/gst-libs/gst/allocators/gstdrmdumb.c    
2025-12-01 18:27:07.000000000 +0100
@@ -156,8 +156,8 @@
   if (ret)
     goto export_fd_failed;
 
-  dmamem = gst_dmabuf_allocator_alloc (alloc->dmabuf_alloc, prime_fd,
-      gst_memory_get_sizes (mem, NULL, NULL));
+  dmamem = gst_dmabuf_allocator_alloc_with_flags (alloc->dmabuf_alloc, 
prime_fd,
+      gst_memory_get_sizes (mem, NULL, NULL), GST_FD_MEMORY_FLAG_KEEP_MAPPED);
 
   GST_DEBUG_OBJECT (alloc, "Exported bo handle %d as %d", drmmem->handle,
       prime_fd);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.26.8/gst-libs/gst/gl/gstglbasesrc.c 
new/gst-plugins-base-1.26.9/gst-libs/gst/gl/gstglbasesrc.c
--- old/gst-plugins-base-1.26.8/gst-libs/gst/gl/gstglbasesrc.c  2025-11-10 
18:22:05.000000000 +0100
+++ new/gst-plugins-base-1.26.9/gst-libs/gst/gl/gstglbasesrc.c  2025-12-01 
18:27:07.000000000 +0100
@@ -405,6 +405,7 @@
 
   if (!gst_video_frame_map (&out_frame, &src->out_info, buffer,
           GST_MAP_WRITE | GST_MAP_GL)) {
+    g_rec_mutex_unlock (&src->priv->context_lock);
     return GST_FLOW_NOT_NEGOTIATED;
   }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.26.8/gst-libs/gst/gl/gstglcolorconvert.c 
new/gst-plugins-base-1.26.9/gst-libs/gst/gl/gstglcolorconvert.c
--- old/gst-plugins-base-1.26.8/gst-libs/gst/gl/gstglcolorconvert.c     
2025-11-10 18:22:05.000000000 +0100
+++ new/gst-plugins-base-1.26.9/gst-libs/gst/gl/gstglcolorconvert.c     
2025-12-01 18:27:07.000000000 +0100
@@ -3061,6 +3061,7 @@
     g_free (version_str);
     g_free (tmp);
     gst_object_unref (ret);
+    g_string_free (str, TRUE);
     return NULL;
   }
   g_free (tmp);
@@ -3072,6 +3073,7 @@
     g_free (version_str);
     gst_object_unref (stage);
     gst_object_unref (ret);
+    g_string_free (str, TRUE);
     return NULL;
   }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.26.8/gst-libs/gst/pbutils/codec-utils.c 
new/gst-plugins-base-1.26.9/gst-libs/gst/pbutils/codec-utils.c
--- old/gst-plugins-base-1.26.8/gst-libs/gst/pbutils/codec-utils.c      
2025-11-10 18:22:05.000000000 +0100
+++ new/gst-plugins-base-1.26.9/gst-libs/gst/pbutils/codec-utils.c      
2025-12-01 18:27:07.000000000 +0100
@@ -3075,8 +3075,8 @@
   }
 
   profile_tier_level = data + 1;
-  profile_space = (profile_tier_level[0] & 0x11) >> 6;
-  tier_flag = (profile_tier_level[0] & 0x001) >> 5;
+  profile_space = (profile_tier_level[0] >> 6) & 0x03;
+  tier_flag = (profile_tier_level[0] >> 5) & 0x01;
   profile_idc = (profile_tier_level[0] & 0x1f);
 
   compat_flags = GST_READ_UINT32_BE (data + 2);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.26.8/gst-libs/gst/pbutils/descriptions.c 
new/gst-plugins-base-1.26.9/gst-libs/gst/pbutils/descriptions.c
--- old/gst-plugins-base-1.26.8/gst-libs/gst/pbutils/descriptions.c     
2025-11-10 18:22:05.000000000 +0100
+++ new/gst-plugins-base-1.26.9/gst-libs/gst/pbutils/descriptions.c     
2025-12-01 18:27:07.000000000 +0100
@@ -339,6 +339,7 @@
   /* metadata */
   {"application/x-onvif-metadata", "ONVIF Timed Metadata", FLAG_METADATA, ""},
   {"meta/x-klv", "KLV Metadata", FLAG_METADATA, ""},
+  {"meta/x-st-2038", "ST-2038 Ancillary Data", FLAG_METADATA, ""},
 };
 
 static const gchar *
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.26.8/gst-libs/gst/pbutils/gstaudiovisualizer.c 
new/gst-plugins-base-1.26.9/gst-libs/gst/pbutils/gstaudiovisualizer.c
--- old/gst-plugins-base-1.26.8/gst-libs/gst/pbutils/gstaudiovisualizer.c       
2025-11-10 18:22:05.000000000 +0100
+++ new/gst-plugins-base-1.26.9/gst-libs/gst/pbutils/gstaudiovisualizer.c       
2025-12-01 18:27:07.000000000 +0100
@@ -1077,21 +1077,21 @@
   bpf = GST_AUDIO_INFO_BPF (&scope->ainfo);
 
   if (bpf == 0) {
-    ret = GST_FLOW_NOT_NEGOTIATED;
-    goto beach;
+    goto not_negotiated;
   }
 
-  gst_adapter_push (scope->priv->adapter, buffer);
-
   g_mutex_lock (&scope->priv->config_lock);
 
-  /* this is what we want */
-  sbpf = scope->req_spf * bpf;
-
   inbuf = scope->priv->inbuf;
+
   /* FIXME: the timestamp in the adapter would be different */
   gst_buffer_copy_into (inbuf, buffer, GST_BUFFER_COPY_METADATA, 0, -1);
 
+  gst_adapter_push (scope->priv->adapter, buffer);
+
+  /* this is what we want */
+  sbpf = scope->req_spf * bpf;
+
   /* this is what we have */
   avail = gst_adapter_available (scope->priv->adapter);
   GST_LOG_OBJECT (scope, "avail: %u, bpf: %u", avail, sbpf);
@@ -1190,7 +1190,7 @@
       if (!klass->render (scope, inbuf, &outframe)) {
         ret = GST_FLOW_ERROR;
         gst_video_frame_unmap (&outframe);
-        goto beach;
+        break;
       } else {
         /* run various post processing (shading and geometric transformation) 
*/
         /* FIXME: SHADER assumes 32bpp */
@@ -1214,11 +1214,9 @@
     /* we want to take less or more, depending on spf : req_spf */
     if (avail - sbpf >= sbpf) {
       gst_adapter_flush (scope->priv->adapter, sbpf);
-      gst_adapter_unmap (scope->priv->adapter);
     } else if (avail >= sbpf) {
       /* just flush a bit and stop */
       gst_adapter_flush (scope->priv->adapter, (avail - sbpf));
-      gst_adapter_unmap (scope->priv->adapter);
       break;
     }
     avail = gst_adapter_available (scope->priv->adapter);
@@ -1229,13 +1227,13 @@
 
   g_mutex_unlock (&scope->priv->config_lock);
 
-beach:
   return ret;
 
   /* ERRORS */
 not_negotiated:
   {
     GST_DEBUG_OBJECT (scope, "Failed to renegotiate");
+    gst_buffer_unref (buffer);
     return GST_FLOW_NOT_NEGOTIATED;
   }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.26.8/gst-libs/gst/rtp/gstrtpbaseaudiopayload.c 
new/gst-plugins-base-1.26.9/gst-libs/gst/rtp/gstrtpbaseaudiopayload.c
--- old/gst-plugins-base-1.26.8/gst-libs/gst/rtp/gstrtpbaseaudiopayload.c       
2025-11-10 18:22:05.000000000 +0100
+++ new/gst-plugins-base-1.26.9/gst-libs/gst/rtp/gstrtpbaseaudiopayload.c       
2025-12-01 18:27:07.000000000 +0100
@@ -853,7 +853,8 @@
   priv = payload->priv;
 
   timestamp = GST_BUFFER_PTS (buffer);
-  discont = GST_BUFFER_IS_DISCONT (buffer);
+  discont = GST_BUFFER_IS_DISCONT (buffer)
+      || GST_BUFFER_FLAG_IS_SET (buffer, GST_BUFFER_FLAG_RESYNC);
   if (discont) {
 
     GST_DEBUG_OBJECT (payload, "Got DISCONT");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.26.8/gst-libs/gst/rtp/gstrtpbasedepayload.c 
new/gst-plugins-base-1.26.9/gst-libs/gst/rtp/gstrtpbasedepayload.c
--- old/gst-plugins-base-1.26.8/gst-libs/gst/rtp/gstrtpbasedepayload.c  
2025-11-10 18:22:05.000000000 +0100
+++ new/gst-plugins-base-1.26.9/gst-libs/gst/rtp/gstrtpbasedepayload.c  
2025-12-01 18:27:07.000000000 +0100
@@ -1408,6 +1408,7 @@
           GST_WARNING_OBJECT (depayload, "RTP header extension (%s) could "
               "not read payloaded data", GST_OBJECT_NAME (ext));
           gst_object_unref (ext);
+          GST_OBJECT_UNLOCK (depayload);
           goto out;
         }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.26.8/gst-libs/gst/video/gstvideoencoder.c 
new/gst-plugins-base-1.26.9/gst-libs/gst/video/gstvideoencoder.c
--- old/gst-plugins-base-1.26.8/gst-libs/gst/video/gstvideoencoder.c    
2025-11-10 18:22:05.000000000 +0100
+++ new/gst-plugins-base-1.26.9/gst-libs/gst/video/gstvideoencoder.c    
2025-12-01 18:27:07.000000000 +0100
@@ -2720,12 +2720,14 @@
   if (encoder_class->pre_push)
     ret = encoder_class->pre_push (encoder, frame);
 
+  if (ret != GST_FLOW_OK)
+    goto done;
+
   gst_video_encoder_transform_meta_unlocked (encoder, frame);
 
   /* Get an additional ref to the buffer, which is going to be pushed
    * downstream, the original ref is owned by the frame */
-  if (ret == GST_FLOW_OK)
-    buffer = gst_buffer_ref (frame->output_buffer);
+  buffer = gst_buffer_ref (frame->output_buffer);
 
   /* Release frame so the buffer is writable when we push it downstream
    * if possible, i.e. if the subclass does not hold additional references
@@ -2734,11 +2736,9 @@
   gst_video_encoder_release_frame_unlocked (encoder, frame);
   frame = NULL;
 
-  if (ret == GST_FLOW_OK) {
-    GST_VIDEO_ENCODER_STREAM_UNLOCK (encoder);
-    ret = gst_pad_push (encoder->srcpad, buffer);
-    GST_VIDEO_ENCODER_STREAM_LOCK (encoder);
-  }
+  GST_VIDEO_ENCODER_STREAM_UNLOCK (encoder);
+  ret = gst_pad_push (encoder->srcpad, buffer);
+  GST_VIDEO_ENCODER_STREAM_LOCK (encoder);
 
 done:
   /* handed out */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.26.8/gst-libs/gst/video/gstvideoencoder.h 
new/gst-plugins-base-1.26.9/gst-libs/gst/video/gstvideoencoder.h
--- old/gst-plugins-base-1.26.8/gst-libs/gst/video/gstvideoencoder.h    
2025-11-10 18:22:05.000000000 +0100
+++ new/gst-plugins-base-1.26.9/gst-libs/gst/video/gstvideoencoder.h    
2025-12-01 18:27:07.000000000 +0100
@@ -181,7 +181,7 @@
  * @finish:         Optional.
  *                  Called to request subclass to dispatch any pending 
remaining
  *                  data (e.g. at EOS).
- * @pre_push:   Optional.
+ * @pre_push:       Optional.
  *                  Allows subclass to push frame downstream in whatever
  *                  shape or form it deems appropriate.  If not provided,
  *                  provided encoded frame data is simply pushed downstream.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-base-1.26.8/gst-plugins-base.doap 
new/gst-plugins-base-1.26.9/gst-plugins-base.doap
--- old/gst-plugins-base-1.26.8/gst-plugins-base.doap   2025-11-10 
18:22:05.000000000 +0100
+++ new/gst-plugins-base-1.26.9/gst-plugins-base.doap   2025-12-01 
18:27:07.000000000 +0100
@@ -36,6 +36,16 @@
 
  <release>
   <Version>
+   <revision>1.26.9</revision>
+   <branch>1.26</branch>
+   <name></name>
+   <created>2025-12-01</created>
+   <file-release 
rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-1.26.9.tar.xz";
 />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
    <revision>1.26.8</revision>
    <branch>1.26</branch>
    <name></name>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-base-1.26.8/meson.build 
new/gst-plugins-base-1.26.9/meson.build
--- old/gst-plugins-base-1.26.8/meson.build     2025-11-10 18:22:05.000000000 
+0100
+++ new/gst-plugins-base-1.26.9/meson.build     2025-12-01 18:27:07.000000000 
+0100
@@ -1,5 +1,5 @@
 project('gst-plugins-base', 'c',
-  version : '1.26.8',
+  version : '1.26.9',
   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.8/tests/check/libs/pbutils.c 
new/gst-plugins-base-1.26.9/tests/check/libs/pbutils.c
--- old/gst-plugins-base-1.26.8/tests/check/libs/pbutils.c      2025-11-10 
18:22:05.000000000 +0100
+++ new/gst-plugins-base-1.26.9/tests/check/libs/pbutils.c      2025-12-01 
18:27:07.000000000 +0100
@@ -1554,6 +1554,22 @@
   gst_caps_unref (caps);
   gst_buffer_unref (buffer);
 
+  /* h265 with specific profile space and tier flag */
+  codec_data_len = sizeof (h265_sample_codec_data);
+  codec_data = g_memdup2 (h265_sample_codec_data, codec_data_len);
+  codec_data[1] = 0x61;
+  codec_data[12] = 0x96;
+
+  buffer = gst_buffer_new_wrapped (codec_data, codec_data_len);
+  caps =
+      gst_caps_new_simple ("video/x-h265", "stream-format", G_TYPE_STRING,
+      "hvc1", "codec_data", GST_TYPE_BUFFER, buffer, NULL);
+  mime_codec = gst_codec_utils_caps_get_mime_codec (caps);
+  fail_unless_equals_string (mime_codec, "hvc1.A1.6.H150.B0");
+  g_free (mime_codec);
+  gst_caps_unref (caps);
+  gst_buffer_unref (buffer);
+
   /* av1 */
   caps = gst_caps_new_empty_simple ("video/x-av1");
   mime_codec = gst_codec_utils_caps_get_mime_codec (caps);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-base-1.26.8/tools/gst-play.c 
new/gst-plugins-base-1.26.9/tools/gst-play.c
--- old/gst-plugins-base-1.26.8/tools/gst-play.c        2025-11-10 
18:22:05.000000000 +0100
+++ new/gst-plugins-base-1.26.9/tools/gst-play.c        2025-12-01 
18:27:07.000000000 +0100
@@ -501,8 +501,17 @@
       }
       break;
     }
-    case GST_MESSAGE_ELEMENT:
-    {
+    case GST_MESSAGE_ELEMENT:{
+      if (gst_is_missing_plugin_message (msg)) {
+        gchar *desc;
+
+        desc = gst_missing_plugin_message_get_description (msg);
+        gst_print ("Missing plugin: %s\n", desc);
+        g_free (desc);
+        play->missing = g_list_prepend (play->missing, gst_message_ref (msg));
+        break;
+      }
+      // Will return GST_NAVIGATION_MESSAGE_INVALID if it's not a navigation 
message
       GstNavigationMessageType mtype = gst_navigation_message_get_type (msg);
       if (mtype == GST_NAVIGATION_MESSAGE_EVENT) {
         GstEvent *ev = NULL;
@@ -684,14 +693,6 @@
       break;
     }
     default:
-      if (gst_is_missing_plugin_message (msg)) {
-        gchar *desc;
-
-        desc = gst_missing_plugin_message_get_description (msg);
-        gst_print ("Missing plugin: %s\n", desc);
-        g_free (desc);
-        play->missing = g_list_append (play->missing, gst_message_ref (msg));
-      }
       break;
   }
 
@@ -1289,6 +1290,7 @@
       }
       break;
     default:
+      g_mutex_unlock (&play->selection_lock);
       return;
   }
 

++++++ gst-plugins-base.obsinfo ++++++
--- /var/tmp/diff_new_pack.Ev4QqE/_old  2025-12-10 15:29:45.760299691 +0100
+++ /var/tmp/diff_new_pack.Ev4QqE/_new  2025-12-10 15:29:45.796301215 +0100
@@ -1,5 +1,5 @@
 name: gst-plugins-base
-version: 1.26.8
-mtime: 1762795325
-commit: 16d77e12ad213ef24e76a8cc34d347b8221c9975
+version: 1.26.9
+mtime: 1764610027
+commit: f313fae193089408e278c0dd3450145e5a12307b
 

Reply via email to