Hello community,

here is the log from the commit of package gstreamer for openSUSE:Factory 
checked in at 2020-11-09 13:56:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gstreamer (Old)
 and      /work/SRC/openSUSE:Factory/.gstreamer.new.11331 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gstreamer"

Mon Nov  9 13:56:34 2020 rev:69 rq:846449 version:1.18.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/gstreamer/gstreamer.changes      2020-10-27 
18:58:36.450728509 +0100
+++ /work/SRC/openSUSE:Factory/.gstreamer.new.11331/gstreamer.changes   
2020-11-09 13:57:28.459955871 +0100
@@ -1,0 +2,30 @@
+Tue Oct 27 15:49:59 UTC 2020 - Antonio Larrosa <alarr...@suse.com>
+
+- Update to 1.18.1:
+  + Highlighted bugfixes in 1.18.1
+    - important security fixes
+    - bug fixes and memory leak fixes
+    - various stability and reliability improvements
+  + gstreamer changes:
+    - aggregator: make peek() has() pop() drop() buffer API
+      threadsafe
+    - gstvalue: don't write to const char *
+    - meson: Disallow DbgHelp for UWP build
+    - info: Fix build on Windows ARM64 device
+    - build: use cpu_family for arch checks
+    - basetransform: Fix in/outbuf confusion of
+      _default_transform_meta
+    - Fix documentation
+    - info: Load DbgHelp.dll using g_module_open()
+    - padtemplate: mark documentation caps as may be leaked
+    - gstmeta: intern registered impl string
+    - aggregator: Hold SRC_LOCK while unblocking via
+      SRC_BROADCAST()
+    - ptp_helper_post_install.sh: deal with none
+    - skip elements/leak.c if tracer is not available
+    - aggregator: Wake up source pad in PAUSED<->PLAYING
+      transitions
+    - input-selector: Wake up blocking pads when releasing them
+    - ptp: Also handle gnu/kfreebsd
+
+-------------------------------------------------------------------

Old:
----
  gstreamer-1.18.0.tar.xz

New:
----
  gstreamer-1.18.1.tar.xz

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

Other differences:
------------------
++++++ gstreamer.spec ++++++
--- /var/tmp/diff_new_pack.0dMAW3/_old  2020-11-09 13:57:29.335953961 +0100
+++ /var/tmp/diff_new_pack.0dMAW3/_new  2020-11-09 13:57:29.339953951 +0100
@@ -18,7 +18,7 @@
 
 %define gst_branch 1.0
 Name:           gstreamer
-Version:        1.18.0
+Version:        1.18.1
 Release:        0
 Summary:        Streaming-Media Framework Runtime
 License:        LGPL-2.1-or-later

++++++ _service ++++++
--- /var/tmp/diff_new_pack.0dMAW3/_old  2020-11-09 13:57:29.363953899 +0100
+++ /var/tmp/diff_new_pack.0dMAW3/_new  2020-11-09 13:57:29.363953899 +0100
@@ -4,7 +4,7 @@
     <param name="filename">gstreamer</param>
     <!--<param name="versionformat">@PARENT_TAG@+git%cd.%h</param>-->
     <param name="versionformat">@PARENT_TAG@</param>
-    <param name="revision">1.18.0</param>
+    <param name="revision">1.18.1</param>
     <param name="scm">git</param>
   </service>
   <service name="recompress" mode="disabled">

++++++ gstreamer-1.18.0.tar.xz -> gstreamer-1.18.1.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.18.0/ChangeLog 
new/gstreamer-1.18.1/ChangeLog
--- old/gstreamer-1.18.0/ChangeLog      2020-09-08 01:01:36.027851000 +0200
+++ new/gstreamer-1.18.1/ChangeLog      2020-10-26 12:08:38.343754000 +0100
@@ -1,7 +1,167 @@
+=== release 1.18.1 ===
+
+2020-10-26 11:08:36 +0000  Tim-Philipp Müller <t...@centricular.com>
+
+       * ChangeLog:
+       * NEWS:
+       * RELEASE:
+       * gstreamer.doap:
+       * meson.build:
+         Release 1.18.1
+
+2020-09-01 00:26:31 +0200  Mathieu Duponchelle <math...@centricular.com>
+
+       * libs/gst/base/gstaggregator.c:
+       * tests/check/libs/aggregator.c:
+         aggregator: make peek() has() pop() drop() buffer API threadsafe
+         Enforce that the last buffer that was peeked (or had its existence
+         checked) on a pad is the one that gets popped / dropped, resetting
+         at the end of each aggregation cycle.
+         Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/603
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/675>
+
+2020-10-13 01:19:47 +0200  Mathieu Duponchelle <math...@centricular.com>
+
+       * gst/gstvalue.c:
+         gstvalue: don't write to const char *
+         Our various deserializing functions require NULL terminators
+         to not over consume substrings (eg fields of an array). Instead
+         of writing a NULL terminator to the passed-in string, which may
+         result in segfaults, make a copy of the substring we're interested
+         in.
+         Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/446
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/673>
+
+2020-10-10 00:53:42 +0900  Seungha Yang <seun...@centricular.com>
+
+       * meson.build:
+         meson: Disallow DbgHelp for UWP build
+         Most symbols in DbgHelp.h are not allowed for UWP
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/670>
+
+2020-10-07 03:49:33 +0900  Seungha Yang <seun...@centricular.com>
+
+       * gst/gstinfo.c:
+         info: Fix build on Windows ARM64 device
+         gstinfo.c(3086): error C2094: label 'done' was undefined
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/668>
+
+2020-10-09 12:13:15 +1100  Matthew Waters <matt...@centricular.com>
+
+       * meson.build:
+         build: use cpu_family for arch checks
+         e.g. on 32-bit arm, we may have armv6, armv7l, armv7hf, etc which all
+         generally have the same layouts.  cpu_family() groups all of these 
into
+         just 'arm' that the ABI check table is expecting.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/667>
+
+2020-10-08 13:37:41 +0200  Jan Alexander Steffens (heftig) 
<jan.steff...@ltnglobal.com>
+
+       * libs/gst/base/gstbasetransform.c:
+         basetransform: Fix in/outbuf confusion of _default_transform_meta
+         The default implementation doesn't actually use its buffer parameters,
+         but this error might have been the cause of some actual confusion in
+         the plugins code.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/666>
+
+2020-09-26 09:11:40 +0200  Víctor Manuel Jáquez Leal <vjaq...@igalia.com>
+
+       * gst/gstpadtemplate.c:
+         padtemplate: add missing annotation
+         Adds missing "transfer full" annotation for caps parameter in
+         gst_pad_template_set_documentation_caps()
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/660>
+
+2020-09-16 02:16:52 +0200  Mathieu Duponchelle <math...@centricular.com>
+
+       * gst/gstmeta.c:
+         gstmeta: intern registered impl string
+         Subsequent lookups in the hashtable are probably better done
+         on memory we're confident is allocated to us :)
+         It was easy to trigger invalid reads by calling gst_meta_register
+         with dynamically allocated memory, freeing that memory, then
+         calling gst_meta_get_info()
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/657>
+
+2020-09-15 21:07:27 +0900  Seungha Yang <seun...@centricular.com>
+
+       * gst/gstinfo.c:
+       * meson.build:
+         info: Load DbgHelp.dll using g_module_open()
+         ... and update meson file so that enable it only using required 
headers.
+         "dependency(...)" is unlikely successful for Windows SDK libraries
+         since it doesn't ship pkg-config file. So it needs to be changed
+         to "find_library()" to link corresponding .lib file. That would
+         result to most MSVC build system will link dbghelp.dll. However,
+         one drawback of the change is that gstreamer-1.0.dll will mandate
+         dbghelp.dll although it should be optional. So g_module_open() way
+         can be the most safe way in this case.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/659>
+
+2020-09-30 11:56:40 +1000  Matthew Waters <matt...@centricular.com>
+
+       * gst/gstpadtemplate.c:
+         padtemplate: mark documentation caps as may be leaked
+         The template itself is already marked as such and the caps, the
+         documentation caps are a logical extension of those two.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/658>
+
+2020-09-18 09:59:03 +0300  Sebastian Dröge <sebast...@centricular.com>
+
+       * libs/gst/base/gstaggregator.c:
+         aggregator: Hold SRC_LOCK while unblocking via SRC_BROADCAST()
+         Otherwise the clock id we access might not be a valid pointer anymore.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/656>
+
+2020-09-08 12:45:42 +0100  Tom Schoonjans <tom.schoonj...@rfi.ac.uk>
+
+       * libs/gst/helpers/ptp_helper_post_install.sh:
+         ptp_helper_post_install.sh: deal with none
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/655>
+
+2020-09-09 01:23:11 +0800  Xℹ Ruoyao <xry...@mengyan1223.wang>
+
+       * tests/check/meson.build:
+         skip elements/leak.c if tracer is not available
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/654>
+
+2020-08-20 11:09:11 +0300  Sebastian Dröge <sebast...@centricular.com>
+
+       * libs/gst/base/gstaggregator.c:
+         aggregator: Wake up source pad in PAUSED<->PLAYING transitions
+         When going to PLAYING we will now have a clock and can stop waiting on
+         the condition variable and instead start waiting on the clock if
+         necessary for the current configuration.
+         In the other direction when going to PAUSED the clock might have
+         disappeared and we might need to wait on the condition variable again
+         instead.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/653>
+
+2020-08-24 11:59:51 +0300  Sebastian Dröge <sebast...@centricular.com>
+
+       * plugins/elements/gstinputselector.c:
+         input-selector: Wake up blocking pads when releasing them
+         Otherwise deactivating them will cause a deadlock as they're blocking
+         inside the streaming thread.
+         Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/601
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/652>
+
+2020-09-08 13:40:25 +0300  Sebastian Dröge <sebast...@centricular.com>
+
+       * libs/gst/helpers/meson.build:
+         ptp: Also handle gnu/kfreebsd
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/651>
+
+2020-09-08 17:44:00 +0100  Tim-Philipp Müller <t...@centricular.com>
+
+       * meson.build:
+         Back to development
+
 === release 1.18.0 ===
 
 2020-09-08 00:01:33 +0100  Tim-Philipp Müller <t...@centricular.com>
 
