Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package gstreamer-plugins-good for 
openSUSE:Factory checked in at 2021-04-10 15:26:33
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gstreamer-plugins-good (Old)
 and      /work/SRC/openSUSE:Factory/.gstreamer-plugins-good.new.2401 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gstreamer-plugins-good"

Sat Apr 10 15:26:33 2021 rev:76 rq:883603 version:1.18.4

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/gstreamer-plugins-good/gstreamer-plugins-good.changes
    2021-01-20 18:24:26.599353934 +0100
+++ 
/work/SRC/openSUSE:Factory/.gstreamer-plugins-good.new.2401/gstreamer-plugins-good.changes
  2021-04-10 15:27:16.566371312 +0200
@@ -1,0 +2,19 @@
+Tue Mar 30 08:55:20 UTC 2021 - Antonio Larrosa <alarr...@suse.com>
+
+- Update to version 1.18.4:
+  + matroskademux: header parsing fixes
+  + rpicamsrc: depend on posix threads and vchiq_arm to fix build
+    on raspios again
+  + wavenc: Fixed INFO chunk corruption, caused by odd sized data
+    not being padded
+  + wavpackdec: Add floating point format support to fix
+    distortions in some cases
+  + v4l2: recognize V4L2 bt601 colorimetry again
+  + v4l2videoenc: support resolution change stream encode
+  + v4l2h265codec: fix HEVC profile string issue
+  + v4l2object: Need keep same transfer as input caps
+  + v4l2videodec: Fix vp8 and vp9 streams can't play on board
+    with vendor bsp
+  + v4l2videodec: fix src side frame rate negotiation
+
+-------------------------------------------------------------------

Old:
----
  gst-plugins-good-1.18.3.tar.xz

New:
----
  gst-plugins-good-1.18.4.tar.xz

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

Other differences:
------------------
++++++ gstreamer-plugins-good.spec ++++++
--- /var/tmp/diff_new_pack.NrijM1/_old  2021-04-10 15:27:19.126374324 +0200
+++ /var/tmp/diff_new_pack.NrijM1/_new  2021-04-10 15:27:19.130374329 +0200
@@ -29,7 +29,7 @@
 %define ENABLE_EXPERIMENTAL 1
 
 Name:           gstreamer-plugins-good
-Version:        1.18.3
+Version:        1.18.4
 Release:        0
 Summary:        GStreamer Streaming-Media Framework Plug-Ins
 License:        LGPL-2.1-or-later

++++++ _service ++++++
--- /var/tmp/diff_new_pack.NrijM1/_old  2021-04-10 15:27:19.146374347 +0200
+++ /var/tmp/diff_new_pack.NrijM1/_new  2021-04-10 15:27:19.146374347 +0200
@@ -9,7 +9,7 @@
 <!--
     <param name="changesgenerate">enable</param>
 -->
-    <param name="revision">1.18.3</param>
+    <param name="revision">1.18.4</param>
     <param name="scm">git</param>
   </service>
   <service name="recompress" mode="disabled">

