Script 'mail_helper' called by obssrc
Hello community,

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

Package is "gstreamer-plugins-base"

Sat Jul  1 23:17:23 2023 rev:93 rq:1096144 version:1.22.4

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/gstreamer-plugins-base/gstreamer-plugins-base.changes
    2023-05-28 19:21:37.936529931 +0200
+++ 
/work/SRC/openSUSE:Factory/.gstreamer-plugins-base.new.13546/gstreamer-plugins-base.changes
 2023-07-01 23:17:25.262033635 +0200
@@ -1,0 +2,23 @@
+Mon Jun 26 14:18:54 UTC 2023 - Bjørn Lie <bjorn....@gmail.com>
+
+- Update to version 1.22.4:
+  + 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++.
+- Rebase reduce-required-meson.patch.
+
+-------------------------------------------------------------------

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

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

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

Other differences:
------------------
++++++ gstreamer-plugins-base.spec ++++++
--- /var/tmp/diff_new_pack.7GokJF/_old  2023-07-01 23:17:25.902037472 +0200
+++ /var/tmp/diff_new_pack.7GokJF/_new  2023-07-01 23:17:25.906037496 +0200
@@ -20,7 +20,7 @@
 %define gst_branch 1.0
 %define gstreamer_req_version %(echo %{version} | sed -e "s/+.*//")
 Name:           gstreamer-plugins-base
-Version:        1.22.3
+Version:        1.22.4
 Release:        0
 Summary:        GStreamer Streaming-Media Framework Plug-Ins
 License:        GPL-2.0-or-later AND LGPL-2.1-or-later