+       * .gitlab-ci.yml:
        * ChangeLog:
        * NEWS:
        * README:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.18.0/NEWS new/gstreamer-1.18.1/NEWS
--- old/gstreamer-1.18.0/NEWS   2020-09-08 01:01:36.027851000 +0200
+++ new/gstreamer-1.18.1/NEWS   2020-10-26 12:08:38.343754000 +0100
@@ -1,11 +1,14 @@
 GStreamer 1.18 Release Notes
 
-GStreamer 1.18.0 was originally released on 7 September 2020.
+GStreamer 1.18.0 was originally released on 8 September 2020.
+
+The latest bug-fix release in the 1.18 series is 1.18.1 and was released
+on 26 October 2020.
 
 See https://gstreamer.freedesktop.org/releases/1.18/ for the latest
 version of this document.
 
-Last updated: Monday 7 September 2020, 10:30 UTC (log)
+Last updated: Monday 26 October 2020, 11:00 UTC (log)
 
 Introduction
 
@@ -28,7 +31,8 @@
 
 -   Active Format Description (AFD) and Bar Data support
 
--   ONVIF trick modes support in both GStreamer RTSP server and client
+-   RTSP server and client implementations gained ONVIF trick modes
+    support
 
 -   Hardware-accelerated video decoding on Windows via DXVA2 /
     Direct3D11
@@ -39,24 +43,25 @@
 -   qmlgloverlay: New overlay element that renders a QtQuick scene over
     the top of an input video stream
 
--   New imagesequencesrc element to easily create a video stream from a
+-   imagesequencesrc: New element to easily create a video stream from a
     sequence of jpeg or png images
 
--   dashsink: Add new sink to produce DASH content
+-   dashsink: New sink to produce DASH content
 
--   dvbsubenc: DVB Subtitle encoder element
+-   dvbsubenc: New DVB Subtitle encoder element
 
--   TV broadcast compliant MPEG-TS muxing with constant bitrate muxing
-    and SCTE-35 support
+-   MPEG-TS muxing now also supports TV broadcast compliant muxing with
+    constant bitrate muxing and SCTE-35 support
 
--   rtmp2: new RTMP client source and sink element implementation
+-   rtmp2: New RTMP client source and sink element from-scratch
+    implementation
 
--   svthevcenc: new SVT-HEVC-based H.265 video encoder
+-   svthevcenc: New SVT-HEVC-based H.265 video encoder
 
--   vaapioverlay compositor element using VA-API
+-   vaapioverlay: New compositor element using VA-API
 
--   rtpmanager support for Google’s Transport-Wide Congestion Control
-    (twcc) RTP extension
+-   rtpmanager gained support for Google’s Transport-Wide Congestion
+    Control (twcc) RTP extension
 
 -   splitmuxsink and splitmuxsrc gained support for auxiliary video
     streams
@@ -64,18 +69,18 @@
 -   webrtcbin now contains some initial support for renegotiation
     involving stream addition and removal
 
--   New RTP source and sink elements to easily set up RTP streaming via
-    rtp:// URIs
+-   RTP support was enhanced with new RTP source and sink elements to
+    easily set up RTP streaming via rtp:// URIs
 
--   New Audio Video Transport Protocol (AVTP) plugin for Time-Sensitive
-    Applications
+-   avtp: New Audio Video Transport Protocol (AVTP) plugin for
+    Time-Sensitive Applications
 
 -   Support for the Video Services Forum’s Reliable Internet Stream
     Transport (RIST) TR-06-1 Simple Profile
 
 -   Universal Windows Platform (UWP) support
 
--   rpicamsrc element for capturing from the Raspberry Pi camera
+-   rpicamsrc: New element for capturing from the Raspberry Pi camera
 
 -   RTSP Server TCP interleaved backpressure handling improvements as
     well as support for Scale/Speed headers
@@ -2179,7 +2184,208 @@
 
 1.18.0
 