++++++ gst-plugins-good-1.18.3.tar.xz -> gst-plugins-good-1.18.4.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-good-1.18.3/ChangeLog 
new/gst-plugins-good-1.18.4/ChangeLog
--- old/gst-plugins-good-1.18.3/ChangeLog       2021-01-13 22:08:52.000000000 
+0100
+++ new/gst-plugins-good-1.18.4/ChangeLog       2021-03-15 18:48:29.000000000 
+0100
@@ -1,3 +1,147 @@
+=== release 1.18.4 ===
+
+2021-03-15 17:48:28 +0000  Tim-Philipp M??ller <t...@centricular.com>
+
+       * ChangeLog:
+       * NEWS:
+       * RELEASE:
+       * gst-plugins-good.doap:
+       * meson.build:
+         Release 1.18.4
+
+2021-03-04 13:05:19 +0200  Sebastian Dr??ge <sebast...@centricular.com>
+
+       * gst/matroska/matroska-demux.c:
+       * gst/matroska/matroska-ids.h:
+         matroskademux: Fix extraction of multichannel WavPack
+         The old code had a couple of issues that all lead to potential memory
+         safety bugs.
+         - Use a constant for the Wavpack4Header size instead of using sizeof.
+         It's written out into the data and not from the struct and who knows
+         what special alignment/padding requirements some C compilers have.
+         - gst_buffer_set_size() does not realloc the buffer when setting a
+         bigger size than allocated, it only allows growing up to the maximum
+         allocated size. Instead use a GstAdapter to collect all the blocks
+         and take out everything at once in the end.
+         - Check that enough data is actually available in the input and
+         otherwise handle it an error in all cases instead of silently
+         ignoring it.
+         Among other things this fixes out of bounds writes because the code
+         assumed gst_buffer_set_size() can grow the buffer and simply wrote 
after
+         the end of the buffer.
+         Thanks to Natalie Silvanovich for reporting.
+         Fixes 
https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/859
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/903>
+
+2021-03-03 11:31:52 +0200  Sebastian Dr??ge <sebast...@centricular.com>
+
+       * gst/matroska/matroska-demux.c:
+         matroskademux: Initialize track context out parameter to NULL before 
parsing
+         Various error return paths don't set it to NULL and callers are only
+         checking if the pointer is NULL. As it's allocated on the stack this
+         usually contains random stack memory, and more often than not the 
memory
+         of a previously parsed track.
+         This then causes all kinds of memory corruptions further down the 
line.
+         Thanks to Natalie Silvanovich for reporting.
+         Fixes 
https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/858
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/903>
+
+2021-01-18 15:54:43 +0100  Philipp Zabel <p.za...@pengutronix.de>
+
+       * sys/v4l2/gstv4l2object.c:
+         v4l2object: handle GST_VIDEO_TRANSFER_BT601
+         V4L2 makes no difference between the BT.601 and BT.709 transfer
+         functions [1], but GStreamer does since 1.18 [2].
+         Adapt gst_v4l2_object_get_colorspace() and
+         gst_v4l2_object_set_format_full().
+         [1] 
https://linuxtv.org/downloads/v4l-dvb-apis-new/userspace-api/v4l/colorspaces-details.html#colorspace-smpte-170m-v4l2-colorspace-smpte170m
+         [2] 
https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/724
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/900>
+
+2021-03-07 21:25:01 +0000  Vladimir Menshakov <vladimir.mensha...@gmail.com>
+
+       * docs/gst_plugins_cache.json:
+       * ext/wavpack/gstwavpackdec.c:
+       * ext/wavpack/gstwavpackdec.h:
+         wavpackdec: Add floating point format support
+         This commit negotiate F32 audio format if MODE_FLOAT used in wavpack 
file.
+         Wavpack float mode is always in 32-bit IEEE format.
+         The following pipeline plays distorted audio if source file is 
encoded in float mode:
+         gst-launch-1.0 filesrc ... ! wavpackparse ! wavpackdec ! pulsesink
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/896>
+
+2021-03-01 14:32:40 +0800  Hou Qi <qi....@nxp.com>
+
+       * sys/v4l2/gstv4l2videodec.c:
+         v4l2videodec: Do not expose profiles/levels in vp8/vp9 template caps
+         Vp8/vp9 supported profiles/levels are listed in decoder sink caps, but
+         there is no parser for these two formats and the demuxers also don't 
have
+         these information. It causes negotiation fail between demuxers and 
decoder
+         when check caps "accept = gst_caps_is_subset (caps, template_caps);".
+         To fix this, need to remove profiles/levels for vp8/vp9 formats in 
decoder
+         sink caps.
+         Fix #854
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/890>
+
+2021-02-24 13:25:43 +0100  Philipp Zabel <p.za...@pengutronix.de>
+
+       * sys/v4l2/gstv4l2videodec.c:
+         v4l2videodec: fix src side frame rate negotiation
+         Negotiating v4l2h264dec ! v4l2h264enc transcoding pipelines fails in
+         case the encoder does not accept framerate=(fraction)0/1.
+         The acquired caps used for downstream negotiation are determined from
+         gst_v4l2_object_acquire_format(), which sets the GstVideoInfo::fps_n
+         and ::fps_d fields to 0.
+         To fix this, copy the frame rate from the sink side.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/884>
+
+2021-02-16 16:20:05 +0200  Jordan Petridis <jpetri...@gnome.org>
+
+       * sys/rpicamsrc/meson.build:
+         rpicamsrc: depend on posix threads and vchiq_arm
+         Could only test on rpi 3b+
+         Close #839
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/883>
+
+2021-02-16 22:20:17 +1100  Ashley Brighthope <ashle...@reddegrees.com>
+
+       * gst/wavenc/gstwavenc.c:
+         wavenc: Fixed INFO chunk corruption, caused by odd sized data not 
being padded. Code style was updated.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/877>
+
+2021-02-04 13:43:17 +0800  Bing Song <bing.s...@nxp.com>
+
+       * sys/v4l2/gstv4l2videoenc.c:
+         v4l2videoenc: support resolution change stream encode.
+         Resolution change stream transcoding will drain before send new video
+         frame buffer. Need encode video frame after process EOS.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/872>
+
+2021-01-14 01:12:06 +0800  Bing Song <bing.s...@nxp.com>
+
+       * sys/v4l2/gstv4l2h265codec.c:
+         v4l2h265codec: fix HEVC profile string issue.
+         Keep HEVC profile compatible with other module.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/864>
+
+2020-12-15 10:41:40 +0800  Bing Song <bing.s...@nxp.com>
+
+       * sys/v4l2/gstv4l2object.c:
+       * sys/v4l2/gstv4l2object.h:
+         v4l2object: Need keep same transfer as input caps.
+         GST_VIDEO_TRANSFER_BT2020_12 and GST_VIDEO_TRANSFER_BT2020_10 will
+         be mapped to V4L2_XFER_FUNC_709. Need check input caps when map
+         V4L2_XFER_FUNC_709 back to GST_VIDEO_TRANSFER_BT2020_12 and
+         GST_VIDEO_TRANSFER_BT2020_10
+         Fixes: 
https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/816
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/861>
+
+2021-01-14 02:17:10 +0000  Tim-Philipp M??ller <t...@centricular.com>
+
+       * docs/gst_plugins_cache.json:
+       * meson.build:
+         Back to development
+
 === release 1.18.3 ===
 
 2021-01-13 21:08:50 +0000  Tim-Philipp M??ller <t...@centricular.com>
@@ -5,6 +149,7 @@
        * ChangeLog:
        * NEWS:
        * RELEASE:
+       * docs/gst_plugins_cache.json:
        * gst-plugins-good.doap:
        * meson.build:
          Release 1.18.3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-good-1.18.3/NEWS 
new/gst-plugins-good-1.18.4/NEWS
--- old/gst-plugins-good-1.18.3/NEWS    2021-01-13 22:08:52.000000000 +0100
+++ new/gst-plugins-good-1.18.4/NEWS    2021-03-15 18:48:29.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.3 and was released
-on 13 January 2021.
+The latest bug-fix release in the 1.18 series is 1.18.4 and was released
+on 15 March 2021.
 
 See https://gstreamer.freedesktop.org/releases/1.18/ for the latest
 version of this document.
 
-Last updated: Wednesday 13 January 2021, 20:00 UTC (log)
+Last updated: Monday 15 March 2021, 13:00 UTC (log)
 
 Introduction
 
@@ -2717,6 +2717,168 @@
 -   List of Merge Requests applied in 1.18.3
 -   List of Issues fixed in 1.18.3
 