++++++ gst-plugins-base-1.22.3.tar.xz -> gst-plugins-base-1.22.4.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-base-1.22.3/ChangeLog 
new/gst-plugins-base-1.22.4/ChangeLog
--- old/gst-plugins-base-1.22.3/ChangeLog       2023-05-19 10:24:07.850514400 
+0200
+++ new/gst-plugins-base-1.22.4/ChangeLog       2023-06-20 18:44:10.143448800 
+0200
@@ -1,3 +1,185 @@
+=== release 1.22.4 ===
+
+2023-06-20 17:42:25 +0100  Tim-Philipp Müller <t...@centricular.com>
+
+       * NEWS:
+       * RELEASE:
+       * gst-plugins-base.doap:
+       * meson.build:
+         Release 1.22.4
+
+2023-06-13 12:58:26 +0300  Sebastian Dröge <sebast...@centricular.com>
+
+       * gst/subparse/gstsubparse.c:
+         subparse: Skip after the end of a valid closing tag instead of only 
skipping `<`
+         This is a small optimization and avoids restarting the next parsing
+         iteration on already accepted data.
+         On its own it would also fix ZDI-CAN-20968 (see previous commit) but 
the
+         previous commit independently is also a valid fix for it.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4898>
+
+2023-06-13 12:53:13 +0300  Sebastian Dröge <sebast...@centricular.com>
+
+       * gst/subparse/gstsubparse.c:
+         subparse: Look for the closing `>` of a tag after the opening `<`
+         Previously when fixing up subrip markip, we were looking from the 
start
+         of the remaining buffer instead. Due to how skipping over closing tags
+         works, the remaining buffer will still contain the closing `>` of the
+         previous tag so if a unexpected closing tag is found after another
+         closing tag, we would potentially do an out of bounds memmove().
+         Fixes ZDI-CAN-20968
+         Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2662
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4898>
+
+2023-06-13 13:22:57 +0300  Sebastian Dröge <sebast...@centricular.com>
+
+       * gst-libs/gst/tag/tags.c:
+         tags: Don't allow image tags with G_MAXUINT32 length
+         This will cause an integer overflow a little bit further down because 
we
+         allocate a bit more memory to allow for a NUL-terminator.
+         The caller should've avoided passing that much data in already as it's
+         not going to be a valid image and there's likely not even that much 
data
+         available.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4897>
+
+2023-06-13 10:30:16 +0800  Haihua Hu <jared...@nxp.com>
+
+       * gst-libs/gst/gl/gstglfilter.c:
+         glfilter: add parent meta to output buffer for input buffer
+         glfilter will unref input buffer after _transform() call immidiately,
+         but gpu may still reading input buffer for rendering because gl
+         api is executed async. Need hold reference for input buffer by
+         adding parent meta to output buffer.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4846>
+
+2023-06-07 14:24:46 -0400  Xavier Claessens <xavier.claess...@collabora.com>
+
+       * ext/opus/gstopusenc.c:
+         opus: Fix crash when getting unexpected channel position
+         gst_opus_channel_names is a static array with only 13 items.
+         GstAudioChannelPosition have bigger values than that.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4843>
+
+2016-06-01 11:52:38 +0100  William Manley <w...@williammanley.net>
+
+       * docs/plugins/gst_plugins_cache.json:
+       * ext/pango/gstbasetextoverlay.c:
+         basetextoverlay: Fix typo in "text-y" property description
+         Looks like a copy and paste error.
+         Co-authored-by: Fabian Orccon <cfoch.fab...@gmail.com>
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4827>
+
+2023-06-09 21:08:36 +0800  Kevin Song <kes...@nvidia.com>
+
+       * gst-libs/gst/app/gstappsink.c:
+         appsink: unref gstbuffer in prev sample early
+         Appsink will unref prev sample in dispose function. Which is later
+         when V4L2 video decoder link with appsink as V4L2 video decoder
+         will close V4L2 device fd during GST_STATE_CHANGE_READY_TO_NULL.
+         If the video buffer return to V4L2 video decoder after the decoder
+         closed V4L2 device fd, V4L2 can't release the video frame buffer
+         which allocated with MMAP mode as application can't call
+         VIDIOC_REQBUFS 0 to release the video frame buffer by V4L2 driver.
+         The memory of the video frame will leak.
+         Unref the gstbuffer in stop() function, so V4L2 video decoder
+         can received all video frame buffers and release it before close
+         V4L2 device fd.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4820>
+
+2023-06-07 13:46:39 +1000  Matthew Waters <matt...@centricular.com>
+
+       * ext/gl/gstgldownloadelement.c:
+         gldownload: handle passthrough without a critical
+         With passthrough mode, gldownload/glbasefilter may not ever retrieve a
+         relevant GstGLContext as it doesn't actually query the surrounding
+         elements.  Guard against that.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4800>
+
+2023-05-27 13:06:22 +0100  Philippe Normand <ph...@igalia.com>
+
+       * ext/ogg/gstoggdemux.c:
+       * ext/ogg/gstoggdemux.h:
+       * ext/ogg/gstoggstream.c:
+         oggdemux: vp8: Detect keyframe packets
+         decodebin3 drops data on video streams until a keyframe or header is 
detected,
+         so for Ogg/VP8 we now need to correctly flag and signal keyframes 
downstream.
+         The first buffer pushed from each src pad also has the HEADER flag 
set.
+         Fixes playback of
+         https://github.com/web-platform-tests/wpt/raw/master/media/test.ogv 
in playbin3.
+         Fixes #1418
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4745>
+
+2023-05-31 16:26:45 +0200  Guillaume Desmottes 
<guillaume.desmot...@onestream.live>
+
+       * gst/playback/gststreamsynchronizer.c:
+         streamsynchronizer: check reset-time when handling FLUSH_STOP
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4755>
+
+2023-05-31 16:05:48 +0200  Guillaume Desmottes 
<guillaume.desmot...@onestream.live>
+
+       * gst/playback/gststreamsynchronizer.c:
+         streamsynchronizer: reset eos on STREAM_START
+         self->eos was never reset after streamsynchronizer has sent EOS
+         (except on explicit flush or switching back to PAUSED).
+         As a result, synchronization was broken if new streams were pushed 
later
+         as gst_stream_synchronizer_wait() does not wait if self->eos is set.
+         Fix this by reseting self->eos on STREAM_START as that means a new
+         stream is being sent upstream and so a new EOS will follow later on.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4755>
+
+2023-05-29 02:14:44 +0900  Seungha Yang <seun...@centricular.com>
+
+       * gst-libs/gst/video/video-blend.h:
+         video-blend: Fix linking error with C++
+         Add missing extern "C"
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4735>
+
+2023-05-19 15:20:16 +0800  He Junyan <junyan...@intel.com>
+
+       * gst-libs/gst/video/gstvideometa.c:
+         videometa: Only validate the alignment only when it contains some info
+         When the alignment contains nothing, all its fields are 0 and always
+         can be satisfied. So there is no need to validate it in this case.
+         And there are a lot of places just setting this alignment to default
+         all zero value, this validation generates lots of warnings.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4704>
+
+2023-05-15 15:57:15 -0400  Nicolas Beland <nico...@inogeni.com>
+
+       * ext/alsa/gstalsasink.c:
+       * ext/alsa/gstalsasink.h:
+         alsasink: Fix stall for transition of alsasink from PAUSED to READY 
with USB speakerphone
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4699>
+
+2022-07-05 05:14:01 +0900  Seungha Yang <seun...@centricular.com>
+
+       * gst-libs/gst/video/convertframe.c:
+         video: convertframe: Add D3D11 specific conversion path
+         Add d3d11 conversion path to make gst_video_convert_sample() work
+         for GstD3D11Memory.
+         Note that just adding "d3d11download" to the exisitng code is
+         suboptimal from GstD3D11 point of view because:
+         * d3d11convert element can support crop/colorspace-conversion/scale
+         all at once while existing software pipeline needs intermediate steps
+         for the conversion
+         * "Process everything on GPU then download it to CPU memory" would be 
likely
+         faster than "download GPU memory to CPU then processing it on CPU"
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4689>
+
+2022-07-05 04:42:57 +0900  Seungha Yang <seun...@centricular.com>
+
+       * gst-libs/gst/video/convertframe.c:
+         video: convertframe: Remove pointless const qualifier
+         const keyword for refcounted object does not very make sense
+         and unnecessary in this case
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4689>
+
+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/gst-plugins-base-1.22.3/NEWS 
new/gst-plugins-base-1.22.4/NEWS
--- old/gst-plugins-base-1.22.3/NEWS    2023-05-19 10:23:19.000000000 +0200
+++ new/gst-plugins-base-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/gst-plugins-base-1.22.3/RELEASE 
new/gst-plugins-base-1.22.4/RELEASE
--- old/gst-plugins-base-1.22.3/RELEASE 2023-05-19 10:23:19.000000000 +0200
+++ new/gst-plugins-base-1.22.4/RELEASE 2023-06-20 18:42:25.000000000 +0200
@@ -1,4 +1,4 @@
-This is GStreamer gst-plugins-base 1.22.3.
+This is GStreamer gst-plugins-base 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/gst-plugins-base-1.22.3/docs/plugins/gst_plugins_cache.json 
new/gst-plugins-base-1.22.4/docs/plugins/gst_plugins_cache.json
--- old/gst-plugins-base-1.22.3/docs/plugins/gst_plugins_cache.json     
2023-05-19 10:23:19.000000000 +0200
+++ new/gst-plugins-base-1.22.4/docs/plugins/gst_plugins_cache.json     
2023-06-20 18:42:25.000000000 +0200
@@ -8923,7 +8923,7 @@
                         "writable": false
                     },
                     "text-y": {
-                        "blurb": "Resulting X position of font rendering.",
+                        "blurb": "Resulting Y position of font rendering.",
                         "conditionally-available": false,
                         "construct": false,
                         "construct-only": false,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-base-1.22.3/ext/alsa/gstalsasink.c 
new/gst-plugins-base-1.22.4/ext/alsa/gstalsasink.c
--- old/gst-plugins-base-1.22.3/ext/alsa/gstalsasink.c  2023-05-19 
10:23:19.000000000 +0200
+++ new/gst-plugins-base-1.22.4/ext/alsa/gstalsasink.c  2023-06-20 
18:42:25.000000000 +0200
@@ -259,7 +259,6 @@
   alsasink->is_paused = FALSE;
   alsasink->after_paused = FALSE;
   alsasink->hw_support_pause = FALSE;
-  alsasink->stop_streaming_threads = TRUE;
   g_mutex_init (&alsasink->alsa_lock);
   g_mutex_init (&alsasink->delay_lock);
 
@@ -943,7 +942,6 @@
       alsa->channels, GST_AUDIO_BASE_SINK (alsa)->ringbuffer);
 #endif /* SND_CHMAP_API_VERSION */
 
