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 2023-05-28 19:21:29
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gstreamer-plugins-base (Old)
 and      /work/SRC/openSUSE:Factory/.gstreamer-plugins-base.new.1533 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gstreamer-plugins-base"

Sun May 28 19:21:29 2023 rev:92 rq:1089222 version:1.22.3

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/gstreamer-plugins-base/gstreamer-plugins-base.changes
    2023-04-15 22:32:11.957209817 +0200
+++ 
/work/SRC/openSUSE:Factory/.gstreamer-plugins-base.new.1533/gstreamer-plugins-base.changes
  2023-05-28 19:21:37.936529931 +0200
@@ -1,0 +2,17 @@
+Wed May 24 14:25:12 UTC 2023 - Bjørn Lie <bjorn....@gmail.com>
+
+- Update to version 1.22.3:
+  + allocators: Fix fdmem unit test with recent GLib versions.
+  + audiotestsrc: Initialize all samples in wave=ticks mode.
+  + decodebin3:
+    - Handle input streams without CAPS or TIME segment such as
+      e.g. udpsrc or pushfilesrc.
+    - Fix regression handling streams without caps.
+    - Fix random hang when remove failing stream.
+  + uridecodebin3: Ensure atomic urisourcebin state change.
+  + glvideoflip: fix leaked caps.
+  + glcontext_wgl: fix missing unref.
+  + playsink: Fix volume leak.
+- Rebase reduce-required-meson.patch.
+
+-------------------------------------------------------------------

Old:
----
  gst-plugins-base-1.22.2.tar.xz

New:
----
  gst-plugins-base-1.22.3.tar.xz

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

Other differences:
------------------
++++++ gstreamer-plugins-base.spec ++++++
--- /var/tmp/diff_new_pack.pf7oMz/_old  2023-05-28 19:21:38.420532812 +0200
+++ /var/tmp/diff_new_pack.pf7oMz/_new  2023-05-28 19:21:38.424532836 +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.22.2
+Version:        1.22.3
 Release:        0
 Summary:        GStreamer Streaming-Media Framework Plug-Ins
 License:        GPL-2.0-or-later AND LGPL-2.1-or-later