-1.18.0 was released on 7 September 2020.
+1.18.0 was released on 8 September 2020.
+
+1.18.1
+
+The first 1.18 bug-fix release (1.18.1) was released on 26 October 2020.
+
+This release only contains bugfixes and it should be safe to update from
+1.18.0.
+
+Highlighted bugfixes in 1.18.1
+
+-   important security fixes
+-   bug fixes and memory leak fixes
+-   various stability and reliability improvements
+
+gstreamer
+
+-   aggregator: make peek() has() pop() drop() buffer API threadsafe
+-   gstvalue: don’t write to const char *
+-   meson: Disallow DbgHelp for UWP build
+-   info: Fix build on Windows ARM64 device
+-   build: use cpu_family for arch checks
+-   basetransform: Fix in/outbuf confusion of _default_transform_meta
+-   Fix documentation
+-   info: Load DbgHelp.dll using g_module_open()
+-   padtemplate: mark documentation caps as may be leaked
+-   gstmeta: intern registered impl string
+-   aggregator: Hold SRC_LOCK while unblocking via SRC_BROADCAST()
+-   ptp_helper_post_install.sh: deal with none
+-   skip elements/leak.c if tracer is not available
+-   aggregator: Wake up source pad in PAUSED<->PLAYING transitions
+-   input-selector: Wake up blocking pads when releasing them
+-   ptp: Also handle gnu/kfreebsd
+
+gst-plugins-base
+
+-   theoradec: Set telemetry options only if they are nonzero
+-   glslstage: delete shader on finalize of stage
+-   urisourcebin: Fix crash caused by use after free
+-   decodebin3: Store stream-start event on output pad before exposing
+    it
+-   Add some missing nullable annotations
+-   typefind/xdgmime: Validate mimetypes to be valid GstStructure names
+    before using them
+-   uridecodebin3: Forward upstream events to decodebin3 directly
+-   video-converter: Add fast paths from v210 to I420/YV12, Y42B, UYVY
+    and YUY2
+-   videoaggregator: Limit accepted caps by template caps
+-   gstrtpbuffer: fix header extension length validation
+-   decodebin3: only force streams-selected seqnum after a
+    select-streams
+-   videodecoder: don’t copy interlace-mode from reference state
+-   enable abi checks
+-   multihandlesink: Don’t pass NULL caps to gst_caps_is_equal
+-   audio: video: Fix in/outbuf confusion of transform_meta
+-   meson: Always wrap “prefix” option with join_paths() to make Windows
+    happy
+-   videoaggregator: ensure peek_next_sample() uses the correct caps
+-   meson: Actually build gstgl without implicit include dirs
+-   videoaggregator: Don’t require any pads to be configured for
+    negotiating source pad caps
+-   gst-libs: gl: Fix documentation typo and clarify
+    gl_memory_texsubimage
+-   audioaggregator: Reset offset if the output rate is renegotiated
+-   video-anc: Implement transform functions for AFD/Bar metas
+-   appsrc: Wake up the create() function on caps changes
+-   rtpbasepayload: do not forget delayed segment when forwarding gaps
+
+gst-plugins-good
+
+-   v4l2object: Only offer inactive pools and if needed
+-   vpx: Fix the check to unfixed/unknown framerate to set bitrate
+-   qmlglsink: fix crash when created/destroyed in quick succession
+-   rtputils: Count metas with an empty tag list for copying/keeping
+-   rtpbin: Remove the rtpjitterbuffer with the stream
+-   rtph26*depay: drop FU’s without a corresponding start bit
+-   imagefreeze: Response caps query from srcpad
+-   rtpmp4gdepay: Allow lower-case “aac-hbr” instead of correct
+    “AAC-hbr”
+-   rtspsrc: Fix push-backchannel-buffer parameter mismatch
+-   jpegdec: check buffer size before dereferencing
+-   flvmux: Move stream skipping to GstAggregatorPadClass.skip_buffer
+-   v4l2object: plug memory leak
+-   splitmuxsink: fix sink pad release while PLAYING
+
+gst-plugins-bad
+
+-   codecparsers: h264parser: guard against ref_pic_markings overflow
+-   v4l2codecs: Various fixes
+-   h265parse: Don’t enable passthrough by default
+-   srt: Fix “Fix timestamping”
+-   srt: Fixes for 1.4.2
+-   dtlsconnection: Ignore OpenSSL system call errors
+-   h265parse: set interlace-mode=interleaved on interlaced content
+-   Replace GPL v2 with LGPL v2 in COPYING file
+-   srt: Consume the error from gst_srt_object_write
+-   srt: Check socket state before retrieving payload size
+-   x265enc: fix deadlock on reconfig
+-   webrtc: Require gstreamer-sdp in the pkg-config file
+-   srtsrc: Fix timestamping
+-   mfvideosrc: Use only the first video stream per device
+-   srtobject: typecast SRTO_LINGER to linger
+-   decklink: Correctly order the different dependent mode tables
+-   wasapisrc: Make sure that wasapisrc produces data in loopback mode
+-   wpesrc: fix some caps leaks using the non-GL output
+-   smoothstreaming: clear live adapter on seek
+-   vtdec/vulkan: use Shared storage mode for IOSurface textures
+-   wpe: Move webview load waiting to WPEView
+-   wpe: Use proper callback for TLS errors signal handling
+-   kmssink: Do not source using padded width/height
+-   avtp: avtpaafdepay: fix crash when building caps
+-   opencv: set opencv_dep when option is disabled to fix the build
+-   line21encoder: miscellaneous enhancements
+-   Hls youtube issues with urisourcebin/queue2
+-   rtmp2: Replace stats queue with stats lock
+-   rtmp2sink: support EOS event for graceful connection shutdown
+-   mpegtsmux: Make handling of sinkpads thread-safe
+-   hlssink2: Actually release splitmuxsink’s pads
+-   mpegtsmux: Don’t create streams with reserved PID
+
+gst-plugins-ugly
+
+-   no changes
+
+gst-libav
+
+-   avaudenc/avvidenc: Reopen encoding session if it’s required
+-   avauddec/audenc/videnc: Don’t return GST_FLOW_EOS when draining
+-   avauddec/avviddec: Avoid dropping non-OK flow return
+-   avcodecmap: Enable 24 bit WMA Lossless decoding
+
+gst-rtsp-server
+
+-   rtsp-stream: collect rtp info when blocking
+-   rtsp-media: set a 0 storage size for TCP receivers
+-   rtsp-stream: preroll on gap events
+-   rtsp-media: do not unblock on unsuspend
+
+gstreamer-vaapi
+
+-   decoder: don’t reply src caps query with allowed if pad is fixed
+-   plugins: decode: fix a DMA caps typo in ensure_allowed_srcpad_caps
+
+gstreamer-sharp
+
+-   Add bindings for some missing 1.18 API
+
+gst-omx
+
+-   omxvideodec: support interlace-mode=interleaved input
+
+gst-python
+
+-   no changes
+
+gst-editing-services
+
+-   ges: Do not recreate auto-transitions when changing clip assets
+-   ges: Fix a copy/paste mistake in meson file
+
+gst-integration-testsuites
+
+-   medias: Update for h265parse passthrough behavior change
+-   update validate.test.h265parse.alternate test
+
+gst-build
+
+-   windows: Detect Strawberry Perl and error out early
+-   {pygobject,pycairo}.wrap: point to stable refs
+
+Cerbero build tool and packaging changes in 1.18.1
+
+-   Add macOS Big Sur support
+-   gst-plugins-bad: Ship rtpmanagerbad plugin
+-   gstreamer-1.0: Don’t enable DbgHelp for UWP build
+-   pango: fix font corruption on windows
+-   cairo: use thread local storage to grant one windows HDC per thread
+-   small fixes for Xcode 12
+-   cerbero: Re-add alsa-devel to bootstrap on Linux
+-   FreeType: update to 2.10.4 to fix security vulnerability
+
+Contributors to 1.18.1
+
+Aaron Boxer, Adam Williamson, Andrew Wesie, Arun Raghavan, Bastien
+Reboulet, Brent Gardner, Edward Hervey, François Laignel, Guillaume
+Desmottes, Havard Graff, He Junyan, Hosang Lee, Jacek Tomaszewski, Jakub
+Adam, Jan Alexander Steffens (heftig), Jan Schmidt, Jérôme Laheurte,
+Jordan Petridis, Marc Leeman, Marian Cichy, Marijn Suijten, Mathieu
+Duponchelle, Matthew Waters, Michael Tretter, Nazar Mokrynskyi, Nicolas
+Dufresne, Niklas Hambüchen, Nirbheek Chauhan, Olivier Crête, Philippe
+Normand, raghavendra, Ricky Tang, Sebastian Dröge, Seungha Yang,
+sohwan.park, Stéphane Cerveau, Thibault Saunier, Tim-Philipp Müller, Tom
+Schoonjans, Víctor Manuel Jáquez Leal, Will Miller, Xavier Claessens, Xℹ
+Ruoyao, Zebediah Figura,
+
+… 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.1
+
+-   List of Merge Requests applied in 1.18.1
+-   List of Issues fixed in 1.18.1
 
 Schedule for 1.20
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.18.0/RELEASE new/gstreamer-1.18.1/RELEASE
--- old/gstreamer-1.18.0/RELEASE        2020-09-08 01:01:36.027851000 +0200
+++ new/gstreamer-1.18.1/RELEASE        2020-10-26 12:08:38.343754000 +0100
@@ -1,4 +1,4 @@
-This is GStreamer core 1.18.0.
+This is GStreamer core 1.18.1.
 
 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.18.0/gst/gstinfo.c 
