Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package gstreamer-plugins-base for 
openSUSE:Factory checked in at 2022-12-25 15:14:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gstreamer-plugins-base (Old)
 and      /work/SRC/openSUSE:Factory/.gstreamer-plugins-base.new.1563 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gstreamer-plugins-base"

Sun Dec 25 15:14:22 2022 rev:88 rq:1045096 version:1.20.5

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/gstreamer-plugins-base/gstreamer-plugins-base.changes
    2022-10-25 11:18:46.025971702 +0200
+++ 
/work/SRC/openSUSE:Factory/.gstreamer-plugins-base.new.1563/gstreamer-plugins-base.changes
  2022-12-25 15:14:29.153248429 +0100
@@ -1,0 +2,27 @@
+Fri Dec 23 18:59:40 UTC 2022 - Bjørn Lie <bjorn....@gmail.com>
+
+- Update to version 1.20.5:
+  + audioconvert, audioresample, audiofilter: fix divide by 0 for
+    input buffer without caps
+  + cdparanoia: Ignore compiler warning coming from the cdparanoia
+    header
+  + oggdemux, parsebin: More leak fixes
+  + opengl:
+    - Fix automatic dispmanx detection for rpi4
+    - Fix usage of eglCreate/DestroyImage
+    - Fix static linking on macOS
+  + Bump core requirement in 1.20 branch to 1.20.4
+  + oggdemux: Don't leak incoming EOS event
+  + opusdec: Various channel-related fixes
+  + subparse: Fix non-closed tag handling.
+  + textrender:
+    - Don't blindly forward all events and don't blindly forward
+      all events
+    - Negotiate caps on a GAP event if none were negotiated yet
+  + timeoverlay: fix pad leak
+  + videodecoder: Only post latency message if it changed
+  + videoscale: buffer meta handling fixes (NULL-terminate array of
+    valid meta tags)
+  + videosink: Don't return unknown end-time from get_times()
+
+-------------------------------------------------------------------

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

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

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

Other differences:
------------------
++++++ gstreamer-plugins-base.spec ++++++
--- /var/tmp/diff_new_pack.NuSVTy/_old  2022-12-25 15:14:29.653251259 +0100
+++ /var/tmp/diff_new_pack.NuSVTy/_new  2022-12-25 15:14:29.657251281 +0100
@@ -20,7 +20,7 @@
 %define gst_branch 1.0
 %define gstreamer_req_version %(echo %{version} | sed -e "s/+.*//")
 Name:           gstreamer-plugins-base
-Version:        1.20.4
+Version:        1.20.5
 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.20.4.tar.xz -> gst-plugins-base-1.20.5.tar.xz ++++++
++++ 1701 lines of diff (skipped)
++++    retrying with extended exclude list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-base-1.20.4/ChangeLog new/gst-plugins-base-1.20.5/ChangeLog
--- old/gst-plugins-base-1.20.4/ChangeLog       2022-10-12 17:39:51.000000000 
+0200
+++ new/gst-plugins-base-1.20.5/ChangeLog       2022-12-20 00:34:46.000000000 
+0100
@@ -1,7 +1,243 @@
+=== release 1.20.5 ===
+
+2022-12-19 23:34:42 +0000  Tim-Philipp Müller <t...@centricular.com>
+
+       * NEWS:
+       * RELEASE:
+       * gst-plugins-base.doap:
+       * meson.build:
+         Release 1.20.5
+
+2022-12-19 23:34:34 +0000  Tim-Philipp Müller <t...@centricular.com>
+
+       * ChangeLog:
+         Update ChangeLogs for 1.20.5
+
+2022-12-19 15:22:15 +0100  Philipp Zabel <p.za...@pengutronix.de>
+
+       * gst/videoscale/gstvideoscale.c:
+         videoscale: fix valid_tags NULL-terminated array of strings
+         The valid_tags array of strings must be NULL-terminated,
+         as it is passed to the g_strv_contains() function.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3604>
+
+2022-11-17 15:41:35 +0100  Edward Hervey <edw...@centricular.com>
+
+       * gst/playback/gstdecodebin2.c:
+         decodebin2: Minor debug fix for decodepad
+         decodedad might have their name changed when exposing, causing a race 
when
+         trying to get their name without taking a lock. Just use 
GST_PTR_POINTER in
+         debug statements instead
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3597>
+
+2022-11-21 15:12:26 +0100  Edward Hervey <edw...@centricular.com>
+
+       * ext/ogg/gstoggdemux.c:
+         oggdemux: Don't leak pending seek event
+         Make sure any pending seek event is released when going back down to 
READY.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3578>
+
+2022-11-21 15:10:35 +0100  Edward Hervey <edw...@centricular.com>
+
+       * gst/playback/gstparsebin.c:
+         parsebin: Don't leak parsepad list on shutdown
+         Free it as it is down in other cases
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3578>
+
+2022-11-30 20:48:28 +0200  Vivia Nikolaidou <vi...@ahiru.eu>
+
+       * ext/opus/gstopusdec.c:
+         opusdec: Use proper guint/guint8 type conversion
+         Do not cast, that might yield wrong results.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3576>
+
+2022-11-30 20:47:11 +0200  Vivia Nikolaidou <vi...@ahiru.eu>
+
+       * ext/opus/gstopusdec.c:
+         opusdec: Negotiate default to 2 channels
+         In that place, dec->n_channels can still theoretically be 0. Default 
to
+         2 in that case.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3576>
+
+2022-12-11 17:36:53 +0000  Tim-Philipp Müller <t...@centricular.com>
+
+       * ext/pango/gsttimeoverlay.c:
+         timeoverlay: fix pad leak
+         Spotted by Jiri Uncovsky.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3559>
+
+2022-12-07 14:49:05 +0200  Sebastian Dröge <sebast...@centricular.com>
+
+       * ext/pango/gsttextrender.c:
+         textrender: Negotiate caps on a GAP event if none were negotiated yet
+         Otherwise downstream wouldn't have received a segment event either and
+         wouldn't know what to do with the gap event
+         And also forward any pending segment event.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3548>
+
+2022-11-26 09:23:59 +0100  Tim-Philipp Müller <t...@centricular.com>
+
+       * gst-libs/gst/audio/gstaudiofilter.c:
+       * gst/audioconvert/gstaudioconvert.c:
+       * gst/audioresample/gstaudioresample.c:
+         audioconvert, audioresample, audiofilter: fix divide by 0 for input 
buffer without caps
+         gst-launch-1.0 audiotestsrc ! udpsink host=127.0.0.1
+         gst-launch-1.0 udpsrc ! audioconvert ! autoaudiosink
+         would crash with a floating point exception when clipping the input
+         buffer owing to a division by zero because no caps event was received.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3470>
+
+2022-11-21 18:47:50 +0200  Sebastian Dröge <sebast...@centricular.com>
+
+       * ext/pango/gsttextrender.c:
+       * ext/pango/gsttextrender.h:
+         textrender: Don't pass plaintext as pango markup to Pango
+         Otherwise e.g. & in the text will cause Pango to complain about 
invalid
+         markup and render the text incorrectly.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3458>
+
+2022-11-21 18:43:54 +0200  Sebastian Dröge <sebast...@centricular.com>
+
+       * ext/pango/gsttextrender.c:
+         textrender: Don't blindly forward all events
+         Use gst_pad_event_default(), which does the right thing by default.
+         Especially it does not forward text/x-plain caps downstream.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3458>
+
+2022-11-14 07:26:25 +0100  Edward Hervey <edw...@centricular.com>
+
+       * ext/ogg/gstoggdemux.c:
+         oggdemux: Don't leak incoming EOS event
+         If we're going to drop it ... then do drop it :)
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3412>
+
+2022-11-05 07:34:27 +0100  Edward Hervey <edw...@centricular.com>
+
+       * gst/subparse/gstsubparse.c:
+         subparse: Fix non-closed tag handling.
+         Unclear what the goal was, but we could end up reading way past the 
next_tag.
+         Instead just move everything from after the end tag ('>') to the 
next_tag.
+         Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=53040
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3351>
+
+2022-10-27 15:13:36 +0300  Sebastian Dröge <sebast...@centricular.com>
+
+       * gst-libs/gst/app/gstappsrc.c:
+       * gst-libs/gst/audio/gstaudiodecoder.c:
+       * gst-libs/gst/audio/gstaudioencoder.c:
+       * gst-libs/gst/video/gstvideoencoder.c:
+         core/base: Only post latency messages if the latency values have 
actually changed
+         Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1525
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3291>
+
+2022-10-27 07:21:19 +0200  Edward Hervey <edw...@centricular.com>
+
+       * gst-libs/gst/video/gstvideodecoder.c:
+         videodecoder: Only post latency message if it changed
+         Posting latency messages causes a full and potentially expensive 
latency
+         recalculation of the pipeline. While subclasses should check whether 
the latency
+         really changed or not before calling this function, we ensure that we 
do not
+         post such messages if it didn't change.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3291>
+
+2022-10-06 00:00:59 +0900  Seungha Yang <seun...@centricular.com>
+
+       * gst-libs/gst/video/gstvideosink.c:
+         videosink: Don't return unknown end-time from get_times()
+         ... in case of reverse playback. Otherwise basesink will not
+         wait for clock
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3277>
+
+2022-10-21 21:50:01 +0530  Nirbheek Chauhan <nirbh...@centricular.com>
+
+       * gst-libs/gst/gl/cocoa/gstgl_cocoa_private.h:
+       * gst-libs/gst/gl/cocoa/gstglcontext_cocoa.m:
+       * gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m:
+         gl/vulkan: Fix static linking on macOS
+         duplicate symbol '__invoke_on_main' in:
+         
/Library/Frameworks/GStreamer.framework/Versions/1.0/lib/libgstvulkan-1.0.a(cocoa_gstvkwindow_cocoa.m.o)
+         
/Library/Frameworks/GStreamer.framework/Versions/1.0/lib/libgstgl-1.0.a(cocoa_gstglwindow_cocoa.m.o)
+         ld: 1 duplicate symbol for architecture x86_64
+         clang: error: linker command failed with exit code 1 (use -v to see 
invocation)
+         Also make the same change in iOS for consistency.
+         Continuation of 
https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1132
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3263>
+
+2022-10-14 14:59:49 +0100  Tim-Philipp Müller <t...@centricular.com>
+
+       * meson.build:
+         gst-plugins-base: bump core req to 1.20.4
+         For newly-added _gst_meta_tag_memory_reference symbol.
+         
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2928#note_1591459
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3185>
+
+2022-10-04 05:39:51 +0100  Matthew Waters <matt...@centricular.com>
+
+       * gst-libs/gst/gl/meson.build:
+         build/gl: fix automatic dispmanx detection for rpi4
+         rpi4 doesn't contain dispmanx but still contains bcm_host.pc which
+         confuses the configure detection.  Add an explicit check for
+         EGL_DISPMANX_WINDOW_T to ensure that we only build with dispmanx when
+         the types are available.
+         Fixes: 
https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/893
+         Fixes: 
https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/952
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3246>
+
+2022-07-06 21:45:24 +0300  Jordan Petridis <jor...@centricular.com>
+
+       * ext/cdparanoia/meson.build:
+         cdparanoia: Ignore compiler warning coming from the cdparanoia header
+         When trying to build the plugin, GCC starts complaining about issues
+         with one of the cdparanoia headers and it block us from being able
+         to build the plugin with Werror.
+         The current warning in the header look like this:
+         ```
+         [1/2] Compiling C object 
subprojects/gst-plugins-base/ext/cdparanoia/libgstcdparanoia.so.p/gstcdparanoiasrc.c.o
+         In file included from 
../subprojects/gst-plugins-base/ext/cdparanoia/gstcdparanoiasrc.h:37,
+         from 
../subprojects/gst-plugins-base/ext/cdparanoia/gstcdparanoiasrc.c:31:
+         /usr/include/cdda/cdda_interface.h:164:3: warning: initialization 
discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
+         164 |   "Success",
+         |   ^~~~~~~~~
+         ...
+         /usr/include/cdda/cdda_interface.h:163:14: warning: ‘strerror_tr’ 
defined but not used [-Wunused-variable]
+         163 | static char *strerror_tr[]={
+         |              ^~~~~~~~~~~
+         [2/2] Linking target 
subprojects/gst-plugins-base/ext/cdparanoia/libgstcdparanoia.so
+         ```
+         Last release of cdparanoia was in 2008, so our best bet for the
+         time is to ignore the warnings.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3232>
+
+2022-10-14 16:12:45 +0200  Edward Hervey <edw...@centricular.com>
+
+       * tools/gst-play.c:
+         gst-play: Don't leak the stream collection
+         We are given a reference to the collection when parsing it from the
+         message. Just store it (instead of referencing it again).
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3191>
+
+2022-08-22 16:33:23 -0400  Nicolas Dufresne <nicolas.dufre...@collabora.com>
+
+       * gst-libs/gst/gl/egl/gsteglimage.c:
+         opengl: Fix usage of eglCreate/DestroyImage
+         The implementation was inconsistent between create and destroy. 
EGLImage
+         creation and destruction is requires for EGL 1.5 and up, while
+         otherwise the KHR version is only available if EGL_KHR_image_base
+         feature is set. Not doing these check may lead to getting a function
+         pointer to a stub, which is notably the case when using apitrace.
+         Fixes #1389
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3170>
+
+2022-10-12 18:40:25 +0100  Tim-Philipp Müller <t...@centricular.com>
+
+       * meson.build:
+         Back to development
+
 === release 1.20.4 ===
 
 2022-10-12 16:39:47 +0100  Tim-Philipp Müller <t...@centricular.com>
 
