Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package gstreamer for openSUSE:Factory 
checked in at 2022-06-24 08:44:49
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gstreamer (Old)
 and      /work/SRC/openSUSE:Factory/.gstreamer.new.1548 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gstreamer"

Fri Jun 24 08:44:49 2022 rev:80 rq:984575 version:1.20.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/gstreamer/gstreamer.changes      2022-05-14 
22:52:24.867009817 +0200
+++ /work/SRC/openSUSE:Factory/.gstreamer.new.1548/gstreamer.changes    
2022-06-24 08:44:53.603111140 +0200
@@ -1,0 +2,27 @@
+Wed Jun 22 09:59:29 UTC 2022 - Aaron Stern <ukbeas...@protonmail.com>
+
+- Update to version 1.20.3
+  + Highlighted bugfixes:
+    - Security fixes in Matroska, MP4 and AVI demuxers
+    - Fix scrambled video playback with hardware-accelerated 
+      VA-API decoders on certain Intel hardware
+    - playbin3/decodebin3 regression fix for unhandled streams
+    - Fragmented MP4 playback fixes
+    - Android H.265 encoder mapping
+    - Playback of MXF files produced by FFmpeg before March 2022
+    - Fix rtmp2sink crashes on 32-bit platforms
+    - WebRTC improvements
+    - D3D11 video decoder and screen recorder fixes
+    - Performance improvements
+    - Support for building against OpenCV 4.6 and other build fixes
+    - Miscellaneous bug fixes, memory leak fixes, and other
+      stability and reliability improvements
+  + gstreamer:      
+    - clock: Avoid creating a weakref with every entry 
+      (performance improvement)
+    - plugin: add Apache 2 license to list of known licenses to avoid 
+      warning
+    - gst_plugin_load_file: force plugin reload if filename differs
+      Add support for LoongArch
+
+-------------------------------------------------------------------

Old:
----
  gstreamer-1.20.2.tar.xz

New:
----
  gstreamer-1.20.3.tar.xz

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

Other differences:
------------------
++++++ gstreamer.spec ++++++
--- /var/tmp/diff_new_pack.QkstdU/_old  2022-06-24 08:44:54.243111857 +0200
+++ /var/tmp/diff_new_pack.QkstdU/_new  2022-06-24 08:44:54.247111861 +0200
@@ -19,7 +19,7 @@
 %define gst_branch 1.0
 
 Name:           gstreamer
-Version:        1.20.2
+Version:        1.20.3
 Release:        0
 Summary:        Streaming-Media Framework Runtime
 License:        LGPL-2.1-or-later