new/gstreamer-1.18.1/gst/gstinfo.c
--- old/gstreamer-1.18.0/gst/gstinfo.c  2020-09-08 01:01:36.047851000 +0200
+++ new/gstreamer-1.18.1/gst/gstinfo.c  2020-10-26 12:08:38.367754000 +0100
@@ -156,9 +156,10 @@
 #endif /* HAVE_BACKTRACE */
 
 #ifdef HAVE_DBGHELP
-#include <Windows.h>
+#include <windows.h>
 #include <dbghelp.h>
 #include <tlhelp32.h>
+#include <gmodule.h>
 #endif /* HAVE_DBGHELP */
 
 #ifdef G_OS_WIN32
@@ -2958,19 +2959,91 @@
 #endif /* HAVE_BACKTRACE */
 
 #ifdef HAVE_DBGHELP
-static void
+/* *INDENT-OFF* */
+static struct
+{
+  DWORD (WINAPI * pSymSetOptions) (DWORD SymOptions);
+  BOOL  (WINAPI * pSymInitialize) (HANDLE hProcess,
+                                   PCSTR UserSearchPath,
+                                   BOOL fInvadeProcess);
+  BOOL  (WINAPI * pStackWalk64)   (DWORD MachineType,
+                                   HANDLE hProcess,
+                                   HANDLE hThread,
+                                   LPSTACKFRAME64 StackFrame,
+                                   PVOID ContextRecord,
+                                   PREAD_PROCESS_MEMORY_ROUTINE64 
ReadMemoryRoutine,
+                                   PFUNCTION_TABLE_ACCESS_ROUTINE64 
FunctionTableAccessRoutine,
+                                   PGET_MODULE_BASE_ROUTINE64 
GetModuleBaseRoutine,
+                                   PTRANSLATE_ADDRESS_ROUTINE64 
TranslateAddress);
+  PVOID (WINAPI * pSymFunctionTableAccess64) (HANDLE hProcess,
+                                              DWORD64 AddrBase);
+  DWORD64 (WINAPI * pSymGetModuleBase64) (HANDLE hProcess,
+                                          DWORD64 qwAddr);
+  BOOL (WINAPI * pSymFromAddr) (HANDLE hProcess,
+                                DWORD64 Address,
+                                PDWORD64 Displacement,
+                                PSYMBOL_INFO Symbol);
+  BOOL (WINAPI * pSymGetModuleInfo64) (HANDLE hProcess,
+                                       DWORD64 qwAddr,
+                                       PIMAGEHLP_MODULE64 ModuleInfo);
+  BOOL (WINAPI * pSymGetLineFromAddr64) (HANDLE hProcess,
+                                         DWORD64 qwAddr,
+                                         PDWORD pdwDisplacement,
+                                         PIMAGEHLP_LINE64 Line64);
+} dbg_help_vtable = { NULL,};
+/* *INDENT-ON* */
+
+static GModule *dbg_help_module = NULL;
+
+static gboolean
+dbghelp_load_symbol (const gchar * symbol_name, gpointer * symbol)
+{
+  if (dbg_help_module &&
+      !g_module_symbol (dbg_help_module, symbol_name, symbol)) {
+    GST_WARNING ("Cannot load %s symbol", symbol_name);
+    g_module_close (dbg_help_module);
+    dbg_help_module = NULL;
+  }
+
+  return ! !dbg_help_module;
+}
+
+static gboolean
 dbghelp_initialize_symbols (HANDLE process)
 {
   static gsize initialization_value = 0;
 
   if (g_once_init_enter (&initialization_value)) {
     GST_INFO ("Initializing Windows symbol handler");
-    SymSetOptions (SYMOPT_LOAD_LINES);
-    SymInitialize (process, NULL, TRUE);
-    GST_INFO ("Initialized Windows symbol handler");
+
+    dbg_help_module = g_module_open ("dbghelp.dll", G_MODULE_BIND_LAZY);
+    dbghelp_load_symbol ("SymSetOptions",
+        (gpointer *) & dbg_help_vtable.pSymSetOptions);
+    dbghelp_load_symbol ("SymInitialize",
+        (gpointer *) & dbg_help_vtable.pSymInitialize);
+    dbghelp_load_symbol ("StackWalk64",
+        (gpointer *) & dbg_help_vtable.pStackWalk64);
+    dbghelp_load_symbol ("SymFunctionTableAccess64",
+        (gpointer *) & dbg_help_vtable.pSymFunctionTableAccess64);
+    dbghelp_load_symbol ("SymGetModuleBase64",
+        (gpointer *) & dbg_help_vtable.pSymGetModuleBase64);
+    dbghelp_load_symbol ("SymFromAddr",
+        (gpointer *) & dbg_help_vtable.pSymFromAddr);
+    dbghelp_load_symbol ("SymGetModuleInfo64",
+        (gpointer *) & dbg_help_vtable.pSymGetModuleInfo64);
+    dbghelp_load_symbol ("SymGetLineFromAddr64",
+        (gpointer *) & dbg_help_vtable.pSymGetLineFromAddr64);
+
+    if (dbg_help_module) {
+      dbg_help_vtable.pSymSetOptions (SYMOPT_LOAD_LINES);
+      dbg_help_vtable.pSymInitialize (process, NULL, TRUE);
+      GST_INFO ("Initialized Windows symbol handler");
+    }
 
     g_once_init_leave (&initialization_value, 1);
   }
+
+  return ! !dbg_help_module;
 }
 
 static gchar *