+       * ChangeLog:
        * NEWS:
        * RELEASE:
        * gst-plugins-base.doap:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-base-1.20.4/NEWS new/gst-plugins-base-1.20.5/NEWS
--- old/gst-plugins-base-1.20.4/NEWS    2022-10-12 17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/NEWS    2022-12-20 00:34:46.000000000 +0100
@@ -2,13 +2,13 @@
 
 GStreamer 1.20.0 was originally released on 3 February 2022.
 
-The latest bug-fix release in the 1.20 series is 1.20.4 and was released
-on 12 October 2022.
+The latest bug-fix release in the 1.20 series is 1.20.5 and was released
+on 19 December 2022.
 
 See https://gstreamer.freedesktop.org/releases/1.20/ for the latest
 version of this document.
 
-Last updated: Wednesday 12 October 2022, 15:00 UTC (log)
+Last updated: Monday 19 December 2022, 19:00 UTC (log)
 
 Introduction
 
@@ -1791,6 +1791,13 @@
 
 Known Issues
 
+-   GStreamer may fail to build the hotdoc documentation with the Meson
+    0.64.0 release owing to a Meson bug. This should only affect systems
+    where hotdoc is installed, and will be fixed in Meson 0.64.1 by this
+    Meson PR in combination with this GStreamer MR. In the meantime,
+    users can pass -Ddoc=disabledor downgrade to an older Meson version
+    (< 0.64.0).
+
 -   nothing in particular at this point (but also see possibly breaking
     changes section above)
 
@@ -2530,6 +2537,7 @@
     chroma (Y41B, YUV9, YVU9 and IYU9)
 -   macOS build and packaging fixes, in particular fix finding of gio
     modules on macOS for https/TLS support
+-   Fix consuming of the macOS package as a framework in XCode
 -   Performance improvements
 -   Miscellaneous bug fixes, memory leak fixes, and other stability and
     reliability improvements
@@ -2783,6 +2791,252 @@
 -   List of Merge Requests applied in 1.20.4
 -   List of Issues fixed in 1.20.4
 