++++++ gstreamer-1.20.2.tar.xz -> gstreamer-1.20.3.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.20.2/ChangeLog 
new/gstreamer-1.20.3/ChangeLog
--- old/gstreamer-1.20.2/ChangeLog      2022-05-03 00:29:29.000000000 +0200
+++ new/gstreamer-1.20.3/ChangeLog      2022-06-16 00:36:22.000000000 +0200
@@ -1,7 +1,150 @@
+=== release 1.20.3 ===
+
+2022-06-15 23:36:18 +0100  Tim-Philipp M??ller <t...@centricular.com>
+
+       * NEWS:
+       * RELEASE:
+       * gstreamer.doap:
+       * meson.build:
+         Release 1.20.3
+
+2022-06-15 23:36:10 +0100  Tim-Philipp M??ller <t...@centricular.com>
+
+       * ChangeLog:
+         Update ChangeLogs for 1.20.3
+
+2022-05-19 04:59:58 +0000  Adam Doupe <adamdo...@gmail.com>
+
+       * libs/gst/base/gstqueuearray.c:
+         queuearray: Fix potential heap overflow when expanding GstQueueArray
+         Check that elt_size*newsize doesn't overflow when expanding a
+         GstQueueArray, which has the potential for a heap overwrite.
+         Co-authored-by: Sebastian Dr??ge <sebast...@centricular.com>
+         Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1232
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2607>
+
+2022-06-14 17:29:31 +0100  Tim-Philipp M??ller <t...@centricular.com>
+
+       * plugins/elements/gstmultiqueue.c:
+         multiqueue: fix potential crash on shutdown
+         The mq we get out of the weak ref might be NULL if we're
+         shutting down, which could cause assertion failures or
+         crashes.
+         It might also cause miscompilations where the compiler just
+         optimises away the NULL check because it jumps to a code path
+         that then dereferences the pointer which clearly isn't going
+         to work. Seems like something like this happens with gcc 11.
+         Fixes #1262
+         Co-authored-by: Doug Nazar <naz...@nazar.ca>
+         Co-authored-by: Sebastian Dr??ge <sebast...@centricular.com>
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2600>
+
+2022-06-14 03:29:41 -0600  James Hilliard <james.hillia...@gmail.com>
+
+       * plugins/elements/gstmultiqueue.c:
+         multiqueue: fix warning: ???is_query??? may be used uninitialized in 
this function
+         Fixes:
+         ../plugins/elements/gstmultiqueue.c: In function 
???gst_multi_queue_loop???:
+         ../plugins/elements/gstmultiqueue.c:2394:19: warning: ???is_query??? 
may be used uninitialized in this function [-Wmaybe-uninitialized]
+         2394 |     if (object && !is_query)
+         |                   ^~~~~~~~~
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2596>
+
+2022-06-01 09:25:29 +0200  Guillaume Desmottes 
<guillaume.desmot...@onestream.live>
+
+       * libs/gst/base/gstbasetransform.c:
+         basetransform: handle gst_base_transform_query_caps() returning NULL
+         If gst_base_transform_transform_caps() returns NULL, 
gst_base_transform_query_caps()
+         will return NULL as well.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2538>
+
+2022-05-31 14:27:51 +0200  Guillaume Desmottes 
<guillaume.desmot...@onestream.live>
+
+       * libs/gst/base/gstbasetransform.c:
+         basetransform: fix critical if transform_caps() returned NULL
+         klass->transform_caps() may return NULL, which was raising this
+         critical:
+         GStreamer-CRITICAL **: 12:23:56.243: gst_caps_is_subset: assertion 
'subset != NULL' failed
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2537>
+
+2022-05-18 17:03:27 +0200  Jan Alexander Steffens (heftig) 
<jan.steff...@ltnglobal.com>
+
+       * gst/gst_private.h:
+       * gst/gstclock.c:
+         clock: Avoid creating a weakref with every entry
+         Creating and destroying weakrefs takes a write lock on a global
+         `GRWLock`. This makes for a very contended lock when the pipeline has
+         many synchronizing elements.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2533>
+
+2022-05-29 20:38:38 +1000  tom schuring <tomschur...@gmail.com>
+
+       * gst/gstplugin.c:
+         plugin: add Apache 2 license to known licenses
+         the licence in gstreamer/subprojects/gstreamer/gst/gstplugin.c
+         currently is defined to be one of:
+         LGPL GPL QPL GPL/QPL MPL BSD MIT/X11 0BSD Proprietary
+         The open source project for the kinesis plugin is using an
+         Apache 2.0 license. Because "Apache 2.0" is not one of the
+         supported licenses it automatically falls back to Proprietary.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2524>
+
+2022-05-18 10:04:08 +0800  WANG Xuerui <xe...@gentoo.org>
+
+       * gst/gstconfig.h.in:
+         gstreamer/gst/gstconfig.h.in: Add support for LoongArch
+         While current and future LoongArch machines that are supposed to run
+         GStreamer all support unaligned accesses, there might be future
+         lower-end cores (e.g. the embedded product line) without such support,
+         and we may not want to penalize these use cases.
+         So, mark LoongArch as not supporting unaligned accesses for now, and
+         hope the compilers do a good job optimizing them. We can always flip
+         switch later.
+         Suggested-by: CHEN Tao <redeast...@outlook.com>
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2450>
+
+2022-05-05 20:39:52 +0300  Sebastian Dr??ge <sebast...@centricular.com>
+
+       * libs/gst/base/gstaggregator.c:
+         aggregator: Don't send multiple caps events with the same caps
+         Every time aggregator is reconfiguring it will try to negotiate new
+         caps. If these resulting caps are the same as the previously 
negotiated
+         caps then don't send a new caps event with the same caps again.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2381>
+
+2022-05-05 15:05:43 +0300  Sebastian Dr??ge <sebast...@centricular.com>
+
+       * libs/gst/base/gstaggregator.c:
+         aggregator: Only send events up to CAPS event from 
gst_aggregator_set_src_caps()
+         Otherwise setting the srcpad caps based on the sinkpad caps event will
+         already push a segment event downstream before the upstream segment is
+         known.
+         If the upstream segments are just forwarded when the upstream segment
+         event arrives this would result in two segment events being sent
+         downstream, of which the first one will usually be simply wrong.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2381>
+
+2021-11-12 20:13:10 +0100  Ruben Gonzalez <rgonza...@fluendo.com>
+
+       * gst/gstplugin.c:
+         gst_plugin_load_file: force plugin reload if diff filename
+         If a file includes a new version of a plugin that exits in the
+         registry, the output of gst-inspect is incorrect. The output has the
+         correct version but incorrect filename, and element description.
+         This seems to have also fixed some documentation issues.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2357>
+
+2022-05-03 00:39:09 +0100  Tim-Philipp M??ller <t...@centricular.com>
+
+       * meson.build:
+         Back to development
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2347>
+
 === release 1.20.2 ===
 
 2022-05-02 23:29:25 +0100  Tim-Philipp M??ller <t...@centricular.com>
 
+       * ChangeLog:
        * NEWS:
        * RELEASE:
        * gstreamer.doap:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.20.2/NEWS new/gstreamer-1.20.3/NEWS
--- old/gstreamer-1.20.2/NEWS   2022-05-03 00:29:29.000000000 +0200
+++ new/gstreamer-1.20.3/NEWS   2022-06-16 00:36:22.000000000 +0200
@@ -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.2 and was released
-on 2 May 2022.
+The latest bug-fix release in the 1.20 series is 1.20.3 and was released
+on 15 June 2022.
 
 See https://gstreamer.freedesktop.org/releases/1.20/ for the latest
 version of this document.
 
-Last updated: Monday 2 May 2022, 0:30 UTC (log)
+Last updated: Monday 15 June 2022, 17:00 UTC (log)
 
 Introduction
 
@@ -2291,6 +2291,218 @@
 -   List of Merge Requests applied in 1.20.2
 -   List of Issues fixed in 1.20.2
 