-  alsa->stop_streaming_threads = FALSE;
   return TRUE;
 
   /* ERRORS */
@@ -1063,8 +1061,6 @@
 
   GST_ALSA_SINK_LOCK (asink);
   while (cptr > 0) {
-    if (alsa->stop_streaming_threads)
-      goto write_error;
     /* start by doing a blocking wait for free space. Set the timeout
      * to 4 times the period time */
     err = snd_pcm_wait (alsa->handle, (4 * alsa->period_time / 1000));
@@ -1173,7 +1169,6 @@
     CHECK (snd_pcm_pause (alsa->handle, 1), pause_error);
     GST_DEBUG_OBJECT (alsa, "pause done");
     alsa->is_paused = TRUE;
-    alsa->stop_streaming_threads = TRUE;
     GST_ALSA_SINK_UNLOCK (asink);
   } else {
     gst_alsasink_stop (asink);
@@ -1186,6 +1181,7 @@
     GST_ERROR_OBJECT (alsa, "alsa-pause: pcm pause error: %s",
         snd_strerror (err));
     GST_ALSA_SINK_UNLOCK (asink);
+    gst_alsasink_stop (asink);
     return;
   }
 }
@@ -1205,7 +1201,6 @@
     GST_ALSA_SINK_UNLOCK (asink);
   }
 
-  alsa->stop_streaming_threads = FALSE;
   return;
 
 resume_error:
@@ -1231,7 +1226,6 @@
   GST_DEBUG_OBJECT (alsa, "prepare");
   CHECK (snd_pcm_prepare (alsa->handle), prepare_error);
   GST_DEBUG_OBJECT (alsa, "stop done");
-  alsa->stop_streaming_threads = TRUE;
   GST_ALSA_SINK_UNLOCK (asink);
 
   return;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-base-1.22.3/ext/alsa/gstalsasink.h 
new/gst-plugins-base-1.22.4/ext/alsa/gstalsasink.h
--- old/gst-plugins-base-1.22.3/ext/alsa/gstalsasink.h  2023-05-19 
10:23:19.000000000 +0200
+++ new/gst-plugins-base-1.22.4/ext/alsa/gstalsasink.h  2023-06-20 
18:42:25.000000000 +0200
@@ -77,7 +77,6 @@
   gboolean is_paused;
   gboolean after_paused;
   gboolean hw_support_pause;
-  gboolean stop_streaming_threads;
   snd_pcm_sframes_t pos_in_buffer;
 
   GMutex alsa_lock;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.22.3/ext/gl/gstgldownloadelement.c 
new/gst-plugins-base-1.22.4/ext/gl/gstgldownloadelement.c
--- old/gst-plugins-base-1.22.3/ext/gl/gstgldownloadelement.c   2023-05-19 
10:23:19.000000000 +0200
+++ new/gst-plugins-base-1.22.4/ext/gl/gstgldownloadelement.c   2023-06-20 
18:42:25.000000000 +0200
@@ -1237,9 +1237,14 @@
   (void) bclass;
 
   in_sync_meta = gst_buffer_get_gl_sync_meta (inbuf);
