Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package gstreamer for openSUSE:Factory 
checked in at 2024-01-05 21:40:01
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gstreamer (Old)
 and      /work/SRC/openSUSE:Factory/.gstreamer.new.28375 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gstreamer"

Fri Jan  5 21:40:01 2024 rev:92 rq:1136819 version:1.22.8

Changes:
--------
--- /work/SRC/openSUSE:Factory/gstreamer/gstreamer.changes      2023-11-17 
20:49:02.872060673 +0100
+++ /work/SRC/openSUSE:Factory/.gstreamer.new.28375/gstreamer.changes   
2024-01-05 21:40:08.411486996 +0100
@@ -1,0 +2,26 @@
+Thu Jan  4 07:50:55 UTC 2024 - Antonio Larrosa <alarr...@suse.com>
+
+- Update to version 1.22.8:
+  + Highlighted bugfixes in 1.22.8
+    - Security fixes for the AV1 video codec parser
+    - avdec video decoder: fix another possible deadlock with
+      FFmpeg 6.1
+    - qtdemux: reverse playback and seeking fixes for files with
+      raw audio streams
+    - v4l2: fix "newly allocated buffer ... is not free" warning
+      log flood
+    - GstPlay + GstPlayer library fixes
+    - dtls: Fix build failure on Windows when compiling against
+      OpenSSL 3.2.0
+    - d3d11screencapturesrc: Fix wrong color with HDR enabled
+    - Cerbero build tool: More python 3.12 string escape warning
+      fixes; make sure to bundle build tools as well
+    - various bug fixes, build fixes, memory leak fixes, and other
+      stability and reliability improvements
+  + gstreamer
+    - buffer: Unref memories before metas
+    - pad: Recheck pads when linking after temporary unlock
+    - baseparse: Fixes to buffers extracted from adapter
+- Rebase reduce-required-meson.patch
+
+-------------------------------------------------------------------

Old:
----
  gstreamer-1.22.7.tar.xz

New:
----
  gstreamer-1.22.8.tar.xz

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

Other differences:
------------------
++++++ gstreamer.spec ++++++
--- /var/tmp/diff_new_pack.CFDHoW/_old  2024-01-05 21:40:09.271518443 +0100
+++ /var/tmp/diff_new_pack.CFDHoW/_new  2024-01-05 21:40:09.271518443 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package gstreamer
 #
-# Copyright (c) 2023 SUSE LLC
+# Copyright (c) 2024 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
 %define gst_branch 1.0
 
 Name:           gstreamer
-Version:        1.22.7
+Version:        1.22.8
 Release:        0
 Summary:        Streaming-Media Framework Runtime
 License:        LGPL-2.1-or-later