+1.20.3
+
+The third 1.20 bug-fix release (1.20.3) was released on 15 June 2022.
+
+This release only contains bugfixes and it should be safe to upgrade
+from 1.20.x.
+
+Highlighted bugfixes in 1.20.3
+
+-   Security fixes in Matroska, MP4 and AVI demuxers
+-   Fix scrambled video playback with hardware-accelerated VA-API
+    decoders on certain Intel hardware
+-   playbin3/decodebin3 regression fix for unhandled streams
+-   Fragmented MP4 playback fixes
+-   Android H.265 encoder mapping
+-   Playback of MXF files produced by FFmpeg before March 2022
+-   Fix rtmp2sink crashes on 32-bit platforms
+-   WebRTC improvements
+-   D3D11 video decoder and screen recorder fixes
+-   Performance improvements
+-   Support for building against OpenCV 4.6 and other build fixes
+-   Miscellaneous bug fixes, memory leak fixes, and other stability and
+    reliability improvements
+
+gstreamer
+
+-   clock: Avoid creating a weakref with every entry (performance
+    improvement)
+-   plugin: add Apache 2 license to list of known licenses to avoid
+    warning
+-   gst_plugin_load_file: force plugin reload if filename differs
+-   Add support for LoongArch
+
+Base Libraries
+
+-   aggregator: Only send events up to CAPS event from
+    gst_aggregator_set_src_caps(), don???t send multiple caps events with
+    the same caps and fix negotiation in muxers
+-   basetransform: handle gst_base_transform_query_caps() returning NULL
+-   basetransform: fix critical if transform_caps() returned NULL
+-   queuearray: Fix potential heap overflow when expanding GstQueueArray
+
+Core Elements
+
+-   multiqueue: fix potential crash on shutdown
+-   multiqueue: fix warning: ???is_query??? may be used uninitialized in
+    this function
+-   multiqueue: SegFault during flushing with gcc11
+
+gst-plugins-base
+
+-   audioconvert: If no channel-mask can be fixated then use a NONE
+    channel layout
+-   playbin3: Configure combiner on pad-added if needed
+-   parsebin: Fix assertions/regression when dealing with un-handled
+    streams (fixes regression in 1.20.2)
+-   appsink: Fix race condition on caps handling
+-   oggdemux: Protect against invalid framerates
+-   rtcpbuffer: Allow padding on first reduced size packets
+-   gl: check for xlib-xcb.h header to fix build of tests on macOS with
+    homebrew
+-   videoaggregator: unref temporary caps
+-   v4l2videoenc: Setup crop rectangle if needed
+
+Tools
+
+-   gst-play-1.0: Print position even if duration is unknown
+-   gst-device-monitor-1.0: Print string property as-is without
+    additional escaping
+
+gst-plugins-good
+
+-   aacparse: Avoid mismatch between src_caps and output_header_type
+-   avidemux: Fix integer overflow resulting in heap corruption in DIB
+    buffer inversion code (Security fix)
+-   deinterlace: Clean up error handling code
+-   flvdemux: Actually make use of the debug category
+-   gtkglsink: Fix double-free when OpenGL can???t be initialised
+-   jack: Add support for detecting libjack on Windows
+-   matroskademux: Avoid integer-overflow resulting in heap corruption
+    in WavPack header handling code (Security fix)
+-   matroskademux, qtdemux: Fix integer overflows in zlib/bz2/etc
+    decompression code (Security fix)
+-   qtdemux: Don???t use tfdt for parsing subsequent trun boxes
+-   rtpbin: Avoid holding GST_RTP_BIN_LOCK when emitting pad-added
+    signal (to avoid deadlocks)
+-   rtpptdemux: Don???t GST_FLOW_ERROR when ignoring invalid packets
+-   smpte: Fix integer overflow with possible heap corruption in GstMask
+    creation. (Security fix)
+-   smpte: integer overflow with possible heap corruption in GstMask
+    creation (Security fix)
+-   soup: fix soup debug category initialisation
+-   soup: Fix plugin/element init
+-   v4l2: Reset transfer in gst_v4l2_object_acquire_format()
+-   vpxenc: fix crash if encoder produces unmatching timestamp
+-   wavparse: ensure that any pending segment is sent before an EOS
+    event is sent
+
+gst-plugins-bad
+
+-   androidmedia: Add H.265 encoder mapping
+-   avfvideosrc: fix wrong framerate selected for caps
+-   d3d11decoder: Fix for alternate interlacing signalling
+-   d3d11decoder: Do not preallocate texture using downstream d3d11
+    buffer pool
+-   d3d11decoder: Copy HDR10 related caps field manually
+-   d3d11decoder: Work around Intel DXVA driver crash
+-   d3d11screencapture: Set viewport when drawing mouse cursor
+-   d3d11screencapture: Fix missing/outdated cursor shape
+-   d3d11screencapturesrc: Fix crash when d3d11 device is different from
+    owned one
+-   h264decoder: Fix for unhandled low-delay decoding case
+-   matroskademux, qtdemux: Fix integer overflows in zlib/bz2/etc
+    decompression code (Security fix)
+-   mpegtsmux: Make sure to set srcpad caps under all conditions before
+    outputting the first buffer
+-   mpegtsmux: sends segment before caps
+-   mxfdemux: Handle files produced by legacy FFmpeg
+-   nvh264dec,nvh265dec: Don???t realloc bitstream buffer per slice
+-   nvcodec: cuda-converter: fix nvrtc compilation on non-English locale
+    systems
+-   opencv: Allow building against 4.6.x
+-   pcapparse: Set timestamp in DTS, not PTS
+-   rtmp2: fix allocation of GstRtmpMeta which caused crashes on 32-bit
+    platforms
+-   rtmp2sink crash on Android arm 32 - cerbero 1.20.2.0
+-   sdpdemux: Release request pads from rtpbin when freeing a stream
+-   va: Add O_CLOEXEC flag at opening drm device (so subprocesses won???t
+    have access to it)
+-   webrtcbin: Reject answers that don???t contain the same number of
+    m-line as offer
+-   webrtc: datachannel: Notify low buffered amount according to spec
+
+gst-plugins-ugly
+
+-   No changes
+
+gst-libav
+
+-   No changes
+
+gst-rtsp-server
+
+-   No changes
+
+gstreamer-vaapi
+
+-   vaapi: Do not disable the whole vpp when some va operations not
+    available
+-   vaapidecode, vaapipostproc: Disable DMAbuf from caps negotiation
+-   scrambled video with some Intel graphics cards
+
+gstreamer-sharp
+
+-   No changes
+
+gst-omx
+
+-   No changes
+
+gst-python
+
+-   No changes
+
+gst-editing-services
+
+-   ges/videourisource: handle non-1/1 PAR source videos
+
+gst-examples:
+
+-   No changes
+
+Development build environment + gst-full build
+
+-   Update libnice subproject wrap to 0.1.19
+-   meson: use better zlib dependency fallback
+-   meson: Fix deprecation warnings
+
+Cerbero build tool and packaging changes in 1.20.3
+
+-   Set GSTREAMER_1_0_ROOT_[MSVC_]X86_64 root environment variable in
+    System section (not User section)
+-   bootstrap: Add perl-FindBin dep needed by openssl (which is not
+    installed by default on RedHat systems)
+-   Also add build-tools/local/bin to PATH on Linux
+-   Add a variant to control building of the JACK plugin
+-   libnice: update to 0.1.19 (fixes some WebRTC issues)
+-   zlib: update to 1.2.12
+
+Bindings
+
+-   No changes
+
+Contributors to 1.20.3
+
+Adam Doupe, Alicia Boya Garc??a, Bastien Nocera, Corentin Damman, Damian
+Hobson-Garcia, Diogo Goncalves, Edward Hervey, Eli Schwartz, Erwann
+Gouesbet, Guillaume Desmottes, He Junyan, Hou Qi, Jakub Adam, James
+Hilliard, Jan Alexander Steffens (heftig), Jan Schmidt, Matthew Waters,
+Nicolas Dufresne, Nirbheek Chauhan, Olivier Cr??te, Philippe Normand,
+Rabindra Harlalka, Ruben Gonzalez, Sebastian Dr??ge, Seungha Yang,
+St??phane Cerveau, Thibault Saunier, Tim-Philipp M??ller, Tom Schuring, U.
+Artie Eoff, V??ctor Manuel J??quez Leal, WANG Xuerui, 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.3
+
+-   List of Merge Requests applied in 1.20.3
+-   List of Issues fixed in 1.20.3
+
 Schedule for 1.22
 
 Our next major feature release will be 1.22, and 1.21 will be the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.20.2/RELEASE new/gstreamer-1.20.3/RELEASE