+1.20.5
+
+The fifth 1.20 bug-fix release (1.20.5) was released on 19 December
+2022.
+
+This release only contains bugfixes and it should be safe to upgrade
+from 1.20.x.
+
+Highlighted bugfixes in 1.20.5
+
+-   systemclock waiting fixes for certain 32-bit platforms/libcs
+-   alphacombine: robustness improvements for corner case scenarios
+-   avfvideosrc: Report latency when doing screen capture
+-   d3d11videosink: various thread-safety and stability fixes
+-   decklink: fix performance issue when HDMI signal has been lost for a
+    long time
+-   flacparse: Fix handling of headers advertising 32 bits per sample
+-   mpegts: Handle when iconv doesn’t support ISO 6937 (e.g. musl libc)
+-   opengl: fix automatic dispmanx detection for rpi4 and fix usage of
+    eglCreate/DestroyImage
+-   opusdec: Various channel-related fixes
+-   textrender: event handling fixes, esp. for GAP event
+-   subparse: Fix non-closed tag handling
+-   videoscale: fix handling of unknown buffer metas
+-   videosink: reverse playback handling fixes
+-   qtmux: Prefill mode fixes, especially for raw audio
+-   multiudpsink: allow binding to IPv6 address
+-   rtspsrc: Fix usage of IPv6 connections in SETUP
+-   rtspsrc: Only EOS on timeout if all streams are timed out/EOS
+-   splitmuxsrc: fix playback stall if there are unlinked pads
+-   v4l2: Fix SIGSEGV on state change during format changes
+-   wavparse robustness fixes
+-   Fix static linking on macOS (opengl, vulkan)
+-   gstreamer-vaapi: fix headless build against mesa >= 22.3.0
+-   GStreamer Editing Services library: Fix build with tools disabled
+-   webrtc example/demo fixes
+-   unit test fixes for aesdec and rtpjitterbuffer
+-   Cerbero: Fix ios cross-compile with cmake on M1; some recipe updates
+    and other build fixes
+-   Binary packages: pkg-config file fixes for various recipes (ffmpeg,
+    taglib, gstreamer)
+-   Binary packages: Enable high bitdepth support for libvpx (VP8/VP9
+    encoding/decoding)
+-   Binary packages: ship aes plugin
+-   Miscellaneous bug fixes, memory leak fixes, and other stability and
+    reliability improvements
+-   Performance improvements
+
+gstreamer
+
+-   allocator: Copy allocator name in gst_allocator_register()
+-   miniobject: support higher refcount values
+-   pads: Fix non-serialized sticky event push, e.g. instant change rate
+    events
+-   padtemplate: Fix annotations
+-   systemclock: Use futex_time64 syscall on x32 and other platforms
+    that always…
+-   Fix build of 1.20 branch with Meson 0.64.1 for those who have hotdoc
+    installed on their system.
+-   meson: fix check for pthread_setname_np()
+-   -Wimplicit-function-declaration in pthread_setname_np check (missing
+    _GNU_SOURCE)
+-   gst-inspect: Don’t leak list
+
+Core Elements
+
+-   concat: Properly propagate EOS seqnum
+-   fakesrc: avoid time overflow with datarate
+
+gst-plugins-base
+
+-   audioconvert, audioresample, audiofilter: fix divide by 0 for input
+    buffer without caps
+-   cdparanoia: Ignore compiler warning coming from the cdparanoia
+    header
+-   oggdemux, parsebin: More leak fixes
+-   opengl: fix automatic dispmanx detection for rpi4
+-   opengl: Fix usage of eglCreate/DestroyImage
+-   opengl: Fix static linking on macOS
+-   opusdec: Various channel-related fixes
+-   textrender: Negotiate caps on a GAP event if none were negotiated
+    yet
+-   textrender: Don’t blindly forward all events and don’t blindly
+    forward all events
+-   timeoverlay: fix pad leak
+-   oggdemux: Don’t leak incoming EOS event
+-   subparse: Fix non-closed tag handling.
+-   videodecoder: Only post latency message if it changed
+-   videoscale: buffer meta handling fixes (NULL-terminate array of
+    valid meta tags)
+-   videosink: Don’t return unknown end-time from get_times()
+-   Bump core requirement in 1.20 branch to 1.20.4
+
+Tools
+
+-   gst-play: Don’t leak the stream collection
+
+gst-plugins-good
+
+-   flacparse: Fix handling of headers advertising 32bps
+-   qt5: deactivate context if fill_info fails
+-   qt5: initialize GError properly in gst_qt_get_gl_wrapcontext()
+-   qtdemux: check return value from gst_structure_get in PIFF box
+-   qtdemux: use unsigned int types to store result of QT_UINT32
+-   qtmux: Prefill mode fixes
+-   oss4: Fix debug category initialization
+-   multiudpsink: allow binding to IPv6 address
+-   rtpjitterbuffer tests: Cast drop-messages-interval type properly
+    (fixing it on 32-bit architectures)
+-   rtspsrc: fix seek event leaks
+-   rtspsrc: Don’t replace 404 errors with “no auth protocol found”
+-   rtspsrc: Only EOS on timeout if all streams are timed out/EOS
+-   rtspsrc: Fix usage of IPv6 connections in SETUP
+-   splitmuxsrc: don’t queue data on unlinked pads
+-   v4l2: Fix SIGSEGV on ‘change state’ during ‘format change’
+-   v4l2videodec: Fix activation of internal pool
+-   wavparse: Avoid occasional crash due to referencing freed buffer.
+-   wavparse: Fix crash that occurs in push mode when header chunks are
+    corrupted in certain ways.
+
+gst-plugins-bad
+
+-   aesdec: Fix padding removal for per-buffer-padding=FALSE
+-   aesdec test failing in gst-plugins-bad
+-   alphacombine: Add missing query handler for gaps
+-   avfdeviceprovider: do not leak the properties
+-   avfvideosrc: Report latency when doing screen capture
+-   d3d11screencapturesrc: Specify PAR 1/1 to template caps
+-   d3d11videosink: Fixing focus lost on desktop layout change
+-   d3d11videosink: Call ShowWindow() from window thread
+-   d3d11videosink: Fix deadlock when parent window is busy
+-   d3d11videosink: Always clear back buffer on resize
+-   decklink: reset calculation of time_mapping to fix clipping HDMI
+    video
+-   directshow: Fix build error with glib 2.75 and newer
+-   dvbsubenc: Forward GAP events as-is if we wouldn’t produce an end
+    packet and…
+-   dvbsubenc: Write Display Definition Segment if a non-default
+    width/height is used
+-   h265decoder: Do not abort when failed to prepare ref pic set
+-   h264parser: Fix a typo in pred_weight_table parsing.
+-   mediafoundation, d3d11: Fix memory leak and make leak tracer happy
+-   mpegts: Handle when iconv doesn’t support ISO 6937 (e.g. musl libc)
+-   mpegts: Check continuity counter on section streams
+-   mpegts: Revert “mpegtspacketizer: memcmp potentially seen_before
+    data”
+-   mpegtspacketizer: memcmp potentially seen_before data
+-   mpegtsdemux: Always clear packetizer on DISCONT push mode
+-   srt: various fixes - improve stats and error handling
+-   rtmp2: Improve error messages
+-   rtmp2sink: Correctly return GST_FLOW_ERROR on error
+-   vulkan: Fix static linking on macOS
+-   webrtcbin: also add rtcp-fb ccm fir for video mlines by default
+-   webrtc/nice: fix small leak of split strings
+
+gst-plugins-ugly
+
+-   No changes
+
+gst-libav
+
+-   avdec_h265: Fix endless renegotiation with alternate interlacing
+-   avviddec: Avoid flushing on framerate changes
+
+gst-rtsp-server
+
+-   rtsp-server: Free client if no connection could be created
+
+gstreamer-vaapi
+
+-   vaapi: prefix internal USE_X11 define to fix build with mesa 22.3.0
+-   vaapi: libs: context: use queried value for attrib
+-   gstreamer-vaapi cannot be built without X11 with recent mesa
+
+gstreamer-sharp
+
+-   No changes
+
+gst-omx
+
+-   No changes
+
+gst-python
+
+-   No changes
+
+gst-editing-services
+
+-   Fix building ges with tools disabled
+-   Fix leaks and minor races in GES
+
+gst-examples:
+
+-   webrtc: Fix double free in webrtc-recvonly-h264 demo
+-   webrtc: Fix critical in webrtc-recvonly-h264 example
+-   webrtc/signalling examples: Fix compatibility with Python 3.10
+
+Development build environment + gst-full build
+
+-   No major changes
+
+Cerbero build tool and packaging changes in 1.20.5
+
+-   oven: output status line at least every minute
+-   Unconditionally set CMAKE_SYSTEM_NAME on Windows
+-   Fix ios cross-compile with cmake on M1
+-   Speed up downloads on Windows drastically
+-   Fix tar usage on bsdtar and print progress while compressing
+-   Actually print the sha for which the cache was not found
+
+Recipes
+
+-   ffmpeg: add patch to generate the pc files properly
+-   taglib: add patch to generate the pc files properly
+-   fontconfig: update to 2.14.1
+-   Windows: Crash on GStreamer 1.20.x x86_64 MSVC + MS-Windows due to
+    libfontconfig fonts.conf file invalid.
+-   openssl: Fix compile errors on upgrades
+-   moltenvk: Also ship the static library on macOS
+-   gstreamer: Add some missing pkgconfig files
+-   gst-plugins-good: Fix post_install failure when qt5 is enabled
+-   gst-plugins-bad: Ship AES plugin
+-   libvpx: Enable high bitdepth support
+-   openssl: update to 1.1.1s
+-   glib: Update patch to auto-detect modules on macOS
+
+Contributors to 1.20.5
+
+Aleksandr Slobodeniuk, Arun Raghavan, A. Wilcox, Bo Elmgreen, Boyuan
+Zhang, Bunio FH, Célestin Marot, Devin Anderson, Edward Hervey, He
+Junyan, Ignacio Casal Quinteiro, Jacek Skiba, Jan Alexander Steffens
+(heftig), Jan Schmidt, Jonas Bonn, Jordan Petridis, Justin Chadwell,
+Linus Svensson, Marek Olejnik, Mathieu Duponchelle, Matthew Waters,
+Nicolas Dufresne, Nirbheek Chauhan, Patrick Griffis, Pawel Stawicki,
+Philippe Normand, Ruben Gonzalez, Sam Van Den Berge, Sebastian Dröge,
+Seungha Yang, Stéphane Cerveau, Tim-Philipp Müller, Vivia Nikolaidou,
+Wojciech Kapsa, Xavier Claessens,
+
+… and many others who have contributed bug reports, translations, sent
+suggestions or helped testing. Thank you all!
+
+List of merge requests and issues fixed in 1.20.5
+
+-   List of Merge Requests applied in 1.20.5
+-   List of Issues fixed in 1.20.5
+
 Schedule for 1.22
 
 Our next major feature release will be 1.22, and 1.21 will be the
