Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package gstreamer for openSUSE:Factory 
checked in at 2023-07-01 23:17:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gstreamer (Old)
 and      /work/SRC/openSUSE:Factory/.gstreamer.new.13546 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gstreamer"

Sat Jul  1 23:17:22 2023 rev:88 rq:1096142 version:1.22.4

Changes:
--------
--- /work/SRC/openSUSE:Factory/gstreamer/gstreamer.changes      2023-05-28 
19:21:36.696522552 +0200
+++ /work/SRC/openSUSE:Factory/.gstreamer.new.13546/gstreamer.changes   
2023-07-01 23:17:23.586023588 +0200
@@ -1,0 +2,37 @@
+Mon Jun 26 14:13:11 UTC 2023 - Bjørn Lie <bjorn....@gmail.com>
+
+- Update to version 1.22.4:
+  + Highlighted bugfixes:
+    - Security fixes for flacparse, dvdspu, and subparse.
+    - d3d11videosink: Fix error on pause and play.
+    - decklink: Correctly handle SDK strings on macOS and free
+      strings after usage on Linux.
+    - filesink: Fix buffered mode writing of buffer lists and
+      buffers with multiple memories.
+    - gldownload: handle passthrough without a critical.
+    - h265parse: Fix framerate handling regression.
+    - oggdemux: vp8 fixes.
+    - mp4mux, qtmux, qtdemux: Opus audio mapping fixes.
+    - pngdec: Fix wrong colours output from 16bit RGB images.
+    - ptp clock: Work around ptpd bug in default configuration.
+    - srtpdec: fix critical warnings on shutdown.
+    - v4l2src: fix support for bayer format.
+    - v4l2videoenc: support force-keyframe event in v4l2 encoder.
+    - vtenc: apply DTS offset to ensure DTS <= PTS.
+    - gst-python: allow more functions to be called before
+      gst_init().
+    - various bug fixes, memory leak fixes, and other stability and
+      reliability improvements.
+  + gstreamer:
+    - filesink: Fix buffered mode writing of buffer lists and
+      buffers with multiple memories.
+    - basesink: Clear EOS flag on STREAM-START event.
+    - typefindhelper: downgrade bogus error level debug log
+      message.
+    - ptp:
+      . Correctly parse clock ID from the commandline parameters in
+        the helper.
+      . Work around bug in ptpd in default configuration.
+- Rebase reduce-required-meson.patch.
+
+-------------------------------------------------------------------

Old:
----
  gstreamer-1.22.3.tar.xz

New:
----
  gstreamer-1.22.4.tar.xz

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

Other differences:
------------------
++++++ gstreamer.spec ++++++
--- /var/tmp/diff_new_pack.5bz04M/_old  2023-07-01 23:17:24.294027833 +0200
+++ /var/tmp/diff_new_pack.5bz04M/_new  2023-07-01 23:17:24.298027857 +0200
@@ -19,7 +19,7 @@
 %define gst_branch 1.0
 
 Name:           gstreamer
-Version:        1.22.3
+Version:        1.22.4
 Release:        0
 Summary:        Streaming-Media Framework Runtime
 License:        LGPL-2.1-or-later