--- old/gstreamer-1.20.2/RELEASE        2022-05-03 00:29:29.000000000 +0200
+++ new/gstreamer-1.20.3/RELEASE        2022-06-16 00:36:22.000000000 +0200
@@ -1,4 +1,4 @@
-This is GStreamer core 1.20.2.
+This is GStreamer core 1.20.3.
 
 The GStreamer team is thrilled to announce a new major feature release
 of your favourite cross-platform multimedia framework!
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.20.2/gst/gst_private.h 
new/gstreamer-1.20.3/gst/gst_private.h
--- old/gstreamer-1.20.2/gst/gst_private.h      2022-05-03 00:29:29.000000000 
+0200
+++ new/gstreamer-1.20.3/gst/gst_private.h      2022-06-16 00:36:22.000000000 
+0200
@@ -514,11 +514,14 @@
 /* privat flag used by GstBus / GstMessage */
 #define GST_MESSAGE_FLAG_ASYNC_DELIVERY (GST_MINI_OBJECT_FLAG_LAST << 0)
 
+/* private type used by GstClock */
+typedef struct _GstClockWeakRef GstClockWeakRef;
+
 /* private struct used by GstClock and GstSystemClock */
 struct _GstClockEntryImpl
 {
   GstClockEntry entry;
-  GWeakRef clock;
+  GstClockWeakRef *weakref;
   GDestroyNotify destroy_entry;
   gpointer padding[21];                 /* padding for allowing e.g. 
systemclock
                                          * to add data in lieu of overridable
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.20.2/gst/gstclock.c 
new/gstreamer-1.20.3/gst/gstclock.c
--- old/gstreamer-1.20.2/gst/gstclock.c 2022-05-03 00:29:29.000000000 +0200
+++ new/gstreamer-1.20.3/gst/gstclock.c 2022-06-16 00:36:22.000000000 +0200
@@ -132,6 +132,60 @@
 #define GST_CLOCK_SLAVE_LOCK(clock)     g_mutex_lock (&GST_CLOCK_CAST 
(clock)->priv->slave_lock)
 #define GST_CLOCK_SLAVE_UNLOCK(clock)   g_mutex_unlock (&GST_CLOCK_CAST 
(clock)->priv->slave_lock)
 
+/* An atomically ref-counted wrapper around a GWeakRef for a GstClock, created
+ * by the clock and shared with all its clock entries.
+ *
+ * This exists because g_weak_ref_ operations are quite expensive and operate
+ * with a global GRWLock. _get takes a reader lock, _init and _clear take a
+ * writer lock. We want to avoid having a GWeakRef in every clock entry.
+ *
+ * FIXME: Simplify this with g_atomic_rc_box_new (GWeakRef) once we can depend
+ *        on GLib 2.58.
+ */
+struct _GstClockWeakRef
+{
+  gint refcount;
+  GWeakRef clock;
+};
+
+static GstClockWeakRef *
+gst_clock_weak_ref_new (GstClock * clock)
+{
+  GstClockWeakRef *weakref = g_slice_new (GstClockWeakRef);
+
+  weakref->refcount = 1;
+  g_weak_ref_init (&weakref->clock, clock);
+
+  return weakref;
+}
+
+static GstClockWeakRef *
+gst_clock_weak_ref_ref (GstClockWeakRef * weakref)
+{
+  g_atomic_int_add (&weakref->refcount, 1);
+  return weakref;
+}
+
+static void
+gst_clock_weak_ref_unref (GstClockWeakRef * weakref)
+{
+  gint old_refcount;
+
+  old_refcount = g_atomic_int_add (&weakref->refcount, -1);
+  g_return_if_fail (old_refcount > 0);
+
+  if (G_UNLIKELY (old_refcount == 1)) {
+    g_weak_ref_clear (&weakref->clock);
+    g_slice_free (GstClockWeakRef, weakref);
+  }
+}
+
+static GstClock *
+gst_clock_weak_ref_get (GstClockWeakRef * weakref)
+{
+  return g_weak_ref_get (&weakref->clock);
+}
+
 struct _GstClockPrivate
 {
   GMutex slave_lock;            /* order: SLAVE_LOCK, OBJECT_LOCK */
@@ -165,11 +219,13 @@
   gint post_count;
 
   gboolean synced;
+
+  GstClockWeakRef *weakref;
 };
 
 typedef struct _GstClockEntryImpl GstClockEntryImpl;
 
-#define GST_CLOCK_ENTRY_CLOCK_WEAK_REF(entry) (&((GstClockEntryImpl 
*)(entry))->clock)
+#define GST_CLOCK_ENTRY_CLOCK_WEAK_REF(entry) (((GstClockEntryImpl 
*)(entry))->weakref)
 
 /* seqlocks */
 #define read_seqbegin(clock)                                   \