++++++ gstreamer-1.22.7.tar.xz -> gstreamer-1.22.8.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.22.7/ChangeLog 
new/gstreamer-1.22.8/ChangeLog
--- old/gstreamer-1.22.7/ChangeLog      2023-11-13 12:04:53.789374600 +0100
+++ new/gstreamer-1.22.8/ChangeLog      2023-12-18 13:10:07.420446000 +0100
@@ -1,3 +1,81 @@
+=== release 1.22.8 ===
+
+2023-12-18 12:09:37 +0000  Tim-Philipp Müller <t...@centricular.com>
+
+       * NEWS:
+       * RELEASE:
+       * gstreamer.doap:
+       * meson.build:
+         Release 1.22.8
+
+2023-11-27 13:16:47 +0100  Jan Alexander Steffens (heftig) 
<jan.steff...@ltnglobal.com>
+
+       * libs/gst/base/gstbaseparse.c:
+         baseparse: Reset metadata for reverse playback fragment buffers
+         Don't let the adapter leak uncontrollable values.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5720>
+
+2023-11-27 12:29:08 +0100  Jan Alexander Steffens (heftig) 
<jan.steff...@ltnglobal.com>
+
+       * libs/gst/base/gstbaseparse.c:
+         baseparse: Add missing gst_buffer_make_writable
+         When the subclass attempts to finish without an explicit `out_buffer`,
+         we take a buffer from our adapter. We need to make this buffer 
writable
+         before copying the metadata.
+         This led to data races such as in the following pipeline, which 
randomly
+         messed up the buffer PTS:
+         gst-launch-1.0 -e audiotestsrc timestamp-offset=5555 num-buffers=100 \
+         ! opusenc ! tee name=t ! queue ! opusparse ! fakesink silent=0 \
+         t. ! queue ! opusparse ! fakesink silent=0 -v | grep '0000, dur'
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5720>
+
+2023-03-15 09:11:51 -0400  Xavier Claessens <xavier.claess...@collabora.com>
+
+       * gst/gstbuffer.c:
+       * tests/check/gst/gstbufferpool.c:
+         gstbuffer: Add parent meta when a copy shares memory with parent
+         When copying a buffer, for example with gst_buffer_make_writable(), 
the
+         new buffer might reference the same GstMemory as the src buffer,
+         making those memories not writable. If the src buffer gets disposed
+         first it should return to its buffer pool, but since some of its
+         memories are not writable it gets discarded and new buffer/memory gets
+         allocated.
+         Solves this by making the new buffer keep a reference to the src 
buffer,
+         that ensures that by the time the src buffer gets disposed no other
+         buffer are referencing its memories and it can thus return safely to 
its
+         pool.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5696>
+
+2023-03-09 22:18:12 -0800  Xavier Claessens <xavier.claess...@collabora.com>
+
+       * gst/gstbuffer.c:
+       * tests/check/gst/gstbufferpool.c:
+         gstbuffer: Unref memories before metas
+         gst_buffer_add_parent_buffer_meta() is used when a GstBuffer uses
+         GstMemory from another buffer that was allocated from a pool. In that
+         case we want to make sure the buffer returns to the pool when the 
memory
+         is writable again, otherwise a copy of the memory is created. That 
means
+         the child buffer must drop its ref to the memory first, then drop the
+         ref to parent buffer so it can return to the pool when it is the only
+         owner of the memory.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5696>
+
+2023-11-15 10:03:52 +0000  Daniel Moberg <danie...@axis.com>
+
+       * gst/gstpad.c:
+         gstpad: Recheck pads when linking after temporary unlock
+         This commit makes sure that pads are valid for linking
+         after the pads has been temporarily unlocked in the linking process.
+         Not doing this opens up for a race condition where
+         pads potentially can be linked twice.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5678>
+
+2023-11-13 14:57:09 +0000  Tim-Philipp Müller <t...@centricular.com>
+
+       * meson.build:
+         Back to development
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5650>
+
 === release 1.22.7 ===
 
 2023-11-13 11:04:22 +0000  Tim-Philipp Müller <t...@centricular.com>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.22.7/NEWS new/gstreamer-1.22.8/NEWS
--- old/gstreamer-1.22.7/NEWS   2023-11-13 12:04:22.000000000 +0100
+++ new/gstreamer-1.22.8/NEWS   2023-12-18 13:09:37.000000000 +0100
@@ -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.7 and was
-released on 13 November 2023.
+The latest bug-fix release in the stable 1.22 series is 1.22.8 and was
+released on 18 December 2023.
 
 See https://gstreamer.freedesktop.org/releases/1.22/ for the latest
 version of this document.
 
-Last updated: Monday 13 November 2023, 10:00 UTC (log)
+Last updated: Monday 18 December 2023, 11:00 UTC (log)
 
 Introduction
 
@@ -2582,6 +2582,160 @@
 -   List of Merge Requests applied in 1.22.7
 -   List of Issues fixed in 1.22.7
 