++++++ gstreamer-1.22.3.tar.xz -> gstreamer-1.22.4.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.22.3/ChangeLog 
new/gstreamer-1.22.4/ChangeLog
--- old/gstreamer-1.22.3/ChangeLog      2023-05-19 10:23:31.598151000 +0200
+++ new/gstreamer-1.22.4/ChangeLog      2023-06-20 18:42:50.463896800 +0200
@@ -1,3 +1,75 @@
+=== release 1.22.4 ===
+
+2023-06-20 17:42:25 +0100  Tim-Philipp Müller <t...@centricular.com>
+
+       * NEWS:
+       * RELEASE:
+       * gstreamer.doap:
+       * meson.build:
+         Release 1.22.4
+
+2023-06-09 17:51:28 +0800  Elliot Chen <elliot.c...@nxp.com>
+
+       * libs/gst/base/gsttypefindhelper.c:
+         typefindhelper: avoid printing error log
+         some plugins such as wavparse may need find if type of media
+         contained in the given data and will print error log if there
+         is no matching factory.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4859>
+
+2023-06-09 10:28:43 +0300  Sebastian Dröge <sebast...@centricular.com>
+
+       * libs/gst/helpers/gst-ptp-helper.c:
+         ptp: Correctly parse clock ID from the commandline parameters in the 
helper
+         Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2652
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4813>
+
+2023-06-08 20:52:21 +0900  Seungha Yang <seun...@centricular.com>
+
+       * plugins/elements/gstelements_private.c:
+       * tests/check/elements/filesink.c:
+         filesink: Fix buffered mode writing
+         Fixing miscalculated buffer index when a buffer holds multiple
+         memories and it's not aligned to the vector size 16
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4817>
+
+2023-06-06 20:44:02 +0900  Seungha Yang <seun...@centricular.com>
+
+       * tests/check/libs/basesink.c:
+         tests: basesink: Add STREAM-START after EOS test
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4797>
+
+2023-06-06 04:42:05 +0900  Seungha Yang <seun...@centricular.com>
+
+       * libs/gst/base/gstbasesink.c:
+         basesink: Clear EOS flag on STREAM-START event
+         EOS -> STREAM-START -> new data flow is valid scenario
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4797>
+
+2023-06-01 14:49:06 +0530  Nirbheek Chauhan <nirbh...@centricular.com>
+
+       * gst/gstinfo.c:
+         docs: Use backticks to escape * in markdown
+         Otherwise it's interpreted as emphasis.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4763>
+
+2023-05-17 10:01:30 +0300  Sebastian Dröge <sebast...@centricular.com>
+
+       * libs/gst/net/gstptpclock.c:
+         ptp: Work around bug in ptpd in default configuration
+         ptpd is defaulting to the hybrid mode, and was sending invalid 
multicast
+         PTP messages in that configuration until 
ce96c742a88792a8d92deebaf03927e1b367f4a9.
+         While this commit was made in 2015 there was no release in the 
meantime.
+         Work around this by detecting this case and defaulting to the default
+         values for the given intervals as given by the PTP standard.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4683>
+
+2023-05-19 12:36:19 +0100  Tim-Philipp Müller <t...@centricular.com>
+
+       * meson.build:
+         Back to development
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4679>
+
 === release 1.22.3 ===
 
 2023-05-19 09:23:19 +0100  Tim-Philipp Müller <t...@centricular.com>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.22.3/NEWS new/gstreamer-1.22.4/NEWS
--- old/gstreamer-1.22.3/NEWS   2023-05-19 10:23:19.000000000 +0200
+++ new/gstreamer-1.22.4/NEWS   2023-06-20 18:42:25.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.3 and was
-released on 19 May 2023.
+The latest bug-fix release in the stable 1.22 series is 1.22.4 and was
+released on 20 June 2023.
 
 See https://gstreamer.freedesktop.org/releases/1.22/ for the latest
 version of this document.
 
-Last updated: Friday 19 May 2023, 01:00 UTC (log)
+Last updated: Tuesday 20 June 2023, 16:30 UTC (log)
 
 Introduction
 
@@ -1831,6 +1831,183 @@
 -   List of Merge Requests applied in 1.22.3
 -   List of Issues fixed in 1.22.3
 