@@ -260,7 +316,8 @@
   entry->_clock = clock;
 #endif
 #endif
-  g_weak_ref_init (GST_CLOCK_ENTRY_CLOCK_WEAK_REF (entry), clock);
+  GST_CLOCK_ENTRY_CLOCK_WEAK_REF (entry) =
+      gst_clock_weak_ref_ref (clock->priv->weakref);
   entry->type = type;
   entry->time = time;
   entry->interval = interval;
@@ -374,7 +431,7 @@
   if (entry_impl->destroy_entry)
     entry_impl->destroy_entry (entry_impl);
 
-  g_weak_ref_clear (GST_CLOCK_ENTRY_CLOCK_WEAK_REF (entry));
+  gst_clock_weak_ref_unref (GST_CLOCK_ENTRY_CLOCK_WEAK_REF (entry));
 
   /* FIXME: add tracer hook for struct allocations such as clock entries */
 
@@ -531,7 +588,7 @@
   entry = (GstClockEntry *) id;
   requested = GST_CLOCK_ENTRY_TIME (entry);
 
-  clock = g_weak_ref_get (GST_CLOCK_ENTRY_CLOCK_WEAK_REF (entry));
+  clock = gst_clock_weak_ref_get (GST_CLOCK_ENTRY_CLOCK_WEAK_REF (entry));
   if (G_UNLIKELY (clock == NULL))
     goto invalid_entry;
 
@@ -613,7 +670,7 @@
 
   entry = (GstClockEntry *) id;
   requested = GST_CLOCK_ENTRY_TIME (entry);
-  clock = g_weak_ref_get (GST_CLOCK_ENTRY_CLOCK_WEAK_REF (entry));
+  clock = gst_clock_weak_ref_get (GST_CLOCK_ENTRY_CLOCK_WEAK_REF (entry));
   if (G_UNLIKELY (clock == NULL))
     goto invalid_entry;
 
@@ -676,7 +733,7 @@
   g_return_if_fail (id != NULL);
 
   entry = (GstClockEntry *) id;
-  clock = g_weak_ref_get (GST_CLOCK_ENTRY_CLOCK_WEAK_REF (entry));
+  clock = gst_clock_weak_ref_get (GST_CLOCK_ENTRY_CLOCK_WEAK_REF (entry));
   if (G_UNLIKELY (clock == NULL))
     goto invalid_entry;
 
@@ -769,6 +826,7 @@
   priv->timeout = DEFAULT_TIMEOUT;
   priv->times = g_new0 (GstClockTime, 4 * priv->window_size);
   priv->times_temp = priv->times + 2 * priv->window_size;
+  priv->weakref = gst_clock_weak_ref_new (clock);
 }
 
 static void
@@ -801,6 +859,7 @@
   clock->priv->times_temp = NULL;
   GST_CLOCK_SLAVE_UNLOCK (clock);
 
+  gst_clock_weak_ref_unref (clock->priv->weakref);
   g_mutex_clear (&clock->priv->slave_lock);
   g_cond_clear (&clock->priv->sync_cond);
 