+1.18.4
+
+The fourth 1.18 bug-fix release (1.18.4) was released on 15 March 2021.
+
+This release only contains bugfixes and security fixes and it should be
+safe to update from 1.18.x.
+
+Highlighted bugfixes in 1.18.4
+
+-   important security fixes for ID3 tag reading, matroska and realmedia
+    parsing, and gst-libav audio decoding
+-   audiomixer, audioaggregator: input buffer handling fixes
+-   decodebin3: improve stream-selection message handling
+-   uridecodebin3: make ???caps??? property work
+-   wavenc: fix writing of INFO chunks in some cases
+-   v4l2: bt601 colorimetry, allow encoder resolution changes, fix
+    decoder frame rate negotiation
+-   decklinkvideosink: fix auto format detection, and fixes for 29.97fps
+    framerate output
+-   mpeg-2 video handling fixes when seeking
+-   avviddec: fix bufferpool negotiation and possible memory corruption
+    when changing resolution
+-   various stability, performance and reliability improvements
+-   memory leak fixes
+-   build fixes: rpicamsrc, qt overlay example, d3d11videosink on UWP
+
+gstreamer
+
+-   info: Don???t leak log function user_data if the debug system is
+    compiled out
+-   task: Use SetThreadDescription() Win32 API for setting thread names,
+    which preserves thread names in dump files.
+-   buffer, memory: Mark info in map functions as caller-allocates and
+    pass allocation params as const pointers where possible
+-   clock: define AUTO_CLEANUP_FREE_FUNC for GstClockID
+
+gst-plugins-base
+
+-   tag: id3v2: fix frame size check and potential invalid reads
+-   audio: Fix gst_audio_buffer_truncate() meta handling for
+    non-interleaved audio
+-   audioresample: respect buffer layout when draining
+-   audioaggregator: fix input_buffer ownership
+-   decodebin3: change stream selection message owner, so that the app
+    sends the stream-selection event to the right element
+-   rtspconnection: correct data_size when tunneled mode
+-   uridecodebin3: make caps property work
+-   video-converter: Don???t upsample invalid lines
+-   videodecoder: Fix racy critical when pool negotiation occurs during
+    flush
+-   video: Convert gst_video_info_to_caps() to take self as const ptr
+-   examples: added qt core dependency for qt overlay example
+
+gst-plugins-good
+
+-   matroskademux: header parsing fixes
+-   rpicamsrc: depend on posix threads and vchiq_arm to fix build on
+    raspios again
+-   wavenc: Fixed INFO chunk corruption, caused by odd sized data not
+    being padded
+-   wavpackdec: Add floating point format support to fix distortions in
+    some cases
+-   v4l2: recognize V4L2 bt601 colorimetry again
+-   v4l2videoenc: support resolution change stream encode
+-   v4l2h265codec: fix HEVC profile string issue
+-   v4l2object: Need keep same transfer as input caps
+-   v4l2videodec: Fix vp8 and vp9 streams can???t play on board with
+    vendor bsp
+-   v4l2videodec: fix src side frame rate negotiation
+
+gst-plugins-bad
+
+-   avwait: Don???t post messages with the mutex locked
+-   d3d11h264dec: Reconfigure decoder object on DPB size change and keep
+    track of actually configured DPB size
+-   dashsink: fix double unref of sinkpad caps
+-   decklinkvideosink: Use correct numerator for 29.97fps
+-   decklinkvideosink: fix auto format detection
+-   decklinksrc: Use a more accurate capture time
+-   d3d11videosink: Fix build error on UWP
+-   interlace: negotiation and buffer leak fixes
+-   mpegvideoparse: do not clip, so decoder receives data from keyframe
+    even if it???s before the segment start
+-   mpegtsparse: Fix switched DTS/PTS when set-timestamps=false
+-   nvh264sldec: Reopen decoder object if larger DPB size is required
+-   sdpsrc: fix double free if sdp is provided as string via the
+    property
+-   vulkan: Fix elements long name.
+
+gst-plugins-ugly
+
+-   rmdemux: Make sure we have enough data available when parsing
+    audio/video packets
+
+gst-libav
+
+-   avviddec: take the maximum of the height/coded_height
+-   viddec: don???t configure an incorrect buffer pool when receiving a
+    gap event
+-   audiodec: fix stack overflow in gst_ffmpeg_channel_layout_to_gst()
+
+gst-rtsp-server
+
+-   rtspclientsink: fix deadlock on shutdown if no data has been
+    received yet
+-   rtspclientsink: fix leaks in unit tests
+-   rtsp-stream: avoid deadlock in send_func
+-   rtsp-client: cleanup transports during TEARDOWN
+
+gstreamer-vaapi
+
+-   h264 encoder: append encoder exposure to aud
+-   postproc: Fix a problem of propose_allocation when passthrough
+-   glx: Iterate over FBConfig and select 8 bit color size
+
+gstreamer-sharp
+
+-   no changes
+
+gst-omx
+
+-   no changes
+
+gst-python
+
+-   no changes
+
+gst-editing-services
+
+-   group: Use proper group constructor
+
+gst-integration-testsuites
+
+-   no changes
+
+gst-build
+
+-   no changes
+
+Cerbero build tool and packaging changes in 1.18.4
+
+-   macOS: more BigSur fixes
+-   glib: Backport patch to set thread names on Windows 10
+
+Contributors to 1.18.4
+
+Alicia Boya Garc??a, Ashley Brighthope, Bing Song, Branko Subasic, Edward
+Hervey, Guillaume Desmottes, Haihua Hu, He Junyan, Hou Qi, Jan Alexander
+Steffens (heftig), Jeongki Kim, Jordan Petridis, Knobe, Kristofer
+Bj??rkstr??m, Marijn Suijten, Matthew Waters, Paul Goulpi??, Philipp Zabel,
+Rafa?? Dzi??giel, Sebastian Dr??ge, Seungha Yang, Staz M, St??phane Cerveau,
+Thibault Saunier, Tim-Philipp M??ller, V??ctor Manuel J??quez Leal, Vivia
+Nikolaidou, Vladimir Menshakov,
+
+??? 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.4
+
+-   List of Merge Requests applied in 1.18.4
+-   List of Issues fixed in 1.18.4
+
 Schedule for 1.20
 
 Our next major feature release will be 1.20, and 1.19 will be the
@@ -2724,9 +2886,9 @@
 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