+1.22.4
+
+The fourth 1.22 bug-fix release (1.22.4) was released on 20 June 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.4
+
+-   Security fixes for flacparse, dvdspu, and subparse
+-   d3d11videosink: Fix error on pause and play
+-   decklink: Correctly handle SDK strings on macOS and free strings
+    after usage on Linux
+-   filesink: Fix buffered mode writing of buffer lists and buffers with
+    multiple memories
+-   gldownload: handle passthrough without a critical
+-   h265parse: Fix framerate handling regression
+-   oggdemux: vp8 fixes
+-   mp4mux, qtmux, qtdemux: Opus audio mapping fixes
+-   pngdec: Fix wrong colours output from 16bit RGB images
+-   ptp clock: Work around ptpd bug in default configuration
+-   srtpdec: fix critical warnings on shutdown
+-   v4l2src: fix support for bayer format
+-   v4l2videoenc: support force-keyframe event in v4l2 encoder
+-   vtenc: apply DTS offset to ensure DTS <= PTS
+-   gst-python: allow more functions to be called before gst_init()
+-   cerbero: fix vaapi variant; add qt6 build on windows; ensure errors
+    on unguarded use of new APIs, require macOS 10.13
+-   packages: ship codecalpha, rtponvif, dvbsubenc, switchbin,
+    videosignal plugins; fix pango crash on 32-bit windows
+-   various bug fixes, memory leak fixes, and other stability and
+    reliability improvements
+
+gstreamer
+
+-   filesink: Fix buffered mode writing of buffer lists and buffers with
+    multiple memories
+-   basesink: Clear EOS flag on STREAM-START event
+-   typefindhelper: downgrade bogus error level debug log message
+-   ptp: Correctly parse clock ID from the commandline parameters in the
+    helper
+-   ptp: Work around bug in ptpd in default configuration
+
+gst-plugins-base
+
+-   alsasink: Fix stall for transition from PAUSED to READY with USB
+    speakerphone.
+-   appsink: unref buffer in prev sample early so buffers from v4l2 can
+    be released properly
+-   basetextoverlay: Fix typo in “text-y” property description
+-   gldownload: handle passthrough without a critical
+-   glfilter: add parent meta to output buffer for input buffer
+-   oggdemux: vp8: Push headers downstream and detect keyframe packets
+-   opus: Fix potential crash when getting unexpected channel position
+-   streamsynchronizer: reset eos on STREAM_START
+-   subparse: Look for the closing > of a tag after the opening <
+-   video: convertframe: Add D3D11 specific conversion path
+-   videometa: Only validate the alignment only when it contains some
+    info
+-   video-blend: Fix linking error with C++
+
+gst-plugins-good
+
+-   flacparse: Avoid integer overflow in available data check for image
+    tags
+-   flvmux: use the correct timestamp to calculate wait times
+-   isomp4: Fix (E)AC-3 channel count handling
+-   jpegdec: fixes related to interlaced jpeg
+-   pngdec: Fix wrong colours output from 16bit RGB images
+-   qtmux, qtdemux: fix byte order for opus extension
+-   rtspsrc: Do not try send dropped get/set parameter
+-   qt5, qt6: Add more meson options and eliminate all automagic
+-   qt: glrenderer: don’t attempt to use QWindow from non-Qt main thread
+-   qml6glsink: Support building on win32
+-   v4l2src: fix support for bayer format
+-   v4l2: Change to query only up to
+    V4L2_CID_PRIVATE_BASE+V4L2_CID_MAX_CTRLS
+-   v4l2videodec: treat MPEG-1 format as MPEG-2
+-   v4l2videoenc: support force keyframe event in v4l2 encoder
+-   tests: rtpbin_buffer_list: fix possible unaligned write/read on
+    32-bit ARM
+
+gst-plugins-bad
+
+-   asfmux: fix possible unaligned write on 32-bit ARM
+-   d3d11videosink: Fix error on pause and play
+-   d3dvideosink: Fix navigation event leak
+-   decklink: Correctly handle SDK strings on macOS and free strings
+    after usage on Linux
+-   dvdspu: Make sure enough data is allocated for the available data
+-   fdkaacdec: Support up to 5 rear channels
+-   h265parse: Fix framerate handling
+-   kmssink: Add STM32 LTDC and NXP i.MX8M Plus LCDIFv3 auto-detection
+-   sdpdemux: ensure that only one srcpad is created per stream
+-   srtpdec: fix critical warnings on shutdown
+-   testsrcbin: Remove spurious caps unref
+-   va: map the mbbrc to correct enum value in get_property()
+-   vtenc: apply DTS offset to ensure DTS <= PTS
+-   vtdec: time glitches on h264 playback
+-   waylandsink: Emit “map” signal boarder surface is ready
+
+gst-plugins-ugly
+
+-   No changes
+
+gst-libav
+
+-   No changes
+
+gst-rtsp-server
+
+-   No changes
+
+gstreamer-vaapi
+
+-   vaapidecodebin: don’t load vaapipostproc if not available
+
+gstreamer-sharp
+
+-   No changes
+
+gst-omx
+
+-   No changes
+
+gst-python
+
+-   python: More functions can be called before gst_init()
+
+gst-editing-services
+
+-   ges: launcher: Never put sinks in a GstPipeline
+
+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.4
+
+-   Ship codecalpha, rtponvif, dvbsubenc, switchbin, videosignal plugins
+-   pango: Fix crash on Windows 32bit build
+-   qml6: Add support for building the qml6 plugin on Windows and bump
+    meson to 1.1.1
+-   vaapi: update vaapi variant/recipe for meson option changes
+-   packages: Put libass in the same category as assrender
+-   cerbero: Don’t extract if already extracted in fetch
+-   darwin: Ensure errors on unguarded use of new APIs, require macOS
+    10.13
+
+Contributors to 1.22.4
+
+Andoni Morales Alastruey, Arun Raghavan, Colin Kinloch, Daniel Morin,
+Edward Hervey, ekwange, Elliot Chen, François Laignel, Guillaume
+Desmottes, Haihua Hu, He Junyan, Hou Qi, Jan Alexander Steffens
+(heftig), Jochen Henneberg, Jordan Petridis, Kevin Song, Maksym
+Khomenko, Marek Vasut, Mathieu Duponchelle, Matthew Waters,
+Mengkejiergeli Ba, Michael Olbrich, Nicolas Beland, Nicolas Dufresne,
+Nirbheek Chauhan, Philippe Normand, Piotr Brzeziński, Sebastian Dröge,
+Seungha Yang, Thibault Saunier, Tim-Philipp Müller, Víctor Manuel Jáquez
+Leal, William Manley, Xavier Claessens, Yuri Fedoseev,
+
+… 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.4
+
+-   List of Merge Requests applied in 1.22.4
+-   List of Issues fixed in 1.22.4
+
 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.3/RELEASE new/gstreamer-1.22.4/RELEASE