++++++ gst-plugins-base-1.22.2.tar.xz -> gst-plugins-base-1.22.3.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-base-1.22.2/ChangeLog 
new/gst-plugins-base-1.22.3/ChangeLog
--- old/gst-plugins-base-1.22.2/ChangeLog       2023-04-11 18:30:16.716505300 
+0200
+++ new/gst-plugins-base-1.22.3/ChangeLog       2023-05-19 10:24:07.850514400 
+0200
@@ -1,3 +1,113 @@
+=== release 1.22.3 ===
+
+2023-05-19 09:23:19 +0100  Tim-Philipp Müller <t...@centricular.com>
+
+       * NEWS:
+       * README.md:
+       * RELEASE:
+       * gst-plugins-base.doap:
+       * meson.build:
+         Release 1.22.3
+
+2023-05-17 21:43:21 +1000  Matthew Waters <matt...@centricular.com>
+
+       * gst-libs/gst/gl/meson.build:
+         Revert "meson: Install viv-fb GL headers, needed by i.MX"
+         Missing pkg-config files and gir files as is required from any public
+         facing GL API for bindings reasons.
+         This reverts commit c95b7b8e7aa80276c0604dd3dd03eeda634f42b9.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4657>
+
+2023-05-10 16:34:16 +0800  Haihua Hu <jared...@nxp.com>
+
+       * gst/playback/gstdecodebin3.c:
+         decodebin3: fix random hang when remove failing stream
+         When reconfigure_output_stream entry missing decoder path,
+         requested_selection should been update with what is really
+         active/selected immdiately with SELECTION_LOCK hold. So
+         use an optional message return from reconfigure_output_stream
+         and post it after release SELECTION_LOCK. This can make sure
+         other thread call to check_slot_reconfiguration will got
+         a correct requested_selection.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4656>
+
+2023-03-07 11:40:42 +0100  Edward Hervey <edw...@centricular.com>
+
+       * gst/playback/gsturidecodebin3.c:
+         uridecodebin3: Ensure atomic urisourcebin state change
+         When dynamically adding and synchronizing the state of urisourcebin, 
we need to
+         ensure that no-one else attempts to change the state in case of 
failures
+         Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1803
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4620>
+
+2023-03-09 00:25:51 +0530  Nirbheek Chauhan <nirbh...@centricular.com>
+
+       * gst-libs/gst/gl/meson.build:
+         meson: Install viv-fb GL headers, needed by i.MX
+         Needed by qmlglsink at build time to allocate a viv-fb display.
+         Without this, the GL fastpath doesn't work, and performance is really
+         bad.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4618>
+
+2023-04-26 12:20:25 +0200  Edward Hervey <edw...@centricular.com>
+
+       * gst/playback/gstdecodebin3.c:
+         decodebin3: Handle streams without CAPS or TIME segment
+         decodebin3 will do its best to figure out whether a parsebin is 
required to
+         process the incoming stream.
+         The problem is that for push-based stream it could happen that the 
stream would
+         not provide any caps, resulting in nothing being linked internally.
+         Furthermore, there is the possibility that a stream *with* caps would 
not be
+         using a TIME segment, which is required for multiqueue to properly 
work.
+         In order to fix those two issues, we force the usage of parsebin on 
push-based
+         streams:
+         * When the pad is linked, if upstream can't provide any caps
+         * When we get a non-TIME segment
+         Fixes #2521
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4499>
+
+2023-04-22 11:42:36 +0300  Sebastian Dröge <sebast...@centricular.com>
+
+       * gst/audiotestsrc/gstaudiotestsrc.c:
+         audiotestsrc: Initialize all samples in wave=ticks mode
+         Previously samples were only initialized in 2 out of 3 cases.
+         Probably fixes 
https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/337
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4476>
+
+2023-04-20 10:03:27 +0200  Patricia Muscalu <patri...@axis.com>
+
+       * gst/playback/gstplaysink.c:
+         playsink: Fix volume leak
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4463>
+
+2023-04-10 16:06:19 +0200  Jan Alexander Steffens (heftig) 
<hef...@archlinux.org>
+
+       * tests/check/libs/allocators.c:
+         tests: allocators: Fix fdmem test with recent GLib
+         The test failed with recent GLib, where `g_close` emits a critical
+         warning on EBADF. Remove the `g_close` check from `test_fdmem` and add
+         another version that tests `GST_FD_MEMORY_FLAG_DONT_CLOSE`.
+         We will depend on the Valgrind test run to warn us about leaked FDs.
+         Fixes: 
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2480
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4422>
+
+2023-04-06 08:54:30 +0200  Matthias Fuchs <matthias1.fu...@zeiss.com>
+
+       * ext/gl/gstglvideoflip.c:
+         glvideoflip: fix leaked caps
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4420>
+
+2023-04-05 13:20:19 +0200  Matthias Fuchs <matthias1.fu...@zeiss.com>
+
+       * gst-libs/gst/gl/wgl/gstglcontext_wgl.c:
+         glcontext_wgl: fix missing unref
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4419>
+
+2023-04-12 00:31:17 +0100  Tim-Philipp Müller <t...@centricular.com>
+
+       * meson.build:
+         Back to development
+
 === release 1.22.2 ===
 
 2023-04-11 17:29:28 +0100  Tim-Philipp Müller <t...@centricular.com>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-base-1.22.2/NEWS 
new/gst-plugins-base-1.22.3/NEWS
--- old/gst-plugins-base-1.22.2/NEWS    2023-04-11 18:29:28.000000000 +0200
+++ new/gst-plugins-base-1.22.3/NEWS    2023-05-19 10:23:19.000000000 +0200
@@ -2,13 +2,13 @@
 
 GStreamer 1.22.0 was originally released on 23 January 2023.
 
-The latest bug-fix release in the stable 1.22 series is 1.22.2 and was
-released on 11 April 2023.
+The latest bug-fix release in the stable 1.22 series is 1.22.3 and was
+released on 19 May 2023.
 
 See https://gstreamer.freedesktop.org/releases/1.22/ for the latest
 version of this document.
 
-Last updated: Tuesday 11 April 2023, 16:45 UTC (log)
+Last updated: Friday 19 May 2023, 01:00 UTC (log)
 
 Introduction
 
@@ -1648,6 +1648,189 @@
 -   List of Merge Requests applied in 1.22.2
 -   List of Issues fixed in 1.22.2
 