-January/February 2021, with the first 1.20 stable release hopefully
-around February/March 2021.
+is now expected that feature freeze will take place some time in April
+2021, with the first 1.20 stable release hopefully around April/May
+2021.
 
 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/gst-plugins-good-1.18.3/RELEASE 
new/gst-plugins-good-1.18.4/RELEASE
--- old/gst-plugins-good-1.18.3/RELEASE 2021-01-13 22:08:52.000000000 +0100
+++ new/gst-plugins-good-1.18.4/RELEASE 2021-03-15 18:48:29.000000000 +0100
@@ -1,4 +1,4 @@
-This is GStreamer gst-plugins-good 1.18.3.
+This is GStreamer gst-plugins-good 1.18.4.
 
 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/gst-plugins-good-1.18.3/docs/gst_plugins_cache.json 
new/gst-plugins-good-1.18.4/docs/gst_plugins_cache.json
--- old/gst-plugins-good-1.18.3/docs/gst_plugins_cache.json     2021-01-13 
22:08:52.000000000 +0100
+++ new/gst-plugins-good-1.18.4/docs/gst_plugins_cache.json     2021-03-15 
18:48:29.000000000 +0100
@@ -6595,7 +6595,7 @@
                         "construct": false,
                         "construct-only": false,
                         "controllable": false,
-                        "default": "GStreamer 1.18.3 FLV muxer",
+                        "default": "GStreamer 1.18.4 FLV muxer",
                         "mutable": "null",
                         "readable": true,
                         "type": "gchararray",
@@ -6607,7 +6607,7 @@
                         "construct": false,
                         "construct-only": false,
                         "controllable": false,
-                        "default": "GStreamer 1.18.3 FLV muxer",
+                        "default": "GStreamer 1.18.4 FLV muxer",
                         "mutable": "null",
                         "readable": true,
                         "type": "gchararray",
@@ -20636,7 +20636,7 @@
                         "construct": false,
                         "construct-only": false,
                         "controllable": false,
-                        "default": "GStreamer/1.18.3",
+                        "default": "GStreamer/1.18.4",
                         "mutable": "null",
                         "readable": true,
                         "type": "gchararray",
@@ -22593,7 +22593,7 @@
                         "construct": false,
                         "construct-only": false,
                         "controllable": false,
-                        "default": "GStreamer souphttpsrc 1.18.3 ",
+                        "default": "GStreamer souphttpsrc 1.18.4 ",
                         "mutable": "null",
                         "readable": true,
                         "type": "gchararray",
@@ -26817,7 +26817,7 @@
                         "presence": "always"
                     },
                     "src": {
-                        "caps": "audio/x-raw:\n         format: S8\n         
layout: interleaved\n       channels: [ 1, 8 ]\n           rate: [ 6000, 192000 
]\naudio/x-raw:\n         format: S16LE\n         layout: interleaved\n       
channels: [ 1, 8 ]\n           rate: [ 6000, 192000 ]\naudio/x-raw:\n         
format: S32LE\n         layout: interleaved\n       channels: [ 1, 8 ]\n        
   rate: [ 6000, 192000 ]\n",
+                        "caps": "audio/x-raw:\n         format: S8\n         
layout: interleaved\n       channels: [ 1, 8 ]\n           rate: [ 6000, 192000 
]\naudio/x-raw:\n         format: S16LE\n         layout: interleaved\n       
channels: [ 1, 8 ]\n           rate: [ 6000, 192000 ]\naudio/x-raw:\n         
format: S32LE\n         layout: interleaved\n       channels: [ 1, 8 ]\n        
   rate: [ 6000, 192000 ]\naudio/x-raw:\n         format: F32LE\n         
layout: interleaved\n       channels: [ 1, 8 ]\n           rate: [ 6000, 192000 
]\n",
                         "direction": "src",
                         "presence": "always"
                     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-good-1.18.3/ext/wavpack/gstwavpackdec.c 
new/gst-plugins-good-1.18.4/ext/wavpack/gstwavpackdec.c
--- old/gst-plugins-good-1.18.3/ext/wavpack/gstwavpackdec.c     2021-01-13 
22:08:52.000000000 +0100
+++ new/gst-plugins-good-1.18.4/ext/wavpack/gstwavpackdec.c     2021-03-15 
18:48:29.000000000 +0100
@@ -82,6 +82,10 @@
         "audio/x-raw, "
         "format = (string) " GST_AUDIO_NE (S32) ", "
         "layout = (string) interleaved, "
+        "channels = (int) [ 1, 8 ], " "rate = (int) [ 6000, 192000 ]; "
+        "audio/x-raw, "
+        "format = (string) " GST_AUDIO_NE (F32) ", "
+        "layout = (string) interleaved, "
         "channels = (int) [ 1, 8 ], " "rate = (int) [ 6000, 192000 ]")
     );
 
@@ -131,6 +135,7 @@
   dec->channel_mask = 0;
   dec->sample_rate = 0;
   dec->depth = 0;
+  dec->mode_float = FALSE;
 }
 
 static void
@@ -208,7 +213,9 @@
       break;
     case 24:
     case 32:
-      fmt = _GST_AUDIO_FORMAT_NE (S32);
+      fmt =
+          dec->mode_float ? _GST_AUDIO_FORMAT_NE (F32) :
+          _GST_AUDIO_FORMAT_NE (S32);
       dec->width = 32;
       break;
     default:
@@ -277,7 +284,8 @@
   WavpackHeader wph;
   int32_t decoded, unpacked_size;
   gboolean format_changed;
-  gint width, depth, i, j, max;
+  gint width, depth, i, j, max, wavpack_mode;
+  gboolean mode_float;
   gint32 *dec_data = NULL;
   guint8 *out_data;
   GstMapInfo map, omap;
@@ -323,10 +331,14 @@
 
   g_assert (dec->context != NULL);
 
+  wavpack_mode = WavpackGetMode (dec->context);
+  mode_float = (wavpack_mode & MODE_FLOAT) == MODE_FLOAT;
+
   format_changed =
       (dec->sample_rate != WavpackGetSampleRate (dec->context)) ||
       (dec->channels != WavpackGetNumChannels (dec->context)) ||
       (dec->depth != WavpackGetBytesPerSample (dec->context) * 8) ||
