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-02-09 20:38:25
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gstreamer (Old)
 and      /work/SRC/openSUSE:Factory/.gstreamer.new.1898 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gstreamer"

Wed Feb  9 20:38:25 2022 rev:77 rq:952068 version:1.18.6

Changes:
--------
--- /work/SRC/openSUSE:Factory/gstreamer/gstreamer.changes      2022-01-27 
23:17:02.274948729 +0100
+++ /work/SRC/openSUSE:Factory/.gstreamer.new.1898/gstreamer.changes    
2022-02-09 20:38:46.490314947 +0100
@@ -1,0 +2,16 @@
+Fri Feb  4 19:10:48 UTC 2022 - Bj??rn Lie <bjorn....@gmail.com>
+
+- Update to version 1.18.6:
+  + gstplugin: Fix for UWP build
+  + gst-ptp-helper: Do not disable multicast loopback
+  + concat: fix qos event handling
+  + pluginfeature: Fix object leak
+  + baseparse: fix invalid avg_bitrate after reset
+  + multiqueue: Fix query unref race on flush
+  + gst: Initialize optional event/message fields when parsing
+  + bitwriter: Fix the trailing bits lost when getting its data
+  + multiqueue: never consider a queue that is not waiting
+  + input-selector: Use proper segments when cleaning cached
+    buffers
+
+-------------------------------------------------------------------

Old:
----
  gstreamer-1.18.5.tar.xz

New:
----
  gstreamer-1.18.6.tar.xz

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

Other differences:
------------------
++++++ gstreamer.spec ++++++
--- /var/tmp/diff_new_pack.3OvYTs/_old  2022-02-09 20:38:47.150316526 +0100
+++ /var/tmp/diff_new_pack.3OvYTs/_new  2022-02-09 20:38:47.154316535 +0100
@@ -19,7 +19,7 @@
 %define gst_branch 1.0
 
 Name:           gstreamer
-Version:        1.18.5
+Version:        1.18.6
 Release:        0
 Summary:        Streaming-Media Framework Runtime
 License:        LGPL-2.1-or-later

