Hello community, here is the log from the commit of package gstreamer for openSUSE:Factory checked in at 2020-12-12 20:27:25 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gstreamer (Old) and /work/SRC/openSUSE:Factory/.gstreamer.new.2328 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gstreamer" Sat Dec 12 20:27:25 2020 rev:70 rq:854556 version:1.18.2 Changes: -------- --- /work/SRC/openSUSE:Factory/gstreamer/gstreamer.changes 2020-11-09 13:57:28.459955871 +0100 +++ /work/SRC/openSUSE:Factory/.gstreamer.new.2328/gstreamer.changes 2020-12-12 20:27:32.497550753 +0100 @@ -1,0 +2,40 @@ +Tue Dec 8 23:09:03 UTC 2020 - Bjørn Lie <[email protected]> + +- Update to version 1.18.2: + + Highlighted bugfixes: + - 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 changes: + - 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 +- Fix the _service file and spec to really use the tarball + generated by service. + +------------------------------------------------------------------- Old: ---- gstreamer-1.18.1.tar.xz New: ---- gstreamer-1.18.2.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gstreamer.spec ++++++ --- /var/tmp/diff_new_pack.2dkOKp/_old 2020-12-12 20:27:33.021551297 +0100 +++ /var/tmp/diff_new_pack.2dkOKp/_new 2020-12-12 20:27:33.025551301 +0100 @@ -17,21 +17,26 @@ %define gst_branch 1.0 + Name: gstreamer -Version: 1.18.1 +Version: 1.18.2 Release: 0 Summary: Streaming-Media Framework Runtime License: LGPL-2.1-or-later Group: Productivity/Multimedia/Other -URL: https://gstreamer.freedesktop.org/ -Source0: https://gstreamer.freedesktop.org/src/gstreamer/%{name}-%{version}.tar.xz +URL: https://gstreamer.freedesktop.org +# Disable tarball source url, use _service +#Source0: %%{url}/src/gstreamer/%%{name}-%%{version}.tar.xz +Source0: %{name}-%{version}.tar.xz Source1: gstreamer.macros Source2: gstreamer.prov Source99: baselibs.conf + # PATCH-FEATURE-UPSTREAM gstreamer-rpm-prov.patch bgo#588784 [email protected] -- Add --rpm parameter to allow creation of rpm provides, patch from fedora Patch1: gstreamer-rpm-prov.patch # PATCH-FIX-OPENSUSE gstreamer-pie.patch [email protected] -- create position-independent executables. Patch2: gstreamer-pie.patch + BuildRequires: bison >= 2.4 BuildRequires: check-devel BuildRequires: fdupes ++++++ _service ++++++ --- /var/tmp/diff_new_pack.2dkOKp/_old 2020-12-12 20:27:33.045551321 +0100 +++ /var/tmp/diff_new_pack.2dkOKp/_new 2020-12-12 20:27:33.045551321 +0100 @@ -1,10 +1,15 @@ +<?xml version="1.0"?> <services> <service name="tar_scm" mode="disabled"> <param name="url">https://gitlab.freedesktop.org/gstreamer/gstreamer.git</param> <param name="filename">gstreamer</param> - <!--<param name="versionformat">@PARENT_TAG@+git%cd.%h</param>--> - <param name="versionformat">@PARENT_TAG@</param> - <param name="revision">1.18.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"> ++++++ gstreamer-1.18.1.tar.xz -> gstreamer-1.18.2.tar.xz ++++++ ++++ 2952 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/gstreamer-1.18.1/.gitlab-ci.yml new/gstreamer-1.18.2/.gitlab-ci.yml --- old/gstreamer-1.18.1/.gitlab-ci.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/gstreamer-1.18.2/.gitlab-ci.yml 2020-12-06 14:21:20.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/gstreamer-1.18.1/ChangeLog new/gstreamer-1.18.2/ChangeLog --- old/gstreamer-1.18.1/ChangeLog 2020-10-26 12:08:38.343754000 +0100 +++ new/gstreamer-1.18.2/ChangeLog 2020-12-06 14:21:20.000000000 +0100 @@ -1,3 +1,140 @@ +=== release 1.18.2 === + +2020-12-06 13:21:19 +0000 Tim-Philipp Müller <[email protected]> + + * ChangeLog: + * NEWS: + * RELEASE: + * gstreamer.doap: + * meson.build: + Release 1.18.2 + +2020-12-03 19:22:43 +0100 Marijn Suijten <[email protected]> + + * libs/gst/check/gsttestclock.c: + check: gst_test_clock_process_next_clock_id returns nullable + It is possible there are no more pending clocks in the chain, in which + case this function returns null. + See also tests like test_single_shot_async_future that validate NULL + returns. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/716> + +2020-12-02 09:22:35 +0200 Sebastian Dröge <[email protected]> + + * gst/gststreams.c: + streams: gst_stream_type_get_name() is not nullable + It takes an enum and only the defined values are valid to pass in here + as it's not extensible from the outside. + Add a g_return_val_if_reached() for the unreachable case and return + "invalid". + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/713> + +2020-11-03 22:58:26 -0800 Khem Raj <[email protected]> + + * gst/gst_private.h: + gst_private.h: increse padding in struct _GstClockEntryImpl + When compiling for 32bit architectures with 64bit time_t e.g. riscv32, + the static assert that the GstClockEntryImpl smaller or + equal to the struct _GstClockEntryImpl triggered. + (they were 12bytes off). + To fix this, the padding is increased by 8 bytes (on 32bit). + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/695> + +2020-11-02 17:43:42 +0800 Bing Song <[email protected]> + + * plugins/elements/gstclocksync.c: + * plugins/elements/gstidentity.c: + identity/clocksync: Also provide system clock if sync=false + identity should provide when sync=true. Don't provide when sync=false. + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/630 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/697> + +2020-11-10 21:39:13 +1000 Jonathan Matthew <[email protected]> + + * plugins/elements/gsttypefindelement.c: + * plugins/elements/gsttypefindelement.h: + typefind: copy seqnum to new segment event + Fixes: #635 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/701> + +2020-10-17 12:34:20 +0300 Sebastian Dröge <[email protected]> + + * gst/gstbufferpool.c: + * gst/gstdatetime.c: + * gst/gstdeviceprovider.c: + * gst/gstelement.c: + * gst/gstparse.c: + * gst/gstplugin.c: + * gst/gstregistry.c: + * gst/gststreamcollection.c: + * gst/gsttypefind.c: + * gst/gsttypefindfactory.c: + * gst/gsturi.c: + * gst/gstutils.c: + * libs/gst/base/gstaggregator.c: + * libs/gst/base/gstbasesrc.c: + * libs/gst/base/gstbasetransform.c: + Add some missing nullable annotations + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/699> + +2020-11-03 22:39:54 +1000 Jonathan Matthew <[email protected]> + + * plugins/elements/gstqueue2.c: + queue2: Fix modes in scheduling query handling + Create a new query to send upstream and copy the flags across from it, + rather than reusing the same query, as this allows us to prevent use + of pull mode when we don't have a download file. + Fixes: #629 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/696> + +2020-10-31 15:10:23 -0400 Chris White <[email protected]> + + * gst/gstinfo.c: + gstinfo: colorize PIDs in log messages + The PIDs on log lines were supposed to be colorized before, but the + escape sequence was incorrect. With this change, the code uses the + correct sequence to colorize those PIDs. E.g., instead of `\033[334m` + (incorrect), use `\033[34m` (correct). + This makes the log messages easier to read. It also reduces the chance + that a buggy terminal will choke on the invalid escape sequence. + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/624 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/691> + +2020-10-30 23:46:07 +1100 Jan Schmidt <[email protected]> + + * libs/gst/check/gstharness.c: + * tests/check/libs/gstharness.c: + harness: Handle element not being set cleanly. + If a harness is created with gst_harness_new_empty(), there + might not be an internal element to unref on cleanup. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/687> + +2020-10-30 00:45:42 +1100 Jan Schmidt <[email protected]> + + * gst/gstbin.c: + * tests/check/gst/gstbin.c: + bin: When removing a sink, check if the EOS status changed. + Removing a sink that hasn't posted EOS might change the bin itself + to EOS if it's the last remaining non-EOSed sink. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/685> + +2020-10-16 10:39:08 -0400 Nicolas Dufresne <[email protected]> + + * libs/gst/base/gstaggregator.c: + aggregator: Include min-upstream-latency in buffering time + While we can fixe the upstream latency using the min-upstream-latency, we + are now forced to use queues (hence more thread) in order to store the pending + data whenever we have an upstream source that has lower latency. + This fixes the issue by allowing to buffer the fixed upstream latency. This is + particularly handy on single core systems were having too many threads can + cause serious performance issues. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/684> + +2020-10-27 12:33:56 +0000 Tim-Philipp Müller <[email protected]> + + * meson.build: + Back to development + === release 1.18.1 === 2020-10-26 11:08:36 +0000 Tim-Philipp Müller <[email protected]> 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/gstreamer-1.18.1/NEWS new/gstreamer-1.18.2/NEWS --- old/gstreamer-1.18.1/NEWS 2020-10-26 12:08:38.343754000 +0100 +++ new/gstreamer-1.18.2/NEWS 2020-12-06 14:21:20.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/gstreamer-1.18.1/RELEASE new/gstreamer-1.18.2/RELEASE --- old/gstreamer-1.18.1/RELEASE 2020-10-26 12:08:38.343754000 +0100 +++ new/gstreamer-1.18.2/RELEASE 2020-12-06 14:21:20.000000000 +0100 @@ -1,4 +1,4 @@ -This is GStreamer core 1.18.1. +This is GStreamer core 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/gstreamer-1.18.1/gst/gst_private.h new/gstreamer-1.18.2/gst/gst_private.h --- old/gstreamer-1.18.1/gst/gst_private.h 2020-10-26 12:08:38.359754000 +0100 +++ new/gstreamer-1.18.2/gst/gst_private.h 2020-12-06 14:21:20.000000000 +0100 @@ -524,7 +524,7 @@ GstClockEntry entry; GWeakRef clock; GDestroyNotify destroy_entry; - gpointer padding[19]; /* padding for allowing e.g. systemclock + gpointer padding[21]; /* padding for allowing e.g. systemclock * to add data in lieu of overridable * virtual functions on the clock */ }; 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/gstreamer-1.18.1/gst/gstbin.c new/gstreamer-1.18.2/gst/gstbin.c --- old/gstreamer-1.18.1/gst/gstbin.c 2020-10-26 12:08:38.359754000 +0100 +++ new/gstreamer-1.18.2/gst/gstbin.c 2020-12-06 14:21:20.000000000 +0100 @@ -1576,7 +1576,7 @@ GstClock **provided_clock_p; GstElement **clock_provider_p; GList *walk, *next; - gboolean other_async, this_async, have_no_preroll; + gboolean other_async, this_async, have_no_preroll, removed_eos; GstStateChangeReturn ret; GST_DEBUG_OBJECT (bin, "element :%s", GST_ELEMENT_NAME (element)); @@ -1703,6 +1703,8 @@ * async state. */ this_async = FALSE; other_async = FALSE; + /* If we remove an EOSed element, the bin might go EOS */ + removed_eos = FALSE; for (walk = bin->messages; walk; walk = next) { GstMessage *message = (GstMessage *) walk->data; GstElement *src = GST_ELEMENT_CAST (GST_MESSAGE_SRC (message)); @@ -1736,6 +1738,10 @@ remove = TRUE; break; } + case GST_MESSAGE_EOS: + if (src == element) + removed_eos = TRUE; + break; default: break; } @@ -1798,6 +1804,15 @@ gst_element_set_clock (element, NULL); GST_OBJECT_UNLOCK (bin); + /* If the element was a sink that had not posted EOS, + * it might have been the last one we were waiting for, + * so check if it's time to send EOS now */ + if (is_sink && !removed_eos) { + GST_DEBUG_OBJECT (bin, + "Removing sink that had not EOSed. Re-checking overall EOS status"); + bin_do_eos (bin); + } + if (clock_message) gst_element_post_message (GST_ELEMENT_CAST (bin), clock_message); 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/gstreamer-1.18.1/gst/gstbufferpool.c new/gstreamer-1.18.2/gst/gstbufferpool.c --- old/gstreamer-1.18.1/gst/gstbufferpool.c 2020-10-26 12:08:38.359754000 +0100 +++ new/gstreamer-1.18.2/gst/gstbufferpool.c 2020-12-06 14:21:20.000000000 +0100 @@ -817,7 +817,7 @@ /** * gst_buffer_pool_config_set_params: * @config: a #GstBufferPool configuration - * @caps: caps for the buffers + * @caps: (nullable): caps for the buffers * @size: the size of each buffer, not including prefix and padding * @min_buffers: the minimum amount of buffers to allocate. * @max_buffers: the maximum amount of buffers to allocate or 0 for unlimited. @@ -842,8 +842,8 @@ /** * gst_buffer_pool_config_set_allocator: * @config: a #GstBufferPool configuration - * @allocator: (allow-none): a #GstAllocator - * @params: (allow-none): #GstAllocationParams + * @allocator: (nullable): a #GstAllocator + * @params: (nullable): #GstAllocationParams * * Set the @allocator and @params on @config. * @@ -942,7 +942,7 @@ * Parse an available @config and get the option at @index of the options API * array. * - * Returns: a #gchar of the option at @index. + * Returns: (nullable): a #gchar of the option at @index. */ const gchar * gst_buffer_pool_config_get_option (GstStructure * config, guint index) @@ -996,10 +996,10 @@ /** * gst_buffer_pool_config_get_params: * @config: (transfer none): a #GstBufferPool configuration - * @caps: (out) (transfer none) (allow-none): the caps of buffers - * @size: (out) (allow-none): the size of each buffer, not including prefix and padding - * @min_buffers: (out) (allow-none): the minimum amount of buffers to allocate. - * @max_buffers: (out) (allow-none): the maximum amount of buffers to allocate or 0 for unlimited. + * @caps: (out) (transfer none) (optional) (nullable): the caps of buffers + * @size: (out) (optional): the size of each buffer, not including prefix and padding + * @min_buffers: (out) (optional): the minimum amount of buffers to allocate. + * @max_buffers: (out) (optional): the maximum amount of buffers to allocate or 0 for unlimited. * * Get the configuration values from @config. * @@ -1024,8 +1024,8 @@ /** * gst_buffer_pool_config_get_allocator: * @config: (transfer none): a #GstBufferPool configuration - * @allocator: (out) (allow-none) (transfer none): a #GstAllocator, or %NULL - * @params: (out) (allow-none): #GstAllocationParams, or %NULL + * @allocator: (out) (optional) (nullable) (transfer none): a #GstAllocator, or %NULL + * @params: (out caller-allocates) (optional): #GstAllocationParams, or %NULL * * Get the @allocator and @params from @config. * @@ -1057,7 +1057,7 @@ /** * gst_buffer_pool_config_validate_params: * @config: (transfer none): a #GstBufferPool configuration - * @caps: (transfer none): the excepted caps of buffers + * @caps: (nullable) (transfer none): the excepted caps of buffers * @size: the expected size of each buffer, not including prefix and padding * @min_buffers: the expected minimum amount of buffers to allocate. * @max_buffers: the expect maximum amount of buffers to allocate or 0 for unlimited. 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/gstreamer-1.18.1/gst/gstdatetime.c new/gstreamer-1.18.2/gst/gstdatetime.c --- old/gstreamer-1.18.1/gst/gstdatetime.c 2020-10-26 12:08:38.363754000 +0100 +++ new/gstreamer-1.18.2/gst/gstdatetime.c 2020-12-06 14:21:20.000000000 +0100 @@ -351,7 +351,7 @@ * * Free-function: gst_date_time_unref * - * Return value: (transfer full): the newly created #GstDateTime + * Return value: (transfer full) (nullable): the newly created #GstDateTime */ GstDateTime * gst_date_time_new_y (gint year) @@ -374,7 +374,7 @@ * * Free-function: gst_date_time_unref * - * Return value: (transfer full): the newly created #GstDateTime + * Return value: (transfer full) (nullable): the newly created #GstDateTime */ GstDateTime * gst_date_time_new_ym (gint year, gint month) @@ -401,7 +401,7 @@ * * Free-function: gst_date_time_unref * - * Return value: (transfer full): the newly created #GstDateTime + * Return value: (transfer full) (nullable): the newly created #GstDateTime */ GstDateTime * gst_date_time_new_ymd (gint year, gint month, gint day) @@ -418,7 +418,7 @@ * * Free-function: gst_date_time_unref * - * Return value: (transfer full): the newly created #GstDateTime + * Return value: (transfer full) (nullable): the newly created #GstDateTime */ GstDateTime * gst_date_time_new_from_unix_epoch_local_time (gint64 secs) @@ -438,7 +438,7 @@ * * Free-function: gst_date_time_unref * - * Return value: (transfer full): the newly created #GstDateTime + * Return value: (transfer full) (nullable): the newly created #GstDateTime */ GstDateTime * gst_date_time_new_from_unix_epoch_utc (gint64 secs) @@ -456,7 +456,7 @@ * Creates a new #GstDateTime using the time since Jan 1, 1970 specified by * @usecs. The #GstDateTime is in the local timezone. * - * Returns: (transfer full): a newly created #GstDateTime + * Returns: (transfer full) (nullable): a newly created #GstDateTime * * Since: 1.18 */ @@ -480,7 +480,7 @@ * Creates a new #GstDateTime using the time since Jan 1, 1970 specified by * @usecs. The #GstDateTime is in UTC. * - * Returns: (transfer full): a newly created #GstDateTime + * Returns: (transfer full) (nullable): a newly created #GstDateTime * * Since: 1.18 */ @@ -546,7 +546,7 @@ * * Free-function: gst_date_time_unref * - * Return value: (transfer full): the newly created #GstDateTime + * Return value: (transfer full) (nullable): the newly created #GstDateTime */ GstDateTime * gst_date_time_new_local_time (gint year, gint month, gint day, gint hour, @@ -658,7 +658,7 @@ * * Free-function: gst_date_time_unref * - * Return value: (transfer full): the newly created #GstDateTime + * Return value: (transfer full) (nullable): the newly created #GstDateTime */ GstDateTime * gst_date_time_new (gfloat tzoffset, gint year, gint month, gint day, gint hour, 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/gstreamer-1.18.1/gst/gstdeviceprovider.c new/gstreamer-1.18.2/gst/gstdeviceprovider.c --- old/gstreamer-1.18.1/gst/gstdeviceprovider.c 2020-10-26 12:08:38.363754000 +0100 +++ new/gstreamer-1.18.2/gst/gstdeviceprovider.c 2020-12-06 14:21:20.000000000 +0100 @@ -546,7 +546,7 @@ * * Retrieves the factory that was used to create this device provider. * - * Returns: (transfer none): the #GstDeviceProviderFactory used for + * Returns: (transfer none) (nullable): the #GstDeviceProviderFactory used for * creating this device provider. no refcounting is needed. * * Since: 1.4 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/gstreamer-1.18.1/gst/gstelement.c new/gstreamer-1.18.2/gst/gstelement.c --- old/gstreamer-1.18.1/gst/gstelement.c 2020-10-26 12:08:38.363754000 +0100 +++ new/gstreamer-1.18.2/gst/gstelement.c 2020-12-06 14:21:20.000000000 +0100 @@ -3631,7 +3631,7 @@ * * MT safe. * - * Returns: (transfer full): A #GstContext or NULL + * Returns: (transfer full) (nullable): A #GstContext or NULL * * Since: 1.8 */ 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/gstreamer-1.18.1/gst/gstinfo.c new/gstreamer-1.18.2/gst/gstinfo.c --- old/gstreamer-1.18.1/gst/gstinfo.c 2020-10-26 12:08:38.367754000 +0100 +++ new/gstreamer-1.18.2/gst/gstinfo.c 2020-12-06 14:21:20.000000000 +0100 @@ -1311,7 +1311,7 @@ color = gst_debug_construct_term_color (gst_debug_category_get_color (category)); clear = "\033[00m"; - g_sprintf (pidcolor, "\033[3%1dm", pid % 6 + 31); + g_sprintf (pidcolor, "\033[%02dm", pid % 6 + 31); levelcolor = levelcolormap[level]; #define PRINT_FMT " %s"PID_FMT"%s "PTR_FMT" %s%s%s %s"CAT_FMT"%s %s\n" 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/gstreamer-1.18.1/gst/gstparse.c new/gstreamer-1.18.2/gst/gstparse.c --- old/gstreamer-1.18.1/gst/gstparse.c 2020-10-26 12:08:38.367754000 +0100 +++ new/gstreamer-1.18.2/gst/gstparse.c 2020-12-06 14:21:20.000000000 +0100 @@ -218,7 +218,7 @@ * @error will contain an error message if an erroneous pipeline is specified. * An error does not mean that the pipeline could not be constructed. * - * Returns: (transfer floating) (nullable): a new element on success and %NULL + * Returns: (transfer floating): a new element on success and %NULL * on failure. */ GstElement * @@ -239,7 +239,7 @@ * @error will contain an error message if an erroneous pipeline is specified. * An error does not mean that the pipeline could not be constructed. * - * Returns: (transfer floating) (nullable): a new element on success; on + * Returns: (transfer floating): a new element on success; on * failure, either %NULL or a partially-constructed bin or element will be * returned and @error will be set (unless you passed * #GST_PARSE_FLAG_FATAL_ERRORS in @flags, then %NULL will always be returned @@ -296,7 +296,7 @@ * To create a sub-pipeline (bin) for embedding into an existing pipeline * use gst_parse_bin_from_description(). * - * Returns: (transfer floating) (nullable): a new element on success, %NULL on + * Returns: (transfer floating): a new element on success, %NULL on * failure. If more than one toplevel element is specified by the * @pipeline_description, all elements are put into a #GstPipeline, which * than is returned. @@ -324,7 +324,7 @@ * To create a sub-pipeline (bin) for embedding into an existing pipeline * use gst_parse_bin_from_description_full(). * - * Returns: (transfer floating) (nullable): a new element on success, %NULL on + * Returns: (transfer floating): a new element on success, %NULL on * failure. If more than one toplevel element is specified by the * @pipeline_description, all elements are put into a #GstPipeline, which * then is returned (unless the GST_PARSE_FLAG_PLACE_IN_BIN flag is set, in 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/gstreamer-1.18.1/gst/gstplugin.c new/gstreamer-1.18.2/gst/gstplugin.c --- old/gstreamer-1.18.1/gst/gstplugin.c 2020-10-26 12:08:38.371754200 +0100 +++ new/gstreamer-1.18.2/gst/gstplugin.c 2020-12-06 14:21:20.000000000 +0100 @@ -985,7 +985,7 @@ * * get the filename of the plugin * - * Returns: (type filename): the filename of the plugin + * Returns: (type filename) (nullable): the filename of the plugin */ const gchar * gst_plugin_get_filename (GstPlugin * plugin) 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/gstreamer-1.18.1/gst/gstregistry.c new/gstreamer-1.18.2/gst/gstregistry.c --- old/gstreamer-1.18.1/gst/gstregistry.c 2020-10-26 12:08:38.371754200 +0100 +++ new/gstreamer-1.18.2/gst/gstregistry.c 2020-12-06 14:21:20.000000000 +0100 @@ -1018,7 +1018,7 @@ * * Find a #GstPluginFeature with @name in @registry. * - * Returns: (transfer full): a #GstPluginFeature with its refcount incremented, + * Returns: (transfer full) (nullable): a #GstPluginFeature with its refcount incremented, * use gst_object_unref() after usage. * * MT safe. 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/gstreamer-1.18.1/gst/gststreamcollection.c new/gstreamer-1.18.2/gst/gststreamcollection.c --- old/gstreamer-1.18.1/gst/gststreamcollection.c 2020-10-26 12:08:38.371754200 +0100 +++ new/gstreamer-1.18.2/gst/gststreamcollection.c 2020-12-06 14:21:20.000000000 +0100 @@ -204,7 +204,7 @@ * * Returns the upstream id of the @collection. * - * Returns: (transfer none): The upstream id + * Returns: (transfer none) (nullable): The upstream id * * Since: 1.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/gstreamer-1.18.1/gst/gststreams.c new/gstreamer-1.18.2/gst/gststreams.c --- old/gstreamer-1.18.1/gst/gststreams.c 2020-10-26 12:08:38.371754200 +0100 +++ new/gstreamer-1.18.2/gst/gststreams.c 2020-12-06 14:21:20.000000000 +0100 @@ -543,7 +543,7 @@ * * Get a descriptive string for a given #GstStreamType * - * Returns: (nullable): A string describing the stream type + * Returns: A string describing the stream type * * Since: 1.10 */ @@ -563,8 +563,7 @@ case GST_STREAM_TYPE_TEXT: return "text"; default: - return NULL; + g_return_val_if_reached ("invalid"); + return "invalid"; } - - return NULL; } 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/gstreamer-1.18.1/gst/gsttypefind.c new/gstreamer-1.18.2/gst/gsttypefind.c --- old/gstreamer-1.18.1/gst/gsttypefind.c 2020-10-26 12:08:38.375754000 +0100 +++ new/gstreamer-1.18.2/gst/gsttypefind.c 2020-12-06 14:21:20.000000000 +0100 @@ -41,13 +41,13 @@ /** * gst_type_find_register: - * @plugin: (allow-none): A #GstPlugin, or %NULL for a static typefind function + * @plugin: (nullable): A #GstPlugin, or %NULL for a static typefind function * @name: The name for registering * @rank: The rank (or importance) of this typefind function * @func: The #GstTypeFindFunction to use - * @extensions: (allow-none): Optional comma-separated list of extensions + * @extensions: (nullable): Optional comma-separated list of extensions * that could belong to this type - * @possible_caps: Optionally the caps that could be returned when typefinding + * @possible_caps: (nullable): Optionally the caps that could be returned when typefinding * succeeds * @data: Optional user data. This user data must be available until the plugin * is unloaded. 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/gstreamer-1.18.1/gst/gsttypefindfactory.c new/gstreamer-1.18.2/gst/gsttypefindfactory.c --- old/gstreamer-1.18.1/gst/gsttypefindfactory.c 2020-10-26 12:08:38.375754000 +0100 +++ new/gstreamer-1.18.2/gst/gsttypefindfactory.c 2020-12-06 14:21:20.000000000 +0100 @@ -159,7 +159,7 @@ * * Gets the #GstCaps associated with a typefind factory. * - * Returns: (transfer none): the #GstCaps associated with this factory + * Returns: (transfer none) (nullable): the #GstCaps associated with this factory */ GstCaps * gst_type_find_factory_get_caps (GstTypeFindFactory * factory) 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/gstreamer-1.18.1/gst/gsturi.c new/gstreamer-1.18.2/gst/gsturi.c --- old/gstreamer-1.18.1/gst/gsturi.c 2020-10-26 12:08:38.375754000 +0100 +++ new/gstreamer-1.18.2/gst/gsturi.c 2020-12-06 14:21:20.000000000 +0100 @@ -618,7 +618,7 @@ * * Creates an element for handling the given URI. * - * Returns: (transfer floating) (nullable): a new element or %NULL if none + * Returns: (transfer floating): a new element or %NULL if none * could be created */ GstElement * 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/gstreamer-1.18.1/gst/gstutils.c new/gstreamer-1.18.2/gst/gstutils.c --- old/gstreamer-1.18.1/gst/gstutils.c 2020-10-26 12:08:38.375754000 +0100 +++ new/gstreamer-1.18.2/gst/gstutils.c 2020-12-06 14:21:20.000000000 +0100 @@ -3407,7 +3407,7 @@ * and want them all ghosted, you will have to create the ghost pads * yourself). * - * Returns: (transfer floating) (type Gst.Bin) (nullable): a + * Returns: (transfer floating) (type Gst.Bin): a * newly-created bin, or %NULL if an error occurred. */ GstElement * @@ -3438,7 +3438,7 @@ * and want them all ghosted, you will have to create the ghost pads * yourself). * - * Returns: (transfer floating) (type Gst.Element) (nullable): a newly-created + * Returns: (transfer floating) (type Gst.Element): a newly-created * element, which is guaranteed to be a bin unless * #GST_PARSE_FLAG_NO_SINGLE_ELEMENT_BINS was passed, or %NULL if an error * occurred. 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/gstreamer-1.18.1/gstreamer.doap new/gstreamer-1.18.2/gstreamer.doap --- old/gstreamer-1.18.1/gstreamer.doap 2020-10-26 12:08:38.379754000 +0100 +++ new/gstreamer-1.18.2/gstreamer.doap 2020-12-06 14:21:20.000000000 +0100 @@ -40,6 +40,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/gstreamer/gstreamer-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/gstreamer-1.18.1/libs/gst/base/gstaggregator.c new/gstreamer-1.18.2/libs/gst/base/gstaggregator.c --- old/gstreamer-1.18.1/libs/gst/base/gstaggregator.c 2020-10-26 12:08:38.379754000 +0100 +++ new/gstreamer-1.18.2/libs/gst/base/gstaggregator.c 2020-12-06 14:21:20.000000000 +0100 @@ -324,7 +324,7 @@ * a #GstAggregator::samples-selected handler, and can be used to precisely * control aggregating parameters for a given set of input samples. * - * Returns: The sample that is about to be aggregated. It may hold a #GstBuffer + * Returns: (nullable) (transfer full): The sample that is about to be aggregated. It may hold a #GstBuffer * or a #GstBufferList. The contents of its info structure is subclass-dependent, * and documented on a subclass basis. The buffers held by the sample are * not writable. @@ -2908,6 +2908,8 @@ static gboolean gst_aggregator_pad_has_space (GstAggregator * self, GstAggregatorPad * aggpad) { + guint64 max_time_level; + /* Empty queue always has space */ if (aggpad->priv->num_buffers == 0 && aggpad->priv->clipped_buffer == NULL) return TRUE; @@ -2921,8 +2923,13 @@ if (self->priv->latency == 0) return FALSE; + /* On top of our latency, we also want to allow buffering up to the + * minimum upstream latency to allow queue free sources with lower then + * upstream latency. */ + max_time_level = self->priv->latency + self->priv->upstream_latency_min; + /* Allow no more buffers than the latency */ - return (aggpad->priv->time_level <= self->priv->latency); + return (aggpad->priv->time_level <= max_time_level); } /* Must be called with the PAD_LOCK held */ @@ -3355,7 +3362,7 @@ * * Steal the ref to the buffer currently queued in @pad. * - * Returns: (transfer full): The buffer in @pad or NULL if no buffer was + * Returns: (nullable) (transfer full): The buffer in @pad or NULL if no buffer was * queued. You should unref the buffer after usage. */ GstBuffer * @@ -3433,7 +3440,7 @@ * gst_aggregator_pad_peek_buffer: * @pad: the pad to get buffer from * - * Returns: (transfer full): A reference to the buffer in @pad or + * Returns: (nullable) (transfer full): A reference to the buffer in @pad or * NULL if no buffer was queued. You should unref the buffer after * usage. */ @@ -3597,7 +3604,7 @@ * gst_aggregator_get_buffer_pool: * @self: a #GstAggregator * - * Returns: (transfer full): the instance of the #GstBufferPool used + * Returns: (transfer full) (nullable): the instance of the #GstBufferPool used * by @trans; free it after use it */ GstBufferPool * @@ -3619,9 +3626,9 @@ /** * gst_aggregator_get_allocator: * @self: a #GstAggregator - * @allocator: (out) (allow-none) (transfer full): the #GstAllocator + * @allocator: (out) (optional) (nullable) (transfer full): the #GstAllocator * used - * @params: (out) (allow-none) (transfer full): the + * @params: (out caller-allocates) (optional): the * #GstAllocationParams of @allocator * * Lets #GstAggregator sub-classes get the memory @allocator 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/gstreamer-1.18.1/libs/gst/base/gstbasesrc.c new/gstreamer-1.18.2/libs/gst/base/gstbasesrc.c --- old/gstreamer-1.18.1/libs/gst/base/gstbasesrc.c 2020-10-26 12:08:38.383754000 +0100 +++ new/gstreamer-1.18.2/libs/gst/base/gstbasesrc.c 2020-12-06 14:21:20.000000000 +0100 @@ -4054,7 +4054,7 @@ * gst_base_src_get_buffer_pool: * @src: a #GstBaseSrc * - * Returns: (transfer full): the instance of the #GstBufferPool used + * Returns: (nullable) (transfer full): the instance of the #GstBufferPool used * by the src; unref it after usage. */ GstBufferPool * @@ -4075,10 +4075,9 @@ /** * gst_base_src_get_allocator: * @src: a #GstBaseSrc - * @allocator: (out) (allow-none) (transfer full): the #GstAllocator + * @allocator: (out) (optional) (nullable) (transfer full): the #GstAllocator * used - * @params: (out) (allow-none) (transfer full): the - * #GstAllocationParams of @allocator + * @params: (out caller-allocates) (optional): the #GstAllocationParams of @allocator * * Lets #GstBaseSrc sub-classes to know the memory @allocator * used by the base class and its @params. 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/gstreamer-1.18.1/libs/gst/base/gstbasetransform.c new/gstreamer-1.18.2/libs/gst/base/gstbasetransform.c --- old/gstreamer-1.18.1/libs/gst/base/gstbasetransform.c 2020-10-26 12:08:38.383754000 +0100 +++ new/gstreamer-1.18.2/libs/gst/base/gstbasetransform.c 2020-12-06 14:21:20.000000000 +0100 @@ -2847,7 +2847,7 @@ * gst_base_transform_get_buffer_pool: * @trans: a #GstBaseTransform * - * Returns: (transfer full): the instance of the #GstBufferPool used + * Returns: (nullable) (transfer full): the instance of the #GstBufferPool used * by @trans; free it after use */ GstBufferPool * @@ -2864,10 +2864,9 @@ /** * gst_base_transform_get_allocator: * @trans: a #GstBaseTransform - * @allocator: (out) (allow-none) (transfer full): the #GstAllocator + * @allocator: (out) (optional) (nullable) (transfer full): the #GstAllocator * used - * @params: (out) (allow-none) (transfer full): the - * #GstAllocationParams of @allocator + * @params: (out caller-allocates) (optional): the #GstAllocationParams of @allocator * * Lets #GstBaseTransform sub-classes know the memory @allocator * used by the base class and its @params. 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/gstreamer-1.18.1/libs/gst/check/gstharness.c new/gstreamer-1.18.2/libs/gst/check/gstharness.c --- old/gstreamer-1.18.1/libs/gst/check/gstharness.c 2020-10-26 12:08:38.387754200 +0100 +++ new/gstreamer-1.18.2/libs/gst/check/gstharness.c 2020-12-06 14:21:20.000000000 +0100 @@ -1129,7 +1129,7 @@ priv->propose_allocation_metas = NULL; /* if we hold the last ref, set to NULL */ - if (gst_harness_element_unref (h) == 0) { + if (h->element != NULL && gst_harness_element_unref (h) == 0) { gboolean state_change; GstState state, pending; state_change = gst_element_set_state (h->element, GST_STATE_NULL); @@ -1157,8 +1157,10 @@ g_ptr_array_unref (priv->stress); priv->stress = NULL; - gst_object_unref (h->element); - h->element = NULL; + if (h->element) { + gst_object_unref (h->element); + h->element = NULL; + } gst_object_replace ((GstObject **) & priv->testclock, NULL); 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/gstreamer-1.18.1/libs/gst/check/gsttestclock.c new/gstreamer-1.18.2/libs/gst/check/gsttestclock.c --- old/gstreamer-1.18.1/libs/gst/check/gsttestclock.c 2020-10-26 12:08:38.387754200 +0100 +++ new/gstreamer-1.18.2/libs/gst/check/gsttestclock.c 2020-12-06 14:21:20.000000000 +0100 @@ -923,7 +923,7 @@ * * MT safe. * - * Returns: (transfer full): a #GstClockID containing the next pending clock + * Returns: (transfer full) (nullable): a #GstClockID containing the next pending clock * notification. * * Since: 1.2 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/gstreamer-1.18.1/meson.build new/gstreamer-1.18.2/meson.build --- old/gstreamer-1.18.1/meson.build 2020-10-26 12:08:38.391754200 +0100 +++ new/gstreamer-1.18.2/meson.build 2020-12-06 14:21:20.000000000 +0100 @@ -1,5 +1,5 @@ project('gstreamer', 'c', - version : '1.18.1', + version : '1.18.2', meson_version : '>= 0.48', default_options : [ 'warning_level=1', 'buildtype=debugoptimized' ]) 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/gstreamer-1.18.1/plugins/elements/gstclocksync.c new/gstreamer-1.18.2/plugins/elements/gstclocksync.c --- old/gstreamer-1.18.1/plugins/elements/gstclocksync.c 2020-10-26 12:08:38.391754200 +0100 +++ new/gstreamer-1.18.2/plugins/elements/gstclocksync.c 2020-12-06 14:21:20.000000000 +0100 @@ -171,7 +171,6 @@ clocksync->sync = DEFAULT_SYNC; g_cond_init (&clocksync->blocked_cond); - GST_OBJECT_FLAG_SET (clocksync, GST_ELEMENT_FLAG_PROVIDE_CLOCK); GST_OBJECT_FLAG_SET (clocksync, GST_ELEMENT_FLAG_REQUIRE_CLOCK); } @@ -180,10 +179,31 @@ const GValue * value, GParamSpec * pspec) { GstClockSync *clocksync = GST_CLOCKSYNC (object); + GstMessage *clock_message = NULL; + gboolean sync; switch (prop_id) { case PROP_SYNC: clocksync->sync = g_value_get_boolean (value); + sync = g_value_get_boolean (value); + GST_OBJECT_LOCK (clocksync); + if (sync != clocksync->sync) { + clocksync->sync = sync; + if (sync) { + GST_OBJECT_FLAG_SET (clocksync, GST_ELEMENT_FLAG_PROVIDE_CLOCK); + clock_message = + gst_message_new_clock_provide (GST_OBJECT_CAST (clocksync), + gst_system_clock_obtain (), TRUE); + } else { + GST_OBJECT_FLAG_UNSET (clocksync, GST_ELEMENT_FLAG_PROVIDE_CLOCK); + clock_message = + gst_message_new_clock_lost (GST_OBJECT_CAST (clocksync), + gst_system_clock_obtain ()); + } + } + GST_OBJECT_UNLOCK (clocksync); + if (clock_message) + gst_element_post_message (GST_ELEMENT_CAST (clocksync), clock_message); break; case PROP_TS_OFFSET: clocksync->ts_offset = g_value_get_int64 (value); @@ -540,5 +560,10 @@ static GstClock * gst_clocksync_provide_clock (GstElement * element) { + GstClockSync *clocksync = GST_CLOCKSYNC (element); + + if (!clocksync->sync) + return NULL; + return gst_system_clock_obtain (); } 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/gstreamer-1.18.1/plugins/elements/gstidentity.c new/gstreamer-1.18.2/plugins/elements/gstidentity.c --- old/gstreamer-1.18.1/plugins/elements/gstidentity.c 2020-10-26 12:08:38.395754000 +0100 +++ new/gstreamer-1.18.2/plugins/elements/gstidentity.c 2020-12-06 14:21:20.000000000 +0100 @@ -316,7 +316,6 @@ gst_base_transform_set_gap_aware (GST_BASE_TRANSFORM_CAST (identity), TRUE); - GST_OBJECT_FLAG_SET (identity, GST_ELEMENT_FLAG_PROVIDE_CLOCK); GST_OBJECT_FLAG_SET (identity, GST_ELEMENT_FLAG_REQUIRE_CLOCK); } @@ -824,6 +823,8 @@ const GValue * value, GParamSpec * pspec) { GstIdentity *identity; + GstMessage *clock_message = NULL; + gboolean sync; identity = GST_IDENTITY (object); @@ -853,7 +854,25 @@ identity->datarate = g_value_get_int (value); break; case PROP_SYNC: - identity->sync = g_value_get_boolean (value); + sync = g_value_get_boolean (value); + GST_OBJECT_LOCK (identity); + if (sync != identity->sync) { + identity->sync = sync; + if (sync) { + GST_OBJECT_FLAG_SET (identity, GST_ELEMENT_FLAG_PROVIDE_CLOCK); + clock_message = + gst_message_new_clock_provide (GST_OBJECT_CAST (identity), + gst_system_clock_obtain (), TRUE); + } else { + GST_OBJECT_FLAG_UNSET (identity, GST_ELEMENT_FLAG_PROVIDE_CLOCK); + clock_message = + gst_message_new_clock_lost (GST_OBJECT_CAST (identity), + gst_system_clock_obtain ()); + } + } + GST_OBJECT_UNLOCK (identity); + if (clock_message) + gst_element_post_message (GST_ELEMENT_CAST (identity), clock_message); break; case PROP_TS_OFFSET: identity->ts_offset = g_value_get_int64 (value); @@ -1131,5 +1150,10 @@ static GstClock * gst_identity_provide_clock (GstElement * element) { + GstIdentity *identity = GST_IDENTITY (element); + + if (!identity->sync) + return NULL; + return gst_system_clock_obtain (); } 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/gstreamer-1.18.1/plugins/elements/gstqueue2.c new/gstreamer-1.18.2/plugins/elements/gstqueue2.c --- old/gstreamer-1.18.1/plugins/elements/gstqueue2.c 2020-10-26 12:08:38.395754000 +0100 +++ new/gstreamer-1.18.2/plugins/elements/gstqueue2.c 2020-12-06 14:21:20.000000000 +0100 @@ -3490,11 +3490,16 @@ { gboolean pull_mode; GstSchedulingFlags flags = 0; + GstQuery *upstream; - if (!gst_pad_peer_query (queue->sinkpad, query)) + upstream = gst_query_new_scheduling (); + if (!gst_pad_peer_query (queue->sinkpad, upstream)) { + gst_query_unref (upstream); goto peer_failed; + } - gst_query_parse_scheduling (query, &flags, NULL, NULL, NULL); + gst_query_parse_scheduling (upstream, &flags, NULL, NULL, NULL); + gst_query_unref (upstream); /* we can operate in pull mode when we are using a tempfile */ pull_mode = !QUEUE_IS_USING_QUEUE (queue); 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/gstreamer-1.18.1/plugins/elements/gsttypefindelement.c new/gstreamer-1.18.2/plugins/elements/gsttypefindelement.c --- old/gstreamer-1.18.1/plugins/elements/gsttypefindelement.c 2020-10-26 12:08:38.395754000 +0100 +++ new/gstreamer-1.18.2/plugins/elements/gsttypefindelement.c 2020-12-06 14:21:20.000000000 +0100 @@ -527,6 +527,7 @@ } typefind->need_segment = TRUE; + typefind->seqnum = gst_event_get_seqnum (event); /* restart our task since it might have been stopped when we did the * flush. */ @@ -1172,9 +1173,12 @@ GstBuffer *outbuf = NULL; if (typefind->need_segment) { + GstEvent *event; typefind->need_segment = FALSE; - gst_pad_push_event (typefind->src, - gst_event_new_segment (&typefind->segment)); + event = gst_event_new_segment (&typefind->segment); + if (typefind->seqnum != 0) + gst_event_set_seqnum (event, typefind->seqnum); + gst_pad_push_event (typefind->src, event); } /* Pull 4k blocks and send downstream */ @@ -1253,6 +1257,7 @@ typefind->need_segment = TRUE; typefind->need_stream_start = TRUE; typefind->offset = 0; + typefind->seqnum = 0; res = TRUE; } else { res = gst_pad_stop_task (pad); 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/gstreamer-1.18.1/plugins/elements/gsttypefindelement.h new/gstreamer-1.18.2/plugins/elements/gsttypefindelement.h --- old/gstreamer-1.18.1/plugins/elements/gsttypefindelement.h 2020-10-26 12:08:38.395754000 +0100 +++ new/gstreamer-1.18.2/plugins/elements/gsttypefindelement.h 2020-12-06 14:21:20.000000000 +0100 @@ -65,6 +65,7 @@ gboolean need_stream_start; GstSegment segment; guint64 offset; + guint32 seqnum; }; struct _GstTypeFindElementClass { 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/gstreamer-1.18.1/tests/check/gst/gstbin.c new/gstreamer-1.18.2/tests/check/gst/gstbin.c --- old/gstreamer-1.18.1/tests/check/gst/gstbin.c 2020-10-26 12:08:38.411754100 +0100 +++ new/gstreamer-1.18.2/tests/check/gst/gstbin.c 2020-12-06 14:21:20.000000000 +0100 @@ -286,6 +286,68 @@ GST_END_TEST; +GST_START_TEST (test_eos_recheck) +{ + GstBus *bus; + GstElement *pipeline, *sink1, *sink2; + GstMessage *message; + GstPad *pad1; + GThread *thread1; + + pipeline = gst_pipeline_new ("test_eos_recheck"); + bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline)); + + sink1 = gst_element_factory_make ("fakesink", "sink1"); + sink2 = gst_element_factory_make ("fakesink", "sink2"); + + gst_bin_add_many (GST_BIN (pipeline), sink1, sink2, NULL); + + /* Set async=FALSE so we don't wait for preroll */ + g_object_set (sink1, "async", FALSE, NULL); + g_object_set (sink2, "async", FALSE, NULL); + + pad1 = gst_check_setup_src_pad_by_name (sink1, &srctemplate, "sink"); + + gst_pad_set_active (pad1, TRUE); + + fail_if (gst_element_set_state (GST_ELEMENT (pipeline), + GST_STATE_PLAYING) == GST_STATE_CHANGE_FAILURE); + fail_unless (gst_element_get_state (GST_ELEMENT (pipeline), NULL, NULL, + GST_CLOCK_TIME_NONE) == GST_STATE_CHANGE_SUCCESS); + + /* Send one EOS to sink1 */ + thread1 = g_thread_new ("thread1", (GThreadFunc) push_one_eos, pad1); + + /* Make sure the EOS message is not sent */ + message = + gst_bus_poll (bus, GST_MESSAGE_ERROR | GST_MESSAGE_EOS, 2 * GST_SECOND); + fail_if (message != NULL); + + /* Remove sink2 without it EOSing, which should trigger an EOS re-check */ + gst_object_ref (sink2); + gst_bin_remove (GST_BIN (pipeline), sink2); + gst_element_set_state (GST_ELEMENT (sink2), GST_STATE_NULL); + + /* Make sure the EOS message is sent then */ + message = + gst_bus_poll (bus, GST_MESSAGE_ERROR | GST_MESSAGE_EOS, 20 * GST_SECOND); + fail_if (message == NULL); + fail_unless (GST_MESSAGE_TYPE (message) == GST_MESSAGE_EOS); + gst_message_unref (message); + + /* Cleanup */ + g_thread_join (thread1); + + gst_element_set_state (GST_ELEMENT (pipeline), GST_STATE_NULL); + gst_pad_set_active (pad1, FALSE); + gst_check_teardown_src_pad (sink1); + gst_object_unref (sink2); + gst_object_unref (bus); + gst_object_unref (pipeline); +} + +GST_END_TEST; + GST_START_TEST (test_stream_start) { GstBus *bus; @@ -1867,6 +1929,7 @@ tcase_add_test (tc_chain, test_interface); tcase_add_test (tc_chain, test_iterate_all_by_element_factory_name); tcase_add_test (tc_chain, test_eos); + tcase_add_test (tc_chain, test_eos_recheck); tcase_add_test (tc_chain, test_stream_start); tcase_add_test (tc_chain, test_children_state_change_order_flagged_sink); tcase_add_test (tc_chain, test_children_state_change_order_semi_sink); 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/gstreamer-1.18.1/tests/check/libs/gstharness.c new/gstreamer-1.18.2/tests/check/libs/gstharness.c --- old/gstreamer-1.18.1/tests/check/libs/gstharness.c 2020-10-26 12:08:38.415754000 +0100 +++ new/gstreamer-1.18.2/tests/check/libs/gstharness.c 2020-12-06 14:21:20.000000000 +0100 @@ -25,6 +25,14 @@ #include <gst/check/gstcheck.h> #include <gst/check/gstharness.h> +GST_START_TEST (test_harness_empty) +{ + GstHarness *h = gst_harness_new_empty (); + gst_harness_teardown (h); +} + +GST_END_TEST; + static void create_destroy_element_harness (gpointer data, gpointer user_data) { @@ -293,6 +301,7 @@ suite_add_tcase (s, tc_chain); + tcase_add_test (tc_chain, test_harness_empty); tcase_add_test (tc_chain, test_harness_element_ref); tcase_add_test (tc_chain, test_src_harness); tcase_add_test (tc_chain, test_src_harness_no_forwarding); _______________________________________________ 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]