@@ -2983,9 +3056,10 @@
   CONTEXT context;
   STACKFRAME64 frame = { 0 };
   PVOID save_context;
-  GString *trace = g_string_new (NULL);
+  GString *trace = NULL;
 
-  dbghelp_initialize_symbols (process);
+  if (!dbghelp_initialize_symbols (process))
+    return NULL;
 
   memset (&context, 0, sizeof (CONTEXT));
   context.ContextFlags = CONTEXT_FULL;
@@ -3007,9 +3081,11 @@
   frame.AddrPC.Offset = context.Rip;
   frame.AddrStack.Offset = context.Rsp;
 #else
-  goto done;
+  return NULL;
 #endif
 
+  trace = g_string_new (NULL);
+
   module_info.SizeOfStruct = sizeof (module_info);
   save_context = (machine == IMAGE_FILE_MACHINE_I386) ? NULL : &context;
 
@@ -3024,19 +3100,23 @@
 
     line.SizeOfStruct = sizeof (line);
 
-    if (!StackWalk64 (machine, process, thread, &frame, save_context, 0,
-            SymFunctionTableAccess64, SymGetModuleBase64, 0))
+    if (!dbg_help_vtable.pStackWalk64 (machine, process, thread, &frame,
+            save_context, 0, dbg_help_vtable.pSymFunctionTableAccess64,
+            dbg_help_vtable.pSymGetModuleBase64, 0)) {
       break;
+    }
 
-    if (SymFromAddr (process, frame.AddrPC.Offset, 0, symbol))
+    if (dbg_help_vtable.pSymFromAddr (process, frame.AddrPC.Offset, 0, symbol))
       g_string_append_printf (trace, "%s ", symbol->Name);
     else
       g_string_append (trace, "?? ");
 
-    if (SymGetLineFromAddr64 (process, frame.AddrPC.Offset, &displacement,
-            &line))
-      g_string_append_printf (trace, "(%s:%u)", line.FileName, 
line.LineNumber);
-    else if (SymGetModuleInfo64 (process, frame.AddrPC.Offset, &module_info))
+    if (dbg_help_vtable.pSymGetLineFromAddr64 (process, frame.AddrPC.Offset,
+            &displacement, &line))
+      g_string_append_printf (trace, "(%s:%lu)", line.FileName,
+          line.LineNumber);
+    else if (dbg_help_vtable.pSymGetModuleInfo64 (process, frame.AddrPC.Offset,
+            &module_info))
       g_string_append_printf (trace, "(%s)", module_info.ImageName);
     else
       g_string_append_printf (trace, "(%s)", "??");
@@ -3044,7 +3124,6 @@
     g_string_append (trace, "\n");
   }
 
-done:
   return g_string_free (trace, FALSE);
 }
 #endif /* HAVE_DBGHELP */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.18.0/gst/gstmeta.c 
new/gstreamer-1.18.1/gst/gstmeta.c
--- old/gstreamer-1.18.0/gst/gstmeta.c  2020-09-08 01:01:36.047851000 +0200
+++ new/gstreamer-1.18.1/gst/gstmeta.c  2020-10-26 12:08:38.367754000 +0100
@@ -198,7 +198,8 @@
       g_type_name (api), size);
 
   g_rw_lock_writer_lock (&lock);
-  g_hash_table_insert (metainfo, (gpointer) impl, (gpointer) info);
+  g_hash_table_insert (metainfo, (gpointer) g_intern_string (impl),
+      (gpointer) info);
   g_rw_lock_writer_unlock (&lock);
 
   return info;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.18.0/gst/gstpadtemplate.c 
new/gstreamer-1.18.1/gst/gstpadtemplate.c
--- old/gstreamer-1.18.0/gst/gstpadtemplate.c   2020-09-08 01:01:36.051851000 
+0200
+++ new/gstreamer-1.18.1/gst/gstpadtemplate.c   2020-10-26 12:08:38.367754000 
+0100
@@ -483,7 +483,7 @@
 /**
  * gst_pad_template_set_documentation_caps:
  * @templ: the pad template to set documented capabilities on
- * @caps: the documented capabilities
+ * @caps: (transfer full): the documented capabilities
  *
  * Certain elements will dynamically construct the caps of their
  * pad templates. In order not to let environment-specific information
@@ -498,6 +498,8 @@
   g_return_if_fail (GST_IS_PAD_TEMPLATE (templ));
   g_return_if_fail (GST_IS_CAPS (caps));
 
+  if (caps)
+    GST_MINI_OBJECT_FLAG_SET (caps, GST_MINI_OBJECT_FLAG_MAY_BE_LEAKED);
   gst_caps_replace (&(((GstPadTemplate *) 
(templ))->ABI.abi.documentation_caps),
       caps);
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.18.0/gst/gstvalue.c 
new/gstreamer-1.18.1/gst/gstvalue.c
--- old/gstreamer-1.18.0/gst/gstvalue.c 2020-09-08 01:01:36.059851000 +0200
+++ new/gstreamer-1.18.1/gst/gstvalue.c 2020-10-26 12:08:38.375754000 +0100
@@ -2705,8 +2705,7 @@
       if (G_UNLIKELY (!_priv_gst_value_parse_string (s, &value_end, &s, TRUE)))
         return FALSE;
       /* Set NULL terminator for deserialization */
-      c = *value_end;
-      *value_end = '\0';
+      value_s = g_strndup (value_s, value_end - value_s);
 
       for (i = 0; i < G_N_ELEMENTS (try_types); i++) {
         g_value_init (value, try_types[i]);
@@ -2722,14 +2721,13 @@
                   (type != G_TYPE_STRING))))
         return FALSE;
       /* Set NULL terminator for deserialization */
-      c = *value_end;
-      *value_end = '\0';
+      value_s = g_strndup (value_s, value_end - value_s);
 
       ret = gst_value_deserialize (value, value_s);
       if (G_UNLIKELY (!ret))
         g_value_unset (value);
     }
-    *value_end = c;
+    g_free (value_s);
   }
 
   *after = s;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.18.0/gstreamer.doap 
new/gstreamer-1.18.1/gstreamer.doap
--- old/gstreamer-1.18.0/gstreamer.doap 2020-09-08 01:01:36.059851000 +0200
+++ new/gstreamer-1.18.1/gstreamer.doap 2020-10-26 12:08:38.379754000 +0100
@@ -40,6 +40,16 @@
 
  <release>
   <Version>
+   <revision>1.18.1</revision>
+   <branch>1.18</branch>
+   <name></name>
+   <created>2020-10-26</created>
+   <file-release 
rdf:resource="https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.18.1.tar.xz";
 />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
    <revision>1.18.0</revision>
    <branch>master</branch>
    <name></name>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.18.0/libs/gst/base/gstaggregator.c 
new/gstreamer-1.18.1/libs/gst/base/gstaggregator.c
--- old/gstreamer-1.18.0/libs/gst/base/gstaggregator.c  2020-09-08 
01:01:36.059851000 +0200
+++ new/gstreamer-1.18.1/libs/gst/base/gstaggregator.c  2020-10-26 
12:08:38.379754000 +0100
@@ -46,6 +46,24 @@
  *    has been taken with pop_buffer (), a new buffer can be queued
  *    on that pad.
  *