+1.22.8
+
+The eight 1.22 bug-fix release (1.22.8) was released on 18 December
+2023.
+
+This release only contains bugfixes and security fixes and it should be
+safe to update from 1.22.x.
+
+Highlighted bugfixes in 1.22.8
+
+-   Security fixes for the AV1 video codec parser
+-   avdec video decoder: fix another possible deadlock with FFmpeg 6.1
+-   qtdemux: reverse playback and seeking fixes for files with raw audio
+    streams
+-   v4l2: fix “newly allocated buffer … is not free” warning log flood
+-   GstPlay + GstPlayer library fixes
+-   dtls: Fix build failure on Windows when compiling against OpenSSL
+    3.2.0
+-   d3d11screencapturesrc: Fix wrong color with HDR enabled
+-   Cerbero build tool: More python 3.12 string escape warning fixes;
+    make sure to bundle build tools as well
+-   various bug fixes, build fixes, memory leak fixes, and other
+    stability and reliability improvements
+
+gstreamer
+
+-   buffer: Unref memories before metas
+-   pad: Recheck pads when linking after temporary unlock
+-   baseparse: Fixes to buffers extracted from adapter
+
+gst-plugins-base
+
+-   appsrc: Fix flow return when buffer is dropped
+-   audioringbuffer: Don’t try to map MONO channel
+-   encoding-target: Properly free when missing type field in
+    parse_encoding_profile
+-   pbutils: Don’t include default vp9 parameters in resulting codec
+    mime string
+-   videorate: Don’t forget last_ts on caps changes
+
+gst-plugins-good
+
+-   dcaparse: keep upstream buffer meta
+-   rtpklvdepay: Recover after invalid fragmented KLV unit
+-   matroska-demux: fix accumulated base offset in segment seeks
+-   qtdemux: fix bug report URL
+-   qtdemux: Don’t overflow sample index
+-   qtdemux: Fix reverse playback for pcm audio stream
+-   qtdemux: Ignore raw audio streams when adjusting seek
+-   qtdemux: Under-seeking to a key unit in certain (encoded by Adobe
+    products) ProRes movies (macOS x86_64 & arm64, Windows x86_64, …)
+-   rtpac3depay: should output audio/x-ac3 not audio/ac3
+-   rtp: Fix incorrect RTP channel order lookup by name
+-   v4l2bufferpool: add lock as atomic operation for seek
+
+gst-plugins-bad
+
+-   aesenc: Fix IV length addition to output buffer length
+-   av1parser: Fix array sizes in scalability structure
+-   camerabin: Fix source updates with user filters
+-   codecparsers: av1: Clip max tile rows and cols values
+-   dtlscertificate: Define WINSOCKAPI before including windows.h
+-   d3d11: fix building with address sanitizer
+-   d3d11screencapturesrc: Fix wrong color with HDR enabled
+-   h264decoder: Fix GstVideoCodecFrame leak
+-   ladspa: Make RDF parsing truly optional
+-   rtponviftimestamp: Fix drop-out-of-segment=false mode
+-   qsvdecoder: Fix stream format detection
+-   webrtcsdp: Remove fingerprint validation that doesn’t make sense
+-   GstPlay: Automatically flush the bus when disposing the signal
+    adapter
+-   GstPlayer: Without dispatcher emit signals directly instead of via
+    the default main context
+
+gst-plugins-ugly
+
+-   No changes
+
+gst-plugins-rs
+
+-   threadshare: Fix a deadlock in used-socket notification
+-   threadshare: Fix a typo while logging
+-   webrtcsink: don’t panic on failure to request pad from webrtcbin
+-   ndi: Remove wrong Clone impl on RecvInstance
+-   ndi: Don’t mark private type as public
+-   fallbacksrc: Fix timeout scheduling
+
+gst-libav
+
+-   avviddec: Unlock stream lock while waiting for decoded frame. Fixes
+    potential deadlock
+-   avviddec: Calculate latency only for fixed framerate
+
+gst-rtsp-server
+
+-   No changes
+
+gstreamer-vaapi
+
+-   No changes
+
+gstreamer-sharp
+
+-   No changes
+
+gst-omx
+
+-   No changes
+
+gst-python
+
+-   No changes
+
+gst-editing-services
+
+-   No changes
+
+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.8
+
+-   cerbero: Fix some more python 3.12 string escape warnings
+-   cerbero: Fix bundle-source not including build-tools recipes, fix
+    CalledProcessError handling
+-   pango: Add Perl interpreter consistency check
+
+Contributors to 1.22.8
+
+Alessandro Bono, Alexander Slobodeniuk, Arun Raghavan, Benjamin
+Gaignard, Daniel Moberg, Dongyun Seo, Doug Nazar, Guillaume Desmottes,
+Hosang Lee, Jan Alexander Steffens (heftig), jeri.li, Jimmy Ohn, L. E.
+Segovia, Mathieu Duponchelle, Nicolas Dufresne, Nirbheek Chauhan,
+Olivier Crête, Philippe Normand, Piotr Brzeziński, Rabindra Harlalka,
+Robert Mader, Robin Gustavsson, Sebastian Dröge, Seungha Yang, Stefan
+Brüns, 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.22.8
+
+-   List of Merge Requests applied in 1.22.8
+-   List of Issues fixed in 1.22.8
+
 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/gstreamer-1.22.7/RELEASE new/gstreamer-1.22.8/RELEASE