--- old/gstreamer-1.22.3/RELEASE        2023-05-19 10:23:19.000000000 +0200
+++ new/gstreamer-1.22.4/RELEASE        2023-06-20 18:42:25.000000000 +0200
@@ -1,4 +1,4 @@
-This is GStreamer core 1.22.3.
+This is GStreamer core 1.22.4.
 
 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.3/gst/gstinfo.c 
new/gstreamer-1.22.4/gst/gstinfo.c
--- old/gstreamer-1.22.3/gst/gstinfo.c  2023-05-19 10:23:19.000000000 +0200
+++ new/gstreamer-1.22.4/gst/gstinfo.c  2023-06-20 18:42:25.000000000 +0200
@@ -2387,8 +2387,8 @@
  * %FALSE if adding the threshold described by @list to the one already set.
  *
  * Sets the debug logging wanted in the same form as with the GST_DEBUG
- * environment variable. You can use wildcards such as '*', but note that
- * the order matters when you use wild cards, e.g. "foosrc:6,*src:3,*:2" sets
+ * environment variable. You can use wildcards such as `*`, but note that
+ * the order matters when you use wild cards, e.g. `foosrc:6,*src:3,*:2` sets
  * everything to log level 2.
  *
  * Since: 1.2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.22.3/gstreamer.doap 
new/gstreamer-1.22.4/gstreamer.doap
--- old/gstreamer-1.22.3/gstreamer.doap 2023-05-19 10:23:19.000000000 +0200
+++ new/gstreamer-1.22.4/gstreamer.doap 2023-06-20 18:42:25.000000000 +0200
@@ -40,6 +40,16 @@
 
  <release>
   <Version>
+   <revision>1.22.4</revision>
+   <branch>1.22</branch>
+   <name></name>
+   <created>2023-06-20</created>
+   <file-release 
rdf:resource="https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.22.4.tar.xz";
 />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
    <revision>1.22.3</revision>
    <branch>1.22</branch>
    <name></name>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.22.3/libs/gst/base/gstbasesink.c 
new/gstreamer-1.22.4/libs/gst/base/gstbasesink.c
--- old/gstreamer-1.22.3/libs/gst/base/gstbasesink.c    2023-05-19 
10:23:19.000000000 +0200
+++ new/gstreamer-1.22.4/libs/gst/base/gstbasesink.c    2023-06-20 
18:42:25.000000000 +0200
@@ -3664,6 +3664,9 @@
       if (bclass->event)
         result = bclass->event (basesink, event);
       break;