+      (dec->mode_float != mode_float) ||
       (dec->channel_mask != WavpackGetChannelMask (dec->context));
 
   if (!gst_pad_has_current_caps (GST_AUDIO_DECODER_SRC_PAD (dec)) ||
@@ -336,6 +348,7 @@
     dec->sample_rate = WavpackGetSampleRate (dec->context);
     dec->channels = WavpackGetNumChannels (dec->context);
     dec->depth = WavpackGetBytesPerSample (dec->context) * 8;
+    dec->mode_float = mode_float;
 
     channel_mask = WavpackGetChannelMask (dec->context);
     if (channel_mask == 0)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-good-1.18.3/ext/wavpack/gstwavpackdec.h 
new/gst-plugins-good-1.18.4/ext/wavpack/gstwavpackdec.h
--- old/gst-plugins-good-1.18.3/ext/wavpack/gstwavpackdec.h     2021-01-13 
22:08:52.000000000 +0100
+++ new/gst-plugins-good-1.18.4/ext/wavpack/gstwavpackdec.h     2021-03-15 
18:48:29.000000000 +0100
@@ -52,6 +52,7 @@
   gint width;
   gint channels;
   gint channel_mask;
+  gboolean mode_float;
 
   gint channel_reorder_map[64];
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-good-1.18.3/gst/matroska/matroska-demux.c 
new/gst-plugins-good-1.18.4/gst/matroska/matroska-demux.c
--- old/gst-plugins-good-1.18.3/gst/matroska/matroska-demux.c   2021-01-13 
22:08:52.000000000 +0100
+++ new/gst-plugins-good-1.18.4/gst/matroska/matroska-demux.c   2021-03-15 
18:48:29.000000000 +0100
@@ -692,6 +692,8 @@
 
   DEBUG_ELEMENT_START (demux, ebml, "TrackEntry");
 
+  *dest_context = NULL;
+
   /* start with the master */
   if ((ret = gst_ebml_read_master (ebml, &id)) != GST_FLOW_OK) {
     DEBUG_ELEMENT_STOP (demux, ebml, "TrackEntry", ret);
@@ -3849,6 +3851,12 @@
     guint32 block_samples, tmp;
     gsize size = gst_buffer_get_size (*buf);
 
+    if (size < 4) {
+      GST_ERROR_OBJECT (element, "Too small wavpack buffer");
+      gst_buffer_unmap (*buf, &map);
+      return GST_FLOW_ERROR;
+    }
+
     gst_buffer_extract (*buf, 0, &tmp, sizeof (guint32));
     block_samples = GUINT32_FROM_LE (tmp);
     /* we need to reconstruct the header of the wavpack block */
@@ -3856,10 +3864,10 @@
     /* -20 because ck_size is the size of the wavpack block -8
      * and lace_size is the size of the wavpack block + 12
      * (the three guint32 of the header that already are in the buffer) */
-    wvh.ck_size = size + sizeof (Wavpack4Header) - 20;
+    wvh.ck_size = size + WAVPACK4_HEADER_SIZE - 20;
 
     /* block_samples, flags and crc are already in the buffer */
-    newbuf = gst_buffer_new_allocate (NULL, sizeof (Wavpack4Header) - 12, 
NULL);
+    newbuf = gst_buffer_new_allocate (NULL, WAVPACK4_HEADER_SIZE - 12, NULL);
 
     gst_buffer_map (newbuf, &outmap, GST_MAP_WRITE);
     data = outmap.data;
@@ -3884,9 +3892,11 @@
     audiocontext->wvpk_block_index += block_samples;
   } else {
     guint8 *outdata = NULL;
-    guint outpos = 0;
-    gsize buf_size, size, out_size = 0;
+    gsize buf_size, size;
     guint32 block_samples, flags, crc, blocksize;
+    GstAdapter *adapter;
+
+    adapter = gst_adapter_new ();
 
     gst_buffer_map (*buf, &map, GST_MAP_READ);
     buf_data = map.data;
@@ -3895,6 +3905,7 @@
     if (buf_size < 4) {
       GST_ERROR_OBJECT (element, "Too small wavpack buffer");
       gst_buffer_unmap (*buf, &map);
+      g_object_unref (adapter);
       return GST_FLOW_ERROR;
     }
 
@@ -3916,59 +3927,57 @@
       data += 4;
       size -= 4;
 
-      if (blocksize == 0 || size < blocksize)
-        break;
-
-      g_assert ((newbuf == NULL) == (outdata == NULL));
-
-      if (newbuf == NULL) {
-        out_size = sizeof (Wavpack4Header) + blocksize;
-        newbuf = gst_buffer_new_allocate (NULL, out_size, NULL);
+      if (blocksize == 0 || size < blocksize) {
+        GST_ERROR_OBJECT (element, "Too small wavpack buffer");
+        gst_buffer_unmap (*buf, &map);
+        g_object_unref (adapter);
+        return GST_FLOW_ERROR;
+      }
+
+      g_assert (newbuf == NULL);
+
+      newbuf =
+          gst_buffer_new_allocate (NULL, WAVPACK4_HEADER_SIZE + blocksize,
+          NULL);
+      gst_buffer_map (newbuf, &outmap, GST_MAP_WRITE);
+      outdata = outmap.data;
+
+      outdata[0] = 'w';
+      outdata[1] = 'v';
+      outdata[2] = 'p';
+      outdata[3] = 'k';
+      outdata += 4;
+
+      GST_WRITE_UINT32_LE (outdata, blocksize + WAVPACK4_HEADER_SIZE - 8);
+      GST_WRITE_UINT16_LE (outdata + 4, wvh.version);
+      GST_WRITE_UINT8 (outdata + 6, wvh.track_no);
+      GST_WRITE_UINT8 (outdata + 7, wvh.index_no);
+      GST_WRITE_UINT32_LE (outdata + 8, wvh.total_samples);
+      GST_WRITE_UINT32_LE (outdata + 12, wvh.block_index);
+      GST_WRITE_UINT32_LE (outdata + 16, block_samples);
+      GST_WRITE_UINT32_LE (outdata + 20, flags);
+      GST_WRITE_UINT32_LE (outdata + 24, crc);
+      outdata += 28;
 
-        gst_buffer_copy_into (newbuf, *buf,
-            GST_BUFFER_COPY_TIMESTAMPS | GST_BUFFER_COPY_FLAGS, 0, -1);
+      memcpy (outdata, data, blocksize);
 
-        outpos = 0;
-        gst_buffer_map (newbuf, &outmap, GST_MAP_WRITE);
-        outdata = outmap.data;
-      } else {
-        gst_buffer_unmap (newbuf, &outmap);
-        out_size += sizeof (Wavpack4Header) + blocksize;
-        gst_buffer_set_size (newbuf, out_size);
-        gst_buffer_map (newbuf, &outmap, GST_MAP_WRITE);
-        outdata = outmap.data;
-      }
-
-      outdata[outpos] = 'w';
-      outdata[outpos + 1] = 'v';
-      outdata[outpos + 2] = 'p';
-      outdata[outpos + 3] = 'k';
-      outpos += 4;
-
-      GST_WRITE_UINT32_LE (outdata + outpos,
-          blocksize + sizeof (Wavpack4Header) - 8);
-      GST_WRITE_UINT16_LE (outdata + outpos + 4, wvh.version);
-      GST_WRITE_UINT8 (outdata + outpos + 6, wvh.track_no);
-      GST_WRITE_UINT8 (outdata + outpos + 7, wvh.index_no);
-      GST_WRITE_UINT32_LE (outdata + outpos + 8, wvh.total_samples);
-      GST_WRITE_UINT32_LE (outdata + outpos + 12, wvh.block_index);
-      GST_WRITE_UINT32_LE (outdata + outpos + 16, block_samples);
-      GST_WRITE_UINT32_LE (outdata + outpos + 20, flags);
-      GST_WRITE_UINT32_LE (outdata + outpos + 24, crc);
-      outpos += 28;
+      gst_buffer_unmap (newbuf, &outmap);
+      gst_adapter_push (adapter, newbuf);
+      newbuf = NULL;
 
-      memmove (outdata + outpos, data, blocksize);
-      outpos += blocksize;
       data += blocksize;
       size -= blocksize;
     }
     gst_buffer_unmap (*buf, &map);
-    gst_buffer_unref (*buf);
 
-    if (newbuf)
-      gst_buffer_unmap (newbuf, &outmap);
+    newbuf = gst_adapter_take_buffer (adapter, gst_adapter_available 
(adapter));
+    g_object_unref (adapter);
 
+    gst_buffer_copy_into (newbuf, *buf,
+        GST_BUFFER_COPY_TIMESTAMPS | GST_BUFFER_COPY_FLAGS, 0, -1);
+    gst_buffer_unref (*buf);
     *buf = newbuf;
+
     audiocontext->wvpk_block_index += block_samples;
   }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-good-1.18.3/gst/matroska/matroska-ids.h 