++++++ gstreamer-1.18.5.tar.xz -> gstreamer-1.18.6.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.18.5/.gitignore 
new/gstreamer-1.18.6/.gitignore
--- old/gstreamer-1.18.5/.gitignore     1970-01-01 01:00:00.000000000 +0100
+++ new/gstreamer-1.18.6/.gitignore     2022-02-02 16:05:40.000000000 +0100
@@ -0,0 +1,15 @@
+*~
+*.bak
+
+Build
+*.user
+*.suo
+*.ipch
+*.sdf
+*.opensdf
+*.DS_Store
+
+# Meson
+/build
+/_build
+/subprojects
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.18.5/.gitlab-ci.yml 
new/gstreamer-1.18.6/.gitlab-ci.yml
--- old/gstreamer-1.18.5/.gitlab-ci.yml 1970-01-01 01:00:00.000000000 +0100
+++ new/gstreamer-1.18.6/.gitlab-ci.yml 2022-02-02 16:05:40.000000000 +0100
@@ -0,0 +1 @@
+include: 
"https://gitlab.freedesktop.org/gstreamer/gst-ci/raw/1.18/gitlab/ci_template.yml";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.18.5/ChangeLog 
new/gstreamer-1.18.6/ChangeLog
--- old/gstreamer-1.18.5/ChangeLog      2021-09-08 21:01:48.703989700 +0200
+++ new/gstreamer-1.18.6/ChangeLog      2022-02-02 16:05:40.000000000 +0100
@@ -1,3 +1,154 @@
+=== release 1.18.6 ===
+
+2022-02-02 15:05:38 +0000  Tim-Philipp M??ller <t...@centricular.com>
+
+       * ChangeLog:
+       * NEWS:
+       * RELEASE:
+       * gstreamer.doap:
+       * meson.build:
+         Release 1.18.6
+
+2022-01-26 02:46:49 +0900  Seungha Yang <seun...@centricular.com>
+
+       * gst/gstplugin.c:
+         gstplugin: Fix for UWP build
+         SetThreadErrorMode() API is available on UWP but flag values
+         are desktop API only. Since error dialogs don't exist on UWP,
+         we don't need to suppress it
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1569>
+
+2022-01-19 20:58:36 +0530  Nirbheek Chauhan <nirbh...@centricular.com>
+
+       * gst/gstplugin.c:
+         gstplugin: Better warnings on plugin load failure on Windows
+         It is an extremely common mistake on Windows to have incorrect PATH
+         values when loading a plugin, and the error from g_module_error()
+         (which just calls FormatMessageW()) is very confusing in this case:
+         The specified module could not be found.
+         
https://docs.microsoft.com/en-us/windows/win32/debug/system-error-codes--0-499-#ERROR_MOD_NOT_FOUND
+         It implies the plugin itself could not be found. The actual issue is
+         that a DLL dependency could not be found. We need to detect this case
+         and print a more useful error message.
+         We should still print the error fetched from FormatMessage() so that
+         people are able to google for it.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1589>
+
+2021-11-04 13:24:57 +0530  Nirbheek Chauhan <nirbh...@centricular.com>
+
+       * libs/gst/helpers/gst-ptp-helper.c:
+         gst-ptp-helper: Do not disable multicast loopback
+         Otherwise we cannot run gst-ptp-helper if the PTP master is on the
+         same device.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1546>
+
+2021-10-20 11:20:13 +0200  Guillaume Desmottes 
<guillaume.desmot...@onestream.live>
+
+       * plugins/elements/gstconcat.c:
+         concat: fix qos event handling
+         We were shadowing the sinkpad variable resulting in:
+         - the QoS event to be send to all sink pads instead of the active one
+         - the pad to be leaked
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1543>
+
+2022-01-14 04:45:08 +0900  Seungha Yang <seun...@centricular.com>
+
+       * gst/gstpluginfeature.c:
+         pluginfeature: Fix object leak
+         Need to release GstPluginFeature object after use
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1534>
+
+2021-10-22 11:00:06 -0400  Pascal Hache <ha...@touchtunes.com>
+
+       * libs/gst/base/gstbaseparse.c:
+         baseparse: fix invalid avg_bitrate after reset
+         gst_base_parse_reset() does not reset data_bytecount to 0, so
+         gst_base_parse_update_bitrates() uses a wrong value to calculate
+         the average bitrate on subsequent pipeline starts. This leads to an
+         excessive amount of "tag" events being pushed. These events include
+         very high "bitrate" values that diminish over time, and are produced
+         until the average bitrate is back to sane values.
+         Fixes #840
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1285>
+
+2021-10-04 13:49:44 +0200  Jan Alexander Steffens (heftig) 
<jan.steff...@ltnglobal.com>
+
+       * plugins/elements/gstmultiqueue.c:
+         multiqueue: Fix query unref race on flush
+         If the query has already been destroyed at this point, GST_IS_QUERY 
will
+         read garbage, can return false and we will try to unref it again.
+         Instead, make note of whether the item is a query when we dequeue it.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1284>
+
+2021-09-20 13:12:12 +0300  Sebastian Dr??ge <sebast...@centricular.com>
+
+       * gst/gstevent.c:
+       * gst/gstmessage.c:
+         gst: Initialize optional event/message fields when parsing
+         These might not exist inside the structure and then we would 
potentially
+         keep around uninitialized memory from the caller in the out parameter.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1273>
+
+2021-09-19 21:01:21 +0800  He Junyan <junyan...@intel.com>
+
+       * tests/check/libs/bitwriter.c:
+         test: bitwriter: Add a test for reset_and_get_data when not byte 
unaligned.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1272>
+
+2021-09-19 22:39:09 +0800  He Junyan <junyan...@intel.com>
+
+       * libs/gst/base/gstbitwriter.c:
+         bitwriter: Fix a memory leak in reset_and_get_buffer.
+         We should record the ownership of the data before we reset the 
bitwriter.
+         Or we will always dup the buffer data and leak the memory.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1272>
+
+2021-09-19 00:19:43 +0800  He Junyan <junyan...@intel.com>
+
+       * libs/gst/base/gstbitwriter.c:
+         bitwriter: Fix the trailing bits lost when getting its data.
+         In reset_and_get_data and reset_and_get_buffer, it fails to include
+         the trailing bits less than 8. So, when the bit_size is not byte
+         aligned, the trailing bits are lost in the return buffer.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1272>
+
+2021-09-10 01:43:18 +0200  Mathieu Duponchelle <math...@centricular.com>
+
+       * plugins/elements/gstmultiqueue.c:
+         multiqueue: fix obsolete comment re initial flow status
+         The initial single queue srcresult is OK, it hasn't been
+         NOT_LINKED since 2007.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1271>
+
+2021-09-09 20:25:25 +0200  Mathieu Duponchelle <math...@centricular.com>
+
+       * plugins/elements/gstmultiqueue.c:
+         multiqueue: never consider a queue that is not waiting
+         .. when computing the high id.
+         After a flush for instance, sq->srcresult is reset to OK,
+         yet it doesn't make sense to pick a non-existing position
+         id as the high id when a queue doesn't contain any items
+         in that situation either.
+         It is in any case completely OK to let the not-linked stream
+         get consumed without throttling at this stage, as any
+         first packet arriving on other single queues will get assigned
+         a higher position id.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1271>
+
+2021-07-23 16:20:20 +0200  Jan Alexander Steffens (heftig) 
<jan.steff...@ltnglobal.com>
+
+       * plugins/elements/gstinputselector.c:
+         input-selector: Use proper segments when cleaning cached buffers
+         We need to use the segment associated with the cached buffer, not the
+         current segment of the pad, otherwise we miscalculate the running time
+         of cached buffers from before a segment change.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1270>
+
+2021-09-09 00:12:28 +0100  Tim-Philipp M??ller <t...@centricular.com>
+
+       * meson.build:
+         Back to development
+
 === release 1.18.5 ===
 
 2021-09-08 20:01:46 +0100  Tim-Philipp M??ller <t...@centricular.com>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.18.5/NEWS new/gstreamer-1.18.6/NEWS