@@ -1374,7 +1433,7 @@
   g_return_val_if_fail (id != NULL, NULL);
 
   entry = (GstClockEntry *) id;
-  return g_weak_ref_get (GST_CLOCK_ENTRY_CLOCK_WEAK_REF (entry));
+  return gst_clock_weak_ref_get (GST_CLOCK_ENTRY_CLOCK_WEAK_REF (entry));
 }
 
 /**
@@ -1401,7 +1460,7 @@
   g_return_val_if_fail (clock != NULL, FALSE);
 
   entry = (GstClockEntry *) id;
-  entry_clock = g_weak_ref_get (GST_CLOCK_ENTRY_CLOCK_WEAK_REF (entry));
+  entry_clock = gst_clock_weak_ref_get (GST_CLOCK_ENTRY_CLOCK_WEAK_REF 
(entry));
   if (entry_clock == clock)
     ret = TRUE;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.20.2/gst/gstconfig.h.in 
new/gstreamer-1.20.3/gst/gstconfig.h.in
--- old/gstreamer-1.20.2/gst/gstconfig.h.in     2022-05-03 00:29:29.000000000 
+0200
+++ new/gstreamer-1.20.3/gst/gstconfig.h.in     2022-06-16 00:36:22.000000000 
+0200
@@ -124,7 +124,7 @@
  * http://docs.oracle.com/cd/E19205-01/820-4155/c++_faq.html#Vers6
  * https://software.intel.com/en-us/node/583402
  */
-#if defined(__alpha__) || defined(__arc__) || defined(__arm__) || 
defined(__aarch64__) || defined(__bfin) || defined(__hppa__) || 
defined(__nios2__) || defined(__MICROBLAZE__) || defined(__mips__) || 
defined(__or1k__) || defined(__sh__) || defined(__SH4__) || defined(__sparc__) 
|| defined(__sparc) || defined(__ia64__) || defined(_M_ALPHA) || 
defined(_M_ARM) || defined(_M_ARM64) || defined(_M_IA64) || defined(__xtensa__) 
|| defined(__e2k__) || defined(__riscv) || defined(__ARC64__) 
+#if defined(__alpha__) || defined(__arc__) || defined(__arm__) || 
defined(__aarch64__) || defined(__bfin) || defined(__hppa__) || 
defined(__nios2__) || defined(__MICROBLAZE__) || defined(__mips__) || 
defined(__or1k__) || defined(__sh__) || defined(__SH4__) || defined(__sparc__) 
|| defined(__sparc) || defined(__ia64__) || defined(_M_ALPHA) || 
defined(_M_ARM) || defined(_M_ARM64) || defined(_M_IA64) || defined(__xtensa__) 
|| defined(__e2k__) || defined(__riscv) || defined(__ARC64__) || 
defined(__loongarch__)
 #  define GST_HAVE_UNALIGNED_ACCESS 0
 #elif defined(__i386__) || defined(__i386) || defined(__amd64__) || 
defined(__amd64) || defined(__x86_64__) || defined(__ppc__) || 
defined(__ppc64__) || defined(__powerpc__) || defined(__powerpc64__) || 
defined(__m68k__) || defined(_M_IX86) || defined(_M_AMD64) || defined(_M_X64) 
|| defined(__s390__) || defined(__s390x__) || defined(__zarch__)
 #  define GST_HAVE_UNALIGNED_ACCESS 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.20.2/gst/gstplugin.c 
new/gstreamer-1.20.3/gst/gstplugin.c
--- old/gstreamer-1.20.2/gst/gstplugin.c        2022-05-03 00:29:29.000000000 
+0200
+++ new/gstreamer-1.20.3/gst/gstplugin.c        2022-06-16 00:36:22.000000000 
+0200
@@ -95,6 +95,8 @@
  * MIT/X11: https://opensource.org/licenses/MIT
  * 3-clause BSD: https://opensource.org/licenses/BSD-3-Clause
  * Zero-Clause BSD: https://opensource.org/licenses/0BSD
+ * Apache License 2.0: http://www.apache.org/licenses/LICENSE-2.0 (Since: 1.22)
+
  * FIXME: update to use SPDX identifiers, or just remove entirely
  */
 static const gchar known_licenses[] = "LGPL\000"        /* GNU Lesser General 
Public License */
@@ -106,6 +108,7 @@
     "BSD\000"                   /* 3-clause BSD license */
     "MIT/X11\000"               /* MIT/X11 license */
     "0BSD\000"                  /* Zero-Clause BSD */
+    "Apache 2.0\000"            /* Apache License 2.0 */
     "Proprietary\000"           /* Proprietary license */
     GST_LICENSE_UNKNOWN;        /* some other license */
 
@@ -819,7 +822,7 @@
       /* already loaded */
       g_mutex_unlock (&gst_plugin_loading_mutex);
       return plugin;
-    } else {
+    } else if (g_strcmp0 (plugin->filename, filename) == 0) {
       /* load plugin and update fields */
       new_plugin = FALSE;
     }
@@ -1487,19 +1490,19 @@
  * ENV + *xyz   same as above, but xyz acts as suffix filter
  * ENV + xyz*   same as above, but xyz acts as prefix filter (is this needed?)
  * ENV + *xyz*  same as above, but xyz acts as strstr filter (is this needed?)