+    case GST_EVENT_STREAM_START:
+      basesink->priv->received_eos = FALSE;
+      /* fallthrough */
     default:
       if (GST_EVENT_IS_SERIALIZED (event)) {
         GST_BASE_SINK_PREROLL_LOCK (basesink);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.22.3/libs/gst/base/gsttypefindhelper.c 
new/gstreamer-1.22.4/libs/gst/base/gsttypefindhelper.c
--- old/gstreamer-1.22.3/libs/gst/base/gsttypefindhelper.c      2023-05-19 
10:23:19.000000000 +0200
+++ new/gstreamer-1.22.4/libs/gst/base/gsttypefindhelper.c      2023-06-20 
18:42:25.000000000 +0200
@@ -742,7 +742,7 @@
 
   factories = gst_type_find_list_factories_for_caps (obj, caps);
   if (!factories) {
-    GST_ERROR_OBJECT (obj, "Failed to typefind for caps: %" GST_PTR_FORMAT,
+    GST_INFO_OBJECT (obj, "Failed to typefind for caps: %" GST_PTR_FORMAT,
         caps);
     goto out;
   }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.22.3/libs/gst/helpers/gst-ptp-helper.c 
new/gstreamer-1.22.4/libs/gst/helpers/gst-ptp-helper.c
--- old/gstreamer-1.22.3/libs/gst/helpers/gst-ptp-helper.c      2023-05-19 
10:23:19.000000000 +0200
+++ new/gstreamer-1.22.4/libs/gst/helpers/gst-ptp-helper.c      2023-06-20 
18:42:25.000000000 +0200
@@ -71,10 +71,37 @@
 static guint64 clock_id = (guint64) - 1;
 static guint8 clock_id_array[8];
 
+static gboolean
+parse_clock_id (const gchar * option_name, const gchar * value, gpointer data,
+    GError ** err)
+{
+  gchar *endptr;
+  guint64 v;
+
+  errno = 0;
+  v = g_ascii_strtoull (value, &endptr, 16);
+  if (endptr == NULL || *endptr != '\0') {
+    g_set_error (err, G_OPTION_ERROR, G_OPTION_ERROR_UNKNOWN_OPTION,
+        "Cannot parse integer value \"%s\" for --clock-id", value);
+    return FALSE;
+  }
+
+  if (errno != 0) {
+    g_set_error (err, G_OPTION_ERROR, G_OPTION_ERROR_UNKNOWN_OPTION,
+        "Cannot parse integer value \"%s\" for --clock-id: %s", value,
+        g_strerror (errno));
+    return FALSE;
+  }
+
+  clock_id = v;
+
+  return TRUE;
+}
+
 static GOptionEntry opt_entries[] = {
   {"interface", 'i', 0, G_OPTION_ARG_STRING_ARRAY, &ifaces,
       "Interface to listen on", NULL},
-  {"clock-id", 'c', 0, G_OPTION_ARG_INT64, &clock_id,
+  {"clock-id", 'c', 0, G_OPTION_ARG_CALLBACK, parse_clock_id,
       "PTP clock id", NULL},
   {"verbose", 'v', 0, G_OPTION_ARG_NONE, &verbose,
       "Be verbose", NULL},
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.22.3/libs/gst/net/gstptpclock.c 
new/gstreamer-1.22.4/libs/gst/net/gstptpclock.c
--- old/gstreamer-1.22.3/libs/gst/net/gstptpclock.c     2023-05-19 
10:23:19.000000000 +0200
+++ new/gstreamer-1.22.4/libs/gst/net/gstptpclock.c     2023-06-20 
18:42:25.000000000 +0200
@@ -346,6 +346,11 @@
 static gint domain_stats_n_hooks;
 static gboolean domain_stats_hooks_initted = FALSE;
 
+/* Only ever accessed from the PTP thread */
+/* PTPD in hybrid mode (default) sends multicast PTP messages with an invalid
+ * logMessageInterval. We work around this here and warn once */
+static gboolean ptpd_hybrid_workaround_warned_once = FALSE;
+
 /* Converts log2 seconds to GstClockTime */
 static GstClockTime
 log2_to_clock_time (gint l)
@@ -909,7 +914,17 @@
       return;
   }
 
-  sender->announce_interval = log2_to_clock_time (msg->log_message_interval);
+  if (msg->log_message_interval == 0x7f) {
+    sender->announce_interval = 2 * GST_SECOND;
+
+    if (!ptpd_hybrid_workaround_warned_once) {
+      GST_WARNING ("Working around ptpd bug: ptpd sends multicast PTP packets "
+          "with invalid logMessageInterval");
+      ptpd_hybrid_workaround_warned_once = TRUE;
+    }
+  } else {
+    sender->announce_interval = log2_to_clock_time (msg->log_message_interval);
+  }
 
   announce = g_new0 (PtpAnnounceMessage, 1);
   announce->receive_time = receive_time;
@@ -1511,7 +1526,17 @@
     return;
 #endif
 
-  domain->sync_interval = log2_to_clock_time (msg->log_message_interval);
+  if (msg->log_message_interval == 0x7f) {
+    domain->sync_interval = GST_SECOND;
+
+    if (!ptpd_hybrid_workaround_warned_once) {
+      GST_WARNING ("Working around ptpd bug: ptpd sends multicast PTP packets "
+          "with invalid logMessageInterval");
+      ptpd_hybrid_workaround_warned_once = TRUE;
+    }
+  } else {
+    domain->sync_interval = log2_to_clock_time (msg->log_message_interval);
+  }
 
   /* Check if duplicated */
   for (l = domain->pending_syncs.head; l; l = l->next) {
@@ -1708,8 +1733,18 @@
       requesting_port_identity.port_number != ptp_clock_id.port_number)
     return;
 
-  domain->min_delay_req_interval =
-      log2_to_clock_time (msg->log_message_interval);
+  if (msg->log_message_interval == 0x7f) {
+    domain->min_delay_req_interval = GST_SECOND;
+
+    if (!ptpd_hybrid_workaround_warned_once) {
+      GST_WARNING ("Working around ptpd bug: ptpd sends multicast PTP packets "
+          "with invalid logMessageInterval");
+      ptpd_hybrid_workaround_warned_once = TRUE;
+    }
+  } else {
+    domain->min_delay_req_interval =
+        log2_to_clock_time (msg->log_message_interval);
+  }
 
   /* Check if we know about this one */
   for (l = domain->pending_syncs.head; l; l = l->next) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.22.3/meson.build 
new/gstreamer-1.22.4/meson.build
--- old/gstreamer-1.22.3/meson.build    2023-05-19 10:23:19.000000000 +0200
+++ new/gstreamer-1.22.4/meson.build    2023-06-20 18:42:25.000000000 +0200
@@ -1,5 +1,5 @@
 project('gstreamer', 'c',
-  version : '1.22.3',
+  version : '1.22.4',
   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.3/plugins/elements/gstelements_private.c 
new/gstreamer-1.22.4/plugins/elements/gstelements_private.c
--- old/gstreamer-1.22.3/plugins/elements/gstelements_private.c 2023-05-19 
10:23:19.000000000 +0200
+++ new/gstreamer-1.22.4/plugins/elements/gstelements_private.c 2023-06-20 
18:42:25.000000000 +0200
@@ -540,6 +540,10 @@
         current_buf_mem_idx = 0;
     }
     current_buf_idx = i;
+    if (current_buf_mem_idx != 0) {
+      g_assert (current_buf_idx > 0);
+      current_buf_idx--;
+    }
   }
 
   do {
@@ -629,6 +633,10 @@
           current_buf_mem_idx = 0;
       }
       current_buf_idx = i;
+      if (current_buf_mem_idx != 0) {
+        g_assert (current_buf_idx > 0);
+        current_buf_idx--;
+      }
     }
   } while (left > 0);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.22.3/po/gstreamer-1.0.pot 