-  if (in_sync_meta)
-    gst_gl_sync_meta_wait (in_sync_meta, context);
-
+  if (in_sync_meta) {
+    if (context) {
+      gst_gl_sync_meta_wait (in_sync_meta, context);
+    } else if (dl->mode != GST_GL_DOWNLOAD_MODE_PASSTHROUGH) {
+      GST_WARNING_OBJECT (dl, "No configured GL context in non-passthrough "
+          "mode. Cannot wait on incoming `GstGLSyncMeta`");
+    }
+  }
 #if GST_GL_HAVE_PLATFORM_EGL && defined(HAVE_NVMM)
   if (dl->mode == GST_GL_DOWNLOAD_MODE_NVMM) {
     GstNVMMParentMeta *buf_meta = gst_buffer_get_nvmm_parent_meta (inbuf);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-base-1.22.3/ext/ogg/gstoggdemux.c 
new/gst-plugins-base-1.22.4/ext/ogg/gstoggdemux.c
--- old/gst-plugins-base-1.22.3/ext/ogg/gstoggdemux.c   2023-05-19 
10:23:19.000000000 +0200
+++ new/gst-plugins-base-1.22.4/ext/ogg/gstoggdemux.c   2023-06-20 
18:42:25.000000000 +0200
@@ -580,6 +580,9 @@
     if ((packet->bytes >= 7 && memcmp (packet->packet, "OVP80\2 ", 7) == 0) ||
         packet->b_o_s ||
         (packet->bytes >= 5 && memcmp (packet->packet, "OVP80", 5) == 0)) {
+      /* Request the first packet being pushed downstream to have the header
+         flag set, unblocking the keyframe_waiter_probe in decodebin3. */
+      pad->need_header_flag = TRUE;
       /* We don't push header packets for VP8 */
       goto done;
     }
@@ -818,9 +821,11 @@
   if (delta_unit)
     GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_DELTA_UNIT);
 
-  /* set header flag for buffers that are also in the streamheaders */
-  if (is_header)
+  /* set header flag for buffers that are also in the streamheaders or when 
explicitely requested (VP8). */
+  if (is_header || pad->need_header_flag) {
+    pad->need_header_flag = FALSE;
     GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_HEADER);
+  }
 
   if (packet->packet != NULL) {
     /* copy packet in buffer */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-base-1.22.3/ext/ogg/gstoggdemux.h 
new/gst-plugins-base-1.22.4/ext/ogg/gstoggdemux.h
--- old/gst-plugins-base-1.22.3/ext/ogg/gstoggdemux.h   2023-05-19 
10:23:19.000000000 +0200
+++ new/gst-plugins-base-1.22.4/ext/ogg/gstoggdemux.h   2023-06-20 
18:42:25.000000000 +0200
@@ -102,6 +102,8 @@
 
   GList *continued;
 
+  gboolean need_header_flag;
+
   gboolean discont;
   GstFlowReturn last_ret;       /* last return of _pad_push() */
   gboolean is_eos;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-base-1.22.3/ext/ogg/gstoggstream.c 
new/gst-plugins-base-1.22.4/ext/ogg/gstoggstream.c
--- old/gst-plugins-base-1.22.3/ext/ogg/gstoggstream.c  2023-05-19 
10:23:19.000000000 +0200
+++ new/gst-plugins-base-1.22.4/ext/ogg/gstoggstream.c  2023-06-20 
18:42:25.000000000 +0200
@@ -761,6 +761,22 @@
   return ((gpos & 0x07ffffff) == 0);
 }
 
+static gboolean
+is_packet_keyframe_vp8 (GstOggStream * pad, ogg_packet * packet)
+{
+  guint32 hdr;
+  gboolean is_kf = FALSE;
+
+  if (packet->bytes < 3) {
+    return FALSE;
+  }
+
+  hdr = GST_READ_UINT24_LE (packet->packet);
+
+  is_kf = (hdr & 0x1);
+  return is_kf;
+}
+
 static gint64
 granulepos_to_granule_vp8 (GstOggStream * pad, gint64 gpos)
 {
@@ -2576,7 +2592,7 @@
     granulepos_to_granule_vp8,
     granule_to_granulepos_vp8,
     is_keyframe_vp8,
-    NULL,
+    is_packet_keyframe_vp8,
     is_header_vp8,
     packet_duration_vp8,
     granulepos_to_key_granule_vp8,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-base-1.22.3/ext/opus/gstopusenc.c 
new/gst-plugins-base-1.22.4/ext/opus/gstopusenc.c
--- old/gst-plugins-base-1.22.3/ext/opus/gstopusenc.c   2023-05-19 
10:23:19.000000000 +0200
+++ new/gst-plugins-base-1.22.4/ext/opus/gstopusenc.c   2023-06-20 
18:42:25.000000000 +0200
@@ -508,8 +508,7 @@
     }
   }
   GST_WARNING_OBJECT (enc,
-      "Channel position %s is not representable in Vorbis order",
-      gst_opus_channel_names[position]);
+      "Channel position %d is not representable in Vorbis order", position);
   return -1;
 }
 
