From 0dcb2aaadc803dec4e0808745d98b3377bfe6b04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= Date: Tue, 1 Jun 2021 00:11:44 +0100 Subject: [PATCH] Release 1.19.1 --- ChangeLog | 4030 ++++++++++++++++++++++++++++++++++- NEWS | 2056 +----------------- README | 2 +- RELEASE | 15 +- docs/gst_plugins_cache.json | 8 +- gst-plugins-good.doap | 10 + meson.build | 2 +- 7 files changed, 4124 insertions(+), 1999 deletions(-) diff --git a/ChangeLog b/ChangeLog index 252d6223c4..8f54dc5c43 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,12 +1,4038 @@ -=== release 1.18.0 === +=== release 1.19.1 === -2020-09-08 00:05:14 +0100 Tim-Philipp Müller +2021-06-01 00:11:44 +0100 Tim-Philipp Müller * ChangeLog: * NEWS: * README: * RELEASE: * gst-plugins-good.doap: + * meson.build: + Release 1.19.1 + +2021-05-29 12:54:22 +0100 Tim-Philipp Müller + + * gst/rtp/gstrtpjpegpay.c: + rtpjpegpay: fix image corruption when compiled with MSVC on Windows + On Windows with MSVC, jpeg_header_size would end up 2 bytes larger + than it should be. This then leads to the first 2 bytes of the + actual jpeg image data to be dropped, because we think those + belong to the header, which results in an undecodable image when + reconstructed in the depayloader. + What happens is that when the compiler evaluates + jpeg_header_size = mem.offset + read_u16_and_inc_offset_by_2(&mem); + it actually uses the mem.offset value after it has been increased + by the function call on the right hand size of the equation. + From section 6.5 of the C99 spec: + 3. The grouping of operators and operands is indicated by the syntax [74]. + Except as specified later (for the function-call (), &&, ||, ?:, and + comma operators), the order of evaluation of subexpressions and the + order in which side effects take place are both unspecified. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/889 + Part-of: + +2021-05-25 16:19:20 +0800 Hou Qi + + * sys/v4l2/gstv4l2videoenc.c: + v4l2videoenc: Set default latency if the frame duration is invalid + If the duration of the v4l2object is invalid, use default 25fps instead. + Part-of: + +2021-05-26 00:23:56 +0900 Seungha Yang + + * gst/deinterlace/gstdeinterlace.c: + deinterlace: Drop "field-order" field while transforming caps + Like other basetransform subclasses are doing, drop field + which can be converted by deinterlace. + Part-of: + +2021-05-25 20:10:34 +0900 Seungha Yang + + * gst/deinterlace/gstdeinterlace.c: + deinterlace: Drop field-order field if outputting progressive + Progressive with field-order doesn't make sense + Part-of: + +2021-05-21 14:19:29 +0200 Havard Graff + + * gst/rtpmanager/gstrtpssrcdemux.c: + * tests/check/elements/rtpssrcdemux.c: + rtpssrcdemux: fix "data flow before segment event" crash + This crash could happen at any time a RTP and RTCP buffer arrived + simultaneously in ssrcdemux. + The problem was that sticky-event arriving while the rtp and rtcp pads + were being set up could arrive just too late to be included in the initial + forwarding. + The fix checks if the stickies have been sent on the srcpad about to be + pushed on, and if not sends them. It also blocks any stickes from + being forwarded *prior* to this happening, to avoid them arriving on + the srcpad multiple times. + Since the test loops 1000 times, this will make running under valgrind + take forever, so use the RUNNING_ON_VALGRIND variable to detect we + are running under valgrind, and reduce the loop-count to 2 in that case. + Part-of: + +2021-05-21 18:45:17 +0200 Havard Graff + + * gst/rtpmanager/gstrtpssrcdemux.c: + rtpssrcdemux: refactor destruction of GstRtpSsrcDemuxPads + Part-of: + +2021-05-21 18:30:28 +0200 Havard Graff + + * gst/rtpmanager/gstrtpssrcdemux.c: + * gst/rtpmanager/gstrtpssrcdemux.h: + rtpssrcdemux: make naming consistent + Use plural for GstRtpSsrcDemuxPads, since it contains two pads, and + use the variable-name 'dpads' everywhere. + Part-of: + +2021-05-23 15:14:11 +0100 Tim-Philipp Müller + + * gst/wavparse/gstwavparse.c: + wavparse: use g_strndup() for copying text data + So we don't rely on NUL terminators inside the data. + Part-of: + +2021-05-23 13:29:07 +0100 Tim-Philipp Müller + + * gst/wavparse/gstwavparse.c: + wavparse: clean up adtl/note/labl chunk parsing + We were passing the size of the adtl chunk to the note/labl + sub-chunk parsing function, which means we may memdup lots of + data after the chunk string's NUL terminator that doesn't + really belong to it. + Part-of: + +2021-05-23 13:24:21 +0100 Tim-Philipp Müller + + * gst/wavparse/gstwavparse.c: + wavparse: guard against overflow when comparing chunk sizes + Could be rewritten as lsize > (size - 8) a well, but the + extra check seems clearer. Doesn't look like it was problematic, + lsize wasn't actually used when parsing the sub-chunks. + Part-of: + +2021-05-21 13:31:12 -0300 Daniel Almeida + + * docs/gst_plugins_cache.json: + doc: update gst_plugins_cache.json + Part-of: + +2021-05-05 13:20:04 +0200 Stéphane Cerveau + + * gst/matroska/matroska-demux.c: + matroskademux: fix decoder glitches with H264 content + To avoid decoder starvation causing glitches on screen, + the demuxer shall clip only when the buffer is a key frame + and the lace time is greater than the stop time. + Fixes gst-editing-services#128 + Part-of: + +2021-05-11 20:41:38 +1000 Matthew Waters + + * ext/qt/gstqtoverlay.cc: + qml: don't use buffers that have invalid contents + If the GL context is not shareable, ignore it. + A future change may also not output the relevant output either. + Part-of: + +2021-05-11 20:38:52 +1000 Matthew Waters + + * ext/qt/gstqsgtexture.cc: + qml: also use the dummy texture when no buffer has been set + Fixes corrupted texture output when changing OpenGL display/contexts. + Part-of: + +2021-05-11 17:20:00 -0400 Nicolas Dufresne + + * docs/gst_plugins_cache.json: + doc: Update cache for RGBP format addition + Part-of: + +2021-04-23 14:37:46 -0400 Nicolas Dufresne + + * gst/matroska/matroska-demux.c: + * gst/matroska/matroska-ids.c: + * gst/matroska/matroska-ids.h: + matroskademux: Advertise codec-alpha in caps + This will be used to select the appropriate decoders. We also only attach the + GstVideoCodecAlphaMeta if the AlphaMode element is set, this is to stay on the + safe side and mimic what browsers (verified in Firefox and Chromium code) do. + Part-of: + +2021-03-22 16:58:26 -0400 Nicolas Dufresne + + * gst/matroska/matroska-demux.c: + matroskademux: Store alpha stream in VideoCodecAlphaMeta + This generalize the feature over using mini object quark data. If + that feature was Matroska specifc, using the new CustomMeta would have + been enough and arguably cleaner then QData, though it seems that + similar technique is use with AV1 Image Format (AVIF). + Part-of: + +2016-12-03 14:27:57 +0000 Tim-Philipp Müller + + * gst/matroska/matroska-demux.c: + matroska-demux: extract VP8 alpha from BlockAdditionals + And put it on buffers as qdata (which is easier in this + case than a private custom meta because it can be picked + up easily in other modules). + Part-of: + +2021-05-03 17:39:05 +1000 Matthew Waters + + * ext/qt/gstqtglutility.cc: + * ext/qt/gstqtglutility.h: + * ext/qt/gstqtoverlay.cc: + * ext/qt/qtitem.cc: + * ext/qt/qtwindow.cc: + qt: return a different GstGLDisplay object when the first sink requests + This allows the 'replace-gstreamer-opengl-context' context machinery to + correctly replace the OpenGL context used by the pipeline when the first + qmlglsink is added to the pipeline. + Part-of: + +2021-05-07 11:16:47 +0200 Jan Alexander Steffens (heftig) + + * gst/udp/gstudpsrc.c: + udpsrc: Plug leaks of saddr in error cases + Part-of: + +2021-05-07 11:16:21 +0200 Jan Alexander Steffens (heftig) + + * gst/udp/gstudpsrc.c: + udpsrc: Whitespace + Part-of: + +2021-05-07 00:43:44 +0200 Jan Alexander Steffens (heftig) + + * gst/deinterlace/gstdeinterlace.c: + deinterlace: Plug a method subobject leak + Changing the method would leak the previous method. + Part-of: + +2021-05-06 15:04:42 -0400 Nicolas Dufresne + + * ext/vpx/gstvp9enc.c: + vp9enc: Add color range support + When setting the colorspace, we now clear the range to reduced range, + the default, and then we also set the range so the VP9 encoder encodes + the right information in the bitstream. + Part-of: + +2021-05-06 14:51:31 -0400 Nicolas Dufresne + + * ext/vpx/gstvp9enc.c: + * ext/vpx/gstvpxenc.c: + vp9enc: Move colorspace configuration in VP9 enc + This is not supported by VP8 and was causing a warning. + Part-of: + +2021-05-06 14:48:36 -0400 Nicolas Dufresne + + * ext/vpx/gstvp9enc.c: + * ext/vpx/gstvpxenc.c: + * ext/vpx/gstvpxenc.h: + vpxdenc: Add a GstVideoCodecState to configure_encoder virtual + This will be needed to configure the VP9 specific colorimetry, which is + currently configured for VP8 casing warning. + Part-of: + +2021-05-05 16:48:10 +0200 Bastien Nocera + + * ext/gtk/gtkgstbasewidget.c: + gtk: Remove coordinates double-translation + Remove our own translation in the mouse event capture code, as that + translation will be done through the navigation interface. + Tested by resizing the window created by: + gst-launch-1.0 -v videotestsrc ! navigationtest ! glupload ! glcolorconvert ! tee name=t ! gtkglsink + and checking that the cursor follows the mouse as expected. + Part-of: + +2021-05-05 14:28:15 +0200 Bastien Nocera + + * ext/gtk/gstgtkbasesink.c: + gtk: Translate navigation events coordinates + If the application passed down some pointer coordinates, translate those + from display coordinates to stream coordinates, so things work as + expected even if the video is resized. + Part-of: + +2021-05-05 14:24:31 +0200 Bastien Nocera + + * ext/gtk/gtkgstbasewidget.c: + * ext/gtk/gtkgstbasewidget.h: + gtk: Export _display_size_to_stream_size() + Export _display_size_to_stream_size() so that GstNavigation implementors + can translate from display coordinates to stream coordinates before + pushing the events upstream to the DVD source, for example. + Part-of: + +2018-02-26 17:26:41 +0100 David Fernandez + + * docs/gst_plugins_cache.json: + * gst/matroska/matroska-mux.c: + matroska-mux: Change accepted caps width and height from [16, MAX] to [1, MAX] + There are cases where the video size might be less than 16x16. + This change allows the Matroska muxer to accept this cases. + Part-of: + +2021-04-20 22:08:23 +0200 François Laignel + + * gst/multifile/gstsplitmuxsink.c: + * gst/rtpmanager/gstrtpbin.c: + * gst/rtsp/gstrtspsrc.c: + * tests/check/elements/avimux.c: + * tests/check/elements/flvmux.c: + * tests/check/elements/interleave.c: + * tests/check/elements/qtmux.c: + * tests/check/elements/rtpbin.c: + * tests/check/elements/rtpcollision.c: + * tests/check/elements/rtpmux.c: + * tests/check/elements/splitmuxsink.c: + * tests/check/elements/videomixer.c: + * tests/examples/rtp/client-PCMA.c: + * tests/examples/rtp/server-alsasrc-PCMA.c: + Use gst_element_request_pad_simple + Instead of the deprecated gst_element_get_request_pad. + Part-of: + +2021-04-30 08:12:47 +1000 Jan Schmidt + + * gst/isomp4/atoms.c: + * gst/isomp4/atoms.h: + qtmux: Make sure to write 64-bit STCO table when needed. + qtmux attempts to choose between writing a 32-bit stco chunk offset table + when it can, but switch to a 64-bit co64 table when file offsets go over + 4GB. + This patch fixes a problem where the atom handling code was checking + mdat-relative offsets instead of the final file offset (computed by + adding the mdat position plus the mdat-relative offset) - leading to + problems where files with a size between 4GB and 4GB+offset-of-the-mdat + would write incorrect STCO tables with some samples having truncated + 32-bit offsets. + Smaller files write STCO correctly, larger files would switch to + co64 and also output correctly. + Part-of: + +2021-04-22 15:01:32 +0800 Hou Qi + + * sys/v4l2/gstv4l2object.c: + v4l2object: Add interlace-mode back to caps for camera + skip_try_fmt_probes is set to TRUE for v4l2src to skip interlace-mode and + colorimetry when probe caps. gst_v4l2_object_set_format_full() will add + colorimetry back to caps when iterating over the negotiated caps. There is + one case that v4l2src is first in preview state then starts recording. + v4l2src caps will change with an additional interlace-mode structure after + renegotiation, then v4l2src needs to reset. But this camera driver can't + orphan buffer pool, it causes require buffer failed as streaming is still + in active state. + To fix this, also need to add interlace-mode back to caps for camera to + avoid reset. + Part-of: + +2021-04-02 18:41:28 +0200 Guillaume Desmottes + + * gst/rtp/gstrtpopuspay.c: + * gst/rtp/gstrtpopuspay.h: + * tests/check/elements/rtp-payloading.c: + rtpopuspay: set MARKER flag + Set MARKER flag on first buffer after DTX. + According to RFC 3551 section 4.1 the marker bit needs to be set on + "the first packet after a silence period during which packets have + not been transmitted contiguously". + Part-of: + +2021-03-31 11:18:30 +0200 Guillaume Desmottes + + * docs/gst_plugins_cache.json: + * gst/rtp/gstrtpopuspay.c: + * gst/rtp/gstrtpopuspay.h: + * tests/check/elements/rtp-payloading.c: + rtpopuspay: add DTX support + If enabled, the payloader won't transmit empty frames. + Can be tested using: + opusenc dtx=true bitrate-type=vbr ! rtpopuspay dtx=true + Part-of: + +2021-04-24 11:15:50 -0400 Doug Nazar + + * ext/taglib/gstid3v2mux.cc: + taglib: Update createFrame() to non-deprecated version. + ID3v2::FrameFactory::createFrame() versions not taking a Header have + been deprecated since v1.5 (Jan 2008). + Part-of: + +2021-04-25 02:16:45 +0200 Havard Graff + + * gst/rtpmanager/gstrtpjitterbuffer.c: + * tests/check/elements/rtpjitterbuffer.c: + rtpjitterbuffer: fix divide-by-zero + The estimated packet-duration can sometimes end up as zero, and dividing + by that is never a good idea... + The test reproduces the scenario, and the fix is easy. + Part-of: + +2020-06-02 19:38:33 +0200 Havard Graff + + rtpjitterbuffer: clean up and improve missing packets handling + * Try to make variable and function names more clear. + * Add plenty of comments describing the logic step-by-step. + * Improve the logging around this, making the logs easier to read and + understand when debugging these issues. + * Revise the logic of packets that are actually beyond saving in doing + the following: + 1. Do an optimistic estimation of which packets can still arrive. + 2. Based on this, find which packets (and duration) are now hopelessly + lost. + 3. Issue an immediate lost-event for the hopelessly lost and then add + lost/rtx timers for the ones we still hope to save, meaning that if + they are to arrive, they will not be discarded. + * Revise the use of rtx-delay: + Earlier the rtx-delay would vary, depending on the pts of the latest + packet and the estimated pts of the packet it being issued a RTX for, + but now that we aim to estimate the PTS of the missing packet accurately, + the RTX delay should remain the same for all packets. + Meaning: If the packet have a PTS of X, the delay in asked for a RTX + for this packet is always a constant X + delay, not a variable one. + * Finally ensure that the chaotic "check-for-stall" tests uses timestamps + that starts from 0 to make them easier to debug. + Part-of: + +2021-04-23 12:07:52 +0200 Guillaume Desmottes + + * gst/level/gstlevel.c: + * gst/level/gstlevel.h: + level: make properties thread-safe + Part-of: + +2021-04-22 14:11:09 +0200 Guillaume Desmottes + + * gst/level/gstlevel.c: + level: disable passthrough when audio-level-meta is enabled + Ensure we receive a writable buffer to add the meta. + Fix #878 + Part-of: + +2021-04-23 08:28:06 +0300 Sebastian Dröge + + * gst/matroska/matroska-mux.c: + matroskamux: Don't pass a non-GObject pointer to GST_DEBUG_OBJECT and similar + Part-of: + +2021-04-22 08:57:23 +0200 Edward Hervey + + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: Avoid generation of invalid timestamps + When updating timestamps and timer timeouts with a new offset, make sure that + the resulting value is valid (and not a negative (signed) value which ends up in + a massive (unsigned) value). + Fixes #571 + Part-of: + +2021-04-21 18:41:08 +0100 Philippe Normand + + * sys/v4l2/v4l2_calls.c: + v4l2: Fix glib warning emitted when attribute query fails + The v4l2object is not a GstObject. Logging has to go through its dbg_obj + specially meant for this. + Part-of: + +2021-03-25 13:20:38 +0100 VaL Doroshchuk + + * ext/qt/gstqtoverlay.cc: + * tests/examples/qt/qmloverlay/overlay.py: + qmloverlay: Use first found GstGLVideoItem as widget property + GstGLVideoItem is required to render input video in the overlay's qml. + And currently qmlgloverlay requires to set this GstGLVideoItem to its widget property. + Instead of fetching GstGLVideoItem from the overlay's root object (root-item prop), + and setting it back as a widget (widget prop), + proposing to use found GstGLVideoItem in the current object hierarchy (passed in qml-scene) by default. + Also useful in Python, which solves the issue when casting gpointer <=> QQuickItem* is required. + Part-of: + +2021-04-19 16:39:03 +0100 Tim-Philipp Müller + + * sys/v4l2/gstv4l2.c: + v4l2: fix debug category initialisation again + Would spew warnings on the rpi4 when calling into + gst_v4l2_object_get_codec_caps() from the probe_and_register() + function since the v4l2_debug category initialisation would + only be done later as part of the element/device provider + registration. + Also log things in the probe function to the v4l2 category + instead of the default category while we're at it. + Part-of: + +2021-04-19 01:29:33 -0400 Doug Nazar + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: Fix race saving seek event seqnum. + We need to save the seek seqnum before the flush stop event + since that will start the basesrc task which may send the segment + event before we're ready. + Part-of: + +2021-03-31 10:52:14 +0200 Marco Felsch + + * ext/qt/qtitem.cc: + * ext/qt/qtitem.h: + qmlglsink: allow to set force-aspect-ratio property + Add the forceAspectRatio Q_PROPERTY to allow changing the aspect ratio + from QML code as well. + Part-of: + +2021-04-19 11:14:00 +0100 Tim-Philipp Müller + + * sys/v4l2/v4l2_calls.c: + v4l2src: fix spurious SOURCE_CHANGED error-level log messages + They're harmless, and some drivers at least return EINVAL + instead of ENOTTY for unsupported events (here: uvcvideo). + Part-of: + +2021-04-14 16:32:06 -0400 Doug Nazar + + * gst/rtp/gstrtpsbcpay.c: + rtpsbcpay: remove use of packed struct for payload + Part-of: + +2021-04-14 11:13:45 -0400 Doug Nazar + + * gst/dtmf/gstdtmfcommon.h: + * gst/dtmf/gstrtpdtmfdepay.c: + * gst/dtmf/gstrtpdtmfsrc.c: + dtmf: convert to bit accessors + Part-of: + +2021-04-13 09:23:12 +0530 Nirbheek Chauhan + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: Remove some dead code + stop is not used after this point, nor do we create a new segment + here since 84725d62b57bc74ce34abde755f35bf8f948f94d + Part-of: + +2021-04-10 02:53:51 +0530 Nirbheek Chauhan + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: Do not overwrite the known duration after a seek + This breaks the duration query and also the seeking query. + Broke in 5f1a732bc7b76a6f1b8aa5f26b6e76fbca0261c7 + Part-of: + +2021-04-10 04:40:46 +0530 Nirbheek Chauhan + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: Just assign the segment instead of memcpy + Assignments copy by value, we don't need to memcpy... + Part-of: + +2021-04-13 11:30:51 +0300 Sebastian Dröge + + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: Check srcresult before waiting on the condition variable too + It might've been set to FLUSHING between the last check and the waiting, + and in that case we'd be waiting here forever now. + Part-of: + +2021-04-12 23:15:17 -0400 Doug Nazar + + * tests/check/elements/rtpsession.c: + rtp: fix test_twcc_header_and_run to support big endian. + Part-of: + +2021-04-12 23:13:15 -0400 Doug Nazar + + * gst/rtpmanager/rtptwcc.c: + rtp: fix rtptwcc to support big endian. + Part-of: + +2021-04-12 21:59:45 -0400 Doug Nazar + + * gst/rtpmanager/gstrtphdrext-rfc6464.c: + rtp: fix rtphdrextrfc6464 to support big endian. + Part-of: + +2021-04-12 21:36:58 -0400 Doug Nazar + + * tests/check/elements/alpha.c: + tests: Fix alpha test on big endian machines. + Part-of: + +2021-03-19 02:51:20 +1100 Jan Schmidt + + * gst/isomp4/gstqtmux.c: + * gst/isomp4/gstqtmux.h: + qtmux: Protect against writing absurd sample durations + If the input DTS goes backward or is missing, the calculated + sample duration goes negative and wraps around to a very big + number. In that case, just write a sample with a duration of + 0 and hope the problem is transient. + Part-of: + +2021-04-10 03:09:44 +0530 Nirbheek Chauhan + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: De-dup seek event seqnums to avoid multiple seeks + Seek events are sent upstream on each sink, so if we receive multiple + seeks with the same seqnum, we must only perform one seek, not N seeks + where N = the number of sinks in the pipeline connected to rtspsrc. + This is the same thing done by demuxers like qtdemux or matrsokademux. + Part-of: + +2021-04-10 01:55:28 +0530 Nirbheek Chauhan + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: Using multicast UDP has no relation to seekability + The transport has no relation to whether a media can be seeked. The + range response having a duration is the correct thing to check for. + Part-of: + +2021-04-10 01:54:48 +0530 Nirbheek Chauhan + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: Add more logging for range parsing and seekable + Part-of: + +2021-04-10 14:47:23 +0300 Sebastian Dröge + + * docs/gst_plugins_cache.json: + videocrop: Update documentation cache + Part-of: + +2021-04-07 21:57:11 +0200 Markus Ebner + + * gst/videocrop/gstvideocrop-private.h: + * gst/videocrop/gstvideocrop.c: + * gst/videocrop/gstvideocrop.h: + videocrop: Add support for GBR* video formats + Part-of: + +2021-04-07 18:54:49 +0200 Markus Ebner + + * gst/videocrop/gstvideocrop-private.h: + * gst/videocrop/gstvideocrop.c: + * gst/videocrop/gstvideocrop.h: + videocrop: Added support for planar pixel formats > 8bits + - Added support for planar pixel formats with depths greater than 8bits + to transform_planar implementation + - Added a whole lot of new pixel formats to the support-list + Part-of: + +2021-04-07 17:52:34 +0200 Markus Ebner + + * gst/videocrop/gstaspectratiocrop.c: + * gst/videocrop/gstvideocrop-private.h: + * gst/videocrop/gstvideocrop.c: + videocrop: Move supported format list into private header + - Moved declaration of supported pixel formats to private header, which + can be shared between videocrop and aspectvideocrop + Part-of: + +2021-04-06 17:02:34 +0530 Nirbheek Chauhan + + * gst/rtpmanager/rtpjitterbuffer.c: + rtpjitterbuffer: More logging when calculating rfc7273 timestamps + This code can be fragile, since it is very exacting in the timestamps + that it will accept. Add more logging so it's easier to debug issues + and figure out whether it's a bug in the calculation or something + wrong in the incoming buffers. + Part-of: + +2021-04-08 13:29:10 +0200 Stéphane Cerveau + + * gst/rtp/gstrtph264depay.c: + * gst/rtp/gstrtph265depay.c: + * gst/rtp/gstrtpsv3vdepay.c: + rtp: missing debug init after element splitting + - h264depay + - h265depay + - sv3vdepay + Part-of: + +2020-03-30 09:29:07 +0200 Michal Dzik + + * gst/rtp/gstrtpsbcpay.c: + rtp: rename gst_rtp_sbc_pay_flush_buffers() + gst_rtp_sbc_pay_flush_buffers() is a misleading name. A better name would + be gst_rtp_sbc_pay_drain_buffers(), because that's what it does, it drains + any leftover queued data and pushes it downstream. "Flushing" in GStreamer + typically means to throw away any queued data and not process/push it + downstream. + Signed-off-by: Michal Dzik + Part-of: + +2020-03-24 13:31:00 +0100 Michal Dzik + + * gst/rtp/gstrtpsbcpay.c: + rtp: fix adapter flushing in sbc payloader + GstAdapter must be flushed in some cases (flush, new segment, state change) + Without it, it may, for example, push some leftover buffer from old + segment in new segment. This, in general, breaks timestamps. + See GstAdapter documentation for more. + Signed-off-by: Michal Dzik + Part-of: + +2020-08-18 20:16:06 +0200 Jakub Adam + + * ext/vpx/gstvpxenc.c: + vpxenc: add colorspace information into VP9 bitstream + Part-of: + +2021-03-26 16:26:22 +0800 Hou Qi + + * sys/v4l2/gstv4l2object.c: + v4l2object: Use default colorimetry if that in caps is unknown + Some streams have unknown colorimetry in caps, but v4l2object sets + default values for each primaries. It will cause check colorimetry + fail when do gst_v4l2_video_colorimetry_matches(). + To fix this, need to keep the unknown colorimetry in caps same as + the default value set by v4l2object. + Part-of: + +2021-03-31 16:37:56 +0300 Vivia Nikolaidou + + * gst/matroska/matroska-demux.c: + matroskademux: Take segment stop into account when need_segment + Otherwise, in the case of e.g. a deferred seek event, the segment stop + would be replaced with GST_CLOCK_TIME_NONE. + Part-of: + +2021-03-29 16:45:26 +0200 Val Doroshchuk + + * ext/qt/gstqtoverlay.cc: + * ext/qt/gstqtoverlay.h: + gstqtoverlay: Add initialization and finalization to qml-scene prop + Part-of: + +2021-03-31 10:21:59 +1100 Matthew Waters + + * ext/qt/gstqtglutility.h: + qt: fix build warning with clang and c-linkage of user defined type + In file included from ../subprojects/gst-plugins-good/ext/qt/qtglrenderer.cc:17: + ../subprojects/gst-plugins-good/ext/qt/gstqtglutility.h:35:16: error: 'qt_opengl_native_context_from_gst_gl_context' has C-linkage specified, but returns user-defined type 'QVariant' which is incompatible with C [-Werror,-Wreturn-type-c-linkage] + QVariant qt_opengl_native_context_from_gst_gl_context (GstGLContext * context); + Part-of: + +2021-03-30 09:45:45 +0200 Stéphane Cerveau + + * ext/qt/gstqtelement.cc: + * ext/qt/gstqtelements.h: + * ext/qt/gstqtoverlay.cc: + * ext/qt/gstqtsink.cc: + * ext/qt/gstqtsrc.cc: + qt: hotfix: allow per feature registration + Fixes #869 + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-17 08:52:40 +0100 Stéphane Cerveau + + * ext/twolame/gsttwolamemp2enc.c: + * ext/twolame/gsttwolamemp2enc.h: + twolame: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-16 17:49:03 +0100 Stéphane Cerveau + + * ext/shout2/gstshout2.c: + * ext/shout2/gstshout2.h: + shout2: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-16 17:38:46 +0100 Stéphane Cerveau + + * ext/cairo/gstcairo.c: + * ext/cairo/gstcairooverlay.c: + * ext/cairo/gstcairooverlay.h: + cairo: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-16 17:34:34 +0100 Stéphane Cerveau + + * gst/y4m/gsty4mencode.c: + * gst/y4m/gsty4mencode.h: + y4m: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-16 17:32:26 +0100 Stéphane Cerveau + + * gst/wavparse/gstwavparse.c: + * gst/wavparse/gstwavparse.h: + wavparse: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-16 17:29:40 +0100 Stéphane Cerveau + + * gst/wavenc/gstwavenc.c: + * gst/wavenc/gstwavenc.h: + wavenc: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-16 17:27:24 +0100 Stéphane Cerveau + + * gst/spectrum/gstspectrum.c: + * gst/spectrum/gstspectrum.h: + spectrum: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-16 17:27:12 +0100 Stéphane Cerveau + + * gst/monoscope/gstmonoscope.c: + * gst/monoscope/gstmonoscope.h: + monoscope: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-16 17:22:47 +0100 Stéphane Cerveau + + * gst/imagefreeze/gstimagefreeze.c: + * gst/imagefreeze/gstimagefreeze.h: + imagefreeze: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-16 17:19:52 +0100 Stéphane Cerveau + + * gst/id3demux/gstid3demux.c: + * gst/id3demux/gstid3demux.h: + id3demux: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-16 17:16:33 +0100 Stéphane Cerveau + + * gst/icydemux/gsticydemux.c: + * gst/icydemux/gsticydemux.h: + icydemux: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-16 17:14:26 +0100 Stéphane Cerveau + + * gst/goom2k1/gstgoom.c: + * gst/goom2k1/gstgoom.h: + goom2k1: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-16 17:11:26 +0100 Stéphane Cerveau + + * gst/cutter/gstcutter.c: + * gst/cutter/gstcutter.h: + cutter: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-16 17:11:14 +0100 Stéphane Cerveau + + * gst/goom/gstgoom.c: + * gst/goom/gstgoom.h: + goom: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-16 17:10:33 +0100 Stéphane Cerveau + + * gst/deinterlace/gstdeinterlace.c: + * gst/deinterlace/gstdeinterlace.h: + deinterlace: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-16 16:34:48 +0100 Stéphane Cerveau + + * sys/oss4/gstoss4audioplugin.c: + * sys/oss4/meson.build: + * sys/oss4/oss4-audio.c: + * sys/oss4/oss4-audio.h: + * sys/oss4/oss4-sink.c: + * sys/oss4/oss4-sink.h: + * sys/oss4/oss4-source.c: + * sys/oss4/oss4-source.h: + oss4: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-16 16:11:36 +0100 Stéphane Cerveau + + * sys/oss/gstossaudio.c: + * sys/oss/gstossaudioelement.c: + * sys/oss/gstossaudioelements.h: + * sys/oss/gstosssink.c: + * sys/oss/gstosssrc.c: + * sys/oss/meson.build: + oss: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-16 15:56:35 +0100 Stéphane Cerveau + + * gst/auparse/gstauparse.c: + * gst/auparse/gstauparse.h: + auparse: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-16 15:29:06 +0100 Stéphane Cerveau + + * sys/v4l2/gstv4l2.c: + * sys/v4l2/gstv4l2deviceprovider.c: + * sys/v4l2/gstv4l2element.c: + * sys/v4l2/gstv4l2elements.h: + * sys/v4l2/gstv4l2radio.c: + * sys/v4l2/gstv4l2sink.c: + * sys/v4l2/gstv4l2src.c: + * sys/v4l2/meson.build: + v4l2: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-16 15:05:43 +0100 Stéphane Cerveau + + * gst/videofilter/gstgamma.c: + * gst/videofilter/gstgamma.h: + * gst/videofilter/gstvideobalance.c: + * gst/videofilter/gstvideobalance.h: + * gst/videofilter/gstvideoflip.c: + * gst/videofilter/gstvideoflip.h: + * gst/videofilter/gstvideomedian.c: + * gst/videofilter/gstvideomedian.h: + * gst/videofilter/plugin.c: + videofilter: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-16 14:58:57 +0100 Stéphane Cerveau + + * gst/videocrop/gstaspectratiocrop.c: + * gst/videocrop/gstvideocrop.c: + * gst/videocrop/gstvideocropelement.c: + * gst/videocrop/gstvideocropelements.h: + * gst/videocrop/gstvideocropplugin.c: + * gst/videocrop/meson.build: + videocrop: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-16 14:54:15 +0100 Stéphane Cerveau + + * gst/videobox/gstvideobox.c: + * gst/videobox/gstvideobox.h: + videobox: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-16 14:49:56 +0100 Stéphane Cerveau + + * gst/udp/gstdynudpsink.c: + * gst/udp/gstmultiudpsink.c: + * gst/udp/gstudp.c: + * gst/udp/gstudpelement.c: + * gst/udp/gstudpelements.h: + * gst/udp/gstudpsink.c: + * gst/udp/gstudpsrc.c: + * gst/udp/meson.build: + udp: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-16 14:43:32 +0100 Stéphane Cerveau + + * gst/smpte/gstsmpte.c: + * gst/smpte/gstsmpte.h: + * gst/smpte/gstsmptealpha.c: + * gst/smpte/gstsmptealpha.h: + * gst/smpte/plugin.c: + smpte: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-16 14:38:37 +0100 Stéphane Cerveau + + * gst/shapewipe/gstshapewipe.c: + * gst/shapewipe/gstshapewipe.h: + shapewipe: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-16 14:35:51 +0100 Stéphane Cerveau + + * gst/rtsp/gstrtpdec.c: + * gst/rtsp/gstrtsp.c: + * gst/rtsp/gstrtspelement.c: + * gst/rtsp/gstrtspelements.h: + * gst/rtsp/gstrtspsrc.c: + * gst/rtsp/meson.build: + rtsp: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-16 14:24:33 +0100 Stéphane Cerveau + + * gst/rtpmanager/gstrtpbin.c: + * gst/rtpmanager/gstrtpbin.h: + * gst/rtpmanager/gstrtpdtmfmux.c: + * gst/rtpmanager/gstrtpdtmfmux.h: + * gst/rtpmanager/gstrtpfunnel.c: + * gst/rtpmanager/gstrtpfunnel.h: + * gst/rtpmanager/gstrtphdrext-rfc6464.c: + * gst/rtpmanager/gstrtphdrext-rfc6464.h: + * gst/rtpmanager/gstrtphdrext-twcc.c: + * gst/rtpmanager/gstrtphdrext-twcc.h: + * gst/rtpmanager/gstrtpjitterbuffer.c: + * gst/rtpmanager/gstrtpjitterbuffer.h: + * gst/rtpmanager/gstrtpmanager.c: + * gst/rtpmanager/gstrtpmux.c: + * gst/rtpmanager/gstrtpmux.h: + * gst/rtpmanager/gstrtpptdemux.c: + * gst/rtpmanager/gstrtpptdemux.h: + * gst/rtpmanager/gstrtprtxqueue.c: + * gst/rtpmanager/gstrtprtxqueue.h: + * gst/rtpmanager/gstrtprtxreceive.c: + * gst/rtpmanager/gstrtprtxreceive.h: + * gst/rtpmanager/gstrtprtxsend.c: + * gst/rtpmanager/gstrtprtxsend.h: + * gst/rtpmanager/gstrtpsession.c: + * gst/rtpmanager/gstrtpsession.h: + * gst/rtpmanager/gstrtpssrcdemux.c: + * gst/rtpmanager/gstrtpssrcdemux.h: + * gst/rtpmanager/gstrtpst2022-1-fecdec.c: + * gst/rtpmanager/gstrtpst2022-1-fecdec.h: + * gst/rtpmanager/gstrtpst2022-1-fecenc.c: + * gst/rtpmanager/gstrtpst2022-1-fecenc.h: + rtpmanager: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-16 13:49:15 +0100 Stéphane Cerveau + + * gst/replaygain/gstrganalysis.c: + * gst/replaygain/gstrglimiter.c: + * gst/replaygain/gstrglimiter.h: + * gst/replaygain/gstrgvolume.c: + * gst/replaygain/gstrgvolume.h: + * gst/replaygain/replaygain.c: + * gst/replaygain/rganalysis.h: + replaygain: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-16 13:43:44 +0100 Stéphane Cerveau + + * gst/multipart/multipart.c: + * gst/multipart/multipartdemux.c: + * gst/multipart/multipartdemux.h: + * gst/multipart/multipartmux.c: + * gst/multipart/multipartmux.h: + multipart: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-16 12:04:26 +0100 Stéphane Cerveau + + * gst/multifile/gstimagesequencesrc.c: + * gst/multifile/gstimagesequencesrc.h: + * gst/multifile/gstmultifile.c: + * gst/multifile/gstmultifilesink.c: + * gst/multifile/gstmultifilesink.h: + * gst/multifile/gstmultifilesrc.c: + * gst/multifile/gstmultifilesrc.h: + * gst/multifile/gstsplitfilesrc.c: + * gst/multifile/gstsplitfilesrc.h: + * gst/multifile/gstsplitmuxsink.c: + * gst/multifile/gstsplitmuxsink.h: + * gst/multifile/gstsplitmuxsrc.c: + * gst/multifile/gstsplitmuxsrc.h: + multifile: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-16 11:14:17 +0100 Stéphane Cerveau + + * gst/matroska/gstmatroskaelement.c: + * gst/matroska/gstmatroskaelements.h: + * gst/matroska/matroska-demux.c: + * gst/matroska/matroska-demux.h: + * gst/matroska/matroska-mux.c: + * gst/matroska/matroska-parse.c: + * gst/matroska/matroska-parse.h: + * gst/matroska/matroska.c: + * gst/matroska/meson.build: + * gst/matroska/webm-mux.c: + matroska: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-16 10:59:34 +0100 Stéphane Cerveau + + * gst/level/gstlevel.c: + * gst/level/gstlevel.h: + level: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-16 10:57:58 +0100 Stéphane Cerveau + + * gst/law/alaw-decode.c: + * gst/law/alaw-decode.h: + * gst/law/alaw-encode.c: + * gst/law/alaw-encode.h: + * gst/law/alaw.c: + * gst/law/mulaw-decode.c: + * gst/law/mulaw-decode.h: + * gst/law/mulaw-encode.c: + * gst/law/mulaw-encode.h: + * gst/law/mulaw.c: + law: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-16 10:26:40 +0100 Stéphane Cerveau + + * gst/isomp4/gstisomp4element.c: + * gst/isomp4/gstisomp4elements.h: + * gst/isomp4/gstqtmoovrecover.c: + * gst/isomp4/gstqtmux.c: + * gst/isomp4/gstrtpxqtdepay.c: + * gst/isomp4/isomp4-plugin.c: + * gst/isomp4/meson.build: + * gst/isomp4/qtdemux.c: + isomp4: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-16 09:57:27 +0100 Stéphane Cerveau + + * gst/interleave/deinterleave.c: + * gst/interleave/gstinterleaveelements.h: + * gst/interleave/interleave.c: + * gst/interleave/plugin.c: + interleave: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-16 09:51:16 +0100 Stéphane Cerveau + + * gst/flx/gstflxdec.c: + * gst/flx/gstflxdec.h: + flx: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-15 17:37:09 +0100 Stéphane Cerveau + + * gst/flv/gstflvdemux.c: + * gst/flv/gstflvelement.c: + * gst/flv/gstflvelements.h: + * gst/flv/gstflvmux.c: + * gst/flv/gstflvplugin.c: + * gst/flv/meson.build: + flv: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-15 17:27:51 +0100 Stéphane Cerveau + + * gst/equalizer/gstiirequalizer.c: + * gst/equalizer/gstiirequalizer.h: + * gst/equalizer/gstiirequalizer10bands.c: + * gst/equalizer/gstiirequalizer3bands.c: + * gst/equalizer/gstiirequalizernbands.c: + * gst/equalizer/gstiirequalizerplugin.c: + * gst/equalizer/meson.build: + equalizer: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-15 15:37:52 +0100 Stéphane Cerveau + + * gst/effectv/gstaging.c: + * gst/effectv/gstdice.c: + * gst/effectv/gstedge.c: + * gst/effectv/gsteffectv.c: + * gst/effectv/gsteffectv.h: + * gst/effectv/gstop.c: + * gst/effectv/gstquark.c: + * gst/effectv/gstradioac.c: + * gst/effectv/gstrev.c: + * gst/effectv/gstripple.c: + * gst/effectv/gstshagadelic.c: + * gst/effectv/gststreak.c: + * gst/effectv/gstvertigo.c: + * gst/effectv/gstwarp.c: + effectv: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-15 15:03:10 +0100 Stéphane Cerveau + + * gst/dtmf/gstdtmf.c: + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstdtmfsrc.h: + * gst/dtmf/gstrtpdtmfdepay.c: + * gst/dtmf/gstrtpdtmfdepay.h: + * gst/dtmf/gstrtpdtmfsrc.c: + * gst/dtmf/gstrtpdtmfsrc.h: + dtmf: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-15 14:55:15 +0100 Stéphane Cerveau + + * gst/debugutils/breakmydata.c: + * gst/debugutils/cpureport.c: + * gst/debugutils/gstcapsdebug.c: + * gst/debugutils/gstcapssetter.c: + * gst/debugutils/gstdebug.c: + * gst/debugutils/gstdebugutilselements.h: + * gst/debugutils/gstnavigationtest.c: + * gst/debugutils/gstnavigationtest.h: + * gst/debugutils/gstnavseek.c: + * gst/debugutils/gstpushfilesrc.c: + * gst/debugutils/gsttaginject.c: + * gst/debugutils/progressreport.c: + * gst/debugutils/rndbuffersize.c: + * gst/debugutils/testplugin.c: + debugutils: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-15 13:38:21 +0100 Stéphane Cerveau + + * gst/avi/gstavi.c: + * gst/avi/gstavidemux.c: + * gst/avi/gstavielement.c: + * gst/avi/gstavielements.h: + * gst/avi/gstavimux.c: + * gst/avi/gstavisubtitle.c: + * gst/avi/meson.build: + avi: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-15 13:02:59 +0100 Stéphane Cerveau + + * gst/autodetect/gstautoaudiosink.c: + * gst/autodetect/gstautoaudiosrc.c: + * gst/autodetect/gstautodetect.c: + * gst/autodetect/gstautodetect.h: + * gst/autodetect/gstautodetectelement.c: + * gst/autodetect/gstautodetectelements.h: + * gst/autodetect/gstautodetectplugin.c: + * gst/autodetect/gstautovideosink.c: + * gst/autodetect/gstautovideosrc.c: + * gst/autodetect/meson.build: + autodetect: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-15 13:00:38 +0100 Stéphane Cerveau + + * gst/audioparsers/gstaacparse.c: + * gst/audioparsers/gstac3parse.c: + * gst/audioparsers/gstamrparse.c: + * gst/audioparsers/gstaudioparserselements.h: + * gst/audioparsers/gstdcaparse.c: + * gst/audioparsers/gstflacparse.c: + * gst/audioparsers/gstmpegaudioparse.c: + * gst/audioparsers/gstsbcparse.c: + * gst/audioparsers/gstwavpackparse.c: + * gst/audioparsers/plugin.c: + audioparsers: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-15 12:44:31 +0100 Stéphane Cerveau + + * gst/apetag/gstapedemux.c: + * gst/apetag/gstapedemux.h: + apetag: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-15 11:00:46 +0100 Stéphane Cerveau + + * ext/vpx/gstvp8dec.c: + * ext/vpx/gstvp8enc.c: + * ext/vpx/gstvp9dec.c: + * ext/vpx/gstvp9enc.c: + * ext/vpx/gstvpxelement.c: + * ext/vpx/gstvpxelements.h: + * ext/vpx/meson.build: + * ext/vpx/plugin.c: + vpx: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-12 17:26:36 +0100 Stéphane Cerveau + + * ext/taglib/gstapev2mux.cc: + * ext/taglib/gstid3v2mux.cc: + * ext/taglib/gsttaglibelement.c: + * ext/taglib/gsttaglibelements.h: + * ext/taglib/gsttaglibplugin.c: + * ext/taglib/meson.build: + taglib: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-12 17:09:19 +0100 Stéphane Cerveau + + * ext/qt/gstplugin.cc: + * ext/qt/gstqtelement.cc: + * ext/qt/gstqtelements.h: + * ext/qt/gstqtoverlay.cc: + * ext/qt/gstqtsink.cc: + * ext/qt/gstqtsrc.cc: + * ext/qt/meson.build: + * ext/qt/qtplugin.pro: + qt: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-12 16:09:53 +0100 Stéphane Cerveau + + * ext/speex/gstspeex.c: + * ext/speex/gstspeexdec.c: + * ext/speex/gstspeexelement.c: + * ext/speex/gstspeexelements.h: + * ext/speex/gstspeexenc.c: + * ext/speex/meson.build: + speex: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-12 16:04:16 +0100 Stéphane Cerveau + + * ext/soup/gstsoup.c: + * ext/soup/gstsoupelement.c: + * ext/soup/gstsoupelements.h: + * ext/soup/gstsouphttpclientsink.c: + * ext/soup/gstsouphttpsrc.c: + * ext/soup/meson.build: + soup: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-12 15:53:19 +0100 Stéphane Cerveau + + * ext/raw1394/gst1394.c: + * ext/raw1394/gstdv1394src.c: + * ext/raw1394/gstdv1394src.h: + * ext/raw1394/gsthdv1394src.c: + * ext/raw1394/gsthdv1394src.h: + raw1394: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-12 15:47:46 +0100 Stéphane Cerveau + + * ext/wavpack/gstwavpack.c: + * ext/wavpack/gstwavpackdec.c: + * ext/wavpack/gstwavpackelement.c: + * ext/wavpack/gstwavpackelements.h: + * ext/wavpack/gstwavpackenc.c: + * ext/wavpack/meson.build: + wavpack: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-12 15:35:11 +0100 Stéphane Cerveau + + * gst/alpha/gstalpha.c: + * gst/alpha/gstalpha.h: + alpha: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-12 15:27:31 +0100 Stéphane Cerveau + + * gst/audiofx/audioamplify.c: + * gst/audiofx/audioamplify.h: + * gst/audiofx/audiochebband.c: + * gst/audiofx/audiochebband.h: + * gst/audiofx/audiocheblimit.c: + * gst/audiofx/audiocheblimit.h: + * gst/audiofx/audiodynamic.c: + * gst/audiofx/audiodynamic.h: + * gst/audiofx/audioecho.c: + * gst/audiofx/audioecho.h: + * gst/audiofx/audiofirfilter.c: + * gst/audiofx/audiofirfilter.h: + * gst/audiofx/audiofx.c: + * gst/audiofx/audioiirfilter.c: + * gst/audiofx/audioiirfilter.h: + * gst/audiofx/audioinvert.c: + * gst/audiofx/audioinvert.h: + * gst/audiofx/audiokaraoke.c: + * gst/audiofx/audiokaraoke.h: + * gst/audiofx/audiopanorama.c: + * gst/audiofx/audiopanorama.h: + * gst/audiofx/audiowsincband.c: + * gst/audiofx/audiowsincband.h: + * gst/audiofx/audiowsinclimit.c: + * gst/audiofx/audiowsinclimit.h: + * gst/audiofx/gstscaletempo.c: + * gst/audiofx/gstscaletempo.h: + * gst/audiofx/gststereo.c: + * gst/audiofx/gststereo.h: + audiofx: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-12 13:16:28 +0100 Stéphane Cerveau + + * gst/rtp/gstasteriskh263.c: + * gst/rtp/gstasteriskh263.h: + * gst/rtp/gstrtp.c: + * gst/rtp/gstrtpL16depay.c: + * gst/rtp/gstrtpL16depay.h: + * gst/rtp/gstrtpL16pay.c: + * gst/rtp/gstrtpL16pay.h: + * gst/rtp/gstrtpL24depay.c: + * gst/rtp/gstrtpL24depay.h: + * gst/rtp/gstrtpL24pay.c: + * gst/rtp/gstrtpL24pay.h: + * gst/rtp/gstrtpL8depay.c: + * gst/rtp/gstrtpL8depay.h: + * gst/rtp/gstrtpL8pay.c: + * gst/rtp/gstrtpL8pay.h: + * gst/rtp/gstrtpac3depay.c: + * gst/rtp/gstrtpac3depay.h: + * gst/rtp/gstrtpac3pay.c: + * gst/rtp/gstrtpac3pay.h: + * gst/rtp/gstrtpamrdepay.c: + * gst/rtp/gstrtpamrdepay.h: + * gst/rtp/gstrtpamrpay.c: + * gst/rtp/gstrtpamrpay.h: + * gst/rtp/gstrtpbvdepay.c: + * gst/rtp/gstrtpbvdepay.h: + * gst/rtp/gstrtpbvpay.c: + * gst/rtp/gstrtpbvpay.h: + * gst/rtp/gstrtpceltdepay.c: + * gst/rtp/gstrtpceltdepay.h: + * gst/rtp/gstrtpceltpay.c: + * gst/rtp/gstrtpceltpay.h: + * gst/rtp/gstrtpdvdepay.c: + * gst/rtp/gstrtpdvdepay.h: + * gst/rtp/gstrtpdvpay.c: + * gst/rtp/gstrtpdvpay.h: + * gst/rtp/gstrtpelement.c: + * gst/rtp/gstrtpelements.h: + * gst/rtp/gstrtpg722depay.c: + * gst/rtp/gstrtpg722depay.h: + * gst/rtp/gstrtpg722pay.c: + * gst/rtp/gstrtpg722pay.h: + * gst/rtp/gstrtpg723depay.c: + * gst/rtp/gstrtpg723depay.h: + * gst/rtp/gstrtpg723pay.c: + * gst/rtp/gstrtpg723pay.h: + * gst/rtp/gstrtpg726depay.c: + * gst/rtp/gstrtpg726depay.h: + * gst/rtp/gstrtpg726pay.c: + * gst/rtp/gstrtpg726pay.h: + * gst/rtp/gstrtpg729depay.c: + * gst/rtp/gstrtpg729depay.h: + * gst/rtp/gstrtpg729pay.c: + * gst/rtp/gstrtpg729pay.h: + * gst/rtp/gstrtpgsmdepay.c: + * gst/rtp/gstrtpgsmdepay.h: + * gst/rtp/gstrtpgsmpay.c: + * gst/rtp/gstrtpgsmpay.h: + * gst/rtp/gstrtpgstdepay.c: + * gst/rtp/gstrtpgstdepay.h: + * gst/rtp/gstrtpgstpay.c: + * gst/rtp/gstrtpgstpay.h: + * gst/rtp/gstrtph261depay.c: + * gst/rtp/gstrtph261depay.h: + * gst/rtp/gstrtph261pay.c: + * gst/rtp/gstrtph261pay.h: + * gst/rtp/gstrtph263depay.c: + * gst/rtp/gstrtph263depay.h: + * gst/rtp/gstrtph263pay.c: + * gst/rtp/gstrtph263pay.h: + * gst/rtp/gstrtph263pdepay.c: + * gst/rtp/gstrtph263pdepay.h: + * gst/rtp/gstrtph263ppay.c: + * gst/rtp/gstrtph263ppay.h: + * gst/rtp/gstrtph264depay.c: + * gst/rtp/gstrtph264depay.h: + * gst/rtp/gstrtph264pay.c: + * gst/rtp/gstrtph264pay.h: + * gst/rtp/gstrtph265depay.c: + * gst/rtp/gstrtph265depay.h: + * gst/rtp/gstrtph265pay.c: + * gst/rtp/gstrtph265pay.h: + * gst/rtp/gstrtpilbcdepay.c: + * gst/rtp/gstrtpilbcdepay.h: + * gst/rtp/gstrtpilbcpay.c: + * gst/rtp/gstrtpilbcpay.h: + * gst/rtp/gstrtpisacdepay.c: + * gst/rtp/gstrtpisacdepay.h: + * gst/rtp/gstrtpisacpay.c: + * gst/rtp/gstrtpisacpay.h: + * gst/rtp/gstrtpj2kdepay.c: + * gst/rtp/gstrtpj2kdepay.h: + * gst/rtp/gstrtpj2kpay.c: + * gst/rtp/gstrtpj2kpay.h: + * gst/rtp/gstrtpjpegdepay.c: + * gst/rtp/gstrtpjpegdepay.h: + * gst/rtp/gstrtpjpegpay.c: + * gst/rtp/gstrtpjpegpay.h: + * gst/rtp/gstrtpklvdepay.c: + * gst/rtp/gstrtpklvdepay.h: + * gst/rtp/gstrtpklvpay.c: + * gst/rtp/gstrtpklvpay.h: + * gst/rtp/gstrtpldacpay.c: + * gst/rtp/gstrtpmp1sdepay.c: + * gst/rtp/gstrtpmp1sdepay.h: + * gst/rtp/gstrtpmp2tdepay.c: + * gst/rtp/gstrtpmp2tdepay.h: + * gst/rtp/gstrtpmp2tpay.c: + * gst/rtp/gstrtpmp2tpay.h: + * gst/rtp/gstrtpmp4adepay.c: + * gst/rtp/gstrtpmp4adepay.h: + * gst/rtp/gstrtpmp4apay.c: + * gst/rtp/gstrtpmp4apay.h: + * gst/rtp/gstrtpmp4gdepay.c: + * gst/rtp/gstrtpmp4gdepay.h: + * gst/rtp/gstrtpmp4gpay.c: + * gst/rtp/gstrtpmp4gpay.h: + * gst/rtp/gstrtpmp4vdepay.c: + * gst/rtp/gstrtpmp4vdepay.h: + * gst/rtp/gstrtpmp4vpay.c: + * gst/rtp/gstrtpmp4vpay.h: + * gst/rtp/gstrtpmpadepay.c: + * gst/rtp/gstrtpmpadepay.h: + * gst/rtp/gstrtpmpapay.c: + * gst/rtp/gstrtpmpapay.h: + * gst/rtp/gstrtpmparobustdepay.c: + * gst/rtp/gstrtpmparobustdepay.h: + * gst/rtp/gstrtpmpvdepay.c: + * gst/rtp/gstrtpmpvdepay.h: + * gst/rtp/gstrtpmpvpay.c: + * gst/rtp/gstrtpmpvpay.h: + * gst/rtp/gstrtpopusdepay.c: + * gst/rtp/gstrtpopusdepay.h: + * gst/rtp/gstrtpopuspay.c: + * gst/rtp/gstrtpopuspay.h: + * gst/rtp/gstrtppcmadepay.c: + * gst/rtp/gstrtppcmadepay.h: + * gst/rtp/gstrtppcmapay.c: + * gst/rtp/gstrtppcmapay.h: + * gst/rtp/gstrtppcmudepay.c: + * gst/rtp/gstrtppcmudepay.h: + * gst/rtp/gstrtppcmupay.c: + * gst/rtp/gstrtppcmupay.h: + * gst/rtp/gstrtpqcelpdepay.c: + * gst/rtp/gstrtpqcelpdepay.h: + * gst/rtp/gstrtpqdmdepay.c: + * gst/rtp/gstrtpqdmdepay.h: + * gst/rtp/gstrtpreddec.c: + * gst/rtp/gstrtpredenc.c: + * gst/rtp/gstrtpsbcdepay.c: + * gst/rtp/gstrtpsbcdepay.h: + * gst/rtp/gstrtpsbcpay.c: + * gst/rtp/gstrtpsbcpay.h: + * gst/rtp/gstrtpsirendepay.c: + * gst/rtp/gstrtpsirendepay.h: + * gst/rtp/gstrtpsirenpay.c: + * gst/rtp/gstrtpsirenpay.h: + * gst/rtp/gstrtpspeexdepay.c: + * gst/rtp/gstrtpspeexdepay.h: + * gst/rtp/gstrtpspeexpay.c: + * gst/rtp/gstrtpspeexpay.h: + * gst/rtp/gstrtpstorage.c: + * gst/rtp/gstrtpstreamdepay.c: + * gst/rtp/gstrtpstreamdepay.h: + * gst/rtp/gstrtpstreampay.c: + * gst/rtp/gstrtpstreampay.h: + * gst/rtp/gstrtpsv3vdepay.c: + * gst/rtp/gstrtpsv3vdepay.h: + * gst/rtp/gstrtptheoradepay.c: + * gst/rtp/gstrtptheoradepay.h: + * gst/rtp/gstrtptheorapay.c: + * gst/rtp/gstrtptheorapay.h: + * gst/rtp/gstrtpulpfecdec.c: + * gst/rtp/gstrtpulpfecenc.c: + * gst/rtp/gstrtpvorbisdepay.c: + * gst/rtp/gstrtpvorbisdepay.h: + * gst/rtp/gstrtpvorbispay.c: + * gst/rtp/gstrtpvorbispay.h: + * gst/rtp/gstrtpvp8depay.c: + * gst/rtp/gstrtpvp8depay.h: + * gst/rtp/gstrtpvp8pay.c: + * gst/rtp/gstrtpvp8pay.h: + * gst/rtp/gstrtpvp9depay.c: + * gst/rtp/gstrtpvp9depay.h: + * gst/rtp/gstrtpvp9pay.c: + * gst/rtp/gstrtpvp9pay.h: + * gst/rtp/gstrtpvrawdepay.c: + * gst/rtp/gstrtpvrawdepay.h: + * gst/rtp/gstrtpvrawpay.c: + * gst/rtp/gstrtpvrawpay.h: + * gst/rtp/meson.build: + * tests/check/meson.build: + rtp: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-12 11:12:34 +0100 Stéphane Cerveau + + * ext/pulse/gstpulseelement.c: + * ext/pulse/gstpulseelements.h: + * ext/pulse/meson.build: + * ext/pulse/plugin.c: + * ext/pulse/pulsesink.c: + * ext/pulse/pulsesrc.c: + pulse: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-12 10:41:29 +0100 Stéphane Cerveau + + * ext/mpg123/gstmpg123audiodec.c: + * ext/mpg123/gstmpg123audiodec.h: + mpeg123: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-12 10:33:50 +0100 Stéphane Cerveau + + * ext/libpng/gstpng.c: + * ext/libpng/gstpngdec.c: + * ext/libpng/gstpngdec.h: + * ext/libpng/gstpngenc.c: + * ext/libpng/gstpngenc.h: + libpng: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-12 10:27:18 +0100 Stéphane Cerveau + + * ext/lame/gstlamemp3enc.c: + * ext/lame/gstlamemp3enc.h: + * ext/lame/plugin.c: + lame: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-12 10:26:26 +0100 Stéphane Cerveau + + * ext/libcaca/gstcacaplugin.c: + * ext/libcaca/gstcacasink.c: + * ext/libcaca/gstcacasink.h: + * ext/libcaca/gstcacatv.c: + * ext/libcaca/gstcacatv.h: + * ext/libcaca/meson.build: + libcaca: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-12 10:09:46 +0100 Stéphane Cerveau + + * ext/jpeg/gstjpeg.c: + * ext/jpeg/gstjpegdec.c: + * ext/jpeg/gstjpegelements.h: + * ext/jpeg/gstjpegenc.c: + * ext/jpeg/gstjpegplugin.c: + * ext/jpeg/gstsmokedec.c: + * ext/jpeg/gstsmokeenc.c: + * ext/jpeg/meson.build: + jpeg: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-12 09:56:36 +0100 Stéphane Cerveau + + * ext/jack/gstjack.c: + * ext/jack/gstjack.h: + * ext/jack/gstjackaudiosink.c: + * ext/jack/gstjackaudiosrc.c: + jack: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-12 08:57:55 +0100 Stéphane Cerveau + + * ext/gdk_pixbuf/gstgdkpixbufdec.c: + * ext/gdk_pixbuf/gstgdkpixbufelement.c: + * ext/gdk_pixbuf/gstgdkpixbufelements.h: + * ext/gdk_pixbuf/gstgdkpixbufoverlay.c: + * ext/gdk_pixbuf/gstgdkpixbufplugin.c: + * ext/gdk_pixbuf/gstgdkpixbufsink.c: + * ext/gdk_pixbuf/meson.build: + gdk_pixbuf: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-12 08:48:21 +0100 Stéphane Cerveau + + * ext/gtk/gstgtkglsink.c: + * ext/gtk/gstgtkglsink.h: + * ext/gtk/gstgtksink.c: + * ext/gtk/gstgtksink.h: + * ext/gtk/gstplugin.c: + gtk: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-11 19:53:30 +0100 Stéphane Cerveau + + * ext/flac/gstflac.c: + * ext/flac/gstflacdec.c: + * ext/flac/gstflacelement.c: + * ext/flac/gstflacelements.h: + * ext/flac/gstflacenc.c: + * ext/flac/gstflactag.c: + * ext/flac/meson.build: + flac: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-02-11 18:57:03 +0100 Stéphane Cerveau + + * ext/dv/gstdv.c: + * ext/dv/gstdvdec.c: + * ext/dv/gstdvdemux.c: + * ext/dv/gstdvelement.c: + * ext/dv/gstdvelements.h: + * ext/dv/meson.build: + dv: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2020-08-14 15:27:31 -0400 Julian Bouzas + + * ext/aalib/gstaaplugin.c: + * ext/aalib/gstaasink.c: + * ext/aalib/gstaasink.h: + * ext/aalib/gstaatv.c: + * ext/aalib/gstaatv.h: + * ext/aalib/meson.build: + aalib: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: + +2021-03-19 17:19:43 +0100 Víctor Manuel Jáquez Leal + + * docs/gst_plugins_cache.json: + * gst/videocrop/gstvideocrop.c: + * gst/videocrop/gstvideocrop.h: + * tests/check/elements/videocrop.c: + videocrop: handle non raw caps features + Currently, videocrop, only negotiates raw caps (system memory) because + it's the type of memory it can modify. Nonetheless, it's also possible + for the element to handle non-raw caps when only adding the crop meta + is possible, in other words, when downstream buffer pools expose the + crop API. + This patch enable non-raw caps negotiation. If downstream doesn't + expose crop API and negotiated caps are featured, the negotiation + fails. + Part-of: + +2021-03-19 10:35:09 +0200 Sebastian Dröge + + * gst/rtpmanager/gstrtpbin.c: + rtpbin: Don't special-case G_SIGNAL_RUN_CLEANUP stage in signal accumulators + All these signals don't run the class handler in the CLEANUP stage. + Part-of: + +2021-03-19 10:34:33 +0200 Sebastian Dröge + + * ext/shout2/gstshout2.c: + shout2: Don't register signal without class handler with G_SIGNAL_RUN_CLEANUP + There is no class handler to run during the CLEANUP stage. + Part-of: + +2021-03-23 16:59:28 +0800 Hou Qi + + * sys/v4l2/gstv4l2object.c: + v4l2object: Avoid colorimetry mismatch for streams with invalid colorimetry + video-info sets gst colorimetry to default value when colorimetry in caps + is unparsable or invalid. Then v4l2object uses this gst colorimetry to do + mapping with v4l2 colorimetry. This may cause colorimetry mismatch when + check mapped gst colorimetry with that read from caps directly. + To fix this, need to correct gst colorimetry as that parsed from video-info + when check gst_v4l2_video_colorimetry_matches(). + Part-of: + +2021-03-19 10:52:26 +0800 Hou Qi + + * sys/v4l2/gstv4l2object.c: + v4l2object: Add support for hdr10 stream playback + Colorimetry of hdr10 video is bt2100-pq with transfer as + GST_VIDEO_TRANSFER_SMPTE2084. So map GST_VIDEO_TRANSFER_SMPTE2084 + to V4L2_XFER_FUNC_SMPTE2084 to support hdr10 stream playback. + Part-of: + +2021-03-20 10:41:29 -0500 Sid Sethupathi + + * gst/shapewipe/gstshapewipe.c: + shapewipe: fix broken link in docs + Part-of: + +2021-03-18 17:42:02 +0000 Alba Mendez + + * docs/gst_plugins_cache.json: + * gst/rtsp/gstrtspsrc.c: + rtspsrc: Fix more signals + Behaviour change in GLib causes select-stream signal to discard + the value returned by handlers. See !909 for more info. + Part-of: + +2021-03-18 19:52:53 +1100 Matthew Waters + + * ext/jack/gstjack.c: + * ext/jack/gstjackaudiosink.c: + * ext/jack/gstjackaudiosrc.c: + * ext/pulse/pulsesink.h: + * ext/qt/gstqsgtexture.cc: + * ext/qt/gstqtglutility.cc: + * ext/qt/qtglrenderer.cc: + * ext/qt/qtitem.cc: + * ext/qt/qtwindow.cc: + * ext/vpx/gstvpxdec.c: + * ext/vpx/gstvpxenc.c: + * gst/audioparsers/gstac3parse.h: + * sys/rpicamsrc/gstrpicamsrc.c: + * sys/ximage/ximageutil.c: + gst: don't use volatile to mean atomic + volatile is not sufficient to provide atomic guarantees and real atomics + should be used instead. GCC 11 has started warning about using volatile + with atomic operations. + https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719 + Discovered in https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/868 + Part-of: + +2021-03-17 15:54:59 +0530 Nirbheek Chauhan + + * docs/gst_plugins_cache.json: + * gst/rtsp/gstrtspsrc.c: + Update docs cache and fix before-send signal doc syntax + The docs for before-send were missing because of this + Part-of: + +2021-03-17 13:18:34 +0530 Nirbheek Chauhan + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: Fix accumulation of before-send signal return values + Since glib 2.62, the accumulated return values in RUN_CLEANUP override the + accumulated return values in RUN_FIRST. Since: + 1. We have a default handler that always returns TRUE, and + 2. User handlers are only run in RUN_FIRST, and + 3. Our accumulator just takes the latest return value + We were discarding the return value from the user handler and always + sending messages even if the user handler said not to. See + https://gitlab.gnome.org/GNOME/glib/-/issues/2352 for more details. + This signal does not need RUN_CLEANUP or RUN_FIRST, so just change it + to RUN_LAST so that it's emitted exactly once and accumulated once. + With this fix, this signal can now be used to intercept PAUSE when + going to GST_STATE_NULL so that the server does a TEARDOWN (if + necessary) and not a PAUSE, which will confuse other RTSP clients when + playing shared media. + Part-of: + +2021-03-17 11:32:08 +0530 Nirbheek Chauhan + + * gst/rtsp/gstrtspsrc.c: + Revert unusable workaround for PAUSE being sent when going NULL + Directly setting rtspsrc to the NULL state before putting the pipeline + in the NULL state usually works, but it can cause a deadlock in some + cases, so it's not a reliable mechanism to fix this. + This reverts commit f37afdafff1fd0a339966116261f5cd0de53f5d1: + "rtspsrc: Fix state changes from PAUSED to PLAYING" + and commit 76d624b2df5594a82269b94dffe8766a372d059d: + "rtspsrc: Do not send PAUSE command when going to GST_STATE_NULL" + Part-of: + +2021-03-16 19:25:36 +0200 Sebastian Dröge + + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: Fix parsing of the mediaclk:direct= field + Due to an off-by-one when parsing the string, the most significant digit + or the clock offset was skipped when parsing the offset. + Part-of: + +2021-03-16 00:08:43 +0530 Nirbheek Chauhan + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: Fix state changes from PAUSED to PLAYING + This was accidentally broken in the last commit that touched this + because I missed the fall-through in the case immediately above this. + Part-of: + +2021-03-04 13:05:19 +0200 Sebastian Dröge + + * gst/matroska/matroska-demux.c: + * gst/matroska/matroska-ids.h: + matroskademux: Fix extraction of multichannel WavPack + The old code had a couple of issues that all lead to potential memory + safety bugs. + - Use a constant for the Wavpack4Header size instead of using sizeof. + It's written out into the data and not from the struct and who knows + what special alignment/padding requirements some C compilers have. + - gst_buffer_set_size() does not realloc the buffer when setting a + bigger size than allocated, it only allows growing up to the maximum + allocated size. Instead use a GstAdapter to collect all the blocks + and take out everything at once in the end. + - Check that enough data is actually available in the input and + otherwise handle it an error in all cases instead of silently + ignoring it. + Among other things this fixes out of bounds writes because the code + assumed gst_buffer_set_size() can grow the buffer and simply wrote after + the end of the buffer. + Thanks to Natalie Silvanovich for reporting. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/859 + Part-of: + +2021-03-03 11:31:52 +0200 Sebastian Dröge + + * gst/matroska/matroska-demux.c: + matroskademux: Initialize track context out parameter to NULL before parsing + Various error return paths don't set it to NULL and callers are only + checking if the pointer is NULL. As it's allocated on the stack this + usually contains random stack memory, and more often than not the memory + of a previously parsed track. + This then causes all kinds of memory corruptions further down the line. + Thanks to Natalie Silvanovich for reporting. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/858 + Part-of: + +2021-03-15 12:57:19 +0530 Nirbheek Chauhan + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: Do not send PAUSE command when going to GST_STATE_NULL + This usually doesn't matter, but it is disruptive when streaming from + a shared media since it will pause all other clients when any client + exits. + This new behaviour is opt-in and should be safe because you need to + set the NULL state on rtspsrc directly, instead of just on the + pipeline. See the updated documentation for an explanation. + Part-of: + +2021-01-18 15:54:43 +0100 Philipp Zabel + + * sys/v4l2/gstv4l2object.c: + v4l2object: handle GST_VIDEO_TRANSFER_BT601 + V4L2 makes no difference between the BT.601 and BT.709 transfer + functions [1], but GStreamer does since 1.18 [2]. + Adapt gst_v4l2_object_get_colorspace() and + gst_v4l2_object_set_format_full(). + [1] https://linuxtv.org/downloads/v4l-dvb-apis-new/userspace-api/v4l/colorspaces-details.html#colorspace-smpte-170m-v4l2-colorspace-smpte170m + [2] https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/724 + Part-of: + +2021-03-11 22:22:15 +0100 Mathieu Duponchelle + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: fix title of a few properties docstrings + GstRtspSrc -> GstRTSPSrc + This would have been noticed by the since checker, but those + properties were introduced prior to that. + Part-of: + +2021-03-07 21:25:01 +0000 Vladimir Menshakov + + * docs/gst_plugins_cache.json: + * ext/wavpack/gstwavpackdec.c: + * ext/wavpack/gstwavpackdec.h: + wavpackdec: Add floating point format support + This commit negotiate F32 audio format if MODE_FLOAT used in wavpack file. + Wavpack float mode is always in 32-bit IEEE format. + The following pipeline plays distorted audio if source file is encoded in float mode: + gst-launch-1.0 filesrc ... ! wavpackparse ! wavpackdec ! pulsesink + Part-of: + +2021-03-04 16:40:06 +1100 Matthew Waters + + * gst/matroska/matroska-demux.c: + matroska: also support push-mode from seek events sent to the element + Otherwise sending seek events would fail to actually seek. + Part-of: + +2021-02-26 10:49:10 +0100 Marc Leeman + + * gst/rtsp/gstrtspsrc.c: + gstrtspsrc: 551 should not result in an unhandled error + Some cameras (e.g. HikVision DS-2CD2732F-IS) return "551 Option + not supported" when a command is sent that is not implemented + (e.g. PAUSE). Instead; it should return "501 Not Implemented". + This is wrong, as previously, the camera did announce support for PAUSE + in the OPTIONS. + In this case, handle the 551 as if it was 501 to avoid throwing errors + to application level. */ + Part-of: + +2021-03-01 14:32:40 +0800 Hou Qi + + * sys/v4l2/gstv4l2videodec.c: + v4l2videodec: Do not expose profiles/levels in vp8/vp9 template caps + Vp8/vp9 supported profiles/levels are listed in decoder sink caps, but + there is no parser for these two formats and the demuxers also don't have + these information. It causes negotiation fail between demuxers and decoder + when check caps "accept = gst_caps_is_subset (caps, template_caps);". + To fix this, need to remove profiles/levels for vp8/vp9 formats in decoder + sink caps. + Fix #854 + Part-of: + +2021-03-03 18:30:39 +0900 Seungha Yang + + * gst/rtpmanager/gstrtphdrext-twcc.h: + rtpmanager: Fix an MSVC compile warning + We don't expect this object is a part of public library. + gstrtphdrext-twcc.c(45): warning C4273: 'gst_rtp_header_extension_twcc_get_type': inconsistent dll linkage + Part-of: + +2021-02-24 13:25:43 +0100 Philipp Zabel + + * sys/v4l2/gstv4l2videodec.c: + v4l2videodec: fix src side frame rate negotiation + Negotiating v4l2h264dec ! v4l2h264enc transcoding pipelines fails in + case the encoder does not accept framerate=(fraction)0/1. + The acquired caps used for downstream negotiation are determined from + gst_v4l2_object_acquire_format(), which sets the GstVideoInfo::fps_n + and ::fps_d fields to 0. + To fix this, copy the frame rate from the sink side. + Part-of: + +2021-02-16 16:20:05 +0200 Jordan Petridis + + * sys/rpicamsrc/meson.build: + rpicamsrc: depend on posix threads and vchiq_arm + Could only test on rpi 3b+ + Close #839 + Part-of: + +2021-02-11 14:48:07 -0500 Nicolas Dufresne + + * sys/v4l2/gstv4l2bufferpool.c: + v4l2bufferpool: Silence traces around unsupported source change + Don't be too spamy about unsupported source change flags as these will be + commonly extended in the future. + Part-of: + +2021-02-11 14:24:29 -0500 Nicolas Dufresne + + * sys/v4l2/gstv4l2src.c: + v4l2src: Move preferred resolution query before the probe + As we lock the DV_TIMINGS (and standards in the future), we need to probe the + caps after, otherwise, we may endup fixating to an unsupported resolution, + which would lead to a not-negotiated error. + Part-of: + +2021-02-10 16:37:01 -0500 Nicolas Dufresne + + * sys/v4l2/gstv4l2src.c: + * sys/v4l2/v4l2_calls.c: + v4l2src: Calculate framerate from DV timings + And use this framerate in our preference. Note that we also flush + the probed caps as it seems that the format enumeration may change + when a new source change event get triggered. + Part-of: + +2021-02-10 15:52:55 -0500 Nicolas Dufresne + + * sys/v4l2/gstv4l2bufferpool.h: + * sys/v4l2/gstv4l2object.h: + * sys/v4l2/gstv4l2src.c: + * sys/v4l2/v4l2_calls.c: + v4l2rc: Add DV_TIMINGS query and locking + This adds support to DV_TIMINGS query and locking. The timing width and + height is then used as a preference. + Part-of: + +2021-02-10 15:49:03 -0500 Nicolas Dufresne + + * sys/v4l2/gstv4l2src.c: + v4l2src: Force renegotiation on resolution change + As mandated by the specification, make sure to cycle through streamoff + / streamon regardless if the caps have changed or not. + Part-of: + +2021-02-10 14:52:14 -0500 Nicolas Dufresne + + * sys/v4l2/gstv4l2object.h: + v4l2object: Remove unused streaming member + Part-of: + +2021-02-10 10:48:48 -0500 Nicolas Dufresne + + * sys/v4l2/gstv4l2src.c: + v4l2src: Refactor to use PreferredCapsInfo structure + Avoid passing around a bare structure for the preference, this removes + the need to copy and free that structure and simplify the code. Also + fix a type in the structure name, Prefered -> Preferred. + Part-of: + +2021-02-08 17:27:20 -0500 Nicolas Dufresne + + * sys/v4l2/gstv4l2src.c: + v4l2src: Stub preferred resolution support + This stubs the ability to use preferred resolution from digital + video timings, analog TV standards or driver reported native + resolution. + Part-of: + +2021-02-09 14:44:02 -0500 Nicolas Dufresne + + * sys/v4l2/gstv4l2bufferpool.c: + * sys/v4l2/gstv4l2object.h: + * sys/v4l2/v4l2_calls.c: + v4l2: Subscribe source_change for the current input + When we subscribe for source-change event, we need to specify for which + input. Make sure we subscribe for the current input. + Part-of: + +2021-02-08 17:26:20 -0500 Nicolas Dufresne + + * sys/v4l2/gstv4l2src.c: + * sys/v4l2/gstv4l2src.h: + v4l2src: Add input signal status detection + As part of the support to select a preferred size, we can also + detect the signal status. This is a split patch so that feature + is separated to ease review. + Part-of: + +2021-02-08 17:24:00 -0500 Nicolas Dufresne + + * sys/v4l2/gstv4l2object.h: + * sys/v4l2/v4l2_calls.c: + v4l2: Add helper to query input status + This is a wrapper around ENUM_INPUT renamed for readability. + Part-of: + +2021-02-08 17:22:37 -0500 Nicolas Dufresne + + * sys/v4l2/gstv4l2object.h: + * sys/v4l2/gstv4l2radio.c: + * sys/v4l2/gstv4l2tuner.c: + * sys/v4l2/v4l2_calls.c: + v4l2: Fix input/output index sign + This is an unsigned integer in the kernel API. + Part-of: + +2021-02-04 16:59:44 -0500 Nicolas Dufresne + + * sys/v4l2/gstv4l2src.c: + v4l2src: Add source resolution change support + This patch adds support for source resolution change detection. + Resolution change is signaled by drivers when a change in the detected + signal have been detected. This is notably seen on HDMI receivers. + Part-of: + +2021-02-04 14:13:32 -0500 Nicolas Dufresne + + * sys/v4l2/gstv4l2bufferpool.c: + * sys/v4l2/gstv4l2bufferpool.h: + v4l2bufferpool: Handle resolution change event + This patch adds the detection, dequeuing and reporting of the SOURCE_CHANGE + event when the CH_RESOLUTION flag is set. The acquire function will now return + a new custom success called GST_V4L2_FLOW_RESOLUTION_CHANGE. In order to use + this new feature, elements must enable it by calling: + gst_v4l2_buffer_pool_enable_resolution_change (pool); + Part-of: + +2021-02-04 11:01:38 -0500 Nicolas Dufresne + + * sys/v4l2/gstv4l2object.h: + * sys/v4l2/v4l2_calls.c: + v4l2object: Add event helpers + Part-of: + +2021-02-04 10:10:34 -0500 Nicolas Dufresne + + * sys/v4l2/gstv4l2bufferpool.c: + v4l2bufferpool: use FLOW_LAST_BUFFER + This uses the GST_V4L2_FLOW_LAST_BUFFER alias instead of + GST_FLOW_CUSTOM_SUCCESS to make the code more readable. + Part-of: + +2018-12-10 14:10:05 +0100 Lucas Stach + + * sys/v4l2/gstv4l2object.c: + v4l2object: prefer NV12 over I420 + Considering NV12 an 'odd' format is a historical artifact. This format + is now quite common, and usually preferable to I420 due to more memory + friendly access patterns. + Part-of: + +2021-02-18 10:34:25 +0100 Guillaume Desmottes + + * gst/wavparse/gstwavparse.c: + * tests/check/elements/wavparse.c: + wavparse: fix seeking in READY state + wavparse claims to be able to support seeking in the READY state by + saving the pending seek event and actually seeking later after having parsed the + header. + Problem was that this seek event was reset on the READY to PAUSED + transition, making all this code useless. Fixing it by stop resetting + on READY to PAUSED transition as we already reset on PAUSED to READY + and when initiating the element. + Note that DTS marker detection isn't support in such scenario as + gst_type_find_helper_for_buffer() needs a buffer containing the + beginning of the stream. + Part-of: + +2021-02-18 10:05:03 +0100 Guillaume Desmottes + + * tests/check/elements/wavparse.c: + tests: wavparse: factor out create_pipeline() + No semantic change. + Part-of: + +2021-02-18 00:34:02 +0100 Mathieu Duponchelle + + * docs/gst_plugins_cache.json: + docs: update plugins cache with new h264 / vp8 depay properties + Part-of: + +2020-12-09 01:40:45 +0100 Mathieu Duponchelle + + * gst/rtp/gstrtph264depay.c: + * gst/rtp/gstrtph264depay.h: + rtph264depay: expose request-keyframe property + When set, the depayloader will request new keyframes on packet + loss + Part-of: + +2020-12-09 01:34:20 +0100 Mathieu Duponchelle + + * gst/rtp/gstrtpvp8depay.c: + * gst/rtp/gstrtpvp8depay.h: + rtpvp8depay: expose request-keyframe property + When set, the depayloader will request new keyframes on packet + loss + Part-of: + +2020-12-09 01:24:57 +0100 Mathieu Duponchelle + + * gst/rtp/gstrtph264depay.c: + * gst/rtp/gstrtph264depay.h: + rtph264depay: expose wait-for-keyframe property + Similar to rtpvp8depay, when packet loss occurs, the depayloader + starts waiting for a keyframe. + We try to only stop waiting when all the packets for the new keyframe + have been received, by only resetting waiting_for_keyframe when + encountering the first packet of a keyframe, this is slightly + fragile because there is no bit that explicitly marks the start + of an access unit, so we rely on the existing picture_start + detection code. + As a consequence, the property is only meaningful when outputting + access units, and is ignored when outputting NALs directly. + Part-of: + +2021-02-18 00:36:43 +0100 Mathieu Duponchelle + + * docs/gst_plugins_cache.json: + * gst/videomixer/videomixer2.c: + videomixer: document as deprecated + Part-of: + +2021-02-16 22:20:17 +1100 Ashley Brighthope + + * gst/wavenc/gstwavenc.c: + wavenc: Fixed INFO chunk corruption, caused by odd sized data not being padded. Code style was updated. + Part-of: + +2020-12-07 19:51:35 +0100 Jakub Adam + + * gst/rtp/gstrtpopuspay.c: + rtpopuspay: add info regarding (non-standard) multichannel support + Part-of: + +2020-12-07 16:50:01 +0100 Jakub Adam + + * docs/gst_plugins_cache.json: + docs: update plugins cache for rtpopus + Part-of: + +2020-12-01 20:09:58 +0100 Jakub Adam + + * tests/check/elements/rtpopus.c: + tests: add rtpopus multichannel test cases + Part-of: + +2020-12-01 16:43:32 +0100 Jakub Adam + + * gst/rtp/gstrtpopusdepay.c: + rtpopusdepay: support libwebrtc-compatible multichannel payload + Part-of: + +2020-11-30 21:49:48 +0100 Jakub Adam + + * gst/rtp/gstrtpopuspay.c: + rtpopuspay: support libwebrtc-compatible multichannel payload + When the audio has more than 2 channels, add optional fields to output + caps from which webrtcbin can generate SDP in the syntax recognized by + "multiopus" codec present in libwebrtc [1]. + e.g. for 5.1 audio: + a=rtpmap:96 multiopus/48000/6 + a=fmtp:96 num_streams=4;coupled_streams=2;channel_mapping=0,4,1,2,3,5 + [1] https://webrtc-review.googlesource.com/c/src/+/129768 + Part-of: + +2020-11-30 22:10:14 +0100 Jakub Adam + + * gst/rtp/gstrtpopuspay.c: + rtpopuspay: make use of gst_rtp_base_payload_set_outcaps_structure() + Part-of: + +2021-02-09 19:31:28 -0500 Olivier Crête + + * gst/effectv/LICENSE: + effectv: Remove redundant license file + Part-of: + +2021-02-05 00:55:12 +0000 Kevin Song + + * sys/v4l2/gstv4l2videoenc.c: + Apply 1 suggestion(s) to 1 file(s) + Part-of: + +2021-02-05 00:55:04 +0000 Kevin Song + + * sys/v4l2/gstv4l2videoenc.c: + Apply 1 suggestion(s) to 1 file(s) + Part-of: + +2021-02-04 13:43:17 +0800 Bing Song + + * sys/v4l2/gstv4l2videoenc.c: + v4l2videoenc: support resolution change stream encode. + Resolution change stream transcoding will drain before send new video + frame buffer. Need encode video frame after process EOS. + Part-of: + +2021-02-04 11:44:53 +0100 Xabier Rodriguez Calvar + + * gst/isomp4/fourcc.h: + * gst/isomp4/qtdemux.c: + qtdemux: added support for cbcs encryption scheme + Part-of: + +2021-01-21 18:04:58 +0100 Guillaume Desmottes + + * docs/gst_plugins_cache.json: + * gst/rtpmanager/gstrtphdrext-rfc6464.c: + * gst/rtpmanager/gstrtphdrext-rfc6464.h: + * gst/rtpmanager/gstrtpmanager.c: + * gst/rtpmanager/meson.build: + * tests/check/elements/rtphdrextrfc6464.c: + * tests/check/meson.build: + rtp: add rtphdrextrfc6464 + Header Extension for Client-to-Mixer Audio Level Indication as + defined in RFC 6464. + Part-of: + +2020-06-16 12:01:30 +0200 Guillaume Desmottes + + * docs/gst_plugins_cache.json: + * gst/level/gstlevel.c: + * gst/level/gstlevel.h: + * tests/check/elements/level.c: + level: add GstRTPAudioLevelMeta on buffers + This meta can be used by a RTP payloader to send the level information + to the peer. + Part of https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/446 + Part-of: + +2021-02-03 17:10:20 +0200 Robert Swain + + * gst/deinterlace/gstdeinterlace.c: + deinterlace: Provide documentation for GST_DEINTERLACE_BUFFER_STATE + More information available in + https://gstconf.ubicast.tv/videos/interlacing-and-telecine-in-gstreamer/ + Part-of: + +2021-01-30 16:16:13 +0200 Vivia Nikolaidou + + * gst/deinterlace/gstdeinterlacemethod.c: + deinterlace: Fix telecine/onefield mixup + https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/838 + Part-of: + +2021-01-30 15:49:23 +0200 Vivia Nikolaidou + + * gst/deinterlace/gstdeinterlace.c: + * gst/deinterlace/gstdeinterlacemethod.c: + deinterlace: Better alternate support + Improve line offset halving based on whether this field is top or + bottom. + Also handle the buffer state the same as mixed. + Part-of: + +2021-01-14 01:12:06 +0800 Bing Song + + * sys/v4l2/gstv4l2h265codec.c: + v4l2h265codec: fix HEVC profile string issue. + Keep HEVC profile compatible with other module. + Part-of: + +2020-12-15 10:41:40 +0800 Bing Song + + * sys/v4l2/gstv4l2object.c: + * sys/v4l2/gstv4l2object.h: + v4l2object: Need keep same transfer as input caps. + GST_VIDEO_TRANSFER_BT2020_12 and GST_VIDEO_TRANSFER_BT2020_10 will + be mapped to V4L2_XFER_FUNC_709. Need check input caps when map + V4L2_XFER_FUNC_709 back to GST_VIDEO_TRANSFER_BT2020_12 and + GST_VIDEO_TRANSFER_BT2020_10 + Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/816 + Part-of: + +2020-12-07 10:01:53 +0100 Tobias Ronge + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: Do not wait for response while flushing + Due to the may_cancel flag in GstRTSPConnection, receiving might not get + cancelled when supposed to. In this case, gst_rtsp_src_receive_response + will have to wait until timeout instead but if busy receiving RTP + data, this timeout will never occur. + With this patch, gst_rtsp_src_receive_response returns GST_RTSP_EINTR + if flushing is set to TRUE instead of continuing to receive. + Part-of: + +2021-01-14 19:13:03 +0000 Tim-Philipp Müller + + * ext/dv/meson.build: + meson: allow libdv subproject fallback + Part-of: + +2020-12-21 13:55:58 +0100 Xabier Rodriguez Calvar + + * gst/isomp4/qtdemux.c: + qtdemux: Allow streams with no specified protection system ID + This is necessary in cases like CMAF where there won't be any events + passing thru. + Part-of: + +2021-01-07 16:57:27 +0800 Hou Qi + + * docs/gst_plugins_cache.json: + * sys/v4l2/gstv4l2object.c: + v4l2object: Map correct video format for RGBA + Map V4L2_PIX_FMT_RGBA32 pixel format to GST_VIDEO_FORMAT_RGBA instead of + GST_VIDEO_FORMAT_RGB video format to support RGBA. + Fixes #823 + Part-of: + +2021-01-02 13:06:16 +0530 Sanchayan Maity + + * gst/udp/gstudpsrc.c: + udpsrc: Fix marker links + These should be with a single ':'. The double '::' results in a CI with + build failure message like below. + ERROR: [links]: (mandatory-link-not-found): Mandatory link Link GstSocketTimestamp -> None (GstSocketTimestamp) could not be resolved + ERROR: [check-missing-since-markers]: (missing-since-marker): Missing since marker for udpsrc:socket-timestamp + Part-of: + +2020-12-17 11:24:07 +0530 Sanchayan Maity + + * docs/gst_plugins_cache.json: + * gst/udp/gstudpsrc.c: + * gst/udp/gstudpsrc.h: + udpsrc: Allow use of socket control message timestamps for DTS + Part-of: + +2020-12-09 20:20:18 +1100 Matthew Waters + + * docs/gst_plugins_cache.json: + * gst/videofilter/gstvideoflip.c: + * gst/videofilter/gstvideoflip.h: + * tests/check/elements/videoflip.c: + videoflip: fix possible crash when setting the video-direction while running + A classic case of not enough locking. + One interesting thing with this is the interaction between the + rotation value and caps negotiation. i.e. the width/height of the caps + can be swapped depending on the video-direction property. We can't lock + the entirety of the caps negotiation for obvious reasons so we need to + do something else. This takes the approach of trying to use a single + rotation value throughout the entirety of the negotiation and then + subsequent output frame in a kind of latching sequence. + Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/792 + Part-of: + +2020-12-09 19:49:47 +1100 Matthew Waters + + * tests/check/elements/videoflip.c: + * tests/check/meson.build: + tests: add tests for videoflip + Part-of: + +2020-12-30 13:38:46 +0100 Ignacio Casal Quinteiro + + * gst/deinterlace/meson.build: + deinterlace: force -DPREFIX on macos + This is due to a bug in meson where it will not detect properly + the compiler if the symbols need an undercore. + https://github.com/mesonbuild/meson/issues/5482 + Fixes #821 + Part-of: + +2020-12-15 11:36:27 +0200 Sebastian Dröge + + * docs/gst_plugins_cache.json: + * gst/rtsp/gstrtspsrc.c: + rtspsrc: Use proper types instead of G_TYPE_POINTER for the RTSP messages in the "handle-request" signal + Part-of: + +2020-12-10 14:27:49 +0200 Vivia Nikolaidou + + * gst/multifile/gstsplitmuxsink.c: + * gst/multifile/gstsplitmuxsink.h: + splitmuxsink: Avoid deadlock when releasing a pad from a running muxer + Might not drain correctly + Part-of: + +2020-12-11 11:24:14 +0800 Hou Qi + + * sys/v4l2/gstv4l2object.c: + v4l2object: Use active resolution during fallback colorspace probe + For legacy drivers that don't implement ENUM_FRAMESIZE, use active + resolution to probe colorspace. This can improve the accuracy of the + result when the colorspace depends on the resolution. This fixes a + wrong colorspace issue on board with vendor bsp at resolution 2560x1440. + Part-of: + +2020-12-12 04:02:37 +0100 Mathieu Duponchelle + + * gst/rtpmanager/gstrtpst2022-1-fecdec.c: + rtpst2022-1-fecdec: don't xor out of bounds + When reconstituting packets from a stream with variable packet + sizes, don't xor larger packets past the length of the protected + packet + Part-of: + +2020-12-12 04:00:41 +0100 Mathieu Duponchelle + + * gst/rtpmanager/gstrtpst2022-1-fecenc.c: + rtpst2022-1-fecenc: memset when reallocating xored payload + When protecting packets with a variable payload length, we + reallocate the xored payload when needed. It is a good idea + to memset the extended memory to 0 so that we don't xor + data with garbage! + Part-of: + +2020-12-12 03:56:11 +0100 Mathieu Duponchelle + + * gst/rtpmanager/gstrtpst2022-1-fecdec.c: + * gst/rtpmanager/gstrtpst2022-1-fecenc.c: + rtpst2022-1-fec-*: protect additional RTP header fields + While the standard is a bit vague about whether the padding, + extension and marker bits should be protected: + > The usage, by senders and receivers, of the following bits shall + > be defined by the associated video/audio transport standards: + It is obviously necessary and useful for some formats (eg VP8) + that those indeed be protected. + Part-of: + +2020-12-12 03:28:56 +1100 Jan Schmidt + + * tests/check/elements/splitmuxsink.c: + splitmuxsink: Unit test - check format/opened/closed sequence + Check the sequence of format-location/fragment-opened/fragment-closed + events is respected. There should be 1 format-location call for each + fragment-opened message, and 1 fragment-closed for each. + Part-of: + +2020-12-09 00:40:52 +1100 Jan Schmidt + + * gst/multifile/gstsplitmuxsink.c: + * gst/multifile/gstsplitmuxsink.h: + splitmuxsink: Fix for 'reference bytes muxed' check. + https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/798 + introduced a check in the need-new-fragment logic to avoid starting a + new fragment unless there has been some data on the reference stream, + but the check is done against the number of bytes that have been + received on the input, not the number that were released for output + into the current fragment. + Fix the check to remember and test against bytes that have been sent + for output. + This also fixes a problem where starting a new fragment fails to + request a new filename from the format-location signal. + Part-of: + +2020-09-15 00:27:24 +1000 Jan Schmidt + + * gst/multifile/gstsplitmuxsink.c: + splitmuxsink: Add debug for fragment opened/closed msgs + When posting fragment-opened and fragment-closed messages, + put a debug statement in the logs + Part-of: + +2020-08-18 16:06:14 +1000 Jan Schmidt + + * gst/multifile/gstsplitmuxsink.c: + splitmuxsink: Convert asserts into element errors. + Change some g_assert into element errors so that they can be + caught and the pipeline shut down. + Part-of: + +2020-07-10 15:36:54 +1000 Matthew Waters + + * docs/gst_plugins_cache.json: + * gst/rtpmanager/gstrtpfunnel.c: + * gst/rtpmanager/gstrtphdrext-twcc.c: + * gst/rtpmanager/gstrtphdrext-twcc.h: + * gst/rtpmanager/gstrtpmanager.c: + * gst/rtpmanager/meson.build: + rtpmanager: update for rtp header extensions + Provide an implementation of the transport-wide-cc header extension and + use it in rtpfunnel. + Part-of: + +2020-11-15 11:30:07 +0000 Jose Quaresma + + * sys/rpicamsrc/meson.build: + rpicamsrc: add vchostif library as it is required to build successful + fix: undefined reference to `vc_gencmd' + /usr/src/debug/gstreamer1.0-plugins-good/1.18.1-r0/build/../gst-plugins-good-1.18.1/sys/rpicamsrc/RaspiCamControl.c:1440: undefined reference to `vc_gencmd' + Part-of: + +2020-11-25 17:51:24 +0100 Marijn Suijten + + * tests/check/elements/rtp-payloading.c: + tests/rtp-payloading: Use new AudioFormatInfo::fill_silence function + The function is renamed to be properly associated with AudioFormatInfo + (its instance) instead of AudioFormat (an unrelated enum), see [1] for + the rename itself. + [1]: https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/940 + +2020-11-24 22:11:50 +0530 Nirbheek Chauhan + + * gst/deinterlace/meson.build: + * meson.build: + deinterlace: Enable x86 assembly with nasm on MSVC + We need to remove x86inc.asm from the list of compiled assembly files + because it is not supposed to be compiled separately. It is directly + included by yadif.asm, and it exports no symbols. + The object file was getting ignored on all platforms except on msvc + where it was causing a linker hang when building with debugging + enabled because the object file had no debug symbols (or similar). + We've seen this before in FFmpeg too, which uses nasm: + https://gitlab.freedesktop.org/gstreamer/meson-ports/ffmpeg/-/merge_requests/46 + Part-of: + +2020-11-19 17:47:21 +1100 Matthew Waters + + * ext/qt/gstqtoverlay.cc: + * ext/qt/gstqtsink.cc: + qml: add some docs on display and contexts + Especially considering some dynamic pipeline scenarios. + Part-of: + +2020-11-18 20:09:24 +0100 Tim Schneider + + * sys/rpicamsrc/gstrpicamsrc.c: + rpicamsrc: Added "src->started = FALSE;" to gst_rpi_cam_src_stop + Makes the element reusable multiple times after a state change back to READY. + Fixes #105 + Part-of: + +2020-11-12 09:32:30 +0800 Bing Song + + * docs/gst_plugins_cache.json: + * sys/v4l2/gstv4l2object.c: + v4l2: caps negotiate wrong as interlace feature + gst_caps_simplify() will move interlace format before normal video + format. It will cause caps negotiate prefer interlaced caps which + isn't expected. Seperate normal caps and interlaced caps and then + merge it will keep prefer progress video format. + Add ARGB/BGRA for interlaced caps. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/802 + Part-of + Part-of: + +2020-11-13 21:25:42 +0100 Havard Graff + + * gst/rtpmanager/rtpsession.c: + * tests/check/elements/rtpsession.c: + rtpsession: never send on a non-internal source + This will end up as a "received" packet, due to the code in + source_push_rtp, which will think this is a packet being received. + Instead drop the packet and hope that either: + 1. Something upstream responds to the GstRTPCollision event and changes + SSRC used for sending. + 2. That the application responds to the "on-ssrc-collision" signal, and + forces the sender (payloader) to change its SSRC. + 3. That the BYE sent to the existing user of this SSRC will respond to + the BYE, and that we timeout this source, so we can continue sending + using the chosen SSRC. + The test reproduces a scenario where we previously would have sent + on a non-internal source. + Part-of: + +2020-11-13 12:39:53 +0100 Havard Graff + + * gst/rtpmanager/rtpsource.c: + rtpsource: rewrite timeout-check to avoid underflow + If current_time is < collision_timeout, we get an uint64 underflow, and + the check will trigger prematurely. + Part-of: + +2020-11-13 14:58:44 +0200 Vivia Nikolaidou + + * gst/audioparsers/gstaacparse.c: + aacparse: Fix caps change handling + In baseparse we set the fixed caps flag on all src pads, therefore the + source pad caps query in get_allowed_caps will return the current caps. + Current caps won't necessarily intersect with the new caps (e.g. sample + rate change). Replace get_allowed_caps with peer_query_caps. + Part-of: + +2020-11-12 23:39:21 +0000 Tim-Philipp Müller + + * tests/check/elements/qtdemux.c: + tests: qtdemux: fix typo in caps field + timesacle -> timescale + Part-of: + +2020-11-12 23:38:21 +0000 Tim-Philipp Müller + + * tests/check/elements/qtdemux.c: + tests: qtdemux: fix crash on 32-bit architectures + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/803 + Part-of: + +2020-09-14 13:12:50 +0530 Sanchayan Maity + + * docs/gst_plugins_cache.json: + * gst/rtp/gstrtp.c: + * gst/rtp/gstrtpldacpay.c: + * gst/rtp/gstrtpldacpay.h: + * gst/rtp/meson.build: + rtp: ldacpay: Add LDAC RTP payloader + Part-of: + +2020-11-03 15:58:30 +0200 Sebastian Dröge + + * ext/qt/gstqsgtexture.cc: + * ext/qt/gstqsgtexture.h: + * ext/qt/qtitem.cc: + qmlglsink: Keep old buffers around a bit longer if they were bound by QML + We don't know exactly when QML will stop using them but it should be + safe to unref them after at least 2 more buffers were bound. + Part-of: + +2020-11-10 18:18:12 +0000 ChrisDuncanAnyvision + + * gst/rtsp/gstrtspsrc.c: + * gst/rtsp/gstrtspsrc.h: + rtspsrc: Ensure same group-id used for both TCP/UDP stream-start events + Part-of: + +2020-11-10 16:17:23 +0000 ChrisDuncanAnyvision + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: Use consistent URI hashed stream-id for UDP and TCP/Interleaved streams + Part-of: + +2020-11-04 18:43:04 +0530 Nirbheek Chauhan + + * meson.build: + meson: Enable some MSVC warnings for parity with GCC/Clang + This makes it easier to do development with MSVC by making it warn + on common issues that GCC/Clang error out for in our CI configuration. + Continuation from https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/223 + Part-of: + +2020-10-15 21:42:40 -0400 Olivier Crête + + * docs/gst_plugins_cache.json: + * gst/rtpmanager/rtpsession.c: + * gst/rtpmanager/rtpsource.c: + * gst/rtpmanager/rtpsource.h: + * gst/rtpmanager/rtpstats.h: + rtpsource: Report for which local SSRC is a remote RB reporting on + This is useful in the Bundle case because there may be multiple local + and remote SSRCs in the same session. + Part-of: + +2020-10-29 15:58:38 +0100 Guillaume Desmottes + + * docs/gst_plugins_cache.json: + * gst/rtp/gstrtpisacdepay.c: + * gst/rtp/gstrtpisacpay.c: + docs: update plugins cache + Part-of: + +2020-03-20 13:15:33 +0100 Guillaume Desmottes + + * gst/rtp/gstrtp.c: + * gst/rtp/gstrtpisacdepay.c: + * gst/rtp/gstrtpisacdepay.h: + * gst/rtp/meson.build: + rtp: add rtpisacdepay + Depayload for the iSAC audio codec. + Part-of: + +2020-03-20 13:15:33 +0100 Guillaume Desmottes + + * gst/rtp/gstrtp.c: + * gst/rtp/gstrtpisacpay.c: + * gst/rtp/gstrtpisacpay.h: + * gst/rtp/meson.build: + rtp: add rtpisacpay + Payload for the iSAC audio codec. + Part-of: + +2020-11-01 18:36:49 +0000 Dinesh Manajipet + + * ext/qt/qtitem.cc: + qmlglsink: Set qtitem's implicit width/height + This can be useful to let the layouts automatically resize qtitem + and also easily query a video's width/height from QML + Part-of: + +2020-11-01 10:30:27 +0200 Sebastian Dröge + + * gst/flv/gstflvmux.c: + flvmux: Release pads via GstAggregator + See https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/797 + Part-of: + +2020-10-26 12:40:49 +1100 Matthew Waters + + * gst/isomp4/atoms.c: + * gst/isomp4/atoms.h: + * gst/isomp4/gstqtmux.c: + qtmux: support muxing multiple codec_data for h264/h265 + Each codec_data is put into its own SampleTableEntry inside the stsd. + Part-of: + +2020-10-29 14:54:16 +0100 Stéphane Cerveau + + * docs/gst_plugins_cache.json: + * gst/debugutils/gstnavseek.c: + * gst/debugutils/gstnavseek.h: + navseek: add hold_eos property + This property will tell the element to hold + the EOS event and keep it until the next + keystroke. + Part-of: + +2020-10-31 12:52:04 +1100 Jan Schmidt + + * tests/check/elements/splitmuxsrc.c: + splitmuxsrc: Fix comment in a test + Fix a comment in the splitmuxsrc robust muxing test so it + describes the test properly. + Part-of: + +2020-10-31 12:49:08 +1100 Jan Schmidt + + * gst/multifile/gstsplitmuxsink.c: + * gst/multifile/gstsplitmuxsink.h: + splitmuxsink: Change EOS catching logic. + Add a new state for ending the overall stream, and use it to decide + whether to pass the final EOS message up the bus instead of dropping + it. Fixes a small race that makes the testsuite sometimes not generate + the last fragment(s) sometimes because the wrong EOS gets + allowed through too early. + Part-of: + +2020-10-31 02:19:07 +1100 Jan Schmidt + + * gst/multifile/gstsplitmuxsink.c: + * gst/multifile/gstsplitmuxsink.h: + splitmuxsink: Don't use the element state lock + Using the element state lock to avoid splitmuxsink shutting + down while doing element manipulations can lead to a deadlock on + shutdown if a fragment switch happens at exactly the wrong moment. + Use a private mutex and a shutdown boolean instead. + Part-of: + +2020-10-30 03:38:15 +1100 Jan Schmidt + + * gst/multifile/gstsplitmuxsink.c: + splitmuxsink: Don't busy loop on a non-ready pad. + If a pad gets into the check_completed_gop method and then + the underlying conditions change on the reference context, + things could get stuck in a busy loop when the context should + instead jump back out and wait for more data. + Part-of: + +2020-10-30 03:36:51 +1100 Jan Schmidt + + * gst/multifile/gstsplitmuxsrc.c: + splitmuxsrc: Mark running=false on shutdown. + Make sure that any late gst_element_call_async() callbacks + know that the elements is shutting down and bail out instead + of operating on the element we're trying to stop. + Fixes a spurious test failure in elements_splitmuxsrc + Part-of: + +2020-10-29 02:36:35 +1100 Jan Schmidt + + * gst/multifile/gstsplitmuxsink.c: + splitmuxsink: Forward EOS messages from async fragments. + Re-enable forwarding EOS messages from fragments that are completing + asynchronously, so that splitmuxsink itself won't go EOS until they + are complete. This was disabled to work around a bug in core that + is fixed in + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/683 + Part-of: + +2020-09-17 22:56:01 +1000 Jan Schmidt + + * gst/multifile/gstsplitmuxsink.c: + * gst/multifile/gstsplitmuxsink.h: + splitmuxsink: Never start a new fragment with no reference buffers + If there has been no bytes from the reference stream muxed into + the current fragment, then time can't have advanced, there's no + GOP... this fragment would be broken or empty, so wait for some + data on the reference buffer. + Part-of: + +2020-10-29 02:38:16 +1100 Jan Schmidt + + * gst/isomp4/gstqtmux.c: + qtmux: Chain up when releasing pad, and fix some locking. + Release pads by calling up into aggregator so it can do the right + things. Don't clean up the pad until after that. + Add some missing locks around some accesses to shared pad state. + Part-of: + +2018-08-13 15:35:11 +0200 Stian Selnes + + * gst/rtp/gstrtpvp9depay.c: + * gst/rtp/gstrtpvp9depay.h: + * tests/check/elements/rtpvp9.c: + rtpvp9depay: Improve SVC parsing, aggregate all layers + - Fix start and end of picture to support multiple layers. Start of + picture is the first packet of the base layer, while end of picture + is when the marker bit is set (last packet of the enhancement + layers). + - All "layers" (aka "frames") of a picture are pushed downstream in a + single buffer when picture is complete. + - Forgive SID=0 for enhancement layers (invalid, but Chrome and + Firefox sends it) + Part-of: + +2020-10-30 03:09:48 +0100 Stian Selnes + + * gst/rtp/gstrtpvp8depay.c: + * gst/rtp/gstrtpvp8depay.h: + * tests/check/elements/rtpvp8.c: + rtpvp8depay: Send lost events when marker bit is missing + This means the previous frame was incomplete. + Part-of: + +2020-10-14 23:17:53 +0200 Knut Saastad + + * gst/rtp/gstrtpvp8depay.c: + * gst/rtp/gstrtpvp8pay.c: + rtpvp9depay: detect incomplete frames and bail out + If a packet with the B bit set arrives but we haven't received + a packet with the marker or E bits set to end the previous frame, + we know the current frame was incomplete. + Part-of: + +2020-10-14 23:17:53 +0200 Knut Saastad + + * gst/rtp/gstrtpvp9depay.c: + rtpvp9depay: detect incomplete frames and bail out + If a packet with the B bit set arrives but we haven't received + a packet with the marker or E bits set to end the previous frame, + we know the current frame was incomplete. + Part-of: + +2020-10-14 01:28:50 +0200 Mikhail Fludkov + + * gst/rtp/gstrtpvp8depay.c: + * gst/rtp/gstrtpvp8depay.h: + * gst/rtp/gstrtpvp9depay.c: + * gst/rtp/gstrtpvp9depay.h: + * tests/check/elements/rtpvp8.c: + * tests/check/elements/rtpvp9.c: + rtpvp*depay: possibly forward might-have-been-fec PacketLost events + This is ad adaptation of a Pexip patch for dealing with spurious + GstRTPPacketLost events caused by lost ulpfec packets: as FEC packets + under that scheme are spliced in the same sequence domain as the media + packets, it is not generally possible to determine whether a lost packet + was a FEC packet or a media packet. + When upstreaming pexip's ulpfec patches, we decided to drop all lost + events at the base depayloader level, and where the original patch + from pexip was making use of picture ids and marker bits to determine + whether a packet should be forwarded, this patch makes use of those + to determine whether they should be dropped instead (by removing their + might-have-been-fec field). + Spurious lost events coming out of the depayloader can cause the + decoder to stop decoding until the next keyframe and / or request a new + keyframe, and while this is not desirable it makes sense to forward + that information when we have other means to determine whether a lost + packet was indeed a FEC packet, as is the case with VP8 / VP9 payloads + when they carry a picture id. + Part-of: + +2020-10-20 23:22:36 +1100 Jan Schmidt + + * gst/rtp/gstrtph264depay.c: + rtph264depay: Preserve SPS/PPS arrival order. + Even if SPS/PPS haven't changed, make sure to move them to the + end of the tracking array if needed, so we always know what the + most recent entries are, in case we need to discard the oldest + when generating codec_data. + Part-of: + +2020-10-17 00:05:15 +1100 Jan Schmidt + + * gst/rtp/gstrtph264depay.c: + rtph264depay: Warn when max SPS/PPS are collected in AVC mode. + The AVC codec_data has a flaw that it can only accomodate + 31 SPS headers, even though H.264 can have 32, and 255 PPS, + when there can be 256 in H.264. When streaming RTP some + clients like to cycle through SPS/PPS ids when changing + configuration and can eventually accumulate a full set. + In that case, we have no choice but to discard one (oldest) + entry, or else the count written into the codec_data is wrong + and downstream decoding failures ensue. + Part-of: + +2020-10-28 00:29:05 +0100 Havard Graff + + * gst/rtpmanager/gstrtpjitterbuffer.c: + * gst/rtpmanager/rtptimerqueue.c: + * gst/rtpmanager/rtptimerqueue.h: + * tests/check/elements/rtpjitterbuffer.c: + * tests/check/elements/rtptimerqueue.c: + rtpjitterbuffer: don't send multiple instant RTX for the same packet + Due to us not properly acknowleding the time when the last RTX was sent + when scheduling a new one, it can easily happen that due to the packet + you are requesting have a PTS that is slightly old (but not too old when + adding the latency of the jitterbuffer), both its calculated second and + third (etc.) timeout could already have passed. This would lead to a burst + of RTX requests, which acts completely against its purpose, potentially + spending a lot more bandwidth than needed. + This has been properly reproduced in the test: + test_rtx_not_bursting_requests + The good news is that slightly re-thinking the logic concerning + re-requesting RTX, made it a lot simpler to understand, and allows us + to remove two members of the RtpTimer which no longer serves any purpose + due to the refactoring. If desirable the whole "delay" concept can actually + be removed completely from the timers, and simply just added to the timeout + by the caller of the API. But that can be a change for a another time. + The only external change (other than the improved behavior around bursting + RTX) is that the "delay" field now stricly represents the delay between + the PTS of the RTX-requested packet and the time it is requested on, + whereas before this calculation was more about the theoretical calculated + delay. This is visible in three other RTX-tests where the delay had + to be adjusted slightly. I am confident however that this change is + correct. + Part-of: + +2020-10-27 23:43:49 +1100 Jan Schmidt + + * gst/matroska/matroska-mux.c: + matroska-mux: Fix sparse stream crash + https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/656 + introduced an invalid memory access when debug is enabled, by casting + the wrong pointer to a GstCollectPad. Fixing that showed the original + change was incorrect and leads to an infinite loop in the + testsuite. This patch fixes both problems. + Part-of: + +2020-10-22 15:29:01 -0300 Thibault Saunier + + * ext/vpx/gstvpxenc.c: + vpx: Fix the check to unfixed/unknown framerate to set bitrate + 0/1 means unknown framerate not X/0 (which is illegal). + Part-of: + +2020-10-22 09:17:26 -0400 Arun Raghavan + + * gst/rtp/gstrtputils.c: + rtputils: Count metas with an empty tag list for copying/keeping + The GstMetaInfos registered in core do not set their tags to NULL, but + instead use an empty list (non-NULL list with a single NULL value). + Let's check explicitly for that so as to not miss some metas. + Part-of: + +2020-10-16 16:05:45 -0700 Bastien Reboulet + + * ext/qt/qtitem.cc: + qmlglsink: fix crash when created/destroyed in quick succession + The crash is caused by a race condition where the render thread + calls a method on the QtGLVideoItem instance that was + previously destroyed by the main thread. + Also, less frequently, QtGLVideoItem::onSceneGraphInitialized + is called when QQuickItem::window is null, also causing a crash. + Fixes #798 + Part-of: + +2020-10-19 18:23:25 +0300 Sebastian Dröge + + * sys/v4l2/gstv4l2videodec.c: + * sys/v4l2/gstv4l2videoenc.c: + v4l2codec: Garbage collect old frames if they accumulate because of codec bugs + Part-of: + +2020-10-19 17:56:04 +0300 Sebastian Dröge + + * sys/v4l2/gstv4l2bufferpool.c: + * sys/v4l2/gstv4l2bufferpool.h: + * sys/v4l2/gstv4l2sink.c: + * sys/v4l2/gstv4l2src.c: + * sys/v4l2/gstv4l2transform.c: + * sys/v4l2/gstv4l2videodec.c: + * sys/v4l2/gstv4l2videoenc.c: + v4l2codec: Pass system frame number as timestamp and use it to retrieve back frames reliably + System frame numbers are supposed to be unique and correct drivers are + passing through timestamps without modification from the output/sink to the + capture/src side. + Part-of: + +2020-09-24 13:13:00 -0400 Nicolas Dufresne + + * docs/gst_plugins_cache.json: + * gst/rtpmanager/gstrtpbin.c: + * gst/rtpmanager/gstrtpbin.h: + rtpbin: Add clear-ssrc action + This action signal will delegate to clear-ssrc onto the rtpssrcdemux element + associated with the session. This allow rtpbin users to clear pads and + elements for a specific ssrc that is known to no longer be in use. This + happens when a pad is reused in rtpsrc or ristsrc. + Part-of: + +2017-09-08 20:02:13 +0100 John-Mark Bell + + * gst/rtp/gstrtpvp8pay.c: + * gst/rtp/gstrtpvp8pay.h: + * tests/check/elements/rtpvp8.c: + * tests/check/meson.build: + rtpvp8pay: payload temporally scaled bitstreams. + Co-Authored-By: Vincent Sanders + Part-of: + +2017-11-17 15:11:41 +0100 Stian Selnes + + * docs/gst_plugins_cache.json: + * gst/rtp/gstrtpvp8pay.c: + * gst/rtp/gstrtpvp8pay.h: + rtpvp8pay: Add picture-id-offset property + Add property to set the initial value for picture-id. RFC7741 says + that picture-id MAY be initialized to a random value, thus it's also + valid to simply set it to a fixed initial value. A fixed value is very + useful for testing. + Default behavior is not changed. + Part-of: + +2017-03-16 15:23:28 +0100 Mikhail Fludkov + + * gst/rtp/gstrtpvp8pay.c: + rtpvp8pay: move duplicate code to separate functions + Two new functions to modify picture id: + gst_rtp_vp8_pay_picture_id_reset - picks random picture id of + appropriate bitsize + gst_rtp_vp8_pay_picture_id_increment - increments picture id taking + care of wrapping + Part-of: + +2017-09-08 08:13:05 +0100 John-Mark Bell + + * docs/gst_plugins_cache.json: + * ext/vpx/gstvpxenc.c: + vp8enc: expect bps for temporal-scalability-target-bitrate. + Consistency with target-bitrate is less surprising and with + modern libvpx additional configuration is required to make + temporal scaling work. + Part-of: + +2017-09-08 08:19:20 +0100 John-Mark Bell + + vp8enc: finish support for temporally scaled encoding + - introduce two new properties: + * temporal-scalability-layer-flags: + Provide fine-grained control of layer encoding to the + outside world. The flags sequence should be a multiple of + the periodicity and is indexed by a running count of encoded + frames modulo the sequence length. + * temporal-scalability-layer-sync-flags: + Specify the pattern of inter-layer synchronisation (i.e. + which of the frames generated by the layer encoding + specification represent an inter-layer synchronisation). + There must be one entry per entry in + temporal-scalability-layer-flags. + - apply temporal scalability settings and expose as buffer + metadata. + This allows the codec to allocate a given frame to the correct + internal bitrate allocator. Additionally, all the + non-bitstream metadata needed to payload a temporally scaled + stream is now attached to each output buffer as a + GstVideoVP8Meta. + - add unit test for temporally scaled encoding. + Part-of: + +2020-10-15 18:21:54 +0200 Stéphane Cerveau + + * gst/isomp4/qtdemux.c: + * gst/rtpmanager/gstrtpjitterbuffer.c: + * gst/udp/gstudp.c: + * meson.build: + meson: update glib minimum version to 2.56 + In order to support the symbol g_enum_to_string in various + project using GStreamer ( gst-validate etc.), the glib minimum + version should be 2.56.0. + Remove compat code as glib requirement + is now > 2.56 + Version used by Ubuntu 18.04 LTS + Part-of: + +2020-10-14 14:30:34 +0200 Mathieu Duponchelle + + * gst/rtpmanager/gstrtpst2022-1-fecenc.c: + rtpst2022-1-fecenc: fix input seqnum check + We need to cast the incremented last seqnum to guint16 for + consistent checks on wraparound + Part-of: + +2020-09-12 09:02:30 +0200 Jan Alexander Steffens (heftig) + + * gst/flv/gstflvmux.c: + * gst/flv/gstflvmux.h: + flvmux: Correct time types + - last_dts is in milliseconds, not nanoseconds as expected for + GstClockTime. Make it a generic guint64. + - Use GstClockTime for the fields that actually contain nanoseconds. + None of them should become negative. + Part-of: + +2020-10-09 09:31:27 +0300 Sebastian Dröge + + * gst/rtpmanager/gstrtpst2022-1-fecenc.c: + rtpst2022-1-fecenc: Don't unconditionally use GLib 2.60 APIs + g_queue_clear_full() in this case. + Part-of: + +2020-10-08 18:54:55 +0200 Mathieu Duponchelle + + * gst/rtp/rtpulpfeccommon.c: + rtpulpfec: fix potential alignment issue in xor function + https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/753#note_646453 + for context + Part-of: + +2020-10-06 03:03:13 +0200 Mathieu Duponchelle + + * docs/gst_plugins_cache.json: + * gst/rtpmanager/gstrtpbin.c: + * gst/rtpmanager/gstrtpbin.h: + * gst/rtpmanager/gstrtpmanager.c: + * gst/rtpmanager/gstrtpst2022-1-fecenc.c: + * gst/rtpmanager/gstrtpst2022-1-fecenc.h: + * gst/rtpmanager/meson.build: + * tests/check/elements/rtpst2022-1-fecenc.c: + * tests/check/meson.build: + rtpmanager: implement SMPTE 2022-1 FEC encoder + + improve integration of FEC encoders in rtpbin + Part-of: + +2020-10-06 03:13:30 +0200 Mathieu Duponchelle + + * docs/gst_plugins_cache.json: + * gst/rtpmanager/gstrtpbin.c: + * gst/rtpmanager/gstrtpbin.h: + * gst/rtpmanager/gstrtpmanager.c: + * gst/rtpmanager/gstrtpst2022-1-fecdec.c: + * gst/rtpmanager/gstrtpst2022-1-fecdec.h: + * gst/rtpmanager/meson.build: + * tests/check/elements/rtpst2022-1-fecdec.c: + * tests/check/meson.build: + rtpmanager: implement SMPTE 2022-1 FEC decoder + + improve integration of FEC decoders in rtpbin + Part-of: + +2020-07-08 17:28:31 -0400 Olivier Crête + + * gst/rtpmanager/gstrtpfunnel.c: + * tests/check/elements/rtpfunnel.c: + rtpfunnel: Also forward custom sticky event + This is useful to track metadata about each group of packets + Also include a unit test + Part-of: + +2020-09-29 09:44:54 -0300 Thibault Saunier + + * docs/gst_plugins_cache.json: + * gst/isomp4/gstqtmux-doc.c: + * gst/isomp4/gstqtmux.c: + * gst/isomp4/gstqtmuxmap.c: + isomp4: Rename GstQTMux to GstBaseQTMux to avoid breaking API + Since 52b63de19ada283c1180c8fc00cacb1465fdf10f the qtmux GType was + renamed GstQTMuxElement which breaks presets, revert that change. + Part-of: + +2020-09-28 18:25:21 +0300 Sebastian Dröge + + * gst/rtp/gstrtpdvpay.c: + * gst/rtp/gstrtph261pay.c: + * gst/rtp/gstrtph263pay.c: + * gst/rtp/gstrtph263ppay.c: + * gst/rtp/gstrtph264pay.c: + * gst/rtp/gstrtph265pay.c: + * gst/rtp/gstrtpj2kpay.c: + * gst/rtp/gstrtpjpegpay.c: + * gst/rtp/gstrtpklvpay.c: + * gst/rtp/gstrtpmp4vpay.c: + * gst/rtp/gstrtpmpvpay.c: + * gst/rtp/gstrtptheorapay.c: + * gst/rtp/gstrtpvp8pay.c: + * gst/rtp/gstrtpvp9pay.c: + rtp: Fix allocations to support source-info property + Use gst_rtp_base_payload_allocate_output_buffer() instead of + gst_rtp_buffer_new_allocate() in order to allocate RTP buffer with + correct number of CSRCs according to the meta. + Part-of: + +2015-10-23 11:08:56 +0200 Stian Selnes + + * gst/rtp/gstrtpvp8pay.c: + rtpvp8pay: Fix allocation to support source-info property + Use gst_rtp_base_payload_allocate_output_buffer() in order to allocate + RTP buffer with correct number of CSRCs according to the meta. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/314 + Part-of: + +2020-09-28 15:36:00 +1000 Matthew Waters + + * gst/isomp4/gstqtmux.c: + qtmux: output the correct limits in error messages + Having the current bytes being less than the limit was confusing! + Part-of: + +2020-07-31 16:47:37 +1000 Matthew Waters + + * gst/isomp4/gstqtmux.c: + * gst/isomp4/gstqtmux.h: + * tests/check/elements/qtmux.c: + qtmux: properly support initial caps nego failure + Scenario: + - gap event causes h264parse to push made up caps that may fail checks + inside qtmux (e.g missing codec_data). + - the caps event has already been marked as received and is sticky on + the sink pad + - gst_qt_mux_pad_can_renegotiate() will retrieve the failed caps event + using gst_pad_get_current_caps() and reject the correct updated caps + with codec_data. + - Failure! + Keep track of the configured caps ourselves instead of relying on the + sticky event on the pad. + Part-of: + +2020-07-22 15:34:44 +1000 Matthew Waters + + * gst/isomp4/gstqtmux.c: + * gst/isomp4/gstqtmux.h: + qtmux: support non-seekable downstream mode + Write an mdat per buffer in that case. + Part-of: + +2020-09-23 15:25:36 -0400 Nicolas Dufresne + + * gst/rtpmanager/gstrtpbin.c: + rtpbin: Remove the rtpjitterbuffer with the stream + Since !348, the jitterbuffer was only removed with the session. This restores + the original behaviour and removes the jitterbuffer when the stream is + removed. This avoid accumulating jitterbuffer objects into the bin when a + session is reused. + Part-of: + +2020-09-23 13:26:51 -0400 Nicolas Dufresne + + * gst/rtpmanager/gstrtpbin.c: + rtpbin: Cleanup dead code + The rtpjitterbuffer is now part of the session elements, we no longer need + to do the ref_sink dance when signalling it. It is already owned by the bin + when signalled. Also, the code that handles generic session elements already + handle the ref_sink() calls since: + 03dc22951bacb6fdc3868c8f801e6a52c33a745f + Part-of: + +2020-09-18 16:09:20 +1000 Matthew Waters + + * gst/rtp/gstrtph264depay.c: + * gst/rtp/gstrtph264depay.h: + * gst/rtp/gstrtph265depay.c: + * gst/rtp/gstrtph265depay.h: + * tests/check/elements/rtph264.c: + rtph26*depay: drop FU's without a corresponding start bit + If we have not received a FU with a start bit set, any subsequent FU + data is not useful at all and would result in an invalid stream. + This case is constructed from multiple requirements in + RFC 3984 Section 5.8 and RFC 7798 Section 4.4.3. Following are excerpts + from RFC 3984 but RFC 7798 contains similar language. + The FU in a single FU case is forbidden: + A fragmented NAL unit MUST NOT be transmitted in one FU; i.e., the + Start bit and End bit MUST NOT both be set to one in the same FU + header. + and dropping is possible: + If a fragmentation unit is lost, the receiver SHOULD discard all + following fragmentation units in transmission order corresponding to + the same fragmented NAL unit. + The jump in seqnum case is supported by this from the specification + instead of implementing the forbidden_zero_bit mangling: + If a fragmentation unit is lost, the receiver SHOULD discard all + following fragmentation units in transmission order corresponding to + the same fragmented NAL unit. + A receiver in an endpoint or in a MANE MAY aggregate the first n-1 + fragments of a NAL unit to an (incomplete) NAL unit, even if fragment + n of that NAL unit is not received. In this case, the + forbidden_zero_bit of the NAL unit MUST be set to one to indicate a + syntax violation. + Part-of: + +2020-09-20 21:06:19 +0900 Seungha Yang + + * gst/imagefreeze/gstimagefreeze.c: + imagefreeze: Response caps query from srcpad + ... and chain up to default query handler for unhandled query types. + Unhandled query shouldn't be returned with FALSE if there's no special needs. + Part-of: + +2020-09-16 12:15:09 +1000 Matthew Waters + + * docs/gst_plugins_cache.json: + * gst/isomp4/gstqtmux-doc.c: + * gst/isomp4/gstqtmux-doc.h: + * gst/isomp4/gstqtmux.c: + * gst/isomp4/gstqtmux.h: + qtmux: make documentation happy + introduce a base qtmux class that we can install documentation snippets + on instead of duplicating across alll the isomp4 elements + Part-of: + +2020-05-28 19:40:24 +1000 Matthew Waters + + * docs/gst_plugins_cache.json: + * gst/isomp4/atoms.c: + * gst/isomp4/atoms.h: + * gst/isomp4/gstqtmux.c: + * gst/isomp4/gstqtmux.h: + * gst/isomp4/gstqtmuxmap.c: + * tests/check/elements/qtmux.c: + isomp4/mux: add a fragment mode for initial moov with data + Used by some proprietary software for their fragmented files. + Adds some support for multi-stream fragmented files + Flow is as follows. + 1. The first 'fragment' is written as a self-contained fragmented + mdat+moov complete with an edit list and durations, tags, etc. + 2. Subsequent fragments are written with a mdat+moof and each stream is + interleaved as data arrives (currently ignoring the interleave-* + properties). data-offsets in both the traf and the trun ensure + data is read from the correct place on demuxing. Data/chunk offsets + are also kept for writing out the final moov. + 3. On finalisation, the initial moov is invalidated to a hoov and the + size of the first mdat is extended to cover the entire file contents. + Then a moov is written as regularly would in moov-at-end mode (the + default). + This results in a file that is playable throughout while leaving a + finalised file on completion for players that do not understand + fragmented mp4. + Part-of: + +2020-06-25 16:37:56 +1000 Matthew Waters + + * gst/isomp4/qtdemux.c: + qtdemux: increase some logging on streams and sample parsing + Part-of: + +2020-06-25 16:35:45 +1000 Matthew Waters + + * gst/isomp4/qtdemux.c: + qtdemux: bail out when encountering an atom with a size of 0 + A size 0 atom means the atom extends to the end of the file. No further + valid atoms will ever follow. Avoids a subsequent scan for an atom from + one byte earlier after encountering a size 0 atom. + Part-of: + +2020-06-25 16:33:04 +1000 Matthew Waters + + * gst/isomp4/qtdemux.c: + qtdemux: fix subsequent moof parsing after moov with valid samples + reset the moof_offset back to its original value like is done in the + error case just before. + Fixes subsequent parsing of a moof following a moov that contains valid + samples in a non-streaming fragmented mp4. + Part-of: + +2020-06-25 16:30:28 +1000 Matthew Waters + + * gst/isomp4/qtdemux.c: + qtdemux: extend edit list when fragmented + When we are fragmented, the edit list may only refer to the portion of + the media that is in the moov. Extend the edit list stop time when we + if there is only one qt segment and we are reading a fragmented file. + Fixes playback of some fragmented mp4 files generated by proprietary + programs. + Part-of: + +2020-09-15 14:22:13 -0400 Nicolas Dufresne + + * meson_options.txt: + meson: Allow overriding qt5 feature + This will allow controlling that feature from gst-build + Part-of: + +2015-11-17 19:14:01 -0500 Olivier Crête + + * gst/multifile/gstsplitmuxsrc.c: + splitmuxsrc: Implement segment query + Fixes #239 + Part-of: + +2020-09-14 10:15:35 +0300 Sebastian Dröge + + * docs/gst_plugins_cache.json: + * gst/rtp/gstrtpmp4gdepay.c: + rtpmp4gdepay: Allow lower-case "aac-hbr" instead of correct "AAC-hbr" + Various live555 based products are using the wrong "mode" string or + seem to assume case-insensitive matching, which is wrong. + Examples for this are the Yuan SC6C0N1 mini and the Kiloview E2. + Part-of: + +2020-05-02 02:21:00 +0200 Stefan Brüns + + * gst/isomp4/qtdemux.c: + qtdemux: Add support for AAX encrypted audio streams + This is modelled after the DASH Common Encryption scheme, but is somewhat + simpler as more parts are fixed, i.e. just one encryption scheme. + The output caps are fixed to 'application/x-aavd'. All information + required for decryption are part of the 'adrm' atom, which is passed + on as a property. The property is attached to the buffer. + Part-of: + +2020-05-02 02:20:44 +0200 Stefan Brüns + + * gst/isomp4/fourcc.h: + * gst/isomp4/qtdemux.c: + * gst/isomp4/qtdemux_types.c: + qtdemux: Add 'aavd' and related fourcc codes for AAX encrypted audio + The 'aavd' box is contained in the 'stsd' sample description. The 'aavd' + box follows the layout of an 'mp4a' entry, i.e. it contains a single + standard 'esds' extension box, and the two proprietary 'adrm' and 'aabd' + extension boxes. + Part-of: + +2014-06-23 08:46:37 +0200 Haakon Sporsheim + + * ext/vpx/gstvp8dec.c: + * ext/vpx/gstvp9dec.c: + * ext/vpx/gstvpxdec.c: + * ext/vpx/gstvpxdec.h: + vpxdec: request a sync point on decoder errors + Part-of: + +2020-09-13 18:31:57 +0200 Camilo Celis Guzman + + * gst/rtp/gstrtpvrawpay.c: + rtp/vrawpay: use alloc_output_buffer from base class + Part-of: + +2020-09-07 23:20:58 +0800 Ricky Tang + + * docs/gst_plugins_cache.json: + * gst/rtsp/gstrtspsrc.c: + rtspsrc: Fix push-backchannel-buffer parameter mismatch + When using python, signal parameter must match with function. + Part-of: + +2020-09-10 11:24:32 +0200 Jérôme Laheurte + + * ext/jpeg/gstjpegdec.c: + jpegdec: check buffer size before dereferencing. Fixes #541 + Some cameras (Panacast) have buggy drivers/firmware which send + invalid JPEG frames, containing no data, which makes jpegdec + crash because it assumes the frame is at least 2 bytes long. + Part-of: + +2020-09-10 11:11:00 +0200 Jan Alexander Steffens (heftig) + + * gst/flv/gstflvmux.c: + flvmux: Improve logging of gst_flv_mux_buffer_to_tag_internal + Part-of: + +2020-09-09 15:12:53 +0200 Jan Alexander Steffens (heftig) + + * gst/flv/gstflvmux.c: + flvmux: Move stream skipping to GstAggregatorPadClass.skip_buffer + Besides looking like the correct place to put this, it allows us to drop + the entire aggregator queue. The old implementation only dropped at most + one buffer for each call of aggregate. + Part-of: + +2020-09-08 17:35:50 +0200 Havard Graff + + * sys/v4l2/gstv4l2object.c: + v4l2object: plug memory-leak + Part-of: + +2020-08-28 18:09:15 +0200 Mathieu Duponchelle + + * docs/gst_plugins_cache.json: + * ext/vpx/gstvp9enc.c: + * ext/vpx/gstvp9enc.h: + * ext/vpx/meson.build: + vp9enc: expose row-mt property + With recent libvpx versions, multithreading can be enabled on + a per-tile basis, instead of on a per tile-column basis. + In combination with the new tile-rows property, this allows the + encoder to make much better use of the available CPU power. + Bump minimum libvpx version to 1.7.0 + Part-of: + +2020-08-28 17:45:48 +0200 Mathieu Duponchelle + + * docs/gst_plugins_cache.json: + * ext/vpx/gstvpxenc.c: + vpxenc: change default for deadline to good quality + Having the deadline set to best quality causes the encoder + to be absurdly slow, most real-life users will want the good + quality tradeoff instead. + Part-of: + +2020-08-28 17:39:47 +0200 Mathieu Duponchelle + + * docs/gst_plugins_cache.json: + * ext/vpx/gstvp9enc.c: + * ext/vpx/gstvp9enc.h: + vp9enc: expose tile-columns and tile-rows properties + Based on patch by Stian Selnes . + Part-of: + +2020-08-28 17:35:26 +0200 Mathieu Duponchelle + + * ext/vpx/gstvpxenc.c: + * ext/vpx/gstvpxenc.h: + vpxenc: add configure_encoder virtual method + For subclasses to expose format-specific properties + Part-of: + +2020-09-08 20:57:33 +0200 Mathieu Duponchelle + + * gst/multifile/gstsplitmuxsink.c: + splitmuxsink: fix sink pad release while PLAYING + - Release the split mux lock while removing the probes + - Flush the sinkpad to unblock other pads + - Turn check_completed_gop into a do while statement, when + waking up we want to recheck whether the current GOP is + ready for sending + Part-of: + +2017-10-31 09:40:33 +0000 John-Mark Bell + + * tests/check/elements/vp8enc.c: + vp8enc: improve unit tests + - make test_encode_simple cope with libvpx built with + CONFIG_REALTIME_ONLY. Sadly, there's no way to detect this at + runtime beyond trying to set lag-in-frames to >0, pushing a + buffer and catching the GST_FLOW_NOT_NEGOTIATED return. + - fix bitrot in test_encode_simple_when_bitrate_set_to_zero. + - port test_encode_simple to GstHarness and introduce a separate + test for the lag-in-frames property. + Part-of: + +2020-08-21 16:03:09 +0200 Jakub Adam + + * docs/gst_plugins_cache.json: + docs: Update plugin cache + Part-of: + +2020-03-24 19:35:07 +0100 Jakub Adam + + * ext/vpx/gstvp9dec.c: + * ext/vpx/gstvp9enc.c: + * ext/vpx/gstvpxenc.c: + vpx: Support GST_VIDEO_FORMAT_I422_10LE + Part-of: + +2020-03-24 17:16:59 +0100 Jakub Adam + + * ext/vpx/gstvp9dec.c: + * ext/vpx/gstvp9enc.c: + * ext/vpx/gstvpxenc.c: + vpx: Support GST_VIDEO_FORMAT_I420_10LE + Part-of: + +2020-03-23 21:44:30 +0100 Jakub Adam + + * ext/vpx/gstvp9enc.c: + * ext/vpx/gstvpxenc.c: + vp9enc: support GST_VIDEO_FORMAT_Y444 + Part-of: + +2020-09-08 17:30:35 +0100 Tim-Philipp Müller + + * .gitlab-ci.yml: + ci: include template from gst-ci master branch again + +2020-09-08 16:58:37 +0100 Tim-Philipp Müller + + * docs/gst_plugins_cache.json: + * meson.build: + Back to development + +=== release 1.18.0 === + +2020-09-08 00:05:14 +0100 Tim-Philipp Müller + + * .gitlab-ci.yml: + * ChangeLog: + * NEWS: + * README: + * RELEASE: + * docs/gst_plugins_cache.json: + * gst-plugins-good.doap: * meson.build: Release 1.18.0 diff --git a/NEWS b/NEWS index dba9c7c471..cc6c3b4a8e 100644 --- a/NEWS +++ b/NEWS @@ -1,11 +1,23 @@ -GStreamer 1.18 Release Notes +GStreamer 1.20 Release Notes -GStreamer 1.18.0 was originally released on 7 September 2020. +GStreamer 1.20 has not been released yet. It is scheduled for release +around July 2021. -See https://gstreamer.freedesktop.org/releases/1.18/ for the latest +1.19.x is the unstable development version that is being developed in +the git master branch and which will eventually result in 1.20, and +1.19.1 is the current development release in that series + +It is expected that feature freeze will be around June/July 2021, +followed by several 1.19 pre-releases and the new 1.20 stable release +around July 2021. + +1.20 will be backwards-compatible to the stable 1.18, 1.16, 1.14, 1.12, +1.10, 1.8, 1.6,, 1.4, 1.2 and 1.0 release series. + +See https://gstreamer.freedesktop.org/releases/1.20/ for the latest version of this document. -Last updated: Monday 7 September 2020, 10:30 UTC (log) +Last updated: Sunday 30 May 2021, 16:00 UTC (log) Introduction @@ -18,1639 +30,87 @@ fixes and other improvements. Highlights -- GstTranscoder: new high level API for applications to transcode - media files from one format to another - -- High Dynamic Range (HDR) video information representation and - signalling enhancements - -- Instant playback rate change support - -- Active Format Description (AFD) and Bar Data support - -- ONVIF trick modes support in both GStreamer RTSP server and client - -- Hardware-accelerated video decoding on Windows via DXVA2 / - Direct3D11 - -- Microsoft Media Foundation plugin for video capture and - hardware-accelerated video encoding on Windows - -- qmlgloverlay: New overlay element that renders a QtQuick scene over - the top of an input video stream - -- New imagesequencesrc element to easily create a video stream from a - sequence of jpeg or png images - -- dashsink: Add new sink to produce DASH content - -- dvbsubenc: DVB Subtitle encoder element - -- TV broadcast compliant MPEG-TS muxing with constant bitrate muxing - and SCTE-35 support - -- rtmp2: new RTMP client source and sink element implementation - -- svthevcenc: new SVT-HEVC-based H.265 video encoder - -- vaapioverlay compositor element using VA-API - -- rtpmanager support for Google’s Transport-Wide Congestion Control - (twcc) RTP extension - -- splitmuxsink and splitmuxsrc gained support for auxiliary video - streams - -- webrtcbin now contains some initial support for renegotiation - involving stream addition and removal - -- New RTP source and sink elements to easily set up RTP streaming via - rtp:// URIs - -- New Audio Video Transport Protocol (AVTP) plugin for Time-Sensitive - Applications - -- Support for the Video Services Forum’s Reliable Internet Stream - Transport (RIST) TR-06-1 Simple Profile - -- Universal Windows Platform (UWP) support - -- rpicamsrc element for capturing from the Raspberry Pi camera - -- RTSP Server TCP interleaved backpressure handling improvements as - well as support for Scale/Speed headers - -- GStreamer Editing Services gained support for nested timelines, - per-clip speed rate control and the OpenTimelineIO format. - -- Autotools build system has been removed in favour of Meson +- this section will be completed in due course Major new features and changes Noteworthy new features and API -Instant playback rate changes - -Changing the playback rate as quickly as possible so far always required -a flushing seek. This generally works, but has the disadvantage of -flushing all data from the playback pipeline and requiring the demuxer -or parser to do a full-blown seek including resetting its internal state -and resetting the position of the data source. It might also require -considerable decoding effort to get to the right position to resume -playback from at the higher rate. - -This release adds a new mechanism to achieve quasi-instant rate changes -in certain playback pipelines without interrupting the flow of data in -the pipeline. This is activated by sending a seek with the -GST_SEEK_FLAG_INSTANT_RATE_CHANGE flag and start_type = stop_type = -GST_SEEK_TYPE_NONE. This flag does not work for all pipelines, in which -case it is necessary to fall back to sending a full flushing seek to -change the playback rate. When using this flag, the seek event is only -allowed to change the current rate and can modify the trickmode flags -(e.g. keyframe only or not), but it is not possible to change the -current playback position, playback direction or do a flush. - -This is particularly useful for streaming use cases like HLS or DASH -where the streaming download should not be interrupted when changing -rate. - -Instant rate changing is handled in the pipeline in a specific sequence -which is detailed in the seeking design docs. Most elements don’t need -to worry about this, only elements that sync to the clock need some -special handling which is implemented in the GstBaseSink base class, so -should be taken care of automatically in most normal playback pipelines -and sink elements. - -See Jan’s GStreamer Conference 2019 talk “Changing Playback Rate -Instantly” for more information. - -You can try this feature by passing the -i command line option to -gst-play-1.0. It is supported at least by qtdemux, tsdemux, hlsdemux, -and dashdemux. - -Google Transport-Wide Congestion Control - -rtpmanager now supports the parsing and generating of RTCP messages for -the Google Transport-Wide Congestion Control RTP Extension, as described -in: -https://tools.ietf.org/html/draft-holmer-rmcat-transport-wide-cc-extensions-01. - -This “just” provides the required plumbing/infrastructure, it does not -actually make effect any actual congestion control on the sender side, -but rather provides information for applications to use to make such -decisions. - -See Håvard’s “Google Transport-Wide Congestion Control” talk for more -information about this feature. - -GstTranscoder: a new high-level transcoding API for applications - -The new GstTranscoder library, along with transcodebin and -uritranscodebin elements, provides high level API for applications to -transcode media files from one format to another. Watch Thibault’s talk -“GstTranscoder: A High Level API to Quickly Implement Transcoding -Capabilities in your Applications” for more information. - -This also comes with a gst-transcoder-1.0 command line utility to -transcode one URI into another URI based on the specified encoding -profile. - -Active Format Description (AFD) and Bar Data support - -The GstVideo Ancillary Data API has gained support for Active Format -Description (AFD) and Bar data. - -This includes various two new buffer metas: GstVideoAFDMeta and -GstVideoBarMeta. - -GStreamer now also parses and extracts AFD/Bar data in the h264/h265 -video parsers, and supports both capturing them and outputting them in -the decklink elements. See Aaron’s lightning talk at the GStreamer -Conference for more background. - -ONVIF trick modes support in both GStreamer RTSP server and client - -- Support for the various trick modes described in section 6 of the - ONVIF streaming spec has been implemented in both gst-rtsp-server - and rtspsrc. -- Various new properties in rtspsrc must be set to take advantage of - the ONVIF support -- Examples are available here: test-onvif-server.c and - test-onvif-client.c -- Watch Mathieu Duponchelle’s talk “Implementing a Trickmode Player - with ONVIF, RTSP and GStreamer” for more information and a live - demo. - -GStreamer Codecs library with decoder base classes - -This introduces a new library in gst-plugins-bad which contains a set of -base classes that handle bitstream parsing and state tracking for the -purpose of decoding different codecs. Currently H264, H265, VP8 and VP9 -are supported. These bases classes are meant primarily for internal use -in GStreamer and are used in various decoder elements in connection with -low level decoding APIs like DXVA, NVDEC, VAAPI and V4L2 State Less -decoders. The new library is named gstreamer-codecs-1.0 / -libgstcodecs-1.0 and is not yet guaranteed to be API stable across major -versions. - -MPEG-TS muxing improvements - -The GStreamer MPEG-TS muxer has seen major improvements on various -fronts in this cycle: - -- It has been ported to the GstAggregator base class which means it - can work in defined-latency mode with live input sources and - continue streaming if one of the inputs stops producing data. - -- atscmux, a new ATSC-specific tsmux subclass - -- Constant Bit Rate (CBR) muxing support via the new bitrate property - which allows setting the target bitrate in bps. If this is set the - muxer will insert null packets as padding to achieve the desired - multiplex-wide constant bitrate. - -- compliance fixes for TV broadcasting use cases (esp. ATSC). See - Jan’s talk “TV Broadcast compliant MPEG-TS” for details. - -- Streams can now be added and removed at runtime: Until now, any - streams in tsmux had to be present when the element started - outputting its first buffer. Now they can appear at any point during - the stream, or even disappear and reappear later using the same PID. - -- new pcr-interval property allows applications to configure the - desired interval instead of hardcoding it - -- basic SCTE-35 support. This is enabled by setting the scte-35-pid - property on the muxer. Sending SCTE-35 commands is then done by - creating the appropriate SCTE-35 GstMpegtsSection and sending them - on the muxer. - -- MPEG-2 AAC handling improvements +- this section will be filled in in due course New elements -- New qmlgloverlay element for rendering a QtQuick scene over the top - of a video stream. qmlgloverlay requires that Qt support adopting an - external OpenGL context and is known to work on X11 and Windows. - Wayland is known not to work due to limitations within Qt. Check out - the example to see how it works. - -- The clocksync element is a generic element that can be placed in a - pipeline to synchronise passing buffers to the clock at that point. - This is similar to identity sync=true, but because it isn’t - GstBaseTransform-based, it can process GstBufferLists without - breaking them into separate GstBuffers. It is also more discoverable - than the identity option. Note that you do not need to insert this - element into your pipeline to make GStreamer sync to the pipeline - clock, this is usually handled automatically by the elements in the - pipeline (sources and sinks mostly). This element is useful to feed - non-live input such as local files into elements that expect live - input such as webrtcbin.` - -- New imagesequencesrc element to easily create a video stream from a - sequence of JPEG or PNG images (or any other encoding where the type - can be detected), basically a multifilesrc made specifically for - image sequences. - -- rpicamsrc element for capturing raw or encoded video (H.264, MJPEG) - from the Raspberry Pi camera. This works much like the popular - raspivid command line utility but outputs data nicely timestamped - and formatted in order to integrate nicely with other GStreamer - elements. Also comes with a device provider so applications can - discover the camera if available. - -- aatv and cacatv video filters that transform video ASCII art style - -- avtp: new Audio Video Transport Protocol (AVTP) plugin for Linux. - See Andre Guedes’ talk “Audio/Video Bridging (AVB) support in - GStreamer” for more details. - -- clockselect: a pipeline element that enables clock selection/forcing - via gst-launch pipeline syntax. - -- dashsink: Add new sink to produce DASH content. See Stéphane’s talk - or blog post for details. - -- dvbsubenc: a DVB subtitle encoder element - -- microdns: a libmicrodns-based mdns device provider to discover RTSP - cameras on the local network - -- mlaudiosink: new audio sink element for the Magic Leap platform, - accompanied by an MLSDK implementation in the amc plugin - -- msdkvp9enc: VP9 encoder element for the Intel MediaSDK - -- rist: new plugin implementing support for the Video Services Forum’s - Reliable Internet Stream Transport (RIST) TR-06-1 Simple Profile. - See Nicolas’ blog post “GStreamer support for the RIST - Specification” for more details. - -- rtmp2: new RTMP client source and sink elements with fully - asynchronous network operations, better robustness and additional - features such as handling ping and stats messages, and adobe-style - authentication. The new rtmp2src and rtmp2sink elements should be - API-compatible with the old rtmpsrc / rtmpsink elements and should - work as drop-in replacements. - -- new RTP source and sink elements to easily set up RTP streaming via - rtp:// URIs: The rtpsink and rtpsrc elements add an URI interface so - that streams can be decoded with decodebin using rtp:// URIs. These - can be used as follows: ``` gst-launch-1.0 videotestsrc ! x264enc ! - rtph264pay config-interval=3 ! rtpsink uri=rtp://239.1.1.1:1234 - - gst-launch-1.0 videotestsrc ! x264enc ! rtph264pay config-interval=1 - ! rtpsink uri=rtp://239.1.2.3:5000 gst-launch-1.0 rtpsrc - uri=rtp://239.1.2.3:5000?encoding-name=H264 ! rtph264depay ! - avdec_h264 ! videoconvert ! xvimagesink - - gst-launch-1.0 videotestsrc ! avenc_mpeg4 ! rtpmp4vpay - config-interval=1 ! rtpsink uri=rtp://239.1.2.3:5000 gst-launch-1.0 - rtpsrc uri=rtp://239.1.2.3:5000?encoding-name=MP4V-ES ! rtpmp4vdepay - ! avdec_mpeg4 ! videoconvert ! xvimagesink ``` - -- svthevcenc: new SVT-HEVC-based H.265 video encoder - -- switchbin: new helper element which chooses between a set of - processing chains (paths) based on input caps, and changes the - active chain if new caps arrive. Paths are child objects, which are - accessed by the GstChildProxy interface. See the switchbin - documentation for a usage example. - -- vah264dec: new experimental va plugin with an element for H.264 - decoding with VA-API using GStreamer’s new stateless decoder - infrastructure (see Linux section below). - -- v4l2codecs: introduce an V4L2 CODECs Accelerator supporting the new - CODECs uAPI in the Linux kernel (see Linux section below) - -- zxing new plugin to detect QR codes and barcodes, based on libzxing - -- also see the Rust plugins section below which contains plenty of new - exciting plugins written in Rust! +- this section will be filled in in due course New element features and additions -GStreamer core - -- filesink: Add a new “full” buffer mode. Previously the default and - full modes were the same. Now the default mode is like before: it - accumulates all buffers in a buffer list until the threshold is - reached and then writes them all out, potentially in multiple - writes. The new full mode works by always copying memory to a single - memory area and writing everything out with a single write once the - threshold is reached. - -- multiqueue: Add stats property and - current-level-{buffers, bytes, time} pad properties to query the - current levels of the corresponding internal queue. - -Plugins Base - -- alsa: implement a device provider - -- alsasrc: added use-driver-timestamp property to force use of - pipeline timestamps (and disable driver timestamps) if so desired - -- audioconvert: fix changing the mix-matrix property at runtime - -- appsrc: added support for segment forwarding or custom GstSegments - via GstSample, enabled via the handle-segment-change property. This - only works for segments in TIME format for now. - -- compositor: various performance optimisations, checkerboard drawing - fixes, and support for VUYA format - -- encodebin: Fix and refactor smart encoding; ensure that a single - segment is pushed into encoders; improve force-key-unit event - handling. - -- opusenc: Add low delay option (audio-type=restricted-lowdelay) to - disable the SILK layer and achieve only 5ms delay. - -- opusdec: add stats property to retrieve various decoder statistics. - -- uridecodebin3: Let decodebin3 do its stream selection if no one - answers - -- decodebin3: Avoid overriding explicit user selection of streams - -- playbin: add flag to force use of software decoders over any - hardware decoders that might also be available - -- playbin3, playbin: propagate sink context - -- rawvideoparse: Fix tiling support, allow setting colorimetry - -- subparse: output plain utf8 text instead of pango-markup formatted - text if downstream requires it, useful for interop with elements - that only accept utf8-formatted subtitles such as muxers or closed - caption converters. - -- tcpserversrc, tcpclientsrc: add stats property with TCP connection - stats (some are only available on Linux though) - -- timeoverlay: add show-times-as-dates, datetime-format and - datetime-epoch properties to display times with dates - -- videorate: Fix changing rate property during playback; reverse - playback fixes; update QoS events taking into account our rate - -- videoscale: pass through and transform size sensitive metas instead - of just dropping them - -Plugins Good - -- avidemux can handle H.265 video now. Our advice remains to - immediately cease all contact and communication with anyone who - hands you H.265 video in an AVI container, however. - -- avimux: Add support for S24LE and S32LE raw audio and v210 raw video - formats; support more than 2 channels of raw audio. - -- souphttpsrc: disable session sharing and cookie jar when the cookies - property is set; correctly handle seeks past the end of the content - -- deinterlace: new YADIF deinterlace method which should provide - better quality than the existing methods and is LGPL licensed; - alternate fields are supported as input to the deinterlacer as well - now, and there were also fixes for switching the deinterlace mode on - the fly. - -- flvmux: in streamable mode allow adding new pads even if the initial - header has already been written. Old clients will only process the - initial stream, new clients will get a header with the new streams. - The skip-backwards-streams property can be used to force flvmux to - skip and drop a few buffers rather than produce timestamps that go - backward and confuse librtmp-based clients. There’s also better - handling for timestamp rollover when streaming for a long time. - -- imagefreeze: Add live mode, which can be enabled via the new is-live - property. In this mode frames will only be output in PLAYING state - according to the negotiated framerate, skipping frames if the output - can’t keep up (e.g. because it’s blocked downstream). This makes it - possible to actually use imagefreeze in live pipelines without - having to manually ensure somehow that it starts outputting at the - current running time and without still risking to fall behind - without recovery. - -- matroskademux, qtdemux: Provide audio lead-in for some lossy formats - when doing accurate seeks, to make sure we can actually decode - samples at the desired position. This is especially important for - non-linear audio/video editing use-cases. - -- matroskademux, matroskamux: Handle interlaced field order (tff, bff) - -- matroskamux: - - - new offset-to-zero property to offset all streams to start at - zero. This takes the timestamp of the earliest stream and - offsets it so that it starts at 0. Some software (VLC, - ffmpeg-based) does not properly handle Matroska files that start - at timestamps much bigger than zero, which could happen with - live streams. - - added a creation-time property to explicitly set the creation - time to write into the file headers. Useful when remuxing, for - example, but also for live feeds where the DateUTC header can be - set a UTC timestamp corresponding to the beginning of the file. - - the muxer now also always waits for caps on sparse streams, and - warns if caps arrive after the header has already been sent, - otherwise the subtitle track might be silently absent in the - final file. This might affect applications that send sparse data - into matroskamux via an appsrc element, which will usually not - send out the initial caps before it sends out the first buffer. - -- pulseaudio: device provider improvements: fix discovery of - newly-added devices and hide the alsa device provider if we provide - alsa devices - -- qtdemux: raw audio handling improvements, support for AC4 audio, and - key-units trickmode interval support - -- qtmux: - - - was ported to the GstAggregator base class which allows for - better handling of live inputs, but might entail minor - behavioural changes for sparse inputs if inputs are not live. - - has also gained a force-create-timecode-trak property to create - a timecode trak in non-mov flavors, which may not be supported - by Apple but is supported by other software such as Final Cut - Pro X - - also a force-chunks property to force the creation of chunks - even in single-stream files, which is required for Apple ProRes - certification. - - also supports 8k resolutions in prefill mode with ProRes. - -- rtpbin gained a request-jitterbuffer signal which allows - applications to plug in their own jitterbuffer implementation such - as the threadsharing jitterbuffer from the Rust plugins, for - example. - -- rtprtxsend: add clock-rate-map property to allow generic RTP input - caps without a clock-rate whilst still supporting the max-size-time - property for bundled streams. - -- rtpssrcdemux: introduce max-streams property to guard against - attacks where the sender changes SSRC for every RTP packet. - -- rtph264pay, rtph264pay: implement STAP-A and various aggregation - modes controled by the new aggegrate-mode property: none to not - aggregate NAL units (as before), zero-latency to aggregate NAL units - until a VCL or suffix unit is included, or max to aggregate all NAL - units with the same timestamp (which adds one frame of latency). The - default has been kept at none for backwards compatibility reasons - and because various RTP/RTSP implementions don’t handle aggregation - well. For WebRTC use cases this should be set to zero-latency, - however. - -- rtpmp4vpay: add support for config-interval=-1 to resend headers - with each IDR keyframe, like other video payloaders. - -- rtpvp8depay: Add wait-for-keyframe property for waiting until the - next keyframe after packet loss. Useful if the video stream was not - encoded with error resilience enabled, in which case packet loss - tends to cause very bad artefacts when decoding, and waiting for the - next keyframe instead improves user experience considerably. - -- splitmuxsink and splitmuxsrc can now handle auxiliary video streams - in addition to the primary video stream. The primary video stream is - still used to select fragment cut points at keyframe boundaries. - Auxilliary video streams may be broken up at any packet - so - fragments may not start with a keyframe for those streams. - -- splitmuxsink: - - - new muxer-preset and sink-preset properties for setting - muxer/sink presets - - a new start-index property to set the initial fragment id - - and a new muxer-pad-map property which explicitly maps - splitmuxsink pads to the muxer pads they should connect to, - overriding the implicit logic that tries to match pads but - yields arbitrary names. - - Also includes the actual sink element in the fragment-opened and - fragment-closed element messages now, which is especially useful - for sinks without a location property or when finalisation of - the fragments is done asynchronously. - -- videocrop: add support for Y444, Y41B and Y42B pixel formats - -- vp8enc, vp9enc: change default value of VP8E_SET_STATIC_THRESHOLD - from 0 to 1 which matches what Google WebRTC does and results in - lower CPU usage; also added a new bit-per-pixel property to select a - better default bitrate - -- v4l2: add support for ABGR, xBGR, RGBA, and RGBx formats and for - handling interlaced video in alternate fields interlace mode (one - field per buffer instead of one frame per picture with both fields - interleaved) - -- v4l2: Profile and level probing support for H264, H265, MPEG-4, - MPEG-2, VP8, and VP9 video encoders and decoders - -Plugins Ugly - -- asfdemux: extract more metadata: disc number and disc count - -- x264enc: - - - respect YouTube bitrate recommendation when user sets the - YouTube profile preset - - separate high-10 video formats from 8-bit formats to improve - depth negotiation and only advertise suitable input raw formats - for the desired output depth - - forward downstream colorimetry and chroma-site restrictions to - upstream elements - - support more color primaries/mappings - -Plugins Bad - -- av1enc: add threads, row-mt and tile-{columns,rows} properties for - this AOMedia AV1 encoder - -- ccconverter: implement support for CDP framerate conversions - -- ccextractor: Add remove-caption-meta property to remove caption - metas from the outgoing video buffers - -- decklink: add support for 2K DCI video modes, widescreen NTSC/PAL, - and for parsing/outputting AFD/Bar data. Also implement a simple - device provider for Decklink devices. - -- dtlsrtpenc: add rtp-sync property which synchronises RTP streams to - the pipeline clock before passing them to funnel for merging with - RTCP. - -- fdkaac: also decode MPEG-2 AAC; encoder now supports more - multichannel/surround sound layouts - -- hlssink2: add action signals for custom playlist/fragment handling: - Instead of always going through the file system API we allow the - application to modify the behaviour. For the playlist itself and - fragments, the application can provide a GOutputStream. In addition - the sink notifies the application whenever a fragment can be - deleted. - -- interlace: can now output data in alternate fields mode; added field - switching mode for 2:2 field pattern - -- iqa: Add a mode property to enable strict mode that checks that all - the input streams have the exact same number of frames; also - implement the child proxy interface - -- mpeg2enc: add disable-encode-retries property for lower CPU usage - -- mpeg4videoparse: allow re-sending codec config at IDR via - config-interval=-1 - -- mpegtsparse: new alignment property to determine number of TS - packets per output buffer, useful for feeding an MPEG-TS stream for - sending via udpsink. This can be used in combination with the - split-on-rai property that makes sure to start a new output buffer - for any TS packet with the Random Access Indicator set. Also set - delta unit buffer flag on non-random-access buffers. - -- mpegdemux: add an ignore-scr property to ignore the SCR in - non-compliant MPEG-PS streams with a broken SCR, which will work as - long as PTS/DTS in the PES header is consistently increasing. - -- tsdemux: - - - add an ignore-pcr property to ignore MPEG-TS streams with broken - PCR streams on which we can’t reliably recover correct - timestamps. - - new latency property to allow applications to lower the - advertised worst-case latency of 700ms if they know their - streams support this (must have timestamps in higher frequency - than required by the spec) - - support for AC4 audio - -- msdk - Intel Media SDK plugin for hardware-accelerated video - decoding and encoding on Windows and Linux: - - - mappings for more video formats: Y210, Y410, P012_LE, Y212_LE - - encoders now support bitrate changes and input format changes in - playing state - - msdkh264enc, msdkh265enc: add support for CEA708 closed caption - insertion - - msdkh264enc, msdkh265enc: set Region of Interest (ROI) region - from ROI metas - - msdkh264enc, msdkh265enc: new tune property to enable low-power - mode - - msdkh265enc: add support 12-bit 4:2:0 encoding and 8-bit 4:2:2 - encoding and VUYA, Y210, and Y410 as input formats - - msdkh265enc: add support for screen content coding extension - - msdkh265dec: add support for main-12/main-12-intra, - main-422-10/main-422-10-intra 10bit, - main-422-10/main-422-10-intra 8bit, - main-422-12/main-422-12-intra, main-444-10/main-444-10-intra, - main-444-12/main-444-12-intra, and main-444 profiles - - msdkvp9dec: add support for 12-bit 4:4:4 - - msdkvpp: add support for Y410 and Y210 formats, cropping via - properties, and a new video-direction property. - -- mxf: Add support for CEA-708 CDP from S436 essence tracks. mxfdemux - can now handle Apple ProRes - -- nvdec: add H264 + H265 stateless codec implementation nvh264sldec - and nvh265sldec with fewer features but improved latency. You can - set the environment variable GST_USE_NV_STATELESS_CODEC=h264 to use - the stateless decoder variant as nvh264dec instead of the “normal” - NVDEC decoder implementation. - -- nvdec: add support for 12-bit 4:4:4/4:2:0 and 10-bit 4:2:0 decoding - -- nvenc: - - - add more rate-control options, support for B-frame encoding (if - device supports it), an aud property to toggle Access Unit - Delimiter insertion, and qp-{min,max,const}-{i,p,b} properties. - - the weighted-pred property enables weighted prediction. - - support for more input formats, namely 8-bit and 10-bit RGB - formats (BGRA, RGBA, RGB10A2, BGR10A2) and YV12 and VUYA. - - on-the-fly resolution changes are now supported as well. - - in case there are multiple GPUs on the system, there are also - per-GPU elements registered now, since different devices will - have different capabilities. - - nvh265enc can now support 10-bit YUV 4:4:4 encoding and 8-bit - 4:4:4 / 10-bit 4:2:0 formats up to 8K resolution (with some - devices). In case of HDR content HDR related SEI nals will be - inserted automatically. - -- openjpeg: enable multi-threaded decoding and add support for - sub-frame encoding (for lower latency) - -- rtponviftimestamp: add opt-out “drop-out-of-segment” property - -- spanplc: new stats property - -- srt: add support for IPv6 and for using hostnames instead of IP - addresses; add streamid property, but also allow passing the id via - the stream URI; add wait-for-connection property to srtsink - -- timecodestamper: this element was rewritten with an updated API - (properties); it has gained many new properties, seeking support and - support for linear timecode (LTC) from an audio stream. - -- uvch264src now comes with a device provider to advertise available - camera sources that support this interface (mostly Logitech C920s) - -- wpe: Add software rendering support and support for mouse scroll - events - -- x265enc: support more 8/10/12 bits 4:2:0, 4:2:2 and 4:4:4 profiles; - add support for mastering display info and content light level - encoding SEIs - -gst-libav - -- Add mapping for SpeedHQ video codec used by NDI - -- Add mapping for aptX and aptX-HD - -- avivf_mux: support VP9 and AV1 - -- avvidenc: shift output buffer timestamps and output segment by 1h - just like x264enc does, to allow for negative DTS. - -- avviddec: Limit default number of decoder threads on systems with - more than 16 cores, as the number of threads used in avdec has a - direct impact on the latency of the decoder, which is of as many - frames as threads, so a large numbers of threads can make for - latency levels that can be problematic in some applications. - -- avviddec: Add thread-type property that allows applications to - specify the preferred multithreading method (auto, frame, slice). - Note that thread-type=frame may introduce additional latency - especially in live pipelines, since it introduces a decoding delay - of number of thread frames. +- this section will be filled in in due course Plugin and library moves -- There were no plugin moves or library moves in this cycle. +- this section will be filled in in due course -- The rpicamsrc element was moved into -good from an external - repository on github. +- There were no plugin moves or library moves in this cycle. Plugin removals The following elements or plugins have been removed: -- The yadif video deinterlacing plugin from gst-plugins-bad, which was - one of the few GPL licensed plugins, has been removed in favour of - deinterlace method=yadif. - -- The avdec_cdgraphics CD Graphics video decoder element from - gst-libav was never usable in GStreamer and we now have a cdgdec - element written in Rust in gst-plugins-rs to replace it. - -- The VDPAU plugin has been unmaintained and unsupported for a very - long time and does not have the feature set we expect from - hardware-accelerated video decoders. It’s been superseded by the - nvcodec plugin leveraging NVIDIA’s NVDEC API. +- this section will be filled in in due course Miscellaneous API additions -GStreamer core - -- gst_task_resume(): This new API allows resuming a task if it was - paused, while leaving it in stopped state if it was stopped or not - started yet. This can be useful for callback-based driver workflows, - where you basically want to pause and resume the task when buffers - are notified while avoiding the race with a gst_task_stop() coming - from another thread. - -- info: add printf extensions GST_TIMEP_FORMAT and GST_STIMEP_FORMAT - for printing GstClockTime/GstClockTimeDiff pointers, which is much - more convenient to use in debug log statements than the usual - GST_TIME_FORMAT-followed-by-GST_TIME_ARGS dance. Also add an - explicit GST_STACK_TRACE_SHOW_NONE enum value. - -- gst_element_get_current_clock_time() and - gst_element_get_current_running_time(): new helper functions for - getting an element clock’s time, and the clock time minus base time, - respectively. Useful when adding additional input branches to - elements such as compositor, audiomixer, flvmux, interleave or - input-selector to determine initial pad offsets and such. - -- seeking: Add GST_SEEK_FLAG_TRICKMODE_FORWARD_PREDICTED to just skip - B-frames during trick mode, showing both keyframes + P-frame, and - add support for it in h264parse and h265parse. - -- elementfactory: add GST_ELEMENT_FACTORY_TYPE_HARDWARE to allow - elements to advertise that they are hardware-based or interact with - hardware. This has multiple applications: - - - it makes it possible to easily differentiate hardware and - software based element implementations such as audio or video - encoders and decoders. This is useful in order to force the use - of software decoders for specific use cases, or to check if a - selected decoder is actually hardware-accelerated or not. - - elements interacting with hardware and their respective drivers - typically don’t know the actually supported capabilities until - the element is set into at least READY state and can open a - device handle and probe the hardware. - -- gst_uri_from_string_escaped(): identical to gst_uri_from_string() - except that the userinfo and fragment components of the URI will not - be unescaped while parsing. This is needed for correctly parsing - usernames or passwords with : in them . - -- paramspecs: new GstParamSpec flag GST_PARAM_CONDITIONALLY_AVAILABLE - to indicate that a property might not always exist. - -- gst_bin_iterate_all_by_element_factory_name() finds elements in a - bin by factory name - -- pad: gst_pad_get_single_internal_link() is a new convenience - function to return the single internal link of a pad, which is - useful e.g. to retrieve the output pad of a new multiqueue request - pad. - -- datetime: Add constructors to create datetimes with timestamps in - microseconds, gst_date_time_new_from_unix_epoch_local_time_usecs() - and gst_date_time_new_from_unix_epoch_utc_usecs(). - -- gst_debug_log_get_lines() gets debug log lines formatted in the same - way the default log handler would print them - -- GstSystemClock: Add GST_CLOCK_TYPE_TAI as GStreamer abstraction for - CLOCK_TAI, to support transmission offloading features where network - packets are timestamped with the time they are deemed to be actually - transmitted. Useful in combination with the new AVTP plugin. - -- miscellaneous utility functions: gst_clear_uri(), - gst_structure_take(). - -- harness: Added gst_harness_pull_until_eos() - -- GstBaseSrc: - - - gst_base_src_new_segment() allows subclasses to update the - segment to be used at runtime from the ::create() function. This - deprecates gst_base_src_new_seamless_segment() - - gst_base_src_negotiate() allows subclasses to trigger format - renegotiation at runtime from inside the ::create() or ::alloc() - function - -- GstBaseSink: new stats property and gst_base_sink_get_stats() method - to retrieve various statistics such as average frame rate and - dropped/rendered buffers. - -- GstBaseTransform: gst_base_transform_reconfigure() is now public - API, useful for subclasses that need to completely re-implement the - ::submit_input_buffer() virtual method - -- GstAggregator: - - - gst_aggregator_update_segment() allows subclasses to update the - output segment at runtime. Subclasses should use this function - rather than push a segment event onto the source pad directly. - - new sample selection API: - - subclasses should now call gst_aggregator_selected_samples() - from their ::aggregate() implementation to signal that they - have selected the next samples they will aggregate - - GstAggregator will then emit the samples-selected signal - where handlers can then look up samples per pad via - gst_aggregator_peek_next_sample(). - - This is useful for example to atomically update input pad - properties in mixer subclasses such as compositor. - Applications can now update properties with precise control - of when these changes will take effect, and for which input - buffer(s). - - gst_aggregator_finish_buffer_list() allows subclasses to push - out a buffer list, improving efficiency in some cases. - - a ::negotiate() virtual method was added, for consistency with - other base classes and to allow subclasses to completely - override the negotiation behaviour. - - the new ::sink_event_pre_queue() and ::sink_query_pre_queue() - virtual methods allow subclasses to intercept or handle - serialized events and queries before they’re queued up - internally. - -GStreamer Plugins Base Libraries - -Audio library - -- audioaggregator, audiomixer: new output-buffer-duration-fraction - property which allows use cases such as keeping the buffers output - by compositor on one branch and audiomixer on another perfectly - aligned, by requiring the compositor to output a n/d frame rate, and - setting output-buffer-duration-fraction to d/n on the audiomixer. - -- GstAudioDecoder: new max-errors property so applications can - configure at what point the decoder should error out, or tell it to - just keep going - -- gst_audio_make_raw_caps() and gst_audio_formats_raw() are - bindings-friendly versions of the GST_AUDIO_CAPS_MAKE() C macro. - -- gst_audio_info_from_caps() now handles encoded audio formats as well - -PbUtils library - -- GstEncodingProfile: - - Do not restrict number of similar profiles in a container - - add GstValue serialization function -- codec utils now support more H.264/H.265 profiles/levels and have - improved extension handling - -RTP library - -- rtpbasepayloader: Add scale-rtptime property for scaling RTP - timestamp according to the segment rate (equivalent to RTSP speed - parameter). This is useful for ONVIF trickmodes via RTSP. - -- rtpbasepayload: add experimental property for embedding twcc - sequencenumbers for Transport-Wide Congestion Control (gated behind - the GST_RTP_ENABLE_EXPERIMENTAL_TWCC_PROPERTY environment - variable) - more generic API for enabling this is expected to land - in the next development cycle. - -- rtcpbuffer: add RTPFB_TYPE_TWCC for Transport-Wide Congestion - Control - -- rtpbuffer: add - gst_rtp_buffer_get_extension_onebyte_header_from_bytes()``, so that one can parse theGBytes` - returned by gst_rtp_buffer_get_extension_bytes() - -- rtpbasedepayload: Add max-reorder property to make the - previously-hardcoded value when to consider a sender to have - restarted configurable. In some scenarios it’s particularly useful - to set max-reorder=0 to disable the behaviour that the depayloader - will drop packets: when max-reorder is set to 0 all - reordered/duplicate packets are considered coming from a restarted - sender. - -RTSP library - -- add gst_rtsp_url_get_request_uri_with_control() to create request - uri combined with control url - -- GstRTSPConnection: add the possibility to limit the Content-Length - for RTSP messages via - gst_rtsp_connection_set_content_length_limit(). The same - functionality is also exposed in gst-rtsp-server. - -SDP library - -- add support for parsing the extmap attribute from caps and storing - inside caps The extmap attribute allows mapping RTP extension header - IDs to well-known RTP extension header specifications. See RFC8285 - for details. - -Tags library - -- update to latest iso-code and support more languages - -- add tags for acoustid id & acoustid fingerprint, plus MusicBrainz ID - handling fixes - -Video library - -- High Dynamic Range (HDR) video information representation and - signalling enhancements: - - - New APIs for HDR video information representation and - signalling: - - GstVideoMasteringDisplayInfo: display color volume info as - per SMPTE ST 2086 - - GstVideoContentLightLevel: content light level specified in - CEA-861.3, Appendix A. - - plus functions to serialise/deserialise and add them to or - parse them from caps - - gst_video_color_{matrix,primaries,transfer}_{to,from}_iso(): - new utilility functions for conversion from/to ISO/IEC - 23001-8 - - add ARIB STD-B67 transfer chracteristic function - - add SMPTE ST 2084 support and BT 2100 colorimetry - - define bt2020-10 transfer characteristics for clarity: - bt707, bt2020-10, and bt2020-12 transfer characteristics are - functionally identical but have their own unique values in - the specification. - - h264parse, h265parse: Parse mastering display info and content - light level from SEIs. - - matroskademux: parse HDR metadata - - matroskamux: Write MasteringMetadata and Max{CLL,FALL}. Enable - muxing with HDR meta data if upstream provided it - - avviddec: Extract HDR information if any and map bt2020-10, PQ - and HLG transfer functions - -- added bt601 transfer function (for completeness) - -- support for more pixel formats: - - - Y412 (packed 12 bits 4:4:4:4) - - Y212 (packed 12 bits 4:2:2) - - P012 (semi-planar 4:2:0) - - P016_{LE,BE} (semi-planar 16 bits 4:2:0) - - Y444_16{LE,BE} (planar 16 bits 4:4:4) - - RGB10A2_LE (packed 10-bit RGB with 2-bit alpha channel) - - NV12_32L32 (NV12 with 32x32 tiles in linear order) - - NV12_4L4 (NV12 with 4x4 tiles in linear order) - -- GstVideoDecoder: - - - new max-errors property so applications can configure at what - point the decoder should error out, or tell it to just keep - going - - - new qos property to disable dropping frames because of QoS, and - post QoS messages on the bus when dropping frames. This is - useful for example in a scenario where the decoded video is - tee-ed off to go into a live sink that syncs to the clock in one - branch, and an encoding and save to file pipeline in the other - branch. In that case one wouldn’t want QoS events from the video - sink make the decoder drop frames because that would also leave - gaps in the encoding branch then. - -- GstVideoEncoder: - - - gst_video_encoder_finish_subframe() is new API to push out - subframes (e.g. slices), so encoders can split the encoding into - subframes, which can be useful to reduce the overall end-to-end - latency as we no longer need to wait for the full frame to be - encoded to start decoding or sending out the data. - - new min-force-key-unit-interval property allows configuring the - minimum interval between force-key-unit requests and prevents a - big bitrate increase if a lot of key-units are requested in a - short period of time (as might happen in live streaming RTP - pipelines when packet loss is detected). - - various force-key-unit event handling fixes - -- GstVideoAggregator, compositor, glvideomixer: expose - max-last-buffer-repeat property on pads. This can be used to have a - compositor display either the background or a stream on a lower - zorder after a live input stream freezes for a certain amount of - time, for example because of network issues. - -- gst_video_format_info_component() is new API to find out which - components are packed into a given plane, which is useful to prevent - us from assuming a 1-1 mapping between planes and components. - -- gst_video_make_raw_caps() and gst_video_formats_raw() are - bindings-friendly versions of the GST_VIDEO_CAPS_MAKE() C macro. - -- video-blend: Add support for blending on top of 16 bit per component - formats, which makes sure we can support every currently supported - raw video format for blending subtitles or logos on top of video. - -- GST_VIDEO_BUFFER_IS_TOP_FIELD() and - GST_VIDEO_BUFFER_IS_BOTTOM_FIELD() convenience macros to check - whether the video buffer contains only the top field or bottom field - of an interlaced picture. - -- GstVideoMeta now includes an alignment field with the - GstVideoAlignment so buffer producers can explicitly specify the - exact geometry of the planes, allowing users to easily know the - padded size and height of each plane. Default values will be used if - this is not set. - - Use gst_video_meta_set_alignment() to set the alignment and - gst_video_meta_get_plane_size() or gst_video_meta_get_plane_height() - to compute the plane sizes or plane heights based on the information - in the video meta. - -- gst_video_info_align_full() works like gst_video_info_align() but - also retrieves the plane sizes. - -MPEG-TS library - -- support for SCTE-35 sections - -- extend support for ATSC tables: - - - System Time Table (STT) - - Master Guide Table (MGT) - - Rating Region Table (RRT) +- this section will be filled in in due course Miscellaneous performance, latency and memory optimisations -As always there have been many performance and memory usage improvements -across all components and modules. Some of them have already been -mentioned elsewhere so won’t be repeated here. - -The following list is only a small snapshot of some of the more -interesting optimisations that haven’t been mentioned in other contexts -yet: - -- caps negotiation, structure and GValue performance optimizations - -- systemclock: clock waiting performance improvements (moved from - GstPoll to GCond for waiting), especially on Windows. - -- rtpsession: add support for buffer lists on the recv path for better - performance with higher packet rate streams. - -- rtpjitterbuffer: internal timer handling has been rewritten for - better performance, see Nicolas’ talk “Revisiting RTP Jitter Buffer - Timers” for more details. - -- H.264/H.265 parsers and RTP payloaders/depayloaders have been - optimised for latency to make sure data is processed and pushed out - as quickly as possible - -- video-scaler: correctness and performance improvements, esp. for - interlaced formats and GBRA - -- GstVideoEncoder has gained new API to push out subframes - (e.g. slices), so encoders can split the encoding into subframes, - which can be useful to reduce the overall end-to-end latency as we - no longer need to wait for the full frame to be encoded to start - decoding or sending out the data. - - This is complemented by the new GST_VIDEO_BUFFER_FLAG_MARKER which - is a video-specific buffer flag to mark the end of a video frame, so - elements can know that they have received all data for a frame - without waiting for the beginning of the next frame. This is similar - to how the RTP marker flag is used in many RTP video mappings. - - The video encoder base class now also releases the internal stream - lock before pushing out data, so as to not block the input side of - things from processing more data in the meantime. +- this section will be filled in in due course Miscellaneous other changes and enhancements -- it is now possible to modify the initial rank of plugin features - without modifying the source code or writing code to do so - programmatically via the GST_PLUGIN_FEATURE_RANK environment - variable. Users can adjust the rank of plugin(s) by passing a - comma-separated list of feature:rank pairs where rank can be a - numerical value or one of NONE, MARGINAL, SECONDARY, PRIMARY, and - MAX. Example: GST_PLUGIN_FEATURE_RANK=myh264dec:MAX,avdec_h264:NONE - sets the rank of the myh264dec element feature to the maximum and - that of avdec_h264 to 0 (none), thus ensuring that myh264dec is - prefered as H264 decoder in an autoplugging context. - -- GstDeviceProvider now does a static probe on start as fallback for - providers that don’t support dynamic probing to make things easier - for users - -WebRTC - -- webrtcbin now contains initial support for renegotiation involving - stream addition and removal. There are a number of caveats to this - initial renegotiation support and many complex scenarios are known - to require some work. - -- webrtcbin now exposes the internal ICE object for advanced - configuration options. Using the internal ICE object, it is possible - to toggle UDP or TCP connection usage as well as provide local - network addresses. - -- Fix a number of call flows within webrtcbin’s GstPromise handling - where a promise was never replied to. This has been fixed and now a - promise will always receive a reply. - -- webrtcbin now exposes a latency property for configuring the - internal rtpjitterbuffer latency and buffering when receiving - streams. - -- webrtcbin now only synchronises the RTP part of a stream, allowing - RTCP messages to skip synchronisation entirely. - -- Fixed most of the webrtcbin state properties (connection-state, - ice-connection-state, signaling-state, but not ice-gathering-state - as that requires newer API in libnice and will be fixed in the next - release series) to advance through the state values correctly. Also - implemented DTLS connection states in the DTLS elements so that - peer-connection-state is not always new. - -- webrtcbin now accounts for the a=ice-lite attribute in a remote SDP - offer and will configure the internal ICE implementation - accordingly. - -- webrtcbin will now resolve .local candidate addresses using the - system DNS resolver. .local candidate addresses are now produced by - web browsers to help protect the privacy of users. - -- webrtcbin will now add candidates found in the SDP to the internal - ICE agent. This was previously unsupported and required using the - add-ice-candidate signal manually from the application. - -- webrtcbin will now correctly parse a TURN URI that contains a - username or password with a : in it. - -- The GStreamer WebRTC library gained a GstWebRTCDataChannel object - roughly matching the interface exposed by the WebRTC specification - to allow for easier binding generation and use of data channels. - -OpenGL integration - -GStreamer OpenGL bindings/build related changes - -- The GStreamer OpenGL library (libgstgl) now ships pkg-config files - for platform-specific API where libgstgl provides a public - integration interface and a pkg-config file for a dependency on the - detected OpenGL headers. The new list of pkg-config files in - addition to the original gstreamer-gl-1.0 are gstreamer-gl-x11-1.0, - gstreamer-gl-wayland-1.0, gstreamer-gl-egl-1.0, and - gstreamer-gl-prototypes-1.0 (for OpenGL headers when including - gst/gl/gstglfuncs.h). - -- GStreamer OpenGL now ships some platform-specific introspection data - for platforms that have a public interface. This should allow for - easier integration with bindings involving platform specific - functionality. The new introspection data files are named - GstGLX11-1.0, GstGLWayland-1.0, and GstGLEGL-1.0. - -GStreamer OpenGL Features - -- The iOS implementation no longer accesses UIKit objects off the main - thread fixing a loud warning message when used in iOS applications. - -- Support for mouse and keyboard handling using the GstNavigation - interface was added for the wayland implementation complementing the - already existing support for the X11 and Windows implementations. - -- A new helper base class for source elements, GstGLBaseSrc is - provided to ease writing source elements producing OpenGL video - frames. - -- Support for some more 12-bit and 16-bit video formats (Y412_LE, - Y412_BE, Y212_LE, Y212_BE, P012_LE, P012_BE, P016, NV16, NV61) was - added to glcolorconvert. - -- glupload can now import dma-buf’s into external-oes textures. - -- A new display type for EGLDevice-based systems was added. It is - currently opt-in by using either the GST_GL_PLATFORM=egl-device - environment variable or manual construction - (gst_gl_display_egl_device_new*()) due to compatibility issues with - some platforms. - -- Support was added for WinRT/UWP using the ANGLE project for running - OpenGL-based pipelines within a UWP application. - -- Various elements now support changing the GstGLDisplay to be used at - runtime in simple cases. This is primarily helpful for changing or - adding an OpenGL-based video sink that must share an OpenGL context - with an external source to an already running pipeline. - -GStreamer Vulkan integration - -- There is now a GStreamer Vulkan library to provide integration - points and helpers with applications and external GStreamer Vulkan - based elements. The structure of the library is modelled similarly - to the already existing GStreamer OpenGL library. Please note that - the API is still unstable and may change in future releases, - particularly around memory handling. The GStreamer Vulkan library - contains objects for sharing the vkInstance, vkDevice, vkQueue, - vkImage, VkMemory, etc with other elements and/or the application as - well as some helper objects for using Vulkan in an application or - element. - -- Added support for building and running on/for the Android and - Windows systems to complement the existing XCB, Wayland, MacOS, and - iOS implementations. - -- XCB gained support for mouse/keyboard events using the GstNavigation - API. - -- New vulkancolorconvert element for converting between color formats. - vulkancolorconvert can currently convert to/from all 8-bit RGBA - formats as well as 8-bit RGBA formats to/from the YUV formats AYUV, - NV12, and YUY2. - -- New vulkanviewconvert element for converting between stereo view - layouts. vulkanviewconvert can currently convert between all of the - single memory formats (side-by-side, top-bottom, column-interleaved, - row-interleaved, checkerboard, left, right, mono). - -- New vulkanimageidentity element for a blit from the input vulkan - image/s to a new vulkan image/s. - -- The vulkansink element can now scale the input image to the output - window/surface size where that information is available. - -- The vulkanupload element can now configure a transfer from system - memory to VulkanImage-based memory. Previously, this required two - vulkanupload elements. +- this section will be filled in in due course Tracing framework and debugging improvements -- gst_tracing_get_active_tracers() returns a list of active tracer - objects. This can be used to interact with tracers at runtime using - GObject API such as action signals. This has been implemented in the - leaks tracer for snapshotting and retrieving leaked/active objects - at runtime. - -- The leaks tracer can now be interacted with programmatically at - runtime via GObject action signals: - - - get-live-object returns a list of live (allocated) traced - objects - - log-live-objects logs a list of live objects into the debug log. - This is the same as sending the SIGUSR1 signal on unix systems, - but works on all operating systems including Windows. - - activity-start-tracking, activity-get-checkpoint, - activity-log-checkpoint, activity-stop-tracking: add support for - tracking and checkpointing objects, similar to what was - previously available via SIGUSR2 on unix systems, but works on - all operating systems including Windows. - -- various GStreamer gdb debug helper improvements: - - - new ‘gst-pipeline-tree’ command - - more gdb helper functions: gst_element_pad(), gst_pipeline() and - gst_bin_get() - - support for queries and buffers - - print more info for segment events, print event seqnums, object - pointers and structures - - improve gst-print command to show more pad and element - information +- this section will be filled in in due course Tools -gst-launch-1.0 - -- now prints the pipeline position and duration if available when the - pipeline is advancing. This is hopefully more user-friendly and - gives visual feedback on the terminal that the pipeline is actually - up and running. This can be disabled with the --no-position command - line option. - -- the parse-launch pipeline syntax now has support for presets: - use@preset=" after an element to load a preset. - -gst-inspect-1.0 - -- new --color command line option to force coloured output even if not - connected to a tty - -gst-tester-1.0 (new) - -- gst-tester-1.0 is a new tool for plugin developers to launch - .validatetest files with TAP compatible output, meaning it can - easily and cleanly be integrated with the meson test harness. It - allows you to use gst-validate (from the gst-devtools module) to - write integration tests in any GStreamer repository whilst keeping - the tests as close as possible to the code. The tool transparently - handles gst-validate being installed or not: if it is not installed - those integration tests will simply be skipped. - -gst-play-1.0 - -- interactive keyboard controls now also work on Windows - -gst-transcoder-1.0 (new) - -- gst-transcoder-1.0 is a new command line tool to transcode one URI - into another URI based on the specified encoding profile using the - new GstTranscoder API (see above). +- this section will be filled in in due course GStreamer RTSP server -- Fix issue where the first few packets (i.e. keyframes) could - sometimes be dropped if the rtsp media pipeline had a live input. - This was a regression from GStreamer 1.14. There are more fixes - pending for that which will hopefully land in 1.18.1. - -- Fix backpressure handling when sending data in TCP interleave mode - where RTSP requests and responses and RTP/RTCP packets flow over the - same RTSP TCP connection: The previous implementation would at some - point stop sending data to other clients when a single client - stopped consuming data or did not consume data fast enough. This - obviously created problems for shared media, where the same stream - from a single producer pipeline is sent to multiple clients. Instead - we now manage a backlog in the server’s stream-transport component - and remove slow clients once this backlog exceeds a maximum duration - (which is currently hardcoded). - -- Onvif Streaming Specification trick modes support (see section at - the beginning) - -- Scale/Speed header support: Speed will deliver the data at the - requested speed, which means increasing the data bandwidth for - speeds > 1.0. Scale will attempt to do the same without affecting - the overall bandwidth requirement vis-a-vis normal playback speed - (e.g. it might drop data for fast-forward playback). - -- rtspclientsink: send buffer lists in one go for better performance +- this section will be filled in in due course GStreamer VAAPI -- A lot of work was done adding support for media-driver (iHD), the - new VAAPI driver for Intel, mostly for Gen9 onwards. - -- Available color formats and frame sizes are now detected at run-time - according to the context configuration. - -- Gallium drivers have been re-enabled in the allowed drivers list - -- Improved the mapping between VA formats and GStreamer formats by - generating a mapping table at run-time since even among different - drivers the mapping might be different, particularly for RGB with - little endianness. - -- The experimental Flexible Encoding Infrastructure (FEI) elements - have been removed since they were not really actively maintained or - tested. - -- Enhanced the juggling of DMABuf buffers and VASurface metas - -- New vaapioverlay element: a compositor element using VA VPP blend - capabilities to accelerate overlaying and compositing. Example - pipeline: - - gst-launch-1.0 -vf videotestsrc ! vaapipostproc ! tee name=testsrc ! queue \ - ! vaapioverlay sink_1::xpos=300 sink_1::alpha=0.75 name=overlay ! vaapisink \ - testsrc. ! queue ! overlay. - -vaapipostproc - -- added video-orientation support, supporting frame mirroring and - rotation - -- added cropping support, either via properties (crop-left, - crop-right, crop-bottom and crop-top) or buffer meta. - -- new skin-tone-enhancenment-level property which is the iHD - replacement of the i965 driver’s sink-tone-level. Both are - incompatible with each other, so both were kept. - -- handle video colorimetry - -- support HDR10 tone mapping - -vaapisink - -- resurrected wayland backend for non-weston compositors by extracting - the DMABuf from the VASurface and rendering it. - -- merged the video overlay API for wayland. Now applications can - define the “window” to render on. - -- demoted the vaapisink element to secondary rank since libva - considers rendering as a second-class feature. - -VAAPI Encoders - -- new common target-percentage property which is the desired target - percentage of bitrate for variable rate control. - -- encoders now extract their caps from the driver at registration - time. - -- vaapivp9enc: added support for low power mode and support for - profile 2 (profile 0 by default) - -- vaapih264enc: new max-qp property that sets the maximum quantization - value. Support for ICQ and QBVR bitrate control mode, adding a - quality-factor property for these modes. Support baseline profile as - constrained-baseline - -- vaapih265enc: - - - support for main-444 and main-12 encoding profiles. - - new max-qp property that sets the maximum quantization value. - - support for ICQ and QBVR bitrate control mode, adding a - quality-factor property for these modes. - - handle SCC profiles. - - num-tile-cols and num-tile-row properties to specify the number - of tiles to use. - - the low-delay-b property was deprecated and is now determined - automatically. - - improved profile selection through caps. - -VAAPI Decoders - -- Decoder surfaces are not bound to their context any longer and can - thus be created and used dynamically, removing the deadlock - headache. - -- Reverse playback is now fluid - -- Forward Region-of-Interest (ROI) metas downstream - -- GLTextureUploadMeta uses DMABuf when GEM is not available. Now - Gallium drivers can use this meta for rendering with EGL. - -- vaapivp9dec: support for 4:2:2 and 4:4:4 chroma type streams - -- vaapih265dec: skip all pictures prior to the first I-frame. Enable - passing range extension flags to the driver. Handle SCC profiles. - -- vaapijpegdec: support for 4:0:0, 4:1:1, 4:2:2 and 4:4:4 chroma types - pictures - -- vaapih264dec: handle baseline streams as constrained-baseline if - possible and make it more tolerant when encountering unknown NALs +- this section will be filled in in due course GStreamer OMX -- omxvideoenc: use new video encoder subframe API to push out slices - as soon as they’re ready - -- omxh264enc, omxh265enc: negotiate subframe mode via caps. To enable - it, force downstream caps to video/x-h264,alignment=nal or - video/x-h265,alignment=nal. - -- omxh264enc: Add ref-frames property - -- Zynq ultrascale+ specific video encoder/decoder improvements: - - - GRAY8 format support - - support for alternate fields interlacing mode - - video encoder: look-ahead, long-term-ref, and long-term-freq - properties +- this section will be filled in in due course GStreamer Editing Services and NLE -- Added nested timelines and subproject support so that GES projects - can be used as clips, potentially serializing nested projects in the - main file or referencing external project files. - -- Implemented an OpenTimelineIO GES formatter. This means GES and - GStreamer can now load and save projects in all the formats - supported by otio. - -- Implemented a GESMarkerList object which allow setting timed - metadata on any GES object. - -- Fixed audio rendering issues during clip transition by ensuring that - a single segment is pushed into encoders. - -- The GESUriClipAsset API is now MT safe. - -- Added ges_meta_container_register_static_meta() to allow fixing a - type for a specific metadata without actually setting a value. - -- The framepositioner element now handles resizing the project and - keeps the same positioning when the aspect ratio is not changed . - -- Reworked the documentation, making it more comprehensive and much - more detailed. - -- Added APIs to retrieve natural size and framerate of a clip (for - example in the case of URIClip it is the framerate/size of the - underlying file). - -- ges_container_edit() is now deprecated and GESTimelineElement gained - the ges_timeline_element_edit() method so the editing API is now - usable from any element in the timeline. - -- GESProject::loading was added so applications can be notified about - when a new timeline starts loading. - -- Implemented the GstStream API in GESTimeline. - -- Added a way to add a timeoverlay inside the test source (potentially - with timecodes). - -- Added APIs to convert times to frame numbers and vice versa: - - - ges_timeline_get_frame_time() - - - ges_timeline_get_frame_at() - - - ges_clip_asset_get_frame_time() - - - ges_clip_get_timeline_time_from_source_frame() - - Quite a few validate tests have been implemented to check the - behavior for various demuxer/codec formats - -- Added ges_layer_set_active_for_tracks() which allows muting layers - for the specified tracks - -- Deprecated GESImageSource and GESMultiFileSource now that we have - imagesequencesrc which handles the imagesequence “protocol” - -- Stopped exposing ‘deinterlacing’ children properties for clip types - where they do not make sense. - -- Added support for simple time remapping effects +- this section will be filled in in due course GStreamer validate -- Introduced the concept of “Test files” allowing to implement “all - included” test cases, meaning that inside the file the following can - be defined: - - - The application arguments - - The validate configurations - - The validate scenario - - This replaces the previous big dictionary file in - gst-validate-launcher to implement specific test cases. - - We set several variables inside the files (as well as inside - scenarios and config files) to make them relocatable. - - The file format has been enhanced so it is easier to read and write, - for example line ending with a coma or (curly) brackets can now be - used as continuation marker so you do not need to add \ at the end - of lines to write a structure on several lines. - -- Support the imagesequence “protocol” and added integration tests for - it. - -- Added action types to allow the scenario to run the Test Clock for - better reproducibility of tests. - -- Support generating tests to check that seeking is frame accurate - (base on ssim). - -- Added ways to record buffers checksum (in different ways) in the - validateflow module. - -- Added vp9 encoding tests. - -- Enhanced seeking action types implementation to allow support for - segment seeks. - -- Output improvements: - - - Logs are now in markdown formats (and bat is used to dump them - if available). - - File format issues in scenarios/configs/tests files are nicely - reported with the line numbers now. +- this section will be filled in in due course GStreamer Python Bindings -- Python 2.x is no longer supported - -- Support mapping buffers without any memcpy: - - - Added a ContextManager to make the API more pythonic - - with buf.map(Gst.MapFlags.READ | Gst.MapFlags.WRITE) as info: - info.data[42] = 0 - -- Added high-level helper API for constructing pipelines: - - - Gst.Bin.make_and_add(factory_name, instance_name=None) - - Gst.Element.link_many(element, ...) +- this section will be filled in in due course GStreamer C# Bindings -- Bind gst_buffer_new_wrapped() manually to fix memory handling. - -- Fix gst_promise_new_with_change_func() where bindgen didn’t properly - detect the func as a closure. - -- Declare GstVideoOverlayComposition and GstVideoOverlayRectangle as - opaque type and subclasses of Gst.MiniObject. This changes the API - but without this all usage will cause memory corruption or simply - not work. - -- on Windows, look for gstreamer, glib and gobject DLLs using the MSVC - naming convention (i.e. gstvideo-1.0-0.dll instead of - libgstvideo-1.0-0.dll). - - The names of these DLLs have to be hardcoded in the bindings, and - most C# users will probably be using the Microsoft toolchain anyway. - - This means that the MSVC compiler is now required to build the - bindings, MingW will no longer work out of the box. +- this section will be filled in in due course GStreamer Rust Bindings and Rust Plugins The GStreamer Rust bindings are released separately with a different release cadence that’s tied to gtk-rs, but the latest release has -already been updated for the new GStreamer 1.18 API, so there’s -absolutely no excuse why your next GStreamer application can’t be -written in Rust anymore. +already been updated for the upcoming new GStreamer 1.20 API. gst-plugins-rs, the module containing GStreamer plugins written in Rust, has also seen lots of activity with many new elements and plugins. @@ -1659,6 +119,8 @@ What follows is a list of elements and plugins available in gst-plugins-rs, so people don’t miss out on all those potentially useful elements that have no C equivalent. +- FIXME: add new elements + Rust audio plugins - audiornnoise: New element for audio denoising which implements the @@ -1724,73 +186,11 @@ Generic Rust plugins Build and Dependencies -- The Autotools build system has finally been removed in favour of the - Meson build system. Developers who currently use gst-uninstalled - should move to gst-build. - -- API and plugin documentation are no longer built with gtk_doc. The - gtk_doc documentation has been removed in favour of a new unified - documentation module built with hotdoc (also see “Documentation - improvements” section below). Distributors should use the - documentation release tarball instead of trying to package hotdoc - and building the documentation from scratch. - -- gst-plugins-bad now includes an internal copy of libusrsctp, as - there are problems in usrsctp with global shared state, lack of API - stability guarantees, and the absence of any kind of release - process. We also can’t rely on distros shipping a version with the - fixes we need. Both firefox and Chrome bundle their own copies too. - It is still possible to build against an external copy of usrsctp if - so desired. - -- nvcodec no longer needs the NVIDIA NVDEC/NVENC SDKs available at - build time, only at runtime. This allows distributions to ship this - plugin by default and it will just start to work when the required - run-time SDK libraries are installed by the user, without users - needing to build and install the plugin from source. - -- the gst-editing-services tarball is now named gst-editing-services - for consistency (used to be gstreamer-editing-services). - -- the gst-validate tarball has been superseded by the gst-devtools - tarball for consistency with the git module name. +- this section will be filled in in due course gst-build -gst-build is a meta-module and serves primarily as our uninstalled -development environment. It makes it easy to build most of GStreamer, -but unlike Cerbero it only comes with a limited number of external -dependencies that can be built as subprojects if they are not found on -the system. - -gst-build is based on Meson and replaces the old autotools -gst-uninstalled script. - -- The ‘uninstalled’ target has been renamed to ‘devenv’ - -- Experimental gstreamer-full library containing all built plugins and - their deps when building with -Ddefault_library=static. A monolithic - library is easier to distribute, and may be required in some - environments. GStreamer core, GLib and GObject are always included, - but external dependencies are still dynamically linked. The - gst-full-libraries meson option allows adding other GStreamer - libraries to the gstreamer-full build. This is an experiment for now - and its behaviour or API may still change in future releases. - -- Add glib-networking as a subproject when glib is a subproject and - load gio modules in the devenv, tls option control whether to use - openssl or gnutls. - -- git-worktree: Allow multiple worktrees for subproject branches - -- Guard against meson being run from inside the uninstalled devenv, as - this might have unexpected consequences. - -- our ffmpeg and x264 meson ports have been updated to the latest - stable version (you might need to update the subprojects checkout - manually though, or just remove the checkouts so meson checks out - the latest version again; improvements for this are pending in - meson, but not merged yet). +- this section will be filled in in due course Cerbero @@ -1800,405 +200,97 @@ Windows, Android, iOS and macOS. General improvements -- Recipe build steps are done in parallel wherever possible. This - leads to massive improvements in overall build time. -- Several recipes were ported to Meson, which improved build times -- Moved from using both GnuTLS and OpenSSL to only OpenSSL -- Moved from yasm to nasm for all assembly compilation -- Support zsh when running the cerbero shell command -- Numerous version upgrades for dependencies -- Default to xz for tarball binary packages. bz2 can be selected with - the --compress-method option to package. -- Added boolean variant for controlling the optimization level: - -v optimization -- Ship .pc pkgconfig files for all plugins in the binary packages -- CMake and nasm will only be built by Cerbero if the system versions - are unusable -- The nvcodec variant was removed and the nvcodec plugin is built by - default now (as it no longer requires the SDK to be installed at - build time, only at runtime) +- this section will be filled in in due course macOS / iOS -- Minimum iOS SDK version bumped to 11.0 -- Minimum macOS SDK version bumped to 10.11 -- No longer need to manually add support for newer iOS SDK versions -- Added Vulkan elements via MoltenVK -- Build times were improved by code-signing all build tools -- macOS framework ships all gstreamer libraries instead of an outdated - subset -- Ship pkg-config in the macOS framework package -- fontconfig: Fix EXC_BAD_ACCESS crash on iOS ARM64 -- Improved App Store compatibility by setting LC_VERSION_MIN_MACOSX, - fixing relocations, and improved bitcode support +- this section will be filled in in due course Windows -- MinGW-GCC toolchain was updated to 8.2. It uses the Universal CRT - instead of MSVCRT which eliminates cross-CRT issues in the Visual - Studio build. -- Require Windows 7 or newer for running binaries produced by Cerbero -- Require Windows x86_64 for running Cerbero to build binary packages -- Cerbero no longer uses C:/gstreamer/1.0 as a prefix when building. - That prefix is reserved for use by the MSI installers. -- Several recipes can now be buit with Visual Studio instead of MinGW. - Ported to meson: opus, libsrtp, harfbuzz, cairo, openh264, libsoup, - libusrsctp. Existing build system: libvpx, openssl. -- Support building using Visual Studio for 32-bit x86. Previously we - only supported building for 32-bit x86 using the MinGW toolchain. -- Fixed annoying msgmerge popups in the middle of cerbero builds -- Added configuration options vs_install_path and vs_install_version - for specifying custom search locations for older Visual Studio - versions that do not support vswhere. You can set these in - ~/.cerbero/cerbero.cbc where ~ is the MSYS homedir, not your Windows - homedir. -- New Windows-specific plugins: d3d11, mediafoundation, wasapi2 -- Numerous compatibility and reliability fixes when running Cerbero on - Windows, especially non-English locales -- proxy-libintl now exports the same symbols as gettext, which makes - it a drop-in replacement -- New mapping variant for selecting the Visual Studio CRT to use: - -v vscrt=. Valid values are md, mdd, and auto (default). A - separate prefix is used when building with either md (release) or - mdd (debug), and the outputted package will have +debug in the - filename. This variant is also used for selecting the correct Qt - libraries (debug vs release) to use when building with -v qt5 on - Windows. -- Support cross-compile on Windows to Windows ARM64 and ARMv7 -- Support cross-compile on Windows to the Universal Windows Platform - (UWP). Only the subset of plugins that can be built entirely with - Visual Studio will be selected in this case. To do so, use the - config/cross-uwp-universal.cbc configuration, which will build - ARM64, x86, and x86_64 binaries linked to the release CRT, with - optimizations enabled, and debugging turned on. You can combine this - with -v vscrt=mdd to produce binaries linked to the debug CRT. You - can turn off optimizations with the -v nooptimization variant. +- this section will be filled in in due course Windows MSI installer -- Require Windows 7 or newer for running GStreamer -- Fixed some issues with shipping of pkg-config in the Windows - installers -- Plugin PDB debug files are now shipped in the development package, - not the runtime package -- Ship installers for 32-bit binaries built with Visual Studio -- Ship debug and release “universal” (ARM64, X86, and X86_64) tarballs - built for the Universal Windows Platform -- Windows MSI installers now install into separate prefixes when - building with MSVC and MinGW. Previously both would be installed - into C:/gstreamer/1.0/x86 or C:/gstreamer/1.0/x86_64. Now, the - installation prefixes are: - - ---------------------------------------------------------------------------------------------------------------- - Target Path Build options - --------------------------- ------------------------------------ ----------------------------------------------- - MinGW 32-bit C:/gstreamer/1.0/mingw_x86 -c config/win32.cbc - - MinGW 64-bit C:/gstreamer/1.0/mingw_x86_64 -c config/win64.cbc - - MSVC 32-bit C:/gstreamer/1.0/msvc_x86 -c config/win32.cbc -v visualstudio - - MSVC 64-bit C:/gstreamer/1.0/msvc_x86_64 -c config/win64.cbc -v visualstudio - - MSVC 32-bit (debug) C:/gstreamer/1.0/msvc-debug_x86 -c config/win32.cbc -v visualstudio,vscrt=mdd - - MSVC 64-bit (debug) C:/gstreamer/1.0/msvc-debug_x86_64 -c config/win64.cbc -v visualstudio,vscrt=mdd - ---------------------------------------------------------------------------------------------------------------- - -Note: UWP binary packages are tarballs, not MSI installers. +- this section will be filled in in due course Linux -- Support creating MSI installers using WiX when cross-compiling to - Windows -- Support running cross-windows binaries with Wine when using the - shell and runit cerbero commands -- Added bash-completion support inside the cerbero shell on Linux -- Require a system-wide installation of openssl on Linux -- Added variant -v vaapi to build gstreamer-vaapi and the new gstva - plugin -- Debian packaging was disabled because it does not work. Help in - fixing this is appreciated. -- Trimmed the list of packages needed for bootstrap on Linux +- this section will be filled in in due course Android -- Updated to NDK r21 -- Support Vulkan -- Support Qt 5.14+ binary package layout +- this section will be filled in in due course Platform-specific changes and improvements Android -- opensles: Remove hard-coded buffer-/latency-time values and allow - openslessink to handle 48kHz streams. - -- photography interface and camera source: Add additional settings - relevant to Android such as: Exposure mode property, extra colour - tone values (aqua, emboss, sketch, neon), extra scene modes - (backlight, flowers, AR, HDR), and missing virtual methods for - exposure mode, analog gain, lens focus, colour temperature, min & - max exposure time. Add new effects and scene modes to Camera - parameters. +- this section will be filled in in due course macOS and iOS -- vtdec can now output to Vulkan-backed memory for zerocopy support - with the Vulkan elements. +- this section will be filled in in due course Windows -- d3d11videosink: new Direct3D11-based video sink with support for - HDR10 rendering if supported. - -- Hardware-accelerated video decoding on Windows via DXVA2 / - Direct3D11 using native Windows APIs rather than per-vendor SDKs - (like MSDK for Intel or NVCODEC for NVidia). Plus modern Direct3D11 - integration rather than the almost 20-year old Direct3D9 from - Windows XP times used in d3dvideosink. Formats supported for - decoding are H.264, H.265, VP8, and VP9, and zero-copy operation - should be supported in combination with the new d3d11videosink. See - Seungha’s blog post “Windows DXVA2 (via Direct3D 11) Support in - GStreamer 1.17” for more details. - -- Microsoft Media Foundation plugin for hardware-accelerated video - encoding on Windows using native Windows APIs rather than per-vendor - SDKs. Formats supported for encoding are H.264, H.265 and VP9. Also - includes audio encoders for AAC and MP3. See Seungha’s blog post - “Bringing Microsoft Media Foundation to GStreamer” for some more - details about this. - -- new mfvideosrc video capture source element using the latest Windows - APIs rather than ancient APIs used by ksvideosrc/winks. ksvideosrc - should be considered deprecated going forward. - -- d3d11: add d3d11convert, a color space conversion and rescaling - element using shaders, and introduce d3d11upload and d3d11download - elements that work just like glupload and gldownload but for D3D11. - -- Universal Windows Platform (UWP) support, including official - GStreamer binary packages for it. Check out Nirbheek’s latest blog - post “GStreamer 1.18 supports the Universal Windows Platform” for - more details. - -- systemclock correctness and reliability fixes, and also don’t start - the system clock at 0 any longer (which shouldn’t make any - difference to anyone, as absolute clock time values are supposed to - be meaningless in themselves, only the rate of increase matters). - -- toolchain specific plugin registry: the registry cache is now named - differently for MSVC and MinGW toolchains/packages, which should - avoid problems when switching between binaries built with a - different toolchain. - -- new wasapi2 plugin mainly to support UWP applications. The core - logic of this plugin is almost identical to existing wasapi plugin, - but the main target is Windows 10 and UWP. This plugin uses WinRT - APIs, so will likely not work on Windows 8 or older. Unlike the - existing wasapi plugin, this plugin supports automatic stream - routing (auto fallback when device was removed) and device level - mute/volume control. Exclusive streaming mode is not supported, - however, and loopback features are not implemented yet. It is also - only possible to build this plugin with MSVC and the Windows 10 SDK, - it can’t be cross-compiled with the MingW toolchain. - -- new dxgiscreencapsrc element which uses the Desktop Duplication API - to capture the desktop screen at high speed. This is only supported - on Windows 8 or later. Compared to the existing elements - dxgiscreencapsrc offers much better performance, works in High DPI - environments and draws an accurate mouse cursor. - -- d3dvideosink was downgraded to secondary rank, d3d11videosink is - preferred now. Support OverlayComposition for GPU overlay - compositing of subtitles and logos. - -- debug log output fixes, esp. with a non-UTF8 locale/codepage - -- speex, jack: fixed crashes on Windows caused by cross-CRT issues - -- gst-play-1.0 interactive keyboard controls now also work on Windows +- this section will be filled in in due course Linux -- kmssink: Add support for P010 and P016 formats - -- vah264dec: new experimental va plugin with an element for H.264 - decoding with VA-API. This novel approach, different from - gstreamer-vaapi, uses the gstcodecs library for decoder state - handling, which it is hoped will make for cleaner code because it - uses VA-API without further layers or wrappers. Check out Víctor’s - blog post “New VA-API H.264 decoder in gst-plugins-bad” for the full - lowdown and the limitations of this new plugin, and how to give it a - spin. - -- v4l2codecs: introduce a V4L2 CODECs Accelerator. This plugin will - support the new CODECs uAPI in the Linux kernel, which consists of - an accelerator interface similar to DXVA, NVDEC, VDPAU and VAAPI. So - far H.264 and VP8 are supported. This is used on certain embedded - systems such as i.mx8m, rk3288, rk3399, Allwinner H-series SoCs. +- this section will be filled in in due course Documentation improvements -- unified documentation containing tutorials, API docs, plugin docs, - etc. all under one roof, shipped in form of a documentation release - tarball containing both devhelp and html documentation. - -- all documentation is now generated using hotdoc, gtk-doc is no - longer used. Distributors should use the above-mentioned - documentation release tarball instead of trying to package hotdoc - and building the documentation from scratch. - -- there is now documentation for wrapper plugins like gst-libav and - frei0r, as well as tracer plugins. - -- for more info, check out Thibault’s “GStreamer Documentation” - lightning talk from the 2019 GStreamer Conference. - -- new API for plugins to support the documentation system: - - - new GParamSpecFlag GST_PARAM_DOC_SHOW_DEFAULT to make - gst-inspect-1.0 (and the documentation) show the paramspec’s - default value rather than the actually set value as default - - GstPadTemplate getter and setter for “documentation caps”, - gst_pad_template_set_documentation_caps() and - gst_pad_template_get_documentation_caps(): This can be used in - elements where the caps of pad templates are dynamically - generated and/or dependent on the environment, to override the - caps shown in the documentation (usually to advertise the full - set of possible caps). - - gst_type_mark_as_plugin_api() for marking types as plugin API, - used for plugin-internal types like enums, flags, pad - subclasses, boxed types, and such. +- this section will be filled in in due course Possibly Breaking Changes -- GstVideo: the canonical list of raw video formats (for use in caps) - has been reordered, so video elements such as videotestsrc or - videoconvert might negotiate to a different format now than before. - The new format might be a higher-quality format or require more - processing overhead, which might affect pipeline performance. - -- mpegtsdemux used to wrongly advertise H.264 and H.265 video - elementary streams as alignment=nal. This has now been fixed and - changed to alignment=none, which means an h264parse or h265parse - element is now required after tsdemux for some pipelines where there - wasn’t one before, e.g. in transmuxing scenarios (tsdemux ! tsmux). - Pipelines without such a parser may now fail to link or error out at - runtime. As parsers after demuxers and before muxers have been - generally required for a long time now it is hoped that this will - only affect a small number of applications or pipelines. - -- The Android opensles audio source and sink used to have hard-coded - buffer-/latency-time values of 20ms. This is no longer needed with - newer Android versions and has now been removed. This means a higher - or lower value might now be negotiated by default, which can affect - pipeline performance and latency. +- this section will be filled in in due course Known Issues -- None in particular +- this section will be filled in in due course + +- There are a couple of known WebRTC-related regressions/blockers: + + - webrtc: DTLS setup with Chrome is broken + - webrtcbin: First keyframe is usually lost Contributors -Aaron Boxer, Adam Duskett, Adam x Nilsson, Adrian Negreanu, Akinobu -Mita, Alban Browaeys, Alcaro, Alexander Lapajne, Alexandru Băluț, Alex -Ashley, Alex Hoenig, Alicia Boya García, Alistair Buxton, Ali Yousuf, -Ambareesh “Amby” Balaji, Amr Mahdi, Andoni Morales Alastruey, Andreas -Frisch, Andre Guedes, Andrew Branson, Andrey Sazonov, Antonio Ospite, -aogun, Arun Raghavan, Askar Safin, AsociTon, A. Wilcox, Axel Mårtensson, -Ayush Mittal, Bastian Bouchardon, Benjamin Otte, Bilal Elmoussaoui, -Brady J. Garvin, Branko Subasic, Camilo Celis Guzman, Carlos Rafael -Giani, Charlie Turner, Cheng-Chang Wu, Chris Ayoup, Chris Lord, -Christoph Reiter, cketti, Damian Hobson-Garcia, Daniel Klamt, Daniel -Molkentin, Danny Smith, David Bender, David Gunzinger, David Ing, David -Svensson Fors, David Trussel, Debarshi Ray, Derek Lesho, Devarsh -Thakkar, dhilshad, Dimitrios Katsaros, Dmitriy Purgin, Dmitry Shusharin, -Dominique Leuenberger, Dong Il Park, Doug Nazar, dudengke, Dylan McCall, -Dylan Yip, Ederson de Souza, Edward Hervey, Eero Nurkkala, Eike Hein, -ekwange, Eric Marks, Fabian Greffrath, Fabian Orccon, Fabio D’Urso, -Fabrice Bellet, Fabrice Fontaine, Fanchao L, Felix Yan, Fernando -Herrrera, Francisco Javier Velázquez-García, Freyr, Fuwei Tang, Gaurav -Kalra, George Kiagiadakis, Georgii Staroselskii, Georg Lippitsch, Georg -Ottinger, gla, Göran Jönsson, Gordon Hart, Gregor Boirie, Guillaume -Desmottes, Guillermo Rodríguez, Haakon Sporsheim, Haihao Xiang, Haihua -Hu, Havard Graff, Håvard Graff, Heinrich Kruger, He Junyan, Henry -Wilkes, Hosang Lee, Hou Qi, Hu Qian, Hyunjun Ko, ibauer, Ignacio Casal -Quinteiro, Ilya Smelykh, Jake Barnes, Jakub Adam, James Cowgill, James -Westman, Jan Alexander Steffens, Jan Schmidt, Jan Tojnar, Javier Celaya, -Jeffy Chen, Jennifer Berringer, Jens Göpfert, Jérôme Laheurte, Jim -Mason, Jimmy Ohn, J. Kim, Joakim Johansson, Jochen Henneberg, Johan -Bjäreholt, Johan Sternerup, John Bassett, Jonas Holmberg, Jonas Larsson, -Jonathan Matthew, Jordan Petridis, Jose Antonio Santos Cadenas, Josep -Torra, Jose Quaresma, Josh Matthews, Joshua M. Doe, Juan Navarro, -Juergen Werner, Julian Bouzas, Julien Isorce, Jun-ichi OKADA, Justin -Chadwell, Justin Kim, Keri Henare, Kevin JOLY, Kevin King, Kevin Song, -Knut Andre Tidemann, Kristofer Björkström, krivoguzovVlad, Kyrylo -Polezhaiev, Lenny Jorissen, Linus Svensson, Loïc Le Page, Loïc Minier, -Lucas Stach, Ludvig Rappe, Luka Blaskovic, luke.lin, Luke Yelavich, -Marcin Kolny, Marc Leeman, Marco Felsch, Marcos Kintschner, Marek -Olejnik, Mark Nauwelaerts, Markus Ebner, Martin Liska, Martin Theriault, -Mart Raudsepp, Matej Knopp, Mathieu Duponchelle, Mats Lindestam, Matthew -Read, Matthew Waters, Matus Gajdos, Maxim Paymushkin, Maxim P. -Dementiev, Michael Bunk, Michael Gruner, Michael Olbrich, Miguel París -Díaz, Mikhail Fludkov, Milian Wolff, Millan Castro, Muhammet Ilendemli, -Nacho García, Nayana Topolsky, Nian Yan, Nicola Murino, Nicolas -Dufresne, Nicolas Pernas Maradei, Niels De Graef, Nikita Bobkov, Niklas -Hambüchen, Nirbheek Chauhan, Ognyan Tonchev, okuoku, Oleksandr -Kvl,Olivier Crête, Ondřej Hruška, Pablo Marcos Oltra, Patricia Muscalu, -Peter Seiderer, Peter Workman, Philippe Normand, Philippe Renon, Philipp -Zabel, Pieter Willem Jordaan, Piotr Drąg, Ralf Sippl, Randy Li, Rasmus -Thomsen, Ratchanan Srirattanamet, Raul Tambre, Ray Tiley, Richard -Kreckel, Rico Tzschichholz, R Kh, Robert Rosengren, Robert Tiemann, -Roman Shpuntov, Roman Sivriver, Ruben Gonzalez, Rubén Gonzalez, -rubenrua, Ryan Huang, Sam Gigliotti, Santiago Carot-Nemesio, Saunier -Thibault, Scott Kanowitz, Sebastian Dröge, Sebastiano Barrera, Seppo -Yli-Olli, Sergey Nazaryev, Seungha Yang, Shinya Saito, Silvio -Lazzeretti, Simon Arnling Bååth, Siwon Kang, sohwan.park, Song Bing, -Soohyun Lee, Srimanta Panda, Stefano Buora, Stefan Sauer, Stéphane -Cerveau, Stian Selnes, Sumaid Syed, Swayamjeet, Thiago Santos, Thibault -Saunier, Thomas Bluemel, Thomas Coldrick, Thor Andreassen, Tim-Philipp -Müller, Ting-Wei Lan, Tobias Ronge, trilene, Tulio Beloqui, U. Artie -Eoff, VaL Doroshchuk, Varunkumar Allagadapa, Vedang Patel, Veerabadhran -G, Víctor Manuel Jáquez Leal, Vivek R, Vivia Nikolaidou, Wangfei, Wang -Zhanjun, Wim Taymans, Wonchul Lee, Xabier Rodriguez Calvar, Xavier -Claessens, Xidorn Quan, Xu Guangxin, Yan Wang, Yatin Maan, Yeongjin -Jeong, yychao, Zebediah Figura, Zeeshan Ali, Zeid Bekli, Zhiyuan Sraf, -Zoltán Imets, +- this section will be filled in in due course … and many others who have contributed bug reports, translations, sent suggestions or helped testing. -Stable 1.18 branch +Stable 1.20 branch -After the 1.18.0 release there will be several 1.18.x bug-fix releases +After the 1.20.0 release there will be several 1.20.x bug-fix releases which will contain bug fixes which have been deemed suitable for a stable branch, but no new features or intrusive changes will be added to -a bug-fix release usually. The 1.18.x bug-fix releases will be made from -the git 1.18 branch, which will be a stable branch. +a bug-fix release usually. The 1.20.x bug-fix releases will be made from +the git 1.20 branch, which will be a stable branch. -1.18.0 +1.20.0 -1.18.0 was released on 7 September 2020. +1.20.0 is scheduled to be released around July 2021. -Schedule for 1.20 +Schedule for 1.22 -Our next major feature release will be 1.20, and 1.19 will be the -unstable development version leading up to the stable 1.20 release. The -development of 1.19/1.20 will happen in the git master branch. +Our next major feature release will be 1.22, and 1.21 will be the +unstable development version leading up to the stable 1.22 release. The +development of 1.21/1.22 will happen in the git master branch. -The plan for the 1.20 development cycle is yet to be confirmed, but it -is now expected that feature freeze will take place some time in January -2021, with the first 1.20 stable release around February/March 2021. +The plan for the 1.22 development cycle is yet to be confirmed, but it +is hoped that feature freeze will take place some time in December 2021. -1.20 will be backwards-compatible to the stable 1.18, 1.16, 1.14, 1.12, -1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series. +1.22 will be backwards-compatible to the stable 1.20, 1.18, 1.16, 1.14, +1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series. ------------------------------------------------------------------------ These release notes have been prepared by Tim-Philipp Müller with -contributions from Mathieu Duponchelle, Matthew Waters, Nirbheek -Chauhan, Sebastian Dröge, Thibault Saunier, and Víctor Manuel Jáquez -Leal. +contributions from … License: CC BY-SA 4.0 diff --git a/README b/README index 300b39868d..c95e53e28d 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -GStreamer 1.18.x stable series +GStreamer 1.19.x development series WHAT IT IS ---------- diff --git a/RELEASE b/RELEASE index 852a7102d4..43016107f5 100644 --- a/RELEASE +++ b/RELEASE @@ -1,18 +1,15 @@ -This is GStreamer gst-plugins-good 1.18.0. +This is GStreamer gst-plugins-good 1.19.1. -The GStreamer team is thrilled to announce a new major feature release -of your favourite cross-platform multimedia framework! +GStreamer 1.19 is the development branch leading up to the next major +stable version which will be 1.20. -As always, this release is again packed with new features, bug fixes and -other improvements. - -The 1.18 release series adds new features on top of the 1.16 series and is +The 1.19 development series adds new features on top of the 1.18 series and is part of the API and ABI-stable 1.x release series of the GStreamer multimedia framework. -Full release notes can be found at: +Full release notes will one day be found at: - https://gstreamer.freedesktop.org/releases/1.18/ + https://gstreamer.freedesktop.org/releases/1.20/ Binaries for Android, iOS, Mac OS X and Windows will usually be provided shortly after the release. diff --git a/docs/gst_plugins_cache.json b/docs/gst_plugins_cache.json index 7d79b3500c..005a16f2cf 100644 --- a/docs/gst_plugins_cache.json +++ b/docs/gst_plugins_cache.json @@ -6607,7 +6607,7 @@ "construct": false, "construct-only": false, "controllable": false, - "default": "GStreamer 1.19.0.1 FLV muxer", + "default": "GStreamer 1.19.1 FLV muxer", "mutable": "null", "readable": true, "type": "gchararray", @@ -6619,7 +6619,7 @@ "construct": false, "construct-only": false, "controllable": false, - "default": "GStreamer 1.19.0.1 FLV muxer", + "default": "GStreamer 1.19.1 FLV muxer", "mutable": "null", "readable": true, "type": "gchararray", @@ -20112,7 +20112,7 @@ "construct": false, "construct-only": false, "controllable": false, - "default": "GStreamer/1.19.0.1", + "default": "GStreamer/1.19.1", "mutable": "null", "readable": true, "type": "gchararray", @@ -22069,7 +22069,7 @@ "construct": false, "construct-only": false, "controllable": false, - "default": "GStreamer souphttpsrc 1.19.0.1 ", + "default": "GStreamer souphttpsrc 1.19.1 ", "mutable": "null", "readable": true, "type": "gchararray", diff --git a/gst-plugins-good.doap b/gst-plugins-good.doap index 00966a2355..ba8918ce96 100644 --- a/gst-plugins-good.doap +++ b/gst-plugins-good.doap @@ -32,6 +32,16 @@ the plug-in code, LGPL or LGPL-compatible for the supporting library). + + + 1.19.1 + master + + 2021-06-01 + + + + 1.18.0 diff --git a/meson.build b/meson.build index 97f76a4d86..e04c71d79f 100644 --- a/meson.build +++ b/meson.build @@ -1,5 +1,5 @@ project('gst-plugins-good', 'c', - version : '1.19.0.1', + version : '1.19.1', meson_version : '>= 0.54', default_options : [ 'warning_level=1', 'buildtype=debugoptimized' ])