new/gst-plugins-good-1.18.4/gst/matroska/matroska-ids.h
--- old/gst-plugins-good-1.18.3/gst/matroska/matroska-ids.h     2021-01-13 
22:08:52.000000000 +0100
+++ new/gst-plugins-good-1.18.4/gst/matroska/matroska-ids.h     2021-03-15 
18:48:29.000000000 +0100
@@ -688,6 +688,8 @@
   guint32 crc;           /* crc for actual decoded data                    */
 } Wavpack4Header;
 
+#define WAVPACK4_HEADER_SIZE (32)
+
 typedef enum {
   GST_MATROSKA_TRACK_ENCODING_SCOPE_FRAME = (1<<0),
   GST_MATROSKA_TRACK_ENCODING_SCOPE_CODEC_DATA = (1<<1),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-good-1.18.3/gst/wavenc/gstwavenc.c 
new/gst-plugins-good-1.18.4/gst/wavenc/gstwavenc.c
--- old/gst-plugins-good-1.18.3/gst/wavenc/gstwavenc.c  2021-01-13 
22:08:52.000000000 +0100
+++ new/gst-plugins-good-1.18.4/gst/wavenc/gstwavenc.c  2021-03-15 
18:48:29.000000000 +0100
@@ -546,6 +546,7 @@
     0, NULL}
   };
   gint n;