- * 
+ *
  * same as above, with additional paths hard-coded at compile-time:
  *   - only check paths + ... if ENV is not set or yields not paths
  *   - always check paths + ... in addition to ENV
  *
  * When user specifies set of environment variables, he/she may also use e.g.
  * "HOME/.mystuff/plugins", and we'll expand the content of $HOME with the
- * remainder 
+ * remainder
  */
 
 /* we store in registry:
  *  sets of:
- *   { 
+ *   {
  *     - environment variables (array of strings)
  *     - last hash of env variable contents (uint) (so we can avoid doing stats
  *       if one of the env vars has changed; premature optimisation galore)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.20.2/gstreamer.doap 
new/gstreamer-1.20.3/gstreamer.doap
--- old/gstreamer-1.20.2/gstreamer.doap 2022-05-03 00:29:29.000000000 +0200
+++ new/gstreamer-1.20.3/gstreamer.doap 2022-06-16 00:36:22.000000000 +0200
@@ -40,6 +40,16 @@
 
  <release>
   <Version>
+   <revision>1.20.3</revision>
+   <branch>1.20</branch>
+   <name></name>
+   <created>2022-06-15</created>
+   <file-release 
rdf:resource="https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.20.3.tar.xz";
 />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
    <revision>1.20.2</revision>
    <branch>1.20</branch>
    <name></name>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.20.2/libs/gst/base/gstaggregator.c 
new/gstreamer-1.20.3/libs/gst/base/gstaggregator.c
--- old/gstreamer-1.20.2/libs/gst/base/gstaggregator.c  2022-05-03 
00:29:29.000000000 +0200
+++ new/gstreamer-1.20.3/libs/gst/base/gstaggregator.c  2022-06-16 
00:36:22.000000000 +0200
@@ -598,7 +598,7 @@
 }
 
 static inline void
-gst_aggregator_push_mandatory_events (GstAggregator * self)
+gst_aggregator_push_mandatory_events (GstAggregator * self, gboolean 
up_to_caps)
 {
   GstAggregatorPrivate *priv = self->priv;
   GstEvent *segment = NULL;
@@ -618,7 +618,6 @@
   }
 
   if (self->priv->srccaps) {
-
     GST_INFO_OBJECT (self, "pushing caps: %" GST_PTR_FORMAT,
         self->priv->srccaps);
     if (!gst_pad_push_event (GST_PAD (self->srcpad),
@@ -629,6 +628,9 @@
     self->priv->srccaps = NULL;
   }
 
+  if (up_to_caps)
+    return;
+
   GST_OBJECT_LOCK (self);
   if (self->priv->send_segment && !self->priv->flushing) {
     segment =
@@ -655,7 +657,6 @@
     gst_pad_push_event (self->srcpad, segment);
   if (tags)
     gst_pad_push_event (self->srcpad, tags);
-
 }
 
 /**
@@ -668,16 +669,31 @@
 void
 gst_aggregator_set_src_caps (GstAggregator * self, GstCaps * caps)
 {
+  GstCaps *old_caps;
+
   GST_PAD_STREAM_LOCK (self->srcpad);
+
+  if (caps && (old_caps = gst_pad_get_current_caps (self->srcpad))) {
+    if (gst_caps_is_equal (caps, old_caps)) {
+      GST_DEBUG_OBJECT (self,
+          "New caps are the same as the previously set caps %" GST_PTR_FORMAT,
+          old_caps);
+      gst_caps_unref (old_caps);
+      GST_PAD_STREAM_UNLOCK (self->srcpad);
+      return;
+    }
+    gst_caps_unref (old_caps);
+  }
+
   gst_caps_replace (&self->priv->srccaps, caps);
-  gst_aggregator_push_mandatory_events (self);
+  gst_aggregator_push_mandatory_events (self, TRUE);
   GST_PAD_STREAM_UNLOCK (self->srcpad);
 }
 
 static GstFlowReturn
 gst_aggregator_default_finish_buffer (GstAggregator * self, GstBuffer * buffer)
 {
-  gst_aggregator_push_mandatory_events (self);
+  gst_aggregator_push_mandatory_events (self, FALSE);
 
   GST_OBJECT_LOCK (self);
   if (!self->priv->flushing && gst_pad_is_active (self->srcpad)) {
@@ -716,7 +732,7 @@
 gst_aggregator_default_finish_buffer_list (GstAggregator * self,
     GstBufferList * bufferlist)
 {
-  gst_aggregator_push_mandatory_events (self);
+  gst_aggregator_push_mandatory_events (self, FALSE);
 
   GST_OBJECT_LOCK (self);
   if (!self->priv->flushing && gst_pad_is_active (self->srcpad)) {
@@ -758,7 +774,7 @@
 gst_aggregator_push_eos (GstAggregator * self)
 {
   GstEvent *event;
-  gst_aggregator_push_mandatory_events (self);
+  gst_aggregator_push_mandatory_events (self, FALSE);
 
   event = gst_event_new_eos ();
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.20.2/libs/gst/base/gstbasetransform.c 
new/gstreamer-1.20.3/libs/gst/base/gstbasetransform.c
--- old/gstreamer-1.20.2/libs/gst/base/gstbasetransform.c       2022-05-03 
00:29:29.000000000 +0200
+++ new/gstreamer-1.20.3/libs/gst/base/gstbasetransform.c       2022-06-16 
00:36:22.000000000 +0200
@@ -475,7 +475,7 @@
     GST_LOG_OBJECT (trans, "  to: %" GST_PTR_FORMAT, ret);
 
 #ifdef GST_ENABLE_EXTRA_CHECKS
-    if (filter) {
+    if (ret && filter) {
       if (!gst_caps_is_subset (ret, filter)) {
         GstCaps *intersection;
 
@@ -1595,6 +1595,10 @@
 
       gst_query_parse_caps (query, &filter);
       caps = gst_base_transform_query_caps (trans, pad, filter);
+      if (!caps) {
+        GST_WARNING_OBJECT (pad, "no caps can be handled by this pad");
+        caps = gst_caps_new_empty ();
+      }
       gst_query_set_caps_result (query, caps);
       gst_caps_unref (caps);
       ret = TRUE;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.20.2/libs/gst/base/gstqueuearray.c 
new/gstreamer-1.20.3/libs/gst/base/gstqueuearray.c
--- old/gstreamer-1.20.2/libs/gst/base/gstqueuearray.c  2022-05-03 
00:29:29.000000000 +0200
+++ new/gstreamer-1.20.3/libs/gst/base/gstqueuearray.c  2022-06-16 
00:36:22.000000000 +0200
@@ -332,16 +332,24 @@
 static void
 gst_queue_array_do_expand (GstQueueArray * array)
 {
-  guint elt_size = array->elt_size;
+  gsize elt_size = array->elt_size;
   /* newsize is 50% bigger */