--- old/gstreamer-1.18.5/NEWS   2021-09-08 21:01:48.707990000 +0200
+++ new/gstreamer-1.18.6/NEWS   2022-02-02 16:05:40.000000000 +0100
@@ -2,13 +2,13 @@
 
 GStreamer 1.18.0 was originally released on 8 September 2020.
 
-The latest bug-fix release in the 1.18 series is 1.18.5 and was released
-on 8 September 2021.
+The latest bug-fix release in the 1.18 series is 1.18.6 and was released
+on 2 February 2022.
 
 See https://gstreamer.freedesktop.org/releases/1.18/ for the latest
 version of this document.
 
-Last updated: Wednesday 8 September 2021, 11:00 UTC (log)
+Last updated: Wednesday 2 February 2022, 11:30 UTC (log)
 
 Introduction
 
@@ -2103,9 +2103,8 @@
 Known Issues
 
 -   GStreamer 1.18 versions <= 1.18.4 would fail to build on Linux with
-    Meson 0.58 due to an issue with the include directories. Either
-    apply the patch or build with an older Meson version (<= 0.57) until
-    there is a GStreamer 1.18.5 release that includes the fix.
+    Meson 0.58 due to an issue with the include directories.
+    GStreamer >= 1.18.5 includes a fix for this.
 
 Contributors
 
@@ -3183,16 +3182,180 @@
 -   List of Merge Requests applied in 1.18.5
 -   List of Issues fixed in 1.18.5
 
+1.18.6
+
+The sixth 1.18 bug-fix release (1.18.6) was released on 2 February 2022.
+
+This release only contains bugfixes and security fixes and it should be
+safe to update from 1.18.x.
+
+Highlighted bugfixes in 1.18.6
+
+-   tagdemux: Fix crash when presented with malformed files (security
+    fix)
+-   video-converter: Fix broken gamma remap with high bitdepth YUV
+    output
+-   shout2send: Fix issues with libshout >= 2.4.2
+-   mxfdemux: fix regression with VANC tracks that only contains packet
+    types we don???t handle
+-   Better plugin loading error reporting on Windows
+-   Fixes for deprecations in Python 3.10
+-   build fixes, memory leak fixes, reliability fixes
+-   security fixes
+
+gstreamer
+
+-   gstplugin: Fix for UWP build
+-   gstplugin: Better warnings on plugin load failure on Windows
+-   gst-ptp-helper: Do not disable multicast loopback
+-   concat: fix qos event handling
+-   pluginfeature: Fix object leak
+-   baseparse: fix invalid avg_bitrate after reset
+-   multiqueue: Fix query unref race on flush
+-   gst: Initialize optional event/message fields when parsing
+-   bitwriter: Fix the trailing bits lost when getting its data.
+-   multiqueue: never consider a queue that is not waiting
+-   input-selector: Use proper segments when cleaning cached buffers
+
+gst-plugins-base
+
+-   tagdemux: Fix crash when presented with malformed files (security
+    fix)
+-   videoencoder: make sure the buffer is writable before modifying
+    metadata
+-   video-converter: Fix for broken gamma remap with high bitdepth YUV
+    output
+-   sdpmessage: fix mapping single char fmtp params
+-   oggdemux: fix a race in push mode when performing the duration seek
+-   uridecodebin: Fix critical warnings
+-   audio-converter: Fix resampling when there???s nothing to output
+-   tcp: fix build on Solaris
+-   uridecodebin3: Nullify current item after all play items are freed.
+-   audio-resampler: Fix segfault when we can???t output any frames
+-   urisourcebin: Handle sources with dynamic pads and pads already
+    present
+-   playbin2/3: autoplug/caps: don???t expand caps to ANY
+-   uridecodebin3/urisourcebin: Reusability fixes
+-   rtspconnection: Only reset timeout when socket is unused
+-   gstvideoaggregator.c: fix build with gcc 4.8
+
+gst-plugins-good
+
+-   rtspsrc: Fix critical while serializing timeout element message
+-   multifilesrc: fix caps leak
+-   shout2: Add compatibility for libshout >= 2.4.2 shout_open return
+    values
+-   v4l2: Update fmt if padded height is greater than fmt height
+-   v4l2bufferpool: set video alignment of video meta
+-   qtmux: fix deadlock in gst_qt_mux_prepare_moov_recovery
+-   matroska: Add support for muxing/demuxing ffv1
+-   qtdemux: Try to build AAC codec-data whenever it???s possible
+
+gst-plugins-bad
+
+-   interlace: Fix a double-unref on shutdown
+-   webrtcbin: Chain up to parent constructed method
+-   webrtc: fix log error message in function
+    gst_webrtc_bin_set_local_description
+-   mxfdemux: don???t error out if VANC track only contains packets we
+    don???t handle
+-   av1parser: Fix data type of film grain param
+-   assrender: Support RFC8081 mime types
+-   pitch: Specify layout as required for negotiation
+-   magicleap: update lumin_rt libraries names to the latest official
+    version
+-   codecs: h265decoder: Fix per-slice leak
+-   mpeg4videoparse: fix criticals trying to insert configs that don???t
+    exist yet
+-   webrtcbin: Always set SINK/SRC flags
+-   mpegtspacketizer: memcmp potentially seen_before data
+-   zxing: update to support version 1.1.1
+
+gst-plugins-ugly
+
+-   No changes
+
+gst-libav
+
+-   avcodecmap: Add support for GBRA_10LE/BE
+
+gst-rtsp-server
+
+-   rtsp-stream: fix get_rates raciness
+-   rtsp-media: Only unprepare a media if it was not already unpreparing
+    anyway
+-   rtsp-media: Unprepare suspended medias too
+-   rtsp-client: make sure sessmedia will not get freed while used
+-   rtsp-media: Also mark receive-only (RECORD) medias as prepared when
+    unsuspending
+-   rtsp-session: Don???t unref medias twice if it is removed inside???
+-   examples: Fix leak in appsrc2 example
+
+gstreamer-vaapi
+
+-   libs: video-format: Check if formats map is not NULL
+-   vaapidecode: Autogenerate caps template
+-   vaapipostproc: copy over metadata also when using system allocated
+    buffer
+
+gst-python
+
+-   Avoid treating float as int (fix for Python 3.10)
+
+gst-editing-services
+
+-   meson: Remove duplicate definition of ???examples??? option
+
+gst-devtools
+
+-   No changes
+
+gst-integration-testsuites
+
+-   No changes
+
+gst-build
+
+-   env: Fix deprecations from python 3.10
+-   Various fixes for macOS
+-   update FFmpeg wrap to 4.3.3
+
+Cerbero build tool and packaging changes in 1.18.6
+
+-   Some fixes for Fedora 34
+-   cerbero: Backport fix for removed loop param of PriorityQueue()
+-   cerbero: Fix support for Fedora 35
+-   Add support for Visual Studio 2022
+-   openssl.recipe: Fix crash on iOS TestFlight
+-   UnixBootstrapper: remove sudo as root user
+-   bzip2.recipe: bump version to 1.0.8
+-   openssl.recipe: upgrade to version 1.1.1l
+
+Contributors to 1.18.6
+
+Antonio Ospite, C??lestin Marot, Dave Pich??, Erlend Eriksen, Fabrice
+Fontaine, Guillaume Desmottes, Haihua Hu, He Junyan, Jakub Adam, Jan
+Alexander Steffens (heftig), Jan Schmidt, Jeremy Cline, Jordan Petridis,
+Mathieu Duponchelle, Matthew Waters, Mengkejiergeli Ba, Michael Gruner,
+Nirbheek Chauhan, Ognyan Tonchev, Pascal Hache, Rafa?? Dzi??giel,
+Sebastian Dr??ge, Seungha Yang, St??phane Cerveau, Teng En Ung,Thibault
+Saunier, Thomas Klausner, Tim-Philipp M??ller, Tobias Reineke, Tobias
+Ronge, Tomasz Andrzejak, Trung Do, V??ctor Manuel J??quez Leal, Vivia
+Nikolaidou,
+
+??? 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.18.6
+
+-   List of Merge Requests applied in 1.18.6
+-   List of Issues fixed in 1.18.6
+
 Schedule for 1.20
 