+  size_t size;
   gchar *str = NULL;
   GstByteWriter *bw = data;
   for (n = 0; rifftags[n].fcc != 0; n++) {
@@ -563,9 +564,15 @@
         gst_tag_list_get_string (tags, tag, &str);
       }
       if (str) {
+        /* get string length including null termination */
+        size = strlen (str) + 1;
         gst_byte_writer_put_uint32_le (bw, rifftags[n].fcc);
-        gst_byte_writer_put_uint32_le (bw, GST_ROUND_UP_2 (strlen (str)));
-        gst_byte_writer_put_string (bw, str);
+        gst_byte_writer_put_uint32_le (bw, GST_ROUND_UP_2 (size));
+        gst_byte_writer_put_data (bw, (const guint8 *) str, size);
+        /* add padding if needed */
+        if (GST_ROUND_UP_2 (size) > size) {
+          gst_byte_writer_put_uint8 (bw, 0);
+        }
         g_free (str);
         str = NULL;
         break;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-good-1.18.3/gst-plugins-good.doap 
new/gst-plugins-good-1.18.4/gst-plugins-good.doap
--- old/gst-plugins-good-1.18.3/gst-plugins-good.doap   2021-01-13 
22:08:52.000000000 +0100
+++ new/gst-plugins-good-1.18.4/gst-plugins-good.doap   2021-03-15 
18:48:29.000000000 +0100
@@ -34,6 +34,16 @@
 
  <release>
   <Version>
+   <revision>1.18.4</revision>
+   <branch>1.18</branch>
+   <name></name>
+   <created>2021-03-15</created>
+   <file-release 
rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.18.4.tar.xz";
 />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
    <revision>1.18.3</revision>
    <branch>1.18</branch>
    <name></name>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-good-1.18.3/meson.build 
new/gst-plugins-good-1.18.4/meson.build
--- old/gst-plugins-good-1.18.3/meson.build     2021-01-13 22:08:52.000000000 
+0100
+++ new/gst-plugins-good-1.18.4/meson.build     2021-03-15 18:48:29.000000000 
+0100
@@ -1,5 +1,5 @@
 project('gst-plugins-good', 'c',
-  version : '1.18.3',
+  version : '1.18.4',
   meson_version : '>= 0.48',
   default_options : [ 'warning_level=1',
                       'buildtype=debugoptimized' ])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-good-1.18.3/sys/rpicamsrc/meson.build 
new/gst-plugins-good-1.18.4/sys/rpicamsrc/meson.build
--- old/gst-plugins-good-1.18.3/sys/rpicamsrc/meson.build       2021-01-13 
22:08:52.000000000 +0100
+++ new/gst-plugins-good-1.18.4/sys/rpicamsrc/meson.build       2021-03-15 
18:48:29.000000000 +0100
@@ -33,8 +33,11 @@
   endif
 endif
 
-mmal_deps = []
-foreach rpi_lib : ['mmal_core', 'mmal_util', 'mmal_vc_client', 'vcos', 
'vchostif', 'bcm_host']
+thread_dep = dependency('threads')
+rt_dep = cxx.find_library('rt', required : false)
+
+mmal_deps = [thread_dep, rt_dep]
+foreach rpi_lib : ['mmal_core', 'mmal_util', 'mmal_vc_client', 'vcos', 
'vchostif', 'vchiq_arm', 'bcm_host']
   l = cc.find_library(rpi_lib, dirs: rpi_lib_path, required: false)
   if not l.found()
     if get_option('rpicamsrc').enabled()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-good-1.18.3/sys/v4l2/gstv4l2h265codec.c 
new/gst-plugins-good-1.18.4/sys/v4l2/gstv4l2h265codec.c
--- old/gst-plugins-good-1.18.3/sys/v4l2/gstv4l2h265codec.c     2021-01-13 
22:08:52.000000000 +0100
+++ new/gst-plugins-good-1.18.4/sys/v4l2/gstv4l2h265codec.c     2021-03-15 
18:48:29.000000000 +0100
@@ -37,9 +37,9 @@
 
   if (g_str_equal (profile, "main")) {
     v4l2_profile = V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN;
-  } else if (g_str_equal (profile, "mainstillpicture")) {
+  } else if (g_str_equal (profile, "main-still-picture")) {
     v4l2_profile = V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_STILL_PICTURE;
-  } else if (g_str_equal (profile, "main10")) {
+  } else if (g_str_equal (profile, "main-10")) {
     v4l2_profile = V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10;
   } else {
     GST_WARNING ("Unsupported profile string '%s'", profile);
@@ -55,9 +55,9 @@
     case V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN:
       return "main";
     case V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_STILL_PICTURE:
-      return "mainstillpicture";
+      return "main-still-picture";
     case V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10:
-      return "main10";
+      return "main-10";
     default:
       GST_WARNING ("Unsupported V4L2 profile %i", v4l2_profile);
       break;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-good-1.18.3/sys/v4l2/gstv4l2object.c 
new/gst-plugins-good-1.18.4/sys/v4l2/gstv4l2object.c
--- old/gst-plugins-good-1.18.3/sys/v4l2/gstv4l2object.c        2021-01-13 
22:08:52.000000000 +0100
+++ new/gst-plugins-good-1.18.4/sys/v4l2/gstv4l2object.c        2021-03-15 
18:48:29.000000000 +0100
@@ -2024,8 +2024,8 @@
 }
 
 static gboolean
-gst_v4l2_object_get_colorspace (struct v4l2_format *fmt,
-    GstVideoColorimetry * cinfo)
+gst_v4l2_object_get_colorspace (GstV4l2Object * v4l2object,
+    struct v4l2_format *fmt, GstVideoColorimetry * cinfo)
 {
   gboolean is_rgb =
       gst_v4l2_object_v4l2fourcc_is_rgb (fmt->fmt.pix.pixelformat);
@@ -2052,7 +2052,7 @@
     case V4L2_COLORSPACE_SMPTE170M:
       cinfo->range = GST_VIDEO_COLOR_RANGE_16_235;
       cinfo->matrix = GST_VIDEO_COLOR_MATRIX_BT601;
-      cinfo->transfer = GST_VIDEO_TRANSFER_BT709;
+      cinfo->transfer = GST_VIDEO_TRANSFER_BT601;
       cinfo->primaries = GST_VIDEO_COLOR_PRIMARIES_SMPTE170M;
       break;
     case V4L2_COLORSPACE_REC709:
@@ -2181,8 +2181,13 @@
     case V4L2_XFER_FUNC_709:
       if (colorspace == V4L2_COLORSPACE_BT2020 && fmt->fmt.pix.height >= 2160)
         cinfo->transfer = GST_VIDEO_TRANSFER_BT2020_12;
+      else if (colorspace == V4L2_COLORSPACE_SMPTE170M)
+        cinfo->transfer = GST_VIDEO_TRANSFER_BT601;
       else
         cinfo->transfer = GST_VIDEO_TRANSFER_BT709;
+
+      if (v4l2object->transfer)
+        cinfo->transfer = v4l2object->transfer;
       break;
     case V4L2_XFER_FUNC_SRGB:
       cinfo->transfer = GST_VIDEO_TRANSFER_SRGB;
@@ -2356,7 +2361,7 @@
   /* step 1: get device default colorspace and insert it first as
    * it should be the preferred one */
   if (gst_v4l2_object_try_fmt (v4l2object, &fmt) == 0) {
-    if (gst_v4l2_object_get_colorspace (&fmt, &cinfo))
+    if (gst_v4l2_object_get_colorspace (v4l2object, &fmt, &cinfo))
       gst_v4l2_object_fill_colorimetry_list (&list, &cinfo);
   }
 
@@ -2384,7 +2389,7 @@
         colorspace = fmt.fmt.pix.colorspace;
 
       if (colorspace == req_cspace) {
-        if (gst_v4l2_object_get_colorspace (&fmt, &cinfo))
+        if (gst_v4l2_object_get_colorspace (v4l2object, &fmt, &cinfo))
           gst_v4l2_object_fill_colorimetry_list (&list, &cinfo);
       }
     }
@@ -3460,6 +3465,7 @@
 
   gst_video_info_init (&info);
   gst_video_alignment_reset (&align);
+  v4l2object->transfer = GST_VIDEO_TRANSFER_UNKNOWN;
 
   if (!gst_v4l2_object_get_caps_info (v4l2object, caps, &fmtdesc, &info))
     goto invalid_caps;
@@ -3573,8 +3579,11 @@
     case GST_VIDEO_TRANSFER_GAMMA10:
       transfer = V4L2_XFER_FUNC_NONE;
       break;
+    case GST_VIDEO_TRANSFER_BT601:
     case GST_VIDEO_TRANSFER_BT2020_12:
+    case GST_VIDEO_TRANSFER_BT2020_10:
     case GST_VIDEO_TRANSFER_BT709:
+      v4l2object->transfer = info.colorimetry.transfer;
       transfer = V4L2_XFER_FUNC_709;
       break;
     case GST_VIDEO_TRANSFER_SMPTE240M:
@@ -3775,7 +3784,7 @@
       goto invalid_field;
   }
 
