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 2022-03-31 17:18:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gstreamer-plugins-base (Old)
 and      /work/SRC/openSUSE:Factory/.gstreamer-plugins-base.new.1900 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gstreamer-plugins-base"

Thu Mar 31 17:18:22 2022 rev:84 rq:965360 version:1.20.1

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/gstreamer-plugins-base/gstreamer-plugins-base.changes
    2022-03-24 22:57:10.384202356 +0100
+++ 
/work/SRC/openSUSE:Factory/.gstreamer-plugins-base.new.1900/gstreamer-plugins-base.changes
  2022-03-31 17:18:37.309317336 +0200
@@ -1,0 +2,7 @@
+Sat Mar 26 17:25:23 UTC 2022 - Bj??rn Lie <bjorn....@gmail.com>
+
+- Add 5a074a11f90e3d70b24bf0c535ab0480fad9e701.patch: playsink:
+  Complete reconfiguration on pad release.
+- Use ldconfig_scriptlets macro for post(un) handling.
+
+-------------------------------------------------------------------

New:
----
  5a074a11f90e3d70b24bf0c535ab0480fad9e701.patch

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

Other differences:
------------------
++++++ gstreamer-plugins-base.spec ++++++
--- /var/tmp/diff_new_pack.VI1lAY/_old  2022-03-31 17:18:37.825311515 +0200
+++ /var/tmp/diff_new_pack.VI1lAY/_new  2022-03-31 17:18:37.833311424 +0200
@@ -30,10 +30,10 @@
 Source1:        gstreamer-plugins-base.appdata.xml
 Source2:        baselibs.conf
 
-# PATCH-FIX-OPENSUSE gstreamer-plugins-base-gl-deps.patch dims...@opensuse.org 
-- Local workaround for 
https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/735
-#Patch3:         gstreamer-plugins-base-gl-deps.patch
 Patch4:         add_wayland_dep_to_tests.patch
 Patch5:         MR-221-video-anc-add-two-new-CEA-608-caption-formats.patch
+# PATCH-FIX-UPSTREAM 5a074a11f90e3d70b24bf0c535ab0480fad9e701.patch -- 
playsink: Complete reconfiguration on pad release
+Patch6:         
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/5a074a11f90e3d70b24bf0c535ab0480fad9e701.patch
 
 BuildRequires:  Mesa-libGLESv3-devel
 BuildRequires:  cdparanoia-devel
@@ -491,7 +491,10 @@
 %lang_package
 
 %prep
-%autosetup -n %{_name}-%{version} -p1
+%autosetup -n %{_name}-%{version} -N
+%patch4 -p1
+%patch5 -p1
+%patch6 -p3
 
 %build
 export PYTHON=%{_bindir}/python3
@@ -520,30 +523,18 @@
 find %{buildroot} -type f -name "*.la" -delete -print
 %find_lang %{_name}-%{gst_branch}
 
-%post -n libgstallocators-1_0-0 -p /sbin/ldconfig
-%postun -n libgstallocators-1_0-0 -p /sbin/ldconfig
-%post -n libgstapp-1_0-0 -p /sbin/ldconfig
-%postun -n libgstapp-1_0-0 -p /sbin/ldconfig
-%post -n libgstaudio-1_0-0 -p /sbin/ldconfig
-%postun -n libgstaudio-1_0-0 -p /sbin/ldconfig
-%post -n libgstfft-1_0-0 -p /sbin/ldconfig
-%postun -n libgstfft-1_0-0 -p /sbin/ldconfig
-%post -n libgstgl-1_0-0 -p /sbin/ldconfig
-%postun -n libgstgl-1_0-0 -p /sbin/ldconfig
-%post -n libgstpbutils-1_0-0 -p /sbin/ldconfig
-%postun -n libgstpbutils-1_0-0 -p /sbin/ldconfig
-%post -n libgstriff-1_0-0 -p /sbin/ldconfig
-%postun -n libgstriff-1_0-0 -p /sbin/ldconfig
-%post -n libgstrtp-1_0-0 -p /sbin/ldconfig
-%postun -n libgstrtp-1_0-0 -p /sbin/ldconfig
-%post -n libgstrtsp-1_0-0 -p /sbin/ldconfig
-%postun -n libgstrtsp-1_0-0 -p /sbin/ldconfig
-%post -n libgstsdp-1_0-0 -p /sbin/ldconfig
-%postun -n libgstsdp-1_0-0 -p /sbin/ldconfig
-%post -n libgsttag-1_0-0 -p /sbin/ldconfig
-%postun -n libgsttag-1_0-0 -p /sbin/ldconfig
-%post -n libgstvideo-1_0-0 -p /sbin/ldconfig
-%postun -n libgstvideo-1_0-0 -p /sbin/ldconfig
+%ldconfig_scriptlets -n libgstallocators-1_0-0
+%ldconfig_scriptlets -n libgstapp-1_0-0
+%ldconfig_scriptlets -n libgstaudio-1_0-0
+%ldconfig_scriptlets -n libgstfft-1_0-0
+%ldconfig_scriptlets -n libgstgl-1_0-0
+%ldconfig_scriptlets -n libgstpbutils-1_0-0
+%ldconfig_scriptlets -n libgstriff-1_0-0
+%ldconfig_scriptlets -n libgstrtp-1_0-0
+%ldconfig_scriptlets -n libgstrtsp-1_0-0
+%ldconfig_scriptlets -n libgstsdp-1_0-0
+%ldconfig_scriptlets -n libgsttag-1_0-0
+%ldconfig_scriptlets -n libgstvideo-1_0-0
 
 %files
 %license COPYING