new/gstreamer-1.22.4/po/gstreamer-1.0.pot
--- old/gstreamer-1.22.3/po/gstreamer-1.0.pot   2023-05-19 10:23:31.362148500 
+0200
+++ new/gstreamer-1.22.4/po/gstreamer-1.0.pot   2023-06-20 18:42:50.167898700 
+0200
@@ -6,9 +6,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: gstreamer-1.22.3\n"
+"Project-Id-Version: gstreamer-1.22.4\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-05-19 09:23+0100\n"
+"POT-Creation-Date: 2023-06-20 17:42+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"
@@ -1176,11 +1176,11 @@
 msgid "A lot of buffers are being dropped."
 msgstr ""
 
-#: libs/gst/base/gstbasesink.c:3799
+#: libs/gst/base/gstbasesink.c:3802
 msgid "Internal data flow problem."
 msgstr ""
 
-#: libs/gst/base/gstbasesink.c:4633 libs/gst/base/gstbasesrc.c:2773
+#: libs/gst/base/gstbasesink.c:4636 libs/gst/base/gstbasesrc.c:2773
 msgid "Internal data flow error."
 msgstr ""
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.22.3/po/gstreamer.pot 
new/gstreamer-1.22.4/po/gstreamer.pot
--- old/gstreamer-1.22.3/po/gstreamer.pot       2023-05-19 10:23:31.362148500 
+0200
+++ new/gstreamer-1.22.4/po/gstreamer.pot       2023-06-20 18:42:50.167898700 
+0200
@@ -6,9 +6,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: gstreamer-1.22.3\n"
+"Project-Id-Version: gstreamer-1.22.4\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-05-19 09:23+0100\n"
+"POT-Creation-Date: 2023-06-20 17:42+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"
@@ -1176,11 +1176,11 @@
 msgid "A lot of buffers are being dropped."
 msgstr ""
 