--- old/gstreamer-1.22.7/RELEASE        2023-11-13 12:04:22.000000000 +0100
+++ new/gstreamer-1.22.8/RELEASE        2023-12-18 13:09:37.000000000 +0100
@@ -1,4 +1,4 @@
-This is GStreamer core 1.22.7.
+This is GStreamer core 1.22.8.
 
 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/gstreamer-1.22.7/gst/gstbuffer.c 
new/gstreamer-1.22.8/gst/gstbuffer.c
--- old/gstreamer-1.22.7/gst/gstbuffer.c        2023-11-13 12:04:22.000000000 
+0100
+++ new/gstreamer-1.22.8/gst/gstbuffer.c        2023-12-18 13:09:37.000000000 
+0100
@@ -546,6 +546,7 @@
   GstMetaItem *walk;
   gsize bufsize;
   gboolean region = FALSE;
+  gboolean sharing_mem = FALSE;
 
   g_return_val_if_fail (dest != NULL, FALSE);
   g_return_val_if_fail (src != NULL, FALSE);
@@ -649,6 +650,9 @@
           return FALSE;
         }
 
+        /* Indicates if dest references any of src memories. */
+        sharing_mem |= (newmem == mem);
+
         _memory_add (dest, -1, newmem);
         left -= tocopy;
       }
@@ -662,6 +666,10 @@
         gst_buffer_remove_memory_range (dest, dest_len, -1);
         return FALSE;
       }
+
+      /* If we were sharing memory and the merge is no-op, we are still 
sharing. */
+      sharing_mem &= (mem == GST_BUFFER_MEM_PTR (dest, 0));
+
       _replace_memory (dest, len, 0, len, mem);
     }
   }
@@ -710,6 +718,14 @@
     }
   }
 
+  if (sharing_mem && src->pool != NULL) {
+    /* The new buffer references some of src's memories. We have to ensure that
+     * src buffer does not return to its buffer pool as long as its memories 
are
+     * used by other buffers. That would cause the buffer to be discarted by 
the
+     * pool because its memories are not writable. */
+    gst_buffer_add_parent_buffer_meta (dest, src);
+  }
+
   return TRUE;
 }
 
@@ -789,6 +805,15 @@
 
   GST_CAT_LOG (GST_CAT_BUFFER, "finalize %p", buffer);
 
+  /* free our memory */
+  len = GST_BUFFER_MEM_LEN (buffer);
+  for (i = 0; i < len; i++) {
+    gst_memory_unlock (GST_BUFFER_MEM_PTR (buffer, i), 
GST_LOCK_FLAG_EXCLUSIVE);
+    gst_mini_object_remove_parent (GST_MINI_OBJECT_CAST (GST_BUFFER_MEM_PTR
+            (buffer, i)), GST_MINI_OBJECT_CAST (buffer));
+    gst_memory_unref (GST_BUFFER_MEM_PTR (buffer, i));
+  }
+
   /* free metadata */
   for (walk = GST_BUFFER_META (buffer); walk; walk = next) {
     GstMeta *meta = &walk->meta;
@@ -807,15 +832,6 @@
    * itself */
   msize = GST_BUFFER_SLICE_SIZE (buffer);
 
-  /* free our memory */
-  len = GST_BUFFER_MEM_LEN (buffer);
-  for (i = 0; i < len; i++) {
-    gst_memory_unlock (GST_BUFFER_MEM_PTR (buffer, i), 
GST_LOCK_FLAG_EXCLUSIVE);
-    gst_mini_object_remove_parent (GST_MINI_OBJECT_CAST (GST_BUFFER_MEM_PTR
-            (buffer, i)), GST_MINI_OBJECT_CAST (buffer));
-    gst_memory_unref (GST_BUFFER_MEM_PTR (buffer, i));
-  }
-
   /* we set msize to 0 when the buffer is part of the memory block */
   if (msize) {
 #ifdef USE_POISONING
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.22.7/gst/gstpad.c 
new/gstreamer-1.22.8/gst/gstpad.c
--- old/gstreamer-1.22.7/gst/gstpad.c   2023-11-13 12:04:22.000000000 +0100
+++ new/gstreamer-1.22.8/gst/gstpad.c   2023-12-18 13:09:37.000000000 +0100
@@ -2378,22 +2378,18 @@
   }
 }
 