@@ -620,8 +619,8 @@
          needs to be done */
       if (!positions_done[position]) {
         int cv;
-        GST_DEBUG_OBJECT (enc, "Channel position %s is not mapped yet, adding",
-            gst_opus_channel_names[position]);
+        GST_DEBUG_OBJECT (enc, "Channel position %d is not mapped yet, adding",
+            position);
         cv = gst_opus_enc_find_channel_position_in_vorbis_order (enc, 
position);
         if (cv < 0)
           g_assert_not_reached ();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.22.3/ext/pango/gstbasetextoverlay.c 
new/gst-plugins-base-1.22.4/ext/pango/gstbasetextoverlay.c
--- old/gst-plugins-base-1.22.3/ext/pango/gstbasetextoverlay.c  2023-05-19 
10:23:19.000000000 +0200
+++ new/gst-plugins-base-1.22.4/ext/pango/gstbasetextoverlay.c  2023-06-20 
18:42:25.000000000 +0200
@@ -430,7 +430,7 @@
    */
   g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_TEXT_Y,
       g_param_spec_int ("text-y", "vertical position",
-          "Resulting X position of font rendering.", -G_MAXINT,
+          "Resulting Y position of font rendering.", -G_MAXINT,
           G_MAXINT, DEFAULT_PROP_TEXT_Y, G_PARAM_READABLE));
 
   /**
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.22.3/gst/playback/gststreamsynchronizer.c 
new/gst-plugins-base-1.22.4/gst/playback/gststreamsynchronizer.c
--- old/gst-plugins-base-1.22.3/gst/playback/gststreamsynchronizer.c    
2023-05-19 10:23:19.000000000 +0200
+++ new/gst-plugins-base-1.22.4/gst/playback/gststreamsynchronizer.c    
2023-06-20 18:42:25.000000000 +0200
@@ -388,6 +388,7 @@
       GST_STREAM_SYNCHRONIZER_LOCK (self);
       self->have_group_id &= have_group_id;
       have_group_id = self->have_group_id;
+      self->eos = FALSE;
 
       stream = gst_streamsync_pad_get_stream (pad);
 
@@ -580,12 +581,19 @@
       GstSyncStream *stream;
       GList *l;
       GstClockTime new_group_start_time = 0;
+      gboolean reset_time;
+
+      gst_event_parse_flush_stop (event, &reset_time);
 
       GST_STREAM_SYNCHRONIZER_LOCK (self);
+
       stream = gst_streamsync_pad_get_stream (pad);
-      GST_DEBUG_OBJECT (pad, "Resetting segment for stream %d",
-          stream->stream_number);
-      gst_segment_init (&stream->segment, GST_FORMAT_UNDEFINED);
+
+      if (reset_time) {
+        GST_DEBUG_OBJECT (pad, "Resetting segment for stream %d",
+            stream->stream_number);
+        gst_segment_init (&stream->segment, GST_FORMAT_UNDEFINED);
+      }
 
       stream->is_eos = FALSE;
       stream->eos_sent = FALSE;
@@ -593,32 +601,35 @@
       stream->wait = FALSE;
       g_cond_broadcast (&stream->stream_finish_cond);
 
-      for (l = self->streams; l; l = l->next) {
-        GstSyncStream *ostream = l->data;
-        GstClockTime start_running_time;
-
-        if (ostream == stream || ostream->flushing)
-          continue;
-
-        if (ostream->segment.format == GST_FORMAT_TIME) {
-          if (ostream->segment.rate > 0)
-            start_running_time =
-                gst_segment_to_running_time (&ostream->segment,
-                GST_FORMAT_TIME, ostream->segment.start);
-          else
-            start_running_time =
-                gst_segment_to_running_time (&ostream->segment,
-                GST_FORMAT_TIME, ostream->segment.stop);
+      if (reset_time) {
+        for (l = self->streams; l; l = l->next) {
+          GstSyncStream *ostream = l->data;
+          GstClockTime start_running_time;
 
-          new_group_start_time = MAX (new_group_start_time, 
start_running_time);
+          if (ostream == stream || ostream->flushing)
+            continue;
+
+          if (ostream->segment.format == GST_FORMAT_TIME) {
+            if (ostream->segment.rate > 0)
+              start_running_time =
+                  gst_segment_to_running_time (&ostream->segment,
+                  GST_FORMAT_TIME, ostream->segment.start);
+            else
+              start_running_time =
+                  gst_segment_to_running_time (&ostream->segment,
+                  GST_FORMAT_TIME, ostream->segment.stop);
+
+            new_group_start_time =
+                MAX (new_group_start_time, start_running_time);
+          }
         }
-      }
 
-      GST_DEBUG_OBJECT (pad,
-          "Updating group start time from %" GST_TIME_FORMAT " to %"
-          GST_TIME_FORMAT, GST_TIME_ARGS (self->group_start_time),
-          GST_TIME_ARGS (new_group_start_time));
-      self->group_start_time = new_group_start_time;
+        GST_DEBUG_OBJECT (pad,
+            "Updating group start time from %" GST_TIME_FORMAT " to %"
+            GST_TIME_FORMAT, GST_TIME_ARGS (self->group_start_time),
+            GST_TIME_ARGS (new_group_start_time));
+        self->group_start_time = new_group_start_time;
+      }
 
       gst_syncstream_unref (stream);
       GST_STREAM_SYNCHRONIZER_UNLOCK (self);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-base-1.22.3/gst/subparse/gstsubparse.c 
new/gst-plugins-base-1.22.4/gst/subparse/gstsubparse.c
--- old/gst-plugins-base-1.22.3/gst/subparse/gstsubparse.c      2023-05-19 
10:23:19.000000000 +0200
+++ new/gst-plugins-base-1.22.4/gst/subparse/gstsubparse.c      2023-06-20 
18:42:25.000000000 +0200
@@ -779,7 +779,7 @@
     }
 
     if (*next_tag == '<' && *(next_tag + 1) == '/') {
-      end_tag = strchr (cur, '>');
+      end_tag = strchr (next_tag, '>');
       if (end_tag) {
         const gchar *last = NULL;
         if (num_open_tags > 0)
@@ -794,6 +794,8 @@
         } else {
           --num_open_tags;
           g_ptr_array_remove_index (open_tags, num_open_tags);
+          cur = end_tag + 1;
+          continue;
         }
       }
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.22.3/gst-libs/gst/app/gstappsink.c 
new/gst-plugins-base-1.22.4/gst-libs/gst/app/gstappsink.c
--- old/gst-plugins-base-1.22.3/gst-libs/gst/app/gstappsink.c   2023-05-19 
10:23:19.000000000 +0200
+++ new/gst-plugins-base-1.22.4/gst-libs/gst/app/gstappsink.c   2023-06-20 
18:42:25.000000000 +0200
@@ -775,6 +775,11 @@
   gst_caps_replace (&priv->last_caps, NULL);
   gst_segment_init (&priv->preroll_segment, GST_FORMAT_UNDEFINED);
   gst_segment_init (&priv->last_segment, GST_FORMAT_UNDEFINED);
+  priv->sample = gst_sample_make_writable (priv->sample);
+  gst_sample_set_buffer (priv->sample, NULL);
+  gst_sample_set_buffer_list (priv->sample, NULL);
+  gst_sample_set_caps (priv->sample, NULL);
+  gst_sample_set_segment (priv->sample, NULL);
   g_mutex_unlock (&priv->mutex);
 
   return TRUE;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.22.3/gst-libs/gst/gl/gstglfilter.c 
new/gst-plugins-base-1.22.4/gst-libs/gst/gl/gstglfilter.c
--- old/gst-plugins-base-1.22.3/gst-libs/gst/gl/gstglfilter.c   2023-05-19 
10:23:19.000000000 +0200
+++ new/gst-plugins-base-1.22.4/gst-libs/gst/gl/gstglfilter.c   2023-06-20 
18:42:25.000000000 +0200
@@ -1032,6 +1032,14 @@
   if (out_sync_meta)
     gst_gl_sync_meta_set_sync_point (out_sync_meta, context);
 
+  /* since gl api is async operation, when return from transform()
+   * function, basetransform will unref input buffer immidiately,
+   * but gpu may still reading input buffer for rendering. Add parent
+   * buffer meta to hold one reference of inbuf, this can avoid this
+   * buffer sync problem.
+   */
+  gst_buffer_add_parent_buffer_meta (outbuf, inbuf);
+
   return ret ? GST_FLOW_OK : GST_FLOW_ERROR;
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-base-1.22.3/gst-libs/gst/tag/tags.c 
new/gst-plugins-base-1.22.4/gst-libs/gst/tag/tags.c
--- old/gst-plugins-base-1.22.3/gst-libs/gst/tag/tags.c 2023-05-19 
10:23:19.000000000 +0200
+++ new/gst-plugins-base-1.22.4/gst-libs/gst/tag/tags.c 2023-06-20 
18:42:25.000000000 +0200
@@ -530,7 +530,8 @@
   GstStructure *image_info = NULL;
 
   g_return_val_if_fail (image_data != NULL, NULL);