-  guint oldsize = array->size;
-  guint newsize = MAX ((3 * oldsize) / 2, oldsize + 1);
+  gsize oldsize = array->size;
+  guint64 newsize;
+
+  newsize = MAX ((3 * (guint64) oldsize) / 2, (guint64) oldsize + 1);
+  if (newsize > G_MAXUINT)
+    g_error ("growing the queue array would overflow");
 
   /* copy over data */
   if (array->tail != 0) {
-    guint8 *array2 = g_malloc0 (elt_size * newsize);
-    guint t1 = array->head;
-    guint t2 = oldsize - array->head;
+    guint8 *array2 = NULL;
+    gsize t1 = 0;
+    gsize t2 = 0;
+
+    array2 = g_malloc0_n (newsize, elt_size);
+    t1 = array->head;
+    t2 = oldsize - array->head;
 
     /* [0-----TAIL][HEAD------SIZE]
      *
@@ -352,7 +360,8 @@
      * 2) move [0-------TAIL] part new array, after previous part
      */
 
-    memcpy (array2, array->array + (elt_size * array->head), t2 * elt_size);
+    memcpy (array2, array->array + (elt_size * (gsize) array->head),
+        t2 * elt_size);
     memcpy (array2 + t2 * elt_size, array->array, t1 * elt_size);
 
     g_free (array->array);
@@ -360,7 +369,7 @@
     array->head = 0;
   } else {
     /* Fast path, we just need to grow the array */
-    array->array = g_realloc (array->array, elt_size * newsize);
+    array->array = g_realloc_n (array->array, newsize, elt_size);
     memset (array->array + elt_size * oldsize, 0,
         elt_size * (newsize - oldsize));
   }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.20.2/meson.build 
new/gstreamer-1.20.3/meson.build
--- old/gstreamer-1.20.2/meson.build    2022-05-03 00:29:29.000000000 +0200
+++ new/gstreamer-1.20.3/meson.build    2022-06-16 00:36:22.000000000 +0200
@@ -1,5 +1,5 @@
 project('gstreamer', 'c',
-  version : '1.20.2',
+  version : '1.20.3',
   meson_version : '>= 0.59',
   default_options : [ 'warning_level=1',
                       'buildtype=debugoptimized' ])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.20.2/plugins/elements/gstmultiqueue.c 
new/gstreamer-1.20.3/plugins/elements/gstmultiqueue.c
--- old/gstreamer-1.20.2/plugins/elements/gstmultiqueue.c       2022-05-03 
00:29:29.000000000 +0200
+++ new/gstreamer-1.20.3/plugins/elements/gstmultiqueue.c       2022-06-16 
00:36:22.000000000 +0200
@@ -2091,7 +2091,8 @@
   guint32 newid;
   GstFlowReturn result;
   GstClockTimeDiff next_time;
-  gboolean is_buffer, is_query;
+  gboolean is_buffer;
+  gboolean is_query = FALSE;
   gboolean do_update_buffering = FALSE;
   gboolean dropping = FALSE;
   GstPad *srcpad = NULL;
@@ -2101,7 +2102,7 @@
   srcpad = g_weak_ref_get (&sq->srcpad);
 
   if (!mq || !srcpad)
-    goto out_flushing;
+    goto done;
 
 next:
   GST_DEBUG_OBJECT (mq, "SingleQueue %d : trying to pop an object", sq->id);
@@ -2418,7 +2419,7 @@
   mq = g_weak_ref_get (&sq->mqueue);
 
   if (!mq)
-    goto flushing;
+    goto done;
 
   /* if eos, we are always full, so avoid hanging incoming indefinitely */
   if (sq->is_eos)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.20.2/po/gstreamer-1.0.pot 
new/gstreamer-1.20.3/po/gstreamer-1.0.pot
--- old/gstreamer-1.20.2/po/gstreamer-1.0.pot   2022-05-03 00:29:39.183158600 
+0200
+++ new/gstreamer-1.20.3/po/gstreamer-1.0.pot   2022-06-16 00:36:32.238149400 
+0200
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer-1.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-05-02 23:29+0100\n"
+"POT-Creation-Date: 2022-06-15 23:36+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"

Reply via email to