-/* FIXME leftover from an attempt at refactoring... */
-/* call with the two pads unlocked, when this function returns GST_PAD_LINK_OK,
- * the two pads will be locked in the srcpad, sinkpad order. */
+/* check that pads does not have any exisiting links
+ * and that hierarchy is valid for linking.
+ *
+ * The LOCK should be held on both pads
+ */
 static GstPadLinkReturn
-gst_pad_link_prepare (GstPad * srcpad, GstPad * sinkpad, GstPadLinkCheck flags)
+gst_pad_link_check_relations (GstPad * srcpad, GstPad * sinkpad,
+    GstPadLinkCheck flags)
 {
-  GST_CAT_INFO (GST_CAT_PADS, "trying to link %s:%s and %s:%s",
-      GST_DEBUG_PAD_NAME (srcpad), GST_DEBUG_PAD_NAME (sinkpad));
-
-  GST_OBJECT_LOCK (srcpad);
-
   if (G_UNLIKELY (GST_PAD_PEER (srcpad) != NULL))
     goto src_was_linked;
 
-  GST_OBJECT_LOCK (sinkpad);
-
   if (G_UNLIKELY (GST_PAD_PEER (sinkpad) != NULL))
     goto sink_was_linked;
 
@@ -2403,12 +2399,6 @@
       && !gst_pad_link_check_hierarchy (srcpad, sinkpad))
     goto wrong_hierarchy;
 
-  /* check pad caps for non-empty intersection */
-  if (!gst_pad_link_check_compatible_unlocked (srcpad, sinkpad, flags))
-    goto no_format;
-
-  /* FIXME check pad scheduling for non-empty intersection */
-
   return GST_PAD_LINK_OK;
 
 src_was_linked:
@@ -2418,7 +2408,6 @@
         GST_DEBUG_PAD_NAME (GST_PAD_PEER (srcpad)));
     /* we do not emit a warning in this case because unlinking cannot
      * be made MT safe.*/
-    GST_OBJECT_UNLOCK (srcpad);
     return GST_PAD_LINK_WAS_LINKED;
   }
 sink_was_linked:
@@ -2428,23 +2417,57 @@
         GST_DEBUG_PAD_NAME (GST_PAD_PEER (sinkpad)));
     /* we do not emit a warning in this case because unlinking cannot
      * be made MT safe.*/
-    GST_OBJECT_UNLOCK (sinkpad);
-    GST_OBJECT_UNLOCK (srcpad);
     return GST_PAD_LINK_WAS_LINKED;
   }
 wrong_hierarchy:
   {
     GST_CAT_INFO (GST_CAT_PADS, "pads have wrong hierarchy");
-    GST_OBJECT_UNLOCK (sinkpad);
-    GST_OBJECT_UNLOCK (srcpad);
     return GST_PAD_LINK_WRONG_HIERARCHY;
   }