++++++ 5a074a11f90e3d70b24bf0c535ab0480fad9e701.patch ++++++
>From 5a074a11f90e3d70b24bf0c535ab0480fad9e701 Mon Sep 17 00:00:00 2001
From: Jan Schmidt <j...@centricular.com>
Date: Fri, 6 Aug 2021 19:27:02 +1000
Subject: [PATCH] playsink: Complete reconfiguration on pad release.

Requesting a new pad can start a reconfiguration cycle, where
playsink will block all input pads and wait for data on them
before doing internal reconfiguration. If a pad is released,
that reconfiguration might never trigger because it's now waiting
for a pad that doesn't exist any more.

In that case, complete the reconfiguration on pad release.

Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1940>
---
 .../gst/playback/gstplaysink.c                | 89 ++++++++++++++-----
 1 file changed, 66 insertions(+), 23 deletions(-)

diff --git a/subprojects/gst-plugins-base/gst/playback/gstplaysink.c 
b/subprojects/gst-plugins-base/gst/playback/gstplaysink.c
index 095a0bbcf31..ebef70d977e 100644
--- a/subprojects/gst-plugins-base/gst/playback/gstplaysink.c
+++ b/subprojects/gst-plugins-base/gst/playback/gstplaysink.c
@@ -194,6 +194,7 @@ struct _GstPlaySink
 
   gboolean async_pending;
   gboolean need_async_start;
+  gboolean reconfigure_pending;
 
   GstPlayFlags flags;
 
