diff --git a/subprojects/gst-devtools/ChangeLog b/subprojects/gst-devtools/ChangeLog index 9a0bb71ece..3adcd05b40 100644 --- a/subprojects/gst-devtools/ChangeLog +++ b/subprojects/gst-devtools/ChangeLog @@ -1,7 +1,14 @@ +2022-05-03 00:39:09 +0100 Tim-Philipp Müller + + * meson.build: + Back to development + Part-of: + === release 1.20.2 === 2022-05-02 23:29:25 +0100 Tim-Philipp Müller + * ChangeLog: * NEWS: * RELEASE: * gst-devtools.doap: diff --git a/subprojects/gst-editing-services/ChangeLog b/subprojects/gst-editing-services/ChangeLog index 9815fdb950..aa98a1db73 100644 --- a/subprojects/gst-editing-services/ChangeLog +++ b/subprojects/gst-editing-services/ChangeLog @@ -1,7 +1,22 @@ +2022-05-13 10:23:54 +1000 Matthew Waters + + * ges/ges-video-uri-source.c: + ges/videourisource: handle non-1/1 PAR source videos + The automatic scaling done by framepositioner does not account for the + par of the video source. + Part-of: + +2022-05-03 00:39:09 +0100 Tim-Philipp Müller + + * meson.build: + Back to development + Part-of: + === release 1.20.2 === 2022-05-02 23:29:25 +0100 Tim-Philipp Müller + * ChangeLog: * NEWS: * RELEASE: * gst-editing-services.doap: diff --git a/subprojects/gst-libav/ChangeLog b/subprojects/gst-libav/ChangeLog index 6b0458aabc..b37a3b214f 100644 --- a/subprojects/gst-libav/ChangeLog +++ b/subprojects/gst-libav/ChangeLog @@ -1,7 +1,14 @@ +2022-05-03 00:39:09 +0100 Tim-Philipp Müller + + * meson.build: + Back to development + Part-of: + === release 1.20.2 === 2022-05-02 23:29:25 +0100 Tim-Philipp Müller + * ChangeLog: * NEWS: * RELEASE: * gst-libav.doap: diff --git a/subprojects/gst-omx/ChangeLog b/subprojects/gst-omx/ChangeLog index b201302ec0..c671bd7da4 100644 --- a/subprojects/gst-omx/ChangeLog +++ b/subprojects/gst-omx/ChangeLog @@ -1,7 +1,14 @@ +2022-05-03 00:39:09 +0100 Tim-Philipp Müller + + * meson.build: + Back to development + Part-of: + === release 1.20.2 === 2022-05-02 23:29:25 +0100 Tim-Philipp Müller + * ChangeLog: * NEWS: * RELEASE: * gst-omx.doap: diff --git a/subprojects/gst-plugins-bad/ChangeLog b/subprojects/gst-plugins-bad/ChangeLog index bc152e328d..2e9706f39b 100644 --- a/subprojects/gst-plugins-bad/ChangeLog +++ b/subprojects/gst-plugins-bad/ChangeLog @@ -1,7 +1,274 @@ +2022-06-09 23:19:24 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.cpp: + d3d11decoder: Fix for alternate interlacing signalling + Don't set d3d11+interlace caps feature. None of d3d11 elements + support it + Part-of: + +2022-05-27 05:15:13 +1000 Jan Schmidt + + * sys/androidmedia/gstamc-constants.h: + * sys/androidmedia/gstamc.c: + * sys/androidmedia/gstamcvideoenc.c: + * sys/androidmedia/gstamcvideoenc.h: + amc: Add H.265 encoder mapping. + Add mime type mapping to enable the use of Android H.265 encoders + Part-of: + +2022-05-30 16:31:38 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + * tests/check/elements/webrtcbin.c: + webrtcbin: Reject answers that don't contain the same number of m-line as offer + Otherwise, it segfaults later. Also add test to validate this. + Part-of: + +2022-06-04 17:23:00 +0200 Jan Alexander Steffens (heftig) + + * gst/rtmp2/rtmp/rtmpmessage.c: + rtmp2: Fix allocation of GstRtmpMeta + Use the right size. + On 64-bit platforms, `GstMetaInfo` is larger than `GstRtmpMeta`, which + masked this bug. On 32-bit platforms, it causes crashes. Thanks to + @maxatka for discovering this. + Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1721 + Part-of: + +2022-06-06 00:30:15 +0200 Jan Alexander Steffens (heftig) + + * ext/opencv/gstcvtracker.cpp: + * ext/opencv/gstcvtracker.h: + * ext/opencv/meson.build: + opencv: Allow building against 4.6.x + Replace the broken version checks with one modeled after + `GLIB_CHECK_VERSION`. + Part-of: + +2022-05-27 21:13:43 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11memory.cpp: + * gst-libs/gst/d3d11/gstd3d11memory.h: + * sys/d3d11/gstd3d11decoder.cpp: + d3d11decoder: Work around Intel DXVA driver crash + Intel DXVA driver crashes sometimes (from GPU thread) if + ID3D11VideoDecoder is released while there are outstanding view objects. + To make sure the object life cycle, holds an ID3D11VideoDecoder refcount + in GstD3D11Memory object. + Part-of: + +2022-05-24 11:06:39 +0200 Erwann Gouesbet + + * sys/d3d11/gstd3d11screencapture.cpp: + d3d11screencapture: Fix missing/outdated cursor shape + d3d11screencapture can miss a cursor shape to draw or draw an outdated cursor shape. + - AcquireNextFrame only provides cursor shape when there is one update + - current d3d11screencapture skips cursor shape when mouse is not drawn + So, if a gstreamer application uses d3d11screencapture with cursor initially not drawn + "show-cursor"=false and then switches this property to true, the cursor will not be + actually drawn until AcquireNextFrame provides a new cursor shape. + This commit makes d3d11screencapture always update the cursor shape information, even + if the mouse is not drawn. d3d11screencapture will always have the latest cursor shape + when requested to draw it. + Part-of: + +2022-05-18 16:54:53 +0100 Philippe Normand + + * ext/webrtc/webrtcdatachannel.c: + datachannel: Notify low buffered amount according to spec + Quoting + https://www.w3.org/TR/webrtc/#dom-rtcdatachannel-bufferedamountlowthreshold + The bufferedAmountLowThreshold attribute sets the threshold at which the + bufferedAmount is considered to be low. When the bufferedAmount decreases from + above this threshold to **equal** or below it, the bufferedamountlow event fires. + Part-of: + +2022-05-17 14:15:40 +0300 Sebastian Dröge + + * gst/mpegtsmux/gstbasetsmux.c: + tsmux: Make sure to set srcpad caps under all conditions before outputting the first buffer + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1218 + Part-of: + +2022-05-17 14:02:28 +0300 Sebastian Dröge + + * gst/sdp/gstsdpdemux.c: + sdpdemux: Release request pads from rtpbin when freeing a stream + Otherwise the pads of the rtpbin stay around forever and are leaked. + Part-of: + +2022-05-06 18:21:00 -0400 Olivier Crête + + * gst/pcapparse/gstpcapparse.c: + pcapparse: Set timestamp in DTS, not PTS + This matches the behaviour of basesrc, in particular, it matches the + behaviour of udpsrc, so it's easier to use to as a replacement to test + rtpjitterbuffer and other similar elements. + Part-of: + +2022-04-28 16:02:26 +0100 Diogo Goncalves + + * sys/applemedia/avfvideosrc.m: + avfvideosrc: fix wrong framerate selected for caps + This fix solves an issue where a format that doesn't support the + requested framerate would be selected. It ensures that we use the first + format and framerate pair that supports the requested caps. + Part-of: + +2022-05-12 07:23:29 +0200 Edward Hervey + + * gst/mxf/mxfdemux.c: + mxfdemux: Handle files produced by legacy FFmpeg + Until March 2022, the FFmpeg MXF muxer would write the various index table + segments with the same instance ID, which should only be used if it is a + duplicate/repeated table. + In order to cope with those, we first compare the other index table segment + properties (body/index SID, start position) before comparing the instance + ID. This will ensure that we don't consider them as duplicate, but can still + detect "real" duplicates (which would have the same other properties). + Part-of: + +2022-05-06 17:53:51 +0200 Víctor Manuel Jáquez Leal + + * gst-libs/gst/va/gstvadisplay_drm.c: + libs: va: Add O_CLOEXEC flag at opening drm device. + So any other potential subprocess won't have access to it. + Part-of: + +2022-05-05 20:35:57 +0300 Sebastian Dröge + + * gst/mxf/mxfmux.c: + mxfmux: Disable aggregator's default negotiation + mxfmux can't negotiate caps with upstream/downstream and always outputs + specific caps based on the input streams. This will always happen before + it produces the first buffers. + By having the default aggregator negotiation enabled the same caps + would be pushed twice in the beginning, and again every time a + reconfigure event is received. + Part-of: + +2022-05-05 20:35:49 +0300 Sebastian Dröge + + * gst/mpegtsmux/gstbasetsmux.c: + mpegtsmux: Disable aggregator's default negotiation + mpegtsmux can't negotiate caps with upstream/downstream and always outputs + specific caps based on the input streams. This will always happen before + it produces the first buffers. + By having the default aggregator negotiation enabled the same caps + would be pushed twice in the beginning, and again every time a + reconfigure event is received. + Part-of: + +2022-05-05 00:24:26 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth264decoder.c: + h264decoder: Fix for unhandled low-delay decoding case + Baseclass calls get_preferred_output_delay() in a chain of + sequence header parsing and then new_sequence() is called + with required DPB size (includes render-delay) information. + Thus latency query should happen before the sequence header + parsing for subclass to report required render-delay accordingly + via get_preferred_output_delay() method. + (e.g., zero delay in case of live pipeline) + This commit is to fix wrong liveness signalling in case of + upstream packetized format. + Part-of: + +2022-05-04 23:36:30 +0900 Seungha Yang + + * sys/nvcodec/gstnvh264dec.c: + * sys/nvcodec/gstnvh265dec.c: + nvh264dec,nvh265dec: Don't realloc bitstream buffer per slice + Allocated memory size has not been updated which results in + realloc per slice. Fixing it and also release bitstream buffer + on ::close(), not finalize. + Part-of: + +2022-05-05 02:16:54 +0900 Seungha Yang + + * sys/d3d11/gstd3d11screencapture.cpp: + * sys/d3d11/gstd3d11screencapture.h: + * sys/d3d11/gstd3d11screencapturesrc.cpp: + * tests/examples/d3d11/d3d11screencapturesrc.cpp: + d3d11screencapturesrc: Fix crash when d3d11 device is different from owned one + GstD3D11ScreenCapture object is pipeline-independent global object + and the object can be shared by multiple src elements, + in order to overcome a limitation of DXGI Desktop Duplication API. + Note that the API allows only single capture session in a process for + a monitor. + Therefore GstD3D11ScreenCapture object must be able to handle a case + where a src element holds different GstD3D11Device object. Which can + happen when GstD3D11Device context is not shared by pipelines. + What's changed: + * Allocates capture texture with D3D11_RESOURCE_MISC_SHARED for the + texture to be able to copied into other device's texture + * Holds additional shader objects per src element and use it when drawing + mouse + Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1197 + Part-of: + +2022-04-17 23:55:55 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.cpp: + d3d11decoder: Do not preallocate texture using downstream d3d11 buffer pool + Our decoder implementation does not use downstream d3d11 pool for + decoding because of special requirement of D3D11/DXVA. So preallocation + using the downstream buffer pool will waste GPU memory in most cases. + Part-of: + +2022-04-16 21:27:57 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.cpp: + d3d11decoder: Copy HDR10 related caps field manually + If negotiate() is called from the set_format() chain, sinkpad may not + hold caps yet, so baseclass cannot copy it over to srcpad caps. + Copy them manually. + Part-of: + +2022-04-29 20:28:53 +0200 Jakub Adam + + * sys/d3d11/gstd3d11screencapture.cpp: + d3d11screencapture: Set viewport when drawing mouse cursor + If there weren't any moved/dirty regions in the captured frame, the + viewport of the ID3D11DeviceContext would be left at whatever previous + value it had, which could lead to the cursor being drawn in a wrong + position and/or in an incorrect size. + Part-of: + +2022-04-22 12:29:29 +0200 Corentin Damman + + * sys/nvcodec/cuda-converter.c: + cuda-converter: fix nvrtc compilation on non-English locale systems + Part-of: + +2022-03-07 08:46:57 -0500 Xavier Claessens + + * gst-libs/gst/vulkan/meson.build: + * sys/msdk/meson.build: + Meson: Fix deprecation warnings + Part-of: + +2021-11-12 20:13:10 +0100 Ruben Gonzalez + + * 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: + +2022-05-03 00:39:09 +0100 Tim-Philipp Müller + + * meson.build: + Back to development + Part-of: + === release 1.20.2 === 2022-05-02 23:29:25 +0100 Tim-Philipp Müller + * ChangeLog: * NEWS: * RELEASE: * gst-plugins-bad.doap: diff --git a/subprojects/gst-plugins-base/ChangeLog b/subprojects/gst-plugins-base/ChangeLog index 7fff5a854b..f981d79018 100644 --- a/subprojects/gst-plugins-base/ChangeLog +++ b/subprojects/gst-plugins-base/ChangeLog @@ -1,7 +1,191 @@ +2022-05-25 02:10:30 +0900 Seungha Yang + + * 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: + +2022-05-23 21:24:40 -0400 Eli Schwartz + + * 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: + +2022-04-26 09:29:39 +0200 Edward Hervey + + * ext/ogg/gstoggstream.c: + oggdemux: Protect against invalid framerates + This check wasn't done for all mappings. + Part-of: + +2022-05-15 16:53:12 +0000 Thibault Saunier + + * 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: + +2022-05-13 13:31:55 +0200 Alicia Boya García + + * 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: + +2022-05-16 12:34:36 -0400 U. Artie Eoff + + * gst-libs/gst/video/gstvideoaggregator.c: + videoaggregator: unref temporary caps + The "possible_caps" needs unref after finished using to + avoid memory leak. + Part-of: + +2022-03-29 17:51:13 +0200 Stéphane Cerveau + + * 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: + +2022-05-05 02:54:37 +0900 Seungha Yang + + * 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: + +2022-05-07 04:43:49 +0900 Seungha Yang + + * 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: + +2022-05-03 16:25:19 +0200 Edward Hervey + + * 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: + +2022-05-03 16:08:39 +0200 Edward Hervey + + * 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: + +2022-05-03 13:37:31 +0300 Sebastian Dröge + + * 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: + +2022-03-07 08:46:57 -0500 Xavier Claessens + + * gst-libs/gst/gl/meson.build: + Meson: Fix deprecation warnings + Part-of: + +2021-11-12 20:13:10 +0100 Ruben Gonzalez + + * 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: + +2022-05-03 00:39:09 +0100 Tim-Philipp Müller + + * meson.build: + Back to development + Part-of: + === release 1.20.2 === 2022-05-02 23:29:25 +0100 Tim-Philipp Müller + * ChangeLog: * NEWS: * RELEASE: * gst-plugins-base.doap: diff --git a/subprojects/gst-plugins-good/ChangeLog b/subprojects/gst-plugins-good/ChangeLog index 56cdbd2986..71a3fd67ae 100644 --- a/subprojects/gst-plugins-good/ChangeLog +++ b/subprojects/gst-plugins-good/ChangeLog @@ -1,7 +1,361 @@ +2022-05-18 10:23:15 +0300 Sebastian Dröge + + * gst/matroska/matroska-demux.c: + matroskademux: Avoid integer-overflow resulting in heap corruption in WavPack header handling code + blocksize + WAVPACK4_HEADER_SIZE might overflow gsize, which then + results in allocating a very small buffer. Into that buffer blocksize + data is memcpy'd later which then causes out of bound writes and can + potentially lead to anything from crashes to remote code execution. + Thanks to Adam Doupe for analyzing and reporting the issue. + CVE: CVE-2022-1920 + https://gstreamer.freedesktop.org/security/sa-2022-0004.html + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1226 + Part-of: + +2022-05-30 10:15:37 +0300 Sebastian Dröge + + * gst/isomp4/qtdemux.c: + qtdemux: Fix integer overflows in zlib decompression code + Various variables were of smaller types than needed and there were no + checks for any overflows when doing additions on the sizes. This is all + checked now. + In addition the size of the decompressed data is limited to 200MB now as + any larger sizes are likely pathological and we can avoid out of memory + situations in many cases like this. + Also fix a bug where the available output size on the next iteration in + the zlib decompression code was provided too large and could + potentially lead to out of bound writes. + Thanks to Adam Doupe for analyzing and reporting the issue. + CVE: tbd + https://gstreamer.freedesktop.org/security/sa-2022-0003.html + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1225 + Part-of: + +2022-05-18 11:24:37 +0300 Sebastian Dröge + + * gst/matroska/matroska-read-common.c: + matroskademux: Fix integer overflows in zlib/bz2/etc decompression code + Various variables were of smaller types than needed and there were no + checks for any overflows when doing additions on the sizes. This is all + checked now. + In addition the size of the decompressed data is limited to 120MB now as + any larger sizes are likely pathological and we can avoid out of memory + situations in many cases like this. + Also fix a bug where the available output size on the next iteration in + the zlib/bz2 decompression code was provided too large and could + potentially lead to out of bound writes. + Thanks to Adam Doupe for analyzing and reporting the issue. + CVE: CVE-2022-1922, CVE-2022-1923, CVE-2022-1924, CVE-2022-1925 + https://gstreamer.freedesktop.org/security/sa-2022-0002.html + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1225 + Part-of: + +2022-05-18 12:00:48 +0300 Sebastian Dröge + + * gst/avi/gstavidemux.c: + avidemux: Fix integer overflow resulting in heap corruption in DIB buffer inversion code + Check that width*bpp/8 doesn't overflow a guint and also that + height*stride fits into the provided buffer without overflowing. + Thanks to Adam Doupe for analyzing and reporting the issue. + CVE: CVE-2022-1921 + See https://gstreamer.freedesktop.org/security/sa-2022-0001.html + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1224 + Part-of: + +2022-05-19 04:16:25 +0000 Adam Doupe + + * gst/smpte/gstmask.c: + smpte: Fix integer overflow with possible heap corruption in GstMask creation. + Check that width*height*sizeof(guint32) doesn't overflow when + allocated user_data for mask, potential for heap overwrite when + inverting. + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1231 + Part-of: + +2022-06-07 17:31:43 +0200 Bastien Nocera + + * ext/gtk/gtkgstglwidget.c: + gtk: Fix double-free when OpenGL can't be initialised + gtk_gl_area_get_error() doesn't return a copy of the error, but just the + error. If initialising OpenGL fails, then GtkGstGLWidget will consume + the error, and cause GTK to try and display freed memory. + ==50914== Invalid read of size 8 + ==50914== at 0x4C4CB8A: gtk_gl_area_draw_error_screen (gtkglarea.c:663) + ==50914== by 0x4C4CB8A: gtk_gl_area_draw (gtkglarea.c:687) + ==50914== by 0x4E061CA: gtk_widget_draw_internal (gtkwidget.c:7084) + ==50914== by 0x4BAEFB1: gtk_container_propagate_draw (gtkcontainer.c:3854) + ==50914== by 0x4D4B6BF: gtk_stack_render (gtkstack.c:2207) + ==50914== by 0x4BB4B03: gtk_css_custom_gadget_draw (gtkcsscustomgadget.c:159) + ==50914== by 0x4BBA4C4: gtk_css_gadget_draw (gtkcssgadget.c:885) + ==50914== by 0x4D4D780: gtk_stack_draw (gtkstack.c:2119) + ==50914== by 0x4E061CA: gtk_widget_draw_internal (gtkwidget.c:7084) + ==50914== by 0x4BAEFB1: gtk_container_propagate_draw (gtkcontainer.c:3854) + ==50914== by 0x4BAF0C3: gtk_container_draw (gtkcontainer.c:3674) + ==50914== by 0x4E061CA: gtk_widget_draw_internal (gtkwidget.c:7084) + ==50914== by 0x4BAEFB1: gtk_container_propagate_draw (gtkcontainer.c:3854) + ==50914== Address 0x187a0818 is 8 bytes inside a block of size 16 free'd + ==50914== at 0x48480E4: free (vg_replace_malloc.c:872) + ==50914== by 0x49A5B8C: g_free (gmem.c:218) + ==50914== by 0x49C1013: g_slice_free1 (gslice.c:1183) + ==50914== by 0x4990DE4: g_error_free (gerror.c:870) + ==50914== by 0x4990FE9: g_clear_error (gerror.c:1052) + ==50914== by 0x1A489780: _get_gl_context (gtkgstglwidget.c:540) + ==50914== by 0x1A4863CB: gst_gtk_invoke_func (gstgtkutils.c:39) + ==50914== by 0x49A3834: g_main_context_invoke_full (gmain.c:6137) + ==50914== by 0x1A486450: gst_gtk_invoke_on_main (gstgtkutils.c:59) + ==50914== by 0x1A48A29E: gtk_gst_gl_widget_init_winsys (gtkgstglwidget.c:632) + ==50914== by 0x1A4887E7: gst_gtk_gl_sink_start (gstgtkglsink.c:267) + ==50914== by 0x6579810: gst_base_sink_change_state (gstbasesink.c:5662) + ==50914== Block was alloc'd at + ==50914== at 0x484586F: malloc (vg_replace_malloc.c:381) + ==50914== by 0x49A9278: g_malloc (gmem.c:125) + ==50914== by 0x49C1BA5: g_slice_alloc (gslice.c:1072) + ==50914== by 0x49C3BCC: g_slice_alloc0 (gslice.c:1098) + ==50914== by 0x499096B: g_error_allocate (gerror.c:708) + ==50914== by 0x4990AF1: UnknownInlinedFun (gerror.c:722) + ==50914== by 0x4990AF1: g_error_copy (gerror.c:892) + ==50914== by 0x4C4B9F9: gtk_gl_area_set_error (gtkglarea.c:1036) + ==50914== by 0x4C4BAF7: gtk_gl_area_real_create_context (gtkglarea.c:346) + ==50914== by 0x4B21B28: _gtk_marshal_OBJECT__VOIDv (gtkmarshalers.c:2730) + ==50914== by 0x4920B78: UnknownInlinedFun (gclosure.c:893) + ==50914== by 0x4920B78: g_signal_emit_valist (gsignal.c:3406) + ==50914== by 0x4920CB2: g_signal_emit (gsignal.c:3553) + ==50914== by 0x4C4B927: gtk_gl_area_realize (gtkglarea.c:308) + Reproduced by running: + MESA_GL_VERSION_OVERRIDE=2.7 totem + See https://gitlab.gnome.org/GNOME/totem/-/issues/522 + Part-of: + +2022-06-03 18:35:54 +0200 Jan Alexander Steffens (heftig) + + * gst/audioparsers/gstaacparse.c: + aacparse: Avoid mismatch between src_caps and output_header_type + If our downstream caps didn't intersect, we attempted to convert between + raw and ADTS stream formats, if possible. If the caps still did not + intersect, we then used the modified `src_caps` but left the + `output_header_type` unmodified. + This caused a mismatch between caps and actual stream format. + Avoid this by first copying the `src_caps` to `convcaps` for the + additional intersection tests, replacing `src_caps` if we succeed. + While we're here, clean up the code a bit and remove the `codec_data` + field from outgoing ADTS caps. + Part-of: + +2022-06-04 10:27:09 +0300 Sebastian Dröge + + * gst/flv/gstflvdemux.c: + * gst/flv/gstflvelement.c: + flvdemux: Actually make use of the debug category + Part-of: + +2022-06-01 16:14:24 +0200 Stéphane Cerveau + + * ext/soup/gstsoup.c: + * ext/soup/gstsoupelement.c: + * ext/soup/gstsouploader.c: + soup: fix soup debug category + Use soup debug category in souploader + for soup plugin element load. + Inititalize properly soup utils category. + Part-of: + +2022-05-29 20:27:38 +1000 Jan Schmidt + + * gst/rtpmanager/gstrtpptdemux.c: + rtpptdemux: Don't GST_FLOW_ERROR when ignoring invalid packets + https://bugzilla.gnome.org/show_bug.cgi?id=741398 changed + rtpptdemux in 2014 to not post a GST_ELEMENT_ERROR on the + bus when dropping an invalid (non-RTP) packet, but still + returned GST_FLOW_ERROR upstream - so the pipeline still + stops, but now without a useful bus error. + Return GST_FLOW_OK instead, so the pipeline keeps + running. Some old telephony equipment can send invalid + packets before the real RTP traffic starts. + Part-of: + +2022-05-28 16:46:04 +0530 Nirbheek Chauhan + + * ext/jack/gstjackaudiosrc.c: + jack: Always use jack_free as specified by the docs + Fixes a crash on Windows due to a CRT mismatch. The JACK installation + still uses MSVCRT, and we the Universal CRT for both MinGW and MSVC. + Part-of: + +2022-05-26 01:21:43 +0530 Nirbheek Chauhan + + * ext/jack/meson.build: + jack: Add support for detecting libjack on Windows + No source code changes were necessary to get the plugin working on + Windows with MSVC. + Run QJackCtl and audiotestsrc ! jackaudiosink just works. + Part-of: + +2022-05-24 16:07:13 +0800 Hou Qi + + * sys/v4l2/gstv4l2object.c: + v4l2: Reset transfer in gst_v4l2_object_acquire_format() + get_colorspace() checks input caps transfer when mapping V4L2_XFER_FUNC_709 + back to V4L2_COLORSPACE_BT2020 and GST_VIDEO_TRANSFER_BT2020_12. After + receiving source change event, decoder will G_FMT and S_FMT again. So need + to reset transfer when acquiring format to avoid using the old transfer. + Part-of: + +2022-05-03 11:34:15 +0200 Stéphane Cerveau + + * ext/soup/gstsoup.c: + * ext/soup/gstsoupelement.c: + * ext/soup/gstsoupelements.h: + * ext/soup/gstsouphttpclientsink.c: + * ext/soup/gstsouphttpsrc.c: + soup: Fix plugin/element init + In case of per features registration such as the + customizable gstreamer-full library, each + element should check that the soup library can be loaded to + facilitate the element registration. + Initialize the debug category properly + Part-of: + +2022-05-23 21:24:40 -0400 Eli Schwartz + + * 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: + +2022-05-16 14:14:46 +0200 Jan Alexander Steffens (heftig) + + * gst/deinterlace/gstdeinterlace.c: + deinterlace: Clean up error handling in chain and _push_history + - Consistently unref the chained buffer at the end of the chain + function, if we're not handing it off to `gst_pad_push`. This avoids a + few buffer leaks in the error paths in `_chain` and `_push_history`. + - When mapping the video frame fails, return a flow error instead of + crashing. + Part-of: + +2022-05-11 15:18:42 +0200 Guillaume Desmottes + + * ext/vpx/gstvpxenc.c: + vpxenc: fix crash if encoder produces unmatching ts + If for some reason the encoder produces frames with a pts higher than + the input one, we were dropping all the video encoder frames and ended + up crashing when trying to access the pts of a NULL pointer returned by + gst_video_encoder_get_oldest_frame(). + I hit this scenario by feeding a decreasing timestamp to vp8enc which + seem to confuse the encoder. + Part-of: + +2022-05-13 01:42:21 +0000 Thibault Saunier + + * gst/rtpmanager/gstrtpbin.c: + rtpbin: Avoid holding lock GST_RTP_BIN_LOCK when emitting pad-added + Part-of: + +2022-05-12 17:11:38 +0300 Sebastian Dröge + + * gst/isomp4/qtdemux.c: + qtdemux: Don't use tfdt for parsing subsequent trun boxes + The timestamp in the tfdt refers to the first trun box and if there are + multiple trun boxes then the distance between the first timestamps will + grow. + At some point this distance reaches a threshold and triggers the + resetting of the first sample's timestamp of this trun box to be reset + to the tfdt. + This threshold is implemented for files where there is a jump in the + timeline between fragments and where this can be detected via a jump + between the end timestamp of the previous fragment and the tfdt of the + next. This behaviour is preserved. + Part-of: + +2022-04-28 09:19:57 -0400 Nicolas Dufresne + + * sys/v4l2/gstv4l2object.c: + * sys/v4l2/gstv4l2videoenc.c: + v4l2videoenc: Setup crop rectangle if needed + Hantro H1 and Rockchip VEPU2 drivers will pad the width/height to a + multiple of 16. In order to obtain the right JPEG size, the image needs + to be cropped using the S_SELECTION API. This support is added as best + effort since older drivers may emulate this by looking at the capture + queue width/height. + Part-of: + +2021-09-30 17:56:56 +0900 Damian Hobson-Garcia + + * sys/v4l2/gstv4l2object.c: + * sys/v4l2/gstv4l2object.h: + * sys/v4l2/gstv4l2transform.c: + v4l2object: rename crop function to reflect its usage + The gst_v4l2_object_set_crop() is used for removing buffer + alignment padding. Give it a name that better reflects + that usage. This helps to distinguish from cropping of the + input image (e.g. cropping at the image sensor on a captre + device), which can be unrelated to the memory buffer padding, + especially if scaling is involved. + Part-of: + +2022-05-05 20:36:04 +0300 Sebastian Dröge + + * gst/isomp4/gstqtmux.c: + mp4mux: Disable aggregator's default negotiation + mp4mux can't negotiate caps with upstream/downstream and always outputs + specific caps based on the input streams. This will always happen before + it produces the first buffers. + By having the default aggregator negotiation enabled the same caps + would be pushed twice in the beginning, and again every time a + reconfigure event is received. + Part-of: + +2022-05-05 20:24:57 +0300 Sebastian Dröge + + * gst/flv/gstflvmux.c: + flvmux: Disable aggregator's default negotiation + flvmux can't negotiate caps with upstream/downstream and always outputs + specific caps based on the input streams. This will always happen before + it produces the first buffers. + By having the default aggregator negotiation enabled the same caps + would be pushed twice in the beginning, and again every time a + reconfigure event is received. + Part-of: + +2022-05-03 17:27:32 +1000 Matthew Waters + + * gst/wavparse/gstwavparse.c: + wavparse: ensure that any pending segment is sent before an EOS event is sent + Specifically fixes seqnum handling when an aggregator-based element + (audiomixer et al) is downstream and a seek is performed that + immediately causes an EOS from wavparse. + Part-of: + +2021-11-12 20:13:10 +0100 Ruben Gonzalez + + * docs/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: + +2022-05-03 00:39:09 +0100 Tim-Philipp Müller + + * docs/gst_plugins_cache.json: + * meson.build: + Back to development + Part-of: + === release 1.20.2 === 2022-05-02 23:29:25 +0100 Tim-Philipp Müller + * ChangeLog: * NEWS: * RELEASE: * docs/gst_plugins_cache.json: diff --git a/subprojects/gst-plugins-ugly/ChangeLog b/subprojects/gst-plugins-ugly/ChangeLog index 0da9068647..2ee1be998b 100644 --- a/subprojects/gst-plugins-ugly/ChangeLog +++ b/subprojects/gst-plugins-ugly/ChangeLog @@ -1,7 +1,14 @@ +2022-05-03 00:39:09 +0100 Tim-Philipp Müller + + * meson.build: + Back to development + Part-of: + === release 1.20.2 === 2022-05-02 23:29:25 +0100 Tim-Philipp Müller + * ChangeLog: * NEWS: * RELEASE: * gst-plugins-ugly.doap: diff --git a/subprojects/gst-python/ChangeLog b/subprojects/gst-python/ChangeLog index c20e480ce1..57a1d984a2 100644 --- a/subprojects/gst-python/ChangeLog +++ b/subprojects/gst-python/ChangeLog @@ -1,7 +1,14 @@ +2022-05-03 00:39:09 +0100 Tim-Philipp Müller + + * meson.build: + Back to development + Part-of: + === release 1.20.2 === 2022-05-02 23:29:25 +0100 Tim-Philipp Müller + * ChangeLog: * NEWS: * RELEASE: * gst-python.doap: diff --git a/subprojects/gst-rtsp-server/ChangeLog b/subprojects/gst-rtsp-server/ChangeLog index 293eb9d63a..837b2aed17 100644 --- a/subprojects/gst-rtsp-server/ChangeLog +++ b/subprojects/gst-rtsp-server/ChangeLog @@ -1,7 +1,15 @@ +2022-05-03 00:39:09 +0100 Tim-Philipp Müller + + * docs/gst_plugins_cache.json: + * meson.build: + Back to development + Part-of: + === release 1.20.2 === 2022-05-02 23:29:25 +0100 Tim-Philipp Müller + * ChangeLog: * NEWS: * RELEASE: * docs/gst_plugins_cache.json: diff --git a/subprojects/gstreamer-vaapi/ChangeLog b/subprojects/gstreamer-vaapi/ChangeLog index 8403d572db..90505c633a 100644 --- a/subprojects/gstreamer-vaapi/ChangeLog +++ b/subprojects/gstreamer-vaapi/ChangeLog @@ -1,7 +1,37 @@ +2022-06-09 20:00:35 +0800 He Junyan + + * gst-libs/gst/vaapi/gstvaapifilter.c: + vaapi: Do not disable the whole vpp when some va operations not available. + Part-of: + +2022-05-20 09:59:58 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapidecode.c: + * gst/vaapi/gstvaapipostproc.c: + vaapidecode,vaapipostproc: Disable DMAbuf from caps negotiation. + Given the amount of complains about artifacts when negotiating dmabuf + given incompatible drm-formats, and that there's no enough bandwidth + for a proper and quick fix in gstreamer-vaapi, this patch disables, + from decoders and postprocessor, the DMABuf caps feature. + For those who needs DMABuf can use the va elements in -bad, increasing + their ranking for autoplugging by using the environment variable + GST_PLUGIN_FEATURE_RANK=vah264dec:MAX, for example. + This can be considered a first step to the deprecation of + gstreamer-vaapi in favor of the va plugin in -bad. + Fixes: #1137 + Part-of: + +2022-05-03 00:39:09 +0100 Tim-Philipp Müller + + * meson.build: + Back to development + Part-of: + === release 1.20.2 === 2022-05-02 23:29:25 +0100 Tim-Philipp Müller + * ChangeLog: * NEWS: * RELEASE: * gstreamer-vaapi.doap: diff --git a/subprojects/gstreamer/ChangeLog b/subprojects/gstreamer/ChangeLog index dffa7258c1..b39199931a 100644 --- a/subprojects/gstreamer/ChangeLog +++ b/subprojects/gstreamer/ChangeLog @@ -1,7 +1,135 @@ +2022-05-19 04:59:58 +0000 Adam Doupe + + * libs/gst/base/gstqueuearray.c: + queuearray: Fix potential heap overflow when expanding GstQueueArray + Check that elt_size*newsize doesn't overflow when expanding a + GstQueueArray, which has the potential for a heap overwrite. + Co-authored-by: Sebastian Dröge + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1232 + Part-of: + +2022-06-14 17:29:31 +0100 Tim-Philipp Müller + + * plugins/elements/gstmultiqueue.c: + multiqueue: fix potential crash on shutdown + The mq we get out of the weak ref might be NULL if we're + shutting down, which could cause assertion failures or + crashes. + It might also cause miscompilations where the compiler just + optimises away the NULL check because it jumps to a code path + that then dereferences the pointer which clearly isn't going + to work. Seems like something like this happens with gcc 11. + Fixes #1262 + Co-authored-by: Doug Nazar + Co-authored-by: Sebastian Dröge + Part-of: + +2022-06-14 03:29:41 -0600 James Hilliard + + * plugins/elements/gstmultiqueue.c: + multiqueue: fix warning: ‘is_query’ may be used uninitialized in this function + Fixes: + ../plugins/elements/gstmultiqueue.c: In function ‘gst_multi_queue_loop’: + ../plugins/elements/gstmultiqueue.c:2394:19: warning: ‘is_query’ may be used uninitialized in this function [-Wmaybe-uninitialized] + 2394 | if (object && !is_query) + | ^~~~~~~~~ + Part-of: + +2022-06-01 09:25:29 +0200 Guillaume Desmottes + + * libs/gst/base/gstbasetransform.c: + basetransform: handle gst_base_transform_query_caps() returning NULL + If gst_base_transform_transform_caps() returns NULL, gst_base_transform_query_caps() + will return NULL as well. + Part-of: + +2022-05-31 14:27:51 +0200 Guillaume Desmottes + + * libs/gst/base/gstbasetransform.c: + basetransform: fix critical if transform_caps() returned NULL + klass->transform_caps() may return NULL, which was raising this + critical: + GStreamer-CRITICAL **: 12:23:56.243: gst_caps_is_subset: assertion 'subset != NULL' failed + Part-of: + +2022-05-18 17:03:27 +0200 Jan Alexander Steffens (heftig) + + * gst/gst_private.h: + * gst/gstclock.c: + clock: Avoid creating a weakref with every entry + Creating and destroying weakrefs takes a write lock on a global + `GRWLock`. This makes for a very contended lock when the pipeline has + many synchronizing elements. + Part-of: + +2022-05-29 20:38:38 +1000 tom schuring + + * gst/gstplugin.c: + plugin: add Apache 2 license to known licenses + the licence in gstreamer/subprojects/gstreamer/gst/gstplugin.c + currently is defined to be one of: + LGPL GPL QPL GPL/QPL MPL BSD MIT/X11 0BSD Proprietary + The open source project for the kinesis plugin is using an + Apache 2.0 license. Because "Apache 2.0" is not one of the + supported licenses it automatically falls back to Proprietary. + Part-of: + +2022-05-18 10:04:08 +0800 WANG Xuerui + + * gst/gstconfig.h.in: + gstreamer/gst/gstconfig.h.in: Add support for LoongArch + While current and future LoongArch machines that are supposed to run + GStreamer all support unaligned accesses, there might be future + lower-end cores (e.g. the embedded product line) without such support, + and we may not want to penalize these use cases. + So, mark LoongArch as not supporting unaligned accesses for now, and + hope the compilers do a good job optimizing them. We can always flip + switch later. + Suggested-by: CHEN Tao + Part-of: + +2022-05-05 20:39:52 +0300 Sebastian Dröge + + * libs/gst/base/gstaggregator.c: + aggregator: Don't send multiple caps events with the same caps + Every time aggregator is reconfiguring it will try to negotiate new + caps. If these resulting caps are the same as the previously negotiated + caps then don't send a new caps event with the same caps again. + Part-of: + +2022-05-05 15:05:43 +0300 Sebastian Dröge + + * libs/gst/base/gstaggregator.c: + aggregator: Only send events up to CAPS event from gst_aggregator_set_src_caps() + Otherwise setting the srcpad caps based on the sinkpad caps event will + already push a segment event downstream before the upstream segment is + known. + If the upstream segments are just forwarded when the upstream segment + event arrives this would result in two segment events being sent + downstream, of which the first one will usually be simply wrong. + Part-of: + +2021-11-12 20:13:10 +0100 Ruben Gonzalez + + * gst/gstplugin.c: + 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: + +2022-05-03 00:39:09 +0100 Tim-Philipp Müller + + * meson.build: + Back to development + Part-of: + === release 1.20.2 === 2022-05-02 23:29:25 +0100 Tim-Philipp Müller + * ChangeLog: * NEWS: * RELEASE: * gstreamer.doap: