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"