+1.22.3
+
+The third 1.22 bug-fix release (1.22.3) was released on 19 May 2023.
+
+This release only contains bugfixes and it should be safe to update from
+1.22.x.
+
+Highlighted bugfixes in 1.22.3
+
+-   avdec: fix occasional video decoder deadlock on seeking with FFmpeg
+    6.0
+-   decodebin3: fix regression handling input streams without CAPS or
+    TIME segment such as e.g. udpsrc or `pushfilesrc
+-   bluez: a2dpsink: fix Bluetooth SIG Certification test failures
+-   osxvideosink: fix deadlock upon closing output window
+-   qtdemux: fix edit list handling regression and AV1 codec box parsing
+-   qtmux: fix extraction of CEA608 closed caption data from S334-1A
+    packets
+-   rtspsrc: Fix handling of * control path
+-   splitmux: timestamp handling improvements
+-   v4l2videodec: Rework dynamic resolution change handling (needed for
+    IMX6 mainline codec)
+-   videoflip: fix regression with automatically rotating video based on
+    tags
+-   d3d11: many d3d11videosink and d3d11compositor fixes
+-   webrtc, rtp: numerous data race fixes and stability fixes
+-   various bug fixes, memory leak fixes, and other stability and
+    reliability improvements
+
+gstreamer
+
+-   tracing: Initialize tracing infrastructure even if the debug system
+    is not compiled in
+-   parse-launch: fix missing unref of looked-up child element
+-   gstutils: Add category and object to most logging messages
+
+gst-plugins-base
+
+-   allocators: Fix fdmem unit test with recent GLib versions
+-   audiotestsrc: Initialize all samples in wave=ticks mode
+-   decodebin3: Handle input streams without CAPS or TIME segment such
+    as e.g. udpsrc or pushfilesrc
+-   decodebin3: fix regression handling streams without caps
+-   decodebin3: fix random hang when remove failing stream
+-   uridecodebin3: Ensure atomic urisourcebin state change
+-   glvideoflip: fix leaked caps
+-   glcontext_wgl: fix missing unref
+-   playsink: Fix volume leak
+
+gst-plugins-good
+
+-   adaptivedemux2: fix critical when using an unsupported URI
+-   dashdemux2: mpdclient: fix divide by 0 if segment has no duration
+-   imagesequencesrc: Properly set default location
+-   multifile: error out if no filename was set
+-   osxvideosink: fix deadlock upon closing output window
+-   rtpmanager: rtpsession: data race leading to critical warnings
+-   rtpmanager: rtpsession: race conditions leading to critical warnings
+-   rtspsrc: Fix handling of * control path
+-   splitmuxsink: Catch invalid DTS to avoid running into problems later
+-   splitmuxsrc: Make PTS contiguous by preference
+-   qtdemux: emit no-more-pads after pruning old pads
+-   Revert “qtdemux: fix conditions for end of segment in reverse
+    playback” to fix edit list regression
+-   qtdemux: Fix av1C parsing
+-   qtmux: Fix extraction of CEA608 data from S334-1A packets
+-   qtwindow: unref caps in destructor
+-   v4l2: device provider: Fix GMainLoop leak
+-   v4l2: videodec: Rework dynamic resolution change handling
+-   v4l2: videodec: Prefer acquired caps over anything downstream
+-   videoflip: fix setting of method property at construction time
+-   videoflip 1.22.2 not rotating video when extracting frames
+
+gst-plugins-bad
+
+-   a2dpsink: Fails many tests in Bluetooth SIG Certification
+-   avdtputil: Use int instead of int range for fixed bitpool values
+-   ccconverter: reintroduce frame count reset on cycle completion
+-   ccconverter: integer overflow & crashing
+-   codectimestamper: remove PC file generation from plugin’s own
+    meson.build
+-   cudamemory: Fix for semi planar YUV memory size decision
+-   d3d11compositor: Reconfigure resource only when output caps is
+    changed
+-   d3d11compositor: Skip zero alpha input
+-   d3d11convert: Fix for runtime property update
+-   d3d11memory: Don’t clear wrapped texture memory
+-   d3d11videosink: Fix for ignored initial render rectangle
+-   d3d11videosink: fix race condition in window unprepare
+-   d3d11videosink: Enhancement for initial window size decision
+-   d3d11videosink: Don’t clear prepared buffer on unlock_stop()
+-   dashdemux: mpdclient: fix divide by 0 if segment has no duration
+-   dtlstransport: Keep strong ref of dtls encoder/decoder
+-   GstPlay: avoid getting property of playbin2 if subtitle_sid is null
+-   GstPlay: fix critical log when using playbin3
+-   h264decoder: Drop nonexisting picture silently without error
+-   dtmf: element classification improvements
+-   mfvideoenc: Allow only even resolution numbers
+-   sctpenc: Fix potential shutdown deadlock
+-   srtpdec: fix “srtp-key” check
+-   tests: disable dtls test if openssl is not present
+-   tsdemux: Set number of channels to 2 for dual mono Opus
+-   va: Various fixes for defects found with MSVC
+-   wasapi2: Allows process loopback capture on Windows 10
+-   webrtcdatachannel: Bind to parent webrtcbin using a weak reference
+-   webrtcbin: Fix potential deadlock when closing before any data was
+    sent
+-   webrtc: Plug leaks of resolved ICE addresses
+-   webrtc: do not tear down data channel before data is flushed
+
+gst-plugins-ugly
+
+-   mpegpsdemux: Rework gap sending
+
+gst-libav
+
+-   avviddec: Temporarily unlock stream lock while flushing buffers
+-   Random freeze and deadlock in ffmpegviddec flush and get_buffer
+    while seeking
+
+gst-rtsp-server
+
+-   No changes
+
+gstreamer-vaapi
+
+-   No changes
+
+gstreamer-sharp
+
+-   No changes
+
+gst-omx
+
+-   No changes
+
+gst-python
+
+-   No changes
+
+gst-editing-services
+
+-   ges: base-xml-formatter: Don’t pass non-GObject pointers to
+    GST_DEBUG_OBJECT
+
+gst-validate + gst-integration-testsuites
+
+-   No changes
+
+gst-examples
+
+-   No changes
+
+Development build environment
+
+-   No changes
+
+Cerbero build tool and packaging changes in 1.22.3
+
+-   glib: Ship Windows process spawning helpers
+-   recipes: add recipe for libltc for timecodestamper element
+-   Add support for RHEL9 and Rocky Linux
+
+Contributors to 1.22.3
+
+Aleksandr Slobodeniuk, Antonio Kevo, Arun Raghavan, Carlos Rafael Giani,
+Daniel Moberg, Edward Hervey, Elliot Chen, François Laignel, Guillaume
+Desmottes, Haihua Hu, Jan Alexander Steffens (heftig), Jan Beich, Jan
+Schmidt, Johan Sternerup, John King, Jordan Petridis, Juan Navarro, Lily
+Foster, Martin Nordholts, Mathieu Duponchelle, Matthew Waters, Matthias
+Fuchs, Michael Olbrich, Mihail Ivanchev, Nick Steel, Nicolas Dufresne,
+Nirbheek Chauhan, Patricia Muscalu, Philippe Normand, Piotr Brzeziński,
+Sanchayan Maity, Sebastian Dröge, Seungha Yang, Stéphane Cerveau,
+Thibault Saunier, Tim-Philipp Müller, Xabier Rodriguez Calvar,
+
+… 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.22.3
+
+-   List of Merge Requests applied in 1.22.3
+-   List of Issues fixed in 1.22.3
+
 Schedule for 1.24
 
 Our next major feature release will be 1.24, and 1.23 will be the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-base-1.22.2/README.md 
new/gst-plugins-base-1.22.3/README.md
--- old/gst-plugins-base-1.22.2/README.md       2023-04-11 18:29:28.000000000 
+0200
+++ new/gst-plugins-base-1.22.3/README.md       2023-05-19 10:23:19.000000000 
+0200
@@ -1,4 +1,4 @@
-GStreamer 1.20.x stable series
+GStreamer 1.22.x stable series
 
 WHAT IT IS
 ----------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-base-1.22.2/RELEASE 
new/gst-plugins-base-1.22.3/RELEASE
--- old/gst-plugins-base-1.22.2/RELEASE 2023-04-11 18:29:28.000000000 +0200
+++ new/gst-plugins-base-1.22.3/RELEASE 2023-05-19 10:23:19.000000000 +0200
@@ -1,4 +1,4 @@
-This is GStreamer gst-plugins-base 1.22.2.
+This is GStreamer gst-plugins-base 1.22.3.
 
 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.22.2/ext/gl/gstglvideoflip.c 
new/gst-plugins-base-1.22.3/ext/gl/gstglvideoflip.c
--- old/gst-plugins-base-1.22.2/ext/gl/gstglvideoflip.c 2023-04-11 
18:29:28.000000000 +0200
+++ new/gst-plugins-base-1.22.3/ext/gl/gstglvideoflip.c 2023-05-19 
10:23:19.000000000 +0200
@@ -345,10 +345,13 @@
   gst_caps_append (output_caps, gst_caps_ref (templ));
   GST_OBJECT_UNLOCK (vf);
 
-  g_object_set (vf->input_capsfilter, "caps", gst_caps_ref (caps), NULL);
+  g_object_set (vf->input_capsfilter, "caps", caps, NULL);
   g_object_set (vf->output_capsfilter, "caps", output_caps, NULL);
   g_object_set (vf->transformation, "rotation-z", rot_z, "scale-x", scale_x,
       "scale-y", scale_y, NULL);
+
+  gst_caps_unref (output_caps);
+
   GST_OBJECT_LOCK (vf);
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.22.2/gst/audiotestsrc/gstaudiotestsrc.c 
new/gst-plugins-base-1.22.3/gst/audiotestsrc/gstaudiotestsrc.c
--- old/gst-plugins-base-1.22.2/gst/audiotestsrc/gstaudiotestsrc.c      
2023-04-11 18:29:28.000000000 +0200
+++ new/gst-plugins-base-1.22.3/gst/audiotestsrc/gstaudiotestsrc.c      
2023-05-19 10:23:19.000000000 +0200
@@ -953,6 +953,10 @@
       src->accumulator = 0; \
       src->tick_counter++; \
       volscale = calc_scaled_tick_volume (src, scale); \
+      for (c = 0; c < channels; ++c) { \
+        *ptr = 0; \
+        ptr += channel_step; \
+      } \
     } else if (samplemod < num_nonzero_samples)  { \
       gdouble ramp; \
       if (num_ramp_samples > 0) { \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-base-1.22.2/gst/playback/gstdecodebin3.c 
new/gst-plugins-base-1.22.3/gst/playback/gstdecodebin3.c
--- old/gst-plugins-base-1.22.2/gst/playback/gstdecodebin3.c    2023-04-11 
18:29:28.000000000 +0200
+++ new/gst-plugins-base-1.22.3/gst/playback/gstdecodebin3.c    2023-05-19 
10:23:19.000000000 +0200
@@ -497,7 +497,7 @@
 static gboolean set_input_group_id (DecodebinInput * input, guint32 * 
group_id);
 
 static gboolean reconfigure_output_stream (DecodebinOutputStream * output,
-    MultiQueueSlot * slot);
+    MultiQueueSlot * slot, GstMessage ** msg);
 static void free_output_stream (GstDecodebin3 * dbin,
     DecodebinOutputStream * output);
 static DecodebinOutputStream *create_output_stream (GstDecodebin3 * dbin,
@@ -912,6 +912,7 @@
   GstDecodebin3 *dbin = (GstDecodebin3 *) parent;
   GstQuery *query;
   gboolean pull_mode = FALSE;
+  gboolean has_caps = TRUE;
   GstPadLinkReturn res = GST_PAD_LINK_OK;
   DecodebinInput *input = g_object_get_data (G_OBJECT (pad), 
"decodebin.input");
 
@@ -928,12 +929,26 @@
 
   GST_DEBUG_OBJECT (dbin, "Upstream can do pull-based : %d", pull_mode);
 
-  /* If upstream *can* do pull-based, we always use a parsebin. If not, we will
-   * delay that decision to a later stage (caps/stream/collection event
-   * processing) to figure out if one is really needed or whether an identity
-   * element will be enough */
+  if (!pull_mode) {
+    /* If push-based, query if it will provide some caps */
+    query = gst_query_new_caps (NULL);
+    if (gst_pad_query (peer, query)) {
+      GstCaps *rescaps = NULL;
+      gst_query_parse_caps_result (query, &rescaps);
+      if (!rescaps || gst_caps_is_any (rescaps) || gst_caps_is_empty 
(rescaps)) {
+        GST_DEBUG_OBJECT (dbin, "Upstream can't provide caps");
+        has_caps = FALSE;
+      }
+    }
+    gst_query_unref (query);
+  }
+
+  /* If upstream *can* do pull-based OR it doesn't have any caps, we always use
+   * a parsebin. If not, we will delay that decision to a later stage
+   * (caps/stream/collection event processing) to figure out if one is really
+   * needed or whether an identity element will be enough */
   INPUT_LOCK (dbin);
-  if (pull_mode) {
+  if (pull_mode || !has_caps) {
     if (!ensure_input_parsebin (dbin, input))
       res = GST_PAD_LINK_REFUSED;
     else if (input->identity) {
@@ -1410,6 +1425,21 @@
       }
       break;
     }
+    case GST_EVENT_SEGMENT:
+    {
+      const GstSegment *segment = NULL;
+      gst_event_parse_segment (event, &segment);
+
+      /* All data reaching multiqueue must be in time format. If it's not, we
+       * need to use a parsebin on the incoming stream.
+       */
+      if (segment && segment->format != GST_FORMAT_TIME && !input->parsebin) {
+        GST_DEBUG_OBJECT (sinkpad,
+            "Got a non-time segment, forcing parsebin handling");
+        ensure_input_parsebin (dbin, input);
+      }
+      break;
+    }
     default:
       break;
   }
@@ -2298,6 +2328,7 @@
 check_slot_reconfiguration (GstDecodebin3 * dbin, MultiQueueSlot * slot)
 {
   DecodebinOutputStream *output;
+  GstMessage *msg = NULL;
 
   SELECTION_LOCK (dbin);
   output = get_output_for_slot (slot);
@@ -2306,7 +2337,7 @@
     return;
   }
 
-  if (!reconfigure_output_stream (output, slot)) {
+  if (!reconfigure_output_stream (output, slot, &msg)) {
     GST_DEBUG_OBJECT (dbin, "Removing failing stream from selection: %s ",
         gst_stream_get_stream_id (slot->active_stream));
     slot->dbin->requested_selection =
@@ -2314,12 +2345,14 @@
         gst_stream_get_stream_id (slot->active_stream));
     dbin->selection_updated = TRUE;
     SELECTION_UNLOCK (dbin);
+    if (msg)
+      gst_element_post_message ((GstElement *) slot->dbin, msg);
     reassign_slot (dbin, slot);
   } else {
-    GstMessage *msg = is_selection_done (dbin);
+    GstMessage *selection_msg = is_selection_done (dbin);
     SELECTION_UNLOCK (dbin);
-    if (msg)
-      gst_element_post_message ((GstElement *) slot->dbin, msg);
+    if (selection_msg)
+      gst_element_post_message ((GstElement *) slot->dbin, selection_msg);
   }
 }
 
@@ -2713,7 +2746,7 @@
  * associated GstStreams should be disabled */
 static gboolean
 reconfigure_output_stream (DecodebinOutputStream * output,
-    MultiQueueSlot * slot)
+    MultiQueueSlot * slot, GstMessage ** msg)
 {
   GstDecodebin3 *dbin = output->dbin;
   GstCaps *new_caps = (GstCaps *) gst_stream_get_caps (slot->active_stream);
@@ -2821,14 +2854,11 @@
       if (output->decoder == NULL) {
         GstCaps *caps;
 
-        SELECTION_UNLOCK (dbin);
         /* FIXME : Should we be smarter if there's a missing decoder ?
          * Should we deactivate that stream ? */
         caps = gst_stream_get_caps (slot->active_stream);
-        gst_element_post_message (GST_ELEMENT_CAST (dbin),
-            gst_missing_decoder_message_new (GST_ELEMENT_CAST (dbin), caps));
+        *msg = gst_missing_decoder_message_new (GST_ELEMENT_CAST (dbin), caps);
         gst_caps_unref (caps);
-        SELECTION_LOCK (dbin);
         ret = FALSE;
         goto cleanup;
       }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-base-1.22.2/gst/playback/gstplaysink.c 
new/gst-plugins-base-1.22.3/gst/playback/gstplaysink.c
--- old/gst-plugins-base-1.22.2/gst/playback/gstplaysink.c      2023-04-11 
18:29:28.000000000 +0200
+++ new/gst-plugins-base-1.22.3/gst/playback/gstplaysink.c      2023-05-19 
10:23:19.000000000 +0200
@@ -4998,9 +4998,8 @@
       /* fall through */
     case GST_STATE_CHANGE_READY_TO_NULL:
       GST_PLAY_SINK_LOCK (playsink);
-      if (playsink->audiochain && playsink->audiochain->sink_volume) {
-        /* remove our links to the volume elements when they were
-         * provided by a sink */
+      if (playsink->audiochain) {
+        /* remove our links to the volume elements */
         disconnect_audio_chain (playsink->audiochain, playsink);
         if (playsink->audiochain->volume)
           gst_object_unref (playsink->audiochain->volume);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.22.2/gst/playback/gsturidecodebin3.c 
new/gst-plugins-base-1.22.3/gst/playback/gsturidecodebin3.c
--- old/gst-plugins-base-1.22.2/gst/playback/gsturidecodebin3.c 2023-04-11 
18:29:28.000000000 +0200
+++ new/gst-plugins-base-1.22.3/gst/playback/gsturidecodebin3.c 2023-05-19 
10:23:19.000000000 +0200
@@ -370,7 +370,7 @@
 static GstSourceHandler *new_source_handler (GstURIDecodeBin3 * uridecodebin,
     GstPlayItem * item, gboolean is_main);
 static void free_source_handler (GstURIDecodeBin3 * uridecodebin,
-    GstSourceHandler * item);
+    GstSourceHandler * item, gboolean lock_state);
 static void free_source_item (GstURIDecodeBin3 * uridecodebin,
     GstSourceItem * item);
 
@@ -976,14 +976,21 @@
   if (handler->is_main_source && handler->play_item->sub_item
       && !handler->play_item->sub_item->handler) {
     GstStateChangeReturn ret;
+
+    /* The state lock is taken to ensure we can atomically change the
+     * urisourcebin back to NULL in case of failures */
+    GST_STATE_LOCK (uridecodebin);
     handler->play_item->sub_item->handler =
         new_source_handler (uridecodebin, handler->play_item, FALSE);
     ret = activate_source_item (handler->play_item->sub_item);
     if (ret == GST_STATE_CHANGE_FAILURE) {
-      free_source_handler (uridecodebin, 
handler->play_item->sub_item->handler);
+      free_source_handler (uridecodebin, handler->play_item->sub_item->handler,
+          FALSE);
       handler->play_item->sub_item->handler = NULL;
+      GST_STATE_UNLOCK (uridecodebin);
       goto sub_item_activation_failed;
     }
+    GST_STATE_UNLOCK (uridecodebin);
   }
 
   return;
@@ -1631,14 +1638,17 @@
   }
 }
 
+/* lock_state: TRUE if the STATE LOCK should be taken. Set to FALSE if the
+ * caller already has taken it */
 static void
 free_source_handler (GstURIDecodeBin3 * uridecodebin,
-    GstSourceHandler * handler)
+    GstSourceHandler * handler, gboolean lock_state)
 {
   GST_LOG_OBJECT (uridecodebin, "source handler %p", handler);
   if (handler->active) {
     GList *iter;
-    GST_STATE_LOCK (uridecodebin);
+    if (lock_state)
+      GST_STATE_LOCK (uridecodebin);
     GST_LOG_OBJECT (uridecodebin, "Removing %" GST_PTR_FORMAT,
         handler->urisourcebin);
     for (iter = handler->sourcepads; iter; iter = iter->next) {
@@ -1648,7 +1658,8 @@
     }
     gst_element_set_state (handler->urisourcebin, GST_STATE_NULL);
     gst_bin_remove ((GstBin *) uridecodebin, handler->urisourcebin);
-    GST_STATE_UNLOCK (uridecodebin);
+    if (lock_state)
+      GST_STATE_UNLOCK (uridecodebin);
     g_list_free (handler->sourcepads);
   }
   if (handler->pending_buffering_msg)
@@ -1672,7 +1683,7 @@
 {
   GST_LOG_OBJECT (uridecodebin, "source item %p", item);
   if (item->handler)
-    free_source_handler (uridecodebin, item->handler);
+    free_source_handler (uridecodebin, item->handler, TRUE);
   g_free (item->uri);
   g_slice_free (GstSourceItem, item);
 }
@@ -1899,12 +1910,16 @@
 
   /* Create missing handlers */
   if (item->main_item->handler == NULL) {
+    /* The state lock is taken to ensure we can atomically change the
+     * urisourcebin back to NULL in case of failures */
+    GST_STATE_LOCK (dec);
     item->main_item->handler = new_source_handler (dec, item, TRUE);
     ret = activate_source_item (item->main_item);
     if (ret == GST_STATE_CHANGE_FAILURE) {
-      free_source_handler (dec, item->main_item->handler);
+      free_source_handler (dec, item->main_item->handler, FALSE);
       item->main_item->handler = NULL;
     }
+    GST_STATE_UNLOCK (dec);
   }
 
   return ret;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.22.2/gst-libs/gst/gl/wgl/gstglcontext_wgl.c 
new/gst-plugins-base-1.22.3/gst-libs/gst/gl/wgl/gstglcontext_wgl.c
--- old/gst-plugins-base-1.22.2/gst-libs/gst/gl/wgl/gstglcontext_wgl.c  
2023-04-11 18:29:28.000000000 +0200
+++ new/gst-plugins-base-1.22.3/gst-libs/gst/gl/wgl/gstglcontext_wgl.c  
2023-05-19 10:23:19.000000000 +0200
@@ -528,5 +528,7 @@
 
   pixfmt = GetPixelFormat (hdc);
 
+  gst_object_unref (window);
+
   return pixel_format_to_structure (hdc, pixfmt);
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-base-1.22.2/gst-plugins-base.doap 
new/gst-plugins-base-1.22.3/gst-plugins-base.doap
--- old/gst-plugins-base-1.22.2/gst-plugins-base.doap   2023-04-11 
18:29:28.000000000 +0200
+++ new/gst-plugins-base-1.22.3/gst-plugins-base.doap   2023-05-19 
10:23:19.000000000 +0200
@@ -36,6 +36,16 @@
 
  <release>
   <Version>
+   <revision>1.22.3</revision>
+   <branch>1.22</branch>
+   <name></name>
+   <created>2023-05-19</created>
+   <file-release 
rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-1.22.3.tar.xz";
 />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
    <revision>1.22.2</revision>
    <branch>1.22</branch>
    <name></name>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-base-1.22.2/meson.build 
new/gst-plugins-base-1.22.3/meson.build
--- old/gst-plugins-base-1.22.2/meson.build     2023-04-11 18:29:28.000000000 
+0200
+++ new/gst-plugins-base-1.22.3/meson.build     2023-05-19 10:23:19.000000000 
+0200
@@ -1,5 +1,5 @@
 project('gst-plugins-base', 'c',
-  version : '1.22.2',
+  version : '1.22.3',
   meson_version : '>= 0.62',
   default_options : [ 'warning_level=1',
                       'buildtype=debugoptimized' ])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-base-1.22.2/po/gst-plugins-base-1.0.pot 
new/gst-plugins-base-1.22.3/po/gst-plugins-base-1.0.pot
--- old/gst-plugins-base-1.22.2/po/gst-plugins-base-1.0.pot     2023-04-11 
18:30:16.468501300 +0200
+++ new/gst-plugins-base-1.22.3/po/gst-plugins-base-1.0.pot     2023-05-19 
10:24:07.610512000 +0200
@@ -6,9 +6,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: gst-plugins-base-1.22.2\n"
+"Project-Id-Version: gst-plugins-base-1.22.3\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-04-11 17:30+0100\n"
+"POT-Creation-Date: 2023-05-19 09:24+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <l...@li.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-base-1.22.2/po/gst-plugins-base.pot 
new/gst-plugins-base-1.22.3/po/gst-plugins-base.pot
--- old/gst-plugins-base-1.22.2/po/gst-plugins-base.pot 2023-04-11 
18:30:16.468501300 +0200
+++ new/gst-plugins-base-1.22.3/po/gst-plugins-base.pot 2023-05-19 
10:24:07.610512000 +0200
@@ -6,9 +6,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: gst-plugins-base-1.22.2\n"
+"Project-Id-Version: gst-plugins-base-1.22.3\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-04-11 17:30+0100\n"
+"POT-Creation-Date: 2023-05-19 09:24+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <l...@li.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.22.2/tests/check/libs/allocators.c 
new/gst-plugins-base-1.22.3/tests/check/libs/allocators.c
--- old/gst-plugins-base-1.22.2/tests/check/libs/allocators.c   2023-04-11 
18:29:28.000000000 +0200
+++ new/gst-plugins-base-1.22.3/tests/check/libs/allocators.c   2023-05-19 
10:23:19.000000000 +0200
@@ -95,7 +95,43 @@
   gst_memory_unmap (mem, &info);
 
   gst_memory_unref (mem);
-  fail_unless (g_close (fd, NULL) == 0);
+  gst_object_unref (alloc);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_fdmem_dont_close)
+{
+  GstAllocator *alloc;
+  GstMemory *mem;
+  GstMapInfo info;
+  GError *error = NULL;
+  int fd;
+  const char *data = "0123456789";
+
+  fd = g_file_open_tmp (NULL, NULL, &error);
+  fail_if (error);
+  fail_unless (write (fd, data, 10) == 10);
+
+  alloc = gst_fd_allocator_new ();
+  fail_unless (alloc);
+  mem = gst_fd_allocator_alloc (alloc, fd, 10,
+      GST_FD_MEMORY_FLAG_KEEP_MAPPED | GST_FD_MEMORY_FLAG_DONT_CLOSE);
+
+  fail_unless (gst_memory_map (mem, &info, GST_MAP_READ));
+  fail_unless (info.data[5] == '5');
+  gst_memory_unmap (mem, &info);
+
+  fail_unless (gst_memory_map (mem, &info, GST_MAP_WRITE));
+  info.data[5] = 'X';
+  gst_memory_unmap (mem, &info);
+
+  fail_unless (gst_memory_map (mem, &info, GST_MAP_READ));
+  fail_unless (info.data[5] == 'X');
+  gst_memory_unmap (mem, &info);
+
+  gst_memory_unref (mem);
+  fail_unless (g_close (fd, NULL));
   gst_object_unref (alloc);
 }
 
@@ -110,6 +146,7 @@
   suite_add_tcase (s, tc_chain);
   tcase_add_test (tc_chain, test_dmabuf);
   tcase_add_test (tc_chain, test_fdmem);
+  tcase_add_test (tc_chain, test_fdmem_dont_close);
 
   return s;
 }

++++++ reduce-required-meson.patch ++++++
--- /var/tmp/diff_new_pack.pf7oMz/_old  2023-05-28 19:21:39.132537049 +0200
+++ /var/tmp/diff_new_pack.pf7oMz/_new  2023-05-28 19:21:39.136537073 +0200
@@ -1,10 +1,10 @@
-Index: gst-plugins-base-1.22.2/meson.build
+Index: gst-plugins-base-1.22.3/meson.build
 ===================================================================
---- gst-plugins-base-1.22.2.orig/meson.build
-+++ gst-plugins-base-1.22.2/meson.build
+--- gst-plugins-base-1.22.3.orig/meson.build
++++ gst-plugins-base-1.22.3/meson.build
 @@ -1,6 +1,6 @@
  project('gst-plugins-base', 'c',
-   version : '1.22.2',
+   version : '1.22.3',
 -  meson_version : '>= 0.62',
 +  meson_version : '>= 0.61',
    default_options : [ 'warning_level=1',

Reply via email to