@@ -412,6 +413,8 @@ static void gst_play_sink_navigation_init (gpointer g_iface,
 static void gst_play_sink_colorbalance_init (gpointer g_iface,
     gpointer g_iface_data);
 
+static gboolean is_raw_pad (GstPad * pad);
+
 static void
 _do_init_type (GType type)
 {
@@ -3231,6 +3234,19 @@ gst_play_sink_do_reconfigure (GstPlaySink * playsink)
     need_text = TRUE;
   }
 
+  if (playsink->video_pad) {
+    playsink->video_pad_raw = is_raw_pad (playsink->video_pad);
+    GST_DEBUG_OBJECT (playsink, "Video pad is raw: %d",
+        playsink->video_pad_raw);
+  }
+
+  if (playsink->audio_pad) {
+    playsink->audio_pad_raw = is_raw_pad (playsink->audio_pad);
+    GST_DEBUG_OBJECT (playsink, "Audio pad is raw: %d",
+        playsink->audio_pad_raw);
+  }
+
+
   if (((flags & GST_PLAY_FLAG_VIDEO)
           || (flags & GST_PLAY_FLAG_NATIVE_VIDEO)) && playsink->video_pad) {
     /* we have video and we are requested to show it */
@@ -3881,6 +3897,9 @@ gst_play_sink_do_reconfigure (GstPlaySink * playsink)
   update_av_offset (playsink);
   update_text_offset (playsink);
   do_async_done (playsink);
+
+  playsink->reconfigure_pending = FALSE;
+
   GST_PLAY_SINK_UNLOCK (playsink);
 
   return TRUE;
@@ -4333,11 +4352,39 @@ gst_play_sink_reconfigure (GstPlaySink * playsink)
   video_set_blocked (playsink, TRUE);
   audio_set_blocked (playsink, TRUE);
   text_set_blocked (playsink, TRUE);
+  playsink->reconfigure_pending = TRUE;
   GST_PLAY_SINK_UNLOCK (playsink);
 
   return TRUE;
 }
 
+/* Called with PLAY_SINK_LOCK */
+static gboolean
+gst_play_sink_ready_to_reconfigure_locked (GstPlaySink * playsink)
+{
+  /* We reconfigure when for ALL streams:
+   * * there isn't a pad
+   * * OR the pad is blocked
+   * * OR there are no pending blocks on that pad
+   */
+  if (playsink->reconfigure_pending == FALSE)
+    return FALSE;
+
+  if (playsink->video_pad && !playsink->video_pad_blocked
+      && PENDING_VIDEO_BLOCK (playsink))
+    return FALSE;
+
+  if (playsink->audio_pad && !playsink->audio_pad_blocked
+      && PENDING_AUDIO_BLOCK (playsink))
+    return FALSE;
+
+  if (playsink->text_pad && !playsink->text_pad_blocked
+      && PENDING_TEXT_BLOCK (playsink))
+    return FALSE;
+
+  return TRUE;
+}
+
 static GstPadProbeReturn
 sinkpad_blocked_cb (GstPad * blockedpad, GstPadProbeInfo * info,
     gpointer user_data)
@@ -4365,31 +4412,9 @@ sinkpad_blocked_cb (GstPad * blockedpad, GstPadProbeInfo 
* info,
     GST_DEBUG_OBJECT (pad, "Text pad blocked");
   }
 
-  /* We reconfigure when for ALL streams:
-   * * there isn't a pad
-   * * OR the pad is blocked
-   * * OR there are no pending blocks on that pad
-   */
-
-  if ((!playsink->video_pad || playsink->video_pad_blocked
-          || !PENDING_VIDEO_BLOCK (playsink)) && (!playsink->audio_pad
-          || playsink->audio_pad_blocked || !PENDING_AUDIO_BLOCK (playsink))
-      && (!playsink->text_pad || playsink->text_pad_blocked
-          || !PENDING_TEXT_BLOCK (playsink))) {
+  if (gst_play_sink_ready_to_reconfigure_locked (playsink)) {
     GST_DEBUG_OBJECT (playsink, "All pads blocked -- reconfiguring");
 
-    if (playsink->video_pad) {
-      playsink->video_pad_raw = is_raw_pad (playsink->video_pad);
-      GST_DEBUG_OBJECT (playsink, "Video pad is raw: %d",
-          playsink->video_pad_raw);
-    }
-
-    if (playsink->audio_pad) {
-      playsink->audio_pad_raw = is_raw_pad (playsink->audio_pad);
-      GST_DEBUG_OBJECT (playsink, "Audio pad is raw: %d",
-          playsink->audio_pad_raw);
-    }
-
     gst_play_sink_do_reconfigure (playsink);
 
     video_set_blocked (playsink, FALSE);
@@ -4681,6 +4706,7 @@ gst_play_sink_release_pad (GstPlaySink * playsink, GstPad 
* pad)
     res = &pad;
     untarget = FALSE;
   }
+
   GST_PLAY_SINK_UNLOCK (playsink);
 
   if (*res) {
@@ -4694,6 +4720,23 @@ gst_play_sink_release_pad (GstPlaySink * playsink, 
GstPad * pad)
     gst_element_remove_pad (GST_ELEMENT_CAST (playsink), *res);
     *res = NULL;
   }
+
+  GST_PLAY_SINK_LOCK (playsink);
+
+  /* If we have a pending reconfigure, we might have met the conditions
+   * to reconfigure now */
+  if (gst_play_sink_ready_to_reconfigure_locked (playsink)) {
+    GST_DEBUG_OBJECT (playsink,
+        "All pads ready after release -- reconfiguring");
+
+    gst_play_sink_do_reconfigure (playsink);
+
+    video_set_blocked (playsink, FALSE);
+    audio_set_blocked (playsink, FALSE);
+    text_set_blocked (playsink, FALSE);
+  }
+
+  GST_PLAY_SINK_UNLOCK (playsink);
 }
 
 static void
-- 
GitLab

Reply via email to