-no_format:
-  {
+}
+
+/* FIXME leftover from an attempt at refactoring... */
+/* call with the two pads unlocked, when this function returns GST_PAD_LINK_OK,
+ * the two pads will be locked in the srcpad, sinkpad order. */
+static GstPadLinkReturn
+gst_pad_link_prepare (GstPad * srcpad, GstPad * sinkpad, GstPadLinkCheck flags)
+{
+  GstPadLinkReturn result;
+
+  GST_CAT_INFO (GST_CAT_PADS, "trying to link %s:%s and %s:%s",
+      GST_DEBUG_PAD_NAME (srcpad), GST_DEBUG_PAD_NAME (sinkpad));
+
+  GST_OBJECT_LOCK (srcpad);
+  GST_OBJECT_LOCK (sinkpad);
+
+  /* Check pads state, not already linked and correct hierachy. */
+  result = gst_pad_link_check_relations (srcpad, sinkpad, flags);
+  if (result != GST_PAD_LINK_OK)
+    goto unlock_and_return;
+
+  /* check pad caps for non-empty intersection */
+  if (!gst_pad_link_check_compatible_unlocked (srcpad, sinkpad, flags)) {
     GST_CAT_INFO (GST_CAT_PADS, "caps are incompatible");
+    result = GST_PAD_LINK_NOFORMAT;
+    goto unlock_and_return;
+  }
+
+  /* Need to recheck our pads since gst_pad_link_check_compatible_unlocked 
might have temporarily unlocked them.
+     Keeping the first check, because gst_pad_link_check_compatible_unlocked 
potentially is an expensive operation
+     which gst_pad_link_check_relations is not. */
+  result = gst_pad_link_check_relations (srcpad, sinkpad, flags);
+  if (result != GST_PAD_LINK_OK)
+    goto unlock_and_return;
+
+  /* FIXME check pad scheduling for non-empty intersection */
+
+  return GST_PAD_LINK_OK;
+
+unlock_and_return:
+  {
     GST_OBJECT_UNLOCK (sinkpad);
     GST_OBJECT_UNLOCK (srcpad);
-    return GST_PAD_LINK_NOFORMAT;
+    return result;
   }
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.22.7/gstreamer.doap 
new/gstreamer-1.22.8/gstreamer.doap
--- old/gstreamer-1.22.7/gstreamer.doap 2023-11-13 12:04:22.000000000 +0100
+++ new/gstreamer-1.22.8/gstreamer.doap 2023-12-18 13:09:37.000000000 +0100
@@ -40,6 +40,16 @@
 
  <release>
   <Version>
+   <revision>1.22.8</revision>
+   <branch>1.22</branch>
+   <name></name>
+   <created>2023-12-18</created>
+   <file-release 
rdf:resource="https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.22.8.tar.xz";
 />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
    <revision>1.22.7</revision>
    <branch>1.22</branch>
    <name></name>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.22.7/libs/gst/base/gstbaseparse.c 
new/gstreamer-1.22.8/libs/gst/base/gstbaseparse.c
--- old/gstreamer-1.22.7/libs/gst/base/gstbaseparse.c   2023-11-13 
12:04:22.000000000 +0100
+++ new/gstreamer-1.22.8/libs/gst/base/gstbaseparse.c   2023-12-18 
13:09:37.000000000 +0100
@@ -2289,6 +2289,10 @@
       outbuf = gst_buffer_make_writable (outbuf);
       GST_BUFFER_PTS (outbuf) = pts;
       GST_BUFFER_DTS (outbuf) = dts;
+      GST_BUFFER_OFFSET (outbuf) = GST_BUFFER_OFFSET_NONE;
+      GST_BUFFER_DURATION (outbuf) = GST_CLOCK_TIME_NONE;
+      GST_BUFFER_OFFSET_END (outbuf) = GST_BUFFER_OFFSET_NONE;
+      GST_BUFFER_FLAGS (outbuf) = 0;
       parse->priv->buffers_head =
           g_slist_prepend (parse->priv->buffers_head, outbuf);
       outbuf = NULL;
@@ -2728,6 +2732,7 @@
     GstBuffer *src, *dest;
 
     frame->out_buffer = gst_adapter_take_buffer (parse->priv->adapter, size);
+    frame->out_buffer = gst_buffer_make_writable (frame->out_buffer);
     dest = frame->out_buffer;
     src = frame->buffer;
     GST_BUFFER_PTS (dest) = GST_BUFFER_PTS (src);
@@ -2735,7 +2740,7 @@
     GST_BUFFER_OFFSET (dest) = GST_BUFFER_OFFSET (src);
     GST_BUFFER_DURATION (dest) = GST_BUFFER_DURATION (src);
     GST_BUFFER_OFFSET_END (dest) = GST_BUFFER_OFFSET_END (src);
-    GST_MINI_OBJECT_FLAGS (dest) = GST_MINI_OBJECT_FLAGS (src);
+    GST_BUFFER_FLAGS (dest) = GST_BUFFER_FLAGS (src);
   } else {
     gst_adapter_flush (parse->priv->adapter, size);
   }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.22.7/meson.build 