-Our next major feature release will be 1.20, and 1.19 will be the
-unstable development version leading up to the stable 1.20 release. The
-development of 1.19/1.20 will happen in the git master branch.
-
-The plan for the 1.20 development cycle is yet to be confirmed, but it
-is now expected that feature freeze will take place some time in
-September/October 2021, with the first 1.20 stable release hopefully
-towards the end of October 2021.
+Our next major feature release will be 1.20, and will be released in
+early February 2022. You can track its progress on the 1.20 Release
+Notes page.
 
 1.20 will be backwards-compatible to the stable 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' old/gstreamer-1.18.5/RELEASE new/gstreamer-1.18.6/RELEASE
--- old/gstreamer-1.18.5/RELEASE        2021-09-08 21:01:48.707990000 +0200
+++ new/gstreamer-1.18.6/RELEASE        2022-02-02 16:05:40.000000000 +0100
@@ -1,4 +1,4 @@
-This is GStreamer core 1.18.5.
+This is GStreamer core 1.18.6.
 
 The GStreamer team is thrilled to announce a new major feature release
 of your favourite cross-platform multimedia framework!
@@ -82,7 +82,7 @@
 For help and support, please subscribe to and send questions to the
 gstreamer-devel mailing list (see below for details).
 
-There is also a #gstreamer IRC channel on the Freenode IRC network.
+There is also a #gstreamer IRC channel on the OFTC IRC network.
 
 ==== Developers ====
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.18.5/gst/gstevent.c 
new/gstreamer-1.18.6/gst/gstevent.c
--- old/gstreamer-1.18.5/gst/gstevent.c 2021-09-08 21:01:48.727989700 +0200
+++ new/gstreamer-1.18.6/gst/gstevent.c 2022-02-02 16:05:40.000000000 +0100
@@ -1437,6 +1437,9 @@
   g_return_if_fail (interval != NULL);
   g_return_if_fail (GST_EVENT_TYPE (event) == GST_EVENT_SEEK);
 