@@ -2790,7 +3044,7 @@
 development of 1.21/1.22 will happen in the git main branch.
 
 The plan for the 1.22 development cycle is now confirmed, and we aim for
-a 1.22.0 release in December 2022.
+a 1.22.0 release in December 2022 or early January 2023.
 
 1.22 will be backwards-compatible to the stable 1.20, 1.18, 1.16, 1.14,
 1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-base-1.20.4/RELEASE new/gst-plugins-base-1.20.5/RELEASE
--- old/gst-plugins-base-1.20.4/RELEASE 2022-10-12 17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/RELEASE 2022-12-20 00:34:46.000000000 +0100
@@ -1,4 +1,4 @@
-This is GStreamer gst-plugins-base 1.20.4.
+This is GStreamer gst-plugins-base 1.20.5.
 
 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' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-base-1.20.4/ext/cdparanoia/meson.build 
new/gst-plugins-base-1.20.5/ext/cdparanoia/meson.build
--- old/gst-plugins-base-1.20.4/ext/cdparanoia/meson.build      2022-10-12 
17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/ext/cdparanoia/meson.build      2022-12-20 
00:34:46.000000000 +0100
@@ -29,10 +29,19 @@
 endif
 
 if cdparanoia_found
+  # The cdda/cdda_interface.h header triggers GCC 12+ warnings which
+  # then trickle down when we build the plugin with -Werror.
+  # This wouldn't be needed usually, but cdparanoia's last release
+  # was in 2008.
+  extra_args = cc.get_supported_arguments([
+      '-Wno-discarded-qualifiers',
+      '-Wno-unused-variable'
+  ])
+
   gstcdparanoia = library('gstcdparanoia',
     ['gstcdparanoiasrc.c'],
     include_directories: [configinc, libsinc],
-    c_args : gst_plugins_base_args,
+    c_args : gst_plugins_base_args + extra_args,
     dependencies : cdparanoia_deps + glib_deps + [audio_dep, gst_dep, 
gst_base_dep],
     install : true,
     install_dir : plugins_install_dir,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-base-1.20.4/ext/ogg/gstoggdemux.c 
new/gst-plugins-base-1.20.5/ext/ogg/gstoggdemux.c
--- old/gst-plugins-base-1.20.4/ext/ogg/gstoggdemux.c   2022-10-12 
17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/ext/ogg/gstoggdemux.c   2022-12-20 
00:34:46.000000000 +0100
@@ -2524,6 +2524,7 @@
           GST_DEBUG_OBJECT (ogg, "Error seeking back after duration check: %d",
               res);
         }
+        gst_event_unref (event);
         res = TRUE;
         break;
       } else {
@@ -2538,6 +2539,8 @@
       }
       if (!drop)
         res = gst_ogg_demux_send_event (ogg, event);