new/gstreamer-1.22.8/meson.build
--- old/gstreamer-1.22.7/meson.build    2023-11-13 12:04:22.000000000 +0100
+++ new/gstreamer-1.22.8/meson.build    2023-12-18 13:09:37.000000000 +0100
@@ -1,5 +1,5 @@
 project('gstreamer', 'c',
-  version : '1.22.7',
+  version : '1.22.8',
   meson_version : '>= 0.62',
   default_options : [ 'warning_level=1',
                       'buildtype=debugoptimized' ])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.22.7/po/gstreamer-1.0.pot 
new/gstreamer-1.22.8/po/gstreamer-1.0.pot
--- old/gstreamer-1.22.7/po/gstreamer-1.0.pot   2023-11-13 12:04:53.513370500 
+0100
+++ new/gstreamer-1.22.8/po/gstreamer-1.0.pot   2023-12-18 13:10:07.144442000 
+0100
@@ -6,9 +6,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: gstreamer-1.22.7\n"
+"Project-Id-Version: gstreamer-1.22.8\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-11-13 11:04+0000\n"
+"POT-Creation-Date: 2023-12-18 12:10+0000\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/gstreamer-1.22.7/po/gstreamer.pot 
new/gstreamer-1.22.8/po/gstreamer.pot
--- old/gstreamer-1.22.7/po/gstreamer.pot       2023-11-13 12:04:53.513370500 
+0100
+++ new/gstreamer-1.22.8/po/gstreamer.pot       2023-12-18 13:10:07.144442000 
+0100
@@ -6,9 +6,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: gstreamer-1.22.7\n"
+"Project-Id-Version: gstreamer-1.22.8\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-11-13 11:04+0000\n"
+"POT-Creation-Date: 2023-12-18 12:10+0000\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/gstreamer-1.22.7/tests/check/gst/gstbufferpool.c 
new/gstreamer-1.22.8/tests/check/gst/gstbufferpool.c
--- old/gstreamer-1.22.7/tests/check/gst/gstbufferpool.c        2023-11-13 
12:04:22.000000000 +0100
+++ new/gstreamer-1.22.8/tests/check/gst/gstbufferpool.c        2023-12-18 
13:09:37.000000000 +0100
@@ -336,6 +336,114 @@
 
 GST_END_TEST;
 
