Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package gstreamer-plugins-base for openSUSE:Factory checked in at 2022-06-24 08:44:46 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gstreamer-plugins-base (Old) and /work/SRC/openSUSE:Factory/.gstreamer-plugins-base.new.1548 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gstreamer-plugins-base" Fri Jun 24 08:44:46 2022 rev:86 rq:984565 version:1.20.3 Changes: -------- --- /work/SRC/openSUSE:Factory/gstreamer-plugins-base/gstreamer-plugins-base.changes 2022-05-14 22:52:26.407011742 +0200 +++ /work/SRC/openSUSE:Factory/.gstreamer-plugins-base.new.1548/gstreamer-plugins-base.changes 2022-06-24 08:44:49.463106503 +0200 @@ -1,0 +2,17 @@ +Wed Jun 22 10:24:56 UTC 2022 - Aaron Stern <ukbeas...@protonmail.com> + +- Update to version 1.20.3: + + typefindfunctions: Fix WebVTT format detection for very short + files + + gldisplay: Reorder GST_GL_WINDOW check for egl-device + + rtpbasepayload: Copy all buffer metadata instead of just + GstMetas for the input meta buffer + + codec-utils: Avoid out-of-bounds error + + navigation: Fix Since markers for mouse scroll events + + videoaggregator: Fix for unhandled negative rate + + videoaggregator: Use floor() to calculate current position + + video-color: Fix for missing clipping in PQ EOTF function + + gst-play-1.0: Fix trick-mode handling in keyboard shortcut + + audiovisualizer: shader: Fix out of bound write + +------------------------------------------------------------------- Old: ---- gst-plugins-base-1.20.2.tar.xz New: ---- gst-plugins-base-1.20.3.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gstreamer-plugins-base.spec ++++++ --- /var/tmp/diff_new_pack.271sSO/_old 2022-06-24 08:44:49.983107086 +0200 +++ /var/tmp/diff_new_pack.271sSO/_new 2022-06-24 08:44:49.987107090 +0200 @@ -20,7 +20,7 @@ %define gst_branch 1.0 %define gstreamer_req_version %(echo %{version} | sed -e "s/+.*//") Name: gstreamer-plugins-base -Version: 1.20.2 +Version: 1.20.3 Release: 0 Summary: GStreamer Streaming-Media Framework Plug-Ins License: GPL-2.0-or-later AND LGPL-2.1-or-later ++++++ gst-plugins-base-1.20.2.tar.xz -> gst-plugins-base-1.20.3.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.20.2/ChangeLog new/gst-plugins-base-1.20.3/ChangeLog --- old/gst-plugins-base-1.20.2/ChangeLog 2022-05-03 00:29:29.000000000 +0200 +++ new/gst-plugins-base-1.20.3/ChangeLog 2022-06-16 00:36:22.000000000 +0200 @@ -1,7 +1,206 @@ +=== release 1.20.3 === + +2022-06-15 23:36:18 +0100 Tim-Philipp M??ller <t...@centricular.com> + + * NEWS: + * RELEASE: + * gst-plugins-base.doap: + * meson.build: + Release 1.20.3 + +2022-06-15 23:36:10 +0100 Tim-Philipp M??ller <t...@centricular.com> + + * ChangeLog: + Update ChangeLogs for 1.20.3 + +2022-05-25 02:10:30 +0900 Seungha Yang <seun...@centricular.com> + + * gst/playback/gstplaybin3.c: + playbin3: Configure combiner on pad-added if needed + When collection is updated, decodebin3 exposes pad first and then + streams-selected message is posted. + The condition can cause a situation where playbin3 links non-existing + combiner/playsink pads (since streams-selected is not posted yet) with + new decodebin output pad. This commit will re-check selected/active + streams condition on pad-added and reconfigure output if needed. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2495> + +2022-05-23 21:24:40 -0400 Eli Schwartz <eschwa...@archlinux.org> + + * gst-libs/gst/tag/meson.build: + meson: use better zlib dependency fallback + zlib is required, and if it isn't found it is checked several ways and + then forced via subproject(). This code was added in commit + b93e37592a3ccc0eaece1c8fef2d362b1e5fe685, to account for systems where + zlib doesn't have pkg-config files installed. + But Meson already does dependency fallback, and also, since 0.54.0, does + the in-between checks for find_library('z') and has_header('zlib.h') via + the "system" type dependency. Simplify dependency lookup by marking it + as required, which also makes sure that the console log doesn't + confusingly list "not found". + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2486> + +2022-04-26 09:29:39 +0200 Edward Hervey <edw...@centricular.com> + + * ext/ogg/gstoggstream.c: + oggdemux: Protect against invalid framerates + This check wasn't done for all mappings. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2455> + +2022-05-15 16:53:12 +0000 Thibault Saunier <tsaun...@igalia.com> + + * gst-libs/gst/rtp/gstrtcpbuffer.c: + * gst-libs/gst/rtp/gstrtcpbuffer.h: + * tests/check/libs/rtp.c: + rtcpbuffer: Allow padding on first reduced size packets + It is valid to have the padding set to 1 on the first packet and it + happens very often from TWCC packets coming from libwebrtc. This means + that we were totally ignoring many TWCC packets. + Fix test that checked that a first packet with padding was not valid and + instead test a single twcc packet with padding to check precisely what + this patch was about. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2447> + +2022-05-13 13:31:55 +0200 Alicia Boya Garc??a <ab...@igalia.com> + + * gst-libs/gst/app/gstappsink.c: + * tests/check/elements/appsink.c: + appsink: Fix race condition on caps handling + Background: + Whenever a caps event is received by appsink, the caps are stored in the + same internal queue as buffers. Only when enough buffers have been + popped from the queue to reach the caps, `priv->sample` gets its caps + updated to match, so that they are correct for the following buffers. + Note that as far as upstream elements are concerned, the caps of appsink + are updated immediately when the CAPS event is sent. Samples pulled from + appsink retain the old caps until a later buffer -- one that was sent by + upstream elements after the new caps -- is pulled. + The race condition: + When a flush is received, appsink clears the entire internal queue. The + caps of `priv->sample` are not updated as part of this process, and + instead remain as those of the sample that was last pulled by the user. + This leaves open a race condition where: + 1. Upstream sends a new caps event, and possibly some buffers for the + new caps. + 2. Upstream sends a flush (possibly from a different thread). + 3. Upstream sends a new buffer for the new caps. Since as far as + upstream is concerned, appsink caps are the new caps already, no new + CAPS event is sent. + 4. The appsink user pulls a sample, having not pulled before enough + samples to reach the buffers sent in step 1. + Bug: the pulled sample has the old caps instead of the new caps. + Fixing the race condition: + To avoid this problem, when a buffer is received after a flush, + `priv->sample`'s caps should be updated with the current caps before the + buffer is added to the internal queue. + Interestingly, before this patch, appsink already had code for this, in + gst_app_sink_render_common(): + /* queue holding caps event might have been FLUSHed, + * but caps state still present in pad caps */ + if (G_UNLIKELY (!priv->last_caps && + gst_pad_has_current_caps (GST_BASE_SINK_PAD (psink)))) { + priv->last_caps = gst_pad_get_current_caps (GST_BASE_SINK_PAD (psink)); + gst_sample_set_caps (priv->sample, priv->last_caps); + GST_DEBUG_OBJECT (appsink, "activating pad caps %" GST_PTR_FORMAT, + priv->last_caps); + } + This code assumes `priv->last_caps` is reset when a flush is received, + which makes sense, but unfortunately, there was no code in the flush + code path resetting it. + This patch adds such code, therefore fixing the race condition. A unit + test demonstrating the bug and testing its behavior with the fix has + also been added. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2442> + +2022-05-16 12:34:36 -0400 U. Artie Eoff <ullysses.a.e...@intel.com> + + * gst-libs/gst/video/gstvideoaggregator.c: + videoaggregator: unref temporary caps + The "possible_caps" needs unref after finished using to + avoid memory leak. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2440> + +2022-03-29 17:51:13 +0200 St??phane Cerveau <scerv...@collabora.com> + + * gst-libs/gst/gl/meson.build: + * tests/check/libs/gstglmatrix.c: + * tests/check/meson.build: + base:gl: add x11 deps to gstglx11_dep + On MacOS with homebrew the xlib-xcb.h is in + own cellar /opt/homebrew/Cellar/libx11/1.7.3.1/include + Need to add the windowing dependencies to gl tests + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2426> + +2022-05-05 02:54:37 +0900 Seungha Yang <seun...@centricular.com> + + * tools/gst-play.c: + tools: gst-play: Print position even if duration is unknown + Gives better visual feedback regarding position information + although duration is unknown, live streams for example. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2419> + +2022-05-07 04:43:49 +0900 Seungha Yang <seun...@centricular.com> + + * tools/gst-device-monitor.c: + tools: device-monitor: Print string property as-is without serialize + gst_value_serialize() does more than what's needed to printf-ing + especially when given GValue is already string. Just print string + value as-is without gst_value_serialize() to avoid unreadable + string print, especially for multi-bytes character encoding cases. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2416> + +2022-05-03 16:25:19 +0200 Edward Hervey <edw...@centricular.com> + + * gst/playback/gstparsebin.c: + parsebin: Don't modify inexistant GstStream + When handling exposing un-handled streams, we can only replace the GstStream for + those we are creating ourselves (i.e. the fallback collection). + Fixes assertions when the demuxer creates those streams + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2368> + +2022-05-03 16:08:39 +0200 Edward Hervey <edw...@centricular.com> + + * gst/playback/gstdecodebin3.c: + playbin3: Don't use unknown types for default selection + When creating a fallback default selection from a collection, don't attempt to + use unknown stream types + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2368> + +2022-05-03 13:37:31 +0300 Sebastian Dr??ge <sebast...@centricular.com> + + * gst/audioconvert/gstaudioconvert.c: + audioconvert: If no channel-mask can be fixated then use a NONE channel layout + Otherwise this is generating caps without a channel-mask, which is + invalid for >1 channels and will always fail negotiation. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2359> + +2022-03-07 08:46:57 -0500 Xavier Claessens <xavier.claess...@collabora.com> + + * gst-libs/gst/gl/meson.build: + Meson: Fix deprecation warnings + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2358> + +2021-11-12 20:13:10 +0100 Ruben Gonzalez <rgonza...@fluendo.com> + + * docs/plugins/gst_plugins_cache.json: + gst_plugin_load_file: force plugin reload if diff filename + If a file includes a new version of a plugin that exits in the + registry, the output of gst-inspect is incorrect. The output has the + correct version but incorrect filename, and element description. + This seems to have also fixed some documentation issues. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2357> + +2022-05-03 00:39:09 +0100 Tim-Philipp M??ller <t...@centricular.com> + + * meson.build: + Back to development + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2347> + === release 1.20.2 === 2022-05-02 23:29:25 +0100 Tim-Philipp M??ller <t...@centricular.com> + * ChangeLog: * NEWS: * RELEASE: * gst-plugins-base.doap: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.20.2/NEWS new/gst-plugins-base-1.20.3/NEWS --- old/gst-plugins-base-1.20.2/NEWS 2022-05-03 00:29:29.000000000 +0200 +++ new/gst-plugins-base-1.20.3/NEWS 2022-06-16 00:36:22.000000000 +0200 @@ -2,13 +2,13 @@ GStreamer 1.20.0 was originally released on 3 February 2022. -The latest bug-fix release in the 1.20 series is 1.20.2 and was released -on 2 May 2022. +The latest bug-fix release in the 1.20 series is 1.20.3 and was released +on 15 June 2022. See https://gstreamer.freedesktop.org/releases/1.20/ for the latest version of this document. -Last updated: Monday 2 May 2022, 0:30 UTC (log) +Last updated: Monday 15 June 2022, 17:00 UTC (log) Introduction @@ -2291,6 +2291,218 @@ - List of Merge Requests applied in 1.20.2 - List of Issues fixed in 1.20.2 +1.20.3 + +The third 1.20 bug-fix release (1.20.3) was released on 15 June 2022. + +This release only contains bugfixes and it should be safe to upgrade +from 1.20.x. + +Highlighted bugfixes in 1.20.3 + +- Security fixes in Matroska, MP4 and AVI demuxers +- Fix scrambled video playback with hardware-accelerated VA-API + decoders on certain Intel hardware +- playbin3/decodebin3 regression fix for unhandled streams +- Fragmented MP4 playback fixes +- Android H.265 encoder mapping +- Playback of MXF files produced by FFmpeg before March 2022 +- Fix rtmp2sink crashes on 32-bit platforms +- WebRTC improvements +- D3D11 video decoder and screen recorder fixes +- Performance improvements +- Support for building against OpenCV 4.6 and other build fixes +- Miscellaneous bug fixes, memory leak fixes, and other stability and + reliability improvements + +gstreamer + +- clock: Avoid creating a weakref with every entry (performance + improvement) +- plugin: add Apache 2 license to list of known licenses to avoid + warning +- gst_plugin_load_file: force plugin reload if filename differs +- Add support for LoongArch + +Base Libraries + +- aggregator: Only send events up to CAPS event from + gst_aggregator_set_src_caps(), don???t send multiple caps events with + the same caps and fix negotiation in muxers +- basetransform: handle gst_base_transform_query_caps() returning NULL +- basetransform: fix critical if transform_caps() returned NULL +- queuearray: Fix potential heap overflow when expanding GstQueueArray + +Core Elements + +- multiqueue: fix potential crash on shutdown +- multiqueue: fix warning: ???is_query??? may be used uninitialized in + this function +- multiqueue: SegFault during flushing with gcc11 + +gst-plugins-base + +- audioconvert: If no channel-mask can be fixated then use a NONE + channel layout +- playbin3: Configure combiner on pad-added if needed +- parsebin: Fix assertions/regression when dealing with un-handled + streams (fixes regression in 1.20.2) +- appsink: Fix race condition on caps handling +- oggdemux: Protect against invalid framerates +- rtcpbuffer: Allow padding on first reduced size packets +- gl: check for xlib-xcb.h header to fix build of tests on macOS with + homebrew +- videoaggregator: unref temporary caps +- v4l2videoenc: Setup crop rectangle if needed + +Tools + +- gst-play-1.0: Print position even if duration is unknown +- gst-device-monitor-1.0: Print string property as-is without + additional escaping + +gst-plugins-good + +- aacparse: Avoid mismatch between src_caps and output_header_type +- avidemux: Fix integer overflow resulting in heap corruption in DIB + buffer inversion code (Security fix) +- deinterlace: Clean up error handling code +- flvdemux: Actually make use of the debug category +- gtkglsink: Fix double-free when OpenGL can???t be initialised +- jack: Add support for detecting libjack on Windows +- matroskademux: Avoid integer-overflow resulting in heap corruption + in WavPack header handling code (Security fix) +- matroskademux, qtdemux: Fix integer overflows in zlib/bz2/etc + decompression code (Security fix) +- qtdemux: Don???t use tfdt for parsing subsequent trun boxes +- rtpbin: Avoid holding GST_RTP_BIN_LOCK when emitting pad-added + signal (to avoid deadlocks) +- rtpptdemux: Don???t GST_FLOW_ERROR when ignoring invalid packets +- smpte: Fix integer overflow with possible heap corruption in GstMask + creation. (Security fix) +- smpte: integer overflow with possible heap corruption in GstMask + creation (Security fix) +- soup: fix soup debug category initialisation +- soup: Fix plugin/element init +- v4l2: Reset transfer in gst_v4l2_object_acquire_format() +- vpxenc: fix crash if encoder produces unmatching timestamp +- wavparse: ensure that any pending segment is sent before an EOS + event is sent + +gst-plugins-bad + +- androidmedia: Add H.265 encoder mapping +- avfvideosrc: fix wrong framerate selected for caps +- d3d11decoder: Fix for alternate interlacing signalling +- d3d11decoder: Do not preallocate texture using downstream d3d11 + buffer pool +- d3d11decoder: Copy HDR10 related caps field manually +- d3d11decoder: Work around Intel DXVA driver crash +- d3d11screencapture: Set viewport when drawing mouse cursor +- d3d11screencapture: Fix missing/outdated cursor shape +- d3d11screencapturesrc: Fix crash when d3d11 device is different from + owned one +- h264decoder: Fix for unhandled low-delay decoding case +- matroskademux, qtdemux: Fix integer overflows in zlib/bz2/etc + decompression code (Security fix) +- mpegtsmux: Make sure to set srcpad caps under all conditions before + outputting the first buffer +- mpegtsmux: sends segment before caps +- mxfdemux: Handle files produced by legacy FFmpeg +- nvh264dec,nvh265dec: Don???t realloc bitstream buffer per slice +- nvcodec: cuda-converter: fix nvrtc compilation on non-English locale + systems +- opencv: Allow building against 4.6.x +- pcapparse: Set timestamp in DTS, not PTS +- rtmp2: fix allocation of GstRtmpMeta which caused crashes on 32-bit + platforms +- rtmp2sink crash on Android arm 32 - cerbero 1.20.2.0 +- sdpdemux: Release request pads from rtpbin when freeing a stream +- va: Add O_CLOEXEC flag at opening drm device (so subprocesses won???t + have access to it) +- webrtcbin: Reject answers that don???t contain the same number of + m-line as offer +- webrtc: datachannel: Notify low buffered amount according to spec + +gst-plugins-ugly + +- No changes + +gst-libav + +- No changes + +gst-rtsp-server + +- No changes + +gstreamer-vaapi + +- vaapi: Do not disable the whole vpp when some va operations not + available +- vaapidecode, vaapipostproc: Disable DMAbuf from caps negotiation +- scrambled video with some Intel graphics cards + +gstreamer-sharp + +- No changes + +gst-omx + +- No changes + +gst-python + +- No changes + +gst-editing-services + +- ges/videourisource: handle non-1/1 PAR source videos + +gst-examples: + +- No changes + +Development build environment + gst-full build + +- Update libnice subproject wrap to 0.1.19 +- meson: use better zlib dependency fallback +- meson: Fix deprecation warnings + +Cerbero build tool and packaging changes in 1.20.3 + +- Set GSTREAMER_1_0_ROOT_[MSVC_]X86_64 root environment variable in + System section (not User section) +- bootstrap: Add perl-FindBin dep needed by openssl (which is not + installed by default on RedHat systems) +- Also add build-tools/local/bin to PATH on Linux +- Add a variant to control building of the JACK plugin +- libnice: update to 0.1.19 (fixes some WebRTC issues) +- zlib: update to 1.2.12 + +Bindings + +- No changes + +Contributors to 1.20.3 + +Adam Doupe, Alicia Boya Garc??a, Bastien Nocera, Corentin Damman, Damian +Hobson-Garcia, Diogo Goncalves, Edward Hervey, Eli Schwartz, Erwann +Gouesbet, Guillaume Desmottes, He Junyan, Hou Qi, Jakub Adam, James +Hilliard, Jan Alexander Steffens (heftig), Jan Schmidt, Matthew Waters, +Nicolas Dufresne, Nirbheek Chauhan, Olivier Cr??te, Philippe Normand, +Rabindra Harlalka, Ruben Gonzalez, Sebastian Dr??ge, Seungha Yang, +St??phane Cerveau, Thibault Saunier, Tim-Philipp M??ller, Tom Schuring, U. +Artie Eoff, V??ctor Manuel J??quez Leal, WANG Xuerui, 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.20.3 + +- List of Merge Requests applied in 1.20.3 +- List of Issues fixed in 1.20.3 + Schedule for 1.22 Our next major feature release will be 1.22, and 1.21 will be the diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.20.2/RELEASE new/gst-plugins-base-1.20.3/RELEASE --- old/gst-plugins-base-1.20.2/RELEASE 2022-05-03 00:29:29.000000000 +0200 +++ new/gst-plugins-base-1.20.3/RELEASE 2022-06-16 00:36:22.000000000 +0200 @@ -1,4 +1,4 @@ -This is GStreamer gst-plugins-base 1.20.2. +This is GStreamer gst-plugins-base 1.20.3. The GStreamer team is thrilled to announce a new major feature release of your favourite cross-platform multimedia framework! diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.20.2/docs/plugins/gst_plugins_cache.json new/gst-plugins-base-1.20.3/docs/plugins/gst_plugins_cache.json --- old/gst-plugins-base-1.20.2/docs/plugins/gst_plugins_cache.json 2022-05-03 00:29:29.000000000 +0200 +++ new/gst-plugins-base-1.20.3/docs/plugins/gst_plugins_cache.json 2022-06-16 00:36:22.000000000 +0200 @@ -8565,7 +8565,7 @@ "construct": false, "construct-only": false, "controllable": false, - "default": "top (2)", + "default": "baseline (0)", "mutable": "null", "readable": true, "type": "GstBaseTextOverlayVAlign", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.20.2/ext/ogg/gstoggstream.c new/gst-plugins-base-1.20.3/ext/ogg/gstoggstream.c --- old/gst-plugins-base-1.20.2/ext/ogg/gstoggstream.c 2022-05-03 00:29:29.000000000 +0200 +++ new/gst-plugins-base-1.20.3/ext/ogg/gstoggstream.c 2022-06-16 00:36:22.000000000 +0200 @@ -425,7 +425,8 @@ pad->granulerate_n = GST_READ_UINT32_BE (data + 22); pad->granulerate_d = GST_READ_UINT32_BE (data + 26); if (pad->granulerate_n == 0 || pad->granulerate_d == 0) { - GST_WARNING ("frame rate %d/%d", pad->granulerate_n, pad->granulerate_d); + GST_WARNING ("Invalid frame rate %d/%d", pad->granulerate_n, + pad->granulerate_d); pad->granulerate_n = 0; pad->granulerate_d = 0; return FALSE; @@ -565,6 +566,12 @@ return FALSE; } + if (header.frame_rate_numerator == 0 || header.frame_rate_denominator == 0) { + GST_WARNING ("invalid framerate %d/%d", header.frame_rate_numerator, + header.frame_rate_denominator); + return FALSE; + } + pad->is_video = TRUE; pad->always_flush_page = TRUE; pad->granulerate_n = header.frame_rate_numerator * 2; @@ -670,6 +677,11 @@ fps_n = GST_READ_UINT32_BE (packet->packet + 18); fps_d = GST_READ_UINT32_BE (packet->packet + 22); + if (fps_n == 0 || fps_d == 0) { + GST_WARNING ("invalid framerate %d/%d", fps_n, fps_d); + return FALSE; + } + pad->is_video = TRUE; pad->is_vp8 = TRUE; pad->granulerate_n = fps_n; @@ -1690,7 +1702,7 @@ pad->is_video = TRUE; pad->granulerate_n = 10000000; time_unit = GST_READ_UINT64_LE (data + 17); - if (time_unit > G_MAXINT || time_unit < G_MININT) { + if (time_unit > G_MAXINT || time_unit < G_MININT || time_unit == 0) { GST_WARNING ("timeunit is out of range"); } pad->granulerate_d = (gint) CLAMP (time_unit, G_MININT, G_MAXINT); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.20.2/gst/audioconvert/gstaudioconvert.c new/gst-plugins-base-1.20.3/gst/audioconvert/gstaudioconvert.c --- old/gst-plugins-base-1.20.2/gst/audioconvert/gstaudioconvert.c 2022-05-03 00:29:29.000000000 +0200 +++ new/gst-plugins-base-1.20.3/gst/audioconvert/gstaudioconvert.c 2022-06-16 00:36:22.000000000 +0200 @@ -683,6 +683,8 @@ } else if (out_chans > 1) { GST_ERROR_OBJECT (base, "Have no default layout for %d channels", out_chans); + gst_structure_set (outs, "channel-mask", GST_TYPE_BITMASK, + G_GUINT64_CONSTANT (0), NULL); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.20.2/gst/playback/gstdecodebin3.c new/gst-plugins-base-1.20.3/gst/playback/gstdecodebin3.c --- old/gst-plugins-base-1.20.2/gst/playback/gstdecodebin3.c 2022-05-03 00:29:29.000000000 +0200 +++ new/gst-plugins-base-1.20.3/gst/playback/gstdecodebin3.c 2022-06-16 00:36:22.000000000 +0200 @@ -1178,7 +1178,7 @@ for (i = 0; i < nb; i++) { GstStream *stream = gst_stream_collection_get_stream (collection, i); GstStreamType curtype = gst_stream_get_stream_type (stream); - if (!(used_types & curtype)) { + if (curtype != GST_STREAM_TYPE_UNKNOWN && !(used_types & curtype)) { const gchar *sid = gst_stream_get_stream_id (stream); GST_DEBUG_OBJECT (dbin, "Automatically selecting stream '%s' of type %s", sid, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.20.2/gst/playback/gstparsebin.c new/gst-plugins-base-1.20.3/gst/playback/gstparsebin.c --- old/gst-plugins-base-1.20.2/gst/playback/gstparsebin.c 2022-05-03 00:29:29.000000000 +0200 +++ new/gst-plugins-base-1.20.3/gst/playback/gstparsebin.c 2022-06-16 00:36:22.000000000 +0200 @@ -1376,22 +1376,23 @@ g_value_array_free (factories); if (parsebin->expose_allstreams) { - GstStream *newstream; - GST_LOG_OBJECT (parsepad, "Existing GstStream %" GST_PTR_FORMAT, - parsepad->active_stream); /* If we expose all streams, we only need to inform the application about * a missing handler but still expose it. We also make sure the stream * type is unknown. */ - g_assert (parsepad->active_stream); - newstream = - gst_stream_new (gst_stream_get_stream_id (parsepad->active_stream), - caps, GST_STREAM_TYPE_UNKNOWN, - gst_stream_get_stream_flags (parsepad->active_stream)); - gst_object_replace ((GstObject **) & parsepad->active_stream, - (GstObject *) newstream); - GST_LOG_OBJECT (parsepad, "New GstStream %" GST_PTR_FORMAT, - parsepad->active_stream); - + if (parsepad->in_a_fallback_collection) { + GstStream *newstream; + GST_LOG_OBJECT (parsepad, "Existing GstStream %" GST_PTR_FORMAT, + parsepad->active_stream); + g_assert (parsepad->active_stream); + newstream = + gst_stream_new (gst_stream_get_stream_id (parsepad->active_stream), + caps, GST_STREAM_TYPE_UNKNOWN, + gst_stream_get_stream_flags (parsepad->active_stream)); + gst_object_replace ((GstObject **) & parsepad->active_stream, + (GstObject *) newstream); + GST_LOG_OBJECT (parsepad, "New GstStream %" GST_PTR_FORMAT, + parsepad->active_stream); + } gst_element_post_message (GST_ELEMENT_CAST (parsebin), gst_missing_decoder_message_new (GST_ELEMENT_CAST (parsebin), caps)); goto expose_pad; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.20.2/gst/playback/gstplaybin3.c new/gst-plugins-base-1.20.3/gst/playback/gstplaybin3.c --- old/gst-plugins-base-1.20.2/gst/playback/gstplaybin3.c 2022-05-03 00:29:29.000000000 +0200 +++ new/gst-plugins-base-1.20.3/gst/playback/gstplaybin3.c 2022-06-16 00:36:22.000000000 +0200 @@ -3061,6 +3061,7 @@ gint pb_stream_type = -1; gchar *pad_name; GstPlayBin3 *playbin = group->playbin; + GstStreamType selected, active, cur; GST_PLAY_BIN3_SHUTDOWN_LOCK (playbin, shutdown); @@ -3073,10 +3074,13 @@ try exact match first */ if (g_str_has_prefix (pad_name, "video")) { pb_stream_type = PLAYBIN_STREAM_VIDEO; + cur = GST_STREAM_TYPE_VIDEO; } else if (g_str_has_prefix (pad_name, "audio")) { pb_stream_type = PLAYBIN_STREAM_AUDIO; + cur = GST_STREAM_TYPE_AUDIO; } else if (g_str_has_prefix (pad_name, "text")) { pb_stream_type = PLAYBIN_STREAM_TEXT; + cur = GST_STREAM_TYPE_TEXT; } g_free (pad_name); @@ -3091,6 +3095,30 @@ GST_PLAY_BIN3_LOCK (playbin); combine = &playbin->combiner[pb_stream_type]; + /* (uri)decodebin3 will post streams-selected once all pads are expose. + * Therefore this stream might not be marked as selected on pad-added, + * and associated combiner can be null here. + * Marks this stream as selected manually, exposed pad implies it's selected + * already */ + selected = playbin->selected_stream_types | cur; + active = playbin->active_stream_types; + + if (selected != active) { + GST_DEBUG_OBJECT (playbin, + "%s:%s added but not an active stream, marking active", + GST_DEBUG_PAD_NAME (pad)); + playbin->selected_stream_types = selected; + reconfigure_output (playbin); + + /* shutdown state can be changed meantime then combiner will not be + * configured */ + if (g_atomic_int_get (&playbin->shutdown)) { + GST_PLAY_BIN3_UNLOCK (playbin); + GST_PLAY_BIN3_SHUTDOWN_UNLOCK (playbin); + return; + } + } + combiner_control_pad (playbin, combine, pad); control_source_pad (group, pad, combine->stream_type); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.20.2/gst-libs/gst/app/gstappsink.c new/gst-plugins-base-1.20.3/gst-libs/gst/app/gstappsink.c --- old/gst-plugins-base-1.20.2/gst-libs/gst/app/gstappsink.c 2022-05-03 00:29:29.000000000 +0200 +++ new/gst-plugins-base-1.20.3/gst-libs/gst/app/gstappsink.c 2022-06-16 00:36:22.000000000 +0200 @@ -731,6 +731,7 @@ gst_mini_object_unref (obj); priv->num_buffers = 0; priv->num_events = 0; + gst_caps_replace (&priv->last_caps, NULL); g_cond_signal (&priv->cond); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.20.2/gst-libs/gst/gl/meson.build new/gst-plugins-base-1.20.3/gst-libs/gst/gl/meson.build --- old/gst-plugins-base-1.20.2/gst-libs/gst/gl/meson.build 2022-05-03 00:29:29.000000000 +0200 +++ new/gst-plugins-base-1.20.3/gst-libs/gst/gl/meson.build 2022-06-16 00:36:22.000000000 +0200 @@ -1,6 +1,11 @@ +gstgl_dep = dependency('', required : false) +gstglproto_dep = dependency('', required : false) +gstglx11_dep = dependency('', required : false) +gstglwayland_dep = dependency('', required : false) +gstglegl_dep = dependency('', required : false) + if get_option('gl').disabled() message('GStreamer OpenGL integration disabled via options.') - gstgl_dep = dependency('', required: false) build_gstgl = false subdir_done() endif @@ -145,7 +150,7 @@ ] foreach option : glconf_options - glconf.set10(option, false) + glconf.set(option, 0) endforeach unneeded_dep = dependency('', required : false) @@ -489,11 +494,11 @@ if gles2_dep.found() gl_lib_deps += gles2_dep - glconf.set10('GST_GL_HAVE_GLES2', 1) + glconf.set('GST_GL_HAVE_GLES2', 1) if gles3_h - glconf.set10('GST_GL_HAVE_GLES3', 1) + glconf.set('GST_GL_HAVE_GLES3',1) if gles3ext3_h - glconf.set10('GST_GL_HAVE_GLES3EXT3_H', 1) + glconf.set('GST_GL_HAVE_GLES3EXT3_H', 1) endif endif enabled_gl_apis += 'gles2' @@ -501,7 +506,7 @@ if gl_dep.found() gl_lib_deps += gl_dep - glconf.set10('GST_GL_HAVE_OPENGL', 1) + glconf.set('GST_GL_HAVE_OPENGL', 1) enabled_gl_apis += 'gl' endif @@ -547,11 +552,11 @@ 'egl/gstgldisplay_egl_device.h', ]) gl_platform_deps += egl_dep - glconf.set10('GST_GL_HAVE_PLATFORM_EGL', 1) + glconf.set('GST_GL_HAVE_PLATFORM_EGL', 1) if cc.has_header('libdrm/drm_fourcc.h') gl_misc_deps += allocators_dep - glconf.set10('GST_GL_HAVE_DMABUF', 1) + glconf.set('GST_GL_HAVE_DMABUF', 1) endif egl_includes = ''' @@ -650,6 +655,7 @@ endif endif +xcb_dep = unneeded_dep if need_win_x11 != 'no' xcb_dep = dependency('x11-xcb', required : false) if x11_dep.found() and xcb_dep.found() @@ -756,7 +762,7 @@ if windows_graphics_h and windows_app_dep.found() and runtimeobject_lib.found() enabled_gl_winsys += 'winrt' - glconf.set10('GST_GL_HAVE_WINDOW_WINRT', 1) + glconf.set('GST_GL_HAVE_WINDOW_WINRT', 1) gl_priv_sources += [ 'winrt/gstglwindow_winrt_egl.cpp' ] @@ -804,7 +810,7 @@ if foundation_dep.found() and quartzcore_dep.found() and corefoundation_dep.found() gl_platform_deps += [quartzcore_dep, corefoundation_dep, foundation_dep] enabled_gl_platforms += 'cgl' - glconf.set10('GST_GL_HAVE_PLATFORM_CGL', 1) + glconf.set('GST_GL_HAVE_PLATFORM_CGL', 1) if need_win_cocoa != 'no' cocoa_dep = dependency('appleframeworks', modules : ['Cocoa'], required : false) @@ -817,7 +823,7 @@ ] gl_winsys_deps += cocoa_dep enabled_gl_winsys += 'cocoa' - glconf.set10('GST_GL_HAVE_WINDOW_COCOA', 1) + glconf.set('GST_GL_HAVE_WINDOW_COCOA', 1) elif need_win_cocoa == 'yes' error('Could not find Cocoa') endif @@ -906,8 +912,8 @@ if egl_dep.found() and cc.has_function ('fbGetDisplay', dependencies : egl_dep) if cc.has_function ('glTexDirectVIV', dependencies : gles2_dep) enabled_gl_winsys += 'viv-fb' - glconf.set10('GST_GL_HAVE_WINDOW_VIV_FB', 1) - glconf.set10('GST_GL_HAVE_VIV_DIRECTVIV', 1) + glconf.set('GST_GL_HAVE_WINDOW_VIV_FB', 1) + glconf.set('GST_GL_HAVE_VIV_DIRECTVIV', 1) gl_priv_sources += [ 'viv-fb/gstgldisplay_viv_fb.c', 'viv-fb/gstglwindow_viv_fb_egl.c', @@ -930,7 +936,7 @@ if host_system == 'android' and need_win_android != 'no' and need_platform_egl != 'no' if gles2_dep.found() and egl_dep.found() enabled_gl_winsys += ['android'] - glconf.set10('GST_GL_HAVE_WINDOW_ANDROID', 1) + glconf.set('GST_GL_HAVE_WINDOW_ANDROID', 1) gl_priv_sources += [ 'android/gstglwindow_android_egl.c' ] @@ -966,12 +972,6 @@ build_gstgl = false endif -gstgl_dep = dependency('', required : false) -gstglproto_dep = dependency('', required : false) -gstglx11_dep = dependency('', required : false) -gstglwayland_dep = dependency('', required : false) -gstglegl_dep = dependency('', required : false) - if build_gstgl # find some types that may or may not be defined if cc.has_type('GLeglImageOES', prefix : gl_include_block, dependencies : gl_lib_deps, include_directories : gl_includes) @@ -1143,7 +1143,7 @@ gl_x11_gir = gnome.generate_gir(gstgl, kwargs: gir) endif endif - gstglx11_dep = declare_dependency(dependencies : [gstgl_dep], + gstglx11_dep = declare_dependency(dependencies : [gstgl_dep, x11_dep, xcb_dep], sources : gl_x11_gir) meson.override_dependency('gstreamer-gl-x11-1.0', gstglx11_dep) endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.20.2/gst-libs/gst/rtp/gstrtcpbuffer.c new/gst-plugins-base-1.20.3/gst-libs/gst/rtp/gstrtcpbuffer.c --- old/gst-plugins-base-1.20.2/gst-libs/gst/rtp/gstrtcpbuffer.c 2022-05-03 00:29:29.000000000 +0200 +++ new/gst-plugins-base-1.20.3/gst-libs/gst/rtp/gstrtcpbuffer.c 2022-06-16 00:36:22.000000000 +0200 @@ -109,8 +109,7 @@ if (G_UNLIKELY (header_mask != GST_RTCP_VALID_VALUE)) goto wrong_mask; - /* no padding when mask succeeds */ - padding = FALSE; + padding = data[0] & 0x20; /* store len */ data_len = len; @@ -129,7 +128,7 @@ if (data_len < 4) break; - /* padding only allowed on last packet */ + /* Version already checked for first packet through mask */ if (padding) break; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.20.2/gst-libs/gst/rtp/gstrtcpbuffer.h new/gst-plugins-base-1.20.3/gst-libs/gst/rtp/gstrtcpbuffer.h --- old/gst-plugins-base-1.20.2/gst-libs/gst/rtp/gstrtcpbuffer.h 2022-05-03 00:29:29.000000000 +0200 +++ new/gst-plugins-base-1.20.3/gst-libs/gst/rtp/gstrtcpbuffer.h 2022-06-16 00:36:22.000000000 +0200 @@ -262,10 +262,10 @@ /** * GST_RTCP_REDUCED_SIZE_VALID_MASK: * - * Mask for version, padding bit and packet type pair allowing reduced size + * Mask for version and packet type pair allowing reduced size * packets, basically it accepts other types than RR and SR */ -#define GST_RTCP_REDUCED_SIZE_VALID_MASK (0xc000 | 0x2000 | 0xf8) +#define GST_RTCP_REDUCED_SIZE_VALID_MASK (0xc000 | 0xf8) /** * GST_RTCP_VALID_VALUE: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.20.2/gst-libs/gst/tag/meson.build new/gst-plugins-base-1.20.3/gst-libs/gst/tag/meson.build --- old/gst-plugins-base-1.20.2/gst-libs/gst/tag/meson.build 2022-05-03 00:29:29.000000000 +0200 +++ new/gst-plugins-base-1.20.3/gst-libs/gst/tag/meson.build 2022-06-16 00:36:22.000000000 +0200 @@ -70,13 +70,7 @@ core_conf.set('HAVE_ISO_CODES', have_iso_codes) # could drop optional zlib dep and use g_zlib_decompressor_new() -zlib_dep = dependency('zlib', required : false) -if not zlib_dep.found() - zlib_dep = cc.find_library('z', required : false) - if not zlib_dep.found() or not cc.has_header('zlib.h') - zlib_dep = subproject('zlib').get_variable('zlib_dep') - endif -endif +zlib_dep = dependency('zlib') core_conf.set('HAVE_ZLIB', true) tag_deps = [gst_base_dep, libm, zlib_dep] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.20.2/gst-libs/gst/video/gstvideoaggregator.c new/gst-plugins-base-1.20.3/gst-libs/gst/video/gstvideoaggregator.c --- old/gst-plugins-base-1.20.2/gst-libs/gst/video/gstvideoaggregator.c 2022-05-03 00:29:29.000000000 +0200 +++ new/gst-plugins-base-1.20.3/gst-libs/gst/video/gstvideoaggregator.c 2022-06-16 00:36:22.000000000 +0200 @@ -1063,6 +1063,8 @@ gst_caps_unref (possible_caps); continue; } + + gst_caps_unref (possible_caps); } /* If the format is supported, consider it very high weight */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.20.2/gst-plugins-base.doap new/gst-plugins-base-1.20.3/gst-plugins-base.doap --- old/gst-plugins-base-1.20.2/gst-plugins-base.doap 2022-05-03 00:29:29.000000000 +0200 +++ new/gst-plugins-base-1.20.3/gst-plugins-base.doap 2022-06-16 00:36:22.000000000 +0200 @@ -36,6 +36,16 @@ <release> <Version> + <revision>1.20.3</revision> + <branch>1.20</branch> + <name></name> + <created>2022-06-15</created> + <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-1.20.3.tar.xz" /> + </Version> + </release> + + <release> + <Version> <revision>1.20.2</revision> <branch>1.20</branch> <name></name> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.20.2/meson.build new/gst-plugins-base-1.20.3/meson.build --- old/gst-plugins-base-1.20.2/meson.build 2022-05-03 00:29:29.000000000 +0200 +++ new/gst-plugins-base-1.20.3/meson.build 2022-06-16 00:36:22.000000000 +0200 @@ -1,5 +1,5 @@ project('gst-plugins-base', 'c', - version : '1.20.2', + version : '1.20.3', meson_version : '>= 0.59', default_options : [ 'warning_level=1', 'buildtype=debugoptimized' ]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.20.2/po/gst-plugins-base-1.0.pot new/gst-plugins-base-1.20.3/po/gst-plugins-base-1.0.pot --- old/gst-plugins-base-1.20.2/po/gst-plugins-base-1.0.pot 2022-05-03 00:29:57.435302500 +0200 +++ new/gst-plugins-base-1.20.3/po/gst-plugins-base-1.0.pot 2022-06-16 00:36:51.190222300 +0200 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: gst-plugins-base-1.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-02 23:29+0100\n" +"POT-Creation-Date: 2022-06-15 23:36+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <l...@li.org>\n" @@ -83,11 +83,11 @@ msgid "Could not read CD." msgstr "" -#: gst/playback/gstdecodebin2.c:1911 gst/playback/gstparsebin.c:1542 +#: gst/playback/gstdecodebin2.c:1911 gst/playback/gstparsebin.c:1543 msgid "Could not determine type of stream" msgstr "" -#: gst/playback/gstdecodebin2.c:2889 gst/playback/gstparsebin.c:2374 +#: gst/playback/gstdecodebin2.c:2889 gst/playback/gstparsebin.c:2375 msgid "This appears to be a text file" msgstr "" @@ -111,7 +111,7 @@ msgid "Could not create \"uridecodebin\" element." msgstr "" -#: gst/playback/gstplaybin3.c:4604 +#: gst/playback/gstplaybin3.c:4632 msgid "Could not create \"uridecodebin3\" element." msgstr "" @@ -725,17 +725,17 @@ msgid "Initial key in which the sound starts" msgstr "" -#: tools/gst-device-monitor.c:294 tools/gst-play.c:1575 +#: tools/gst-device-monitor.c:296 tools/gst-play.c:1575 msgid "Print version information and exit" msgstr "" -#: tools/gst-device-monitor.c:296 +#: tools/gst-device-monitor.c:298 msgid "" "Don't exit after showing the initial device list, but wait for devices to " "added/removed." msgstr "" -#: tools/gst-device-monitor.c:299 +#: tools/gst-device-monitor.c:301 msgid "Include devices from hidden device providers." msgstr "" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.20.2/tests/check/elements/appsink.c new/gst-plugins-base-1.20.3/tests/check/elements/appsink.c --- old/gst-plugins-base-1.20.2/tests/check/elements/appsink.c 2022-05-03 00:29:29.000000000 +0200 +++ new/gst-plugins-base-1.20.3/tests/check/elements/appsink.c 2022-06-16 00:36:22.000000000 +0200 @@ -987,6 +987,87 @@ GST_END_TEST; +static void +push_caps_with_type (gint caps_type) +{ + GstCaps *caps; + + caps = + gst_caps_new_simple ("application/x-gst-check", "type", G_TYPE_INT, + caps_type, NULL); + fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_caps (caps))); + + gst_caps_unref (caps); +} + +static void +push_buffer_with_number (gint buffer_number) +{ + GstBuffer *buffer; + + buffer = gst_buffer_new_and_alloc (sizeof (gint)); + gst_buffer_fill (buffer, 0, &buffer_number, sizeof (gint)); + fail_unless (gst_pad_push (mysrcpad, buffer) == GST_FLOW_OK); +} + +static void +pull_and_check_sample (GstElement * appsink, gint expected_buffer_number, + gint expected_caps_type) +{ + GstSample *sample; + GstCaps *caps; + GstBuffer *buffer; + GstStructure *structure; + gint actual_caps_type; + + sample = gst_app_sink_pull_sample (GST_APP_SINK (appsink)); + + caps = gst_sample_get_caps (sample); + fail_unless (structure = gst_caps_get_structure (caps, 0)); + fail_unless (gst_structure_get_int (structure, "type", &actual_caps_type)); + assert_equals_int (actual_caps_type, expected_caps_type); + + buffer = gst_sample_get_buffer (sample); + gst_check_buffer_data (buffer, &expected_buffer_number, sizeof (gint)); + + gst_sample_unref (sample); +} + +GST_START_TEST (test_caps_before_flush_race_condition) +{ + GstElement *sink; + GstSegment segment; + + sink = setup_appsink (); + + ASSERT_SET_STATE (sink, GST_STATE_PLAYING, GST_STATE_CHANGE_ASYNC); + + // Push a series of buffers, and at the end, a new caps event. + push_caps_with_type (1); + push_buffer_with_number (10); + push_buffer_with_number (11); + push_caps_with_type (2); + + pull_and_check_sample (sink, 10, 1); + + // Then, let a flush happen. + fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_flush_start ())); + fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_flush_stop (TRUE))); + // Sinks downgrade state to PAUSED after a flush, let's up it to PLAYING again to avoid gst_pad_push becoming blocking. + ASSERT_SET_STATE (sink, GST_STATE_PLAYING, GST_STATE_CHANGE_ASYNC); + // A segment must be sent after a flush. + gst_segment_init (&segment, GST_FORMAT_TIME); + fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); + + // Send a buffer now, and check that when pulled by the appsink user, it didn't come with the wrong old caps. + push_buffer_with_number (20); + pull_and_check_sample (sink, 20, 2); + + cleanup_appsink (sink); +} + +GST_END_TEST; + static Suite * appsink_suite (void) { @@ -1012,6 +1093,7 @@ tcase_add_test (tc_chain, test_event_signals); tcase_add_test (tc_chain, test_event_paused); tcase_add_test (tc_chain, test_reverse_stepping); + tcase_add_test (tc_chain, test_caps_before_flush_race_condition); return s; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.20.2/tests/check/libs/gstglmatrix.c new/gst-plugins-base-1.20.3/tests/check/libs/gstglmatrix.c --- old/gst-plugins-base-1.20.2/tests/check/libs/gstglmatrix.c 2022-05-03 00:29:29.000000000 +0200 +++ new/gst-plugins-base-1.20.3/tests/check/libs/gstglmatrix.c 2022-06-16 00:36:22.000000000 +0200 @@ -22,7 +22,7 @@ # include "config.h" #endif -#include <gst/gl/gstglutils.c> +#include <gst/gl/gl.h> #undef GST_CAT_DEFAULT #include <gst/check/gstcheck.h> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.20.2/tests/check/libs/rtp.c new/gst-plugins-base-1.20.3/tests/check/libs/rtp.c --- old/gst-plugins-base-1.20.2/tests/check/libs/rtp.c 2022-05-03 00:29:29.000000000 +0200 +++ new/gst-plugins-base-1.20.3/tests/check/libs/rtp.c 2022-06-16 00:36:22.000000000 +0200 @@ -31,6 +31,8 @@ #define RTP_HEADER_LEN 12 +static GstBuffer *create_feedback_buffer (gboolean with_padding); + GST_START_TEST (test_rtp_buffer) { GstBuffer *buf; @@ -1073,20 +1075,19 @@ GST_START_TEST (test_rtcp_validate_reduced_with_padding) { - /* Reduced size packet with padding. */ - guint8 rtcp_pkt[] = { - 0xA0, 0xcd, 0x00, 0x08, /* P=1, Type FB, length = 8 */ - 0x97, 0x6d, 0x21, 0x6a, - 0x4d, 0x16, 0xaf, 0x14, - 0x10, 0x1f, 0xd9, 0x91, - 0x0f, 0xb7, 0x50, 0x88, - 0x3b, 0x79, 0x31, 0x50, - 0xbe, 0x19, 0x12, 0xa8, - 0xbb, 0xce, 0x9e, 0x3e, - 0x00, 0x00, 0x00, 0x04 /* RTCP padding */ - }; + GstRTCPPacket packet; + GstRTCPBuffer rtcp = GST_RTCP_BUFFER_INIT; + GstBuffer *buffer = create_feedback_buffer (TRUE); + + gst_rtcp_buffer_map (buffer, GST_MAP_READ, &rtcp); + fail_unless (gst_rtcp_buffer_get_first_packet (&rtcp, &packet)); + fail_unless (gst_rtcp_packet_get_padding (&packet)); + gst_rtcp_buffer_unmap (&rtcp); + + fail_unless (gst_rtcp_buffer_validate_reduced (buffer)); + fail_if (gst_rtcp_buffer_validate (buffer)); - fail_if (gst_rtcp_buffer_validate_data_reduced (rtcp_pkt, sizeof (rtcp_pkt))); + gst_buffer_unref (buffer); } GST_END_TEST; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.20.2/tests/check/meson.build new/gst-plugins-base-1.20.3/tests/check/meson.build --- old/gst-plugins-base-1.20.2/tests/check/meson.build 2022-05-03 00:29:29.000000000 +0200 +++ new/gst-plugins-base-1.20.3/tests/check/meson.build 2022-06-16 00:36:22.000000000 +0200 @@ -11,7 +11,7 @@ [ 'libs/baseaudiovisualizer.c' ], [ 'libs/discoverer.c' ], [ 'libs/fft.c' ], - [ 'libs/libsabi.c', false, [ gstgl_dep ] ], + [ 'libs/libsabi.c', false, [ gstgl_dep, gstglx11_dep, gstglwayland_dep, gstglegl_dep ] ], [ 'libs/mikey.c' ], [ 'libs/navigation.c' ], [ 'libs/pbutils.c' ], @@ -92,8 +92,8 @@ [ 'libs/gstglcontext.c', not build_gstgl, [gstgl_dep, gstglproto_dep]], [ 'libs/gstglfeature.c', not build_gstgl, [gstgl_dep, gstglproto_dep]], [ 'libs/gstglformat.c', not build_gstgl, [gstgl_dep, gstglproto_dep]], - [ 'libs/gstglheaders.c', not build_gstgl, [gstgl_dep]], - [ 'libs/gstglmatrix.c', not build_gstgl, [gstgl_dep, gstglproto_dep]], + [ 'libs/gstglheaders.c', not build_gstgl, [gstgl_dep, gstglx11_dep, gstglwayland_dep, gstglegl_dep]], + [ 'libs/gstglmatrix.c', not build_gstgl, [gstgl_dep]], [ 'libs/gstglmemory.c', not build_gstgl, [gstgl_dep, gstglproto_dep]], [ 'libs/gstglquery.c', not build_gstgl, [gstgl_dep, gstglproto_dep]], [ 'libs/gstglshader.c', not build_gstgl, [gstgl_dep, gstglproto_dep]], diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.20.2/tools/gst-device-monitor.c new/gst-plugins-base-1.20.3/tools/gst-device-monitor.c --- old/gst-plugins-base-1.20.2/tools/gst-device-monitor.c 2022-05-03 00:29:29.000000000 +0200 +++ new/gst-plugins-base-1.20.3/tools/gst-device-monitor.c 2022-06-16 00:36:22.000000000 +0200 @@ -144,6 +144,8 @@ if (G_VALUE_HOLDS_UINT (value)) { val = g_strdup_printf ("%u (0x%08x)", g_value_get_uint (value), g_value_get_uint (value)); + } else if (G_VALUE_HOLDS_STRING (value)) { + val = g_value_dup_string (value); } else { val = gst_value_serialize (value); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.20.2/tools/gst-play.c new/gst-plugins-base-1.20.3/tools/gst-play.c --- old/gst-plugins-base-1.20.2/tools/gst-play.c 2022-05-03 00:29:29.000000000 +0200 +++ new/gst-plugins-base-1.20.3/tools/gst-play.c 2022-06-16 00:36:22.000000000 +0200 @@ -692,7 +692,7 @@ status[len] = '\0'; } - if (pos >= 0 && dur > 0) { + if (pos >= 0) { gchar dstr[32], pstr[32]; /* FIXME: pretty print in nicer format */