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',