-  g_return_val_if_fail (image_data_len > 0, NULL);
+  g_return_val_if_fail (image_data_len > 0
+      || image_data_len == G_MAXUINT32, NULL);
   g_return_val_if_fail (gst_tag_image_type_is_valid (image_type), NULL);
 
   GST_DEBUG ("image data len: %u bytes", image_data_len);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.22.3/gst-libs/gst/video/convertframe.c 
new/gst-plugins-base-1.22.4/gst-libs/gst/video/convertframe.c
--- old/gst-plugins-base-1.22.3/gst-libs/gst/video/convertframe.c       
2023-05-19 10:23:19.000000000 +0200
+++ new/gst-plugins-base-1.22.4/gst-libs/gst/video/convertframe.c       
2023-06-20 18:42:25.000000000 +0200
@@ -114,20 +114,101 @@
 }
 
 static GstElement *
+build_convert_frame_pipeline_d3d11 (GstElement ** src_element,
+    GstElement ** sink_element, GstCaps * from_caps, GstCaps * to_caps,
+    GError ** err)
+{
+  GstElement *pipeline = NULL;
+  GstElement *appsrc = NULL;
+  GstElement *d3d11_convert = NULL;
+  GstElement *d3d11_download = NULL;
+  GstElement *convert = NULL;
+  GstElement *enc = NULL;
+  GstElement *appsink = NULL;
+  GError *error = NULL;
+
+  if (!create_element ("appsrc", &appsrc, &error) ||
+      !create_element ("d3d11convert", &d3d11_convert, &error) ||
+      !create_element ("d3d11download", &d3d11_download, &error) ||
+      !create_element ("videoconvert", &convert, &error) ||
+      !create_element ("appsink", &appsink, &error)) {
+    GST_ERROR ("Could not create element");
+    goto failed;
+  }
+
+  if (caps_are_raw (to_caps)) {
+    if (!create_element ("identity", &enc, &error)) {
+      GST_ERROR ("Could not create identity element");
+      goto failed;
+    }
+  } else {
+    enc = get_encoder (to_caps, &error);
+    if (!enc) {
+      GST_ERROR ("Could not create encoder");
+      goto failed;
+    }
+  }
+
+  g_object_set (appsrc, "caps", from_caps, "emit-signals", TRUE,
+      "format", GST_FORMAT_TIME, NULL);
+  g_object_set (appsink, "caps", to_caps, "emit-signals", TRUE, NULL);
+
+  pipeline = gst_pipeline_new ("d3d11-convert-frame-pipeline");
+  gst_bin_add_many (GST_BIN (pipeline), appsrc, d3d11_convert, d3d11_download,
+      convert, enc, appsink, NULL);
+
+  if (!gst_element_link_many (appsrc,
+          d3d11_convert, d3d11_download, convert, enc, appsink, NULL)) {
+    /* Now pipeline takes ownership of all elements, so only top-level
+     * pipeline should be cleared */
+    appsrc = d3d11_convert = convert = enc = appsink = NULL;
+
+    error = g_error_new (GST_CORE_ERROR, GST_CORE_ERROR_NEGOTIATION,
+        "Could not configure pipeline for conversion");
+  }
+
+  *src_element = appsrc;
+  *sink_element = appsink;
+
+  return pipeline;
+
+failed:
+  if (err)
+    *err = error;
+  else
+    g_clear_error (&error);
+
+  gst_clear_object (&pipeline);
+  gst_clear_object (&appsrc);
+  gst_clear_object (&d3d11_convert);
+  gst_clear_object (&d3d11_download);
+  gst_clear_object (&convert);
+  gst_clear_object (&enc);
+  gst_clear_object (&appsink);
+
+  return NULL;
+}
+
+static GstElement *
 build_convert_frame_pipeline (GstElement ** src_element,
-    GstElement ** sink_element, const GstCaps * from_caps,
-    GstVideoCropMeta * cmeta, const GstCaps * to_caps, GError ** err)
+    GstElement ** sink_element, GstCaps * from_caps,
+    GstVideoCropMeta * cmeta, GstCaps * to_caps, GError ** err)
 {
   GstElement *vcrop = NULL, *csp = NULL, *csp2 = NULL, *vscale = NULL;
   GstElement *src = NULL, *sink = NULL, *encoder = NULL, *pipeline;
   GstElement *dl = NULL;
   GstVideoInfo info;
   GError *error = NULL;
-#ifdef HAVE_GL
   GstCapsFeatures *features;
 
   features = gst_caps_get_features (from_caps, 0);
-  if (gst_caps_features_contains (features, GST_CAPS_FEATURE_MEMORY_GL_MEMORY))
+  if (features && gst_caps_features_contains (features, "memory:D3D11Memory")) 
{
+    return build_convert_frame_pipeline_d3d11 (src_element, sink_element,
+        from_caps, to_caps, err);
+  }
+#ifdef HAVE_GL
+  if (features &&
+      gst_caps_features_contains (features, GST_CAPS_FEATURE_MEMORY_GL_MEMORY))
     if (!create_element ("gldownload", &dl, &error))
       goto no_elements;
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.22.3/gst-libs/gst/video/gstvideometa.c 
new/gst-plugins-base-1.22.4/gst-libs/gst/video/gstvideometa.c
--- old/gst-plugins-base-1.22.3/gst-libs/gst/video/gstvideometa.c       
2023-05-19 10:23:19.000000000 +0200
+++ new/gst-plugins-base-1.22.4/gst-libs/gst/video/gstvideometa.c       
2023-06-20 18:42:25.000000000 +0200
@@ -395,12 +395,40 @@
 }
 
 static gboolean