+      else
+        gst_event_unref (event);
       if (ogg->current_chain == NULL) {
         GST_WARNING_OBJECT (ogg,
             "EOS while trying to retrieve chain, seeking disabled");
@@ -5262,6 +5265,7 @@
       gst_ogg_demux_clear_chains (ogg);
       GST_OBJECT_LOCK (ogg);
       ogg->running = FALSE;
+      gst_event_replace (&ogg->seek_event, NULL);
       GST_OBJECT_UNLOCK (ogg);
       break;
     case GST_STATE_CHANGE_READY_TO_NULL:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-base-1.20.4/ext/opus/gstopusdec.c 
new/gst-plugins-base-1.20.5/ext/opus/gstopusdec.c
--- old/gst-plugins-base-1.20.4/ext/opus/gstopusdec.c   2022-10-12 
17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/ext/opus/gstopusdec.c   2022-12-20 
00:34:46.000000000 +0100
@@ -310,7 +310,7 @@
     gst_structure_fixate_field_nearest_int (s, "rate", dec->sample_rate);
     gst_structure_get_int (s, "rate", &rate);
     channels = dec->n_channels > 0 ? dec->n_channels : 2;
-    gst_structure_fixate_field_nearest_int (s, "channels", dec->n_channels);
+    gst_structure_fixate_field_nearest_int (s, "channels", channels);
     gst_structure_get_int (s, "channels", &channels);
 
     gst_caps_unref (inter);
@@ -363,6 +363,7 @@
 {
   GstAudioChannelPosition pos[64];
   const GstAudioChannelPosition *posn = NULL;
+  guint8 n_channels;
 
   if (!gst_opus_header_is_id_header (buf)) {
     GST_ELEMENT_ERROR (dec, STREAM, FORMAT, (NULL),
@@ -372,7 +373,7 @@
 
   if (!gst_codec_utils_opus_parse_header (buf,
           &dec->sample_rate,
-          (guint8 *) & dec->n_channels,
+          &n_channels,
           &dec->channel_mapping_family,
           &dec->n_streams,
           &dec->n_stereo_streams,
@@ -381,6 +382,7 @@
         ("Failed to parse Opus ID header"));
     return GST_FLOW_ERROR;
   }
+  dec->n_channels = n_channels;
   dec->r128_gain_volume = gst_opus_dec_get_r128_volume (dec->r128_gain);
 
   GST_INFO_OBJECT (dec,
@@ -886,13 +888,15 @@
     }
   } else {
     const GstAudioChannelPosition *posn = NULL;
+    guint8 n_channels;
 
     if (!gst_codec_utils_opus_parse_caps (caps, &dec->sample_rate,
-            (guint8 *) & dec->n_channels, &dec->channel_mapping_family,
+            &n_channels, &dec->channel_mapping_family,
             &dec->n_streams, &dec->n_stereo_streams, dec->channel_mapping)) {
       ret = FALSE;
       goto done;
     }
+    dec->n_channels = n_channels;
 
     if (dec->channel_mapping_family == 1 && dec->n_channels <= 8)
       posn = gst_opus_channel_positions[dec->n_channels - 1];
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-base-1.20.4/ext/pango/gsttextrender.c 
new/gst-plugins-base-1.20.5/ext/pango/gsttextrender.c
--- old/gst-plugins-base-1.20.4/ext/pango/gsttextrender.c       2022-10-12 
17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/ext/pango/gsttextrender.c       2022-12-20 
00:34:46.000000000 +0100
@@ -531,7 +531,10 @@
 
   /* render text */
   GST_DEBUG ("rendering '%*s'", (gint) size, data);
-  pango_layout_set_markup (render->layout, (gchar *) data, size);
+  if (render->have_pango_markup)
+    pango_layout_set_markup (render->layout, (gchar *) data, size);
+  else
+    pango_layout_set_text (render->layout, (gchar *) data, size);
   gst_text_render_render_pangocairo (render);
   gst_buffer_unmap (inbuf, &map);
 
@@ -630,8 +633,44 @@
       }
       break;
     }
+    case GST_EVENT_CAPS:
+    {
+      GstCaps *caps;
+      GstStructure *structure;
+      const gchar *format;
+
+      gst_event_parse_caps (event, &caps);
+
+      structure = gst_caps_get_structure (caps, 0);
+      format = gst_structure_get_string (structure, "format");
+      render->have_pango_markup = (strcmp (format, "pango-markup") == 0);
+
+      gst_event_unref (event);
+      ret = TRUE;
+
+      break;
+    }
+    case GST_EVENT_GAP:
+      /* Negotiate caps first if we negotiated none so far as otherwise
+       * downstream wouldn't have received a segment event either and
+       * wouldn't know what to do with the gap event */
+      if (!gst_pad_has_current_caps (render->srcpad)) {
+        if (gst_text_render_renegotiate (render) != GST_FLOW_OK) {
+          gst_event_unref (event);
+          ret = FALSE;
+          break;
+        }
+      }
+
+      if (render->segment_event) {
+        gst_pad_push_event (render->srcpad, render->segment_event);
+        render->segment_event = NULL;
+      }
+
+      ret = gst_pad_event_default (pad, parent, event);
+      break;
     default:
-      ret = gst_pad_push_event (render->srcpad, event);
+      ret = gst_pad_event_default (pad, parent, event);
       break;
   }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-base-1.20.4/ext/pango/gsttextrender.h 
new/gst-plugins-base-1.20.5/ext/pango/gsttextrender.h
--- old/gst-plugins-base-1.20.4/ext/pango/gsttextrender.h       2022-10-12 
17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/ext/pango/gsttextrender.h       2022-12-20 
00:34:46.000000000 +0100
@@ -93,6 +93,7 @@
     gint ypad;
 
     GstEvent             *segment_event;
+    gboolean              have_pango_markup;
 };
 
 struct _GstTextRenderClass {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-base-1.20.4/ext/pango/gsttimeoverlay.c 
new/gst-plugins-base-1.20.5/ext/pango/gsttimeoverlay.c
--- old/gst-plugins-base-1.20.4/ext/pango/gsttimeoverlay.c      2022-10-12 
17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/ext/pango/gsttimeoverlay.c      2022-12-20 
00:34:46.000000000 +0100
@@ -331,6 +331,7 @@
   video_sink = gst_element_get_static_pad (GST_ELEMENT (overlay), 
"video_sink");
   overlay->orig_video_event = GST_PAD_EVENTFUNC (video_sink);
   gst_pad_set_event_function (video_sink, gst_time_overlay_video_event);
+  gst_object_unref (video_sink);
 }
 
 static void
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-base-1.20.4/gst/audioconvert/gstaudioconvert.c 
new/gst-plugins-base-1.20.5/gst/audioconvert/gstaudioconvert.c
--- old/gst-plugins-base-1.20.4/gst/audioconvert/gstaudioconvert.c      
2022-10-12 17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/gst/audioconvert/gstaudioconvert.c      
2022-12-20 00:34:46.000000000 +0100
@@ -918,6 +918,11 @@
   GstAudioConvert *this = GST_AUDIO_CONVERT (base);
 
   if (base->segment.format == GST_FORMAT_TIME) {
+    if (!GST_AUDIO_INFO_IS_VALID (&this->in_info)) {
+      GST_WARNING_OBJECT (this, "Got buffer, but not negotiated yet!");
+      return GST_FLOW_NOT_NEGOTIATED;
+    }
+
     input =
         gst_audio_buffer_clip (input, &base->segment, this->in_info.rate,
         this->in_info.bpf);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-base-1.20.4/gst/audioresample/gstaudioresample.c 
new/gst-plugins-base-1.20.5/gst/audioresample/gstaudioresample.c
--- old/gst-plugins-base-1.20.4/gst/audioresample/gstaudioresample.c    
2022-10-12 17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/gst/audioresample/gstaudioresample.c    
2022-12-20 00:34:46.000000000 +0100
@@ -977,6 +977,11 @@
   GstAudioResample *resample = GST_AUDIO_RESAMPLE (base);
 
   if (base->segment.format == GST_FORMAT_TIME) {
+    if (!GST_AUDIO_INFO_IS_VALID (&resample->in)) {
+      GST_WARNING_OBJECT (resample, "Got buffer, but not negotiated yet!");
+      return GST_FLOW_NOT_NEGOTIATED;
+    }
+
     input =
         gst_audio_buffer_clip (input, &base->segment, resample->in.rate,
         resample->in.bpf);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-base-1.20.4/gst/playback/gstdecodebin2.c 
new/gst-plugins-base-1.20.5/gst/playback/gstdecodebin2.c
--- old/gst-plugins-base-1.20.4/gst/playback/gstdecodebin2.c    2022-10-12 
17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/gst/playback/gstdecodebin2.c    2022-12-20 
00:34:46.000000000 +0100
@@ -5012,7 +5012,7 @@
   GstDecodePad *dpad = user_data;
   gboolean res = TRUE;
 
-  GST_LOG_OBJECT (pad, "%s dpad:%p", GST_EVENT_TYPE_NAME (event), dpad);
+  GST_LOG_OBJECT (pad, "event %s", GST_EVENT_TYPE_NAME (event));
 
   if (GST_EVENT_TYPE (event) == GST_EVENT_EOS) {
     GST_DEBUG_OBJECT (pad, "we received EOS");
@@ -5159,8 +5159,8 @@
 
     ret = FALSE;
     GST_DEBUG_OBJECT (dpad->dbin,
-        "calling autoplug-query for %s (element %s): %" GST_PTR_FORMAT,
-        GST_PAD_NAME (dpad), GST_ELEMENT_NAME (delem->element), query);
+        "calling autoplug-query for %" GST_PTR_FORMAT " (element %s): %"
+        GST_PTR_FORMAT, dpad, GST_ELEMENT_NAME (delem->element), query);
     g_signal_emit (G_OBJECT (dpad->dbin),
         gst_decode_bin_signals[SIGNAL_AUTOPLUG_QUERY], 0, dpad, delem->element,
         query, &ret);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-base-1.20.4/gst/playback/gstparsebin.c 
new/gst-plugins-base-1.20.5/gst/playback/gstparsebin.c
--- old/gst-plugins-base-1.20.4/gst/playback/gstparsebin.c      2022-10-12 
17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/gst/playback/gstparsebin.c      2022-12-20 
00:34:46.000000000 +0100
@@ -3573,6 +3573,7 @@
   /* Don't expose if we're currently shutting down */
   DYN_LOCK (parsebin);
   if (G_UNLIKELY (parsebin->shutdown)) {
+    g_list_free_full (endpads, (GDestroyNotify) gst_object_unref);
     GST_WARNING_OBJECT (parsebin,
         "Currently, shutting down, aborting exposing");
     DYN_UNLOCK (parsebin);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-base-1.20.4/gst/subparse/gstsubparse.c 
new/gst-plugins-base-1.20.5/gst/subparse/gstsubparse.c
--- old/gst-plugins-base-1.20.4/gst/subparse/gstsubparse.c      2022-10-12 
17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/gst/subparse/gstsubparse.c      2022-12-20 
00:34:46.000000000 +0100
@@ -785,9 +785,11 @@
           last = g_ptr_array_index (open_tags, num_open_tags - 1);
         if (num_open_tags == 0
             || g_ascii_strncasecmp (end_tag - 1, last, strlen (last))) {
-          GST_LOG ("broken input, closing tag '%s' is not open", end_tag - 1);
-          memmove (next_tag, end_tag + 1, strlen (end_tag) + 1);
-          next_tag -= strlen (end_tag);
+          GST_LOG ("broken input, closing tag '%s' is not open", next_tag);
+          /* Move everything after the tag end, including closing \0 */
+          memmove (next_tag, end_tag + 1, strlen (end_tag));
+          cur = next_tag;
+          continue;
         } else {
           --num_open_tags;
           g_ptr_array_remove_index (open_tags, num_open_tags);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-base-1.20.4/gst/videoscale/gstvideoscale.c 
new/gst-plugins-base-1.20.5/gst/videoscale/gstvideoscale.c
--- old/gst-plugins-base-1.20.4/gst/videoscale/gstvideoscale.c  2022-10-12 
17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/gst/videoscale/gstvideoscale.c  2022-12-20 
00:34:46.000000000 +0100
@@ -519,7 +519,8 @@
   const gchar *const valid_tags[] = { GST_META_TAG_VIDEO_STR,
     GST_META_TAG_VIDEO_COLORSPACE_STR,
     GST_META_TAG_VIDEO_ORIENTATION_STR,
-    GST_META_TAG_VIDEO_SIZE_STR
+    GST_META_TAG_VIDEO_SIZE_STR,
+    NULL
   };
 
   tags = gst_meta_api_type_get_tags (info->api);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-base-1.20.4/gst-libs/gst/app/gstappsrc.c 
new/gst-plugins-base-1.20.5/gst-libs/gst/app/gstappsrc.c
--- old/gst-plugins-base-1.20.4/gst-libs/gst/app/gstappsrc.c    2022-10-12 
17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/gst-libs/gst/app/gstappsrc.c    2022-12-20 
00:34:46.000000000 +0100
@@ -183,6 +183,9 @@
 
   guint64 min_latency;
   guint64 max_latency;
+  /* Tracks whether the latency message was posted at least once */
+  gboolean posted_latency_msg;
+
   gboolean emit_signals;
   guint min_percent;
   gboolean handle_segment_change;
@@ -1103,6 +1106,7 @@
   priv->is_eos = FALSE;
   priv->flushing = TRUE;
   priv->started = FALSE;
+  priv->posted_latency_msg = FALSE;
   gst_app_src_flush_queued (appsrc, TRUE);
   g_cond_broadcast (&priv->cond);
   g_mutex_unlock (&priv->mutex);
@@ -2325,6 +2329,10 @@
     priv->max_latency = max;
     changed = TRUE;
   }
+  if (!priv->posted_latency_msg) {
+    priv->posted_latency_msg = TRUE;
+    changed = TRUE;
+  }
   g_mutex_unlock (&priv->mutex);
 
   if (changed) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-base-1.20.4/gst-libs/gst/audio/gstaudiodecoder.c 
new/gst-plugins-base-1.20.5/gst-libs/gst/audio/gstaudiodecoder.c
--- old/gst-plugins-base-1.20.4/gst-libs/gst/audio/gstaudiodecoder.c    
2022-10-12 17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/gst-libs/gst/audio/gstaudiodecoder.c    
2022-12-20 00:34:46.000000000 +0100
@@ -180,6 +180,8 @@
   /* MT-protected (with LOCK) */
   GstClockTime min_latency;
   GstClockTime max_latency;
+  /* Tracks whether the latency message was posted at least once */
+  gboolean posted_latency_msg;
 
   GstAllocator *allocator;
   GstAllocationParams params;
@@ -555,6 +557,7 @@
     memset (&dec->priv->ctx, 0, sizeof (dec->priv->ctx));
 
     gst_audio_info_init (&dec->priv->ctx.info);
+    dec->priv->ctx.posted_latency_msg = FALSE;
     GST_OBJECT_UNLOCK (dec);
     dec->priv->ctx.had_output_data = FALSE;
     dec->priv->ctx.had_input_data = FALSE;
@@ -3391,24 +3394,43 @@
  * @min: minimum latency
  * @max: maximum latency
  *
- * Sets decoder latency.
+ * Sets decoder latency. If the provided values changed from
+ * previously provided ones, this will also post a LATENCY message on the bus
+ * so the pipeline can reconfigure its global latency.
  */
 void
 gst_audio_decoder_set_latency (GstAudioDecoder * dec,
     GstClockTime min, GstClockTime max)
 {
+  gboolean post_message = FALSE;
+
   g_return_if_fail (GST_IS_AUDIO_DECODER (dec));
   g_return_if_fail (GST_CLOCK_TIME_IS_VALID (min));
   g_return_if_fail (min <= max);
 
+  GST_DEBUG_OBJECT (dec,
+      "min_latency:%" GST_TIME_FORMAT " max_latency:%" GST_TIME_FORMAT,
+      GST_TIME_ARGS (min), GST_TIME_ARGS (max));
+
   GST_OBJECT_LOCK (dec);
-  dec->priv->ctx.min_latency = min;
-  dec->priv->ctx.max_latency = max;
+  if (dec->priv->ctx.min_latency != min) {
+    dec->priv->ctx.min_latency = min;
+    post_message = TRUE;
+  }
+  if (dec->priv->ctx.max_latency != max) {
+    dec->priv->ctx.max_latency = max;
+    post_message = TRUE;
+  }
+  if (!dec->priv->ctx.posted_latency_msg) {
+    dec->priv->ctx.posted_latency_msg = TRUE;
+    post_message = TRUE;
+  }
   GST_OBJECT_UNLOCK (dec);
 
   /* post latency message on the bus */
-  gst_element_post_message (GST_ELEMENT (dec),
-      gst_message_new_latency (GST_OBJECT (dec)));
+  if (post_message)
+    gst_element_post_message (GST_ELEMENT (dec),
+        gst_message_new_latency (GST_OBJECT (dec)));
 }
 
 /**
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-base-1.20.4/gst-libs/gst/audio/gstaudioencoder.c 
new/gst-plugins-base-1.20.5/gst-libs/gst/audio/gstaudioencoder.c
--- old/gst-plugins-base-1.20.4/gst-libs/gst/audio/gstaudioencoder.c    
2022-10-12 17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/gst-libs/gst/audio/gstaudioencoder.c    
2022-12-20 00:34:46.000000000 +0100
@@ -172,6 +172,9 @@
   GstClockTime min_latency;
   GstClockTime max_latency;
 
+  /* Tracks whether the latency message was posted at least once */
+  gboolean posted_latency_msg;
+
   GList *headers;
   gboolean new_headers;
 
@@ -487,6 +490,7 @@
 
     memset (&enc->priv->ctx, 0, sizeof (enc->priv->ctx));
     gst_audio_info_init (&enc->priv->ctx.info);
+    enc->priv->ctx.posted_latency_msg = FALSE;
     GST_OBJECT_UNLOCK (enc);
 
     if (enc->priv->upstream_tags) {
@@ -2308,27 +2312,43 @@
  * @min: minimum latency
  * @max: maximum latency
  *
- * Sets encoder latency.
+ * Sets encoder latency. If the provided values changed from
+ * previously provided ones, this will also post a LATENCY message on the bus
+ * so the pipeline can reconfigure its global latency.
  */
 void
 gst_audio_encoder_set_latency (GstAudioEncoder * enc,
     GstClockTime min, GstClockTime max)
 {
+  gboolean post_message = FALSE;
+
   g_return_if_fail (GST_IS_AUDIO_ENCODER (enc));
   g_return_if_fail (GST_CLOCK_TIME_IS_VALID (min));
   g_return_if_fail (min <= max);
 
+  GST_DEBUG_OBJECT (enc,
+      "min_latency:%" GST_TIME_FORMAT " max_latency:%" GST_TIME_FORMAT,
+      GST_TIME_ARGS (min), GST_TIME_ARGS (max));
+
   GST_OBJECT_LOCK (enc);
-  enc->priv->ctx.min_latency = min;
-  enc->priv->ctx.max_latency = max;
+  if (enc->priv->ctx.min_latency != min) {
+    enc->priv->ctx.min_latency = min;
+    post_message = TRUE;
+  }
+  if (enc->priv->ctx.max_latency != max) {
+    enc->priv->ctx.max_latency = max;
+    post_message = TRUE;
+  }
+  if (!enc->priv->ctx.posted_latency_msg) {
+    enc->priv->ctx.posted_latency_msg = TRUE;
+    post_message = TRUE;
+  }
   GST_OBJECT_UNLOCK (enc);
 
-  GST_LOG_OBJECT (enc, "set to %" GST_TIME_FORMAT "-%" GST_TIME_FORMAT,
-      GST_TIME_ARGS (min), GST_TIME_ARGS (max));
-
   /* post latency message on the bus */
-  gst_element_post_message (GST_ELEMENT (enc),
-      gst_message_new_latency (GST_OBJECT (enc)));
+  if (post_message)
+    gst_element_post_message (GST_ELEMENT (enc),
+        gst_message_new_latency (GST_OBJECT (enc)));
 }
 
 /**
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-base-1.20.4/gst-libs/gst/audio/gstaudiofilter.c 
new/gst-plugins-base-1.20.5/gst-libs/gst/audio/gstaudiofilter.c
--- old/gst-plugins-base-1.20.4/gst-libs/gst/audio/gstaudiofilter.c     
2022-10-12 17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/gst-libs/gst/audio/gstaudiofilter.c     
2022-12-20 00:34:46.000000000 +0100
@@ -180,6 +180,11 @@
   GstAudioFilter *filter = GST_AUDIO_FILTER (btrans);
 
   if (btrans->segment.format == GST_FORMAT_TIME) {
+    if (!GST_AUDIO_INFO_IS_VALID (&filter->info)) {
+      GST_WARNING_OBJECT (filter, "Got buffer, but not negotiated yet!");
+      return GST_FLOW_NOT_NEGOTIATED;
+    }
+
     input =
         gst_audio_buffer_clip (input, &btrans->segment, filter->info.rate,
         filter->info.bpf);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-base-1.20.4/gst-libs/gst/gl/cocoa/gstgl_cocoa_private.h 
new/gst-plugins-base-1.20.5/gst-libs/gst/gl/cocoa/gstgl_cocoa_private.h
--- old/gst-plugins-base-1.20.4/gst-libs/gst/gl/cocoa/gstgl_cocoa_private.h     
2022-10-12 17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/gst-libs/gst/gl/cocoa/gstgl_cocoa_private.h     
2022-12-20 00:34:46.000000000 +0100
@@ -61,7 +61,7 @@
 gboolean gst_gl_window_cocoa_create_window (GstGLWindowCocoa *window_cocoa);
 
 G_GNUC_INTERNAL
-void _invoke_on_main (GstGLWindowCB func, gpointer data, GDestroyNotify 
notify);
+void _gst_gl_invoke_on_main (GstGLWindowCB func, gpointer data, GDestroyNotify 
notify);
 
 G_END_DECLS
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-base-1.20.4/gst-libs/gst/gl/cocoa/gstglcontext_cocoa.m 
new/gst-plugins-base-1.20.5/gst-libs/gst/gl/cocoa/gstglcontext_cocoa.m
--- old/gst-plugins-base-1.20.4/gst-libs/gst/gl/cocoa/gstglcontext_cocoa.m      
2022-10-12 17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/gst-libs/gst/gl/cocoa/gstglcontext_cocoa.m      
2022-12-20 00:34:46.000000000 +0100
@@ -313,7 +313,7 @@
   context_cocoa->priv->pixel_format = fmt;
   context_cocoa->priv->gl_context = glContext;
 
-  _invoke_on_main ((GstGLWindowCB) gst_gl_window_cocoa_create_window,
+  _gst_gl_invoke_on_main ((GstGLWindowCB) gst_gl_window_cocoa_create_window,
       gst_object_ref (window_cocoa), (GDestroyNotify) gst_object_unref);
 
   if (!context_cocoa->priv->gl_context) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-base-1.20.4/gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m 
new/gst-plugins-base-1.20.5/gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m
--- old/gst-plugins-base-1.20.4/gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m       
2022-10-12 17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m       
2022-12-20 00:34:46.000000000 +0100
@@ -269,8 +269,8 @@
 static void
 gst_gl_window_cocoa_close (GstGLWindow * window)
 {
-  _invoke_on_main ((GstGLWindowCB) _close_window, gst_object_ref (window),
-      (GDestroyNotify) gst_object_unref);
+  _gst_gl_invoke_on_main ((GstGLWindowCB) _close_window,
+      gst_object_ref (window), (GDestroyNotify) gst_object_unref);
 }
 
 static guintptr
@@ -352,8 +352,8 @@
     }
 
     if (!priv->external_view && !priv->visible)
-      _invoke_on_main ((GstGLWindowCB) _show_window, gst_object_ref (window),
-          (GDestroyNotify) gst_object_unref);
+      _gst_gl_invoke_on_main ((GstGLWindowCB) _show_window,
+          gst_object_ref (window), (GDestroyNotify) gst_object_unref);
   }
 }
 
@@ -585,8 +585,8 @@
  render->rect.w = width;
  render->rect.h = height;
 
- _invoke_on_main ((GstGLWindowCB) _set_render_rectangle, render,
-                  (GDestroyNotify) _free_set_render_rectangle);
+ _gst_gl_invoke_on_main ((GstGLWindowCB) _set_render_rectangle, render,
+     (GDestroyNotify) _free_set_render_rectangle);
 
  return TRUE;
 }
@@ -738,7 +738,7 @@
 @end
 
 void
-_invoke_on_main (GstGLWindowCB func, gpointer data, GDestroyNotify notify)
+_gst_gl_invoke_on_main (GstGLWindowCB func, gpointer data, GDestroyNotify 
notify)
 {
   if ([NSThread isMainThread]) {
     func (data);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-base-1.20.4/gst-libs/gst/gl/egl/gsteglimage.c 
new/gst-plugins-base-1.20.5/gst-libs/gst/gl/egl/gsteglimage.c
--- old/gst-plugins-base-1.20.4/gst-libs/gst/gl/egl/gsteglimage.c       
2022-10-12 17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/gst-libs/gst/gl/egl/gsteglimage.c       
2022-12-20 00:34:46.000000000 +0100
@@ -299,10 +299,8 @@
   EGLContext egl_context = EGL_NO_CONTEXT;
   EGLImageKHR img = EGL_NO_IMAGE_KHR;
   GstGLDisplayEGL *display_egl;
-  gint plat_major, plat_minor;
   guint attrib_len = 0;
 
-  gst_gl_context_get_gl_platform_version (context, &plat_major, &plat_minor);
 
   display_egl = gst_gl_display_egl_from_gl_display (context->display);
   if (!display_egl) {
@@ -321,6 +319,9 @@
     while (attribs[attrib_len++] != EGL_NONE) {
     }
 #ifdef EGL_VERSION_1_5
+  gint plat_major, plat_minor;
+  gst_gl_context_get_gl_platform_version (context, &plat_major, &plat_minor);
+
   if (GST_GL_CHECK_GL_VERSION (plat_major, plat_minor, 1, 5)) {
     EGLImageKHR (*gst_eglCreateImage) (EGLDisplay dpy, EGLContext ctx,
         EGLenum target, EGLClientBuffer buffer, const EGLAttrib * attrib_list);
@@ -347,7 +348,7 @@
     g_free (egl_attribs);
   } else
 #endif
-  {
+  if (gst_gl_context_check_feature (context, "EGL_KHR_image_base")) {
     EGLImageKHR (*gst_eglCreateImageKHR) (EGLDisplay dpy, EGLContext ctx,
         EGLenum target, EGLClientBuffer buffer, const EGLint * attrib_list);
     EGLint *egl_attribs = NULL;
@@ -356,8 +357,8 @@
     gst_eglCreateImageKHR = gst_gl_context_get_proc_address (context,
         "eglCreateImageKHR");
     if (!gst_eglCreateImageKHR) {
-      GST_WARNING_OBJECT (context, "\"eglCreateImageKHR\" not exposed by the "
-          "implementation");
+      GST_ERROR_OBJECT (context, "\"eglCreateImageKHR\" not exposed by the "
+          "implementation as required by EGL_KHR_image_base");
       return EGL_NO_IMAGE_KHR;
     }
 
@@ -371,6 +372,9 @@
         egl_attribs);
 
     g_free (egl_attribs);
+  } else {
+    GST_INFO_OBJECT (context, "EGLImage creation not supported");
+    return EGL_NO_IMAGE_KHR;
   }
 
   return img;
@@ -383,16 +387,31 @@
   EGLDisplay egl_display = EGL_DEFAULT_DISPLAY;
   GstGLDisplayEGL *display_egl;
 
-  gst_eglDestroyImage = gst_gl_context_get_proc_address (context,
-      "eglDestroyImage");
-  if (!gst_eglDestroyImage) {
+#ifdef EGL_VERSION_1_5
+  gint plat_major, plat_minor;
+  gst_gl_context_get_gl_platform_version (context, &plat_major, &plat_minor);
+
+  if (GST_GL_CHECK_GL_VERSION (plat_major, plat_minor, 1, 5)) {
+    gst_eglDestroyImage = gst_gl_context_get_proc_address (context,
+        "eglDestroyImage");
+    if (!gst_eglDestroyImage) {
+      GST_ERROR_OBJECT (context, "\"eglDestroyImage\" not exposed by the "
+          "implementation as required by EGL >= 1.5");
+      return;
+    }
+  } else
+#endif
+  if (gst_gl_context_check_feature (context, "EGL_KHR_image_base")) {
     gst_eglDestroyImage = gst_gl_context_get_proc_address (context,
         "eglDestroyImageKHR");
     if (!gst_eglDestroyImage) {
       GST_ERROR_OBJECT (context, "\"eglDestroyImage\" not exposed by the "
-          "implementation");
+          "implementation as required by EGL_KHR_image_base");
       return;
     }
+  } else {
+    GST_ERROR_OBJECT (context, "Destruction of EGLImage not supported.");
+    return;
   }
 
   display_egl = gst_gl_display_egl_from_gl_display (context->display);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-base-1.20.4/gst-libs/gst/gl/meson.build 
new/gst-plugins-base-1.20.5/gst-libs/gst/gl/meson.build
--- old/gst-plugins-base-1.20.4/gst-libs/gst/gl/meson.build     2022-10-12 
17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/gst-libs/gst/gl/meson.build     2022-12-20 
00:34:46.000000000 +0100
@@ -689,7 +689,16 @@
 endif
 
 if need_win_dispmanx != 'no'
-  if bcm_host_dep.found()
+  have_dispmanx_window_t = cc.has_type(
+      'EGL_DISPMANX_WINDOW_T',
+      prefix: '''
+#include <bcm_host.h>
+#include <EGL/egl.h>
+''',
+      dependencies: [gl_lib_deps, egl_dep, bcm_host_dep],
+      include_directories: gl_includes)
+
+  if have_dispmanx_window_t and bcm_host_dep.found()
     if not egl_dep.found()
       error('dispmanx requires the use of egl')
     endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-base-1.20.4/gst-libs/gst/video/gstvideodecoder.c 
new/gst-plugins-base-1.20.5/gst-libs/gst/video/gstvideodecoder.c
--- old/gst-plugins-base-1.20.4/gst-libs/gst/video/gstvideodecoder.c    
2022-10-12 17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/gst-libs/gst/video/gstvideodecoder.c    
2022-12-20 00:34:46.000000000 +0100
@@ -446,6 +446,9 @@
   gint64 min_latency;
   gint64 max_latency;
 
+  /* Tracks whether the latency message was posted at least once */
+  gboolean posted_latency_msg;
+
   /* upstream stream tags (global tags are passed through as-is) */
   GstTagList *upstream_tags;
 
@@ -2384,6 +2387,8 @@
     priv->dropped = 0;
     priv->processed = 0;
 
+    priv->posted_latency_msg = FALSE;
+
     priv->decode_frame_number = 0;
     priv->base_picture_number = 0;
 
@@ -5073,24 +5078,41 @@
  * @min_latency: minimum latency
  * @max_latency: maximum latency
  *
- * Lets #GstVideoDecoder sub-classes tell the baseclass what the decoder
- * latency is. Will also post a LATENCY message on the bus so the pipeline
- * can reconfigure its global latency.
+ * Lets #GstVideoDecoder sub-classes tell the baseclass what the decoder 
latency
+ * is. If the provided values changed from previously provided ones, this will
+ * also post a LATENCY message on the bus so the pipeline can reconfigure its
+ * global latency.
  */
 void
 gst_video_decoder_set_latency (GstVideoDecoder * decoder,
     GstClockTime min_latency, GstClockTime max_latency)
 {
+  gboolean post_message = FALSE;
   g_return_if_fail (GST_CLOCK_TIME_IS_VALID (min_latency));
   g_return_if_fail (max_latency >= min_latency);
 
+  GST_DEBUG_OBJECT (decoder,
+      "min_latency:%" GST_TIME_FORMAT " max_latency:%" GST_TIME_FORMAT,
+      GST_TIME_ARGS (min_latency), GST_TIME_ARGS (max_latency));
+
   GST_OBJECT_LOCK (decoder);
-  decoder->priv->min_latency = min_latency;
-  decoder->priv->max_latency = max_latency;
+  if (decoder->priv->min_latency != min_latency) {
+    decoder->priv->min_latency = min_latency;
+    post_message = TRUE;
+  }
+  if (decoder->priv->max_latency != max_latency) {
+    decoder->priv->max_latency = max_latency;
+    post_message = TRUE;
+  }
+  if (!decoder->priv->posted_latency_msg) {
+    decoder->priv->posted_latency_msg = TRUE;
+    post_message = TRUE;
+  }
   GST_OBJECT_UNLOCK (decoder);
 
-  gst_element_post_message (GST_ELEMENT_CAST (decoder),
-      gst_message_new_latency (GST_OBJECT_CAST (decoder)));
+  if (post_message)
+    gst_element_post_message (GST_ELEMENT_CAST (decoder),
+        gst_message_new_latency (GST_OBJECT_CAST (decoder)));
 }
 
 /**
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-base-1.20.4/gst-libs/gst/video/gstvideoencoder.c 
new/gst-plugins-base-1.20.5/gst-libs/gst/video/gstvideoencoder.c
--- old/gst-plugins-base-1.20.4/gst-libs/gst/video/gstvideoencoder.c    
2022-10-12 17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/gst-libs/gst/video/gstvideoencoder.c    
2022-12-20 00:34:46.000000000 +0100
@@ -134,6 +134,9 @@
   gint64 min_latency;
   gint64 max_latency;
 
+  /* Tracks whether the latency message was posted at least once */
+  gboolean posted_latency_msg;
+
   /* FIXME 2.0: Use a GQueue or similar, see GstVideoCodecFrame::events */
   GList *current_frame_events;
 
@@ -524,6 +527,8 @@
 
     priv->dropped = 0;
     priv->processed = 0;
+
+    priv->posted_latency_msg = FALSE;
   } else {
     GList *l;
 
@@ -2864,22 +2869,41 @@
  * @min_latency: minimum latency
  * @max_latency: maximum latency
  *
- * Informs baseclass of encoding latency.
+ * Informs baseclass of encoding latency. If the provided values changed from
+ * previously provided ones, this will also post a LATENCY message on the bus
+ * so the pipeline can reconfigure its global latency.
  */
 void
 gst_video_encoder_set_latency (GstVideoEncoder * encoder,
     GstClockTime min_latency, GstClockTime max_latency)
 {
+  gboolean post_message = FALSE;
+
   g_return_if_fail (GST_CLOCK_TIME_IS_VALID (min_latency));
   g_return_if_fail (max_latency >= min_latency);
 
+  GST_DEBUG_OBJECT (encoder,
+      "min_latency:%" GST_TIME_FORMAT " max_latency:%" GST_TIME_FORMAT,
+      GST_TIME_ARGS (min_latency), GST_TIME_ARGS (max_latency));
+
   GST_OBJECT_LOCK (encoder);
-  encoder->priv->min_latency = min_latency;
-  encoder->priv->max_latency = max_latency;
+  if (encoder->priv->min_latency != min_latency) {
+    encoder->priv->min_latency = min_latency;
+    post_message = TRUE;
+  }
+  if (encoder->priv->max_latency != max_latency) {
+    encoder->priv->max_latency = max_latency;
+    post_message = TRUE;
+  }
+  if (!encoder->priv->posted_latency_msg) {
+    encoder->priv->posted_latency_msg = TRUE;
+    post_message = TRUE;
+  }
   GST_OBJECT_UNLOCK (encoder);
 
-  gst_element_post_message (GST_ELEMENT_CAST (encoder),
-      gst_message_new_latency (GST_OBJECT_CAST (encoder)));
+  if (post_message)
+    gst_element_post_message (GST_ELEMENT_CAST (encoder),
+        gst_message_new_latency (GST_OBJECT_CAST (encoder)));
 }
 
 /**
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-base-1.20.4/gst-libs/gst/video/gstvideosink.c 
new/gst-plugins-base-1.20.5/gst-libs/gst/video/gstvideosink.c
--- old/gst-plugins-base-1.20.4/gst-libs/gst/video/gstvideosink.c       
2022-10-12 17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/gst-libs/gst/video/gstvideosink.c       
2022-12-20 00:34:46.000000000 +0100
@@ -273,6 +273,12 @@
       *end = timestamp +
           gst_util_uint64_scale_int (GST_SECOND, vsink->priv->info.fps_d,
           vsink->priv->info.fps_n);
+    } else if (bsink->segment.rate < 0) {
+      /* The end time will be used for clock waiting time position
+       * in case of revese playback, and unknown end time will result in
+       * never waiting for clock (as if sync=false).
+       * Returning timestamp here would be the best effort we can do */
+      *end = timestamp;
     }
   }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-base-1.20.4/gst-plugins-base.doap 
new/gst-plugins-base-1.20.5/gst-plugins-base.doap
--- old/gst-plugins-base-1.20.4/gst-plugins-base.doap   2022-10-12 
17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/gst-plugins-base.doap   2022-12-20 
00:34:46.000000000 +0100
@@ -36,6 +36,16 @@
 
  <release>
   <Version>
+   <revision>1.20.5</revision>
+   <branch>1.20</branch>
+   <name></name>
+   <created>2022-12-19</created>
+   <file-release 
rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-1.20.5.tar.xz";
 />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
    <revision>1.20.4</revision>
    <branch>1.20</branch>
    <name></name>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-base-1.20.4/meson.build new/gst-plugins-base-1.20.5/meson.build
--- old/gst-plugins-base-1.20.4/meson.build     2022-10-12 17:39:51.000000000 
+0200
+++ new/gst-plugins-base-1.20.5/meson.build     2022-12-20 00:34:46.000000000 
+0100
@@ -1,5 +1,5 @@
 project('gst-plugins-base', 'c',
-  version : '1.20.4',
+  version : '1.20.5',
   meson_version : '>= 0.59',
   default_options : [ 'warning_level=1',
                       'buildtype=debugoptimized' ])
@@ -30,11 +30,7 @@
 glib_req = '>= 2.56.0'
 orc_req = '>= 0.4.24'
 
-if gst_version_is_stable
-  gst_req = '>= @0@.@1@.0'.format(gst_version_major, gst_version_minor)
-else
-  gst_req = '>= ' + gst_version
-endif
+gst_req = '>= 1.20.4' # for _gst_meta_tag_memory_reference
 
 api_version = '1.0'
 soversion = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-base-1.20.4/tools/gst-play.c 
new/gst-plugins-base-1.20.5/tools/gst-play.c
--- old/gst-plugins-base-1.20.4/tools/gst-play.c        2022-10-12 
17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/tools/gst-play.c        2022-12-20 
00:34:46.000000000 +0100
@@ -604,8 +604,9 @@
 
       if (collection) {
         g_mutex_lock (&play->selection_lock);
-        gst_object_replace ((GstObject **) & play->collection,
-            (GstObject *) collection);
+        if (play->collection)
+          gst_object_unref (play->collection);
+        play->collection = collection;
         g_mutex_unlock (&play->selection_lock);
       }
       break;

Reply via email to