+ *  * When gst_aggregator_pad_peek_buffer() or gst_aggregator_pad_has_buffer()
+ *    are called, a reference is taken to the returned buffer, which stays
+ *    valid until either:
+ *
+ *      - gst_aggregator_pad_pop_buffer() is called, in which case the caller
+ *        is guaranteed that the buffer they receive is the same as the peeked
+ *        buffer.
+ *      - gst_aggregator_pad_drop_buffer() is called, in which case the caller
+ *        is guaranteed that the dropped buffer is the one that was peeked.
+ *      - the subclass implementation of #GstAggregatorClass.aggregate returns.
+ *
+ *    Subsequent calls to gst_aggregator_pad_peek_buffer() or
+ *    gst_aggregator_pad_has_buffer() return / check the same buffer that was
+ *    returned / checked, until one of the conditions listed above is met.
+ *
+ *    Subclasses are only allowed to call these methods from the aggregate
+ *    thread.
+ *
  *  * If the subclass wishes to push a buffer downstream in its aggregate
  *    implementation, it should do so through the
  *    gst_aggregator_finish_buffer() method. This method will take care
@@ -127,7 +145,7 @@
 static GstClockTime gst_aggregator_get_latency_unlocked (GstAggregator * self);
 
 static void gst_aggregator_pad_buffer_consumed (GstAggregatorPad * pad,
-    GstBuffer * buffer);
+    GstBuffer * buffer, gboolean dequeued);
 
 GST_DEBUG_CATEGORY_STATIC (aggregator_debug);
 #define GST_CAT_DEFAULT aggregator_debug
@@ -239,6 +257,7 @@
   GQueue data;                  /* buffers, events and queries */
   GstBuffer *clipped_buffer;
   guint num_buffers;
+  GstBuffer *peeked_buffer;
 
   /* used to track fill state of queues, only used with live-src and when
    * latency property is set to > 0 */
@@ -951,7 +970,8 @@
     if (GST_IS_BUFFER (item->data)
         && klass->skip_buffer (aggpad, agg, item->data)) {
       GST_LOG_OBJECT (aggpad, "Skipping %" GST_PTR_FORMAT, item->data);
-      gst_aggregator_pad_buffer_consumed (aggpad, GST_BUFFER (item->data));
+      gst_aggregator_pad_buffer_consumed (aggpad, GST_BUFFER (item->data),
+          TRUE);
       gst_buffer_unref (item->data);
       g_queue_delete_link (&aggpad->priv->data, item);
     } else {
@@ -966,6 +986,22 @@
   return TRUE;
 }
 
+static gboolean
+gst_aggregator_pad_reset_peeked_buffer (GstElement * self, GstPad * epad,
+    gpointer user_data)
+{
+  GstAggregatorPad *aggpad = (GstAggregatorPad *) epad;
+
+  PAD_LOCK (aggpad);
+
+  gst_buffer_replace (&aggpad->priv->peeked_buffer, NULL);
+
+  PAD_UNLOCK (aggpad);
+
+  return TRUE;
+}
+
+
 static void
 gst_aggregator_pad_set_flushing (GstAggregatorPad * aggpad,
     GstFlowReturn flow_return, gboolean full)
@@ -1300,8 +1336,11 @@
 
     /* Ensure we have buffers ready (either in clipped_buffer or at the head of
      * the queue */
-    if (!gst_aggregator_wait_and_check (self, &timeout))
+    if (!gst_aggregator_wait_and_check (self, &timeout)) {
+      gst_element_foreach_sink_pad (GST_ELEMENT_CAST (self),
+          gst_aggregator_pad_reset_peeked_buffer, NULL);
       continue;
+    }
 
     if (gst_pad_check_reconfigure (GST_AGGREGATOR_SRC_PAD (self))) {
       if (!gst_aggregator_negotiate_unlocked (self)) {
@@ -1319,6 +1358,9 @@
       flow_return = klass->aggregate (self, timeout);
     }
 
+    gst_element_foreach_sink_pad (GST_ELEMENT_CAST (self),
+        gst_aggregator_pad_reset_peeked_buffer, NULL);
+
     if (!priv->selected_samples_called_or_warned) {
       GST_FIXME_OBJECT (self,
           "Subclass should call gst_aggregator_selected_samples() from its "
@@ -1834,6 +1876,13 @@
       if (!gst_aggregator_start (self))
         goto error_start;
       break;
+    case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
+      /* Wake up any waiting as now we have a clock and can do
+       * proper waiting on the clock if necessary */
+      SRC_LOCK (self);
+      SRC_BROADCAST (self);
+      SRC_UNLOCK (self);
+      break;
     default:
       break;
   }
@@ -1851,6 +1900,13 @@
         GST_ERROR_OBJECT (self, "Subclass failed to stop.");
       }
       break;
+    case GST_STATE_CHANGE_PLAYING_TO_PAUSED:
+      /* Wake up any waiting as now clock might be gone and we might
+       * need to wait on the condition variable again */
+      SRC_LOCK (self);
+      SRC_BROADCAST (self);
+      SRC_UNLOCK (self);
+      break;
     default:
       break;
   }
@@ -3235,9 +3291,12 @@
 
 /* Must be called with the PAD_LOCK held */
 static void
