Hello community,
here is the log from the commit of package gstreamer-plugins-good for
openSUSE:Factory checked in at 2020-12-12 20:27:30
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gstreamer-plugins-good (Old)
and /work/SRC/openSUSE:Factory/.gstreamer-plugins-good.new.2328 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gstreamer-plugins-good"
Sat Dec 12 20:27:30 2020 rev:74 rq:854558 version:1.18.2
Changes:
--------
---
/work/SRC/openSUSE:Factory/gstreamer-plugins-good/gstreamer-plugins-good.changes
2020-11-15 15:25:48.415413910 +0100
+++
/work/SRC/openSUSE:Factory/.gstreamer-plugins-good.new.2328/gstreamer-plugins-good.changes
2020-12-12 20:27:38.849557343 +0100
@@ -1,0 +2,17 @@
+Thu Dec 10 07:20:21 UTC 2020 - Bjørn Lie <[email protected]>
+
+- Update to version 1.18.2:
+ + rpicamsrc: add vchostif library as it is required to build
+ successful
+ + deinterlace: Enable x86 assembly with nasm on MSVC
+ + v4l2: caps negotiate wrong as interlace feature
+ + aacparse: Fix caps change handling
+ + rtspsrc: Use URI hash for stream id
+ + flvmux: Release pads via GstAggregator
+ + qtmux: Chain up when releasing pad, and fix some locking
+ + matroska-mux: Fix sparse stream crash
+ + Splitmux testsuite races
+- Fix the _service file and spec to really use the tarball
+ generated by service.
+
+-------------------------------------------------------------------
Old:
----
gst-plugins-good-1.18.1.tar.xz
New:
----
gst-plugins-good-1.18.2.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gstreamer-plugins-good.spec ++++++
--- /var/tmp/diff_new_pack.BgJr5d/_old 2020-12-12 20:27:39.469557987 +0100
+++ /var/tmp/diff_new_pack.BgJr5d/_new 2020-12-12 20:27:39.473557991 +0100
@@ -29,15 +29,18 @@
%define ENABLE_EXPERIMENTAL 1
Name: gstreamer-plugins-good
-Version: 1.18.1
+Version: 1.18.2
Release: 0
Summary: GStreamer Streaming-Media Framework Plug-Ins
License: LGPL-2.1-or-later
Group: Productivity/Multimedia/Other
-URL: https://gstreamer.freedesktop.org/
-Source0:
https://gstreamer.freedesktop.org/src/gst-plugins-good/%{_name}-%{version}.tar.xz
+URL: https://gstreamer.freedesktop.org
+# Disable tarball source url, use _service
+#Source0: %%{url}/src/gst-plugins-good/%%{_name}-%%{version}.tar.xz
+Source0: %{_name}-%{version}.tar.xz
Source1: gstreamer-plugins-good.appdata.xml
Source99: baselibs.conf
+
BuildRequires: Mesa-libGLESv2-devel
BuildRequires: Mesa-libGLESv3-devel
BuildRequires: gcc-c++
++++++ _service ++++++
--- /var/tmp/diff_new_pack.BgJr5d/_old 2020-12-12 20:27:39.497558016 +0100
+++ /var/tmp/diff_new_pack.BgJr5d/_new 2020-12-12 20:27:39.497558016 +0100
@@ -1,10 +1,15 @@
+<?xml version="1.0"?>
<services>
<service name="tar_scm" mode="disabled">
<param
name="url">https://gitlab.freedesktop.org/gstreamer/gst-plugins-good.git</param>
<param name="filename">gst-plugins-good</param>
- <!--<param name="versionformat">@PARENT_TAG@+git%cd.%h</param>-->
- <param name="versionformat">@PARENT_TAG@</param>
- <param name="revision">1.18.1</param>
+ <param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param>
+ <param name="versionrewrite-pattern">(.*)\+0</param>
+ <param name="versionrewrite-replacement">\1</param>
+<!--
+ <param name="changesgenerate">enable</param>
+-->
+ <param name="revision">1.18.2</param>
<param name="scm">git</param>
</service>
<service name="recompress" mode="disabled">
++++++ gst-plugins-good-1.18.1.tar.xz -> gst-plugins-good-1.18.2.tar.xz ++++++
++++ 1689 lines of diff (skipped)
++++ retrying with extended exclude list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/gst-plugins-good-1.18.1/.gitlab-ci.yml
new/gst-plugins-good-1.18.2/.gitlab-ci.yml
--- old/gst-plugins-good-1.18.1/.gitlab-ci.yml 1970-01-01 01:00:00.000000000
+0100
+++ new/gst-plugins-good-1.18.2/.gitlab-ci.yml 2020-12-06 14:22:59.000000000
+0100
@@ -0,0 +1 @@
+include:
"https://gitlab.freedesktop.org/gstreamer/gst-ci/raw/1.18/gitlab/ci_template.yml"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/gst-plugins-good-1.18.1/ChangeLog new/gst-plugins-good-1.18.2/ChangeLog
--- old/gst-plugins-good-1.18.1/ChangeLog 2020-10-26 12:12:12.620011800
+0100
+++ new/gst-plugins-good-1.18.2/ChangeLog 2020-12-06 14:22:59.000000000
+0100
@@ -1,3 +1,180 @@
+=== release 1.18.2 ===
+
+2020-12-06 13:22:58 +0000 Tim-Philipp Müller <[email protected]>
+
+ * ChangeLog:
+ * NEWS:
+ * RELEASE:
+ * gst-plugins-good.doap:
+ * meson.build:
+ Release 1.18.2
+
+2020-11-15 11:30:07 +0000 Jose Quaresma <[email protected]>
+
+ * sys/rpicamsrc/meson.build:
+ rpicamsrc: add vchostif library as it is required to build successful
+ fix: undefined reference to `vc_gencmd'
+
/usr/src/debug/gstreamer1.0-plugins-good/1.18.1-r0/build/../gst-plugins-good-1.18.1/sys/rpicamsrc/RaspiCamControl.c:1440:
undefined reference to `vc_gencmd'
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/829>
+
+2020-11-24 22:11:50 +0530 Nirbheek Chauhan <[email protected]>
+
+ * gst/deinterlace/meson.build:
+ * meson.build:
+ deinterlace: Enable x86 assembly with nasm on MSVC
+ We need to remove x86inc.asm from the list of compiled assembly files
+ because it is not supposed to be compiled separately. It is directly
+ included by yadif.asm, and it exports no symbols.
+ The object file was getting ignored on all platforms except on msvc
+ where it was causing a linker hang when building with debugging
+ enabled because the object file had no debug symbols (or similar).
+ We've seen this before in FFmpeg too, which uses nasm:
+
https://gitlab.freedesktop.org/gstreamer/meson-ports/ffmpeg/-/merge_requests/46
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/826>
+
+2020-10-29 02:38:16 +1100 Jan Schmidt <[email protected]>
+
+ * gst/isomp4/gstqtmux.c:
+ qtmux: Chain up when releasing pad, and fix some locking.
+ Release pads by calling up into aggregator so it can do the right
+ things. Don't clean up the pad until after that.
+ Add some missing locks around some accesses to shared pad state.
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/800>
+
+2020-11-12 09:32:30 +0800 Bing Song <[email protected]>
+
+ * docs/gst_plugins_cache.json:
+ * sys/v4l2/gstv4l2object.c:
+ v4l2: caps negotiate wrong as interlace feature
+ gst_caps_simplify() will move interlace format before normal video
+ format. It will cause caps negotiate prefer interlaced caps which
+ isn't expected. Seperate normal caps and interlaced caps and then
+ merge it will keep prefer progress video format.
+ Add ARGB/BGRA for interlaced caps.
+ Fixes
https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/802
+ Part-of
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/813>
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/821>
+
+2020-11-13 14:58:44 +0200 Vivia Nikolaidou <[email protected]>
+
+ * gst/audioparsers/gstaacparse.c:
+ aacparse: Fix caps change handling
+ In baseparse we set the fixed caps flag on all src pads, therefore the
+ source pad caps query in get_allowed_caps will return the current
caps.
+ Current caps won't necessarily intersect with the new caps (e.g.
sample
+ rate change). Replace get_allowed_caps with peer_query_caps.
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/819>
+
+2020-11-10 18:18:12 +0000 ChrisDuncanAnyvision <[email protected]>
+
+ * gst/rtsp/gstrtspsrc.c:
+ * gst/rtsp/gstrtspsrc.h:
+ rtspsrc: Ensure same group-id used for both TCP/UDP stream-start
events
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/814>
+
+2020-11-10 16:17:23 +0000 ChrisDuncanAnyvision <[email protected]>
+
+ * gst/rtsp/gstrtspsrc.c:
+ rtspsrc: Use consistent URI hashed stream-id for UDP and
TCP/Interleaved streams
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/814>
+
+2020-11-01 10:30:27 +0200 Sebastian Dröge <[email protected]>
+
+ * gst/flv/gstflvmux.c:
+ flvmux: Release pads via GstAggregator
+ See
https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/797
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/803>
+
+2020-10-31 12:52:04 +1100 Jan Schmidt <[email protected]>
+
+ * tests/check/elements/splitmuxsrc.c:
+ splitmuxsrc: Fix comment in a test
+ Fix a comment in the splitmuxsrc robust muxing test so it
+ describes the test properly.
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/799>
+
+2020-10-31 12:49:08 +1100 Jan Schmidt <[email protected]>
+
+ * gst/multifile/gstsplitmuxsink.c:
+ * gst/multifile/gstsplitmuxsink.h:
+ splitmuxsink: Change EOS catching logic.
+ Add a new state for ending the overall stream, and use it to decide
+ whether to pass the final EOS message up the bus instead of dropping
+ it. Fixes a small race that makes the testsuite sometimes not generate
+ the last fragment(s) sometimes because the wrong EOS gets
+ allowed through too early.
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/799>
+
+2020-10-31 02:19:07 +1100 Jan Schmidt <[email protected]>
+
+ * gst/multifile/gstsplitmuxsink.c:
+ * gst/multifile/gstsplitmuxsink.h:
+ splitmuxsink: Don't use the element state lock
+ Using the element state lock to avoid splitmuxsink shutting
+ down while doing element manipulations can lead to a deadlock on
+ shutdown if a fragment switch happens at exactly the wrong moment.
+ Use a private mutex and a shutdown boolean instead.
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/799>
+
+2020-10-30 03:38:15 +1100 Jan Schmidt <[email protected]>
+
+ * gst/multifile/gstsplitmuxsink.c:
+ splitmuxsink: Don't busy loop on a non-ready pad.
+ If a pad gets into the check_completed_gop method and then
+ the underlying conditions change on the reference context,
+ things could get stuck in a busy loop when the context should
+ instead jump back out and wait for more data.
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/799>
+
+2020-10-30 03:36:51 +1100 Jan Schmidt <[email protected]>
+
+ * gst/multifile/gstsplitmuxsrc.c:
+ splitmuxsrc: Mark running=false on shutdown.
+ Make sure that any late gst_element_call_async() callbacks
+ know that the elements is shutting down and bail out instead
+ of operating on the element we're trying to stop.
+ Fixes a spurious test failure in elements_splitmuxsrc
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/799>
+
+2020-10-29 02:36:35 +1100 Jan Schmidt <[email protected]>
+
+ * gst/multifile/gstsplitmuxsink.c:
+ splitmuxsink: Forward EOS messages from async fragments.
+ Re-enable forwarding EOS messages from fragments that are completing
+ asynchronously, so that splitmuxsink itself won't go EOS until they
+ are complete. This was disabled to work around a bug in core that
+ is fixed in
+
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/683
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/799>
+
+2020-09-17 22:56:01 +1000 Jan Schmidt <[email protected]>
+
+ * gst/multifile/gstsplitmuxsink.c:
+ * gst/multifile/gstsplitmuxsink.h:
+ splitmuxsink: Never start a new fragment with no reference buffers
+ If there has been no bytes from the reference stream muxed into
+ the current fragment, then time can't have advanced, there's no
+ GOP... this fragment would be broken or empty, so wait for some
+ data on the reference buffer.
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/799>
+
+2020-10-27 23:43:49 +1100 Jan Schmidt <[email protected]>
+
+ * gst/matroska/matroska-mux.c:
+ matroska-mux: Fix sparse stream crash
+
https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/656
+ introduced an invalid memory access when debug is enabled, by casting
+ the wrong pointer to a GstCollectPad. Fixing that showed the original
+ change was incorrect and leads to an infinite loop in the
+ testsuite. This patch fixes both problems.
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/793>
+
+2020-10-27 12:34:19 +0000 Tim-Philipp Müller <[email protected]>
+
+ * docs/gst_plugins_cache.json:
+ * meson.build:
+ Back to development
+
=== release 1.18.1 ===
2020-10-26 11:12:10 +0000 Tim-Philipp Müller <[email protected]>
@@ -5,6 +182,7 @@
* ChangeLog:
* NEWS:
* RELEASE:
+ * docs/gst_plugins_cache.json:
* gst-plugins-good.doap:
* meson.build:
Release 1.18.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/gst-plugins-good-1.18.1/NEWS new/gst-plugins-good-1.18.2/NEWS
--- old/gst-plugins-good-1.18.1/NEWS 2020-10-26 12:12:12.620011800 +0100
+++ new/gst-plugins-good-1.18.2/NEWS 2020-12-06 14:22:59.000000000 +0100
@@ -2,8 +2,8 @@
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.
+The latest bug-fix release in the 1.18 series is 1.18.2 and was released
+on 6 December 2020.
See https://gstreamer.freedesktop.org/releases/1.18/ for the latest
version of this document.
@@ -2387,6 +2387,195 @@
- List of Merge Requests applied in 1.18.1
- List of Issues fixed in 1.18.1
+1.18.2
+
+The second 1.18 bug-fix release (1.18.2) was released on 6 December
+2020.
+
+This release only contains bugfixes and it should be safe to update from
+1.18.x.
+
+Highlighted bugfixes in 1.18.2
+
+- Fix MPEG-TS timestamping regression when playing DVB streams
+- compositor: fix artefacts in certain input scaling/conversion
+ situations and make sure that the output format is actually
+ supported, plus renegotiation fixes
+- Fix sftp:// URI playback in decodebin/playbin via giosrc
+- adaptivedemux/dashdemux/hlsdemux fixes
+- rtsp-server fixes
+- android media: fix crash when encoding AVC
+- fix races in various unit tests
+- lots of other bug fixes and memory leak fixes
+- various stability, performance and reliability improvements
+- g-i annotation fixes
+- build fixes
+
+gstreamer
+
+- bin: When removing a sink, check if the EOS status changed
+- info: colorize PIDs in log messages
+- aggregator: Include min-upstream-latency in buffering time, helps
+ especially with performance issues on single core systems where
+ there are a lot of threads running
+- typefind: copy seqnum to new segment event, fixing issues with
+ oggdemux operating in push mode with typefind operating in pull mode
+- identity, clocksync: Also provide system clock if sync=false
+- queue2: Fix modes in scheduling query handling
+- harness: Handle element not being set cleanly
+- g-i: Add some missing nullable annotations, and fix some nullable
+ annotations:
+ - gst_test_clock_process_next_clock_id() returns nullable
+ - gst_stream_type_get_name() is not nullable
+- build: fix build issue when compiling for 32-bit architectures with
+ 64-bit time_t (e.g. riscv32) by increasing padding in
+ GstClockEntryImpl in gst_private.h
+
+gst-plugins-base
+
+- gl/eagl: internal view resize fixes for glimagesink
+- video-converter: increase the number of cache lines for resampling,
+ fixes significant color issues and artefacts with “special” resizing
+ parameters in compositor
+- compositor: Don’t crash in prepare_frame() if the pad was just
+ removed
+- decodebin3: Properly handle caps query with no filter
+- videoaggregator: Guarantee that the output format is supported
+- videoaggregator: Fix locking around vagg->info
+- gluploadelement: Avoid race condition of base class’ context
+- gluploadelement: Avoid race condition of inside upload creation
+- gl: Fix prototype of glGetSynciv()
+- tcpserversink: Don’t assume g_socket_get_remote_address() succeeds
+- video-aggregator: Fix renegotiation when using convert pads
+- videoaggregator: document and fix locking in convert pad
+- audiodecoder, videodecoder: Don’t reset max-errors property value in
+ reset()
+- audioencoder: Fix incorrect GST_LOG_OBJECT usage
+- pbutils: Fix segfault when using invalid encoding profile
+- g-i: videometa: gir annotate the size of plane array in new API
+- examples/gl/gtk: Add missing dependency on gstgl
+- video: fix doc warning
+
+gst-plugins-good
+
+- rpicamsrc: add vchostif library as it is required to build
+ successful
+- deinterlace: Enable x86 assembly with nasm on MSVC
+- v4l2: caps negotiate wrong as interlace feature
+- aacparse: Fix caps change handling
+- rtspsrc: Use URI hash for stream id
+- flvmux: Release pads via GstAggregator
+- qtmux: Chain up when releasing pad, and fix some locking
+- matroska-mux: Fix sparse stream crash
+- Splitmux testsuite races
+
+gst-plugins-bad
+
+- tsparse: timestamp packetized buffers, fixing timestamp handling
+ regression in connection with dvbsrc in MeTV
+- ttmlparse: fix issues in aggregation of input TTML
+- mpegdemux: Set duration on seeking query if possible, fixes seeking
+ in MPEG-PS streams in gst-play-1.0
+- mpegtsdemux: Fix off by one error
+- adaptivedemux: Store QoS values on the element
+- adaptivedemux: Don’t calculate bitrate for header/index fragments
+- hlsdemux: Don’t double-free variant streams on errors
+- mpegtspacketizer: Handle PCR issues with adaptive streams
+- player: call ref_sink on pipeline
+- vkdeviceprovider: Avoid deadlock on physical device
+- wlvideoformat: fix DMA format convertor
+- Webrtc shutdown crashes
+- decklink: Update enum value bounds check in gst_decklink_get_mode()
+- decklink: correct framerate 2KDCI 23.98
+- amc: Fix crash when encoding AVC
+- d3d11videoprocessor: Fix wrong input/output supportability check
+- opencv: allow compilation against 4.5.x
+- tests: svthevcenc: Fix test_encode_simple
+- tests: dtls: Don’t set dtlsenc state before linking
+- mpegtsmux: Restore intervals when creating TsMux
+- adaptivedemux, hlsdemux, curl: Use actual object for logging
+- gi: player: Fix get_current_subtitle_track() annotation
+
+gst-plugins-ugly
+
+- no changes
+
+gst-libav
+
+- avauddec: Check planar-ness of frame rather than context, fixes
+ issue with aptX HD decoding
+
+gst-rtsp-server
+
+- stream: collect a clock_rate when blocking
+- media: Ignore GstRTSPStreamBlocking from incomplete streams, to
+ prevent cases with prerolling when the inactive stream prerolls
+ first and the server proceeds without waiting for the active stream.
+ When there are no complete streams (during DESCRIBE), we will listen
+ to all streams.
+- media: Use guint64 for setting the size-time property on rtpstorage,
+ fixes potential crashes or memory corruption.
+- media: Get rates only on sender streams, fixing issue with ONVIF
+ audio backchannel streams
+- media: Plug memory leak
+
+gstreamer-vaapi
+
+- H265 decoder: Fix a typo in scc reference setting
+
+gstreamer-sharp
+
+- no changes
+
+gst-omx
+
+- no changes
+
+gst-python
+
+- no changes
+
+gst-editing-services
+
+- Fix static build
+- ges_init(): Fix potential initialisation crash on error
+
+gst-integration-testsuites
+
+- no changes
+
+gst-build
+
+- gst-env: use Path.open() in get_pkgconfig_variable_from_pcfile(),
+ fixes issues with python 3.5
+- subprojects: pin orc to 0.4.32 release (was 0.4.29) and pin libpsl
+ to 0.21.1 (was master)
+
+Cerbero build tool and packaging changes in 1.18.2
+
+- build-tools: copy the removed site.py from setuptools, fixing python
+ programs (like meson) from using libraries from incorrect places
+
+Contributors to 1.18.2
+
+Arun Raghavan, Bing Song, Chris Bass, Chris Duncan, Chris White, David
+Keijser, David Phung, Edward Hervey, Fabrice Fontaine, Guillaume
+Desmottes, Guiqin Zou, He Junyan, Jan Alexander Steffens (heftig), Jan
+Schmidt, Jason Pereira, Jonathan Matthew, Jose Quaresma, Julian Bouzas,
+Khem Raj, Kristofer Björkström, Marijn Suijten, Mart Raudsepp, Mathieu
+Duponchelle, Matthew Waters, Nicola Murino, Nicolas Dufresne, Nirbheek
+Chauhan, Olivier Crête, Philippe Normand, Rafostar, Randy Li, Sanchayan
+Maity, Sebastian Dröge, Seungha Yang, Thibault Saunier, Tim-Philipp
+Müller, Vivia Nikolaidou, Xavier Claessens
+
+… and many others who have contributed bug reports, translations, sent
+suggestions or helped testing. Thank you all!
+
+List of merge requests and issues fixed in 1.18.2
+
+- List of Merge Requests applied in 1.18.2
+- List of Issues fixed in 1.18.2
+
Schedule for 1.20
Our next major feature release will be 1.20, and 1.19 will be the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/gst-plugins-good-1.18.1/RELEASE new/gst-plugins-good-1.18.2/RELEASE
--- old/gst-plugins-good-1.18.1/RELEASE 2020-10-26 12:12:12.620011800 +0100
+++ new/gst-plugins-good-1.18.2/RELEASE 2020-12-06 14:22:59.000000000 +0100
@@ -1,4 +1,4 @@
-This is GStreamer gst-plugins-good 1.18.1.
+This is GStreamer gst-plugins-good 1.18.2.
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' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/gst-plugins-good-1.18.1/docs/gst_plugins_cache.json
new/gst-plugins-good-1.18.2/docs/gst_plugins_cache.json
--- old/gst-plugins-good-1.18.1/docs/gst_plugins_cache.json 2020-10-26
12:12:12.624011800 +0100
+++ new/gst-plugins-good-1.18.2/docs/gst_plugins_cache.json 2020-12-06
14:22:59.000000000 +0100
@@ -6595,7 +6595,7 @@
"construct": false,
"construct-only": false,
"controllable": false,
- "default": "GStreamer 1.18.1 FLV muxer",
+ "default": "GStreamer 1.18.2 FLV muxer",
"mutable": "null",
"readable": true,
"type": "gchararray",
@@ -6607,7 +6607,7 @@
"construct": false,
"construct-only": false,
"controllable": false,
- "default": "GStreamer 1.18.1 FLV muxer",
+ "default": "GStreamer 1.18.2 FLV muxer",
"mutable": "null",
"readable": true,
"type": "gchararray",
@@ -20636,7 +20636,7 @@
"construct": false,
"construct-only": false,
"controllable": false,
- "default": "GStreamer/1.18.1",
+ "default": "GStreamer/1.18.2",
"mutable": "null",
"readable": true,
"type": "gchararray",
@@ -22593,7 +22593,7 @@
"construct": false,
"construct-only": false,
"controllable": false,
- "default": "GStreamer souphttpsrc 1.18.1 ",
+ "default": "GStreamer souphttpsrc 1.18.2 ",
"mutable": "null",
"readable": true,
"type": "gchararray",
@@ -24203,7 +24203,7 @@
"long-name": "Video (video4linux2) Sink",
"pad-templates": {
"sink": {
- "caps": "image/jpeg:\nvideo/mpeg:\n mpegversion:
4\n systemstream: false\nvideo/mpeg:\n mpegversion: { (int)1, (int)2
}\nvideo/mpegts:\n systemstream: true\nvideo/x-bayer:\n format: {
bggr, gbrg, grbg, rggb }\n width: [ 1, 32768 ]\n height: [ 1,
32768 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-dv:\n systemstream:
true\nvideo/x-fwht:\nvideo/x-h263:\n variant: itu\nvideo/x-h264:\n
stream-format: { (string)byte-stream, (string)avc }\n alignment:
au\nvideo/x-h265:\n stream-format: byte-stream\n alignment:
au\nvideo/x-pwc1:\n width: [ 1, 32768 ]\n height: [ 1, 32768
]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-pwc2:\n width: [ 1,
32768 ]\n height: [ 1, 32768 ]\n framerate: [ 0/1, 2147483647/1
]\n\nvideo/x-raw(format:Interlaced):\n format: { RGB16, BGR, BGRA,
ABGR, xBGR, RGBx, ARGB, GRAY8, GRAY16_LE, GRAY16_BE, YVU9, YV12, YUY2, YVYU,
UYVY, Y42B, Y41B, YUV9, NV12_64Z32, NV24, NV61, NV16, NV21, NV12, I420, xRGB,
BGRx, RGB, BGR15, RGB15 }\n width: [ 1, 32768 ]\n height: [ 1,
32768 ]\n framerate: [ 0/1, 2147483647/1 ]\n interlace-mode:
alternate\nvideo/x-raw:\n format: { RGB16, BGR, ABGR, xBGR, RGBx,
GRAY8, GRAY16_LE, GRAY16_BE, YVU9, YV12, YUY2, YVYU, UYVY, Y42B, Y41B, YUV9,
NV12_64Z32, NV24, NV61, NV16, NV21, NV12, I420, ARGB, xRGB, RGB, BGRA, BGRx,
BGR15, RGB15 }\n width: [ 1, 32768 ]\n height: [ 1, 32768 ]\n
framerate: [ 0/1, 2147483647/1 ]\nvideo/x-sonix:\n width: [ 1,
32768 ]\n height: [ 1, 32768 ]\n framerate: [ 0/1, 2147483647/1
]\nvideo/x-vp8:\nvideo/x-vp9:\nvideo/x-wmv:\n wmvversion: 3\n
format: WVC1\n",
+ "caps": "image/jpeg:\nvideo/mpeg:\n mpegversion:
4\n systemstream: false\nvideo/mpeg:\n mpegversion: { (int)1, (int)2
}\nvideo/mpegts:\n systemstream: true\nvideo/x-bayer:\n format: {
bggr, gbrg, grbg, rggb }\n width: [ 1, 32768 ]\n height: [ 1,
32768 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-dv:\n systemstream:
true\nvideo/x-fwht:\nvideo/x-h263:\n variant: itu\nvideo/x-h264:\n
stream-format: { (string)byte-stream, (string)avc }\n alignment:
au\nvideo/x-h265:\n stream-format: byte-stream\n alignment:
au\nvideo/x-pwc1:\n width: [ 1, 32768 ]\n height: [ 1, 32768
]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-pwc2:\n width: [ 1,
32768 ]\n height: [ 1, 32768 ]\n framerate: [ 0/1, 2147483647/1
]\nvideo/x-raw:\n format: { RGB16, BGR, ABGR, xBGR, RGBx, GRAY8,
GRAY16_LE, GRAY16_BE, YVU9, YV12, YUY2, YVYU, UYVY, Y42B, Y41B, YUV9,
NV12_64Z32, NV24, NV61, NV16, NV21, NV12, I420, ARGB, xRGB, RGB, BGRA, BGRx,
BGR15, RGB15 }\n width: [ 1, 32768 ]\n height: [ 1, 32768 ]\n
framerate: [ 0/1, 2147483647/1 ]\nvideo/x-sonix:\n width: [ 1,
32768 ]\n height: [ 1, 32768 ]\n framerate: [ 0/1, 2147483647/1
]\nvideo/x-vp8:\nvideo/x-vp9:\nvideo/x-wmv:\n wmvversion: 3\n
format: WVC1\n\nvideo/x-raw(format:Interlaced):\n format: { RGB16, BGR,
ABGR, xBGR, RGBx, GRAY8, GRAY16_LE, GRAY16_BE, YVU9, YV12, YUY2, YVYU, UYVY,
Y42B, Y41B, YUV9, NV12_64Z32, NV24, NV61, NV16, NV21, NV12, I420, ARGB, xRGB,
RGB, BGRA, BGRx, BGR15, RGB15 }\n width: [ 1, 32768 ]\n
height: [ 1, 32768 ]\n framerate: [ 0/1, 2147483647/1 ]\n interlace-mode:
alternate\n",
"direction": "sink",
"presence": "always"
}
@@ -24511,7 +24511,7 @@
"long-name": "Video (video4linux2) Source",
"pad-templates": {
"src": {
- "caps": "image/jpeg:\nvideo/mpeg:\n mpegversion:
4\n systemstream: false\nvideo/mpeg:\n mpegversion: { (int)1, (int)2
}\nvideo/mpegts:\n systemstream: true\nvideo/x-bayer:\n format: {
bggr, gbrg, grbg, rggb }\n width: [ 1, 32768 ]\n height: [ 1,
32768 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-dv:\n systemstream:
true\nvideo/x-fwht:\nvideo/x-h263:\n variant: itu\nvideo/x-h264:\n
stream-format: { (string)byte-stream, (string)avc }\n alignment:
au\nvideo/x-h265:\n stream-format: byte-stream\n alignment:
au\nvideo/x-pwc1:\n width: [ 1, 32768 ]\n height: [ 1, 32768
]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-pwc2:\n width: [ 1,
32768 ]\n height: [ 1, 32768 ]\n framerate: [ 0/1, 2147483647/1
]\n\nvideo/x-raw(format:Interlaced):\n format: { RGB16, BGR, BGRA,
ABGR, xBGR, RGBx, ARGB, GRAY8, GRAY16_LE, GRAY16_BE, YVU9, YV12, YUY2, YVYU,
UYVY, Y42B, Y41B, YUV9, NV12_64Z32, NV24, NV61, NV16, NV21, NV12, I420, xRGB,
BGRx, RGB, BGR15, RGB15 }\n width: [ 1, 32768 ]\n height: [ 1,
32768 ]\n framerate: [ 0/1, 2147483647/1 ]\n interlace-mode:
alternate\nvideo/x-raw:\n format: { RGB16, BGR, ABGR, xBGR, RGBx,
GRAY8, GRAY16_LE, GRAY16_BE, YVU9, YV12, YUY2, YVYU, UYVY, Y42B, Y41B, YUV9,
NV12_64Z32, NV24, NV61, NV16, NV21, NV12, I420, ARGB, xRGB, RGB, BGRA, BGRx,
BGR15, RGB15 }\n width: [ 1, 32768 ]\n height: [ 1, 32768 ]\n
framerate: [ 0/1, 2147483647/1 ]\nvideo/x-sonix:\n width: [ 1,
32768 ]\n height: [ 1, 32768 ]\n framerate: [ 0/1, 2147483647/1
]\nvideo/x-vp8:\nvideo/x-vp9:\nvideo/x-wmv:\n wmvversion: 3\n
format: WVC1\n",
+ "caps": "image/jpeg:\nvideo/mpeg:\n mpegversion:
4\n systemstream: false\nvideo/mpeg:\n mpegversion: { (int)1, (int)2
}\nvideo/mpegts:\n systemstream: true\nvideo/x-bayer:\n format: {
bggr, gbrg, grbg, rggb }\n width: [ 1, 32768 ]\n height: [ 1,
32768 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-dv:\n systemstream:
true\nvideo/x-fwht:\nvideo/x-h263:\n variant: itu\nvideo/x-h264:\n
stream-format: { (string)byte-stream, (string)avc }\n alignment:
au\nvideo/x-h265:\n stream-format: byte-stream\n alignment:
au\nvideo/x-pwc1:\n width: [ 1, 32768 ]\n height: [ 1, 32768
]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-pwc2:\n width: [ 1,
32768 ]\n height: [ 1, 32768 ]\n framerate: [ 0/1, 2147483647/1
]\nvideo/x-raw:\n format: { RGB16, BGR, ABGR, xBGR, RGBx, GRAY8,
GRAY16_LE, GRAY16_BE, YVU9, YV12, YUY2, YVYU, UYVY, Y42B, Y41B, YUV9,
NV12_64Z32, NV24, NV61, NV16, NV21, NV12, I420, ARGB, xRGB, RGB, BGRA, BGRx,
BGR15, RGB15 }\n width: [ 1, 32768 ]\n height: [ 1, 32768 ]\n
framerate: [ 0/1, 2147483647/1 ]\nvideo/x-sonix:\n width: [ 1,
32768 ]\n height: [ 1, 32768 ]\n framerate: [ 0/1, 2147483647/1
]\nvideo/x-vp8:\nvideo/x-vp9:\nvideo/x-wmv:\n wmvversion: 3\n
format: WVC1\n\nvideo/x-raw(format:Interlaced):\n format: { RGB16, BGR,
ABGR, xBGR, RGBx, GRAY8, GRAY16_LE, GRAY16_BE, YVU9, YV12, YUY2, YVYU, UYVY,
Y42B, Y41B, YUV9, NV12_64Z32, NV24, NV61, NV16, NV21, NV12, I420, ARGB, xRGB,
RGB, BGRA, BGRx, BGR15, RGB15 }\n width: [ 1, 32768 ]\n
height: [ 1, 32768 ]\n framerate: [ 0/1, 2147483647/1 ]\n interlace-mode:
alternate\n",
"direction": "src",
"presence": "always"
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/gst-plugins-good-1.18.1/gst/audioparsers/gstaacparse.c
new/gst-plugins-good-1.18.2/gst/audioparsers/gstaacparse.c
--- old/gst-plugins-good-1.18.1/gst/audioparsers/gstaacparse.c 2020-10-26
12:12:12.648012000 +0100
+++ new/gst-plugins-good-1.18.2/gst/audioparsers/gstaacparse.c 2020-12-06
14:22:59.000000000 +0100
@@ -173,7 +173,7 @@
gst_aac_parse_set_src_caps (GstAacParse * aacparse, GstCaps * sink_caps)
{
GstStructure *s;
- GstCaps *src_caps = NULL, *allowed;
+ GstCaps *src_caps = NULL, *peercaps;
gboolean res = FALSE;
const gchar *stream_format;
guint8 codec_data[2];
@@ -226,8 +226,8 @@
if (stream_format)
gst_structure_set (s, "stream-format", G_TYPE_STRING, stream_format, NULL);
- allowed = gst_pad_get_allowed_caps (GST_BASE_PARSE (aacparse)->srcpad);
- if (allowed && !gst_caps_can_intersect (src_caps, allowed)) {
+ peercaps = gst_pad_peer_query_caps (GST_BASE_PARSE_SRC_PAD (aacparse), NULL);
+ if (peercaps && !gst_caps_can_intersect (src_caps, peercaps)) {
GST_DEBUG_OBJECT (GST_BASE_PARSE (aacparse)->srcpad,
"Caps can not intersect");
if (aacparse->header_type == DSPAAC_HEADER_ADTS) {
@@ -235,7 +235,7 @@
"Input is ADTS, trying raw");
gst_caps_set_simple (src_caps, "stream-format", G_TYPE_STRING, "raw",
NULL);
- if (gst_caps_can_intersect (src_caps, allowed)) {
+ if (gst_caps_can_intersect (src_caps, peercaps)) {
GstBuffer *codec_data_buffer;
GST_DEBUG_OBJECT (GST_BASE_PARSE (aacparse)->srcpad,
@@ -255,15 +255,15 @@
"Input is raw, trying ADTS");
gst_caps_set_simple (src_caps, "stream-format", G_TYPE_STRING, "adts",
NULL);
- if (gst_caps_can_intersect (src_caps, allowed)) {
+ if (gst_caps_can_intersect (src_caps, peercaps)) {
GST_DEBUG_OBJECT (GST_BASE_PARSE (aacparse)->srcpad,
"Caps can intersect, we will prepend ADTS headers");
aacparse->output_header_type = DSPAAC_HEADER_ADTS;
}
}
}
- if (allowed)
- gst_caps_unref (allowed);
+ if (peercaps)
+ gst_caps_unref (peercaps);
aacparse->last_parsed_channels = 0;
aacparse->last_parsed_sample_rate = 0;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/gst-plugins-good-1.18.1/gst/deinterlace/meson.build
new/gst-plugins-good-1.18.2/gst/deinterlace/meson.build
--- old/gst-plugins-good-1.18.1/gst/deinterlace/meson.build 2020-10-26
12:12:12.656011800 +0100
+++ new/gst-plugins-good-1.18.2/gst/deinterlace/meson.build 2020-12-06
14:22:59.000000000 +0100
@@ -65,8 +65,7 @@
else
asm_outformat = 'elf64'
endif
- asm_x = files('x86/yadif.asm',
- 'x86/x86inc.asm')
+ asm_x = files('x86/yadif.asm')
asm_stackalign_def = '-DSTACK_ALIGNMENT=64'
asm_incdir = 'x86'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/gst-plugins-good-1.18.1/gst/flv/gstflvmux.c
new/gst-plugins-good-1.18.2/gst/flv/gstflvmux.c
--- old/gst-plugins-good-1.18.1/gst/flv/gstflvmux.c 2020-10-26
12:12:12.664012000 +0100
+++ new/gst-plugins-good-1.18.2/gst/flv/gstflvmux.c 2020-12-06
14:22:59.000000000 +0100
@@ -781,9 +781,10 @@
gst_flv_mux_release_pad (GstElement * element, GstPad * pad)
{
GstFlvMux *mux = GST_FLV_MUX (element);
- GstFlvMuxPad *flvpad = GST_FLV_MUX_PAD (pad);
+ GstFlvMuxPad *flvpad = GST_FLV_MUX_PAD (gst_object_ref (pad));
+
+ GST_ELEMENT_CLASS (gst_flv_mux_parent_class)->release_pad (element, pad);
- gst_pad_set_active (pad, FALSE);
gst_flv_mux_reset_pad (flvpad);
if (flvpad == mux->video_pad) {
@@ -794,7 +795,7 @@
GST_WARNING_OBJECT (pad, "Pad is not known audio or video pad");
}
- gst_element_remove_pad (element, pad);
+ gst_object_unref (flvpad);
}
static GstFlowReturn
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/gst-plugins-good-1.18.1/gst/isomp4/gstqtmux.c
new/gst-plugins-good-1.18.2/gst/isomp4/gstqtmux.c
--- old/gst-plugins-good-1.18.1/gst/isomp4/gstqtmux.c 2020-10-26
12:12:12.672011900 +0100
+++ new/gst-plugins-good-1.18.2/gst/isomp4/gstqtmux.c 2020-12-06
14:22:59.000000000 +0100
@@ -3377,6 +3377,7 @@
gst_aggregator_update_segment (GST_AGGREGATOR (qtmux), &segment);
}
+ GST_OBJECT_LOCK (qtmux);
qtmux->current_chunk_size = 0;
qtmux->current_chunk_duration = 0;
qtmux->current_chunk_offset = -1;
@@ -3384,7 +3385,6 @@
qtmux->current_pad = NULL;
qtmux->longest_chunk = GST_CLOCK_TIME_NONE;
- GST_OBJECT_LOCK (qtmux);
for (l = GST_ELEMENT_CAST (qtmux)->sinkpads; l; l = l->next) {
GstQTMuxPad *qtpad = (GstQTMuxPad *) l->data;
@@ -6486,18 +6486,25 @@
gst_qt_mux_release_pad (GstElement * element, GstPad * pad)
{
GstQTMux *mux = GST_QT_MUX_CAST (element);
+ GstQTMuxPad *muxpad = GST_QT_MUX_PAD_CAST (pad);
GST_DEBUG_OBJECT (element, "Releasing %s:%s", GST_DEBUG_PAD_NAME (pad));
- gst_element_remove_pad (element, pad);
+ /* Take a ref to the pad so we can clean it up after removing it from the
element */
+ pad = gst_object_ref (pad);
+
+ /* Do aggregate level cleanup */
+ GST_ELEMENT_CLASS (parent_class)->release_pad (element, pad);
+ GST_OBJECT_LOCK (mux);
if (mux->current_pad && GST_PAD (mux->current_pad) == pad) {
mux->current_pad = NULL;
mux->current_chunk_size = 0;
mux->current_chunk_duration = 0;
}
- GST_OBJECT_LOCK (mux);
+ gst_qt_mux_pad_reset (muxpad);
+
if (GST_ELEMENT (mux)->sinkpads == NULL) {
/* No more outstanding request pads, reset our counters */
mux->video_pads = 0;
@@ -6505,6 +6512,8 @@
mux->subtitle_pads = 0;
}
GST_OBJECT_UNLOCK (mux);
+
+ gst_object_unref (pad);
}
static GstAggregatorPad *
@@ -6572,9 +6581,12 @@
g_free (name);
/* set up pad */
+ GST_OBJECT_LOCK (qtmux);
gst_qt_mux_pad_reset (qtpad);
qtpad->trak = atom_trak_new (qtmux->context);
+
atom_moov_add_trak (qtmux->moov, qtpad->trak);
+ GST_OBJECT_UNLOCK (qtmux);
/* set up pad functions */
qtpad->set_caps = setcaps_func;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/gst-plugins-good-1.18.1/gst/matroska/matroska-mux.c
new/gst-plugins-good-1.18.2/gst/matroska/matroska-mux.c
--- old/gst-plugins-good-1.18.1/gst/matroska/matroska-mux.c 2020-10-26
12:12:12.680012000 +0100
+++ new/gst-plugins-good-1.18.2/gst/matroska/matroska-mux.c 2020-12-06
14:22:59.000000000 +0100
@@ -2255,8 +2255,6 @@
static gboolean
gst_matroska_mux_subtitle_pad_setcaps (GstPad * pad, GstCaps * caps)
{
- GstCollectData *data = (GstCollectData *) (pad);
-
/* There is now (at least) one such alement (kateenc), and I'm going
to handle it here and claim it works when it can be piped back
through GStreamer and VLC */
@@ -2265,6 +2263,7 @@
GstMatroskaTrackSubtitleContext *scontext;
GstMatroskaMux *mux;
GstMatroskaPad *collect_pad;
+ GstCollectData *data;
const gchar *mimetype;
GstStructure *structure;
const GValue *value = NULL;
@@ -2293,6 +2292,8 @@
/* find context */
collect_pad = (GstMatroskaPad *) gst_pad_get_element_private (pad);
g_assert (collect_pad);
+ data = (GstCollectData *) (collect_pad);
+
context = collect_pad->track;
g_assert (context);
g_assert (context->type == GST_MATROSKA_TRACK_TYPE_SUBTITLE);
@@ -2373,10 +2374,8 @@
GST_COLLECT_PADS_STREAM_LOCK (mux->collect);
GST_COLLECT_PADS_STATE_UNSET (data, GST_COLLECT_PADS_STATE_LOCKED);
gst_collect_pads_set_waiting (mux->collect, data, FALSE);
- GST_COLLECT_PADS_STATE_SET (data, GST_COLLECT_PADS_STATE_LOCKED);
GST_COLLECT_PADS_STREAM_UNLOCK (mux->collect);
-
exit:
return ret;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/gst-plugins-good-1.18.1/gst/multifile/gstsplitmuxsink.c
new/gst-plugins-good-1.18.2/gst/multifile/gstsplitmuxsink.c
--- old/gst-plugins-good-1.18.1/gst/multifile/gstsplitmuxsink.c 2020-10-26
12:12:12.684012000 +0100
+++ new/gst-plugins-good-1.18.2/gst/multifile/gstsplitmuxsink.c 2020-12-06
14:22:59.000000000 +0100
@@ -80,6 +80,9 @@
GST_DEBUG_CATEGORY_STATIC (splitmux_debug);
#define GST_CAT_DEFAULT splitmux_debug
+#define GST_SPLITMUX_STATE_LOCK(s) g_mutex_lock(&(s)->state_lock)
+#define GST_SPLITMUX_STATE_UNLOCK(s) g_mutex_unlock(&(s)->state_lock)
+
#define GST_SPLITMUX_LOCK(s) g_mutex_lock(&(s)->lock)
#define GST_SPLITMUX_UNLOCK(s) g_mutex_unlock(&(s)->lock)
#define GST_SPLITMUX_WAIT_INPUT(s) g_cond_wait (&(s)->input_cond, &(s)->lock)
@@ -577,6 +580,7 @@
gst_splitmux_sink_init (GstSplitMuxSink * splitmux)
{
g_mutex_init (&splitmux->lock);
+ g_mutex_init (&splitmux->state_lock);
g_cond_init (&splitmux->input_cond);
g_cond_init (&splitmux->output_cond);
g_queue_init (&splitmux->out_cmd_q);
@@ -650,6 +654,7 @@
g_cond_clear (&splitmux->input_cond);
g_cond_clear (&splitmux->output_cond);
g_mutex_clear (&splitmux->lock);
+ g_mutex_clear (&splitmux->state_lock);
g_queue_foreach (&splitmux->out_cmd_q, (GFunc) out_cmd_buf_free, NULL);
g_queue_clear (&splitmux->out_cmd_q);
@@ -1178,16 +1183,15 @@
helper->pad = sinkpad; /* Takes the reference */
ctx->out_eos_async_done = TRUE;
- /* HACK: Here, we explicitly unset the SINK flag on the target sink element
- * that's about to be asynchronously disposed, so that it no longer
- * participates in GstBin EOS logic. This fixes a race where if
- * splitmuxsink really reaches EOS before an asynchronous background
- * element has finished, then the bin won't actually send EOS to the
- * pipeline. Even after finishing and removing the old element, the
- * bin doesn't re-check EOS status on removing a SINK element. This
- * should be fixed in core, making this hack unnecessary. */
- GST_OBJECT_FLAG_UNSET (splitmux->active_sink, GST_ELEMENT_FLAG_SINK);
+ /* There used to be a bug here, where we had to explicitly remove
+ * the SINK flag so that GstBin would ignore it for EOS purposes.
+ * That fixed a race where if splitmuxsink really reaches EOS
+ * before an asynchronous background element has finished, then
+ * the bin wouldn't actually send EOS to the pipeline. Even after
+ * finishing and removing the old element, the bin didn't re-check
+ * EOS status on removing a SINK element. That bug was fixed
+ * in core. */
GST_DEBUG_OBJECT (splitmux, "scheduled EOS to pad %" GST_PTR_FORMAT " ctx
%p",
sinkpad, ctx);
@@ -1263,6 +1267,7 @@
continue;
case SPLITMUX_OUTPUT_STATE_ENDING_FILE:
+ case SPLITMUX_OUTPUT_STATE_ENDING_STREAM:
/* We've reached the max out running_time to get here, so end this
file now */
if (ctx->out_eos == FALSE) {
if (splitmux->async_finalize) {
@@ -1586,6 +1591,12 @@
if (splitmux->output_state == SPLITMUX_OUTPUT_STATE_STOPPED)
goto beach;
ctx->out_eos = TRUE;
+
+ if (ctx == splitmux->reference_ctx) {
+ splitmux->output_state = SPLITMUX_OUTPUT_STATE_ENDING_STREAM;
+ GST_SPLITMUX_BROADCAST_OUTPUT (splitmux);
+ }
+
GST_INFO_OBJECT (splitmux,
"Have EOS event at pad %" GST_PTR_FORMAT " ctx %p", pad, ctx);
break;
@@ -1900,7 +1911,14 @@
sink = gst_object_ref (splitmux->active_sink);
GST_SPLITMUX_UNLOCK (splitmux);
- GST_STATE_LOCK (splitmux);
+ GST_SPLITMUX_STATE_LOCK (splitmux);
+
+ if (splitmux->shutdown) {
+ GST_DEBUG_OBJECT (splitmux,
+ "Shutdown requested. Aborting fragment switch.");
+ GST_SPLITMUX_STATE_UNLOCK (splitmux);
+ return;
+ }
if (splitmux->async_finalize) {
if (splitmux->muxed_out_bytes > 0
@@ -2013,7 +2031,7 @@
gst_object_unref (muxer);
GST_SPLITMUX_LOCK (splitmux);
- GST_STATE_UNLOCK (splitmux);
+ GST_SPLITMUX_STATE_UNLOCK (splitmux);
splitmux->switching_fragment = FALSE;
do_async_done (splitmux);
@@ -2031,7 +2049,7 @@
return;
fail:
- GST_STATE_UNLOCK (splitmux);
+ GST_SPLITMUX_STATE_UNLOCK (splitmux);
GST_ELEMENT_ERROR (splitmux, RESOURCE, SETTINGS,
("Could not create the new muxer/sink"), NULL);
}
@@ -2084,7 +2102,12 @@
GST_SPLITMUX_UNLOCK (splitmux);
return;
}
- } else if (splitmux->output_state == SPLITMUX_OUTPUT_STATE_ENDING_FILE) {
+ } else if (splitmux->output_state ==
SPLITMUX_OUTPUT_STATE_ENDING_STREAM) {
+ GST_DEBUG_OBJECT (splitmux,
+ "Passing EOS message. Output state %d max_out_running_time %"
+ GST_STIME_FORMAT, splitmux->output_state,
+ GST_STIME_ARGS (splitmux->max_out_running_time));
+ } else {
GST_DEBUG_OBJECT (splitmux, "Caught EOS at end of fragment, dropping");
splitmux->output_state = SPLITMUX_OUTPUT_STATE_START_NEXT_FILE;
GST_SPLITMUX_BROADCAST_OUTPUT (splitmux);
@@ -2092,11 +2115,6 @@
gst_message_unref (message);
GST_SPLITMUX_UNLOCK (splitmux);
return;
- } else {
- GST_DEBUG_OBJECT (splitmux,
- "Passing EOS message. Output state %d max_out_running_time %"
- GST_STIME_FORMAT, splitmux->output_state,
- GST_STIME_ARGS (splitmux->max_out_running_time));
}
GST_SPLITMUX_UNLOCK (splitmux);
break;
@@ -2186,8 +2204,10 @@
&& splitmux->muxer_has_reserved_props;
GST_OBJECT_UNLOCK (splitmux);
- /* Have we muxed anything into the new file at all? */
- if (splitmux->fragment_total_bytes <= 0)
+ /* Have we muxed at least one thing from the reference
+ * stream into the file? If not, no other streams can have
+ * either */
+ if (splitmux->fragment_reference_bytes <= 0)
return FALSE;
/* User told us to split now */
@@ -2361,6 +2381,7 @@
new_out_ts = splitmux->reference_ctx->in_running_time;
splitmux->fragment_start_time = splitmux->gop_start_time;
splitmux->fragment_total_bytes = 0;
+ splitmux->fragment_reference_bytes = 0;
if (splitmux->tc_interval) {
video_time_code_replace (&splitmux->fragment_start_tc,
@@ -2501,16 +2522,19 @@
if (ctx->in_eos)
return;
- /* Some pad is not yet ready, or GOP is being pushed
- * either way, sleep and wait to get woken */
-
if (splitmux->input_state == SPLITMUX_INPUT_STATE_WAITING_GOP_COLLECT &&
!ctx->flushing &&
(ctx->in_running_time >= splitmux->max_in_running_time) &&
(splitmux->max_in_running_time != GST_CLOCK_STIME_NONE)) {
+ /* Some pad is not yet ready, or GOP is being pushed
+ * either way, sleep and wait to get woken */
GST_LOG_OBJECT (splitmux, "Sleeping for GOP collection (ctx %p)", ctx);
GST_SPLITMUX_WAIT_INPUT (splitmux);
GST_LOG_OBJECT (splitmux, "Done waiting for complete GOP (ctx %p)", ctx);
+ } else {
+ /* This pad is not ready or the state changed - break out and get another
+ * buffer / event */
+ break;
}
} while (splitmux->input_state == SPLITMUX_INPUT_STATE_WAITING_GOP_COLLECT);
}
@@ -2800,6 +2824,9 @@
/* Update total input byte counter for overflow detect */
splitmux->gop_total_bytes += buf_info->buf_size;
+ if (ctx->is_reference) {
+ splitmux->fragment_reference_bytes += buf_info->buf_size;
+ }
/* Now add this buffer to the queue just before returning */
g_queue_push_head (&ctx->queued_bufs, buf_info);
@@ -3494,6 +3521,7 @@
GST_CLOCK_STIME_NONE;
splitmux->max_out_running_time = 0;
splitmux->fragment_total_bytes = 0;
+ splitmux->fragment_reference_bytes = 0;
splitmux->gop_total_bytes = 0;
splitmux->muxed_out_bytes = 0;
splitmux->ready_for_output = FALSE;
@@ -3540,12 +3568,21 @@
splitmux->output_state = SPLITMUX_OUTPUT_STATE_START_NEXT_FILE;
GST_SPLITMUX_UNLOCK (splitmux);
+
+ GST_SPLITMUX_STATE_LOCK (splitmux);
+ splitmux->shutdown = FALSE;
+ GST_SPLITMUX_STATE_UNLOCK (splitmux);
break;
}
case GST_STATE_CHANGE_PAUSED_TO_READY:
g_atomic_int_set (&(splitmux->split_requested), FALSE);
g_atomic_int_set (&(splitmux->do_split_next_gop), FALSE);
+
case GST_STATE_CHANGE_READY_TO_NULL:
+ GST_SPLITMUX_STATE_LOCK (splitmux);
+ splitmux->shutdown = TRUE;
+ GST_SPLITMUX_STATE_UNLOCK (splitmux);
+
GST_SPLITMUX_LOCK (splitmux);
gst_splitmux_sink_reset (splitmux);
splitmux->output_state = SPLITMUX_OUTPUT_STATE_STOPPED;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/gst-plugins-good-1.18.1/gst/multifile/gstsplitmuxsink.h
new/gst-plugins-good-1.18.2/gst/multifile/gstsplitmuxsink.h
--- old/gst-plugins-good-1.18.1/gst/multifile/gstsplitmuxsink.h 2020-10-26
12:12:12.684012000 +0100
+++ new/gst-plugins-good-1.18.2/gst/multifile/gstsplitmuxsink.h 2020-12-06
14:22:59.000000000 +0100
@@ -50,6 +50,7 @@
SPLITMUX_OUTPUT_STATE_AWAITING_COMMAND, /* Waiting first command
packet from input */
SPLITMUX_OUTPUT_STATE_OUTPUT_GOP, /* Outputting a collected GOP */
SPLITMUX_OUTPUT_STATE_ENDING_FILE, /* Finishing the current fragment */
+ SPLITMUX_OUTPUT_STATE_ENDING_STREAM, /* Finishing up the entire stream due
to input EOS */
SPLITMUX_OUTPUT_STATE_START_NEXT_FILE /* Restarting after ENDING_FILE */
} SplitMuxOutputState;
@@ -105,7 +106,11 @@
{
GstBin parent;
+ GMutex state_lock;
+ gboolean shutdown;
+
GMutex lock;
+
GCond input_cond;
GCond output_cond;
@@ -144,6 +149,10 @@
/* Number of bytes sent to the
* current fragment */
guint64 fragment_total_bytes;
+ /* Number of bytes for the reference
+ * stream in this fragment */
+ guint64 fragment_reference_bytes;
+
/* Number of bytes we've collected into
* the GOP that's being collected */
guint64 gop_total_bytes;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/gst-plugins-good-1.18.1/gst/multifile/gstsplitmuxsrc.c
new/gst-plugins-good-1.18.2/gst/multifile/gstsplitmuxsrc.c
--- old/gst-plugins-good-1.18.1/gst/multifile/gstsplitmuxsrc.c 2020-10-26
12:12:12.684012000 +0100
+++ new/gst-plugins-good-1.18.2/gst/multifile/gstsplitmuxsrc.c 2020-12-06
14:22:59.000000000 +0100
@@ -993,7 +993,7 @@
SPLITMUX_SRC_LOCK (splitmux);
if (!splitmux->running)
goto out;
-
+ splitmux->running = FALSE;
GST_DEBUG_OBJECT (splitmux, "Stopping");
SPLITMUX_SRC_UNLOCK (splitmux);
@@ -1028,7 +1028,6 @@
splitmux->num_parts = 0;
splitmux->num_prepared_parts = 0;
splitmux->num_created_parts = 0;
- splitmux->running = FALSE;
splitmux->total_duration = GST_CLOCK_TIME_NONE;
/* Reset playback segment */
gst_segment_init (&splitmux->play_segment, GST_FORMAT_TIME);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/gst-plugins-good-1.18.1/gst/rtsp/gstrtspsrc.c
new/gst-plugins-good-1.18.2/gst/rtsp/gstrtspsrc.c
--- old/gst-plugins-good-1.18.1/gst/rtsp/gstrtspsrc.c 2020-10-26
12:12:12.704012000 +0100
+++ new/gst-plugins-good-1.18.2/gst/rtsp/gstrtspsrc.c 2020-12-06
14:22:59.000000000 +0100
@@ -1400,6 +1400,7 @@
src->onvif_rate_control = DEFAULT_ONVIF_RATE_CONTROL;
src->is_live = DEFAULT_IS_LIVE;
src->seek_seqnum = GST_SEQNUM_INVALID;
+ src->group_id = GST_GROUP_ID_INVALID;
/* get a list of all extensions */
src->extensions = gst_rtsp_ext_list_get ();
@@ -1423,6 +1424,8 @@
g_mutex_init (&src->conninfo.recv_lock);
g_cond_init (&src->cmd_cond);
+ g_mutex_init (&src->group_lock);
+
GST_OBJECT_FLAG_SET (src, GST_ELEMENT_FLAG_SOURCE);
gst_bin_set_suppressed_flags (GST_BIN (src),
GST_ELEMENT_FLAG_SOURCE | GST_ELEMENT_FLAG_SINK);
@@ -1478,6 +1481,8 @@
g_mutex_clear (&rtspsrc->conninfo.recv_lock);
g_cond_clear (&rtspsrc->cmd_cond);
+ g_mutex_clear (&rtspsrc->group_lock);
+
G_OBJECT_CLASS (parent_class)->finalize (object);
}
@@ -2987,6 +2992,19 @@
return res;
}
+static void
+gst_rtspsrc_stream_start_event_add_group_id (GstRTSPSrc * src, GstEvent *
event)
+{
+ g_mutex_lock (&src->group_lock);
+
+ if (src->group_id == GST_GROUP_ID_INVALID)
+ src->group_id = gst_util_group_id_next ();
+
+ g_mutex_unlock (&src->group_lock);
+
+ gst_event_set_group_id (event, src->group_id);
+}
+
static gboolean
gst_rtspsrc_handle_src_sink_event (GstPad * pad, GstObject * parent,
GstEvent * event)
@@ -2998,14 +3016,22 @@
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_STREAM_START:{
- const gchar *upstream_id;
+ GChecksum *cs;
+ gchar *uri;
gchar *stream_id;
- gst_event_parse_stream_start (event, &upstream_id);
- stream_id = g_strdup_printf ("%s/%s", upstream_id, stream->stream_id);
+ cs = g_checksum_new (G_CHECKSUM_SHA256);
+ uri = self->conninfo.location;
+ g_checksum_update (cs, (const guchar *) uri, strlen (uri));
+ stream_id =
+ g_strdup_printf ("%s/%s", g_checksum_get_string (cs),
+ stream->stream_id);
+
+ g_checksum_free (cs);
gst_event_unref (event);
event = gst_event_new_stream_start (stream_id);
+ gst_rtspsrc_stream_start_event_add_group_id (self, event);
g_free (stream_id);
break;
}
@@ -5388,7 +5414,6 @@
GChecksum *cs;
gchar *uri;
GList *streams;
- guint group_id = gst_util_group_id_next ();
/* generate an SHA256 sum of the URI */
cs = g_checksum_new (G_CHECKSUM_SHA256);
@@ -5406,8 +5431,10 @@
stream_id =
g_strdup_printf ("%s/%d", g_checksum_get_string (cs), ostream->id);
+
event = gst_event_new_stream_start (stream_id);
- gst_event_set_group_id (event, group_id);
+
+ gst_rtspsrc_stream_start_event_add_group_id (src, event);
g_free (stream_id);
gst_rtspsrc_stream_push_event (src, ostream, event);
@@ -9168,6 +9195,7 @@
}
break;
case GST_STATE_CHANGE_PAUSED_TO_READY:
+ rtspsrc->group_id = GST_GROUP_ID_INVALID;
break;
default:
break;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/gst-plugins-good-1.18.1/gst/rtsp/gstrtspsrc.h
new/gst-plugins-good-1.18.2/gst/rtsp/gstrtspsrc.h
--- old/gst-plugins-good-1.18.1/gst/rtsp/gstrtspsrc.h 2020-10-26
12:12:12.704012000 +0100
+++ new/gst-plugins-good-1.18.2/gst/rtsp/gstrtspsrc.h 2020-12-06
14:22:59.000000000 +0100
@@ -324,6 +324,9 @@
GstRTSPVersion version;
GstEvent *initial_seek;
+
+ guint group_id;
+ GMutex group_lock;
};
struct _GstRTSPSrcClass {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/gst-plugins-good-1.18.1/gst-plugins-good.doap
new/gst-plugins-good-1.18.2/gst-plugins-good.doap
--- old/gst-plugins-good-1.18.1/gst-plugins-good.doap 2020-10-26
12:12:12.644011700 +0100
+++ new/gst-plugins-good-1.18.2/gst-plugins-good.doap 2020-12-06
14:22:59.000000000 +0100
@@ -34,6 +34,16 @@
<release>
<Version>
+ <revision>1.18.2</revision>
+ <branch>1.18</branch>
+ <name></name>
+ <created>2020-12-06</created>
+ <file-release
rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.18.2.tar.xz"
/>
+ </Version>
+ </release>
+
+ <release>
+ <Version>
<revision>1.18.1</revision>
<branch>1.18</branch>
<name></name>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/gst-plugins-good-1.18.1/meson.build new/gst-plugins-good-1.18.2/meson.build
--- old/gst-plugins-good-1.18.1/meson.build 2020-10-26 12:12:12.712011800
+0100
+++ new/gst-plugins-good-1.18.2/meson.build 2020-12-06 14:22:59.000000000
+0100
@@ -1,5 +1,5 @@
project('gst-plugins-good', 'c',
- version : '1.18.1',
+ version : '1.18.2',
meson_version : '>= 0.48',
default_options : [ 'warning_level=1',
'buildtype=debugoptimized' ])
@@ -363,9 +363,7 @@
# FIXME: nasm path needs testing on non-Linux, esp. Windows
host_cpu = host_machine.cpu_family()
if host_cpu == 'x86_64'
- if cc.get_id() == 'msvc'
- message('Nasm disabled on MSVC')
- elif cc.get_define('__ILP32__') == '1'
+ if cc.get_define('__ILP32__') == '1'
message('Nasm disabled on x32')
else
asm_option = get_option('asm')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/gst-plugins-good-1.18.1/sys/rpicamsrc/meson.build
new/gst-plugins-good-1.18.2/sys/rpicamsrc/meson.build
--- old/gst-plugins-good-1.18.1/sys/rpicamsrc/meson.build 2020-10-26
12:12:12.724012000 +0100
+++ new/gst-plugins-good-1.18.2/sys/rpicamsrc/meson.build 2020-12-06
14:22:59.000000000 +0100
@@ -34,7 +34,7 @@
endif
mmal_deps = []
-foreach rpi_lib : ['mmal_core', 'mmal_util', 'mmal_vc_client', 'vcos',
'bcm_host']
+foreach rpi_lib : ['mmal_core', 'mmal_util', 'mmal_vc_client', 'vcos',
'vchostif', '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' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/gst-plugins-good-1.18.1/sys/v4l2/gstv4l2object.c
new/gst-plugins-good-1.18.2/sys/v4l2/gstv4l2object.c
--- old/gst-plugins-good-1.18.1/sys/v4l2/gstv4l2object.c 2020-10-26
12:12:12.728011800 +0100
+++ new/gst-plugins-good-1.18.2/sys/v4l2/gstv4l2object.c 2020-12-06
14:22:59.000000000 +0100
@@ -1644,10 +1644,11 @@
gst_v4l2_object_get_caps_helper (GstV4L2FormatFlags flags)
{
GstStructure *structure;
- GstCaps *caps;
+ GstCaps *caps, *caps_interlaced;
guint i;
caps = gst_caps_new_empty ();
+ caps_interlaced = gst_caps_new_empty ();
for (i = 0; i < GST_V4L2_FORMAT_COUNT; i++) {
if ((gst_v4l2_formats[i].flags & flags) == 0)
@@ -1680,14 +1681,19 @@
gst_caps_append_structure (caps, structure);
- if (alt_s)
+ if (alt_s) {
gst_caps_append_structure (caps, alt_s);
+ add_alternate_variant (NULL, caps_interlaced, alt_s);
+ }
- add_alternate_variant (NULL, caps, structure);
+ add_alternate_variant (NULL, caps_interlaced, structure);
}
}
- return gst_caps_simplify (caps);
+ caps = gst_caps_simplify (caps);
+ caps_interlaced = gst_caps_simplify (caps_interlaced);
+
+ return gst_caps_merge (caps, caps_interlaced);
}
GstCaps *
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/gst-plugins-good-1.18.1/tests/check/elements/splitmuxsrc.c
new/gst-plugins-good-1.18.2/tests/check/elements/splitmuxsrc.c
--- old/gst-plugins-good-1.18.1/tests/check/elements/splitmuxsrc.c
2020-10-26 12:12:12.740012000 +0100
+++ new/gst-plugins-good-1.18.2/tests/check/elements/splitmuxsrc.c
2020-12-06 14:22:59.000000000 +0100
@@ -635,9 +635,9 @@
gchar *dest_pattern;
gchar *in_pattern;
- /* This test creates a new file only by changing the caps, which
- * qtmux will reject (for now - if qtmux starts supporting caps
- * changes, this test will break and need fixing/disabling */
+ /* This test checks that splitmuxsink can support the
+ * qtmux robust muxing mode, and switch to a new fragment if the
+ * file index is about to overflow */
pipeline =
gst_parse_launch
("videotestsrc num-buffers=10 !"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh
old/gst-plugins-good-1.18.1/tests/examples/qt/qmlsink-dynamically-added/.gitignore
new/gst-plugins-good-1.18.2/tests/examples/qt/qmlsink-dynamically-added/.gitignore
---
old/gst-plugins-good-1.18.1/tests/examples/qt/qmlsink-dynamically-added/.gitignore
2020-10-26 12:12:12.744011900 +0100
+++
new/gst-plugins-good-1.18.2/tests/examples/qt/qmlsink-dynamically-added/.gitignore
1970-01-01 01:00:00.000000000 +0100
@@ -1,4 +0,0 @@
-deployment.pri
-play
-qrc_qmlsink.cpp
-*.o
_______________________________________________
openSUSE Commits mailing list -- [email protected]
To unsubscribe, email [email protected]
List Netiquette: https://en.opensuse.org/openSUSE:Mailing_list_netiquette
List Archives:
https://lists.opensuse.org/archives/list/[email protected]