-#: libs/gst/base/gstbasesink.c:3799
+#: libs/gst/base/gstbasesink.c:3802
 msgid "Internal data flow problem."
 msgstr ""
 
-#: libs/gst/base/gstbasesink.c:4633 libs/gst/base/gstbasesrc.c:2773
+#: libs/gst/base/gstbasesink.c:4636 libs/gst/base/gstbasesrc.c:2773
 msgid "Internal data flow error."
 msgstr ""
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.22.3/tests/check/elements/filesink.c 
new/gstreamer-1.22.4/tests/check/elements/filesink.c
--- old/gstreamer-1.22.3/tests/check/elements/filesink.c        2023-05-19 
10:23:19.000000000 +0200
+++ new/gstreamer-1.22.4/tests/check/elements/filesink.c        2023-06-20 
18:42:25.000000000 +0200
@@ -24,6 +24,7 @@
 #endif
 
 #include <stdio.h>
+#include <string.h>
 
 #include <glib.h>
 #include <glib/gstdio.h>
@@ -484,6 +485,86 @@
 
 GST_END_TEST;
 
+static void
+test_buffered_write (guint num_buf, guint num_mem_per_buf)
+{
+  GstElement *filesink;
+  guint i, j;
+  gchar *tmp_fn;
+  GstSegment segment;
+  const gsize size_per_mem = 4;
+  gsize total_size = size_per_mem * num_buf * num_mem_per_buf;
+  GStatBuf stat_buf;
+
+  tmp_fn = create_temporary_file ();
+  if (!tmp_fn)
+    return;
+
+  filesink = setup_filesink ();
+  g_object_set (filesink, "location", tmp_fn, NULL);
+
+  fail_unless_equals_int (gst_element_set_state (filesink, GST_STATE_PLAYING),
+      GST_STATE_CHANGE_ASYNC);
+
+  fail_unless (gst_pad_push_event (mysrcpad,
+          gst_event_new_stream_start ("test")));
+
+  gst_segment_init (&segment, GST_FORMAT_BYTES);
+  fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment 
(&segment)));
+
+  for (i = 0; i < num_buf; i++) {
+    GstBuffer *buf = gst_buffer_new ();
+    for (j = 0; j < num_mem_per_buf; j++) {
+      GstMemory *mem = gst_allocator_alloc (NULL, size_per_mem, NULL);
+      GstMapInfo info;
+      fail_unless (mem != NULL);
+
+      fail_unless (gst_memory_map (mem, &info, GST_MAP_WRITE));
+      memset (info.data, 0, info.size);
+      gst_memory_unmap (mem, &info);
+
+      gst_buffer_append_memory (buf, mem);
+    }
+
+    fail_unless_equals_int (gst_pad_push (mysrcpad, buf), GST_FLOW_OK);
+  }
+
+  fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_eos ()));
+
+  fail_unless_equals_int (gst_element_set_state (filesink, GST_STATE_NULL),
+      GST_STATE_CHANGE_SUCCESS);
+
+  cleanup_filesink (filesink);
+
+  if (g_stat (tmp_fn, &stat_buf) == 0)
+    fail_unless_equals_int64 (stat_buf.st_size, total_size);
+
+  g_remove (tmp_fn);
+  g_free (tmp_fn);
+}
+
+GST_START_TEST (test_buffered_write_17_1)
+{
+  test_buffered_write (17, 1);
+}
+
+GST_END_TEST;
+
+
+GST_START_TEST (test_buffered_write_9_2)
+{
+  test_buffered_write (9, 2);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_buffered_write_6_3)
+{
+  test_buffered_write (6, 3);
+}
+
+GST_END_TEST;
+
 static Suite *
 filesink_suite (void)
 {
@@ -496,6 +577,9 @@
   tcase_add_test (tc_chain, test_uri_interface);
   tcase_add_test (tc_chain, test_seeking);
   tcase_add_test (tc_chain, test_flush);
+  tcase_add_test (tc_chain, test_buffered_write_17_1);
+  tcase_add_test (tc_chain, test_buffered_write_9_2);
+  tcase_add_test (tc_chain, test_buffered_write_6_3);
 
   return s;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.22.3/tests/check/libs/basesink.c 
new/gstreamer-1.22.4/tests/check/libs/basesink.c
--- old/gstreamer-1.22.3/tests/check/libs/basesink.c    2023-05-19 
10:23:19.000000000 +0200
+++ new/gstreamer-1.22.4/tests/check/libs/basesink.c    2023-06-20 
18:42:25.000000000 +0200
@@ -282,6 +282,69 @@
 
 GST_END_TEST;
 
+GST_START_TEST (basesink_stream_start_after_eos)
+{
+  GstElement *pipeline, *sink;
+  GstPad *pad;
+  GstEvent *ev;
+  GstSegment segment;
+  GstBuffer *buf;
+  GstFlowReturn ret;
+
+  sink = gst_element_factory_make ("fakesink", "sink");
+  g_object_set (sink, "async", FALSE, "sync", FALSE, NULL);
+  pad = gst_element_get_static_pad (sink, "sink");
+
+  pipeline = gst_pipeline_new (NULL);
+
+  gst_bin_add (GST_BIN (pipeline), sink);
+
+  fail_unless_equals_int (gst_element_set_state (pipeline, GST_STATE_PLAYING),
+      GST_STATE_CHANGE_SUCCESS);
+
+  /* Normal data flow and EOS */
+  ev = gst_event_new_stream_start ("test");
+  fail_unless (gst_pad_send_event (pad, ev));
+
+  gst_segment_init (&segment, GST_FORMAT_TIME);
+  ev = gst_event_new_segment (&segment);
+  fail_unless (gst_pad_send_event (pad, ev));
+
+  buf = gst_buffer_new_and_alloc (4);
+  ret = gst_pad_chain (pad, buf);
+  fail_unless (ret == GST_FLOW_OK);
+
+  ev = gst_event_new_eos ();
+  fail_unless (gst_pad_send_event (pad, ev));
+
+  /* After EOS event, flow return should be EOS */
+  buf = gst_buffer_new_and_alloc (4);
+  ret = gst_pad_chain (pad, buf);
+  fail_unless (ret == GST_FLOW_EOS);
+
+  /* New data flow with new stream-start */
+  ev = gst_event_new_stream_start ("test");
+  fail_unless (gst_pad_send_event (pad, ev));
+
+  gst_segment_init (&segment, GST_FORMAT_TIME);
+  ev = gst_event_new_segment (&segment);
+  fail_unless (gst_pad_send_event (pad, ev));
+
+  buf = gst_buffer_new_and_alloc (4);
+  ret = gst_pad_chain (pad, buf);
+  fail_unless (ret == GST_FLOW_OK);
+
+  ev = gst_event_new_eos ();
+  fail_unless (gst_pad_send_event (pad, ev));
+
+  fail_unless_equals_int (gst_element_set_state (pipeline, GST_STATE_NULL),
+      GST_STATE_CHANGE_SUCCESS);
+  gst_object_unref (pad);
+  gst_object_unref (pipeline);
+}
+
+GST_END_TEST;
+
 static Suite *
 gst_basesrc_suite (void)
 {
@@ -294,6 +357,7 @@
   tcase_add_test (tc, basesink_test_gap);
   tcase_add_test (tc, basesink_test_eos_after_playing);
   tcase_add_test (tc, basesink_position_query_handles_segment_offset);
+  tcase_add_test (tc, basesink_stream_start_after_eos);
 
   return s;
 }

++++++ reduce-required-meson.patch ++++++
--- /var/tmp/diff_new_pack.5bz04M/_old  2023-07-01 23:17:24.978031933 +0200
+++ /var/tmp/diff_new_pack.5bz04M/_new  2023-07-01 23:17:24.982031957 +0200
@@ -1,10 +1,10 @@
-Index: gstreamer-1.22.3/meson.build
+Index: gstreamer-1.22.4/meson.build
 ===================================================================
---- gstreamer-1.22.3.orig/meson.build
-+++ gstreamer-1.22.3/meson.build
+--- gstreamer-1.22.4.orig/meson.build
++++ gstreamer-1.22.4/meson.build
 @@ -1,6 +1,6 @@
  project('gstreamer', 'c',
-   version : '1.22.3',
+   version : '1.22.4',
 -  meson_version : '>= 0.62',
 +  meson_version : '>= 0.61',
    default_options : [ 'warning_level=1',

Reply via email to