-gst_aggregator_pad_buffer_consumed (GstAggregatorPad * pad, GstBuffer * buffer)
+gst_aggregator_pad_buffer_consumed (GstAggregatorPad * pad, GstBuffer * buffer,
+    gboolean dequeued)
 {
-  pad->priv->num_buffers--;
+  if (dequeued)
+    pad->priv->num_buffers--;
+
   if (buffer && pad->priv->emit_signals) {
     g_signal_emit (pad, gst_aggregator_pad_signals[PAD_SIGNAL_BUFFER_CONSUMED],
         0, buffer);
@@ -3278,7 +3337,7 @@
       buffer = aggclass->clip (self, pad, buffer);
 
       if (buffer == NULL) {
-        gst_aggregator_pad_buffer_consumed (pad, buffer);
+        gst_aggregator_pad_buffer_consumed (pad, buffer, TRUE);
         GST_TRACE_OBJECT (pad, "Clipping consumed the buffer");
       }
     }
@@ -3302,22 +3361,44 @@
 GstBuffer *
 gst_aggregator_pad_pop_buffer (GstAggregatorPad * pad)
 {
-  GstBuffer *buffer;
+  GstBuffer *buffer = NULL;
 
   PAD_LOCK (pad);
 
-  if (pad->priv->flow_return != GST_FLOW_OK) {
-    PAD_UNLOCK (pad);
-    return NULL;
+  /* If the subclass has already peeked a buffer, we guarantee
+   * that it receives the same buffer, no matter if the pad has
+   * errored out / been flushed in the meantime.
+   */
+  if (pad->priv->peeked_buffer) {
+    buffer = pad->priv->peeked_buffer;
+    goto done;
   }
 
-  gst_aggregator_pad_clip_buffer_unlocked (pad);
+  if (pad->priv->flow_return != GST_FLOW_OK)
+    goto done;
 
+  gst_aggregator_pad_clip_buffer_unlocked (pad);
   buffer = pad->priv->clipped_buffer;
 
+done:
   if (buffer) {
-    pad->priv->clipped_buffer = NULL;
-    gst_aggregator_pad_buffer_consumed (pad, buffer);
+    if (pad->priv->clipped_buffer != NULL) {
+      /* Here we still hold a reference to both the clipped buffer
+       * and possibly the peeked buffer, we transfer the first and
+       * potentially release the second
+       */
+      gst_aggregator_pad_buffer_consumed (pad, buffer, TRUE);
+      pad->priv->clipped_buffer = NULL;
+      gst_buffer_replace (&pad->priv->peeked_buffer, NULL);
+    } else {
+      /* Here our clipped buffer has already been released, for
+       * example because of a flush. We thus transfer the reference
+       * to the peeked buffer to the caller, and we don't decrement
+       * pad.num_buffers as it has already been done elsewhere
+       */
+      gst_aggregator_pad_buffer_consumed (pad, buffer, FALSE);
+      pad->priv->peeked_buffer = NULL;
+    }
     GST_DEBUG_OBJECT (pad, "Consumed: %" GST_PTR_FORMAT, buffer);
   }
 
@@ -3359,24 +3440,29 @@
 GstBuffer *
 gst_aggregator_pad_peek_buffer (GstAggregatorPad * pad)
 {
-  GstBuffer *buffer;
+  GstBuffer *buffer = NULL;
 
   PAD_LOCK (pad);
 
-  if (pad->priv->flow_return != GST_FLOW_OK) {
-    PAD_UNLOCK (pad);
-    return NULL;
+  if (pad->priv->peeked_buffer) {
+    buffer = gst_buffer_ref (pad->priv->peeked_buffer);
+    goto done;
   }
 
+  if (pad->priv->flow_return != GST_FLOW_OK)
+    goto done;
+
   gst_aggregator_pad_clip_buffer_unlocked (pad);
 
   if (pad->priv->clipped_buffer) {
     buffer = gst_buffer_ref (pad->priv->clipped_buffer);
+    pad->priv->peeked_buffer = gst_buffer_ref (buffer);
   } else {
     buffer = NULL;
   }
-  PAD_UNLOCK (pad);
 
+done:
+  PAD_UNLOCK (pad);
   return buffer;
 }
 
@@ -3398,8 +3484,15 @@
   gboolean has_buffer;
 
   PAD_LOCK (pad);
-  gst_aggregator_pad_clip_buffer_unlocked (pad);
-  has_buffer = (pad->priv->clipped_buffer != NULL);
+
+  if (pad->priv->peeked_buffer) {
+    has_buffer = TRUE;
+  } else {
+    gst_aggregator_pad_clip_buffer_unlocked (pad);
+    has_buffer = (pad->priv->clipped_buffer != NULL);
+    if (has_buffer)
+      pad->priv->peeked_buffer = gst_buffer_ref (pad->priv->clipped_buffer);
+  }
   PAD_UNLOCK (pad);
 
   return has_buffer;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.18.0/libs/gst/base/gstbasetransform.c 
new/gstreamer-1.18.1/libs/gst/base/gstbasetransform.c
--- old/gstreamer-1.18.0/libs/gst/base/gstbasetransform.c       2020-09-08 
01:01:36.063850900 +0200
+++ new/gstreamer-1.18.1/libs/gst/base/gstbasetransform.c       2020-10-26 
12:08:38.383754000 +0100
@@ -306,7 +306,7 @@
     GstBuffer * inbuf, GstBuffer * outbuf);
 static gboolean
 gst_base_transform_default_transform_meta (GstBaseTransform * trans,
-    GstBuffer * inbuf, GstMeta * meta, GstBuffer * outbuf);
+    GstBuffer * outbuf, GstMeta * meta, GstBuffer * inbuf);
 
 /* static guint gst_base_transform_signals[LAST_SIGNAL] = { 0 }; */
 
@@ -502,7 +502,7 @@
 
 static gboolean
 gst_base_transform_default_transform_meta (GstBaseTransform * trans,
-    GstBuffer * inbuf, GstMeta * meta, GstBuffer * outbuf)
+    GstBuffer * outbuf, GstMeta * meta, GstBuffer * inbuf)
 {
   const GstMetaInfo *info = meta->info;
   const gchar *const *tags;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.18.0/libs/gst/helpers/meson.build 
new/gstreamer-1.18.1/libs/gst/helpers/meson.build
--- old/gstreamer-1.18.0/libs/gst/helpers/meson.build   2020-09-08 
01:01:36.071851000 +0200
+++ new/gstreamer-1.18.1/libs/gst/helpers/meson.build   2020-10-26 
12:08:38.391754200 +0100
@@ -29,7 +29,7 @@
   message('PTP not supported on Windows, not ported yet.')
 elif host_system == 'ios'
   message('PTP not supported on iOS because of permissions.')
-elif ['linux', 'darwin', 'netbsd', 'freebsd', 'openbsd', 'kfreebsd', 
'dragonfly', 'sunos', 'gnu'].contains(host_system)
+elif ['linux', 'darwin', 'netbsd', 'freebsd', 'openbsd', 'kfreebsd', 
'dragonfly', 'sunos', 'gnu', 'gnu/kfreebsd'].contains(host_system)
   message('PTP supported on ' + host_system + '.')
   have_ptp = true
 else
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gstreamer-1.18.0/libs/gst/helpers/ptp_helper_post_install.sh 
new/gstreamer-1.18.1/libs/gst/helpers/ptp_helper_post_install.sh
--- old/gstreamer-1.18.0/libs/gst/helpers/ptp_helper_post_install.sh    
2020-09-08 01:01:36.071851000 +0200
+++ new/gstreamer-1.18.1/libs/gst/helpers/ptp_helper_post_install.sh    
2020-10-26 12:08:38.391754200 +0100
@@ -20,6 +20,9 @@
     echo "Calling $setcap cap_net_bind_service,cap_net_admin+ep $ptp_helper"
     $setcap cap_net_bind_service,cap_net_admin+ep "$ptp_helper" || true
     ;;
+  none)
+    echo "No perms/caps to set for $ptp_helper"
+    ;;
   *)
     echo "$0 ERROR: unexpected permissions value 
'$with_ptp_helper_permissions'";
     exit 2;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.18.0/meson.build 
new/gstreamer-1.18.1/meson.build
--- old/gstreamer-1.18.0/meson.build    2020-09-08 01:01:36.071851000 +0200
+++ new/gstreamer-1.18.1/meson.build    2020-10-26 12:08:38.391754200 +0100
@@ -1,5 +1,5 @@
 project('gstreamer', 'c',
-  version : '1.18.0',
+  version : '1.18.1',
   meson_version : '>= 0.48',
   default_options : [ 'warning_level=1',
                       'buildtype=debugoptimized' ])
@@ -172,7 +172,7 @@
   [ 's390', 'HAVE_CPU_S390' ],
 ]
 foreach h : host_defines
-  if h.get(0) == host_machine.cpu()
+  if h.get(0) == host_machine.cpu_family()
     cdata.set(h.get(1), 1)
   endif
 endforeach
@@ -367,15 +367,32 @@
   platform_deps = [cc.find_library('ws2_32')]
 endif
 