-  if (gst_v4l2_object_get_colorspace (&format, &info.colorimetry)) {
+  if (gst_v4l2_object_get_colorspace (v4l2object, &format, &info.colorimetry)) 
{
     if (gst_structure_has_field (s, "colorimetry")) {
       if (!gst_v4l2_video_colorimetry_matches (&info.colorimetry,
               gst_structure_get_string (s, "colorimetry")))
@@ -4170,7 +4179,7 @@
   gst_video_info_set_interlaced_format (info, format, interlace_mode, width,
       height);
 
-  gst_v4l2_object_get_colorspace (&fmt, &info->colorimetry);
+  gst_v4l2_object_get_colorspace (v4l2object, &fmt, &info->colorimetry);
 
   gst_v4l2_object_save_format (v4l2object, fmtdesc, &fmt, info, &align);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-good-1.18.3/sys/v4l2/gstv4l2object.h 
new/gst-plugins-good-1.18.4/sys/v4l2/gstv4l2object.h
--- old/gst-plugins-good-1.18.3/sys/v4l2/gstv4l2object.h        2021-01-13 
22:08:52.000000000 +0100
+++ new/gst-plugins-good-1.18.4/sys/v4l2/gstv4l2object.h        2021-03-15 
18:48:29.000000000 +0100
@@ -143,6 +143,7 @@
   struct v4l2_format format;
   GstVideoInfo info;
   GstVideoAlignment align;
+  GstVideoTransferFunction transfer;
 
   /* Features */
   gboolean need_video_meta;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-good-1.18.3/sys/v4l2/gstv4l2videodec.c 
new/gst-plugins-good-1.18.4/sys/v4l2/gstv4l2videodec.c
--- old/gst-plugins-good-1.18.3/sys/v4l2/gstv4l2videodec.c      2021-01-13 
22:08:52.000000000 +0100
+++ new/gst-plugins-good-1.18.4/sys/v4l2/gstv4l2videodec.c      2021-03-15 
18:48:29.000000000 +0100
@@ -682,6 +682,10 @@
     if (!gst_v4l2_object_acquire_format (self->v4l2capture, &info))
       goto not_negotiated;
 
+    /* gst_v4l2_object_acquire_format() does not set fps, copy from sink */
+    info.fps_n = self->v4l2output->info.fps_n;
+    info.fps_d = self->v4l2output->info.fps_d;
+
     /* Create caps from the acquired format, remove the format field */
     acquired_caps = gst_video_info_to_caps (&info);
     GST_DEBUG_OBJECT (self, "Acquired caps: %" GST_PTR_FORMAT, acquired_caps);
@@ -1210,7 +1214,8 @@
       continue;
     }
 
-    if (cdata->codec != NULL) {
+    if (cdata->codec != NULL && cdata->codec != gst_v4l2_vp8_get_codec ()
+        && cdata->codec != gst_v4l2_vp9_get_codec ()) {
       GValue value = G_VALUE_INIT;
 
       if (gst_v4l2_codec_probe_levels (cdata->codec, video_fd, &value)) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-good-1.18.3/sys/v4l2/gstv4l2videoenc.c 
new/gst-plugins-good-1.18.4/sys/v4l2/gstv4l2videoenc.c
--- old/gst-plugins-good-1.18.3/sys/v4l2/gstv4l2videoenc.c      2021-01-13 
22:08:52.000000000 +0100
+++ new/gst-plugins-good-1.18.4/sys/v4l2/gstv4l2videoenc.c      2021-03-15 
18:48:29.000000000 +0100
@@ -738,10 +738,13 @@
   if (task_state == GST_TASK_STOPPED || task_state == GST_TASK_PAUSED) {
     GstBufferPool *pool = GST_BUFFER_POOL (self->v4l2output->pool);
 
-    /* It possible that the processing thread stopped due to an error */
+    /* It is possible that the processing thread stopped due to an error or
+     * when the last buffer has been met during the draining process. */
     if (self->output_flow != GST_FLOW_OK &&
-        self->output_flow != GST_FLOW_FLUSHING) {
-      GST_DEBUG_OBJECT (self, "Processing loop stopped with error, leaving");
+        self->output_flow != GST_FLOW_FLUSHING &&
+        self->output_flow != GST_V4L2_FLOW_LAST_BUFFER) {
+      GST_DEBUG_OBJECT (self, "Processing loop stopped with error: %s, 
leaving",
+          gst_flow_get_name (self->output_flow));
       ret = self->output_flow;
       goto drop;
     }

Reply via email to