+GST_START_TEST (test_parent_meta)
+{
+  GstBufferPool *pool;
+  GstBuffer *buf1, *buf2, *buf3;
+  GstMemory *mem;
+  gint buf1_dcount = 0;
+  gint buf2_dcount = 0;
+
+  pool = create_pool (1, 0, 0);
+  fail_unless (pool);
+  gst_buffer_pool_set_active (pool, TRUE);
+
+  fail_unless (gst_buffer_pool_acquire_buffer (pool, &buf1,
+          NULL) == GST_FLOW_OK);
+  buffer_track_destroy (buf1, &buf1_dcount);
+
+  /* Create a 2nd buffer reffing the same memory. Set parent meta to make sure
+   * buf1 does not return to pool until buf2 is destroyed. */
+  mem = gst_buffer_get_memory (buf1, 0);
+  buf2 = gst_buffer_new ();
+  gst_buffer_append_memory (buf2, mem);
+  gst_buffer_add_parent_buffer_meta (buf2, buf1);
+  buffer_track_destroy (buf2, &buf2_dcount);
+
+  /* buf1 is still reffed by the meta */
+  gst_buffer_unref (buf1);
+  fail_unless_equals_int (buf1_dcount, 0);
+  fail_unless_equals_int (buf2_dcount, 0);
+
+  /* buf2 gets destroyed and buf1 returns to pool */
+  gst_buffer_unref (buf2);
+  fail_unless_equals_int (buf1_dcount, 0);
+  fail_unless_equals_int (buf2_dcount, 1);
+
+  /* buf1 should be recycled with the same memory */
+  fail_unless (gst_buffer_pool_acquire_buffer (pool, &buf3,
+          NULL) == GST_FLOW_OK);
+  fail_unless_equals_pointer (buf1, buf3);
+  fail_unless_equals_pointer (mem, gst_buffer_peek_memory (buf3, 0));
+
+  gst_buffer_unref (buf3);
+  fail_unless_equals_int (buf1_dcount, 0);
+  fail_unless_equals_int (buf2_dcount, 1);
+
+  gst_buffer_pool_set_active (pool, FALSE);
+  gst_object_unref (pool);
+  fail_unless_equals_int (buf1_dcount, 1);
+  fail_unless_equals_int (buf2_dcount, 1);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_make_writable_parent_meta)
+{
+  GstBufferPool *pool;
+  GstBuffer *buf1, *buf2, *buf3;
+  GstMemory *mem1, *mem2;
+  gint buf1_dcount = 0;
+  gint buf2_dcount = 0;
+
+  pool = create_pool (1, 0, 0);
+  fail_unless (pool);
+  gst_buffer_pool_set_active (pool, TRUE);
+
+  fail_unless (gst_buffer_pool_acquire_buffer (pool, &buf1,
+          NULL) == GST_FLOW_OK);
+  buffer_track_destroy (buf1, &buf1_dcount);
+
+  /* Make buf1 not writable and copy it */
+  gst_buffer_ref (buf1);
+  buf2 = gst_buffer_make_writable (buf1);
+  buffer_track_destroy (buf2, &buf2_dcount);
+  fail_unless (buf1 != buf2);
+  fail_unless (gst_buffer_is_writable (buf2));
+
+  /* buf1 and buf2 should be sharing the same memory */
+  mem1 = gst_buffer_peek_memory (buf1, 0);
+  mem2 = gst_buffer_peek_memory (buf2, 0);
+  fail_unless_equals_pointer (mem1, mem2);
+
+  /* buf1 is still reffed by the meta */
+  gst_buffer_unref (buf1);
+  fail_unless_equals_int (buf1_dcount, 0);
+  fail_unless_equals_int (buf2_dcount, 0);
+
+  /* buf2 gets destroyed and buf1 returns to pool */
+  gst_buffer_unref (buf2);
+  fail_unless_equals_int (buf1_dcount, 0);
+  fail_unless_equals_int (buf2_dcount, 1);
+
+  /* buf1 should be recycled with the same memory */
+  fail_unless (gst_buffer_pool_acquire_buffer (pool, &buf3,
+          NULL) == GST_FLOW_OK);
+  fail_unless_equals_pointer (buf1, buf3);
+  fail_unless_equals_pointer (mem1, gst_buffer_peek_memory (buf3, 0));
+
+  gst_buffer_unref (buf3);
+  fail_unless_equals_int (buf1_dcount, 0);
+  fail_unless_equals_int (buf2_dcount, 1);
+
+  gst_buffer_pool_set_active (pool, FALSE);
+  gst_object_unref (pool);
+  fail_unless_equals_int (buf1_dcount, 1);
+  fail_unless_equals_int (buf2_dcount, 1);
+}
+
+GST_END_TEST;
+
 static Suite *
 gst_buffer_pool_suite (void)
 {
@@ -355,6 +463,8 @@
   tcase_add_test (tc_chain, test_pool_config_validate);
   tcase_add_test (tc_chain, test_flushing_pool_returns_flushing);
   tcase_add_test (tc_chain, test_no_deadlock_for_buffer_discard);
+  tcase_add_test (tc_chain, test_parent_meta);
+  tcase_add_test (tc_chain, test_make_writable_parent_meta);
 
   return s;
 }

++++++ reduce-required-meson.patch ++++++
--- /var/tmp/diff_new_pack.CFDHoW/_old  2024-01-05 21:40:09.739535556 +0100
+++ /var/tmp/diff_new_pack.CFDHoW/_new  2024-01-05 21:40:09.743535702 +0100
@@ -1,10 +1,10 @@
-Index: gstreamer-1.22.7/meson.build
+Index: gstreamer-1.22.8/meson.build
 ===================================================================
---- gstreamer-1.22.7.orig/meson.build
-+++ gstreamer-1.22.7/meson.build
+--- gstreamer-1.22.8.orig/meson.build
++++ gstreamer-1.22.8/meson.build
 @@ -1,6 +1,6 @@
  project('gstreamer', 'c',
-   version : '1.22.7',
+   version : '1.22.8',
 -  meson_version : '>= 0.62',
 +  meson_version : '>= 0.61',
    default_options : [ 'warning_level=1',

Reply via email to