+  if (interval)
+    *interval = GST_CLOCK_TIME_NONE;
+
   gst_structure_id_get (GST_EVENT_STRUCTURE (event),
       GST_QUARK (TRICKMODE_INTERVAL), GST_TYPE_CLOCK_TIME, interval, NULL);
 }
@@ -1771,10 +1774,10 @@
   g_return_if_fail (GST_EVENT_TYPE (event) == GST_EVENT_STREAM_START);
 
   if (stream) {
+    *stream = NULL;
     gst_structure_id_get (GST_EVENT_STRUCTURE (event),
         GST_QUARK (STREAM), GST_TYPE_STREAM, stream, NULL);
   }
-
 }
 
 /**
@@ -1809,6 +1812,7 @@
   g_return_if_fail (GST_EVENT_TYPE (event) == GST_EVENT_STREAM_START);
 
   if (flags) {
+    *flags = 0;
     gst_structure_id_get (GST_EVENT_STRUCTURE (event),
         GST_QUARK (FLAGS), GST_TYPE_STREAM_FLAGS, flags, NULL);
   }
@@ -1859,6 +1863,7 @@
       FALSE);
 
   if (group_id) {
+    *group_id = 0;
     return gst_structure_id_get (GST_EVENT_STRUCTURE (event),
         GST_QUARK (GROUP_ID), G_TYPE_UINT, group_id, NULL);
   }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.18.5/gst/gstmessage.c 
new/gstreamer-1.18.6/gst/gstmessage.c
--- old/gstreamer-1.18.5/gst/gstmessage.c       2021-09-08 21:01:48.731989600 
+0200
+++ new/gstreamer-1.18.6/gst/gstmessage.c       2022-02-02 16:05:40.000000000 
+0100
@@ -2470,6 +2470,8 @@
   if (!group_id)
     return TRUE;
 
+  *group_id = 0;
+
   structure = GST_MESSAGE_STRUCTURE (message);
 
   v = gst_structure_id_get_value (structure, GST_QUARK (GROUP_ID));
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.18.5/gst/gstplugin.c 
new/gstreamer-1.18.6/gst/gstplugin.c
--- old/gstreamer-1.18.5/gst/gstplugin.c        2021-09-08 21:01:48.735989600 
+0200
+++ new/gstreamer-1.18.6/gst/gstplugin.c        2022-02-02 16:05:40.000000000 
+0100
@@ -727,6 +727,70 @@
   return symname;
 }
 
+#ifdef G_OS_WIN32
+/*
+ * It is an extremely common mistake on Windows to have incorrect PATH values
+ * when loading a plugin, and the error message is very confusing in this case:
+ * 'The specified module could not be found.' which implies the plugin itself
+ * could not be found. The actual issue is that a DLL dependency could not be
+ * found. We need to detect this case and print a more useful error message.
+ *
+ * Unfortunately, g_module_open() doesn't actually give us the GetLastError()
+ * code from LoadLibraryW() and only gives us a literal message from
+ * FormatMessageW(). We can't do a string comparison on that because it is
+ * locale-dependent.
+ *
+ * The only way out is for us to try loading the module ourselves on failure 
and
+ * get the error DWORD again from GetLastError().
+ */
+static char *
+get_better_module_load_error (const char *filename, const char *orig_err_msg)
+{
+  BOOL ret = 0;
+  DWORD mode;
+  wchar_t *wfilename;
+  HMODULE handle;
+  char *err_msg = NULL;
+
+  wfilename = g_utf8_to_utf16 (filename, -1, NULL, NULL, NULL);
+#ifdef GST_WINAPI_ONLY_APP
+  handle = LoadPackagedLibrary (wfilename, 0);
+#else
+  ret = SetThreadErrorMode (SEM_NOOPENFILEERRORBOX | SEM_FAILCRITICALERRORS,
+      &mode);
+
+  handle = LoadLibraryW (wfilename);
+#endif
+  g_free (wfilename);
+
+  if (handle == NULL) {
+    DWORD err = GetLastError ();
+    char *win32_err_msg = g_win32_error_message (err);
+    if (err == ERROR_MOD_NOT_FOUND) {
+      err_msg = g_strdup_printf ("%s\nThis usually means Windows was unable "
+          "to find a DLL dependency of the plugin. Please check that PATH is "
+          "correct.\nYou can run 'dumpbin -dependents' (provided by the "
+          "Visual Studio developer prompt) to list the DLL deps of any DLL.\n"
+          "There are also some third-party GUIs to list and debug DLL "
+          "dependencies recursively.", win32_err_msg);
+      g_free (win32_err_msg);
+    } else {
+      err_msg = win32_err_msg;
+    }
+  } else {
+    err_msg = g_strdup_printf ("g_module_open() failed on %s with \"%s\" but "
+        "manual loading succeeded; this should be impossible! Please "
+        "report this as a GStreamer bug.", filename, orig_err_msg);
+    FreeLibrary (handle);
+  }
+
+  if (ret > 0)
+    SetThreadErrorMode (mode, NULL);
+
+  return err_msg;
+}
+#endif /* G_OS_WIN32 */
+
 /* Note: The return value is (transfer full) although we work with floating
  * references here. If a new plugin instance is created, it is always sinked
  * in the registry first and a new reference is returned
@@ -802,15 +866,23 @@
 
   module = g_module_open (filename, flags);
   if (module == NULL) {
-    GST_CAT_WARNING (GST_CAT_PLUGIN_LOADING, "module_open failed: %s",
-        g_module_error ());
+#ifdef G_OS_WIN32
+    /* flags are meaningless / ignored on Windows */
+    char *err_msg = get_better_module_load_error (filename, g_module_error ());
+#else
+    const char *err_msg = g_module_error ();
+#endif
+    GST_CAT_WARNING (GST_CAT_PLUGIN_LOADING, "module_open failed: %s", 
err_msg);
     g_set_error (error,
         GST_PLUGIN_ERROR, GST_PLUGIN_ERROR_MODULE, "Opening module failed: %s",
-        g_module_error ());
+        err_msg);
     /* If we failed to open the shared object, then it's probably because a
      * plugin is linked against the wrong libraries. Print out an easy-to-see
      * message in this case. */