+building_for_uwp = false
+if host_system == 'windows'
+  # Check whether we're building for UWP apps
+  code = '''
+  #include <windows.h>
+  #if !(WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) && 
!WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP))
+  #error "Not building for UWP"
+  #endif'''
+  if cc.compiles(code, name : 'building for UWP')
+    building_for_uwp = true
+  endif
+endif
+
 backtrace_deps = []
 unwind_dep = dependency('libunwind', required : get_option('libunwind'))
 dw_dep = dependency('libdw', required: get_option('libdw'))
-dbghelp_dep = dependency('DbgHelp', required : get_option('dbghelp'))
-backtrace_deps = [unwind_dep, dw_dep, dbghelp_dep]
+dbghelp_option = get_option('dbghelp')
+if dbghelp_option.enabled() and building_for_uwp
+  error('DbgHelp is not supported for UWP')
+endif
+have_dbghelp = cc.has_header('dbghelp.h', required: dbghelp_option) and 
cc.has_header('tlhelp32.h', required: dbghelp_option)
+backtrace_deps = [unwind_dep, dw_dep]
 backtrace_source_info = false
 backtrace_minimal = false
 # MSVC debug stack trace support
-if host_system == 'windows' and dbghelp_dep.found()
+if host_system == 'windows' and have_dbghelp and not building_for_uwp
   cdata.set('HAVE_DBGHELP', 1)
   backtrace_source_info = true
 # DWARF stack trace support with libunwind and elf-utils
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.18.0/plugins/elements/gstinputselector.c 
new/gstreamer-1.18.1/plugins/elements/gstinputselector.c
--- old/gstreamer-1.18.0/plugins/elements/gstinputselector.c    2020-09-08 
01:01:36.075851000 +0200
+++ new/gstreamer-1.18.1/plugins/elements/gstinputselector.c    2020-10-26 
12:08:38.395754000 +0100
@@ -1821,9 +1821,11 @@
 static void
 gst_input_selector_release_pad (GstElement * element, GstPad * pad)
 {
+  GstSelectorPad *selpad;
   GstInputSelector *sel;
 
   sel = GST_INPUT_SELECTOR (element);
+  selpad = GST_SELECTOR_PAD (pad);
   GST_LOG_OBJECT (sel, "Releasing pad %s:%s", GST_DEBUG_PAD_NAME (pad));
 
   GST_INPUT_SELECTOR_LOCK (sel);
@@ -1834,6 +1836,13 @@
     sel->active_sinkpad = NULL;
     sel->active_sinkpad_from_user = FALSE;
   }
+
+  /* wake up the pad if it's currently waiting for EOS or a running time to be
+   * reached. Otherwise we'll deadlock on the streaming thread further below
+   * when deactivating the pad. */
+  selpad->flushing = TRUE;
+  GST_INPUT_SELECTOR_BROADCAST (sel);
+
   sel->n_pads--;
   GST_INPUT_SELECTOR_UNLOCK (sel);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.18.0/po/gstreamer-1.0.pot 
new/gstreamer-1.18.1/po/gstreamer-1.0.pot
--- old/gstreamer-1.18.0/po/gstreamer-1.0.pot   2020-09-08 01:01:36.727849500 
+0200
+++ new/gstreamer-1.18.1/po/gstreamer-1.0.pot   2020-10-26 12:08:38.859754600 
+0100
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer-1.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-09-08 00:01+0100\n"
+"POT-Creation-Date: 2020-10-26 11:08+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.0/tests/check/libs/aggregator.c 
new/gstreamer-1.18.1/tests/check/libs/aggregator.c
--- old/gstreamer-1.18.0/tests/check/libs/aggregator.c  2020-09-08 
01:01:36.099851000 +0200
+++ new/gstreamer-1.18.1/tests/check/libs/aggregator.c  2020-10-26 
12:08:38.415754000 +0100
@@ -58,6 +58,7 @@
 
   guint64 timestamp;
   gboolean gap_expected;
+  gboolean do_flush_on_aggregate;
 };
 
 struct _GstTestAggregatorClass
@@ -100,7 +101,21 @@
           testagg->gap_expected = FALSE;
         }
 
-        gst_aggregator_pad_drop_buffer (pad);
+        if (testagg->do_flush_on_aggregate) {
+          GstBuffer *popped_buf;
+          buf = gst_aggregator_pad_peek_buffer (pad);
+
+          GST_DEBUG_OBJECT (pad, "Flushing on aggregate");
+
+          gst_pad_send_event (GST_PAD (pad), gst_event_new_flush_start ());
+          popped_buf = gst_aggregator_pad_pop_buffer (pad);
+
+          fail_unless (buf == popped_buf);
+          gst_buffer_unref (buf);
+          gst_buffer_unref (popped_buf);
+        } else {
+          gst_aggregator_pad_drop_buffer (pad);
+        }
 
         g_value_reset (&value);
         break;
@@ -1259,6 +1274,37 @@
 
 GST_END_TEST;
 
+GST_START_TEST (test_flush_on_aggregate)
+{
+  GThread *thread1, *thread2;
+  ChainData data1 = { 0, };
+  ChainData data2 = { 0, };
+  TestData test = { 0, };
+
+  _test_data_init (&test, FALSE);
+  ((GstTestAggregator *) test.aggregator)->do_flush_on_aggregate = TRUE;
+  _chain_data_init (&data1, test.aggregator, gst_buffer_new (), NULL);
+  _chain_data_init (&data2, test.aggregator, gst_buffer_new (), NULL);
+
+  thread1 = g_thread_try_new ("gst-check", push_data, &data1, NULL);
+  thread2 = g_thread_try_new ("gst-check", push_data, &data2, NULL);
+
+  g_main_loop_run (test.ml);
+  g_source_remove (test.timeout_id);
+
+  /* these will return immediately as when the data is popped the threads are
+   * unlocked and will terminate */
+  g_thread_join (thread1);
+  g_thread_join (thread2);
+
+  _chain_data_clear (&data1);
+  _chain_data_clear (&data2);
+  _test_data_clear (&test);
+}
+
+GST_END_TEST;
+
+
 static Suite *
 gst_aggregator_suite (void)
 {
@@ -1286,6 +1332,7 @@
   tcase_add_test (general, test_timeout_pipeline_with_wait);
   tcase_add_test (general, test_add_remove);
   tcase_add_test (general, test_change_state_intensive);
+  tcase_add_test (general, test_flush_on_aggregate);
 
   return suite;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gstreamer-1.18.0/tests/check/meson.build 
new/gstreamer-1.18.1/tests/check/meson.build
--- old/gstreamer-1.18.0/tests/check/meson.build        2020-09-08 
01:01:36.099851000 +0200
+++ new/gstreamer-1.18.1/tests/check/meson.build        2020-10-26 
12:08:38.419754000 +0100
@@ -88,7 +88,7 @@
   [ 'elements/filesrc.c', not gst_registry ],
   [ 'elements/funnel.c', not gst_registry ],
   [ 'elements/identity.c', not gst_registry or not gst_parse ],
-  [ 'elements/leaks.c' ],
+  [ 'elements/leaks.c', not tracer_hooks or not gst_debug ],
   [ 'elements/multiqueue.c', not gst_registry ],
   [ 'elements/selector.c', not gst_registry ],
   [ 'elements/streamiddemux.c', not gst_registry ],


Reply via email to