+gst_video_meta_is_alignment_valid (GstVideoAlignment * align)
+{
+  gint i;
+
+  g_return_val_if_fail (align != NULL, FALSE);
+
+  if (align->padding_top != 0 || align->padding_bottom != 0 ||
+      align->padding_left != 0 || align->padding_right != 0)
+    return TRUE;
+
+  for (i = 0; i < GST_VIDEO_MAX_PLANES; i++) {
+    if (align->stride_align[i] != 0)
+      return TRUE;
+  }
+
+  return FALSE;
+}
+
+static gboolean
 gst_video_meta_validate_alignment (GstVideoMeta * meta,
     gsize plane_size[GST_VIDEO_MAX_PLANES])
 {
   GstVideoInfo info;
   guint i;
 
+  if (!gst_video_meta_is_alignment_valid (&meta->alignment)) {
+    GST_LOG ("Set alignment on meta to all zero");
+
+    /* When alignment is invalid, no further check is needed,
+       unless user wants to calculate the pitch for each plane. */
+    if (!plane_size)
+      return TRUE;
+  }
+
   gst_video_info_init (&info);
   gst_video_info_set_format (&info, meta->format, meta->width, meta->height);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.22.3/gst-libs/gst/video/video-blend.h 
new/gst-plugins-base-1.22.4/gst-libs/gst/video/video-blend.h
--- old/gst-plugins-base-1.22.3/gst-libs/gst/video/video-blend.h        
2023-05-19 10:23:19.000000000 +0200
+++ new/gst-plugins-base-1.22.4/gst-libs/gst/video/video-blend.h        
2023-06-20 18:42:25.000000000 +0200
@@ -27,6 +27,8 @@
 #include <gst/gst.h>
 #include <gst/video/video.h>
 
+G_BEGIN_DECLS
+
 GST_VIDEO_API
 void       gst_video_blend_scale_linear_RGBA  (GstVideoInfo * src, GstBuffer * 
src_buffer,
                                                gint dest_height, gint 
dest_width,
@@ -38,4 +40,6 @@
                                                gint x, gint y,
                                                gfloat global_alpha);
 
+G_END_DECLS
+
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-base-1.22.3/gst-plugins-base.doap 
new/gst-plugins-base-1.22.4/gst-plugins-base.doap
--- old/gst-plugins-base-1.22.3/gst-plugins-base.doap   2023-05-19 
10:23:19.000000000 +0200
+++ new/gst-plugins-base-1.22.4/gst-plugins-base.doap   2023-06-20 
18:42:25.000000000 +0200
@@ -36,6 +36,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/gst-plugins-base/gst-plugins-base-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/gst-plugins-base-1.22.3/meson.build 
new/gst-plugins-base-1.22.4/meson.build
--- old/gst-plugins-base-1.22.3/meson.build     2023-05-19 10:23:19.000000000 
+0200
+++ new/gst-plugins-base-1.22.4/meson.build     2023-06-20 18:42:25.000000000 
+0200
@@ -1,5 +1,5 @@
 project('gst-plugins-base', '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/gst-plugins-base-1.22.3/po/gst-plugins-base-1.0.pot 
new/gst-plugins-base-1.22.4/po/gst-plugins-base-1.0.pot
--- old/gst-plugins-base-1.22.3/po/gst-plugins-base-1.0.pot     2023-05-19 
10:24:07.610512000 +0200
+++ new/gst-plugins-base-1.22.4/po/gst-plugins-base-1.0.pot     2023-06-20 
18:44:09.739450500 +0200
@@ -6,9 +6,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: gst-plugins-base-1.22.3\n"
+"Project-Id-Version: gst-plugins-base-1.22.4\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-05-19 09:24+0100\n"
+"POT-Creation-Date: 2023-06-20 17:44+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"
@@ -17,30 +17,30 @@
 "Content-Type: text/plain; charset=CHARSET\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: ext/alsa/gstalsasink.c:606
+#: ext/alsa/gstalsasink.c:605
 msgid "Could not open device for playback in mono mode."
 msgstr ""
 
-#: ext/alsa/gstalsasink.c:608
+#: ext/alsa/gstalsasink.c:607
 msgid "Could not open device for playback in stereo mode."
 msgstr ""
 
-#: ext/alsa/gstalsasink.c:612
+#: ext/alsa/gstalsasink.c:611
 #, c-format
 msgid "Could not open device for playback in %d-channel mode."
 msgstr ""
 
-#: ext/alsa/gstalsasink.c:886
+#: ext/alsa/gstalsasink.c:885
 msgid ""
 "Could not open audio device for playback. Device is being used by another "
 "application."
 msgstr ""
 
-#: ext/alsa/gstalsasink.c:891
+#: ext/alsa/gstalsasink.c:890
 msgid "Could not open audio device for playback."
 msgstr ""
 
-#: ext/alsa/gstalsasink.c:1117
+#: ext/alsa/gstalsasink.c:1113
 msgid "Error outputting to audio device. The device has been disconnected."
 msgstr ""
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-base-1.22.3/po/gst-plugins-base.pot 
new/gst-plugins-base-1.22.4/po/gst-plugins-base.pot
--- old/gst-plugins-base-1.22.3/po/gst-plugins-base.pot 2023-05-19 
10:24:07.610512000 +0200
+++ new/gst-plugins-base-1.22.4/po/gst-plugins-base.pot 2023-06-20 
18:44:09.739450500 +0200
@@ -6,9 +6,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: gst-plugins-base-1.22.3\n"
+"Project-Id-Version: gst-plugins-base-1.22.4\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-05-19 09:24+0100\n"
+"POT-Creation-Date: 2023-06-20 17:44+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"
@@ -17,30 +17,30 @@
 "Content-Type: text/plain; charset=CHARSET\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: ext/alsa/gstalsasink.c:606
+#: ext/alsa/gstalsasink.c:605
 msgid "Could not open device for playback in mono mode."
 msgstr ""
 
-#: ext/alsa/gstalsasink.c:608
+#: ext/alsa/gstalsasink.c:607
 msgid "Could not open device for playback in stereo mode."
 msgstr ""
 
-#: ext/alsa/gstalsasink.c:612
+#: ext/alsa/gstalsasink.c:611
 #, c-format
 msgid "Could not open device for playback in %d-channel mode."
 msgstr ""
 
-#: ext/alsa/gstalsasink.c:886
+#: ext/alsa/gstalsasink.c:885
 msgid ""
 "Could not open audio device for playback. Device is being used by another "
 "application."
 msgstr ""
 
-#: ext/alsa/gstalsasink.c:891
+#: ext/alsa/gstalsasink.c:890
 msgid "Could not open audio device for playback."
 msgstr ""
 
-#: ext/alsa/gstalsasink.c:1117
+#: ext/alsa/gstalsasink.c:1113
 msgid "Error outputting to audio device. The device has been disconnected."
 msgstr ""
 

++++++ reduce-required-meson.patch ++++++
--- /var/tmp/diff_new_pack.7GokJF/_old  2023-07-01 23:17:26.798042843 +0200
+++ /var/tmp/diff_new_pack.7GokJF/_new  2023-07-01 23:17:26.802042867 +0200
@@ -1,10 +1,10 @@
-Index: gst-plugins-base-1.22.3/meson.build
+Index: gst-plugins-base-1.22.4/meson.build
 ===================================================================
---- gst-plugins-base-1.22.3.orig/meson.build
-+++ gst-plugins-base-1.22.3/meson.build
+--- gst-plugins-base-1.22.4.orig/meson.build
++++ gst-plugins-base-1.22.4/meson.build
 @@ -1,6 +1,6 @@
  project('gst-plugins-base', '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