-    g_warning ("Failed to load plugin '%s': %s", filename, g_module_error ());
+    g_warning ("Failed to load plugin '%s': %s", filename, err_msg);
+#ifdef G_OS_WIN32
+    g_free (err_msg);
+#endif
     goto return_error;
   }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.18.5/gst/gstpluginfeature.c 
new/gstreamer-1.18.6/gst/gstpluginfeature.c
--- old/gstreamer-1.18.5/gst/gstpluginfeature.c 2021-09-08 21:01:48.735989600 
+0200
+++ new/gstreamer-1.18.6/gst/gstpluginfeature.c 2022-02-02 16:05:40.000000000 
+0100
@@ -489,6 +489,7 @@
           if (feature) {
             gst_plugin_feature_set_rank (feature, rank);
             GST_DEBUG ("Update rank of plugin feature \"%s\" to %d", str, 
rank);
+            gst_object_unref (feature);
           }
         }
       }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.18.5/gstreamer.doap 
new/gstreamer-1.18.6/gstreamer.doap
--- old/gstreamer-1.18.5/gstreamer.doap 2021-09-08 21:01:48.743989500 +0200
+++ new/gstreamer-1.18.6/gstreamer.doap 2022-02-02 16:05:40.000000000 +0100
@@ -40,6 +40,16 @@
 
  <release>
   <Version>
+   <revision>1.18.6</revision>
+   <branch>1.18</branch>
+   <name></name>
+   <created>2022-02-02</created>
+   <file-release 
rdf:resource="https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.18.6.tar.xz";
 />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
    <revision>1.18.5</revision>
    <branch>1.18</branch>
    <name></name>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.18.5/libs/gst/base/gstbaseparse.c 
new/gstreamer-1.18.6/libs/gst/base/gstbaseparse.c
--- old/gstreamer-1.18.5/libs/gst/base/gstbaseparse.c   2021-09-08 
21:01:48.747989700 +0200
+++ new/gstreamer-1.18.6/libs/gst/base/gstbaseparse.c   2022-02-02 
16:05:40.000000000 +0100
@@ -826,6 +826,7 @@
   parse->priv->bitrate = 0;
   parse->priv->framecount = 0;
   parse->priv->bytecount = 0;
+  parse->priv->data_bytecount = 0;
   parse->priv->acc_duration = 0;
   parse->priv->first_frame_pts = GST_CLOCK_TIME_NONE;
   parse->priv->first_frame_dts = GST_CLOCK_TIME_NONE;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.18.5/libs/gst/base/gstbitwriter.c 
new/gstreamer-1.18.6/libs/gst/base/gstbitwriter.c
--- old/gstreamer-1.18.5/libs/gst/base/gstbitwriter.c   2021-09-08 
21:01:48.747989700 +0200
+++ new/gstreamer-1.18.6/libs/gst/base/gstbitwriter.c   2022-02-02 
16:05:40.000000000 +0100
@@ -200,7 +200,7 @@
 
   data = bitwriter->data;
   if (bitwriter->owned)
-    data = g_memdup (data, bitwriter->bit_size >> 3);
+    data = g_memdup (data, GST_ROUND_UP_8 (bitwriter->bit_size) >> 3);
   gst_bit_writer_reset (bitwriter);
 
   return data;
@@ -223,15 +223,18 @@
   GstBuffer *buffer;
   gpointer data;
   gsize size;
+  gboolean owned;
 
   g_return_val_if_fail (bitwriter != NULL, NULL);
 
-  size = bitwriter->bit_size >> 3;
+  owned = bitwriter->owned;
+
+  size = GST_ROUND_UP_8 (bitwriter->bit_size) >> 3;
   data = gst_bit_writer_reset_and_get_data (bitwriter);
 
   /* we cannot rely on buffers allocated externally, thus let's dup
    * the data */
-  if (data && !bitwriter->owned)
+  if (data && !owned)
     data = g_memdup (data, size);
 
   buffer = gst_buffer_new ();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.18.5/libs/gst/helpers/gst-ptp-helper.c 
new/gstreamer-1.18.6/libs/gst/helpers/gst-ptp-helper.c
--- old/gstreamer-1.18.5/libs/gst/helpers/gst-ptp-helper.c      2021-09-08 
21:01:48.755989600 +0200
+++ new/gstreamer-1.18.6/libs/gst/helpers/gst-ptp-helper.c      2022-02-02 
16:05:40.000000000 +0100
@@ -226,7 +226,6 @@
   if (!socket_event)
     g_error ("Couldn't create event socket: %s", err->message);
   g_clear_error (&err);
-  g_socket_set_multicast_loopback (socket_event, FALSE);
 
   socket_general =
       g_socket_new (G_SOCKET_FAMILY_IPV4, G_SOCKET_TYPE_DATAGRAM,
@@ -234,7 +233,6 @@
   if (!socket_general)
     g_error ("Couldn't create general socket: %s", err->message);
   g_clear_error (&err);
-  g_socket_set_multicast_loopback (socket_general, FALSE);
 
   /* Bind sockets */
   bind_addr = g_inet_address_new_any (G_SOCKET_FAMILY_IPV4);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.18.5/meson.build 
new/gstreamer-1.18.6/meson.build
--- old/gstreamer-1.18.5/meson.build    2021-09-08 21:01:48.759989500 +0200
+++ new/gstreamer-1.18.6/meson.build    2022-02-02 16:05:40.000000000 +0100
@@ -1,5 +1,5 @@
 project('gstreamer', 'c',
-  version : '1.18.5',
+  version : '1.18.6',
   meson_version : '>= 0.48',
   default_options : [ 'warning_level=1',
                       'buildtype=debugoptimized' ])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.18.5/plugins/elements/gstconcat.c 
new/gstreamer-1.18.6/plugins/elements/gstconcat.c
--- old/gstreamer-1.18.5/plugins/elements/gstconcat.c   2021-09-08 
21:01:48.759989500 +0200
+++ new/gstreamer-1.18.6/plugins/elements/gstconcat.c   2022-02-02 
16:05:40.000000000 +0100
@@ -756,14 +756,11 @@
       break;
     }
     case GST_EVENT_QOS:{
-      GstPad *sinkpad = NULL;
-
       g_mutex_lock (&self->lock);
       if ((sinkpad = self->current_sinkpad))
         gst_object_ref (sinkpad);
       g_mutex_unlock (&self->lock);
 
-
       if (!sinkpad) {
         gst_event_replace (&event, NULL);
         ret = FALSE;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.18.5/plugins/elements/gstinputselector.c 
new/gstreamer-1.18.6/plugins/elements/gstinputselector.c
--- old/gstreamer-1.18.5/plugins/elements/gstinputselector.c    2021-09-08 
21:01:48.759989500 +0200
+++ new/gstreamer-1.18.6/plugins/elements/gstinputselector.c    2022-02-02 
16:05:40.000000000 +0100
@@ -913,7 +913,6 @@
   GST_DEBUG_OBJECT (sel, "Cleaning up old cached buffers");
   for (walk = GST_ELEMENT_CAST (sel)->sinkpads; walk; walk = g_list_next 
(walk)) {
     GstSelectorPad *selpad;
-    GstSegment *seg;
     GstSelectorPadCachedBuffer *cached_buffer;
     GSList *maybe_remove;
     guint queue_position;
@@ -922,13 +921,12 @@
     if (!selpad->cached_buffers)
       continue;
 
-    seg = &selpad->segment;
-
     maybe_remove = NULL;
     queue_position = 0;
     while ((cached_buffer = g_queue_peek_nth (selpad->cached_buffers,
                 queue_position))) {
       GstBuffer *buffer = cached_buffer->buffer;
+      GstSegment *seg = &cached_buffer->segment;
       GstClockTime running_time;
       GSList *l;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.18.5/plugins/elements/gstmultiqueue.c 
new/gstreamer-1.18.6/plugins/elements/gstmultiqueue.c
--- old/gstreamer-1.18.5/plugins/elements/gstmultiqueue.c       2021-09-08 
21:01:48.763989400 +0200
+++ new/gstreamer-1.18.6/plugins/elements/gstmultiqueue.c       2022-02-02 
16:05:40.000000000 +0100
@@ -1384,7 +1384,7 @@
     gst_segment_init (&sq->sink_segment, GST_FORMAT_TIME);
     gst_segment_init (&sq->src_segment, GST_FORMAT_TIME);
     sq->has_src_segment = FALSE;
-    /* All pads start off not-linked for a smooth kick-off */
+    /* All pads start off OK for a smooth kick-off */
     sq->srcresult = GST_FLOW_OK;
     sq->pushed = FALSE;
     sq->cur_time = 0;
@@ -2087,7 +2087,7 @@
   guint32 newid;
   GstFlowReturn result;
   GstClockTimeDiff next_time;
-  gboolean is_buffer;
+  gboolean is_buffer, is_query;
   gboolean do_update_buffering = FALSE;
   gboolean dropping = FALSE;
   GstPad *srcpad = NULL;
@@ -2113,6 +2113,8 @@
   item = (GstMultiQueueItem *) sitem;
   newid = item->posid;
 
+  is_query = item->is_query;
+
   /* steal the object and destroy the item */
   object = gst_multi_queue_item_steal_object (item);
   gst_multi_queue_item_destroy (item);
@@ -2358,7 +2360,7 @@
 
 out_flushing:
   {
-    if (object && !GST_IS_QUERY (object))
+    if (object && !is_query)
       gst_mini_object_unref (object);
 
     GST_MULTI_QUEUE_MUTEX_LOCK (mq);
@@ -2972,14 +2974,14 @@
     GST_LOG_OBJECT (mq, "inspecting sq:%d , nextid:%d, oldid:%d, srcresult:%s",
         sq->id, sq->nextid, sq->oldid, gst_flow_get_name (sq->srcresult));
 
-    if (sq->srcresult == GST_FLOW_NOT_LINKED) {
-      /* No need to consider queues which are not waiting */
-      if (sq->nextid == 0) {
-        GST_LOG_OBJECT (mq, "sq:%d is not waiting - ignoring", sq->id);
-        gst_object_unref (srcpad);
-        continue;
-      }
+    /* No need to consider queues which are not waiting */
+    if (sq->nextid == 0) {
+      GST_LOG_OBJECT (mq, "sq:%d is not waiting - ignoring", sq->id);
+      gst_object_unref (srcpad);
+      continue;
+    }
 
+    if (sq->srcresult == GST_FLOW_NOT_LINKED) {
       if (sq->nextid < lowest)
         lowest = sq->nextid;
     } else if (!GST_PAD_IS_EOS (srcpad) && sq->srcresult != GST_FLOW_EOS) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.18.5/po/gstreamer-1.0.pot 
new/gstreamer-1.18.6/po/gstreamer-1.0.pot
--- old/gstreamer-1.18.5/po/gstreamer-1.0.pot   2021-09-08 21:01:49.247986000 
+0200
+++ new/gstreamer-1.18.6/po/gstreamer-1.0.pot   2022-02-02 16:05:41.587391600 
+0100
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer-1.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-09-08 20:01+0100\n"
+"POT-Creation-Date: 2022-02-02 15:05+0000\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"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.18.5/tests/check/libs/bitwriter.c 
new/gstreamer-1.18.6/tests/check/libs/bitwriter.c
--- old/gstreamer-1.18.5/tests/check/libs/bitwriter.c   2021-09-08 
21:01:48.783989200 +0200
+++ new/gstreamer-1.18.6/tests/check/libs/bitwriter.c   2022-02-02 
16:05:40.000000000 +0100
@@ -148,6 +148,66 @@
 
 GST_END_TEST;
 
+GST_START_TEST (test_reset_data_unaligned)
+{
+  GstBitWriter writer;
+  static guint8 sdata[] = { 0xff, 0xf1, 0xf2, 0x80 };
+  guint8 *data, i;
+  GstBuffer *buf;
+  GstMapInfo info;
+
+  gst_bit_writer_init_with_size (&writer, 32, TRUE);
+  fail_unless_equals_int (gst_bit_writer_get_remaining (&writer), 2048);
+
+  fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0xf, 4));
+  fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x7, 3));
+  fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x3, 2));
+  fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x3, 2));
+  fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x8, 4));
+  fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x1, 1));
+  fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0xf2, 8));
+  fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x2, 2));
+
+  fail_unless_equals_int (gst_bit_writer_get_remaining (&writer), 2048 - 26);
+
+  data = gst_bit_writer_reset_and_get_data (&writer);
+  fail_unless (data != NULL);
+
+  for (i = 0; i < 4; i++)
+    fail_unless (memcmp (&sdata[i], &data[i], 1) == 0);
+
+  gst_bit_writer_init (&writer);
+
+  fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x7, 3));
+  fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0xf, 4));
+  fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x1, 1));
+  fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x1, 1));
+  fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x3, 2));
+  fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x8, 4));
+  fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x1, 1));
+  fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0xf2, 8));
+  fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x1, 1));
+  fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x0, 1));
+  fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x0, 1));
+  fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x0, 3));
+
+  fail_unless_equals_int (gst_bit_writer_get_size (&writer), 30);
+
+  buf = gst_bit_writer_reset_and_get_buffer (&writer);
+  fail_unless (buf != NULL);
+  fail_unless (gst_buffer_map (buf, &info, GST_MAP_READWRITE));
+  fail_unless (info.data);
+  fail_unless_equals_int (info.size, 4);
+
+  for (i = 0; i < 4; i++)
+    fail_unless (memcmp (&sdata[i], &info.data[i], 1) == 0);
+
+  g_free (data);
+  gst_buffer_unmap (buf, &info);
+  gst_buffer_unref (buf);
+}
+
+GST_END_TEST;
 
 static Suite *
 gst_bit_writer_suite (void)
@@ -160,6 +220,7 @@
   tcase_add_test (tc_chain, test_initialization);
   tcase_add_test (tc_chain, test_data);
   tcase_add_test (tc_chain, test_reset);
+  tcase_add_test (tc_chain, test_reset_data_unaligned);
 
   return s;
 }

Reply via email to