From 6d9125f01c115b13f3e525f9508ee98c4307499c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= Date: Tue, 1 Jun 2021 00:14:22 +0100 Subject: Release 1.19.1 --- ChangeLog | 12165 +++++++++++++++++++++++++++++++++++++++++++++++++ NEWS | 2056 +-------- README | 2 +- RELEASE | 15 +- gst-plugins-bad.doap | 10 + meson.build | 2 +- 6 files changed, 12257 insertions(+), 1993 deletions(-) diff --git a/ChangeLog b/ChangeLog index 86cb24720..acb734309 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,12172 @@ +=== release 1.19.1 === + +2021-06-01 00:14:22 +0100 Tim-Philipp Müller + + * ChangeLog: + * NEWS: + * README: + * RELEASE: + * gst-plugins-bad.doap: + * meson.build: + Release 1.19.1 + +2021-04-08 10:11:52 -0300 Daniel Almeida + + * sys/v4l2codecs/gstv4l2codecvp8dec.c: + v4l2codecs: gstv4l2codecsvp8dec: implement a render delay + The v4l2 backend support delayed output for performance reasons. + It is then possible to use render delays to queue multiple requests + simultaneously, thus increasing performance. + Part-of: + +2021-04-07 18:24:27 -0300 Daniel Almeida + + * gst-libs/gst/codecs/gstvp8decoder.c: + * gst-libs/gst/codecs/gstvp8decoder.h: + codecs: gstvp8decoder: add support for render delay + Some decoding APIs support delayed output for performance reasons. + One example would be to request decoding for multiple frames and + then query for the oldest frame in the output queue. + This also increases throughput for transcoding and improves seek + performance when supported by the underlying backend. + Introduce support in the vp8 base class, so that backends that + support render delays can actually implement it. + Part-of: + +2021-05-17 10:49:41 +0100 Philippe Normand + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Stop transceivers update after first SDP error + When invalid SDP is supplied, _update_transceiver_from_sdp_media() sets the + GError, so it is invalid to continue any further SDP processing, we have to exit + early when the first error is raised. + Fixes #1595 + Part-of: + +2021-05-28 23:21:19 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11device.c: + * sys/d3d11/gstd3d11decoder.cpp: + d3d11: Suppress some warning logs + We uses gst_d3d11_device_new() for enumerating device which can + fail for some reason. Don't print warning log for the case. + And decoding capability check is the same case as well. + Part-of: + +2021-05-28 17:05:02 -0400 Roman Sivriver + + * ext/hls/gsthlssink2.c: + hlssink2: Initialize debug category to prevent an assert with `fatal-warnings` + Part-of: + +2021-05-21 20:02:53 +0900 Seungha Yang + + * sys/d3d11/gstd3d11compositor.cpp: + d3d11compositor: Reuse converter on alpha update + ... instead of creating converter object + Part-of: + +2021-05-18 01:24:29 +0900 Seungha Yang + + * sys/d3d11/gstd3d11compositor.cpp: + * sys/d3d11/gstd3d11convert.cpp: + * sys/d3d11/gstd3d11converter.cpp: + * sys/d3d11/gstd3d11converter.h: + * sys/d3d11/gstd3d11overlaycompositor.cpp: + * sys/d3d11/gstd3d11shader.cpp: + * sys/d3d11/gstd3d11shader.h: + * sys/d3d11/gstd3d11window.cpp: + * sys/d3d11/gstd3d11window_dummy.cpp: + d3d11converter: Introduce config to be extensible + Add a config argument like that of GstVideoConverter so that + we can add more options without modifying existing methods + Part-of: + +2021-05-21 21:30:42 +0900 Seungha Yang + + * sys/d3d11/gstd3d11compositor.cpp: + * sys/d3d11/gstd3d11converter.cpp: + * sys/d3d11/gstd3d11overlaycompositor.cpp: + * sys/d3d11/gstd3d11shader.cpp: + * sys/d3d11/gstd3d11shader.h: + d3d11shader: Don't hold state object in GstD3D11Quad + We might want to update state object + Part-of: + +2021-05-27 16:22:42 -0400 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codech264dec.c: + * sys/v4l2codecs/gstv4l2codech264dec.h: + * sys/v4l2codecs/gstv4l2codecvp8dec.c: + * sys/v4l2codecs/gstv4l2codecvp8dec.h: + * sys/v4l2codecs/plugin.c: + v4lcodecs: Validate src formats + This add src format validation, this avoid registering element for + drivers we don't support any of their src formats. This also special + case the AlphaDecodeBin wrapper, as we know that alphacombine element + only support I420 and NV12 for now. + Part-of: + +2021-05-22 16:29:09 -0300 Daniel Almeida + + * sys/v4l2codecs/gstv4l2codecalphadecodebin.c: + * sys/v4l2codecs/gstv4l2codecalphadecodebin.h: + * sys/v4l2codecs/gstv4l2codech264dec.c: + * sys/v4l2codecs/gstv4l2codecvp8dec.c: + * sys/v4l2codecs/gstv4l2decoder.c: + * sys/v4l2codecs/gstv4l2decoder.h: + * sys/v4l2codecs/meson.build: + v4l2codecs: add wrappers for alpha decode + codecalpha is a new plugin introduced to support VP8/VP9 alpha as + defined in the WebM and Matroska specifications. It splits the stream + into two streams, one for the alpha and one for the actual content, + then it decodes them separately with vpxdec and finally combine the + results as A420 or AV12 (i.e. YUV + an extra alpha plane). + The workflow above is setup by means of a bin, gstcodecalphabin. + This patch simulates the same workflow into the v4l2codecs namespace, + thus using the new v4l2 stateless decoders for hardware acceleration. + This is so we can register the new alpha decode elements only if the + hardware produces formats we support, i.e. I420 or NV12 for now. + Part-of: + +2021-05-19 18:45:19 -0300 Daniel Almeida + + * docs/plugins/gst_plugins_cache.json: + * gst/codecalpha/gstalphacombine.c: + codecalpha: alphacombine: add support for NV12/AV12 + Alpha combine works by appending the GstMemory for the alpha channel + to the GstBuffer containing I420, thereby pushing A420 on its src pad. + Add support for the same workflow for NV12, thereby producing the + recently introduced AV12 format (NV12 + Alpha). + Part-of: + +2021-05-25 20:21:34 +0900 Seungha Yang + + * gst/interlace/gstinterlace.c: + interlace: Don't set field-order field for progressive caps + That would cause negotiation issue + Part-of: + +2021-05-25 19:47:28 +0900 Seungha Yang + + * gst/interlace/gstinterlace.c: + interlace: Drop framerate from query caps of sinkpad + Query caps should return caps which represent the element can accept, + not resulting format. + Fixing negotiation error with + gst-launch-1.0 videotestsrc ! video/x-raw,framerate=25/1 ! interlace field-pattern=0 ! fakesink + Part-of: + +2021-05-26 16:37:06 +0900 Seungha Yang + + * sys/d3d11/gstd3d11compositor.cpp: + d3d11compositor: Fix caps update handling + New caps is applied only when previous buffer is consumed if any. + So, the lastest given caps might not be corresponding to the current buffer + to be handled. + Part-of: + +2021-05-20 13:47:11 +0200 Víctor Manuel Jáquez Leal + + * gst-libs/gst/va/gstvadisplay.h: + * gst-libs/gst/va/gstvadisplay_drm.h: + * gst-libs/gst/va/gstvadisplay_wrapped.h: + libs: va: display: Handle auto clean up macros. + Add G_DEFINE_AUTOPTR_CLEANUP_FUNC macro for display classes, so auto + pointers are possible to users. + Part-of: + +2021-05-17 19:06:34 +0800 He Junyan + + * sys/va/gstvah265dec.c: + va: h265dec: Add current picture into reference list for SCC. + The current picture is not in the DPB, so we need to add it manually + to the reference list when SCC is enabled. + Part-of: + +2021-05-21 23:47:14 +0800 He Junyan + + * sys/va/gstvah265dec.c: + va: h265dec: Set Screen Content extension (SCC) for picture parameters. + We already declare the support of HEVC screen content extension profiles + in the profile mapping list, but we fail to generate the correct VA picture + parameters buffers. This may cause the GPU hang. + We need to fill the buffer of VAPictureParameterBufferHEVCExtension correctly. + Part-of: + +2021-05-17 17:47:07 +0800 He Junyan + + * sys/va/gstvah265dec.c: + va: h265dec: Use get_profile_from_sps() to recognize the profile. + The function of gst_h265_get_profile_from_sps() is better than the + function gst_h265_profile_tier_level_get_profile() when we recognize + the profile of the stream, becaue it considers the compatibility. + It is also used by h265parse to recognize the profile. So it is + better to keep the same behaviour with the parse and other decoders. + Part-of: + +2021-05-21 23:21:12 +0800 He Junyan + + * sys/va/gstvah265dec.c: + va: h265dec: Set range extension for picture and slice parameters. + We already declare the support of HEVC range extension profiles in + the profile mapping list, but we fail to generate the correct VA + picture and slice parameters buffers. This may cause the GPU hang. + We need to fill the buffer of VAPictureParameterBufferHEVCExtension + and VASliceParameterBufferHEVCExtension correctly. + Part-of: + +2021-05-24 18:18:52 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvah265dec.c: + va: h265dec: Use picture and slide extension parameters. + This is transitional commit to later implement extended and screen + profiles. + Part-of: + +2021-05-24 18:34:25 +0100 Tim-Philipp Müller + + * ext/aom/gstav1enc.c: + * ext/dash/gstdashdemux.c: + * ext/dtls/gstdtlsdec.c: + * ext/dtls/gstdtlsenc.c: + * ext/fdkaac/gstfdkaacenc.c: + * ext/sctp/gstsctpenc.c: + * ext/sndfile/gstsfdec.c: + * gst/videoparsers/gstav1parse.c: + * gst/videoparsers/gstmpeg4videoparse.c: + * tests/check/elements/kate.c: + * tests/check/elements/pcapparse.c: + Use gst_buffer_new_memdup() + Update for function rename in core. + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/827 + Part-of: + +2021-05-22 18:05:18 +0100 Philippe Normand + + * ext/wpe/WPEThreadedView.cpp: + * ext/wpe/WPEThreadedView.h: + * ext/wpe/gstwpesrcbin.cpp: + * ext/wpe/gstwpevideosrc.cpp: + * ext/wpe/meson.build: + wpe: Bump wpebackend-fdo version requirement to 1.8 + Debian bullseye has this version already, and this allows us to get rid of many + ifdefs. The mouse scroll handling is actually functional now as well. + Part-of: + +2021-05-23 16:10:53 +0100 Tim-Philipp Müller + + * ext/aom/gstav1enc.c: + * ext/dash/gstdashdemux.c: + * ext/dtls/gstdtlsdec.c: + * ext/dtls/gstdtlsenc.c: + * ext/fdkaac/gstfdkaacenc.c: + * ext/sctp/gstsctpenc.c: + * ext/sndfile/gstsfdec.c: + * gst/videoparsers/gstav1parse.c: + * gst/videoparsers/gstmpeg4videoparse.c: + * tests/check/elements/kate.c: + * tests/check/elements/pcapparse.c: + Use new gst_buffer_new_copy() + Part-of: + +2021-05-21 15:18:21 -0300 Daniel Almeida + + * docs/plugins/gst_plugins_cache.json: + doc: update gst_plugins_cache.json + Part-of: + +2021-05-14 20:22:26 +0200 Jakub Adam + + * sys/winscreencap/dxgicapture.c: + * sys/winscreencap/dxgicapture.h: + * sys/winscreencap/gstdxgiscreencapsrc.c: + dxgiscreencapsrc: renegotiate caps on resolution change + When desktop gets resized, recreate the textures and renegotiate the + source caps with the updated video dimensions. + Part-of: + +2021-05-18 14:09:01 +0800 He Junyan + + * sys/va/gstvah265dec.c: + va: h265dec: Set LastSliceOfPic for multi sliced frames. + VA-API HEVC decoding needs to known which is the last slice of a + picture, but slices are processed sequencially, so we know the + last slice until all the slices are already pushed into the + VABuffer array. + In order to mark the last slice, they are pushed into the + VABuffer array with a delay of one slice: the first slice is + hold, and when the second slice come, the first one is pushed + while holding the second, and so on. Finally, at end_picture(), + the last slice is marked and pushed into the array. + Co-author: Victor Jaquez + Part-of: + +2021-05-20 17:03:15 +0900 Seungha Yang + + * sys/d3d11/gstd3d11desktopdup.cpp: + * sys/d3d11/gstd3d11desktopdup.h: + * sys/d3d11/gstd3d11desktopdupsrc.cpp: + * sys/d3d11/gstd3d11desktopdupsrc.h: + d3d11desktopdupsrc: Add support for desktop size/rotation mode change + Re-negotiates with updated size on desktop size + (i.e., resolution, scaling factor), and rotation mode change + Part-of: + +2021-05-20 10:09:57 +0200 Jan Alexander Steffens (heftig) + + * gst/mpegtsmux/tsmux/tsmux.c: + mpegtsmux: Fixup program array indices after stream removal + Each stream stores the `program_array_index` of its position in its + program's `streams` array. When we remove a stream from this array, we + need to correct the `program_array_index` of all streams that were + backshifted by the removal. + Also extract the removal into a new function and add some more safety + checks. + Part-of: + +2021-05-20 18:49:01 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11memory.c: + d3d11memory: Protect map and unmap with device lock + We should lock memory object with gst_d3d11_device_lock() first + then GST_D3D11_MEMORY_LOCK() need to be used. + One observed deadlock case is that: + - Thread A takes d3d11 device lock + - At the same time, Thread B tries CPU map to d3d11memory which requires + d3d11 device lock as well, but it's already taken by Thread A. + Part-of: + +2021-05-20 18:38:17 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11memory.c: + d3d11memory: Add trace log for debugging locking thread + Part-of: + +2021-05-20 15:39:39 +0900 Seungha Yang + + * gst/audiolatency/gstaudiolatency.c: + audiolatency: Drop incoming downstream stick events + stream-start, caps, and segment events will be pushed by internal + audiotestsrc element. + Part-of: + +2021-05-20 15:28:13 +0900 Seungha Yang + + * gst/audiolatency/gstaudiolatency.c: + audiolatency: Use live mode audiotestsrc + Expected use case of audiolatency element is that mimic audio capture + device which is most likely live source. So audiolatency element + should use live mode as well. + Part-of: + +2021-05-19 18:48:29 -0400 Thibault Saunier + + * ext/wpe/gstwpesrcbin.cpp: + * ext/wpe/meson.build: + wpe: Bump WPE dependency to 2.28 + The new audio feature depends on WPE 2.28 so we should just bump our + requirement to that. + Part-of: + +2021-05-20 00:51:08 +0900 Seungha Yang + + * sys/d3d11/gstd3d11compositor.cpp: + * sys/d3d11/gstd3d11compositor.h: + * sys/d3d11/gstd3d11compositorbin.cpp: + d3d11compositor: Fix missing D3D11 prefix + Fix typo, no functional change + Part-of: + +2021-05-18 17:49:23 -0400 Thibault Saunier + + * docs/plugins/gst_plugins_cache.json: + * ext/wpe/gstwpe.cpp: + * ext/wpe/gstwpesrcbin.cpp: + wpe: Update doc cache + Part-of: + +2021-04-21 23:14:13 -0400 Thibault Saunier + + * ext/wpe/WPEThreadedView.cpp: + wpe: Properly respect LIBGL_ALWAYS_SOFTWARE + Part-of: + +2021-05-01 21:48:23 -0400 Thibault Saunier + + * ext/wpe/WPEThreadedView.cpp: + * ext/wpe/gstwpesrcbin.cpp: + * ext/wpe/wpe-extension/gstwpebusmsgforwarder.c: + * ext/wpe/wpe-extension/gstwpeextension.c: + * ext/wpe/wpe-extension/gstwpeextension.h: + * ext/wpe/wpe-extension/meson.build: + wpe: Relay messages from WPE internal pipelines + It is based on a tracer as it allows us to very easily get + every message that are posted on any bus inside the process. + Part-of: + +2021-04-19 20:46:46 -0400 Thibault Saunier + + * ext/wpe/WPEThreadedView.cpp: + * ext/wpe/WPEThreadedView.h: + * ext/wpe/gstwpe.cpp: + * ext/wpe/gstwpe.h: + * ext/wpe/gstwpesrcbin.cpp: + * ext/wpe/gstwpesrcbin.h: + * ext/wpe/gstwpevideosrc.cpp: + * ext/wpe/meson.build: + * ext/wpe/wpe-extension/gstwpeaudiosink.c: + * ext/wpe/wpe-extension/gstwpeextension.c: + * ext/wpe/wpe-extension/gstwpeextension.h: + * ext/wpe/wpe-extension/meson.build: + wpe: Base wpe audio implementation on a web extension + This makes the implementation simpler and enable us to map + webviews and audio stream much more easily + Part-of: + +2019-12-08 13:16:38 +0000 Philippe Normand + + * ext/wpe/WPEThreadedView.cpp: + wpe: Enable WebAudio + Part-of: + +2019-12-08 11:49:20 +0000 Philippe Normand + + * ext/wpe/WPEThreadedView.cpp: + * ext/wpe/WPEThreadedView.h: + * ext/wpe/gstwpe-private.h: + * ext/wpe/gstwpe.cpp: + * ext/wpe/gstwpesrcbin.cpp: + * ext/wpe/gstwpesrcbin.h: + * ext/wpe/gstwpevideosrc.cpp: + * ext/wpe/meson.build: + * tests/examples/meson.build: + * tests/examples/wpe/meson.build: + * tests/examples/wpe/wpe.c: + wpe: Implement audio support + The wpesrc bin now exposes "sometimes" audio src pads, one for every PCM audio + stream created by WPEWebKit. + Part-of: + +2021-03-10 17:27:52 -0300 Thibault Saunier + + * ext/wpe/WPEThreadedView.cpp: + * ext/wpe/WPEThreadedView.h: + * ext/wpe/gstwpe.cpp: + * ext/wpe/gstwpesrcbin.cpp: + * ext/wpe/gstwpesrcbin.h: + * ext/wpe/gstwpevideosrc.cpp: + * ext/wpe/gstwpevideosrc.h: + * ext/wpe/meson.build: + wpe: Move wpesrc to wpevideosrc and add a wrapper bin `wpesrc` + Currently the bin contains a single element but we are going + to implement audio support and expose extra pads for audio + Part-of: + +2021-05-18 00:43:23 -0400 Doug Nazar + + * ext/sctp/gstsctpenc.c: + sctp: Ensure pad is still a child of element before removal + During pipeline shutdown there are several competing paths to remove + pads. Avoids tests failing due to: + Unexpected critical/warning: Padname '':sink_1 does not belong to element sctpenc1 when removing + Part-of: + +2021-05-17 09:13:28 -0400 Doug Nazar + + * ext/sctp/gstsctpdec.c: + sctp: Fix race of pad removal during reset/stop + Both reset & stop remove existing pads. Can result in warning from + gst_element_remove_pad(). + Part-of: + +2021-05-17 09:11:54 -0400 Doug Nazar + + * ext/webrtc/webrtcdatachannel.c: + webrtcbin: Fix race bringing up sctp data channel + Notifying before pads are linked can cause the stream to fail to start. + Part-of: + +2021-05-13 21:11:30 +1000 Matthew Waters + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/gstwebrtcice.c: + webrtcbin: advertise harder the rtcp-mux-only requirement + And ignore rtcp ICE candidates + Part-of: + +2021-05-14 10:47:05 -0500 Sid Sethupathi + + * docs/plugins/gst_plugins_cache.json: + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: update default jb latency docs + Part-of: + +2021-05-18 16:38:04 -0400 Doug Nazar + + * ext/dtls/gstdtlsenc.c: + dtls: Let sender know when we are flushing + Prevents endless loop during shutdown where we end up sending 0 bytes. + Part-of: + +2021-05-18 16:31:47 -0400 Doug Nazar + + * ext/dtls/gstdtlsconnection.c: + * ext/dtls/gstdtlsconnection.h: + dtls: Add ability to set custom GstFlowReturn on callback error + Part-of: + +2021-05-18 20:26:38 -0400 Olivier Crête + + * ext/webrtc/transportsendbin.c: + * ext/webrtc/transportsendbin.h: + webrtc: Remove reundundant context object in transportsendbin + Part-of: + +2021-05-18 20:18:28 -0400 Olivier Crête + + * ext/webrtc/transportsendbin.c: + * ext/webrtc/transportsendbin.h: + webrtc: Wait until ICE is connected to start DTLS handshake process + Part-of: + +2021-05-18 18:29:16 -0400 Olivier Crête + + * ext/webrtc/transportsendbin.c: + * ext/webrtc/transportsendbin.h: + webrtcbin: Remove pad probe on nicesink + This pad probe is no longer necessary, libnice now drops + all buffers before the stream is connected. This pad problem + also caused deadlocks in some situations. + Part-of: + +2021-05-17 20:59:19 -0400 Olivier Crête + + * ext/kate/gstkatedec.c: + * ext/kate/gstkateenc.c: + * ext/kate/gstkateparse.c: + * ext/kate/gstkatetag.c: + * ext/kate/gstkatetiger.c: + kate: Initialize debug categories + Part-of: + +2021-05-13 10:27:49 +0200 Víctor Manuel Jáquez Leal + + * gst-libs/gst/va/gstvadisplay.c: + * gst-libs/gst/va/gstvadisplay.h: + * gst-libs/gst/va/gstvadisplay_drm.c: + * gst-libs/gst/va/gstvadisplay_wrapped.c: + libs: va: Documentation and annotations. + Part-of: + +2021-05-07 17:05:38 +0800 He Junyan + + * gst-libs/gst/va/meson.build: + * tests/examples/va/main.c: + * tests/examples/va/meson.build: + * tests/examples/va/multiple-vpp.c: + examples: va: Update the VA examples because of the new va lib. + Because we introduce the new va lib, the va examples need to include + new header files and add more library linkage. + Part-of: + +2021-05-13 18:46:21 +0200 Víctor Manuel Jáquez Leal + + * gst-libs/gst/va/gstvadisplay_wrapped.c: + * gst-libs/gst/va/gstvadisplay_wrapped.h: + * sys/va/gstvautils.c: + libs: va: display_wrapper: Use gpointer for VADisplay. + In order to be coherent along all the implementation. + Part-of: + +2021-05-06 18:23:23 +0800 He Junyan + + * gst-libs/gst/meson.build: + * gst-libs/gst/va/gstvadisplay.c: + * gst-libs/gst/va/gstvadisplay.h: + * gst-libs/gst/va/gstvadisplay_drm.c: + * gst-libs/gst/va/gstvadisplay_drm.h: + * gst-libs/gst/va/gstvadisplay_wrapped.c: + * gst-libs/gst/va/gstvadisplay_wrapped.h: + * gst-libs/gst/va/meson.build: + * gst-libs/gst/va/va-prelude.h: + * gst-libs/gst/va/va_fwd.h: + * sys/va/gstvaallocator.h: + * sys/va/gstvacaps.c: + * sys/va/gstvacaps.h: + * sys/va/gstvadecoder.c: + * sys/va/gstvadecoder.h: + * sys/va/gstvadevice.c: + * sys/va/gstvadevice.h: + * sys/va/gstvadisplay.h: + * sys/va/gstvadisplay_priv.c: + * sys/va/gstvadisplay_priv.h: + * sys/va/gstvafilter.c: + * sys/va/gstvafilter.h: + * sys/va/gstvautils.c: + * sys/va/gstvautils.h: + * sys/va/gstvavpp.c: + * sys/va/meson.build: + libs: va: Move the VA common logic as a lib. + The VA acceleration now has more usages in linux-like platforms, + such as the MSDK. The different plugins based on the VA acceleration + need to share some common logic and types. We now move the display + related functions and types into a common va lib. + Part-of: + +2021-05-17 11:42:07 +0800 mkba + + * sys/msdk/gstmsdkh265enc.c: + msdk: add profile main-still-picture for hevc encoder + Part-of: + +2021-05-15 00:39:57 +0900 Seungha Yang + + * gst/interlace/gstinterlace.c: + interlace: Fix too small buffer size error + Even though input/output resolutions are identical there, default + buffer size of progressive and interleaved formats could be different + because we are rounding up height of all plane of interlaced frame + to be multiple of two. + Part-of: + +2021-03-01 12:09:43 +0800 Haihao Xiang + + * sys/msdk/gstmsdkcontext.c: + msdk: use MFXJoinSession() to join the parent and child sessions + Part-of: + +2021-02-04 15:27:13 +0800 Haihao Xiang + + * sys/msdk/gstmsdkcontext.c: + * sys/msdk/msdk.c: + * sys/msdk/msdk.h: + msdk: use a new method to create mfx session when using oneVPL dispatcher + In oneVPL, MFXLoad() and MFXCreateSession() are required to create a + workable mfx session[1] + [1] https://spec.oneapi.com/versions/latest/elements/oneVPL/source/programming_guide/VPL_prg_session.html#onevpl-dispatcher + Part-of: + +2021-02-18 13:38:25 +0800 Haihao Xiang + + * meson_options.txt: + * sys/msdk/meson.build: + msdk: allow user build this plugin against MFX version 2.2+ (oneVPL) + Intel oneVPL SDK (oneVPL) is a successor to Intel Media SDK (MSDK)[1]. + User may use -Dmfx_api=MSDK or -Dmfx_api=oneVPL to specify the required + SDK when building this plugin. If the SDK is not specified, meson will + try MSDK firstly, then oneVPL if MSDK is not available + Version 2.2+ is required in this patch because pkg-config file was not + provided officially before version 2.2 + [1]https://spec.oneapi.com/versions/latest/elements/oneVPL/source/appendix/VPL_intel_media_sdk.html + Part-of: + +2021-05-14 11:56:49 +0800 Haihao Xiang + + * sys/msdk/gstmsdkvp9dec.c: + msdkvp9dec: do not include mfxvp9.h + The VP9 related definitions in mfxvp9.h are available under the + condition of 'MFX_VERSION >= MFX_VERSION_NEXT', which implies that these + definitions are never used in a public release. + This is in preparation for oneVPL support because mfxvp9.h was + removed from oneVPL + Part-of: + +2020-08-04 12:53:35 +0800 Haihao Xiang + + * sys/msdk/msdk.c: + * sys/msdk/msdk.h: + msdk: don't load user plugins for MFX version 2.0+ + MFX version 2.0+ no longer supports user plugins, please refer to the + links for details + https://spec.oneapi.com/versions/latest/elements/oneVPL/source/appendix/VPL_intel_media_sdk.html#msdk-full-name-feature-removals + https://github.com/oneapi-src/oneVPL + This is in preparation for oneVPL support + Part-of: + +2020-08-04 12:55:35 +0800 Haihao Xiang + + * sys/msdk/msdk.c: + msdk: exclude the audio code for MFX version 2.0+ + MFX version 2.0+ no longer supports audio functions, please refer to the + links below for details + https://spec.oneapi.com/versions/latest/elements/oneVPL/source/appendix/VPL_intel_media_sdk.html#msdk-full-name-feature-removals + https://github.com/oneapi-src/oneVPL + This is in preparation for oneVPL support + Part-of: + +2021-05-14 14:08:17 -0400 Nicolas Dufresne + + * gst/codecalpha/gstalphacombine.c: + alphacombine: Ignore all events coming from the alpha_pad + As per usage of this element, everything from this pad is a + duplicate. Instead of implemented needless aggregation, simply + drop all events from this pad and let the one from the main stream + passthrough. Also stop proxying some queries from the alpha pad_too. + This fixes racy test failure: + - validate.file.playback.scrub_forward_seeking.opus_vp9-alpha_webm + Part-of: + +2021-05-14 14:05:59 -0400 Nicolas Dufresne + + * gst/codecalpha/gstcodecalphademux.c: + codecalphademux: Do not set a GstFlowReturn from a boolean + This was a small overlook, gst_pad_send_event() returns a boolean, + so setting it into ret could confuse the flow combiner. Though, + it didn't bug, since both 0 and 1 are success (though 1 being + undefined). + Part-of: + +2021-05-14 14:04:00 -0400 Nicolas Dufresne + + * gst/codecalpha/gstcodecalphademux.c: + codecalphademux: Remove eos flow return workaround + It turns out that downstream returning OK after EOS is a bug in + multiqueue. As we moved to queue, we no longer have this issue. + Let's keep the code clean and just assuming that downstream will + keep returning EOS and allow convergence of flow. + Part-of: + +2021-05-13 15:18:34 -0400 Olivier Crête + + * ext/openh264/gstopenh264element.c: + openh264: Don't use GOnce for ABI check + It turns out the value used for g_once_* APIs can't be + zero. And this is a very cheap check, so let's just do it every time. + Part-of: + +2021-05-13 15:25:57 -0400 Olivier Crête + + * tests/check/elements/webrtcbin.c: + webrtc test: Print content of error GstMessage + Makes it easier to interpret the result of the CI! + Part-of: + +2021-05-06 13:52:32 -0400 Olivier Crête + + * tests/check/elements/webrtcbin.c: + webrtcbin tests: Add test for intersection src pad caps + This checks that the codec preferences are intersected also with what + the src pad can handle. + Part-of: + +2021-04-14 19:46:56 -0400 Olivier Crête + + * tests/check/elements/webrtcbin.c: + webrtc test: Add explicit test clock + This way the test clock is not linked to the multiple harnesses + Part-of: + +2021-05-06 17:58:15 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Intersect answer with codec prefs & capabilities + In case the local capabilities changed since the last negotiaton, + we need to re-intersect and see if the result would be different. + Part-of: + +2021-05-06 17:50:38 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Ignore current caps for codec negotiation + On the sink pad, we want the caps of the current stream, those + are the "received_caps" field. If we haven't received caps yet, then + we only care about the caps that the next element can accept, that is + the caps from the peer pad (and the preferences). Otherwise, we prevent + re-negotiation to a better codec when possible. + Part-of: + +2021-05-05 19:21:18 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Remove dead code + The function is only called to create an offer, so no + need to pass the offer parameter and then check it. + Part-of: + +2021-05-05 19:18:02 -0400 Olivier Crête + + * tests/check/elements/webrtcbin.c: + webrtc test: Add test for codec preferences negotiation + Validate that it does the intersection with the caps from + the sink pad and rejects the offer creation otherwise. + Part-of: + +2021-05-05 19:00:11 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/utils.h: + webrtcbin: Refactor codec preference retrieval + Now intersect against pads on both sides if they are available. + If the intersection fails, we now just reject the creation of the offer + or answer as it means that the codec_preferences are too restrictive or + that the caps on both sides the webrtcbin are not compatible. + Part-of: + +2021-04-30 17:04:12 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Intersect codec preferences with caps from pads + When creating an offer or an answer, also take into account + the caps on the pads as well as the codec preferences when both are set. + Part-of: + +2021-04-30 16:21:14 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + * tests/check/elements/webrtcbin.c: + webrtcbin: Implement caps queries on sinkpad based on codec preferences + Also includes a unit test. + Part-of: + +2021-04-30 15:04:33 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Hold transceiver lock when accessing codec_preferences + This is required to allow the applications to modify the preferences. + Part-of: + +2021-04-30 14:55:41 -0400 Olivier Crête + + * gst-libs/gst/webrtc/rtptransceiver.c: + webrtcbin: Hold lock while accessing the codec preferences + They could be changed at runtime by the application, so take the lock + when modifying them. + Part-of: + +2021-04-21 15:55:00 -0400 Olivier Crête + + * tests/check/elements/webrtcbin.c: + webrtcbin tests: Use properties to access the inside of the transceiver object + This will allow hiding the insides from unsafe application access. + Part-of: + +2021-04-21 15:54:14 -0400 Olivier Crête + + * gst-libs/gst/webrtc/rtptransceiver.c: + webrtc rtptransceiver: Implement "codec-preferences" property + This allows safer access to the internals of the codec-preferences + Part-of: + +2021-04-21 15:38:00 -0400 Olivier Crête + + * gst-libs/gst/webrtc/rtptransceiver.c: + webrtc rtptransceiver: Implement "kind" property + Implement the property as read-only to follow the WebRTC spec + Part-of: + +2021-04-21 15:34:07 -0400 Olivier Crête + + * gst-libs/gst/webrtc/rtptransceiver.c: + webrtc rtptransceiver: Implement "current-direction" property + Implement the property as read-only to follow the WebRTC spec + Part-of: + +2021-04-21 15:29:18 -0400 Olivier Crête + + * gst-libs/gst/webrtc/rtptransceiver.c: + webrtc rtptransceiver: Implement "mid" property + Implement the property as read-only to follow the WebRTC spec + Part-of: + +2021-05-12 17:32:20 -0400 Nicolas Dufresne + + * gst/codecalpha/gstalphadecodebin.c: + alphadecodebin: Use normal queues instead of multiqueue + The multiqueue was too flexible for our need, allowing to queue passed + the configured threshold. It also didn't work well when trying to + propagate EOS flow return. + Part-of: + +2021-05-12 17:29:02 -0400 Nicolas Dufresne + + * gst/codecalpha/gstalphacombine.c: + alphacombine: Implement flow return propagation + The EOS handling was not the problem way. Instead of this, implement + proper prorogation of the flow return for the alpha chain function. + Part-of: + +2021-05-12 15:13:11 -0400 Nicolas Dufresne + + * gst/codecalpha/gstcodecalphademux.c: + codecalphademux: Fix handling of flow combine + As the alphacombine is simplified to received matching pair of buffers, + we can't just stop streaming when we receive EOS from downstream. Due + to usage of queue, the moment we get this return value may differ. + Though, by continuing pushing, we override the last_flowret on the pad + which can make us miss that we effectively can combine all flow into + EOS. + Part-of: + +2021-04-29 17:14:43 -0400 Thibault Saunier + + * gst/debugutils/gsttestsrcbin.c: + testbinsrc: Handle setting URI on the fly + Reusing existing streams when possible + Part-of: + +2021-01-20 14:55:09 +0800 Bing Song + + * data/meson.build: + * data/targets/file-extension/ts.gep: + transcoding: add encoding target for TS. + Add encoding target for streamming. + Part-of: + +2021-04-29 16:51:27 +0200 Johan Sternerup + + * tests/check/elements/webrtcbin.c: + webrtcbin: Add unit test for closing of data channels + Add test for verifying that the data channel "close" action signal + triggers an SCTP_RESET_STREAMS request that is propagated to the other + side and eventually leads to both sides closing properly. + Part-of: + +2021-04-22 10:43:55 +0200 Johan Sternerup + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/gstwebrtcbin.h: + webrtcbin: Fix deadlock when receiving new sctp stream + When receiving an sctp message for a stream that not yet has an + sctpdec pad associated with it means we end up in + _on_sctpdec_pad_added. At this point we're holding the sctpassocation + lock. Then it's not possible to take the pc_lock because then code + executing under the pc_lock (which means anything in the webrtc + thread) may not take the sctpassociation lock. For example, running + the data channel close procedure from the webrtc thread means we + eventually end up sending a SCTP_RESET_STREAMS packet which needs to + grab the sctpassociation lock. + This means _on_sctpdec_pad_added simply cannot take the pc_lock and + also it is not possible to postpone the channel creation as we need to + link the pads right there. The solution is to introduce a more + granular dc_lock that protects only the things that needs to be done + to create the datachannel. + Part-of: + +2021-04-20 10:45:46 +0200 Johan Sternerup + + * ext/sctp/sctpassociation.c: + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/sctptransport.c: + * ext/webrtc/webrtcdatachannel.c: + * ext/webrtc/webrtcdatachannel.h: + webrtcbin: Support closing of data channels + Support for closing WebRTC data channels as described in RFC + 8831 (section 6.7) now fully supported. This means that we can now + reuse data channels that have been closed properly. Previously, an + application that created a lot of short-lived on-demand data channels + would quickly exhaust resources held by lingering non-closed data + channels. + We now use a one-to-one style socket interface to SCTP just like the + Google implementation (i.e. SOCK_STREAM instead of SOCK_SEQPACKET, see + RFC 6458). For some reason the socket interface to use was made + optional through a property "use-sock-stream" even though code wasn't + written to handle the SOCK_SEQPACKET style. Specifically the + SCTP_RESET_STREAMS command wouldn't work without passing the correct + assocation id. Changing the default interface to use from + SOCK_SEQPACKET to SOCK_STREAM now means we don't have to bother about + the association id as there is only one association per socket. For + the SCTP_RESET_STREAMS command we set it to SCTP_ALL_ASSOC just to + match the Google implementation. + Part-of: + +2021-05-07 16:30:49 -0400 Nicolas Dufresne + + * gst/videoparsers/gstvp9parse.c: + vp9parse: Manually fixate codec-alpha field + This is a newly introduced field, and we interpret it as false when missing in + the caps. Otherwise, a simple capsfilter will just add the missing field and + keep going, despite the upstream caps being a superset. + Part-of: + +2021-05-07 11:28:21 -0400 Nicolas Dufresne + + * gst/codecalpha/gstplugin.c: + doc: codecalpha: Add plugin documentation + Part-of: + +2021-05-06 09:12:34 -0400 Nicolas Dufresne + + * docs/plugins/gst_plugins_cache.json: + doc: Add codecalpha plugin to the plugins cache + Part-of: + +2021-04-22 16:50:17 -0400 Nicolas Dufresne + + * gst/codecalpha/gstalphadecodebin.c: + * gst/codecalpha/gstalphadecodebin.h: + * gst/codecalpha/gstplugin.c: + * gst/codecalpha/gstvp8alphadecodebin.c: + * gst/codecalpha/gstvp8alphadecodebin.h: + * gst/codecalpha/gstvp9alphadecodebin.c: + * gst/codecalpha/gstvp9alphadecodebin.h: + * gst/codecalpha/meson.build: + alphadecodebin: Add wrappers to decode VP8/VP9 alpha + This includes base class with wrappers bin that will create a static + pipeline capable of handling the VP8/VP9 alpha channel decoding + using two instances of vp8/vp9dec element each. + Part-of: + +2021-04-02 15:07:22 -0400 Nicolas Dufresne + + * gst/codecalpha/gstalphacombine.c: + * gst/codecalpha/gstalphacombine.h: + * gst/codecalpha/gstplugin.c: + * gst/codecalpha/meson.build: + codecalpha: Implement alphacombine element + This element will merge video buffers in order to use the alpha stream + luma plane as the alpha of the video stream. The implementation is zero-copy + and currently only support merging I420 stream with an I420, NV12 or GRAY8 + alpha stream. + Part-of: + +2021-03-30 15:34:11 -0400 Nicolas Dufresne + + * gst/codecalpha/gstcodecalphademux.c: + alphacodecdemux: Implement meta demuxing + Produce two streams from a buffer that has GstVideoCodecAlphaMeta + attached. + Part-of: + +2021-03-24 16:48:35 -0400 Nicolas Dufresne + + * gst/codecalpha/gstcodecalphademux.c: + * gst/codecalpha/gstcodecalphademux.h: + * gst/codecalpha/gstplugin.c: + * gst/codecalpha/meson.build: + * gst/meson.build: + * meson_options.txt: + Introduce CODEC Alpha plugin + This plugin contains a set of utility elements allowing to extract, + decode and combine CODEC (typically VP8/VP9) alpha stream. + Part-of: + +2021-05-11 13:57:59 +0100 Daniel Stone + + * ext/openaptx/meson.build: + openaptx: Fix to v0.2.0 due to license change + openaptx has recently changed its license to explicitly exclude + 'Freedesktop projects' from using it, which would include GStreamer, as + well as shifting to base terms of GPLv3: + https://github.com/pali/libopenaptx/commit/811bc18586d634042618d633727ac0281d4170b8 + This unilateral license change is legally dubious in many ways. + The original work came from ffmpeg under the LGPL v2.1, to which third + parties may not add additional restrictions (per sections 2 and 7 of the + LGPL v2.1), so LGPLv2.1 + may-not-use restrictions are not permissible + without the explicit consent of the original copyright holder. + The upgrade to LGPL v3.0 without explicit consent from the original + copyright holder is in itself permissible through the upgrade terms of + the LGPL, however the additional restrictions imposed again conflict + with sections 7 and 10 of the GPLv3 (as the base of the LGPLv3, with + those sections not being invalidated by the additional LGPLv3 text). + Though it does not impact the legal validity of the redeclaration of + licensing, the claims that freedesktop.org has violated the terms of the + openaptx license in the past are false; the work was contributed to the + PulseAudio project with an explicit open license, with the original + contributor later attempting to revoke permission for its use, despite + the explicit terms of the license giving no ability to do so as they + lack a change-of-heart provision. + The claims that Collabora violated the license are even more baseless; + they are based on an assertion that when I (acting on behalf of + freedesktop.org rather than Collabora, in my own unpaid time) banned + users from freedesktop.org's GitLab instance due to sustained violations + of the Code of Conduct users agree to when creating an account on that + platform, this somehow constituted a violation of the license. Even if + Collabora were somehow involved in this - which they were not at all - + there is no requirement under open licenses that users be given + unlimited access under all terms to any platform on the internet. Such + terms would mean that open development could only be conducted on + completely unmoderated platforms, which does not stand up to any + scrutiny. + Regardless of the declared license having no legal validity, the LGPL's + explicit provision in both v2.1 and v3.0 for such additional + restrictions to be stripped, and the low likelihood of it ever being + used together with GStreamer as its licensing terms would not be + acceptable to any distribution, enforcing a version check seems like the + safest way to ensure complete legal clarity, not put users or + downstreams in any jeopardy, and comply with the author's stated wishes + for v0.2.1 and above to not be used by GStreamer. + Signed-off-by: Daniel Stone + Part-of: + +2021-05-11 10:21:27 -0400 Nicolas Dufresne + + * docs/plugins/gst_plugins_cache.json: + doc: Update cache after RGBP pixel format addition + Related to https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1141 + Part-of: + +2021-05-09 23:42:46 +0800 He Junyan + + * sys/va/gstvaav1dec.c: + * sys/va/gstvabasedec.c: + * sys/va/gstvabasedec.h: + * sys/va/gstvah264dec.c: + * sys/va/gstvah265dec.c: + * sys/va/gstvampeg2dec.c: + * sys/va/gstvavp8dec.c: + * sys/va/gstvavp9dec.c: + va: Do not use a common parent_class in vabasedec. + We have only one copy of gst_va_base_dec_parent_class inside the + vabasedec, so it can not handle the case when there are multi va + decoders inside one pipeline. The pipeline: + gst-launch-1.0 filesrc location=xxx.h264 ! h264parse \ + ! vah264dec ! msdkh265enc ! vah265dec ! fakesink + generates a assertion of + "invalid cast from 'GstVaH264Dec' to 'GstH265Decoder" + and gets a crash. + We should keep the parent_class for each decoder type. + Part-of: + +2021-05-07 16:02:04 +0200 Víctor Manuel Jáquez Leal + + * gst-libs/gst/codecs/gsth264decoder.c: + libs: codecs: h264decoder: Assert output_picture virtual method. + For new code it's nice to assert if the derived class implemented the + output_picture virtual method. Otherwise a segmentation fault + occurs. All other decoders assert this method. + Part-of: + +2021-05-06 18:37:45 +0200 Jan Alexander Steffens (heftig) + + * ext/wpe/WPEThreadedView.cpp: + * ext/wpe/gstwpesrc.cpp: + wpe: Properly free property fields + The set location (in two places) and loaded bytes were not freed when + the element is destroyed. + Part-of: + +2021-05-06 19:17:29 +0200 Jan Alexander Steffens (heftig) + + * ext/wpe/gstwpesrc.cpp: + wpe: Properly lock property fields + Use the object lock for the following fields: + - `bytes`: Written by the `load-bytes` signal unless running; consumed + on start. + - `draw_background`: Read and written by the `draw-background` + property. + - `location`: Read and written by the `location` property and the URI + handler. + Part-of: + +2021-05-07 11:13:06 +0200 Jan Alexander Steffens (heftig) + + * gst/rtp/gstrtpsrc.c: + rtpsrc: Plug leak of rtcp_send_addr + Part-of: + +2021-05-07 11:13:46 +0200 Jan Alexander Steffens (heftig) + + * gst/rtp/gstrtpsink.c: + rtpsink: Return proper pad from _request_new_pad + Bizarrely, it returned a pad from the child rtpbin. I noticed because + our application leaked the implicitly created ghost pad. Make an + explicit ghost pad so this works properly. + Part-of: + +2021-05-07 11:12:39 +0200 Jan Alexander Steffens (heftig) + + * gst/rist/gstristsrc.c: + rist: Plug leak of rtcp_send_addr + Part-of: + +2021-05-07 11:10:17 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvaav1dec.c: + va: av1dec: Avoid structure overwrite. + VADecPictureParameterBufferAV1.mode_control_fields.bits were filled + twice, overwriting to zeros the first assignation. This patch unifies + both assignations. + Also it makes explicit an enum casting between libva and gstreamer; it + removes the assignation to zero a deprecated parameter; and use an + appropriate assertion. + Part-of: + +2021-05-06 17:07:51 +1000 Matthew Waters + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/utils.c: + webrtc: only add nack pli by default if kind is video + Sending/receiving PLI's (Picture Loss Indication) for non-video doesn't + really make sense. This also matches what the browsers do. + Part-of: + +2021-05-06 17:06:44 +1000 Matthew Waters + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/utils.c: + * ext/webrtc/utils.h: + webrtc: move webrtc_kind_from_caps() to utils + Part-of: + +2021-04-21 17:34:26 +0900 Seungha Yang + + * sys/wasapi2/gstwasapi2client.cpp: + * sys/wasapi2/gstwasapi2client.h: + * sys/wasapi2/gstwasapi2sink.c: + * sys/wasapi2/gstwasapi2src.c: + * sys/wasapi2/gstwasapi2util.h: + wasapi2: Propagate HRESULT error code everywhere + ... instead of boolean value which cannot notify the reason + of the operation failure. + Part-of: + +2021-05-06 10:46:15 +0300 Sebastian Dröge + + * ext/hls/gsthlssink.c: + * ext/hls/gsthlssink2.c: + * ext/hls/gstm3u8playlist.c: + * ext/hls/gstm3u8playlist.h: + hlssink(2): Don't write deprecated EXT-X-ALLOW-CACHE metadata + It's deprecated since quite a few versions and various validators + complain about it. Instead of the in-manifest metadata this should be + handled by the normal HTTP caching headers. + Part-of: + +2021-05-06 01:35:04 +0900 Seungha Yang + + * sys/decklink/gstdecklink.cpp: + decklinkvideosrc: Fix crash when mode is not specified + In that case, we will get "VideoInputFrameArrived" callback + without "VideoInputFormatChanged" + Part-of: + +2021-05-05 12:34:38 +0530 Nirbheek Chauhan + + * gst/videoparsers/gsth265parse.c: + h265parse: don't invalidate the last PPS when parsing a new SPS + This is a port of https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2019 + to h265parse. + When a SPS is received then any previous PPS remains valid. So don't clear + the PPS flag from the parser state. + This is important because there are encoders that don't generated a PPS after + every SPS. + Part-of: + +2021-04-20 22:18:09 +0200 François Laignel + + * ext/dash/gstdashsink.c: + * ext/dtls/gstdtlssrtpdec.c: + * ext/dtls/gstdtlssrtpenc.c: + * ext/hls/gsthlssink2.c: + * ext/resindvd/resindvdbin.c: + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/transportreceivebin.c: + * gst/camerabin2/gstwrappercamerabinsrc.c: + * gst/rist/gstristsink.c: + * gst/rtp/gstrtpsink.c: + * gst/sdp/gstsdpdemux.c: + * gst/transcode/gsttranscodebin.c: + * gst/transcode/gsturitranscodebin.c: + * sys/dvb/dvbbasebin.c: + * sys/uvch264/gstuvch264_src.c: + * tests/check/elements/asfmux.c: + * tests/check/elements/cccombiner.c: + * tests/check/elements/dtls.c: + * tests/check/elements/mpegtsmux.c: + * tests/check/elements/mplex.c: + * tests/check/elements/webrtcbin.c: + * tests/examples/playout.c: + Use gst_element_request_pad_simple... + Instead of the deprecated gst_element_get_request_pad. + Part-of: + +2021-05-04 12:29:14 +0200 Stéphane Cerveau + + * gst/mxf/mxfdemux.c: + mxf: check EOS cond with any segment's flag + The previous test was preventing the pad to be in EOS + when the segment position was greater than segment stop. + It ended up consuming all the data before getting in EOS. + Regarding GST_SEEK_FLAG_SEGMENT it seems to be + correctly handled later in the method. + Part-of: + +2021-04-19 18:25:06 +0200 Stéphane Cerveau + + * gst/mxf/mxfdemux.c: + mxfdemux: fix keyframe detection in index + An index entry should be considered as a keyframe + if the flags allow a random access only. + Part-of: + +2021-04-24 10:43:47 +0000 Antonio Rojas + + * ext/openexr/gstopenexrdec.cpp: + Fix build with OpenEXR 3 + Add a header that is no longer transitively included + Part-of: + +2021-04-22 19:21:01 -0300 Daniel Almeida + + * gst-libs/gst/codecs/gstvp9statefulparser.c: + codecs: gstvp9statefulparser: do not carry over segmentation flags + Do not carry over segmentation flags from previous frames. The spec + says in 7.2.10 that the feature data carry over from previous frames + if not updated, but the flags do not. + Consider what would happen if a flag B is to depend on a flag A, and + B carries over as set from another frame. Further consider that A is + now not set in this particular frame. This leads to the invalid state + in which flag B is set but flag A isn't. + This might cause the bitstream to be rejected by accelerators down + the line. + Fix it. + Part-of: + +2021-04-29 21:44:07 +0900 Seungha Yang + + * sys/d3d11/gstd3d11desktopdup.cpp: + * sys/d3d11/gstd3d11desktopdup.h: + * sys/d3d11/gstd3d11desktopdupsrc.cpp: + d3d11desktopdup: Don't ignore error DXGI_ERROR_UNSUPPORTED + Although Microsoft's DXGIDesktopDuplication example is considering + the DXGI_ERROR_UNSUPPORTED as an expected error + (See https://github.com/microsoft/Windows-classic-samples/tree/master/Samples/DXGIDesktopDuplication) + it might not be recoverable error if application is + run against a discrete GPU + (See https://docs.microsoft.com/en-US/troubleshoot/windows-client/shell-experience/error-when-dda-capable-app-is-against-gpu) + Do early error out if the error happens while opening device, + instead of retrying it forever. + Part-of: + +2021-04-29 22:10:15 +0200 Jakub Adam + + * sys/d3d11/gstd3d11desktopdup.cpp: + d3d11desktopdup: Support desktop switches + Before creating output duplication interface, call SetThreadDesktop() + with HDESK of the current input desktop in case a desktop switch has + occurred. + This allows d3d11desktopdupsrc to capture Windows User Account Control + (UAC) prompts, which appear on a separate secure desktop. Otherwise + IDXGIOutput1::DuplicateOutput() will return E_ACCESSDENIED and the + element won't produce any frames as long as the UAC screen is active. + Note that in order to access secure desktop the application still has to + run at LOCAL_SYSTEM privileges. For GStreamer applications running with + regular user privileges this change has no effect. + Part-of: + +2021-04-27 18:08:30 +0000 Jakub Adam + + * sys/winscreencap/dxgicapture.c: + dxgicapture: reinitialize duplication interface on ERROR_ACCESS_LOST + IDXGIOutputDuplication can become invalid for example when there's + desktop switch, resolution change or Windows User Account Control prompt + appears on screen. + When that happens, try to re-create the duplication interface for the + changed output. Note that in the case of UAC prompt this operation will + fail if the GStreamer process doesn't run at LOCAL_SYSTEM privileges. In + such situation the source element won't create any frames as long as the + output is occupied by UAC screen. + In order to enable UAC access to sufficiently privileged GStreamer + processes, call SetThreadDesktop() with the desktop handle that + currently receives user input before creating our output duplication. + Part-of: + +2021-04-29 09:35:51 +0800 Haihao Xiang + + * sys/msdk/gstmsdksystemmemory.c: + * sys/msdk/gstmsdkvideomemory.c: + msdk: set correct parameters for BGRx frame + Otherwise when mapping BGRx frame onto CPU's memory, CPU will get wrong + data for B, G, R components + Part-of: + +2021-04-29 21:12:42 +1000 Matthew Waters + + * ext/webrtc/gstwebrtcbin.c: + webrtc: advertise support for transport-cc rtcp-fb by default + Still requires explicit enabling by the application through the header + extension on all the relevant payloaders. + Part-of: + +2021-04-29 21:11:25 +1000 Matthew Waters + + * ext/webrtc/gstwebrtcstats.c: + webrtc/stats: provide the twcc stats when available + Part-of: + +2021-04-28 10:52:29 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvaallocator.c: + va: allocator: Disable derived for Gallium if RGB and reading. + Part-of: + +2021-04-22 17:08:13 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvaallocator.c: + va: allocator: Disable derived for i965 if YUV and writing. + The problem is for uploading YUV frames using derived images, is that + derived images imply tiling, so frames are wrongly uploaded. + Though derived for reading might work we cannot know the Intel graphics + generation to validate the caching. Overall, it's safer to disable derived + images for i965. + Part-of: + +2021-04-22 17:07:28 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvadisplay.c: + * sys/va/gstvadisplay.h: + va: display: Fix typo. + Part-of: + +2021-04-22 12:42:35 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvaallocator.c: + va: allocator: Hack for i965 to get linear RGB DMABufs. + i965 driver has a hack to provide linear dmabufs, which is required for RGB + formats, since they are directly uploaded by glupload, ignoring tiled modifiers. + Part-of: + +2021-04-22 15:51:27 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvavpp.c: + va: postproc: Remove unused parameter. + Part-of: + +2021-03-31 11:04:17 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvavpp.c: + va: postproc: Set usage hint generic if DMABuf. + iHD driver sets a tiled DRM modifier if surface's usage hint is set to + VPP_WRITE. This result in a garbled rendering when using glimagesink. + This patch changes the usage hint to generic if the caps feature is + DMABuf. Either way only iHD driver, so far, uses the usage hint flag. + Part-of: + +2021-04-20 12:52:26 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvavpp.c: + va: postproc: Get info from caps in decide_allocation() + decide_allocation() occurs before set_caps(), where out_info is set, + thus setting srcpad_info with zeros or old values. Instead of it, the + caps, from the allocation query, are converted and used. + Part-of: + +2021-04-23 13:56:43 +0200 Timo Wischer + + * ext/avtp/gstavtpcrfbase.h: + avtp: crf: Remove superfluous sink_event variable + This variable was introduced by commit 12ad2a4bcd6c ("avtp: Introduce + the CRF Sync Element") but it was never used: + $ git log -G "sink_event" -- ext/avtp + Signed-off-by: Timo Wischer + Part-of: + +2020-02-17 14:11:15 +0800 Haihao Xiang + + * sys/msdk/gstmsdkh265dec.c: + msdkh265dec: Add support for error report too + Part-of: + +2019-12-06 12:48:37 +0800 Haihao Xiang + + * sys/msdk/gstmsdkdec.c: + * sys/msdk/gstmsdkdec.h: + * sys/msdk/gstmsdkdecproputil.c: + * sys/msdk/gstmsdkdecproputil.h: + * sys/msdk/gstmsdkh264dec.c: + msdkh264dec: report error to user + Sometimes user want to know what the error is when decoding a stream, + This commit adds a property of report-error to msdkh264dec. When + report-error is TRUE, msdkh264dec may catch bitstream error and frame + corruption, then report the error to application by using GST_ELEMENT_ERROR + Refer to the code in + https://github.com/Intel-Media-SDK/MediaSDK/tree/master/samples + Part-of: + +2019-12-06 12:02:50 +0800 Haihao Xiang + + * sys/msdk/gstmsdkdec.c: + * sys/msdk/gstmsdkdec.h: + msdkdec: allow sub class to add extra parameters for additional configuration + MSDK allows user add extended buffers to a bitstream for additional + configuration. This commit is to support this feature in this plugin + Part-of: + +2021-04-27 21:52:31 +0900 Seungha Yang + + * sys/d3d11/gstd3d11basefilter.cpp: + * sys/d3d11/gstd3d11compositor.cpp: + * sys/d3d11/gstd3d11deinterlace.cpp: + * sys/d3d11/gstd3d11videosink.cpp: + d3d11: Handle device change + If incoming buffer holds other d3d11 device, and user wants any device + (i.e., adapter index wasn't specified explicitly) update our device + with that of buffer. + Part-of: + +2021-04-23 19:29:55 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videosink.cpp: + d3d11videosink: Delay window setup as much as possible + ... so that videosink can handle device update with + d3d11 device of the first buffer + Part-of: + +2021-04-23 18:44:41 +0900 Seungha Yang + + * sys/d3d11/gstd3d11compositor.cpp: + * sys/d3d11/gstd3d11convert.cpp: + * sys/d3d11/gstd3d11deinterlace.cpp: + * sys/d3d11/gstd3d11desktopdupsrc.cpp: + * sys/d3d11/gstd3d11upload.cpp: + d3d11: Don't accept buffer pool which holds different device + At the moment, d3d11 plugin doesn't support texture sharing between + different device + Part-of: + +2021-04-23 18:45:48 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.cpp: + d3d11decoder: Run gst-indent + Part-of: + +2021-02-23 11:56:53 -0500 Aaron Boxer + + * ext/meson.build: + * ext/onnx/gstonnx.c: + * ext/onnx/gstonnxclient.cpp: + * ext/onnx/gstonnxclient.h: + * ext/onnx/gstonnxelement.c: + * ext/onnx/gstonnxelement.h: + * ext/onnx/gstonnxobjectdetector.cpp: + * ext/onnx/gstonnxobjectdetector.h: + * ext/onnx/meson.build: + * meson_options.txt: + onnx: add plugin to apply ONNX neural network models to video + This MR provides a transform element that leverage ONNX runtime + to run AI inference on a broad range of neural network toolkits, running + on either CPU or GPU. ONNX supports 16 different providers at the + moment, so with ONNX we immediately get support for Nvidia, AMD, Xilinx + and many others. + For the first release, this plugin adds a gstonnxobjectdetector element to + detect objects in video frames. Meta data generated by the model is + attached to the video buffer as a custom GstObjectDetectorMeta meta. + Part-of: + +2021-04-26 18:00:27 +0300 Sebastian Dröge + + * sys/decklink/gstdecklinkvideosrc.cpp: + decklinkvideosrc: Fix AFD/Bar VANC size check + Part-of: + +2021-04-23 18:05:06 +0300 Sebastian Dröge + + * sys/decklink/gstdecklinkvideosrc.cpp: + * sys/decklink/gstdecklinkvideosrc.h: + decklinkvideosrc: Automatically detect widescreen vs. normal NTSC/PAL + Based on the AFD aspect ratio flag the source can detect (in mode=auto) + whether this NTSC/PAL mode is actually a normal or a widescreen one and + select the caps according to that. + Part-of: + +2021-03-30 12:39:21 -0400 Olivier Crête + + * gst/jpegformat/gstjpegparse.c: + jpegparse: Don't generate timestamp for 0/1 framerates + Part-of: + +2021-04-23 23:20:54 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.cpp: + * sys/d3d11/gstd3d11decoder.h: + * sys/d3d11/gstd3d11h264dec.cpp: + * sys/d3d11/gstd3d11h265dec.cpp: + * sys/d3d11/gstd3d11mpeg2dec.cpp: + * sys/d3d11/gstd3d11vp8dec.cpp: + * sys/d3d11/gstd3d11vp9dec.cpp: + d3d11decoder: Set flushing to internal pool on flush event + d3d11 decoders use internal pool for DPB texture and + Gst*Decoder::new_picture() will be blocked if internal pool is full. + We should be able to unblock in on flush-start event as expected. + Part-of: + +2021-04-23 16:53:16 +0900 Seungha Yang + + * sys/d3d11/gstd3d11compositor.cpp: + * sys/d3d11/gstd3d11decoder.cpp: + d3d11: Fix wrong GstD3D11BufferPool type check + Fix typos + Part-of: + +2021-03-31 18:07:40 -0300 Thibault Saunier + + * gst/rtp/gstrtpsrc.c: + rtpsrc: Fix wrong/NULL URI handling + We can reset the URI to NULL and this fix a deadlock in that case or + when the URI was invalid. + Part-of: + +2021-04-22 16:45:27 +0000 Nazar Mokrynskyi + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: downgrade "dropping ICE candidates from SDP" from warning to debug level + Part-of: + +2021-04-16 20:39:35 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Attach rtpbin even for data channels + This is required because the same transport may later be used for RTP. + In which case the RTCP needs to flow bi-directionnally already. + Part-of: + +2021-03-04 00:41:09 -0800 Frederich Munch + + * ext/webrtc/nicetransport.c: + Fix missing unref of nice-agent causing sockets to never close. + Part-of: + +2021-04-22 16:09:40 -0400 Doug Nazar + + * ext/webrtc/sctptransport.c: + webrtc: Fix sctp task's return type. + GstWebRTCBinFunc expects a GstStructure* return type. + Fixes segfault on PowerPC. + Part-of: + +2021-04-22 15:50:15 +0900 Seungha Yang + + * sys/mediafoundation/gstmfvideoenc.cpp: + mfvideoenc: Fix UWP build + Add missing GST_MF_HAVE_D3D11 define guard + Part-of: + +2021-04-22 15:42:23 +0900 Seungha Yang + + * sys/wasapi2/gstwasapi2client.cpp: + wasapi2: Fix UWP build + KSAUDIO_SPEAKER_* defines are WINAPI_PARTITION_DESKTOP only + Part-of: + +2021-04-21 21:43:59 +0200 Mathieu Duponchelle + + * gst/mpegtsdemux/tsdemux.c: + tsdemux: fix truncated output segment when seeking with a stop + In disabling the stop adjustment for negative rates in + 03031037fafd2d535bbefb1fdf6024b5d1159043 , two instructions + were inverted resulting in the stop always being adjusted by + 0 + Part-of: + +2021-04-20 23:51:49 -0400 Doug Nazar + + * tests/check/elements/netsim.c: + tests/netsim: Set src caps before creating buffers + GstHarness requires the source pad caps to be set before + buffer allocations. + Part-of: + +2021-04-20 02:00:18 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11device.c: + * gst-libs/gst/d3d11/gstd3d11format.h: + * tests/check/elements/d3d11colorconvert.c: + d3d11: Add support for BGRx and RGBx formats + For such formats, we can re-use existing BGRA/RGBA implementations + but ignoring alpha channel + Part-of: + +2021-04-20 18:37:15 +0900 Seungha Yang + + * sys/wasapi2/gstwasapi2client.cpp: + wasapi2: Implement default audio channel mask + Some capture devices might not provide channel mask value which will + result in capturing failure because of unknown channel mask in case + that device generates more than 2 channels. Although it might not + be correct, we can assume channel mask with the given number of channels. + Part-of: + +2021-04-20 18:40:40 +0900 Seungha Yang + + * sys/wasapi2/gstwasapi2client.cpp: + wasapi2clinet: Simplify set caps + Don't need to iterate all structure to set identical values + Part-of: + +2021-04-20 18:48:18 +0900 Seungha Yang + + * sys/wasapi2/gstwasapi2client.cpp: + wasapi2client: Run gst-indent + Part-of: + +2021-04-13 17:35:58 -0400 Olivier Crête + + * tests/check/elements/webrtcbin.c: + webrtcbin test: Don't fail if data channel is created + In tests that voluntarily create a data channel. + Part-of: + +2021-04-19 19:06:50 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Filter caps isn't fixed + Fix an assertion because the filter paramter passed to + gst_caps_is_equal_fixed() wasn't fixed. So use the regular + gst_caps_is_equal() instead. + Part-of: + +2021-04-20 02:04:03 +0900 Seungha Yang + + * docs/plugins/gst_plugins_cache.json: + d3d11: Update plugin doc cache + Updating for removed d3d11videosink wrapper bin and the change of + https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2113 + Part-of: + +2021-04-17 20:37:13 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videosink.cpp: + * sys/d3d11/gstd3d11videosink.h: + * sys/d3d11/gstd3d11videosinkbin.cpp: + * sys/d3d11/gstd3d11videosinkbin.h: + * sys/d3d11/meson.build: + * sys/d3d11/plugin.c: + d3d11: Remove d3d11videosink wrapper bin + Drop d3d11videosink wrapper bin and handle texture upload + in d3d11videosink. + Part-of: + +2021-04-18 13:49:59 +0100 Philippe Normand + + * ext/webrtcdsp/gstwebrtcdsp.cpp: + webrtcdsp: Propagate VAD to audio level meta + Whenever the voice activity changed on the stream, update or create an + AudioLevelMeta and associate it to the corresponding buffer. + Fixes #1073 + Part-of: + +2021-04-19 13:06:23 +0300 Sebastian Dröge + + * docs/plugins/gst_plugins_cache.json: + * ext/closedcaption/gstcccombiner.c: + cccombiner: Use correct enum when registering the max-scheduled property + Part-of: + +2021-04-15 14:06:59 -0400 Thibault Saunier + + * ext/wpe/WPEThreadedView.cpp: + wpe: Remove code targeting WebKit < 2.24 + We already depend on wk >= 2.24 + Part-of: + +2021-04-15 13:28:42 -0400 Thibault Saunier + + * ext/wpe/WPEThreadedView.cpp: + wpe: Make threaded view singleton creation thread safe + It was leading to interesting failures. + Part-of: + +2021-04-15 00:02:55 +0900 Seungha Yang + + * sys/d3d11/gstd3d11pluginutils.cpp: + d3d11: pluginutils: Fix wrong gst_memory_unmap() on _map() failure + It was obvious typo + Part-of: + +2021-04-13 17:15:22 -0400 Doug Nazar + + * tests/check/elements/avtpcvfdepay.c: + tests/avtp: increase timeout of test_depayloader_fragmented_big + Part-of: + +2021-04-14 01:59:23 -0400 Doug Nazar + + * tests/check/elements/dash_mpd.c: + check: fix dash_mpdparser_check_mpd_client_set_methods test. + Setting guint64 valist properties without type specifier fails + on 32bit archs. + Part-of: + +2021-04-13 16:34:15 -0400 Doug Nazar + + * tests/check/elements/line21.c: + line21enc: fix remove-caption-meta property test + It's possible for the same address to be allocated to the decoded + metadata. Switch test to actual detect if it was removed. + Part-of: + +2021-04-13 06:40:43 -0400 Doug Nazar + + * tests/check/elements/shm.c: + tests: fix shm test deadlock + Stopping the consumer first would occasionally allow the producer + to fill the shm segment causing it to block in send() and unable + to be stopped. + Part-of: + +2021-04-13 05:54:37 -0400 Doug Nazar + + check: Fix test dash_mpdparser_xlink_period + Test used http://404/ERROR/XML.period as an invalid url. Curl now + interprets that as an 32bit int and tries an actual connect which + timesout. Use .invalid as an IANA reserved domain for invalid DNS. + curl -v http://404/ERROR/XML.period + * Trying 0.0.1.148:80... + Part-of: + +2021-04-13 15:42:09 +0800 He Junyan + + * sys/va/gstvaallocator.c: + va: allocator: Fix an unmap typo in _va_copy. + No need to unmap the the src memory when failing to allocate the + dst mem. It has not been mapped yet. + Part-of: + +2021-04-06 12:03:32 +0800 Haihao Xiang + + * sys/msdk/gstmsdkcontext.c: + msdk: don't fall back to the default device + Ohterwise when user set a wrong device, the warning message doesn't get + printed if user doesn't set a right debug level in the environment, this + behavior might mislead user that the wrong device is being used. + This fixed https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1567 + Part-of: + +2021-04-12 17:54:31 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Simplify answer_caps intersection code a little + Part-of: + +2021-04-12 15:35:41 -0400 Olivier Crête + + * tests/check/elements/webrtcbin.c: + webrtcbin test: Wait for set-local-desc & set-remote-desc to continue + To avoid racing betwen the SDPs being set and the next step of the + test, let's wait for setting the SDP both locally and remotely to succeed. + of the test + Part-of: + +2021-04-01 14:51:30 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/gstwebrtcbin.h: + * ext/webrtc/webrtcdatachannel.c: + webrtcbin: Move GstPromise reply to operation framework + This makes it possible to reply to all promises in a consistent way + without having to do a unlock/relock that is always risky. + Part-of: + +2021-04-01 14:41:11 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Make sure PC_LOCK is release when replying to promise + Part-of: + +2021-03-31 11:56:10 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Take PC lock around all entry points + All of those action signals change the internal state, so + protect it by using the PC_LOCK + Part-of: + +2021-03-31 11:49:36 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Take PC_LOCK when requesting new pad + This is needed to avoid having the state change under us. + Part-of: + +2021-03-31 11:41:45 -0400 Olivier Crête + + * tests/check/elements/webrtcbin.c: + webrtcbin test: Add for the case where a second m-line is renegotiated + This is for the case where there answerer forces a specific media type + for a m-line, but he origin offer only has the other media type. In this + case, we will create a second transceiver on receiving the offer and add + the desired media type using renegotiation. + Part-of: + +2021-03-31 11:40:28 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Ensure that query caps method returns valid caps + This means rejecting any caps that aren't fixed. Also, use a filter + that will create unfixed caps if the other side just returns ANY. + Part-of: + +2021-03-31 11:33:21 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Associate the stream with a new transceiver + Otherwise, this newly created transceiver has no stream and it + aborts later when it tries to connect the input pad. + Part-of: + +2021-03-31 11:30:16 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Match unassociated transceiver by kind too + When a new m-line comes in that doesn't have a transceiver, only match + existing transceivers of the same kind. + Part-of: + +2021-03-30 18:01:56 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Fix typoe in name of error GstStructure + Part-of: + +2021-03-30 16:16:50 -0400 Olivier Crête + + * tests/check/elements/webrtcbin.c: + webrtc test: Verify that forcing different kinds on peers fails + If the offer contains an audio kind and a video kind, forcing them both + at m-line zero will fail. + Part-of: + +2021-03-30 16:04:33 -0400 Olivier Crête + + * tests/check/elements/webrtcbin.c: + webrtc tests: Verify that create-offer is rejected when needed + Verify that it gets rejected if a m-line at index 1 is requested but + there is no m-line 0. + Part-of: + +2021-03-29 19:47:21 -0400 Olivier Crête + + * tests/check/elements/webrtcbin.c: + webrtcbin test: Add test for various cases where get_request_pad is meant to fail + This should ensure that the recently added code works. + Part-of: + +2021-03-26 21:09:04 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Enforce direction on request sink pad with a specific name + Part-of: + +2021-03-26 20:55:36 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + * tests/check/elements/webrtcbin.c: + webrtcbin: Try to match an existing transceiver on pad request + This should avoid creating extra transceivers that are duplicated. + Part-of: + +2021-03-26 20:02:13 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Validate locked m-lines in set*Description + Verify that the remote description match the locked m-lines, otherwise + just reject the SDP. + Part-of: + +2021-03-26 19:38:57 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/gstwebrtcbin.h: + webrtcbin: Remove unused session_mid_map + Part-of: + +2021-03-26 18:15:50 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/utils.h: + webrtcbin: Enforce m-line restrictions when creating offer + First fail the offer creation if the mid of an existing offer doesn't + match a forced m-mline. + Then, for all newly added mlines, first look for a transceiver that + forces this m-line, then add a "floating" one, then the data channel. + And repeat this until we're out of transceivers. + Part-of: + +2021-03-26 15:57:15 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/webrtctransceiver.h: + webrtcbin: Remember if a transceiver had a forced m-line + Part-of: + +2021-03-26 15:54:35 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Enforce same-kind on request sink pad with a specific name + Part-of: + +2021-03-26 15:23:34 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Enforce compatible caps on pad request + If a pad is requested with certain caps and there is already a + transceiver, reject the pad request if the caps don't match. + Part-of: + +2021-03-26 15:19:09 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Reject pad request for a specific m-line if it already exists + This way, the app developer is in control. + Part-of: + +2021-03-26 15:02:50 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Make request-pad validation an early return + This reduces the indendation. + Part-of: + +2021-03-26 14:48:58 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Add document for webrtcbin itself to generated doc + Part-of: + +2021-03-23 20:18:24 -0400 Olivier Crête + + * tests/check/elements/webrtcbin.c: + webrtcbin test: Test adding a stream to a stream+datachannel + This use-case was previously broken by the expectation of having + a 1-1 match between the pad id and the m-line index + Part-of: + +2021-03-23 19:51:00 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + webrtc: Reset received_caps when releasing pad + This is to work around a race where the pad is accessed in the + webrtc main thread while being released. + Part-of: + +2021-03-23 17:51:16 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/gstwebrtcbin.h: + webrtcbin: Split pad name from mline + The simple case where this breaks is if you add a + datachannel and want to add a new pad (a new media) after). Another + case where this is broken is if the order of the media is forced to + something different by the peer. + It's more simple to just split both things completely. In practice, the + pads will be named in the order in which they are allocated, so it + shouldn't change the current behaviour, just enable new ones. + Part-of: + +2021-02-25 05:04:00 +1100 Jan Schmidt + + * gst/switchbin/gstswitchbin.c: + switchbin: When collecting srcpad caps, don't intersect with path caps. + The path caps describe the input caps that will select each path, don't + intersect those with the srcpad caps, which could be completely + different. Instead, when querying allowed caps for the srcpad, just + construct the union of all possible output caps from all path srcpads. + Part-of: + +2021-02-16 15:00:07 +1100 Jan Schmidt + + * gst/switchbin/gstswitchbin.c: + switchbin: Don't report sink pad caps for src pad queries. + When handling a caps query on the src pad, don't return the union + of input caps. Even when not active, a path element can be queried + for srcpad template caps, or for dropping paths the allowed downstream + caps is anything - as data will be dropped anyway. + Part-of: + +2021-02-25 15:22:15 +0100 Stéphane Cerveau + + * gst/accurip/gstaccurip.c: + * gst/accurip/gstaccurip.h: + * gst/adpcmdec/adpcmdec.c: + * gst/adpcmenc/adpcmenc.c: + * gst/aiff/aiff.c: + * gst/aiff/aiffelements.h: + * gst/aiff/aiffmux.c: + * gst/aiff/aiffparse.c: + * gst/aiff/gstaiffelement.c: + * gst/aiff/meson.build: + * gst/asfmux/gstasf.c: + * gst/asfmux/gstasfmux.c: + * gst/asfmux/gstasfmux.h: + * gst/asfmux/gstasfparse.c: + * gst/asfmux/gstasfparse.h: + * gst/asfmux/gstrtpasfpay.c: + * gst/asfmux/gstrtpasfpay.h: + * gst/audiobuffersplit/gstaudiobuffersplit.c: + * gst/audiobuffersplit/gstaudiobuffersplit.h: + * gst/audiofxbad/gstaudiochannelmix.c: + * gst/audiofxbad/gstaudiochannelmix.h: + * gst/audiofxbad/gstaudiofxbad.c: + * gst/audiolatency/gstaudiolatency.c: + * gst/audiolatency/gstaudiolatency.h: + * gst/audiomixmatrix/gstaudiomixmatrix.c: + * gst/audiomixmatrix/gstaudiomixmatrix.h: + * gst/audiovisualizers/gstspacescope.c: + * gst/audiovisualizers/gstspacescope.h: + * gst/audiovisualizers/gstspectrascope.c: + * gst/audiovisualizers/gstspectrascope.h: + * gst/audiovisualizers/gstsynaescope.c: + * gst/audiovisualizers/gstsynaescope.h: + * gst/audiovisualizers/gstwavescope.c: + * gst/audiovisualizers/gstwavescope.h: + * gst/audiovisualizers/plugin.c: + * gst/autoconvert/gstautoconvert.c: + * gst/autoconvert/gstautoconvert.h: + * gst/autoconvert/gstautovideoconvert.c: + * gst/autoconvert/gstautovideoconvert.h: + * gst/autoconvert/plugin.c: + * gst/bayer/gstbayer.c: + * gst/bayer/gstbayer2rgb.c: + * gst/bayer/gstbayerelements.h: + * gst/bayer/gstrgb2bayer.c: + * gst/camerabin2/gstcamerabin2.c: + * gst/camerabin2/gstcamerabin2.h: + * gst/camerabin2/gstplugin.c: + * gst/camerabin2/gstviewfinderbin.c: + * gst/camerabin2/gstviewfinderbin.h: + * gst/camerabin2/gstwrappercamerabinsrc.c: + * gst/camerabin2/gstwrappercamerabinsrc.h: + * gst/coloreffects/gstchromahold.c: + * gst/coloreffects/gstchromahold.h: + * gst/coloreffects/gstcoloreffects.c: + * gst/coloreffects/gstcoloreffects.h: + * gst/coloreffects/gstplugin.c: + * gst/debugutils/debugutilsbad.c: + * gst/debugutils/fpsdisplaysink.c: + * gst/debugutils/gstchecksumsink.c: + * gst/debugutils/gstchopmydata.c: + * gst/debugutils/gstclockselect.c: + * gst/debugutils/gstcompare.c: + * gst/debugutils/gstdebugspy.c: + * gst/debugutils/gstdebugutilsbadelements.h: + * gst/debugutils/gsterrorignore.c: + * gst/debugutils/gstfakeaudiosink.c: + * gst/debugutils/gstfakevideosink.c: + * gst/debugutils/gsttestsrcbin.c: + * gst/debugutils/gstwatchdog.c: + * gst/dvbsubenc/gstdvbsubenc.c: + * gst/dvbsubenc/gstdvbsubenc.h: + * gst/dvbsuboverlay/gstdvbsuboverlay.c: + * gst/dvbsuboverlay/gstdvbsuboverlay.h: + * gst/dvdspu/gstdvdspu.c: + * gst/dvdspu/gstdvdspu.h: + * gst/faceoverlay/gstfaceoverlay.c: + * gst/faceoverlay/gstfaceoverlay.h: + * gst/festival/gstfestival.c: + * gst/festival/gstfestival.h: + * gst/fieldanalysis/gstfieldanalysis.c: + * gst/fieldanalysis/gstfieldanalysis.h: + * gst/freeverb/gstfreeverb.c: + * gst/freeverb/gstfreeverb.h: + * gst/gaudieffects/gstburn.c: + * gst/gaudieffects/gstburn.h: + * gst/gaudieffects/gstchromium.c: + * gst/gaudieffects/gstchromium.h: + * gst/gaudieffects/gstdilate.c: + * gst/gaudieffects/gstdilate.h: + * gst/gaudieffects/gstdodge.c: + * gst/gaudieffects/gstdodge.h: + * gst/gaudieffects/gstexclusion.c: + * gst/gaudieffects/gstexclusion.h: + * gst/gaudieffects/gstgaussblur.c: + * gst/gaudieffects/gstgaussblur.h: + * gst/gaudieffects/gstplugin.c: + * gst/gaudieffects/gstplugin.h: + * gst/gaudieffects/gstsolarize.c: + * gst/gaudieffects/gstsolarize.h: + * gst/gdp/gstgdp.c: + * gst/gdp/gstgdpdepay.c: + * gst/gdp/gstgdpdepay.h: + * gst/gdp/gstgdpelement.c: + * gst/gdp/gstgdpelements.h: + * gst/gdp/gstgdppay.c: + * gst/gdp/gstgdppay.h: + * gst/gdp/meson.build: + * gst/geometrictransform/gstbulge.c: + * gst/geometrictransform/gstbulge.h: + * gst/geometrictransform/gstcircle.c: + * gst/geometrictransform/gstcircle.h: + * gst/geometrictransform/gstdiffuse.c: + * gst/geometrictransform/gstdiffuse.h: + * gst/geometrictransform/gstfisheye.c: + * gst/geometrictransform/gstfisheye.h: + * gst/geometrictransform/gstkaleidoscope.c: + * gst/geometrictransform/gstkaleidoscope.h: + * gst/geometrictransform/gstmarble.c: + * gst/geometrictransform/gstmarble.h: + * gst/geometrictransform/gstmirror.c: + * gst/geometrictransform/gstmirror.h: + * gst/geometrictransform/gstperspective.c: + * gst/geometrictransform/gstperspective.h: + * gst/geometrictransform/gstpinch.c: + * gst/geometrictransform/gstpinch.h: + * gst/geometrictransform/gstrotate.c: + * gst/geometrictransform/gstrotate.h: + * gst/geometrictransform/gstsphere.c: + * gst/geometrictransform/gstsphere.h: + * gst/geometrictransform/gstsquare.c: + * gst/geometrictransform/gstsquare.h: + * gst/geometrictransform/gststretch.c: + * gst/geometrictransform/gststretch.h: + * gst/geometrictransform/gsttunnel.c: + * gst/geometrictransform/gsttunnel.h: + * gst/geometrictransform/gsttwirl.c: + * gst/geometrictransform/gsttwirl.h: + * gst/geometrictransform/gstwaterripple.c: + * gst/geometrictransform/gstwaterripple.h: + * gst/geometrictransform/plugin.c: + * gst/id3tag/gstid3mux.c: + * gst/id3tag/gstid3mux.h: + * gst/inter/gstinter.c: + * gst/inter/gstinteraudiosink.c: + * gst/inter/gstinteraudiosink.h: + * gst/inter/gstinteraudiosrc.c: + * gst/inter/gstinteraudiosrc.h: + * gst/inter/gstintersubsink.c: + * gst/inter/gstintersubsink.h: + * gst/inter/gstintersubsrc.c: + * gst/inter/gstintersubsrc.h: + * gst/inter/gstintervideosink.c: + * gst/inter/gstintervideosink.h: + * gst/inter/gstintervideosrc.c: + * gst/inter/gstintervideosrc.h: + * gst/interlace/gstinterlace.c: + * gst/ivfparse/gstivfparse.c: + * gst/ivfparse/gstivfparse.h: + * gst/ivtc/gstcombdetect.c: + * gst/ivtc/gstcombdetect.h: + * gst/ivtc/gstivtc.c: + * gst/ivtc/gstivtc.h: + * gst/jp2kdecimator/gstjp2kdecimator.c: + * gst/jp2kdecimator/gstjp2kdecimator.h: + * gst/jpegformat/gstjifmux.c: + * gst/jpegformat/gstjifmux.h: + * gst/jpegformat/gstjpegformat.c: + * gst/jpegformat/gstjpegparse.c: + * gst/jpegformat/gstjpegparse.h: + * gst/librfb/gstrfbsrc.c: + * gst/librfb/gstrfbsrc.h: + * gst/midi/midi.c: + * gst/midi/midiparse.c: + * gst/midi/midiparse.h: + * gst/mpegdemux/gstmpegdemux.c: + * gst/mpegdemux/gstmpegdemux.h: + * gst/mpegdemux/plugin.c: + * gst/mpegpsmux/mpegpsmux.c: + * gst/mpegpsmux/mpegpsmux.h: + * gst/mpegtsdemux/gsttsdemux.c: + * gst/mpegtsdemux/mpegtsbase.c: + * gst/mpegtsdemux/mpegtsparse.c: + * gst/mpegtsdemux/mpegtsparse.h: + * gst/mpegtsdemux/tsdemux.c: + * gst/mpegtsdemux/tsdemux.h: + * gst/mpegtsmux/gstatscmux.c: + * gst/mpegtsmux/gstatscmux.h: + * gst/mpegtsmux/gstbasetsmux.c: + * gst/mpegtsmux/gstmpegtsmux.c: + * gst/mpegtsmux/gstmpegtsmux.h: + * gst/mpegtsmux/gstmpegtsmuxplugin.c: + * gst/mxf/gstmxfelement.c: + * gst/mxf/gstmxfelements.h: + * gst/mxf/meson.build: + * gst/mxf/mxf.c: + * gst/mxf/mxfdemux.c: + * gst/mxf/mxfmux.c: + * gst/netsim/gstnetsim.c: + * gst/netsim/gstnetsim.h: + * gst/onvif/gstrtponvif.c: + * gst/onvif/gstrtponvifparse.c: + * gst/onvif/gstrtponvifparse.h: + * gst/onvif/gstrtponviftimestamp.c: + * gst/onvif/gstrtponviftimestamp.h: + * gst/pcapparse/gstirtspparse.c: + * gst/pcapparse/gstirtspparse.h: + * gst/pcapparse/gstpcapparse.c: + * gst/pcapparse/gstpcapparse.h: + * gst/pcapparse/plugin.c: + * gst/pnm/gstpnm.c: + * gst/pnm/gstpnmdec.c: + * gst/pnm/gstpnmdec.h: + * gst/pnm/gstpnmenc.c: + * gst/pnm/gstpnmenc.h: + * gst/proxy/gstproxy.c: + * gst/proxy/gstproxysink.c: + * gst/proxy/gstproxysink.h: + * gst/proxy/gstproxysrc.c: + * gst/proxy/gstproxysrc.h: + * gst/rawparse/gstaudioparse.c: + * gst/rawparse/gstaudioparse.h: + * gst/rawparse/gstvideoparse.c: + * gst/rawparse/gstvideoparse.h: + * gst/rawparse/plugin.c: + * gst/removesilence/gstremovesilence.c: + * gst/removesilence/gstremovesilence.h: + * gst/rist/gstrist.c: + * gst/rist/gstrist.h: + * gst/rist/gstristplugin.c: + * gst/rist/gstristrtpdeext.c: + * gst/rist/gstristrtpext.c: + * gst/rist/gstristrtxreceive.c: + * gst/rist/gstristrtxsend.c: + * gst/rist/gstristsink.c: + * gst/rist/gstristsrc.c: + * gst/rist/gstroundrobin.c: + * gst/rist/gstroundrobin.h: + * gst/rist/meson.build: + * gst/rtmp2/gstrtmp2.c: + * gst/rtmp2/gstrtmp2element.c: + * gst/rtmp2/gstrtmp2elements.h: + * gst/rtmp2/gstrtmp2sink.c: + * gst/rtmp2/gstrtmp2src.c: + * gst/rtmp2/meson.build: + * gst/rtp/gstrtpsink.c: + * gst/rtp/gstrtpsink.h: + * gst/rtp/gstrtpsrc.c: + * gst/rtp/gstrtpsrc.h: + * gst/rtp/plugin.c: + * gst/sdp/gstsdpdemux.c: + * gst/sdp/gstsdpdemux.h: + * gst/sdp/gstsdpelem.c: + * gst/sdp/gstsdpsrc.c: + * gst/sdp/gstsdpsrc.h: + * gst/segmentclip/gstaudiosegmentclip.c: + * gst/segmentclip/gstaudiosegmentclip.h: + * gst/segmentclip/gstvideosegmentclip.c: + * gst/segmentclip/gstvideosegmentclip.h: + * gst/segmentclip/plugin.c: + * gst/siren/gstsiren.c: + * gst/siren/gstsirendec.c: + * gst/siren/gstsirendec.h: + * gst/siren/gstsirenenc.c: + * gst/siren/gstsirenenc.h: + * gst/smooth/gstsmooth.c: + * gst/smooth/gstsmooth.h: + * gst/speed/gstspeed.c: + * gst/speed/gstspeed.h: + * gst/subenc/gstsrtenc.c: + * gst/subenc/gstsrtenc.h: + * gst/subenc/gstsubenc.c: + * gst/subenc/gstwebvttenc.c: + * gst/subenc/gstwebvttenc.h: + * gst/switchbin/gstswitchbin.c: + * gst/switchbin/gstswitchbin.h: + * gst/switchbin/plugin.c: + * gst/timecode/gstavwait.c: + * gst/timecode/gstavwait.h: + * gst/timecode/gsttimecodestamper.c: + * gst/timecode/gsttimecodestamper.h: + * gst/timecode/plugin.c: + * gst/transcode/gsttranscodebin.c: + * gst/transcode/gsttranscodeelement.c: + * gst/transcode/gsttranscodeelements.h: + * gst/transcode/gsttranscodeplugin.c: + * gst/transcode/gsturitranscodebin.c: + * gst/transcode/meson.build: + * gst/videofilters/gstscenechange.c: + * gst/videofilters/gstscenechange.h: + * gst/videofilters/gstvideodiff.c: + * gst/videofilters/gstvideodiff.h: + * gst/videofilters/gstvideofiltersbad.c: + * gst/videofilters/gstzebrastripe.c: + * gst/videofilters/gstzebrastripe.h: + * gst/videoframe_audiolevel/gstvideoframe-audiolevel.c: + * gst/videoframe_audiolevel/gstvideoframe-audiolevel.h: + * gst/videoparsers/gstav1parse.c: + * gst/videoparsers/gstdiracparse.c: + * gst/videoparsers/gsth263parse.c: + * gst/videoparsers/gsth264parse.c: + * gst/videoparsers/gsth265parse.c: + * gst/videoparsers/gstjpeg2000parse.c: + * gst/videoparsers/gstmpeg4videoparse.c: + * gst/videoparsers/gstmpegvideoparse.c: + * gst/videoparsers/gstpngparse.c: + * gst/videoparsers/gstvc1parse.c: + * gst/videoparsers/gstvideoparserselement.c: + * gst/videoparsers/gstvideoparserselements.h: + * gst/videoparsers/gstvp9parse.c: + * gst/videoparsers/meson.build: + * gst/videoparsers/plugin.c: + * gst/videosignal/gstsimplevideomark.c: + * gst/videosignal/gstsimplevideomark.h: + * gst/videosignal/gstsimplevideomarkdetect.c: + * gst/videosignal/gstsimplevideomarkdetect.h: + * gst/videosignal/gstvideoanalyse.c: + * gst/videosignal/gstvideoanalyse.h: + * gst/videosignal/gstvideosignal.c: + * gst/vmnc/vmncdec.c: + * gst/vmnc/vmncdec.h: + * gst/y4m/gsty4mdec.c: + * gst/y4m/gsty4mdec.h: + gst-plugins: 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-04-10 20:34:26 +0200 Helmut Januschka + + * gst/rtmp2/rtmp/rtmpclient.c: + allow NetStream.Play.PublishNotify Message + Part-of: + +2021-03-26 11:00:50 +0100 Stéphane Cerveau + + * sys/bluez/bluez-plugin.c: + * sys/bluez/gsta2dpsink.c: + * sys/bluez/gsta2dpsink.h: + * sys/bluez/gstavdtpsink.c: + * sys/bluez/gstavdtpsink.h: + * sys/bluez/gstavdtpsrc.c: + * sys/bluez/gstavdtpsrc.h: + * sys/bluez/gstbluezelement.c: + * sys/bluez/gstbluezelements.h: + * sys/bluez/meson.build: + * sys/decklink/gstdecklink.cpp: + * sys/decklink/gstdecklink.h: + * sys/decklink/gstdecklinkaudiosink.cpp: + * sys/decklink/gstdecklinkaudiosink.h: + * sys/decklink/gstdecklinkaudiosrc.cpp: + * sys/decklink/gstdecklinkaudiosrc.h: + * sys/decklink/gstdecklinkdeviceprovider.cpp: + * sys/decklink/gstdecklinkdeviceprovider.h: + * sys/decklink/gstdecklinkplugin.cpp: + * sys/decklink/gstdecklinkvideosink.cpp: + * sys/decklink/gstdecklinkvideosink.h: + * sys/decklink/gstdecklinkvideosrc.cpp: + * sys/decklink/gstdecklinkvideosrc.h: + * sys/decklink/meson.build: + * sys/dvb/dvbbasebin.c: + * sys/dvb/dvbbasebin.h: + * sys/dvb/gstdvb.c: + * sys/dvb/gstdvbelement.c: + * sys/dvb/gstdvbelements.h: + * sys/dvb/gstdvbsrc.c: + * sys/dvb/gstdvbsrc.h: + * sys/dvb/meson.build: + * sys/fbdev/gstfbdevsink.c: + * sys/fbdev/gstfbdevsink.h: + * sys/ipcpipeline/gstipcpipeline.c: + * sys/ipcpipeline/gstipcpipelineelement.c: + * sys/ipcpipeline/gstipcpipelineelements.h: + * sys/ipcpipeline/gstipcpipelinesink.c: + * sys/ipcpipeline/gstipcpipelinesrc.c: + * sys/ipcpipeline/gstipcslavepipeline.c: + * sys/ipcpipeline/meson.build: + * sys/kms/gstkmssink.c: + * sys/kms/gstkmssink.h: + * sys/magicleap/mlaudiosink.c: + * sys/magicleap/mlaudiosink.h: + * sys/magicleap/plugin.c: + * sys/opensles/meson.build: + * sys/opensles/opensles.c: + * sys/opensles/opensles.h: + * sys/opensles/openslesplugin.c: + * sys/opensles/openslessink.c: + * sys/opensles/openslessink.h: + * sys/opensles/openslessrc.c: + * sys/opensles/openslessrc.h: + * sys/shm/gstshm.c: + * sys/shm/gstshmsink.c: + * sys/shm/gstshmsink.h: + * sys/shm/gstshmsrc.c: + * sys/shm/gstshmsrc.h: + * sys/uvch264/gstuvch264.c: + * sys/uvch264/gstuvch264_mjpgdemux.c: + * sys/uvch264/gstuvch264_mjpgdemux.h: + * sys/uvch264/gstuvch264_src.c: + * sys/uvch264/gstuvch264_src.h: + * sys/uvch264/gstuvch264deviceprovider.c: + * sys/uvch264/gstuvch264deviceprovider.h: + plugins-sys: 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-04-09 01:54:50 +0900 Seungha Yang + + codecs: vp9decoder: Update docs + * Remove "FIXME 1.20": All the bits are addressed already by using + vp9parse element + * Fix copy & paste errors: Some comments were copied from h264decoder + blindly. + Part-of: + +2021-04-09 12:45:46 +0900 Seungha Yang + + * gst-libs/gst/codecs/gstvp9decoder.c: + codecs: vp9decoder: Make duplicate_picture() vfunc optional + The default implementation was required when superframe parsing + was handled by vp9decoder. For instance, if a superframe consists + of multiple frames with show_existing_frame header, it was vague + that which GstVp9Picture should consume GstVideoCodecFrame. + After 1.18 release, we introduced vp9parse element and + superframe should be handled by upstream vp9parse elemenet now. + So, we don't need to care about the superframe at vp9decoder class + level anymore. Simply, a frame corresponding to show_existing_frame + can be dropped if subclass doesn't implement duplicate_picture(). + Part-of: + +2021-03-30 14:40:53 +0100 Philippe Normand + + * docs/plugins/gst_plugins_cache.json: + * gst/debugutils/debugutilsbad.c: + * gst/debugutils/gstfakeaudiosink.c: + * gst/debugutils/gstfakeaudiosink.h: + * gst/debugutils/meson.build: + debugutils: Add fakeaudiosink element + This element can be useful for CI purposes on machines not running any system + audio daemon. The element implements the GstStreamVolume interface. + Part-of: + +2021-04-08 14:53:52 -0400 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codecallocator.c: + v4l2codecs: allocator: Keep dmabuf mapped + DMABuf allocator already implements DMABuf Sync, meaning that doing + mmap/munmap (unless the mode have changed) is not required. In fact, on + systems with IOMMU it makes the kernel redo the mmu table which is visible + in the CPU usage. + This change reduces CPU usage when decoding + bbb_sunflower_2160p_60fps_normal.mp4 on RK3399 SoC from over 30% to + around 15%. + Part-of: + +2021-04-03 14:16:22 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvaallocator.c: + va: allocator: Implement mem_copy for VA memory. + Implementation of mem_copy() virtual method for GstVaAllocator. + It's a deep copy where a new VA memory is popped out from the pool or, + if pool is empty, a new memory is allocated. The original memory is + mapped to read, and if its VAImage is not derived and size to copy is + the whole surface, the mapped VAImage of the original memory is put in + the new memory. Otherwise a slow memcpy is done between both memories. + Fixes: #1568 + Part-of: + +2021-04-08 20:29:29 +0800 Zhao Zhili + + * ext/srt/gstsrtobject.c: + srtobject: fix optlen of srt_getsockflag + Part-of: + +2021-01-14 14:24:06 +0800 Haihua Hu + + * gst/videoparsers/gstjpeg2000parse.c: + jpeg2000parse: fix critical log when play one gray colorspace video + Need guess color space based on number of components when cannot + got it from sink caps + Part-of: + +2020-12-11 16:33:39 -0500 Olivier Crête + + * ext/ldac/gstldacenc.c: + ldacenc: Emit message on errors + Part-of: + +2020-12-11 16:26:00 -0500 Olivier Crête + + * ext/sbc/gstsbcenc.c: + sbc: Return hard error on allocation or mapping error + Also post a message on the bus in these cases.wpe: Emit load-progress messages + Part-of: + +2020-10-25 16:39:48 +0000 Matthieu De Beule + + * gst-libs/gst/player/gstplayer.c: + Tell programmers that set_volume uses linear scale (fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1439) + Part-of: + +2020-12-11 14:52:20 -0500 Olivier Crête + + * ext/ldac/gstldacenc.c: + * ext/sbc/gstsbcenc.c: + sbc/ldac: Don't use GST_CAPS_NONE to mean NULL + The GST_CAPS_NONE macro actually returns a instance of + a empty caps. + Part-of: + +2021-03-30 17:24:38 +0900 Seungha Yang + + * gst-libs/gst/codecs/gstvp9decoder.c: + codecs: vp9decoder: Allow decoding start with intra-only frame + As per spec "7.2 Uncompressed header semantics" and + "8.2 Frame order constraints", decoding can start with intra-only + frame. This commit is for fixing vp90-2-16-intra-only.webm + bitstream test failure. + Part-of: + +2021-03-29 02:11:22 +0900 Seungha Yang + + * gst-libs/gst/codecs/gstvp9decoder.c: + * gst-libs/gst/codecs/gstvp9decoder.h: + * sys/d3d11/gstd3d11vp9dec.cpp: + * sys/nvcodec/gstnvvp9dec.c: + * sys/va/gstvavp9dec.c: + codecs: vp9decoder: Pass GstVideoCodecFrame to duplicate_picture() + ... and fix picture duplication logic for vavp9dec + Part-of: + +2021-03-30 11:49:43 +0900 Seungha Yang + + * gst-libs/gst/codecs/gstvp9decoder.c: + * gst-libs/gst/codecs/gstvp9decoder.h: + * gst-libs/gst/codecs/gstvp9picture.h: + * sys/d3d11/gstd3d11vp9dec.cpp: + * sys/nvcodec/gstnvvp9dec.c: + * sys/va/gstvavp9dec.c: + codecs: vp9decoder: Port to GstVp9StatefulParser + Use newly implemented VP9 parser. Since new GstVp9FrameHeader + struct holds all the information of the stream, baseclass will not + pass parser object to new_sequence() method anymore. + Part-of: + +2021-03-27 15:32:59 +0900 Seungha Yang + + codecparsers: Reimplement VP9 parser + Existing VP9 parser implementation doesn't provide information + required by other stateless decoding APIs (i.e., DXVA and NVDEC), + specifically loop filter and segmentation parameters might not exist + current frame. So parser needs to fill the information by using previously + parsed information. + We can update the gstvp9parser implementation so that it can provide + all information required by stateless decoding APIs with a huge API break, + or adding more ugly struct in it. + Instead doing as such, this commit introduce a new VP9 parser implementation. + What is different from existing one? + * All variables will follow the specification as much as possible: + VP9 Bitstream & Decoding Process Specification - v0.6 31st March 2016 + * Parser will fill all the required information for decoding frame + to GstVp9FrameHeader struct. In case of old VP9 parser, + user needs to read additional data from parser's member variables. + * GstVp9StatefulParser object struct is completely completely opaque + Part-of: + +2021-03-28 16:11:23 +0900 Seungha Yang + + * gst-libs/gst/codecs/gstvp9decoder.c: + codecs: vp9decoder: Don't check codec change with show_existing_frame + Show existing frame will zero frame_type value but it doesn't mean + it's keyframe. + Part-of: + +2021-04-06 16:24:39 -0400 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2decoder.c: + v4l2codecs: Fix holding of reference picture buffer + The picture buffer (V4L2 CAPTURE buffer) was being released immediatly + when the request was done. This was problematic since even after the + request is done, the picture buffer might still be used as a reference + and should not be reused for further decoding yet. + This change effectively bind the picture buffer lifetime to the request. + So that if the picture is never showned (decode only frame) or the request + queue is full before the buffer is displayed, the picture buffer will + remain alive. + Part-of: + +2021-04-07 07:48:57 -0400 Doug Nazar + + * gst/rtmp2/rtmp/rtmpmessage.c: + rtmp2: Use correct size of write macro for param2. + Part-of: + +2021-04-01 07:59:45 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvafilter.c: + va: filter: remove unsupported formats because driver's bugs + Add a way to filter out video formats from caps because of unresolved + bugs in drivers. In this case for media-driver (iHD) where some RGB32 + formats are not handled correctly. + Part-of: + +2021-03-31 09:59:21 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvavideoformat.c: + va: videoformats: Map more color formats. + Added Y212_LE, Y412_LE, P012_LE, Y444, RGB16, RGB and BGR10A2_LE in + the static map betwen VA and GStreamer color formats. This synchronize + the map used in gstremaer-vaapi and this plugin. + Part-of: + +2021-03-31 09:50:46 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvadisplay.c: + * sys/va/gstvavideoformat.c: + * sys/va/gstvavideoformat.h: + va: videoformats: Fix RGB32 mapping between VA and GStreamer. + Different VA drives might have different definitions for RGB32 color + formats because different bit interpretation. Sadly the specification + doesn't clarify these interpretations. So VA users have to figure out + what's the correct mapping with it's rendering color format + definition. + This patch aims to fix the static map structure after the + VAImageFormats are queried. There is another static map with the + different interpretations of the RGB32 formats, and compare them with + the given VAImageFormat, then with the GStreamer color format, update + the mapping table. + Finally, some RGB32 color formats were added. + Part-of: + +2021-04-07 01:03:15 -0400 Doug Nazar + + * ext/avtp/gstavtpcvfdepay.c: + * ext/avtp/gstavtpcvfpay.c: + * ext/avtp/gstavtpsrc.c: + avtp: Fix log format macros + Part-of: + +2021-04-06 13:07:52 -0300 Daniel Almeida + + * sys/v4l2codecs/gstv4l2decoder.c: + v4l2codecs: gstv4l2decoder.c: Add missing include + Add missing include for sys/ioctl.h so that these warnings dissapear + when compiling: + ../subprojects/gst-plugins-bad/sys/v4l2codecs/gstv4l2decoder.c:179:9: + warning: implicit declaration of function ‘ioctl’ + [-Wimplicit-function-declaration] + Signed-off-by: Daniel Almeida + Part-of: + +2021-04-06 19:18:45 +0300 Sebastian Dröge + + * ext/curl/gstcurlsftpsink.c: + curlsftpsink: Don't run GST_DEBUG_OBJECT() on a class struct + It's supposed to be a GObject. + Part-of: + +2021-03-29 15:29:30 +0800 Yinhang Liu + + * sys/msdk/gstmsdkenc.c: + * sys/msdk/gstmsdkh265enc.c: + msdkh265enc: add support for RGB 10bit format + The SDK can support A2RGB10 format [1], A2RGB10 format corresponds + to BGR10A2_LE format in gstreamer. A2RGB10 format only supports + low-power mode. + Example: + gst-launch-1.0 videotestsrc ! video/x-raw,format=BGR10A2_LE \ + ! msdkh265enc low-power=1 ! fakesink + [1] https://github.com/Intel-Media-SDK/MediaSDK/blob/master/doc/mediasdk-man.md#mfxframedata + Part-of: + +2021-03-31 16:18:04 +0200 Wim Taymans + + * gst-libs/gst/vulkan/android/gstvkwindow_android.c: + * gst-libs/gst/vulkan/cocoa/gstvkwindow_cocoa.m: + * gst-libs/gst/vulkan/gstvkapi.h: + * gst-libs/gst/vulkan/gstvkhandle.h: + * gst-libs/gst/vulkan/ios/gstvkwindow_ios.m: + * gst-libs/gst/vulkan/wayland/gstvkwindow_wayland.c: + * gst-libs/gst/vulkan/win32/gstvkwindow_win32.c: + * gst-libs/gst/vulkan/xcb/gstvkwindow_xcb.c: + * sys/applemedia/videotexturecache-vulkan.mm: + vulkan: provide a custom VK_DEFINE_NON_DISPATCHABLE_HANDLE + If the application did not define one yet, define our own + VK_DEFINE_NON_DISPATCHABLE_HANDLE that is independent of the + architecture. + Vulkan, by default, provides a define that depends on the architecture, + which causes the symbol type to be different. This causes an + architecture dependent .gir file, which then causes multilib + installation problems because the .gir files can't be shared. + Make it possible to override the format specifier and provide + a default one that is compatible with the default non dispatchable + handle. + Return VK_NULL_HANDLE from functions that return a non-dispatchable + handle. + Fixes #1566 + Part-of: + +2021-03-26 17:48:09 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvafilter.c: + * sys/va/gstvafilter.h: + * sys/va/gstvavpp.c: + va: postproc, filter: add disable-passthrough property + vapostproc tries to be in passthrough mode as much as possible. But + they might be situations where the user might force to process the + frames. For example, when upstream sets the crop meta and the user + wants VA do that cropping, rather than downstream. + For those situations this property will disable the passthrough mode, + if it's enabled. + Part-of: + +2021-02-23 09:01:10 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvavpp.c: + va: postproc: enable cropping by crop meta + If incoming buffers have crop meta it's done by vapostproc, iif + vapostproc is not in passthrough mode and downstream doesn't handle + it. + This patch announces the crop meta API in proposed bufferpool, while + it stops filtering meta APIs, since it was only filter crop api. + Also if downstream supports crop and video metas, vapostporoc + announces both meta APIs in upstream bufferpool. + Finally, the meta is removed from the buffer if the crop is enabled. + Part-of: + +2021-03-04 15:19:25 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvafilter.c: + * sys/va/gstvafilter.h: + va: filter: add gst_va_filter_enable_cropping () + This will toggle the cropping operation in the filter + Part-of: + +2021-01-23 12:53:25 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvafilter.c: + * sys/va/gstvafilter.h: + * sys/va/gstvavpp.c: + va: filter, vpp: add and use GstVaSample struct + This new struct describes the input and output GstBuffers to + post-process, including VA flags. It also contains the VASurfaceID and + VARectangle, but those are private, completed inside GstVaFilter. + It is used for pass arguments to gst_va_filter_convert_surface() function. + Part-of: + +2021-02-28 08:38:36 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvavpp.c: + va: postproc: Use allocation caps when creating sink pool. + When an input buffer needs to be copied into a VA memory, it's + required to create a buffer pool. This patch uses the + propose_allocation() caps to instantiate the allocator and pool, + instead of the negotiated caps, which rather represents the resolution + to display. + Part-of: + +2021-01-22 23:54:50 +0100 Mathieu Duponchelle + + * docs/plugins/gst_plugins_cache.json: + * ext/closedcaption/gstline21dec.c: + line21dec: relax caps requirements + Instead of requiring interlaced video, simply skip CC detection + when the input is progressive. + This allows placing line21decoder unconditionally in pipelines, + without having to worry about whether the input stream will be + interlaced, or even worse interlacing just in case! + + update doc cache + Part-of: + +2020-12-16 01:02:53 +0100 Mathieu Duponchelle + + * ext/closedcaption/gstline21dec.c: + * ext/closedcaption/gstline21dec.h: + line21dec: expose mode property + That new property can be used to control whether and how + detected CC meta should be inserted in the list of existing + CC meta on the input frame (if there was any). + Part-of: + +2020-12-15 22:01:33 +0100 Mathieu Duponchelle + + * ext/closedcaption/gstline21dec.c: + * ext/closedcaption/gstline21dec.h: + line21dec: expose ntsc-only property + When this is set, the element only tries to detect CC when the + height is 525 or 486 (NTSC resolutions). The height is already + checked. + Part-of: + +2021-03-31 11:52:07 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvaallocator.c: + va: allocator: Use derived images only if not mapped for reading. + Derived images are direct maps to surfaces bits, but in Intel Gen7 to + Gen9, that memory is not cachable, thus reading can be very slow (it + might produce timeout is tests such as fluster). + This patch tries first to define if derived images are possible, and + later use them only if mapping is not for reading. + Part-of: + +2021-03-31 11:13:52 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvacaps.c: + va: caps: Add image formats in raw caps only for non-iHD. + This plugin, for decoders more concretely, assumes that a VA config + can do certain color conversions when mapping frames onto CPU's + memory. + This assumption was valid for i965 and Gallium drivers which generates + valid outputs in bitstreams testers (v.gr. fluster). Nonetheless, iHD, + even when it generates acceptable rendered frames, output's MD5 of + tests weren't valid. + This patch append the image formats, for color conversion when mapping + to memory, for non-iHD drivers. + Part-of: + +2021-04-01 15:09:45 +0900 Seungha Yang + + * sys/d3d11/gstd3d11convert.cpp: + * sys/d3d11/gstd3d11upload.cpp: + d3d11: Fix for UYVY/VYUY format rendering + Don't assume that non-native DXGI formats support RTV and/or SRV. + We are mapping UYVY and VYUY formats to DXGI_FORMAT_R8G8_B8G8_UNORM + which doesn't support render target view + Part-of: + +2021-03-25 03:16:05 +1100 Jan Schmidt + + * gst/mpegtsmux/gstbasetsmux.c: + * gst/mpegtsmux/gstbasetsmux.h: + mpegtsmux: Respect the start-time-selection property. + Use the start time provided by the aggregator base class for output + times. + Part-of: + +2021-03-29 15:24:38 +0800 Yinhang Liu + + * sys/msdk/gstmsdkh265enc.c: + * sys/msdk/gstmsdkh265enc.h: + msdkh265enc: add dblk-idc property + The SDK can support deblocking reference structure [1], so add a new + property to enable this feature. + [1] https://github.com/Intel-Media-SDK/MediaSDK/blob/master/doc/mediasdk-man.md#mfxextcodingoption2 + Part-of: + +2021-03-29 15:18:13 +0800 Yinhang Liu + + * sys/msdk/gstmsdkh264enc.c: + * sys/msdk/gstmsdkh264enc.h: + msdkh264enc: add dblk-idc property + The SDK can support deblocking reference structure [1], so add a new + property to enable this feature. + [1] https://github.com/Intel-Media-SDK/MediaSDK/blob/master/doc/mediasdk-man.md#mfxextcodingoption2 + Part-of: + +2021-03-30 11:34:54 +0200 Stéphane Cerveau + + * ext/flite/gstflite.c: + * ext/flite/gstflitetestsrc.c: + flite: 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-30 11:27:11 +0200 Stéphane Cerveau + + * ext/dtls/plugin.c: + dtls: hotfix: allow per feature registration + Use of GST_ELEMENT_REGISTER in plugin.c + Part-of: + +2021-03-26 19:47:06 +0100 Stéphane Cerveau + + * ext/gs/meson.build: + gs: remove clang formatting + remove clang formatting during + the build. + Part-of: + +2021-03-26 11:41:50 +0100 Stéphane Cerveau + + * ext/gs/gstgs.cpp: + * ext/gs/gstgssink.cpp: + * ext/gs/gstgssink.h: + * ext/gs/gstgssrc.cpp: + * ext/gs/gstgssrc.h: + gs: 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-29 12:15:18 +0300 Sebastian Dröge + + * gst/timecode/gstavwait.c: + avwait: Don't reset time tracking when receiving the same segment again + This causes avwait to go back into "dropping" mode until audio and video + are synced again, which is unnecessary when the segment didn't actually + change. + Part-of: + +2021-03-17 14:30:09 +0900 Seungha Yang + + * sys/nvcodec/gstnvdecoder.c: + * sys/nvcodec/gstnvdecoder.h: + * sys/nvcodec/gstnvh264dec.c: + * sys/nvcodec/gstnvh265dec.c: + * sys/nvcodec/gstnvvp8dec.c: + * sys/nvcodec/gstnvvp9dec.c: + nvcodec: nvsldec: Refactor graphics api resource handling + * Move GL context object to GstNVDecoder object, and remove + duplicated handling of each codec decoder element + * Don't create GL context too early. We can create it only if + we need to negotiate with downstream gl element. + Part-of: + +2021-03-17 14:38:40 +0800 Haihao Xiang + + * sys/msdk/gstmsdkh264enc.c: + * sys/msdk/gstmsdkh264enc.h: + * sys/msdk/gstmsdkh265enc.c: + * sys/msdk/gstmsdkh265enc.h: + * sys/msdk/msdk-enums.c: + * sys/msdk/msdk-enums.h: + msdkenc{h264,h265}: add intra-refresh-type property + The SDK allows user to specify the intra refresh type which can improve + error resilience without significant impact on encoded bitstream size + caused by I frames [1] + [1] https://github.com/Intel-Media-SDK/MediaSDK/blob/master/doc/mediasdk-man.md#mfxextcodingoption2 + Part-of: + +2021-03-28 12:03:09 +0200 Marijn Suijten + + * gst-libs/gst/d3d11/gstd3d11memory.h: + * gst-libs/gst/webrtc/webrtc_fwd.h: + Add @ prefix to enum-variant references in documentation + Found while working on GStreamer-rs documentation, some enums had this + bit of text pasted verbatim in the enum documentation rather than + attached to the enum-variant. Fortunately it seems these in WebRTC and + D3D11 are the only ones matching the non-@-prefixed pattern: + ^ \* GST_\w+:\s*\w+ + Part-of: + +2021-03-26 12:20:07 +0100 Jan Alexander Steffens (heftig) + + * gst/rtmp2/rtmp/rtmpconnection.c: + rtmp2/connection: Separate inner from outer cancelling + The connection cancels itself when it is closed. To avoid the + cancellable passed to `gst_rtmp_connection_new` from being unexpectedly + cancelled, separate inner from outer cancellation by holding two + cancellables. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1558 + Part-of: + +2021-03-28 12:06:24 +0900 Seungha Yang + + * sys/d3d11/gstd3d11vp9dec.cpp: + d3d11vp9dec: Remove debug dump functions + Existing debug messages are not quite useful + Part-of: + +2021-03-28 16:06:55 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.cpp: + * sys/d3d11/gstd3d11decoder.h: + * sys/d3d11/gstd3d11h264dec.cpp: + * sys/d3d11/gstd3d11h265dec.cpp: + * sys/d3d11/gstd3d11mpeg2dec.cpp: + * sys/d3d11/gstd3d11vp8dec.cpp: + * sys/d3d11/gstd3d11vp9dec.cpp: + d3d11decoder: Move zero-copy decision logic into decoder object + Get rid of all duplicated code for zero-copy decision and output buffer + allocation + Part-of: + +2021-03-26 22:40:34 +0900 Seungha Yang + + * sys/d3d11/gstd3d11vp9dec.cpp: + d3d11vp9dec: Ignore show_frame flag in output_picture() + baseclass will not call output_picture() if it shouldn't be ouputted. + Note that the show_frame flag can be zero when show_existing_frame is set + Part-of: + +2021-03-26 22:27:38 +0900 Seungha Yang + + * gst-libs/gst/codecs/gstvp9decoder.c: + codecs: vp9decoder: Fix to output frame when show_existing_frame flag is set + When show_existing_frame flag is set, show_frame flag is zero + but we should output previously decoded frame as specified in frame header. + Part-of: + +2021-03-26 21:06:59 +0900 Seungha Yang + + * sys/d3d11/gstd3d11h264dec.cpp: + * sys/d3d11/gstd3d11h265dec.cpp: + * sys/d3d11/gstd3d11mpeg2dec.cpp: + * sys/d3d11/gstd3d11vp8dec.cpp: + * sys/d3d11/gstd3d11vp9dec.cpp: + d3d11decoder: Do not hardcode the limit minimum resolution to 64 + Decoder should be able to support lower resolution than 64x64 + Part-of: + +2021-03-25 21:17:07 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videosink.cpp: + * sys/d3d11/gstd3d11videosinkbin.cpp: + * sys/d3d11/gstd3d11window.cpp: + * sys/d3d11/gstd3d11window.h: + d3d11videosink: Remove DirectWrite related dead code + It's now not enabled since we moved core part to gst-libs + Part-of: + +2021-03-25 03:24:11 +0900 Seungha Yang + + * sys/mediafoundation/gstmfvideoenc.cpp: + mfvideoenc: Don't pass 0/1 framerate to MFT + Some MFT implementations do not accept 0/1 framerate and it will + result in encoder open failure. If framerate is unknown, + we will use arbitrary 25/1 framerate value. + Part-of: + +2021-03-23 13:48:09 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11memory.c: + * gst-libs/gst/d3d11/gstd3d11memory.h: + * sys/d3d11/gstd3d11decoder.cpp: + d3d11decoder: Resurrect zero-copy for fixed-size DPB pool + Enable zero-copy if downstream proposed pool and therefore decoder + can know the amount of buffer required by downstream. + Otherwise decoder will copy when our DPB pool has no sufficient + buffers for later decoding operation. + Part-of: + +2021-03-20 19:52:16 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.cpp: + * sys/d3d11/gstd3d11decoder.h: + * sys/d3d11/gstd3d11h264dec.cpp: + * sys/d3d11/gstd3d11h265dec.cpp: + * sys/d3d11/gstd3d11mpeg2dec.cpp: + * sys/d3d11/gstd3d11vp8dec.cpp: + * sys/d3d11/gstd3d11vp9dec.cpp: + d3d11decoder: Implement array-of-texture DPB again + Re-implementation of array-of-texture based on d3d11 memory pool. + Part-of: + +2021-03-18 22:31:55 +0900 Seungha Yang + + d3d11: Implement memory pool + Major changes: + * GstD3D11Allocator: This allocator is now device-independent object + which can allocate GstD3D11Memory object for any GstD3D11Device. + User can get this object via gst_allocator_find(GST_D3D11_MEMORY_NAME) + * GstD3D11PoolAllocator: A new allocator implementation for texture pool. + From now on GstD3D11BufferPool will make use of this memory pool allocator + to avoid frequent texture reallocation. That usually happens because + of buffer copy (gst_buffer_make_writable for example) + In addition to that, GstD3D11BufferPool will provide GstBuffer with + GstVideoMeta, because CPU access to a GstD3D11Memory without GstVideoMeta + is almost impossible since GPU drivers needs padding for stride alignment. + Part-of: + +2021-03-20 22:11:49 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11memory.c: + * gst-libs/gst/d3d11/gstd3d11memory.h: + * sys/d3d11/gstd3d11decoder.cpp: + d3d11decoder: Temporarily remove zero-copy related code + We will re-implement it based on memory pool + Part-of: + +2021-03-23 09:33:49 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvavpp.c: + va: postproc: Set one buffer in pools as minimum. + Because some elements, such as videorate check that minimum are + different of maximum number of buffers in the proposed pool, since + they might hold one or more buffers. + Part-of: + +2021-03-23 19:19:14 +0200 Sebastian Dröge + + * gst-libs/gst/codecparsers/gsth264parser.c: + * gst-libs/gst/codecparsers/gsth265parser.c: + * tests/check/libs/h264parser.c: + * tests/check/libs/h265parser.c: + h2645parser: Catch overflows in AVC/HEVC NAL unit length calculations + Offset and size are stored as 32 bit guint and might overflow when + adding the nal_length_size, so let's avoid that. + For the size this would happen if the AVC/HEVC NAL unit size happens to + be stored in 4 bytes and is 4294967292 or higher, which is likely + corrupted data anyway. + For the offset this is something for the caller of these functions to + take care of but is unlikely to happen as it would require parsing on a + >4GB buffer. + Allowing these overflows causes all kinds of follow-up bugs in the + h2645parse elements, ranging from infinite loops and memory leaks to + potential memory corruptions. + Part-of: + +2021-02-25 09:59:50 +0100 Stéphane Cerveau + + * ext/zxing/gstzxing.cpp: + * ext/zxing/gstzxing.h: + * ext/zxing/gstzxingplugin.c: + zxing: 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-25 09:57:00 +0100 Stéphane Cerveau + + * ext/zbar/gstzbar.c: + * ext/zbar/gstzbar.h: + zbar: 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-25 09:51:52 +0100 Stéphane Cerveau + + * ext/x265/gstx265enc.c: + * ext/x265/gstx265enc.h: + x265: 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-25 09:45:10 +0100 Stéphane Cerveau + + * ext/wpe/gstwpesrc.cpp: + * ext/wpe/gstwpesrc.h: + wpe: 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-25 09:27:19 +0100 Stéphane Cerveau + + * ext/wildmidi/gstwildmididec.c: + * ext/wildmidi/gstwildmididec.h: + wildmidi: 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-25 08:18:54 +0100 Stéphane Cerveau + + * ext/webrtcdsp/gstwebrtcdsp.cpp: + * ext/webrtcdsp/gstwebrtcdsp.h: + * ext/webrtcdsp/gstwebrtcdspplugin.cpp: + * ext/webrtcdsp/gstwebrtcechoprobe.cpp: + * ext/webrtcdsp/gstwebrtcechoprobe.h: + * ext/webrtcdsp/meson.build: + webrtcdsp: 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-25 08:04:42 +0100 Stéphane Cerveau + + * ext/webp/gstwebp.c: + * ext/webp/gstwebpdec.c: + * ext/webp/gstwebpdec.h: + * ext/webp/gstwebpenc.c: + * ext/webp/gstwebpenc.h: + webp: 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-24 18:56:55 +0100 Stéphane Cerveau + + * ext/wayland/gstwaylandsink.c: + * ext/wayland/gstwaylandsink.h: + wayland: 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-24 18:45:15 +0100 Stéphane Cerveau + + * ext/vulkan/gstvulkan.c: + * ext/vulkan/gstvulkanelement.c: + * ext/vulkan/gstvulkanelements.h: + * ext/vulkan/meson.build: + * ext/vulkan/vkcolorconvert.c: + * ext/vulkan/vkdeviceprovider.c: + * ext/vulkan/vkdownload.c: + * ext/vulkan/vkimageidentity.c: + * ext/vulkan/vksink.c: + * ext/vulkan/vkupload.c: + * ext/vulkan/vkviewconvert.c: + vulkan: 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-24 17:34:50 +0100 Stéphane Cerveau + + * ext/voamrwbenc/gstvoamrwb.c: + * ext/voamrwbenc/gstvoamrwbenc.c: + * ext/voamrwbenc/gstvoamrwbenc.h: + voamrwbenc: 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-24 17:32:34 +0100 Stéphane Cerveau + + * ext/voaacenc/gstvoaac.c: + * ext/voaacenc/gstvoaacenc.c: + * ext/voaacenc/gstvoaacenc.h: + voaacenc: 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-24 13:07:30 +0100 Stéphane Cerveau + + * ext/ttml/gstttmlelement.c: + * ext/ttml/gstttmlelements.h: + * ext/ttml/gstttmlparse.c: + * ext/ttml/gstttmlplugin.c: + * ext/ttml/gstttmlrender.c: + * ext/ttml/meson.build: + ttml: 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-24 12:52:08 +0100 Stéphane Cerveau + + * ext/srtp/gstsrtp.c: + * ext/srtp/gstsrtpdec.c: + * ext/srtp/gstsrtpdec.h: + * ext/srtp/gstsrtpelement.c: + * ext/srtp/gstsrtpelements.h: + * ext/srtp/gstsrtpenc.c: + * ext/srtp/gstsrtpenc.h: + * ext/srtp/gstsrtpplugin.c: + * ext/srtp/meson.build: + srtp: 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-24 12:39:22 +0100 Stéphane Cerveau + + * ext/srt/gstsrt.c: + * ext/srt/gstsrtelement.c: + * ext/srt/gstsrtelements.h: + * ext/srt/gstsrtplugin.c: + * ext/srt/gstsrtsink.c: + * ext/srt/gstsrtsrc.c: + * ext/srt/meson.build: + srt: 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-19 12:54:56 +0100 Stéphane Cerveau + + * ext/spandsp/gstdtmfdetect.c: + * ext/spandsp/gstdtmfdetect.h: + * ext/spandsp/gstspandsp.c: + * ext/spandsp/gstspanplc.c: + * ext/spandsp/gstspanplc.h: + * ext/spandsp/gsttonegeneratesrc.c: + * ext/spandsp/gsttonegeneratesrc.h: + spandsp: 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-19 12:41:41 +0100 Stéphane Cerveau + + * ext/soundtouch/gstbpmdetect.cc: + * ext/soundtouch/gstbpmdetect.hh: + * ext/soundtouch/gstpitch.cc: + * ext/soundtouch/gstpitch.hh: + * ext/soundtouch/plugin.c: + soundtouch: 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-19 12:30:50 +0100 Stéphane Cerveau + + * ext/sndfile/gstsf.c: + * ext/sndfile/gstsfdec.c: + * ext/sndfile/gstsfdec.h: + * ext/sndfile/gstsfelement.c: + * ext/sndfile/gstsfelements.h: + * ext/sndfile/gstsfsink.h: + * ext/sndfile/meson.build: + sndfile: 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-19 12:18:39 +0100 Stéphane Cerveau + + * ext/smoothstreaming/gstmssdemux.c: + * ext/smoothstreaming/gstmssdemux.h: + * ext/smoothstreaming/gstsmoothstreaming-plugin.c: + smoothstreaming: 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-19 12:14:53 +0100 Stéphane Cerveau + + * ext/sctp/gstsctpdec.c: + * ext/sctp/gstsctpdec.h: + * ext/sctp/gstsctpenc.c: + * ext/sctp/gstsctpenc.h: + * ext/sctp/gstsctpplugin.c: + sctp: 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-19 12:09:18 +0100 Stéphane Cerveau + + * ext/sbc/gstsbcdec.c: + * ext/sbc/gstsbcdec.h: + * ext/sbc/gstsbcenc.c: + * ext/sbc/gstsbcenc.h: + * ext/sbc/sbc-plugin.c: + sbc: 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-19 12:00:13 +0100 Stéphane Cerveau + + * ext/rtmp/gstrtmp.c: + * ext/rtmp/gstrtmpelement.c: + * ext/rtmp/gstrtmpelements.h: + * ext/rtmp/gstrtmpsink.c: + * ext/rtmp/gstrtmpsink.h: + * ext/rtmp/gstrtmpsrc.c: + * ext/rtmp/meson.build: + rtmp: 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-19 11:53:12 +0100 Stéphane Cerveau + + * ext/rsvg/gstrsvg.c: + * ext/rsvg/gstrsvgdec.c: + * ext/rsvg/gstrsvgdec.h: + * ext/rsvg/gstrsvgoverlay.c: + * ext/rsvg/gstrsvgoverlay.h: + rsvg: 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-19 11:40:40 +0100 Stéphane Cerveau + + * ext/resindvd/plugin.c: + * ext/resindvd/resindvdbin.c: + * ext/resindvd/resindvdbin.h: + resindvd: 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-18 16:23:42 +0100 Stéphane Cerveau + + * ext/qroverlay/gstdebugqroverlay.c: + * ext/qroverlay/gstqroverlay.c: + * ext/qroverlay/gstqroverlayelement.c: + * ext/qroverlay/gstqroverlayelements.h: + * ext/qroverlay/gstqroverlayplugin.c: + * ext/qroverlay/meson.build: + qroverlay: 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-18 15:56:44 +0100 Stéphane Cerveau + + * ext/opus/gstopus.c: + * ext/opus/gstopusparse.c: + * ext/opus/gstopusparse.h: + opus: 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-18 15:48:12 +0100 Stéphane Cerveau + + * ext/openni2/gstopenni2.cpp: + * ext/openni2/gstopenni2src.cpp: + * ext/openni2/gstopenni2src.h: + openni2: 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-18 15:42:44 +0100 Stéphane Cerveau + + * ext/openmpt/gstopenmptdec.c: + * ext/openmpt/gstopenmptdec.h: + * ext/openmpt/plugin.c: + openmpt: 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-18 15:30:06 +0100 Stéphane Cerveau + + * ext/openjpeg/gstopenjpeg.c: + * ext/openjpeg/gstopenjpegdec.c: + * ext/openjpeg/gstopenjpegdec.h: + * ext/openjpeg/gstopenjpegenc.c: + * ext/openjpeg/gstopenjpegenc.h: + openjpeg: 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-18 15:21:40 +0100 Stéphane Cerveau + + * ext/openh264/gstopenh264dec.cpp: + * ext/openh264/gstopenh264element.c: + * ext/openh264/gstopenh264elements.h: + * ext/openh264/gstopenh264enc.cpp: + * ext/openh264/gstopenh264plugin.c: + * ext/openh264/meson.build: + openh264: 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-18 14:08:34 +0100 Stéphane Cerveau + + * ext/openexr/gstopenexr.c: + * ext/openexr/gstopenexrdec.cpp: + * ext/openexr/gstopenexrdec.h: + openexr: 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-18 13:34:54 +0100 Stéphane Cerveau + + * ext/opencv/gstcameracalibrate.cpp: + * ext/opencv/gstcameracalibrate.h: + * ext/opencv/gstcameraundistort.cpp: + * ext/opencv/gstcameraundistort.h: + * ext/opencv/gstcvdilate.cpp: + * ext/opencv/gstcvdilate.h: + * ext/opencv/gstcvequalizehist.cpp: + * ext/opencv/gstcvequalizehist.h: + * ext/opencv/gstcverode.cpp: + * ext/opencv/gstcverode.h: + * ext/opencv/gstcvlaplace.cpp: + * ext/opencv/gstcvlaplace.h: + * ext/opencv/gstcvsmooth.cpp: + * ext/opencv/gstcvsmooth.h: + * ext/opencv/gstcvsobel.cpp: + * ext/opencv/gstcvsobel.h: + * ext/opencv/gstdewarp.cpp: + * ext/opencv/gstdewarp.h: + * ext/opencv/gstdisparity.cpp: + * ext/opencv/gstdisparity.h: + * ext/opencv/gstedgedetect.cpp: + * ext/opencv/gstedgedetect.h: + * ext/opencv/gstfaceblur.cpp: + * ext/opencv/gstfaceblur.h: + * ext/opencv/gstfacedetect.cpp: + * ext/opencv/gstfacedetect.h: + * ext/opencv/gstgrabcut.cpp: + * ext/opencv/gstgrabcut.h: + * ext/opencv/gsthanddetect.cpp: + * ext/opencv/gsthanddetect.h: + * ext/opencv/gstmotioncells.cpp: + * ext/opencv/gstmotioncells.h: + * ext/opencv/gstopencv.cpp: + * ext/opencv/gstretinex.cpp: + * ext/opencv/gstretinex.h: + * ext/opencv/gstsegmentation.cpp: + * ext/opencv/gstsegmentation.h: + * ext/opencv/gstskindetect.cpp: + * ext/opencv/gstskindetect.h: + * ext/opencv/gsttemplatematch.cpp: + * ext/opencv/gsttemplatematch.h: + * ext/opencv/gsttextoverlay.cpp: + * ext/opencv/gsttextoverlay.h: + opencv: 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-18 10:58:28 +0100 Stéphane Cerveau + + * ext/openaptx/gstopenaptxdec.c: + * ext/openaptx/gstopenaptxdec.h: + * ext/openaptx/gstopenaptxenc.c: + * ext/openaptx/gstopenaptxenc.h: + * ext/openaptx/openaptx-plugin.c: + openaptx: 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-18 10:52:51 +0100 Stéphane Cerveau + + * ext/openal/gstopenal.c: + * ext/openal/gstopenalelement.c: + * ext/openal/gstopenalelements.h: + * ext/openal/gstopenalsink.c: + * ext/openal/gstopenalsrc.c: + * ext/openal/meson.build: + openal: 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-18 10:41:53 +0100 Stéphane Cerveau + + * ext/ofa/gstofa.c: + * ext/ofa/gstofa.h: + ofa: 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-18 10:35:34 +0100 Stéphane Cerveau + + * ext/neon/gstneonhttpsrc.c: + * ext/neon/gstneonhttpsrc.h: + neon: 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-18 10:24:18 +0100 Stéphane Cerveau + + * ext/musepack/gstmusepackdec.c: + * ext/musepack/gstmusepackdec.h: + musepack: 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-18 10:17:20 +0100 Stéphane Cerveau + + * ext/mplex/gstmplex.cc: + * ext/mplex/gstmplex.hh: + mplex: 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-18 10:14:38 +0100 Stéphane Cerveau + + * ext/mpeg2enc/gstmpeg2enc.cc: + * ext/mpeg2enc/gstmpeg2enc.hh: + mpeg2enc: 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-18 10:10:16 +0100 Stéphane Cerveau + + * ext/modplug/gstmodplug.cc: + * ext/modplug/gstmodplug.h: + modplug: 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-18 09:56:08 +0100 Stéphane Cerveau + + * ext/mdns/gstmicrodns.c: + mdns: 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-18 09:52:08 +0100 Stéphane Cerveau + + * ext/libmms/gstmms.c: + * ext/libmms/gstmms.h: + libmms: 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-18 09:50:21 +0100 Stéphane Cerveau + + * ext/libde265/gstlibde265.c: + * ext/libde265/libde265-dec.c: + * ext/libde265/libde265-dec.h: + libde265: 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-18 09:48:04 +0100 Stéphane Cerveau + + * ext/ldac/gstldacenc.c: + * ext/ldac/gstldacenc.h: + * ext/ldac/ldac-plugin.c: + ldac: 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-17 18:38:16 +0100 Stéphane Cerveau + + * ext/kate/gstkate.c: + * ext/kate/gstkatedec.c: + * ext/kate/gstkateelement.c: + * ext/kate/gstkateelements.h: + * ext/kate/gstkateenc.c: + * ext/kate/gstkateparse.c: + * ext/kate/gstkatetag.c: + * ext/kate/gstkatetiger.c: + * ext/kate/gstkateutil.c: + * ext/kate/meson.build: + kate: 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-17 18:26:42 +0100 Stéphane Cerveau + + * ext/isac/gstisac.c: + * ext/isac/gstisacdec.c: + * ext/isac/gstisacdec.h: + * ext/isac/gstisacenc.c: + * ext/isac/gstisacenc.h: + isac: 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-17 18:23:21 +0100 Stéphane Cerveau + + * ext/iqa/iqa.c: + * ext/iqa/iqa.h: + iqa: 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-17 18:17:08 +0100 Stéphane Cerveau + + * ext/hls/gsthls.h: + * ext/hls/gsthlsdemux.c: + * ext/hls/gsthlsdemux.h: + * ext/hls/gsthlselement.c: + * ext/hls/gsthlselements.h: + * ext/hls/gsthlsplugin.c: + * ext/hls/gsthlssink.c: + * ext/hls/gsthlssink2.c: + * ext/hls/gstm3u8playlist.c: + * ext/hls/m3u8.c: + * ext/hls/m3u8.h: + * ext/hls/meson.build: + hls: 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-17 18:07:42 +0100 Stéphane Cerveau + + * ext/gsm/gstgsm.c: + * ext/gsm/gstgsmdec.c: + * ext/gsm/gstgsmdec.h: + * ext/gsm/gstgsmenc.c: + * ext/gsm/gstgsmenc.h: + gsm: 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-17 18:04:20 +0100 Stéphane Cerveau + + * ext/gme/gstgme.c: + * ext/gme/gstgme.h: + gme: 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-17 18:01:05 +0100 Stéphane Cerveau + + * ext/fluidsynth/gstfluiddec.c: + * ext/fluidsynth/gstfluiddec.h: + fluidsynth: 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-17 16:05:02 +0100 Stéphane Cerveau + + * ext/fdkaac/gstfdkaac.c: + * ext/fdkaac/gstfdkaacdec.c: + * ext/fdkaac/gstfdkaacdec.h: + * ext/fdkaac/gstfdkaacenc.c: + * ext/fdkaac/gstfdkaacenc.h: + * ext/fdkaac/gstfdkaacplugin.c: + * ext/fdkaac/meson.build: + fdkaac: 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-17 15:59:49 +0100 Stéphane Cerveau + + * ext/faad/gstfaad.c: + * ext/faad/gstfaad.h: + faad: 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-17 15:59:36 +0100 Stéphane Cerveau + + * ext/faac/gstfaac.c: + * ext/faac/gstfaac.h: + faac: 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-17 15:35:10 +0100 Stéphane Cerveau + + * ext/dts/gstdtsdec.c: + * ext/dts/gstdtsdec.h: + dts: 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-17 12:22:07 +0100 Stéphane Cerveau + + * ext/dtls/gstdtlsdec.c: + * ext/dtls/gstdtlselement.c: + * ext/dtls/gstdtlselements.h: + * ext/dtls/gstdtlsenc.c: + * ext/dtls/gstdtlssrtpdec.c: + * ext/dtls/gstdtlssrtpdemux.c: + * ext/dtls/gstdtlssrtpenc.c: + * ext/dtls/meson.build: + dtls: 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-17 12:10:31 +0100 Stéphane Cerveau + + * ext/directfb/dfbvideosink.c: + * ext/directfb/dfbvideosink.h: + directfb: 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-17 12:07:48 +0100 Stéphane Cerveau + + * ext/dc1394/gstdc1394src.c: + * ext/dc1394/gstdc1394src.h: + dc1394: 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-17 12:03:05 +0100 Stéphane Cerveau + + * ext/dash/gstdashdemux.c: + * ext/dash/gstdashdemux.h: + * ext/dash/gstdashsink.c: + * ext/dash/gstdashsink.h: + * ext/dash/gstplugin.c: + dash: 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-17 11:55:14 +0100 Stéphane Cerveau + + * ext/curl/gstcurl.c: + * ext/curl/gstcurlelement.c: + * ext/curl/gstcurlelements.h: + * ext/curl/gstcurlfilesink.c: + * ext/curl/gstcurlftpsink.c: + * ext/curl/gstcurlhttpsink.c: + * ext/curl/gstcurlhttpsrc.c: + * ext/curl/gstcurlsftpsink.c: + * ext/curl/gstcurlsmtpsink.c: + * ext/curl/meson.build: + curl: 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-17 11:43:33 +0100 Stéphane Cerveau + + * ext/colormanagement/gstcolormanagement.c: + * ext/colormanagement/gstlcms.c: + * ext/colormanagement/gstlcms.h: + colormanagement: 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-17 11:31:35 +0100 Stéphane Cerveau + + * ext/closedcaption/gstcccombiner.c: + * ext/closedcaption/gstcccombiner.h: + * ext/closedcaption/gstccconverter.c: + * ext/closedcaption/gstccconverter.h: + * ext/closedcaption/gstccextractor.c: + * ext/closedcaption/gstccextractor.h: + * ext/closedcaption/gstceaccoverlay.c: + * ext/closedcaption/gstceaccoverlay.h: + * ext/closedcaption/gstclosedcaption.c: + * ext/closedcaption/gstline21dec.c: + * ext/closedcaption/gstline21dec.h: + * ext/closedcaption/gstline21enc.c: + * ext/closedcaption/gstline21enc.h: + closedcaption: 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-17 10:23:15 +0100 Stéphane Cerveau + + * ext/chromaprint/gstchromaprint.c: + * ext/chromaprint/gstchromaprint.h: + chromaprint: 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-17 10:13:45 +0100 Stéphane Cerveau + + * ext/bz2/gstbz2.c: + * ext/bz2/gstbz2dec.c: + * ext/bz2/gstbz2dec.h: + * ext/bz2/gstbz2enc.c: + * ext/bz2/gstbz2enc.h: + bz2: 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-17 10:10:39 +0100 Stéphane Cerveau + + * ext/bs2b/gstbs2b.c: + * ext/bs2b/gstbs2b.h: + bs2b: 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-17 10:05:20 +0100 Stéphane Cerveau + + * ext/avtp/gstavtp.c: + * ext/avtp/gstavtpaafdepay.c: + * ext/avtp/gstavtpaafdepay.h: + * ext/avtp/gstavtpaafpay.c: + * ext/avtp/gstavtpaafpay.h: + * ext/avtp/gstavtpcrfcheck.c: + * ext/avtp/gstavtpcrfcheck.h: + * ext/avtp/gstavtpcrfsync.c: + * ext/avtp/gstavtpcrfsync.h: + * ext/avtp/gstavtpcvfdepay.c: + * ext/avtp/gstavtpcvfdepay.h: + * ext/avtp/gstavtpcvfpay.c: + * ext/avtp/gstavtpcvfpay.h: + * ext/avtp/gstavtpsink.c: + * ext/avtp/gstavtpsink.h: + * ext/avtp/gstavtpsrc.c: + * ext/avtp/gstavtpsrc.h: + avtp: 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-17 09:45:04 +0100 Stéphane Cerveau + + * ext/assrender/gstassrender.c: + * ext/assrender/gstassrender.h: + assrender: 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-17 09:52:11 -0400 Julian Bouzas + + * ext/aom/gstaom.c: + * ext/aom/gstav1dec.c: + * ext/aom/gstav1dec.h: + * ext/aom/gstav1enc.c: + * ext/aom/gstav1enc.h: + aom: 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-23 16:26:13 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.cpp: + * sys/d3d11/meson.build: + d3d11decoder: Enable high precision clock if needed + We've been doing retry with 1ms sleep if DecoderBeginFrame() + returned E_PENDING which means application should call + DecoderBeginFrame() again because GPU is busy. + The 1ms sleep() during retry would result in usually about 15ms delay + in reality because of bad clock precision on Windows. + To improve throughput performance, this commit will enable + high precision clock only for NVIDIA platform since + DecoderBeginFrame() call on the other GPU vendors seems to + succeed without retry. + Part-of: + +2021-03-03 16:03:07 +0100 Stéphane Cerveau + + * gst/mpegdemux/gstmpegdemux.c: + * gst/mpegdemux/gstmpegdemux.h: + mpegpsdemux: fix accurate seek + In an accurate seek, the segment start should be + the same as the one requested in the seek. + The start should be kept as the one from the + segment if its inferior. + Part-of: + +2021-03-03 14:11:21 +0100 Stéphane Cerveau + + * gst/mpegdemux/gstmpegdemux.c: + * gst/mpegdemux/gstmpegdemux.h: + mpegpsdemux: Keep seqnum events + Keep the same seqnum of the new segment events for each + of the streams. + Keep the segment to send the EOS event. + Keep the seek seqnum for segment and flush event. + Part-of: + +2021-03-01 16:23:09 +0100 Stéphane Cerveau + + * gst/mpegdemux/gstmpegdemux.c: + mpegpsdemux: avoid early EOS + In a case of a scr different from 0, after a seek, + the src_segment.stop has been updated with the duration + not including the base_time (scr). The segment position + needs to be tested upon segment.stop + base_time (scr) + to check for an EOS. + Part-of: + +2021-03-19 16:17:41 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvavpp.c: + va: postproc: disable passthrough as soon as possible + After the VA filter creation, when changing the element's state from NULL + to READY, immediatly checks for any filter operation requested by the user. + If any, the passthrough mode is disabled early, so there's no need for a + future renegotiation. + Part-of: + +2021-03-19 16:14:08 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvavpp.c: + va: postproc: rename function to gst_va_vpp_update_passthrough + Since it's widely used, a proper name will reflect its importance. + Part-of: + +2021-03-22 14:34:36 +1100 Matthew Waters + + * ext/closedcaption/gstccconverter.c: + * ext/colormanagement/gstlcms.c: + * ext/curl/gstcurlqueue.h: + * ext/iqa/iqa.c: + * ext/opencv/gstcvdilateerode.cpp: + * ext/openjpeg/gstopenjpegenc.c: + * ext/resindvd/rsndec.c: + * ext/sctp/sctpassociation.c: + * ext/ttml/subtitlemeta.c: + * ext/wildmidi/gstwildmididec.c: + * gst-libs/gst/adaptivedemux/gstadaptivedemux.c: + * gst-libs/gst/audio/gstnonstreamaudiodecoder.c: + * gst-libs/gst/codecparsers/gstmpegvideometa.c: + * gst-libs/gst/d3d11/gstd3d11device.c: + * gst-libs/gst/d3d11/gstd3d11utils.c: + * gst-libs/gst/sctp/sctpreceivemeta.c: + * gst-libs/gst/sctp/sctpsendmeta.c: + * gst-libs/gst/vulkan/android/gstvkwindow_android.c: + * gst-libs/gst/vulkan/cocoa/gstvkwindow_cocoa.m: + * gst-libs/gst/vulkan/gstvkbuffermemory.c: + * gst-libs/gst/vulkan/gstvkcommandbuffer.c: + * gst-libs/gst/vulkan/gstvkdescriptorset.c: + * gst-libs/gst/vulkan/gstvkdevice.c: + * gst-libs/gst/vulkan/gstvkdisplay.c: + * gst-libs/gst/vulkan/gstvkfence.c: + * gst-libs/gst/vulkan/gstvkhandle.c: + * gst-libs/gst/vulkan/gstvkimagememory.c: + * gst-libs/gst/vulkan/gstvkimageview.c: + * gst-libs/gst/vulkan/gstvkinstance.c: + * gst-libs/gst/vulkan/gstvkmemory.c: + * gst-libs/gst/vulkan/gstvkphysicaldevice.c: + * gst-libs/gst/vulkan/gstvkqueue.c: + * gst-libs/gst/vulkan/gstvktrash.c: + * gst-libs/gst/vulkan/gstvkutils.c: + * gst-libs/gst/vulkan/gstvkwindow.c: + * gst-libs/gst/vulkan/ios/gstvkwindow_ios.m: + * gst-libs/gst/vulkan/vulkan_mkenum.py: + * gst-libs/gst/vulkan/wayland/gstvkwindow_wayland.c: + * gst-libs/gst/vulkan/xcb/gstvkwindow_xcb.c: + * gst/camerabin2/gstcamerabin2.c: + * gst/debugutils/gstfakevideosink.c: + * gst/mxf/mxfmetadata.c: + * gst/netsim/gstnetsim.c: + * gst/rtmp2/rtmp/amf.c: + * gst/rtmp2/rtmp/rtmpchunkstream.c: + * gst/rtmp2/rtmp/rtmpclient.c: + * gst/rtmp2/rtmp/rtmphandshake.c: + * gst/rtmp2/rtmp/rtmpmessage.c: + * gst/segmentclip/gstsegmentclip.c: + * sys/androidmedia/gstamcaudiodec.c: + * sys/androidmedia/gstamcvideodec.c: + * sys/androidmedia/gstamcvideoenc.c: + * sys/applemedia/coremediabuffer.c: + * sys/applemedia/corevideobuffer.c: + * sys/applemedia/corevideomemory.c: + * sys/applemedia/iosglmemory.c: + * sys/applemedia/iosurfaceglmemory.c: + * sys/applemedia/iosurfacevulkanmemory.c: + * sys/bluez/gstavdtpsrc.h: + * sys/d3d11/gstd3d11deinterlace.cpp: + * sys/d3d11/gstd3d11shader.cpp: + * sys/d3d11/gstd3d11window.cpp: + * sys/d3d11/gstd3d11window_win32.cpp: + * sys/ipcpipeline/gstipcpipelinecomm.c: + * sys/mediafoundation/gstmftransform.cpp: + * sys/mediafoundation/gstmfvideobuffer.h: + * sys/msdk/gstmsdkcontextutil.c: + * sys/nvcodec/gstcudacontext.c: + * sys/nvcodec/gstcudanvrtc.c: + * sys/nvcodec/gstcudautils.c: + * sys/nvcodec/gstnvbaseenc.h: + * sys/opensles/openslescommon.c: + * sys/va/gstvaallocator.c: + * sys/va/gstvautils.c: + * sys/wasapi/gstwasapiutil.c: + * sys/wasapi2/gstwasapi2client.cpp: + * sys/winscreencap/dxgicapture.c: + * tests/check/libs/vkimage.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-20 16:26:21 +0900 Seungha Yang + + * sys/mediafoundation/gstmfvideoenc.cpp: + * sys/mediafoundation/meson.build: + mfvideoenc: Enable Direct3D multi-thread protection + As documented by MS. See also + https://docs.microsoft.com/en-us/windows/win32/medfound/supporting-direct3d-11-video-decoding-in-media-foundation#open-a-device-handle + Part-of: + +2021-03-20 16:15:35 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11device.c: + * gst-libs/gst/d3d11/gstd3d11memory.c: + * gst-libs/gst/d3d11/meson.build: + * sys/d3d11/gstd3d11compositor.cpp: + * sys/d3d11/gstd3d11convert.cpp: + * sys/d3d11/gstd3d11converter.cpp: + * sys/d3d11/gstd3d11decoder.cpp: + * sys/d3d11/gstd3d11deinterlace.cpp: + * sys/d3d11/gstd3d11desktopdup.cpp: + * sys/d3d11/gstd3d11overlaycompositor.cpp: + * sys/d3d11/gstd3d11pluginutils.cpp: + * sys/d3d11/gstd3d11videoprocessor.cpp: + * sys/d3d11/gstd3d11window.cpp: + * sys/d3d11/gstd3d11window_corewindow.cpp: + * sys/d3d11/gstd3d11window_dummy.cpp: + * sys/d3d11/gstd3d11window_swapchainpanel.cpp: + * sys/d3d11/gstd3d11window_win32.cpp: + * sys/mediafoundation/gstmfvideoenc.cpp: + Revert "d3d11: Enable native multi-thread protection layer and make use of it" + This reverts commit 872b7f503c49442e559f6a381416c6a84b76a3c6. + Native multi-thread protection layer seems to be consuming more CPU + resource than application side protection approach in some cases + Part-of: + +2021-03-19 16:36:41 +1100 Matthew Waters + + * tests/check/elements/webrtcbin.c: + tests/webrtc: check for more sdp things across the board + e.g. + - test for a=setup:$val and direction attributes in all tests + - test number of media sections + - test number of formats in each m= section (for audio/video) + - test no duplicate formats + Part-of: + +2020-06-23 12:41:27 -0700 Julien + + * docs/plugins/gst_plugins_cache.json: + * ext/gs/.clang-format: + * ext/gs/README.md: + * ext/gs/gstgs.cpp: + * ext/gs/gstgscommon.cpp: + * ext/gs/gstgscommon.h: + * ext/gs/gstgssink.cpp: + * ext/gs/gstgssink.h: + * ext/gs/gstgssrc.cpp: + * ext/gs/gstgssrc.h: + * ext/gs/meson.build: + * ext/meson.build: + * meson_options.txt: + gs: add source and sink for Google Cloud Storage + Useful when having a service that runs a GStreamer pipeline + or application in Google Cloud to avoid storing the inputs + and outputs in the running container or service. For example + when analyzing a video from a Google Cloud Storage bucket + and extracting images or converting the video and then uploading + the results into another Google Cloud Storage bucket. + - gssrc allows to read from a file located in Google Cloud + Storage and it supports seeking. + - gssink allows to write to a file located in Google Cloud + Storage. There are 2 modes, one similar to multifilesink and + the other similar to filesink. + Example: + gst-launch-1.0 gssrc location=gs://mybucket/videos/sample.mp4 ! decodebin ! glimagesink + gst-launch-1.0 playbin uri=gs://mybucket/videos/sample.mp4 + gst-launch-1.0 videotestsrc num-buffers=5 ! pngenc ! gssink object-name="img/img%05d.png" bucket-name="mybucket" next-file=buffer + gst-launch-1.0 filesrc location=sample.mp4 ! gssink object-name="videos/video.mp4" bucket-name="mybucket" next-file=none + When running locally simply set GOOGLE_APPLICATION_CREDENTIALS. But + when running in Google Cloud Run or Google Cloud Engine, just set the + "service-account-email" property on each element. + Closes #1264 + Part-of: + +2021-03-17 23:53:04 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11device.c: + * gst-libs/gst/d3d11/gstd3d11memory.c: + * gst-libs/gst/d3d11/meson.build: + * sys/d3d11/gstd3d11compositor.cpp: + * sys/d3d11/gstd3d11convert.cpp: + * sys/d3d11/gstd3d11converter.cpp: + * sys/d3d11/gstd3d11decoder.cpp: + * sys/d3d11/gstd3d11deinterlace.cpp: + * sys/d3d11/gstd3d11desktopdup.cpp: + * sys/d3d11/gstd3d11overlaycompositor.cpp: + * sys/d3d11/gstd3d11pluginutils.cpp: + * sys/d3d11/gstd3d11videoprocessor.cpp: + * sys/d3d11/gstd3d11window.cpp: + * sys/d3d11/gstd3d11window_corewindow.cpp: + * sys/d3d11/gstd3d11window_dummy.cpp: + * sys/d3d11/gstd3d11window_swapchainpanel.cpp: + * sys/d3d11/gstd3d11window_win32.cpp: + * sys/mediafoundation/gstmfvideoenc.cpp: + d3d11: Enable native multi-thread protection layer and make use of it + ... instead of our own GRecMutex locking. In this way, any other + Direct3D11 client (MediaFoundation for example) can safely call + any Direct3D11 API even when we are sharing our Direct3D11 device + with others. + Part-of: + +2021-02-26 03:28:29 +1100 Jan Schmidt + + * tests/examples/mpegts/meson.build: + * tests/examples/mpegts/tsmux-prog-map.c: + examples: Add an mpegtsmux example of prog-map usage. + Add an example of how to construct the prog-map structure for + the MPEG-TS muxers and assign streams to programs, and set PCR + and PMT PIDs. + Part-of: + +2021-02-26 02:53:33 +1100 Jan Schmidt + + * gst/mpegtsmux/gstbasetsmux.c: + * gst/mpegtsmux/tsmux/tsmux.c: + * gst/mpegtsmux/tsmux/tsmux.h: + mpegtsmux: Add PMT_%d support to prog-map. + Support a PMT_%d field in the prog-map, that's optionally used + to set the PMT for each program in the mux. + Part-of: + +2021-03-12 18:10:18 +1100 Jan Schmidt + + * gst/mpegtsmux/tsmux/tsmux.c: + * gst/mpegtsmux/tsmux/tsmux.h: + mpegtsmux: Don't write PCR until PAT/PMT are output. + Make sure streams start cleanly with a PAT/PMT and defer the first PCR + output until after that. + Part-of: + +2021-03-11 18:21:11 +0100 Mathieu Duponchelle + + * gst/mpegtsmux/tsmux/tsmux.c: + tsmux: finalize PCR timing for complete accuracy + In order to always insert a PCR packet right on time, we need to + check whether one is needed when outputting any packet, not only + a packet for the PCR stream. Most of the PCR packets will remain + data-carrying packets, but as a last resort we may insert stuffing + packets on the PCR stream. + Part-of: + +2021-03-11 18:05:25 +1100 Jan Schmidt + + * gst/mpegtsmux/tsmux/tsmux.c: + mpegtsmux: Improve PCR/SI scheduling. + Change PCR / SI scheduling so that instead of checking if + the current PCR is larger than the next target time, instead + check if the PCR of the next packet would be too late, so PCR + and SI are always scheduled earlier than the target, not later. + There are still cases where PCR can be written too late though, + because we don't check before each output packet. + Part-of: + +2021-03-11 18:05:10 +1100 Jan Schmidt + + * gst/mpegtsmux/tsmux/tsmuxstream.c: + tsmuxstream: Fix comment typo + Part-of: + +2021-03-09 13:22:10 +0100 Mathieu Duponchelle + + * docs/plugins/gst_plugins_cache.json: + * ext/closedcaption/gstcccombiner.c: + * ext/closedcaption/gstcccombiner.h: + * tests/check/elements/cccombiner.c: + cccombiner: implement scheduling + Prior to that, cccombiner's behaviour was essentially that of + a funnel: it strictly looked at input timestamps to associate + together video and caption buffers. + This patch instead exposes a "schedule" property, with a default + of TRUE, to control whether caption buffers should be smoothly + scheduled, in order to have exactly one per output video buffer. + This can involve rewriting input captions, for example when the + input is CDP sequence counters are rewritten, time codes are dropped + and potentially re-injected if the input video frame had a time code + meta. + Caption buffers may also get split up in order to assign captions to + the correct field when the input is interlaced. + This can also imply that the input will drift from synchronization, + when there isn't enough padding in the input stream to catch up. In + that case the element will start dropping old caption buffers once + the number of buffers in its internal queue reaches a certain limit + (configurable). + The property is exposed so that existing users of cccombiner can + revert back to the original behaviour, but should eventually be + removed, as that behaviour was simply inadequate. + This commit also disallows changing the input caption type, as + this would needlessly complicate implementation, and removes + the corresponding test. + Part-of: + +2021-03-17 19:26:12 +0900 Seungha Yang + + * sys/d3d11/gstd3d11convert.cpp: + * sys/d3d11/gstd3d11upload.cpp: + d3d11: Use render-target and shader-resource bind flags by default + Even if bind flags is not needed by an element, other element + might need such bind flags. + Part-of: + +2021-03-15 00:04:21 +0800 He Junyan + + * sys/va/gstvavpp.c: + va: vpp: Fix features lost in transform_caps(). + When we transform the caps from the sink to src, or vice versa, the + "caps" passed to us may only contain parts of the features. Which + makes our vpp lose some feature in caps and get a negotiation error. + The correct way should be: + Cleaning the format and resolution of that caps, but adding all VA, + DMA features to it, making it a full feature caps. Then, clipping it + with the pad template. + fixes: #1551 + Part-of: + +2021-03-15 16:25:36 -0300 Thibault Saunier + + * ext/wpe/WPEThreadedView.cpp: + wpe: Ignore 'error-cancelled' 'failures' + This happens when the user use the 'load-bytes' signal and nothing is wrong there + Part-of: + +2021-03-16 19:09:59 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.cpp: + d3d11decoder: WARNING if ID3D11VideoDevice is unavailable, not ERROR + gst_d3d11_decoder_new() method is also used for device capability + checking during plugin init. Although we are checking hardware + flag prior to that, it doesn't guarantee ID3D11VideoDevice interface. + Part-of: + +2021-03-16 17:56:51 +0900 Seungha Yang + + * sys/mediafoundation/gstmfsourcereader.cpp: + * sys/mediafoundation/gstmftransform.cpp: + mediafoundation: Fix resource leak + IMFActivate would hold its internal objects unless user call ShutdownObject(), + even if we release the IMFActivate. Here internal objects may + include Direct3D objects, such as texture, device handle for example. + Part-of: + +2021-03-16 15:58:57 +0900 Seungha Yang + + * sys/d3d11/gstd3d11convert.cpp: + d3d11colorconvert: Fix caps leak + GstBaseTransform::fixate_caps() takes ownership of passed + othercaps argument. + Part-of: + +2021-03-13 19:00:18 +0100 Víctor Manuel Jáquez Leal + + * tests/examples/va/meson.build: + * tests/examples/va/multiple-vpp.c: + va: example: multiple-vpp: test sharpen with dynamic controller + Part-of: + +2021-03-13 18:57:37 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvavpp.c: + va: postproc: synchronize segment with stream time + This is required to use dynamic controllable parameters. + Part-of: + +2021-03-15 18:26:03 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.cpp: + * sys/d3d11/gstd3d11decoder.h: + * sys/d3d11/gstd3d11h264dec.cpp: + * sys/d3d11/gstd3d11h265dec.cpp: + * sys/d3d11/gstd3d11mpeg2dec.cpp: + * sys/d3d11/gstd3d11vp8dec.cpp: + * sys/d3d11/gstd3d11vp9dec.cpp: + d3d11decoder: Do negotiation again per forward/reverse playback mode change + For reverse playback, we are always copying decoded + frame to downstream buffer. So the pool size can be + and need to be large enough. + In case that forward playback, however, we need to restrict + the max pool size for performance reason. Otherwise decoder + will keep copying decoded texture to downstream buffer pool + if decoding is faster than downstream throughput + performance and also there are queue element between them. + Part-of: + +2021-03-15 19:48:56 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videosink.cpp: + * sys/d3d11/gstd3d11window.cpp: + * sys/d3d11/gstd3d11window.h: + d3d11videosink: Avoid switching conversion tool during playback + Decoder might be able to copy decoded texture to the other buffer pool + during playback depending on context. In that case, copied one + has no D3D11_BIND_DECODER bind flag. + If we used ID3D11VideoProcessor previously for decoder texture, + and incoming texture supports ID3D11VideoProcessor as well even if it has no + D3D11_BIND_DECODER flag (having D3D11_BIND_RENDER_TARGET for example), + allow zero-copying instead of using our fallback texture. + Frequent conversion tool change (between ID3D11VideoProcessor and generic shader) + might result in inconsistent image quality. + Part-of: + +2021-03-12 13:50:59 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvafilter.c: + * sys/va/gstvafilter.h: + * sys/va/gstvavpp.c: + va: postproc: only drop filters if they change + Currently, at every frame the filters array is recreated. This is not + optimal, since it should be only rebuilt if the VA filter's related + properties change. This patches does that by using a flag. + Part-of: + +2021-03-14 16:11:12 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.cpp: + * sys/d3d11/gstd3d11decoder.h: + * sys/d3d11/gstd3d11h264dec.cpp: + * sys/d3d11/gstd3d11h265dec.cpp: + * sys/d3d11/gstd3d11mpeg2dec.cpp: + * sys/d3d11/gstd3d11vp8dec.cpp: + * sys/d3d11/gstd3d11vp9dec.cpp: + d3d11decoder: Refactor device open step and negotiation + * Remove redundant method arguments + * Don't allocate staging texture if downstream supports d3d11 memory + Part-of: + +2021-03-14 15:08:01 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.cpp: + * sys/d3d11/gstd3d11decoder.h: + * sys/d3d11/gstd3d11h264dec.cpp: + * sys/d3d11/gstd3d11h265dec.cpp: + * sys/d3d11/gstd3d11mpeg2dec.cpp: + * sys/d3d11/gstd3d11vp8dec.cpp: + * sys/d3d11/gstd3d11vp9dec.cpp: + d3d11decoder: Move profile GUID handling into decoder object + Part-of: + +2021-03-14 14:26:17 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.cpp: + * sys/d3d11/gstd3d11decoder.h: + * sys/d3d11/gstd3d11h264dec.cpp: + * sys/d3d11/gstd3d11h265dec.cpp: + * sys/d3d11/gstd3d11mpeg2dec.cpp: + * sys/d3d11/gstd3d11vp8dec.cpp: + * sys/d3d11/gstd3d11vp9dec.cpp: + d3d11decoder: Get rid of private struct + Completely hide member variables + Part-of: + +2021-03-14 12:50:21 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.cpp: + * sys/d3d11/gstd3d11vp9dec.cpp: + Revert "d3d11vp9dec: Add support for internal frame resizing" + This reverts commit 58a4c33a0e4f4e5415d8578166716e0d65c0c27e + We should use ID3D11VideoProcessor instead of shader + to avoid copy. We need to revisit this topic later + Part-of: + +2021-03-13 22:47:55 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11device.c: + * gst-libs/gst/d3d11/gstd3d11device.h: + * sys/d3d11/gstd3d11decoder.cpp: + * sys/d3d11/gstd3d11deinterlace.cpp: + * sys/d3d11/gstd3d11videoprocessor.cpp: + d3d11device: Hold ID3D11VideoDevice and ID3D11VideoContext object + ... instead of QueryInterface-ing per elements. Note that + ID3D11VideoDevice and ID3D11VideoContext objects might not be available + if device doesn't support video interface. + So GstD3D11Device object will create those objects only when requested. + Part-of: + +2021-03-14 13:01:37 +0900 Seungha Yang + + * sys/d3d11/gstd3d11desktopdup.cpp: + * sys/d3d11/gstd3d11window.cpp: + * sys/d3d11/gstd3d11window_corewindow.cpp: + * sys/d3d11/gstd3d11window_dummy.cpp: + * sys/d3d11/gstd3d11window_swapchainpanel.cpp: + * sys/d3d11/gstd3d11window_win32.cpp: + d3d11: Run gst-indent for all C++ code + Since all d3d11 plugin implementation code are C++, we need to + run gst-indent manually. This is preparation for later + "gst-indent sys/d3d11/*.cpp" run. + Part-of: + +2021-03-13 17:40:57 +0900 Seungha Yang + + * sys/d3d11/gstd3d11basefilter.cpp: + * sys/d3d11/gstd3d11colorconverter.h: + * sys/d3d11/gstd3d11compositor.cpp: + * sys/d3d11/gstd3d11compositorbin.cpp: + * sys/d3d11/gstd3d11convert.cpp: + * sys/d3d11/gstd3d11convert.h: + * sys/d3d11/gstd3d11converter.cpp: + * sys/d3d11/gstd3d11converter.h: + * sys/d3d11/gstd3d11decoder.cpp: + * sys/d3d11/gstd3d11decoder.h: + * sys/d3d11/gstd3d11deinterlace.cpp: + * sys/d3d11/gstd3d11desktopdup.cpp: + * sys/d3d11/gstd3d11desktopdupsrc.cpp: + * sys/d3d11/gstd3d11download.cpp: + * sys/d3d11/gstd3d11h264dec.cpp: + * sys/d3d11/gstd3d11h265dec.cpp: + * sys/d3d11/gstd3d11mpeg2dec.cpp: + * sys/d3d11/gstd3d11overlaycompositor.cpp: + * sys/d3d11/gstd3d11pluginutils.cpp: + * sys/d3d11/gstd3d11pluginutils.h: + * sys/d3d11/gstd3d11shader.cpp: + * sys/d3d11/gstd3d11upload.cpp: + * sys/d3d11/gstd3d11videoprocessor.cpp: + * sys/d3d11/gstd3d11videoprocessor.h: + * sys/d3d11/gstd3d11videosink.cpp: + * sys/d3d11/gstd3d11videosinkbin.cpp: + * sys/d3d11/gstd3d11vp8dec.cpp: + * sys/d3d11/gstd3d11vp9dec.cpp: + * sys/d3d11/gstd3d11window.cpp: + * sys/d3d11/gstd3d11window.h: + * sys/d3d11/gstd3d11window_dummy.cpp: + * sys/d3d11/meson.build: + * sys/d3d11/plugin.c: + d3d11: Port to C++ + Direct3D11 objects are COM, and most COM C APIs are verbose + (C++ is a little better). So, by using C++ APIs, we can make code + shorter and more readable. + Moreover, "ComPtr" helper class (which is C++ only) can be + utilized, that is very helpful for avoiding error-prone COM refcounting + issue/leak. + Part-of: + +2021-03-12 12:36:52 +0100 Víctor Manuel Jáquez Leal + + * tests/examples/va/multiple-vpp.c: + va: example: multiple-vpp: test direction change + If the driver supports it (iHD, so far) and the parameter -d is set, + the direction of the video will be changed randomly. + In the code you can select, at compilation time, if the direction + change is done by element's property or by pipeline events. + Part-of: + +2021-03-11 18:53:09 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvavpp.c: + va: postproc: update passthrough and reconfigure pads + Added helper function _update_passthrough() which will define and set + the pass-through mode of the filter, and it'll either reconfigure both + pads or it will just mark the src pad for renegotiation or nothing at + all. + There are cases where both pads have to be reconfigured (direction + changed, for example), other when just src pad has to (filters + updated) or none (changing to ready state). + The requirement of renegotiation depends on the need to enable/disable + its VA buffer pools. + This patch sets pass-through mode by default, so the buffer pools + aren't allocated if no filtering/direction operations are defined, + which is the correct behavior. + Part-of: + +2021-02-25 14:09:50 +0100 Stéphane Cerveau + + * ext/zxing/gstzxing.cpp: + * ext/zxing/meson.build: + * tests/check/elements/zxing.c: + zxing: update to support version 1.1.1 + Support new API in 1.1.1 + Update the supported input video format. + Update tests to use parse_launch + Part-of: + +2021-03-10 13:10:28 +0100 Stéphane Cerveau + + * gst/videoparsers/gstmpegvideoparse.c: + mpegvideoparse: do not clip the frame + If the current buffer is delta unit such as P or B + frame, the buffer should not be clipped and need to + let the decoder handle the segment boundary situation. + Part-of: + +2021-03-11 02:36:28 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11device.c: + d3d11device: Fix wrong printf formatting + Add missing '%' there + Part-of: + +2021-02-20 11:36:42 +0000 Philippe Normand + + * gst-libs/gst/transcoder/gsttranscoder-private.h: + * gst-libs/gst/transcoder/gsttranscoder-signal-adapter.c: + * gst-libs/gst/transcoder/gsttranscoder.c: + * gst-libs/gst/transcoder/gsttranscoder.h: + transcoder: Add state-changed signal + Similar to GstPlayer, a new signal for state tracking is now emitted at runtime, + as a commodity for applications which then don't need to monitor the pipeline + GstBus for state changes anymore. + Part-of: + +2020-12-07 10:47:30 +0000 Philippe Normand + + * gst-libs/gst/play/gstplay-signal-adapter.c: + * gst-libs/gst/player/gstplayer-media-info-private.h: + * gst-libs/gst/player/gstplayer-media-info.c: + * gst-libs/gst/player/gstplayer-wrapped-video-renderer-private.h: + * gst-libs/gst/player/gstplayer-wrapped-video-renderer.c: + * gst-libs/gst/player/gstplayer.c: + * gst-libs/gst/player/meson.build: + player: Rewrite as GstPlay wrapper + For the time being the GstPlayer library remains as a wrapper for GstPlay, in + order to keep existing applications working and give them time to port to + GstPlay. GstPlayer will remain in -bad for a couple cycles and the plan for + GstPlay is to move it to -base before 1.20. + Part-of: + +2020-12-07 09:56:26 +0000 Philippe Normand + + * gst-libs/gst/play/gstplay.c: + play: Flush API bus before exiting main loop + Otherwise the bus might attempt to dispatch queued messages after the thread + ended, causing runtime warnings. + Part-of: + +2020-11-29 18:55:48 +0000 Philippe Normand + + * tests/check/libs/play.c: + * tests/check/meson.build: + play: tests: Switch user-agent test to a real HTTP server + Part-of: + +2020-11-14 10:56:51 +0000 Philippe Normand + + * meson_options.txt: + * tests/check/libs/play.c: + * tests/check/meson.build: + play: tests: Refactor to use new Message bus API + Instead of relying on an extra GMainLoop, the messages are poped from the player + bus and handled synchronously. This should avoid flaky behaviors. + Fixes #608 + Part-of: + +2020-11-14 10:47:53 +0000 Philippe Normand + + * gst-libs/gst/play/gstplay.c: + play: Plug media_info leak + Part-of: + +2020-04-28 21:09:40 +0200 Stephan Hesse + + * gst-libs/gst/play/gstplay.c: + play: Rename internal buffering field to buffering_percent + Part-of: + +2019-11-02 16:14:13 +0100 Stephan Hesse + + * docs/libs/play/index.md: + * docs/libs/play/sitemap.txt: + * docs/meson.build: + * gst-libs/gst/meson.build: + * gst-libs/gst/play/gstplay-media-info-private.h: + * gst-libs/gst/play/gstplay-media-info.c: + * gst-libs/gst/play/gstplay-media-info.h: + * gst-libs/gst/play/gstplay-message-private.h: + * gst-libs/gst/play/gstplay-signal-adapter.c: + * gst-libs/gst/play/gstplay-signal-adapter.h: + * gst-libs/gst/play/gstplay-types.h: + * gst-libs/gst/play/gstplay-video-overlay-video-renderer.c: + * gst-libs/gst/play/gstplay-video-overlay-video-renderer.h: + * gst-libs/gst/play/gstplay-video-renderer-private.h: + * gst-libs/gst/play/gstplay-video-renderer.c: + * gst-libs/gst/play/gstplay-video-renderer.h: + * gst-libs/gst/play/gstplay-visualization.c: + * gst-libs/gst/play/gstplay-visualization.h: + * gst-libs/gst/play/gstplay.c: + * gst-libs/gst/play/gstplay.h: + * gst-libs/gst/play/meson.build: + * gst-libs/gst/play/play-prelude.h: + * gst-libs/gst/play/play.h: + play: Introducing the new playback library + This aims to be a replacement for the GstPlayer library. In GstPlay, notifications are + sent as application messages through a dedicated GstBus. The GMainContext-based + signal dispatcher was replaced by a GObject signal adapter, now relying on the + bus to emit its signals. The signal dispatcher is now optional and fully + decoupled from the GstPlay object. + Co-authored with: Philippe Normand + Fixes #394 + Part-of: + +2021-03-09 13:00:10 +0200 Sebastian Dröge + + * gst/timecode/gstavwait.c: + avwait: Don't post messages with the mutex locked + Part-of: + +2021-03-01 20:53:53 +1100 Matthew Waters + + * ext/webrtc/gstwebrtcbin.c: + * tests/check/elements/webrtcbin.c: + webrtc: don't generate duplicate rtx payloads when bundle-policy is set + It was possible to generate a SDP that had an RTX payload type + that matched one of the media payload types when providing caps via + codec_preferences without any sink pads. + Fixes + m=video 9 UDP/TLS/RTP/SAVPF 96 + ... + a=rtpmap:96 VP8/90000 + a=rtcp-fb:96 nack pli + a=fmtp:96 apt=96 + Part-of: + +2021-03-08 14:30:52 +0200 Vivia Nikolaidou + + * tests/check/elements/interlace.c: + * tests/check/meson.build: + tests: Add negotiation tests for the interlace elements + Many complicated cases exist. Would be good to have some checks. + Part-of: + +2021-03-08 20:59:14 +0200 Vivia Nikolaidou + + * gst/interlace/gstinterlace.c: + interlace: Discard stored_frame on EOS and PAUSED_TO_READY + Would otherwise leak it. + Part-of: + +2021-03-08 16:16:25 +0200 Vivia Nikolaidou + + * docs/plugins/gst_plugins_cache.json: + * gst/interlace/gstinterlace.c: + interlace: Specify interlace-modes in the sink pad template + Especially specify the field-order in the interleaved mode. Otherwise it + might cause the negotiation to fail, because + GST_PAD_SET_ACCEPT_INTERSECT is not set on the sinkpad, and the + field-order is missing in the sink template but can be present in the + outside caps. + Part-of: + +2021-03-07 16:47:07 +0900 Seungha Yang + + * sys/nvcodec/gstnvh264dec.c: + nvh264sldec: Reopen decoder object if larger DPB size is required + Equivalent to the d3d11h264dec fix + https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1839 + Part-of: + +2021-03-03 01:23:20 +0900 Seungha Yang + + * sys/d3d11/gstd3d11colorconverter.c: + d3d11: Fix an HLSL compiler warning + warning X3578: Output value 'main' is not completely initialized + Part-of: + +2021-01-27 10:55:13 +0800 Bing Song + + * tools/gst-transcoder.c: + transcoder: handle SIGINT and SIGHUP + Handle SIGINT and SIGHUP in transcoder. Or the output file maybe corrupt. + Fixes #1507 + Part-of: + +2021-03-04 17:42:28 +0900 Seungha Yang + + * sys/d3d11/gstd3d11h264dec.c: + d3d11h264dec: Keep track of actually configured DPB size + ... instead of the largest we ever seen. + Note that d3d11h264dec element holds previously configured DPB size + for later decoder object re-open decision. + This is to fix below case: + 1) Initial SPS, required DPB size is 6 + - decoder object is opened with DPB size 6 + - max_dpb_size is now 6 + 2) SPS update with resolution change, required DPB size is 1 + - decoder object is re-opened with DPB size 1 + - max_dpb_size should be updated to 1, but it didn't happen (BUG) + 3) SPS update without resolution change, only required DPB size is updated to 6 + - decoder object should be re-opened but didn't happen + because we didn't update max_dpb_size at 2). + Part-of: + +2021-03-03 16:19:39 +0000 Tim-Philipp Müller + + * docs/plugins/gst_plugins_cache.json: + * gst/interlace/gstinterlace.c: + interlace: add more formats, esp 10-bit, 12-bit and 16-bit ones + Part-of: + +2021-02-16 11:23:17 +0100 Benjamin Gaignard + + * sys/v4l2codecs/gstv4l2codech264dec.c: + v4l2codecs: h264: retrieve interlaced information + Lets the decoder knows if the frames are interlaced or not. + Provide this information to the driver while filling reference + pictures fields in slice params structure + Part-of: + +2020-11-27 16:00:03 -0500 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codech264dec.c: + v4l2codecs: h264: Reduce controls for subsequent slices + Only the SLICE_PARAMS and PRED_WEIGHTS are needed for the second and + following slices. + Part-of: + +2020-08-14 10:13:09 -0300 Ezequiel Garcia + + * sys/v4l2codecs/gstv4l2codech264dec.c: + v4l2codecs: h264: Implement optional scaling matrix + The new H.264 uAPI requires that all drivers support + scaling matrix only as an option, when a non-flat + scaling matrix is provided in the bitstream headers. + Take advantage of this and avoid passing the scaling + matrix if not needed. + Part-of: + +2020-09-30 14:34:15 -0300 Ezequiel Garcia + + * sys/v4l2codecs/gstv4l2codech264dec.c: + v4l2codecs: h264: Only set SPS control if needed + Given V4L2 controls are cached in V4L2, there is no need + to set them if they don't change. Set the SPS control + only if a new sequence was received by the parser. + Part-of: + +2020-09-30 14:22:14 -0300 Ezequiel Garcia + + * sys/v4l2codecs/gstv4l2codech264dec.c: + v4l2codecs: h264: Only slice-based need SLICE_PARAMS and PRED_WEIGHTS + Frame-based decoding mode doesn't require SLICE_PARAMS and + PRED_WEIGHTS controls. + Moreover, if the driver doesn't support these two controls, trying + to set them will fail. Fix this by only setting these on + slice-based decoding mode. + Part-of: + +2020-09-30 14:14:41 -0300 Ezequiel Garcia + + * sys/v4l2codecs/gstv4l2codech264dec.c: + * sys/v4l2codecs/gstv4l2decoder.c: + * sys/v4l2codecs/gstv4l2decoder.h: + v4l2codecs: h264: Add API checks + Check that the V4L2 H264 controls' sizes match + our expectation. If not, then probably there's an API + mismatch which will cause errors or decoding corruption. + Also, print a warning if the kernel version is too old. + Part-of: + +2020-09-30 10:40:51 -0300 Ezequiel Garcia + + * sys/v4l2codecs/gstv4l2codech264dec.c: + * sys/v4l2codecs/linux/h264-ctrls.h: + * sys/v4l2codecs/linux/media.h: + * sys/v4l2codecs/linux/types-compat.h: + * sys/v4l2codecs/linux/v4l2-common.h: + * sys/v4l2codecs/linux/v4l2-controls.h: + * sys/v4l2codecs/linux/videodev2.h: + * sys/v4l2codecs/plugin.c: + v4l2codecs: h264: Update to the new uAPI + Starting from Linux v5.11, the V4L2 stateless H.264 uAPI + is updated and stable. + Part-of: + +2020-09-30 10:33:59 -0300 Ezequiel Garcia + + * sys/v4l2codecs/gstv4l2codech264dec.c: + v4l2codecs: h264: Set the scaling matrix present flag unconditionally + We are currently always setting and passing a scaling matrix, + so need to set this flag accordingly. Passing a scaling matrix + optionally will be implemented in follow-up commit. + Part-of: + +2021-03-02 12:46:24 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvavpp.c: + va: postproc: mention the possibility of color balance + Part-of: + +2021-03-02 12:46:06 +0100 Víctor Manuel Jáquez Leal + + * docs/plugins/gst_plugins_cache.json: + docs: plugins update VA elements + Part-of: + +2021-03-02 12:44:12 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvavp8dec.c: + * sys/va/gstvavp9dec.c: + va: vp8dec, vp9dec: only set NV12 color format for documentation + Mention in documentation only the most used output format in VA-API. + Part-of: + +2021-03-02 22:01:26 +0900 Seungha Yang + + * sys/d3d11/gstd3d11colorconvert.c: + d3d11convert: Forward colorimetry and chroma-site from upstream + Adopt the improvement of https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1033 + into d3d11. + Part-of: + +2021-03-02 17:47:03 +0900 Seungha Yang + + * sys/d3d11/gstd3d11colorconvert.c: + d3d11convert: Add support for border drawing + ... and fix wrong resizing when downstream requested PAR value + Part-of: + +2021-03-02 21:35:00 +0900 Seungha Yang + + * sys/d3d11/gstd3d11colorconvert.c: + d3d11convert: Prefer video processor over shader + ... if video processor was used previously. Otherwise, switching + between video processor and shader would result in inconsistent + output image quality. + Part-of: + +2021-03-02 18:07:36 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videoprocessor.c: + d3d11videoprocessor: Disable auto processing mode explicitly + Don't allow auto processing (e.g., denoising), as it might result + in unexpected output. + Part-of: + +2021-03-02 21:10:24 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11memory.c: + d3d11memory: Fix for wrong texture_array_size returns + Fix mismatched return values + Part-of: + +2021-03-02 21:13:18 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.c: + d3d11decoder: Add trace log for DPB pool size debugging + Part-of: + +2021-03-02 20:45:22 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.c: + d3d11decoder: Always use render-target bind flag for downstream pool + To convert decoded texture into other format, downstream would use + video processor instead of shader. In order for downstream to + be able to use video processor even if we copied decoded texture + into downstream pool, we should set this bind flag. Otherwise, + downstream would keep switching video processor and shader + to convert format which would result in inconsistent image quality. + Part-of: + +2021-03-02 20:37:04 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11_fwd.h: + * sys/d3d11/gstd3d11colorconvert.c: + * sys/d3d11/gstd3d11videoprocessor.c: + * sys/d3d11/gstd3d11videoprocessor.h: + * sys/d3d11/gstd3d11window.cpp: + * sys/d3d11/gstd3d11window_dummy.cpp: + * sys/d3d11/gstd3d11window_win32.cpp: + d3d11: Fix wrong preprocessing blocks + Missed in https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/464 + Part-of: + +2021-03-01 13:44:09 +0800 He Junyan + + * sys/va/gstvavpp.c: + va: vpp: fix a wrong caps logic in vpp_transform_caps(). + The current gst_va_vpp_transform_caps return such as: + video/x-raw(memory:VAMemory), width=(int)[ 16, 16384 ], height=(int)[ 16, 16384 ], + interlace-mode=(string)progressive, format=(string){ NV12, I420, YV12, YUY2, RGBA, + BGRA, P010_10LE, ARGB, ABGR, VUYA }; video/x-raw(memory:DMABuf), width=(int)[ 16, + 16384 ], height=(int)[ 16, 16384 ], interlace-mode=(string)progressive, format=(string) + { NV12, I420, YV12, YUY2, RGBA, BGRA, P010_10LE, ARGB, ABGR, VUYA }; video/x-raw, + width=(int)[ 16, 16384 ], height=(int)[ 16, 16384 ], interlace-mode=(string)progressive, + format=(string){ VUYA, GRAY8, NV12, NV21, YUY2, UYVY, YV12, I420, P010_10LE }; + video/x-raw(memory:VAMemory), width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], + interlace-mode=(string)progressive; video/x-raw(memory:DMABuf), width=(int)[ 1, 2147483647 ], + height=(int)[ 1, 2147483647 ], interlace-mode=(string)progressive; video/x-raw, width=(int) + [ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], interlace-mode=(string)progressive + Which is not correct. It mixes the template caps and the input query caps together. + The correct way should be: clip the template caps with the input caps(remove format + and rangify size). The correct answer should be: + video/x-raw(memory:VAMemory), width=(int)[ 16, 16384 ], height=(int)[ 16, 16384 ], interlace + -mode=(string)progressive, format=(string){ NV12, I420, YV12, YUY2, RGBA, BGRA, P010_10LE, + ARGB, ABGR, VUYA }; video/x-raw(memory:DMABuf), width=(int)[ 16, 16384 ], height=(int)[ 16, + 16384 ], interlace-mode=(string)progressive, format=(string){ NV12, I420, YV12, YUY2, RGBA, + BGRA, P010_10LE, ARGB, ABGR, VUYA }; video/x-raw, width=(int)[ 16, 16384 ], height=(int)[ 16, + 16384 ], interlace-mode=(string)progressive, format=(string){ VUYA, GRAY8, NV12, NV21, YUY2, + UYVY, YV12, I420, P010_10LE } + Part-of: + +2021-03-01 16:23:37 +0100 Jan Alexander Steffens (heftig) + + * gst/mpegtsdemux/mpegtsparse.c: + mpegtsparse: Fix switched DTS/PTS when set-timestamps=false + Fixes 30ee21eae36e7279f63b77167ba1dcf5f70b8e83. + Part-of: + +2019-08-15 08:25:26 -0700 Ilya Kreymer + + * docs/plugins/gst_plugins_cache.json: + * ext/webrtc/gstwebrtcice.c: + * ext/webrtc/gstwebrtcice.h: + * ext/webrtc/icestream.c: + * tests/check/elements/webrtcbin.c: + webrtc ice: Add 'min/max-rtp-port' props for setting RTP port range + default min port == 0, max port == 65535 -- if min port == 0, uses existing random port selection (range ignored) + add 'gathering_started' flag to avoid changing ports after gathering has started + validity checks: min port <= max port enforced, error thrown otherwise + include tests to ensure port range is being utilized (by @hhardy) + Part-of: + +2021-02-25 11:58:57 -0500 Olivier Crête + + * ext/webrtc/gstwebrtcice.c: + webrtc ice: Only ever request one component, it's always rtcpmux + Part-of: + +2021-02-26 15:40:01 -0300 Thibault Saunier + + * gst-libs/gst/transcoder/gsttranscoder.c: + transcoder: Add some missing API guards + Part-of: + +2021-02-26 15:36:48 -0300 Thibault Saunier + + * gst-libs/gst/transcoder/gsttranscoder-signal-adapter.c: + transcoder: Fix potential use of uninitialized variables + gst_structure_get won't touch variables if the field is not present + leading to potential use of initialized vars + Part-of: + +2021-02-26 15:31:29 -0300 Thibault Saunier + + * gst-libs/gst/transcoder/gsttranscoder-private.h: + * gst-libs/gst/transcoder/gsttranscoder-signal-adapter.c: + * gst-libs/gst/transcoder/gsttranscoder-signal-adapter.h: + * gst-libs/gst/transcoder/gsttranscoder.c: + * gst-libs/gst/transcoder/gsttranscoder.h: + * tools/gst-transcoder.c: + transcoder: Rework the API to create/get SignalAdapter + We can only have 1 single GstTranscoderSignalAdapter object for a + given GstTranscoder object, this enforces that by avoiding to expose + a constructor and instead add a method to GstTranscoder to get the + signal adapter (internally creating it when needed). We can still + cleanly ensure that the signal adapter is running for the requested + GMainContext and return NULL if it is not the case. + Part-of: + +2021-02-22 16:59:25 +1100 Matthew Waters + + * ext/webrtc/gstwebrtcice.c: + webrtcbin: use regular ice nomination by default + 1. We don't currently deal with an a=ice-options in the SDP which means + we currently violate https://tools.ietf.org/html/rfc5245#section-8.1.1 + which states: "If its peer is using ICE options (present in + an ice-options attribute from the peer) that the agent does not + understand, the agent MUST use a regular nomination algorithm." + 2. The recommendation is default to regular nomination in both RFC5245 + and RFC8445. libnice change for this is + https://gitlab.freedesktop.org/libnice/libnice/-/merge_requests/125 + which requires an API break in libnice. + Part-of: + +2021-02-24 18:43:07 +0000 Philippe Normand + + * docs/meson.build: + * gst-libs/gst/transcoder/gsttranscoder.c: + transcoder: Remove un-needed gst_init call + We can safely assume GStreamer is already initialized from here. + Part-of: + +2020-11-25 22:25:28 -0300 Thibault Saunier + + * gst-libs/gst/transcoder/gsttranscoder-message-private.h: + * gst-libs/gst/transcoder/gsttranscoder-signal-adapter.c: + * gst-libs/gst/transcoder/gsttranscoder-signal-adapter.h: + * gst-libs/gst/transcoder/gsttranscoder.c: + * gst-libs/gst/transcoder/gsttranscoder.h: + * gst-libs/gst/transcoder/meson.build: + * tools/gst-transcoder.c: + transcoder: Port to a GstBus API instead + Following the move made by GstPlayer in: + https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/35 + Part-of: + +2020-11-25 22:21:35 -0300 Thibault Saunier + + * gst-libs/gst/transcoder/gsttranscoder.c: + * gst-libs/gst/transcoder/gsttranscoder.h: + * gst-libs/gst/transcoder/meson.build: + * gst-libs/gst/transcoder/transcoder-prelude.h: + transcoder: Automatically generate enums GTypes + Part-of: + +2020-11-25 22:01:30 -0300 Thibault Saunier + + * gst-libs/gst/transcoder/gsttranscoder.h: + transcoder: Port to G_DECLARE + Part-of: + +2021-02-26 16:36:58 +0200 Sebastian Dröge + + * sys/decklink/gstdecklinkvideosink.cpp: + decklinkvideosink: Use correct numerator for 29.97fps + It's not 0.2997fps. + Part-of: + +2021-02-26 11:39:10 +0100 Edward Hervey + + * sys/decklink/gstdecklink.cpp: + decklinksrc: Use a more accurate capture time + Use the hardware reference clock time when the frame was finished being captured + instead of a time much further down the road. + This improves the stability/accuracy of buffer times. + Part-of: + +2021-02-24 19:14:42 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvaallocator.c: + va: allocator: No need of fourcc to create surface. + In commits 430aa327 and a119a940 there are a regression since it is + possible to create surfaces without fourcc, only chroma (rtformat) is + required. + This regression is shown on radeonsi driver with certain color + formats. + Part-of: + +2021-02-24 13:06:51 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvafilter.c: + * sys/va/gstvafilter.h: + * sys/va/gstvavpp.c: + * tests/examples/va/meson.build: + * tests/examples/va/multiple-vpp.c: + va: vpp: implement GstColorBalance interface + And modify multiple-vpp example to use it with -r parameter. + Part-of: + +2021-02-23 17:22:40 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvafilter.c: + va: filter: add controllable and mutable playing to GParamFlags + Add controllable and mutable playgin to common GParamFlags. + Also use this common flags to video-direction + Part-of: + +2021-02-24 16:57:06 +0100 Víctor Manuel Jáquez Leal + + * docs/plugins/gst_plugins_cache.json: + * ext/vulkan/vkcolorconvert.c: + * ext/vulkan/vkviewconvert.c: + vulkan: Fix elements long name. + Fix vkcoloconvert and vkviewconvert long names. + Part-of: + +2021-01-12 15:33:49 +0800 Haihao Xiang + + * sys/msdk/gstmsdkcontext.c: + * sys/msdk/meson.build: + msdk: allow user specify a drm device via an env variable + User may specify the required device via GST_MSDK_DRM_DEVICE + Example: + GST_MSDK_DRM_DEVICE=/dev/dri/card0 gst-launch-1.0 videotestsrc ! msdkh264enc + ! fakesink + Part-of: + +2021-01-19 15:36:29 +0800 He Junyan + + * sys/va/gstvaav1dec.c: + * sys/va/gstvaav1dec.h: + * sys/va/gstvabasedec.h: + * sys/va/gstvaprofile.c: + * sys/va/meson.build: + * sys/va/plugin.c: + VA: Add the vaav1dec element as the av1 decoder. + Part-of: + +2021-01-19 15:17:58 +0800 He Junyan + + * sys/va/gstvaallocator.c: + * sys/va/gstvaallocator.h: + * sys/va/gstvadecoder.c: + * sys/va/gstvadecoder.h: + VA: Add the aux surface for gst buffer used by decoder. + The AV1 codec needs to support the film grain feature. When the film + grain feature is enabled, we need two surfaces as the output of the + decoded picture, one without film grain effect and the other one with + it. The first one acts as the reference and is needed for later pictures' + reconstruction, and the second one is the real display output. + So we need to attach another aux surface to the gst buffer/mem and make + that aux surface as the target of vaBeginPicture. + Part-of: + +2021-01-19 15:07:38 +0800 He Junyan + + * sys/va/gstvadecoder.c: + * sys/va/gstvadecoder.h: + VA: Add a helper function of decoder_add_slice_buffer_with_n_params. + Some codecs such as AV1 needs several parameters associated with one + slice. It may have multi tiles within one slice and each tile needs + its description parameter. + Part-of: + +2021-01-19 14:59:45 +0800 He Junyan + + * gst-libs/gst/codecs/gstav1decoder.c: + * gst-libs/gst/codecs/gstav1decoder.h: + * gst-libs/gst/codecs/gstav1picture.c: + * gst-libs/gst/codecs/gstav1picture.h: + * gst-libs/gst/codecs/meson.build: + codecs: AV1decoder: Add the AV1 decoder base class. + Part-of: + +2021-02-23 13:47:29 +0800 He Junyan + + * sys/va/gstvaallocator.c: + va: allocator: replace assert with error log in va alloc. + We should print error log rather than assert when the forcc or + the rt_format of va allocator is unrecognized. + Part-of: + +2021-02-21 17:38:38 +0900 Seungha Yang + + * docs/plugins/gst_plugins_cache.json: + * sys/d3d11/gstd3d11compositor.c: + * sys/d3d11/gstd3d11compositorbin.c: + * sys/d3d11/gstd3d11deinterlace.cpp: + * sys/d3d11/gstd3d11desktopdupsrc.c: + * sys/d3d11/gstd3d11download.c: + * sys/d3d11/gstd3d11h264dec.c: + * sys/d3d11/gstd3d11h265dec.c: + * sys/d3d11/gstd3d11mpeg2dec.c: + * sys/d3d11/gstd3d11upload.c: + * sys/d3d11/gstd3d11videosink.c: + * sys/d3d11/gstd3d11videosinkbin.c: + * sys/d3d11/gstd3d11vp8dec.c: + * sys/d3d11/gstd3d11vp9dec.c: + * sys/d3d11/plugin.c: + d3d11: Documentation update + * Update class metadata + * for wrapper bin elements to be distinguishable from internal element. + * D3D11 -> Direct3D11 for consistency + * Add missing Since mark everywhere + * Update plugin cache + Part-of: + +2021-02-21 20:38:37 +0900 Seungha Yang + + * sys/d3d11/gstd3d11colorconvert.c: + * sys/d3d11/gstd3d11colorconvert.h: + d3d11: Reorganize class hierarchy of convert elements + AS-IS: + D3D11Convert class is baseclass of D3D11ColorConvert and D3D11Scale + * GstD3D11Convert + |_ GstD3D11ColorConvert + |_ GstD3D11Scale + TO-BE: + Introducing a new base class for color conversion and/or rescale elements + * GstD3D11BaseConvert + |_ GstD3D11Convert + |_ GstD3D11ColorConvert + |_ GstD3D11Scale + Part-of: + +2021-02-21 17:35:40 +0900 Seungha Yang + + * sys/d3d11/gstd3d11deinterlace.cpp: + d3d11deinterlace: Add missing system memory caps features on templates + This element can support system memory + Part-of: + +2021-02-18 09:53:09 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvafilter.c: + * sys/va/gstvafilter.h: + * sys/va/gstvavpp.c: + va: filter, vpp: process colorimetry + A new filter method were added: gst_va_filter_set_formats(). In this + way the input & output GstVideoInfo are processed only once per stream + negotiation, and not per frame. + Part-of: + +2021-02-18 05:58:25 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvafilter.c: + va: filter: check if filter is open on set_orientation() + Because the method requires pipeline_caps is filled. + Part-of: + +2021-02-17 18:56:29 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvafilter.c: + va: filter: human readable background color + Part-of: + +2021-02-17 18:55:14 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvafilter.c: + va: filter: fail immediately if vaBeginPicture() fails + There's no need to try vaRenderPicture() if vaBeginPicture() failed. + Part-of: + +2021-02-17 18:30:10 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvafilter.c: + va: filter: destroy pipeline buffer after destroying filters + In 6ae24948 the pipeline buffer destroy were removing assuming it + wasn't required. Nonetheless, debugging the code it looks like a + buffer leak in iHD driver since the ID of the buffer kept increasing. + The difference now is that first the filter buffers are destroy first + and later the pipeline buffer. + Part-of: + +2021-02-19 14:27:39 +0800 He Junyan + + * sys/va/gstvavpp.c: + va: vpp: Add raw buffer copy when needed. + Just like the decoder, the vapostproc also needs to copy the output + buffer to raw buffer if downstream elements only supports raw caps + and does not support the video meta. + The pipeline like: + gst-launch-1.0 filesrc location=xxxx ! h264parse ! vah264dec ! \ + vapostproc ! capsfilter caps=video/x-raw,width=55,height=128 ! \ + filesink location=xxx + needs this logic to dump the data correctly. + fixes: #1523 + Part-of: + +2021-02-19 00:03:00 +0000 Tim-Philipp Müller + + * gst/sdp/gstsdpsrc.c: + sdpsrc: fix double free if sdp is provided as string via the property + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1532 + Part-of: + +2021-02-18 21:38:37 +0900 Seungha Yang + + * sys/wasapi2/gstwasapi2device.c: + wasapi2device: Make wasapi2 device distinguishable from wasapi device + Both wasapi2 and wasapi plugins use WASAPI API. So "device.api=wasapi" + would make sense for the wasapi2 plugin as well. But people would be + confused by the identical "device.api=wasapi" property if intended + plugin is wasapi, not wasapi2. This change will make them distinguishable + by using "device.api" device property. + Part-of: + +2021-01-13 00:27:40 +0900 Seungha Yang + + * sys/wasapi2/meson.build: + wasapi2: Always build if Windows 10 SDK is available + Add support for building wasapi2 plugin if Windows 10 SDK is + available on system + Part-of: + +2021-02-08 12:24:58 +0100 Stéphane Cerveau + + * ext/dtls/gstdtlssrtpbin.c: + * ext/dtls/gstdtlssrtpdec.c: + * ext/dtls/gstdtlssrtpenc.c: + dtls: use GST_WARNING instead of g_warning + No need a g_warning which is failing always + with gst-inspect -a + Part-of: + +2021-01-28 12:28:03 +0100 Michael Olbrich + + * gst/videoparsers/gsth264parse.c: + * tests/check/elements/h264parse.c: + h264parse: don't invalidate the last PPS when parsing a new SPS + When a SPS is received then any previous PPS remains valid. So don't clear + the PPS flag from the parser state. + This is important because there are encoders that don't generated a PPS after + every SPS. + Closes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/571 + Part-of: + +2021-02-17 15:15:09 +0200 Vivia Nikolaidou + + * gst/videoparsers/gsth265parse.c: + h265parse: Detect height change on field-based interlaced files + The first time update_src_caps is called, there's no frame parsed yet, + therefore we don't know whether the file has alternate-field interlacing + mode. If we run it again after we have a frame, it might be that now we + have the SEI pic_struct parsed, and therefore we know that it's + field-based interlaced, and therefore the height must be multiplied by + two. Earlier on this was not detected as a change. + Part-of: + +2020-09-19 21:39:06 +0200 Víctor Manuel Jáquez Leal + + * tests/examples/va/meson.build: + * tests/examples/va/multiple-vpp.c: + va: add multiple-vpp example + Part-of: + +2021-02-15 15:54:11 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvaallocator.c: + va: allocator: set workaround only for i965 driver + In commit 117453b9 a i965 driver workaround was added for all drivers, because + at that time we didn't have a driver implementation API. + Now there's one. This patch set the workaround only for the i965 driver. + Part-of: + +2021-02-17 13:46:03 +0200 Vivia Nikolaidou + + * gst/videoparsers/gsth265parse.c: + h265parse: Fix FPS/duration for interlaced files + There can be h265 files with frame-based, not field-based, interlacing. + Part-of: + +2021-02-12 18:43:00 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvaallocator.c: + va: allocator: MT-safe queue & dequeue dmabuf-based memories + One problem that va dmabuf allocator had is when preparing a buffer from + dmabuf memories in the allocator pool, specially when a buffer is composed by + several memories. This memories have to be by certain number and in certain + order. + This patch stores the number of memories and their address in order when a + dmabuf-based buffer is created and when preparing a buffer, it is reconstructed + with this info. + Finally, instead of pushing the memories as soon as they are unrefed, they are + hold until GstVaBufferSurface's ref_mems_count reaches zero (all the memories + related with that buffer/surface are unrefed). Until that happen, all the + memories are pushed back into the queue, locked, assuring that all the memories + related with a single buffer (with the same surface) remain contiguous, so the + buffer reconstruction is assured. + Part-of: + +2021-02-15 15:34:56 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvapool.c: + va: pool, allocator: free memories at bufferpool's stop() + This patch frees the memories in the allocator's pool after the bufferpool frees + all its buffers, sync'ing them at stop() vmethod. + By doing it, the current logic in flush_start() is not valid, so the vmethod is removed. + Part-of: + +2021-02-12 15:40:33 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvaallocator.c: + * sys/va/gstvaallocator.h: + va: allocator: remove unused public functions + Deleted the public functions: + gst_va_dmabuf_allocator_wait_for_memory() + gst_va_allocator_wait_for_memory() + And all the support for wait, cond in allocator's pool. + Part-of: + +2021-02-12 13:26:24 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvapool.c: + va: pool: simplify the logic + Instead of removing memories from buffers at reset_buffer()/release_buffer() the + bufferpool operation is kept as originally designed, still the allocator pool is + used too. Thus, this patch restores the buffer size configuration while removing + release_buffer(), reset_buffer() and acquire_buffer() vmethods overloads. + Then, when the bufferpool base class decides to discard a buffer, the VA + surface-based memory is returned to the allocator pool when its last reference + is freed, and later reused if a new buffer is allocated again. + Part-of: + +2021-02-07 16:12:56 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvaallocator.c: + * sys/va/gstvaallocator.h: + * sys/va/gstvapool.c: + va: pool: use allocator pool at alloc() + Check if the allocator pool has memories available before creating a + new one, but only iif pool is not starting. + Part-of: + +2021-02-08 12:25:07 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvaallocator.c: + va: allocator: log buffer at dmabuf setup and prepare + Part-of: + +2021-01-22 00:10:28 +0900 Seungha Yang + + * sys/d3d11/gstd3d11deinterlace.cpp: + * sys/d3d11/gstd3d11deinterlace.h: + * sys/d3d11/meson.build: + * sys/d3d11/plugin.c: + d3d11: Add support for deinterlacing by using ID3D11VideoProcessor interface + Add a new element d3d11deinterlace to support deinterlacing. + Similar to d3d11videosink and d3d11compositor, this element is + a wrapper bin of set of child elements including helpful + conversion elements (upload/download and color convert) + to make this element configurable between non-d3d11 elements. + Part-of: + +2021-02-14 06:23:55 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11format.c: + * gst-libs/gst/d3d11/gstd3d11format.h: + d3d11: Add a method for conversion from DXGI format to GstVideoFormat + Part-of: + +2021-01-22 03:26:29 +0100 Mathieu Duponchelle + + * gst/videoparsers/gsth264parse.c: + h264parse: fix timestamping of interlaced fields in output + Instead of relying on GstBaseParse default behaviour of computing + the duration of a parsed buffer based on the framerate passed + to gst_base_parse_set_framerate(), we instead compute the duration + ourselves, as we have more information available. + In particular, this means we now output buffers with a duration + that matches that of raw interlaced buffers when each field is + output in a separate buffer. + This fixes DTS interpolation performed by GstBaseParse, as the + previous behaviour of outputting each field with the duration of + a full frame was messing up the base class calculations. + When not enough information is available, h264parse simply falls + back to calculating the duration based on the framerate and hope + for the best as was the case previously. + Part-of: + +2021-02-14 21:01:32 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.c: + * sys/d3d11/gstd3d11decoder.h: + * sys/d3d11/gstd3d11h264dec.c: + * sys/d3d11/gstd3d11h265dec.c: + * sys/d3d11/gstd3d11mpeg2dec.c: + * sys/d3d11/gstd3d11vp8dec.c: + * sys/d3d11/gstd3d11vp9dec.c: + d3d11decoder: Take account of min buffers of downstream buffer pool + Since our decoder DPB texture pool cannot be grown once it's + configured, we should pre-allocate sufficient number of textures + for zero-copy playback (but not too many). + The "min buffers" allocation query parameter can be a hint for + the number of required textures in addition to DPB size. + Part-of: + +2020-10-29 10:54:45 -0300 Thibault Saunier + + * docs/plugins/gst_plugins_cache.json: + * ext/openh264/gstopenh264enc.cpp: + openh264enc: Add support for main and high profiles + Those are supported (to a certain extent) so we should not limit + ourself to baseline + Part-of: + +2021-02-11 16:04:12 +0800 He Junyan + + * gst-libs/gst/codecs/gstmpeg2decoder.c: + codecs: mpeg2decoder: Move frame_unref to handle_frame. + In the current code, we call frame_unref only when the frame is + outputted. This is OK for normal playback, but when seek happens, + the frames stored in DPB is not outputted and causes some memory + leak. + The correct way is that we should call frame_unref every time we + finish the handle_frame(), which is also the behaviour of H264/H265 + decoder. + Part-of: + +2021-02-07 02:26:02 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.c: + * sys/d3d11/gstd3d11h265dec.c: + d3d11h265dec: Add support for interlaced stream + Note that we have no D3D11 deinterlace element yet. + If downstream is not support format:Interlaced caps feature including all + D3D11 the other elements, aspect-ratio will be adjusted as an + alternative approach. + Part-of: + +2021-02-07 00:21:06 +0900 Seungha Yang + + codecs: h265decoder: Add support for interlaced stream + * Invoke GstH265DecoderClass::new_sequence() method per interlaced + stream status update so that subclass can update caps. + * Parse picture timing SEI and set buffer flags on GstH265Picture + object. Subclass can refer to it like that of our h264decoder + implementation. + * Remove pointless GstH265PictureField enum + Part-of: + +2021-02-10 00:59:05 +0900 Seungha Yang + + * sys/va/gstvah265dec.c: + vah265dec: Don't need to pass picture structure to VA + This code came from gstvaapidecoder_h265 implementation + but picture structure is always GST_VAAPI_PICTURE_STRUCTURE_FRAME. + Moreover, in theory, VA doesn't need to know picture structure for + decoding HEVC stream. + Part-of: + +2021-02-06 22:02:59 +0900 Seungha Yang + + * sys/nvcodec/gstnvh265dec.c: + nvh265sldec: Remove pointless field picture parameter setup + HEVC has no decoding flow for interlaced, field picture referencing. + Part-of: + +2021-02-08 00:07:26 +0800 He Junyan + + * sys/va/gstvavpp.c: + va: vpp: Make the global lock only to DMA buffer's import. + The normal gst_va_buffer_get_surface does not need a global lock. + Too big lock may make the performance lower. + Part-of: + +2021-02-05 14:05:53 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvaallocator.c: + va: allocator: log dmabuf and surface at pool push or pop + In order to keep track of the dmabuf fds and surfaces numbers log messages are + added at memory_release() (queue push) and prepare_buffer() (queue pop). + Part-of: + +2021-02-02 06:43:27 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvah265dec.c: + va: h265dec: fix HVC1 stream format name + Part-of: + +2021-02-01 23:19:27 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvabasedec.c: + va: basedec: refactor context query + Context query is handled either by source and sink queries. This patch + factors-out its handling in a common utility function. + Part-of: + +2020-12-21 18:10:44 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvafilter.c: + va: filter: use a common GParamFlags definition + Instead of repeating the same code along gst_va_filter_install_properties() + Part-of: + +2021-01-22 16:54:05 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvah264dec.c: + va: h264dec: remove spurious if validation + The first if checks for caps, thus else doesn't need to recheck for the + opposite. + Part-of: + +2021-02-05 18:13:32 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvavpp.c: + va: vpp: fix frame copy + There were two problems with frame copy: + 1. The input video info are from the format color, not form the allocated VA + surface, it's needed to update the sink video info according with the + allocator's data. + 2. The parameters of `gst_video_frame_copy()` were backwards. + Part-of: + +2021-02-02 18:05:46 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvavpp.c: + va: vpp: request video and alignment metas for src pool + This is for the pool used when importing raw video frames to surfaces. + Part-of: + +2021-02-04 16:43:02 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvavpp.c: + va: vpp: transform_size() must return FALSE + transform_size() basetransform vmethod is used when there's no output buffer + pool and allocates a system memory buffer. With VA this cannot be allowed, since + it needs VASurfaces to process. + Thus transform_size() is not required, but to play safe let's return FALSE. + Part-of: + +2021-02-02 16:22:34 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvavpp.c: + va: vpp: copy input buffer flags and timestamps + Strictly speaking right now it's not required do this copy, but let's play safe + and assume in the future this metadata might be required while doing the + postprocessing. + Part-of: + +2021-02-01 23:55:11 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvavpp.c: + va: vpp: handle context query + Previously vapostproc didn't communicate its context through query mechanism, + which is required for context sharing. This patch completes this missing bits. + Part-of: + +2021-02-01 23:50:12 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvavpp.c: + va: vpp: don't copy color, size or orientation video metas + If they are processed by the element. + Part-of: + +2021-02-05 16:46:00 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvavpp.c: + va: vpp: don't break passthrough if no color balance required + The function `_add_filter_cb_buffer()` returned TRUE if no color balance filter + are required, but that's is wrong, since it will break the passthrough. This + patch return FALSE which is the correct value for the situation. + Part-of: + +2021-01-15 14:07:19 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvavpp.c: + va: vpp: use gst_clear_caps() + Part-of: + +2021-02-02 16:23:28 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvafilter.c: + va: filter: don't destroy pipeline buffer + This was only required by i915 driver before libva-2.0 because it didn't + conform. + Also changes the way _destroy_filters() is called, now inside a locked block, so + it must not lock in it. + Part-of: + +2021-02-01 16:57:49 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvafilter.c: + va: filter: lock member variables access + While gst_va_filter_open() and gst_va_filter_close() remain non-thread-safe, the + other API calls that modify member variables are locked. + Part-of: + +2021-02-03 23:39:00 +0100 Jakub Adam + + * ext/srt/gstsrtobject.c: + * ext/srt/gstsrtsink.c: + * ext/srt/gstsrtsrc.c: + srt: preserve ABI compatibility + Reintroduce socket descriptor parameter removed in 327ad84e to + "caller-added" and "caller-removed" signals, just set it always to zero. + Part-of: + +2021-02-04 03:42:05 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.c: + * sys/d3d11/gstd3d11decoder.h: + * sys/d3d11/gstd3d11h264dec.c: + * sys/d3d11/gstd3d11h265dec.c: + * sys/d3d11/gstd3d11mpeg2dec.c: + * sys/d3d11/gstd3d11vp8dec.c: + * sys/d3d11/gstd3d11vp9dec.c: + d3d11decoder: Fix deadlock when DPB texture pool is full + Unlike other stateless decoder implementations (e.g., VA), + our DPB pool cannot be grown since we are using + texture array (pre-allocated, fixed-size d3d11 texture pool). + So, if there's no more available texture to use, + there's no way other than copying it to downstream's + d3d11 buffer pool. Otherwise deadlock will happen. + Part-of: + +2021-02-02 19:10:13 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11memory.c: + * gst-libs/gst/d3d11/gstd3d11memory.h: + d3d11memory: Add a method for querying texture array size + ... and the number of textures in use. + Direct3D11 texture array is usually used for decoder DPB pool, + and d3d11 decoder elements might want to know + whether there's available texture resource or not. + Part-of: + +2020-12-14 20:34:15 +0100 Jakub Adam + + * ext/srt/gstsrtobject.c: + * ext/srt/gstsrtsink.c: + * ext/srt/gstsrtsrc.c: + srt: don't pass SRT socket ID to "caller-added,removed" signals + The caller's IP and port is enough for unique identification. Don't leak + the socket handle since using it in unadvised libsrt calls from the + application could break the SRT element. + Part-of: + +2020-11-04 17:14:03 +0100 Jakub Adam + + * ext/srt/gstsrtobject.c: + srtobject: add caller address to stats structure + In listener mode, gst_stats() returns an independent set of + statistics for every connected caller. Having the caller's IP and port + present in each structure allows to correlate the statistics with a + particular caller that has been announced by "caller-added" signal. + Part-of: + +2021-02-03 14:27:14 +0200 Vivia Nikolaidou + + * gst/videoparsers/gsth265parse.c: + * gst/videoparsers/gsth265parse.h: + h265parse: Support for alternate-field interlacing + Also don't set interlacing information on the caps, see #1313 + Part-of: + +2021-02-02 18:25:31 +0100 Jan Alexander Steffens (heftig) + + * gst/videoparsers/gsth264parse.c: + * gst/videoparsers/gsth265parse.c: + h264/h265parse: Add VideoTimeCodeMeta to the outgoing buffer + The parsers attempted to add the meta to the incoming buffer, which + might not be the outgoing buffer or may not have been writable yet. + To fix this, call `gst_buffer_make_writable` earlier and make sure to + use the `parse_buffer` to add the meta. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1521 + Part-of: + +2021-01-27 15:32:26 +0800 Haihao Xiang + + * sys/va/gstvadevice.c: + va: sort the device queue + If so, the elements will be registered per drm node in order of + renderD128, renderD129, ... etc, an element with constant name will be + registered on renderD128 on a hardware with multiple drm nodes. + Part-of: + +2021-02-02 04:33:09 +0900 Seungha Yang + + * sys/v4l2codecs/gstv4l2decoder.c: + v4l2decoder: Small documentation fix + Fixing documentation even though those methods are v4l2codecs plugin internals + Part-of: + +2021-01-29 09:43:07 -0500 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codech264dec.c: + * sys/v4l2codecs/gstv4l2decoder.c: + v4l2codecs: h264: Enable 1 frame delay on non-live + When doing non-live decoding, enable 1 frame of delay. This will ensure + that we queue the next decoding job before we actually wait for the previous + to complete. This improves throughput notably on RK3399. + Part-of: + +2021-01-29 09:41:22 -0500 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2decoder.c: + * sys/v4l2codecs/gstv4l2decoder.h: + v4l2codecs: Add support for render delay + This add support for render delay in the decoder helper. + Part-of: + +2021-01-27 15:55:43 -0500 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2decoder.c: + v4l2codecs: Coding style fix + Part-of: + +2021-01-27 15:53:49 -0500 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codech264dec.c: + * sys/v4l2codecs/gstv4l2codecvp8dec.c: + * sys/v4l2codecs/gstv4l2decoder.c: + * sys/v4l2codecs/gstv4l2decoder.h: + v4l2codecs: Poll inside set_done() + This removes the need for the gst_v4l2_decoder_is_done() helper and + simplify slightly the subclass code. + Part-of: + +2020-12-18 16:36:16 -0500 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codech264dec.c: + * sys/v4l2codecs/gstv4l2codecvp8dec.c: + * sys/v4l2codecs/gstv4l2decoder.c: + * sys/v4l2codecs/gstv4l2decoder.h: + v4l2codecs: Make request structure ref-counted + This adds a non-thread safe refcount to the GstV4l2Request. This will + allow holding on more then one request in order to implement render + delay. This is made non-thread safe for speed as we know this will all + happen on the same streaming thread. + Part-of: + +2020-12-14 17:07:01 -0500 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codech264dec.c: + * sys/v4l2codecs/gstv4l2codecvp8dec.c: + * sys/v4l2codecs/gstv4l2decoder.c: + * sys/v4l2codecs/gstv4l2decoder.h: + v4l2codecs: Rework handling of queues and pending requests + Starting from this patch, all queue and dequeue operation happening + on V4L2 is now abstracted with the request. Buffers are dequeued + automatically when pending requests are marked done and only 1 in-flight + request is now used. + Along with fixing issues with request not being reused with slice + decoders, this change reduces the memory footprint by allocating only + two bitstream buffers. + Part-of: + +2021-01-29 02:09:05 -0500 Staz M + + * sys/decklink/gstdecklink.cpp: + decklink: Fixed decklinkvideosink auto format detection + Part-of: + +2021-01-28 04:03:37 +0900 Seungha Yang + + * sys/nvcodec/gstnvh264dec.c: + nvh264sldec: Add support for output-delay to improve throughput performance + NVDEC API support delaying getting decoded output, and recommended + delay by API document is 4 frames. In case that throughput is + more critical factor than latency, we can prefer delayed output + as recommended by NVIDIA. + Part-of: + +2020-12-29 19:54:35 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth264decoder.c: + * gst-libs/gst/codecs/gsth264decoder.h: + codecs: h264decoder: Add support for output delay + Some decoding APIs support delayed output or a command for decoding + a frame doesn't need to be sequential to corresponding command for + getting decoded frame. For instance, subclass might be able to + request decoding for multiple frames and then get for one (oldest) + decoded frame or so. + If aforementioned case is supported by specific decoding API, + delayed output might show better throughput performance. + Part-of: + +2021-01-27 17:09:07 -0500 Arun Raghavan + + * ext/ldac/gstldacenc.h: + * ext/ldac/meson.build: + ldac: Use pkg-config instead of raw lib/header search + The ldacBT library includes pkg-config files for the standard and ABR + libraries, so let's just use that instead of doing a header/library + search. + Part-of: + +2021-01-28 02:02:28 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videosink.c: + d3d11videosink: Don't limit max buffers of buffer pool + In some case, especially reverse playback, we would need more than + two buffers. + Part-of: + +2021-01-27 04:34:13 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11device.c: + * sys/d3d11/gstd3d11shader.c: + d3d11: Suppress some warning debug messages + * Don't warn for live object, since ID3D11Debug itself seems to be + holding refcount of ID3D11Device at the moment we called + ID3D11Debug::ReportLiveDeviceObjects(). It would report live object + always + * Device might not be able to support some formats (e.g., P010) + especially in case of WARP device. We don't need to warn about that. + * gst_d3d11_device_new() can be used for device enumeration. Don't warn + even if we cannot create D3D11 device with given adapter index therefore. + * Don't warn for HLSL compiler warning. It's just noise and + should not be critical thing at all + Part-of: + +2020-12-11 05:23:20 +0900 Seungha Yang + + * tests/examples/d3d11videosink/d3d11device.cpp: + * tests/examples/d3d11videosink/d3d11device.h: + * tests/examples/d3d11videosink/d3d11videosink-shared-texture-d3d9ex.cpp: + * tests/examples/d3d11videosink/d3d11videosink-shared-texture.cpp: + * tests/examples/d3d11videosink/meson.build: + examples: Add d3d11videosink examples for shared-texture use cases + Add two examples to demonstrate "draw-on-shared-texture" use cases. + d3d11videosink will draw application's own texture without copy + by using: + - Enable "draw-on-shared-texture" property + - make use of "begin-draw" and "draw" signals + And then, application will render the shared application's texture + to swapchain's backbuffer by using + 1) Direct3D11 APIs + 2) Or, Direct3D9Ex + interop APIs + Part-of: + +2020-12-23 23:49:12 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videosink.c: + * sys/d3d11/gstd3d11videosink.h: + * sys/d3d11/gstd3d11videosinkbin.c: + * sys/d3d11/gstd3d11videosinkbin.h: + * sys/d3d11/gstd3d11window.cpp: + * sys/d3d11/gstd3d11window.h: + * sys/d3d11/gstd3d11window_dummy.cpp: + * sys/d3d11/gstd3d11window_dummy.h: + * sys/d3d11/meson.build: + d3d11videosink: Add support for drawing on application's own texture + Add a way to support drawing on application's texture instead of + usual window handle. + To make use of this new feature, application should follow below step. + 1) Enable this feature by using "draw-on-shared-texture" property + 2) Watch "begin-draw" signal + 3) On "begin-draw" signal handler, application can request drawing + by using "draw" signal action. Note that "draw" signal action + should be happen before "begin-draw" signal handler is returned + NOTE 1) For texture sharing, creating a texture with + D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX flag is strongly recommend + if possible because we cannot ensure sync a texture + which was created with D3D11_RESOURCE_MISC_SHARED + and it would cause glitch with ID3D11VideoProcessor use case. + NOTE 2) Direct9Ex doesn't support texture sharing which was + created with D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX. In other words, + D3D11_RESOURCE_MISC_SHARED is the only option for Direct3D11/Direct9Ex interop. + NOTE 3) Because of missing synchronization around ID3D11VideoProcessor, + If shared texture was created with D3D11_RESOURCE_MISC_SHARED, + d3d11videosink might use fallback texture to convert DXVA texture + to normal Direct3D texture. Then converted texture will be + copied to user-provided shared texture. + * Why not use generic appsink approach? + In order for application to be able to store video data + which was produced by GStreamer in application's own texture, + there would be two possible approaches, + one is copying our texture into application's own texture, + and the other is drawing on application's own texture directly. + The former (appsink way) cannot be a zero-copy by nature. + In order to support zero-copy processing, we need to draw on + application's own texture directly. + For example, assume that application wants RGBA texture. + Then we can imagine following case. + "d3d11h264dec ! d3d11convert ! video/x-raw(memory:D3D11Memory),format=RGBA ! appsink" + ^ + |_ allocate new Direct3D texture for RGBA format + In above case, d3d11convert will allocate new texture(s) for RGBA format + and then application will copy again the our RGBA texutre into + application's own texture. One texture allocation plus per frame GPU copy will hanppen + in that case therefore. + Moreover, in order for application to be able to access + our texture, we need to allocate texture with additional flags for + application's Direct3D11 device to be able to read texture data. + That would be another implementation burden on our side + But with this MR, we can configure pipeline in this way + "d3d11h264dec ! d3d11videosink". + In that way, we can save at least one texture allocation and + per frame texutre copy since d3d11videosink will convert incoming texture + into application's texture format directly without copy. + * What if we expose texture without conversion and application does + conversion by itself? + As mentioned above, for application to be able to access our texture + from application's Direct3D11 device, we need to allocate texture + in a special form. But in some case, that might not be possible. + Also, if a texture belongs to decoder DPB, exposing such texture + to application is unsafe and usual Direct3D11 shader cannot handle + such texture. To convert format, ID3D11VideoProcessor API needs to + be used but that would be a implementation burden for application. + Part-of: + +2021-01-20 20:04:20 +0800 Haihua Hu + + * ext/dash/gstmpdhelper.c: + dashsink: add h265 codec support + Return hvc1 for video/x-h265 mime type in mpd helper function + Part-of: + +2021-01-23 23:25:30 +0800 He Junyan + + * gst/videoparsers/gstav1parse.c: + av1parse: set the default alignment for input and output. + 1. Set the default output alignment to frame, rather than current + alignment of obu. This make it the same behaviour as h264/h265 + parse, which default align to AU. + 2. Set the default input alignment to byte. It can handle the "not + enough data" error while the OBU alignment can not. Also make it + conform to the comments. + Part-of: + +2021-01-23 19:26:59 +0800 He Junyan + + * tests/check/elements/av1parse.c: + * tests/check/elements/av1parse.h: + test: Add more test cases for the av1parse obu aligned output. + Part-of: + +2021-01-23 19:21:21 +0800 He Junyan + + * gst/videoparsers/gstav1parse.c: + av1parse: Reset the annex_b when meet TU inside a buffer. + Part-of: + +2021-01-23 19:05:57 +0800 He Junyan + + * gst/videoparsers/gstav1parse.c: + av1parse: Output each OBU when output is aligned to obu. + The current behaviour for obu aligned output is not very precise. + Several OBUs will be output together within one gst buffer. We + should output each gst buffer just containing one OBU. This is + the same way as the h264/h265 parse do when NAL aligned. + Part-of: + +2021-01-23 17:38:12 +0800 He Junyan + + * gst/videoparsers/gstav1parse.c: + av1parse: Always copy the OBU to cache. + The current optimization when input align and out out align are + the same is not very correct. We simply copy the data from input + buffer to output buffer, but we failed to consider the dropping of + OBUs. When we need to drop some OBUs(such as filter out the OBUs + of some temporal ID), we can not do simple copy. So we need to + always copy the input OBUs into a cache. + Part-of: + +2021-01-23 17:26:25 +0800 He Junyan + + * gst/videoparsers/gstav1parse.c: + av1parse: Improve the logic when to drop the OBU. + When drop some OBU, we need to go on. The current manner will make + the data access out range of the buffer mapping. + Part-of: + +2021-01-26 11:12:28 +0100 Marijn Suijten + + * ext/ldac/gstldacenc.c: + ext/ldac: Move duplicate sampling rates into #define + Because there was a typo in one of the duplicates already (see previous + commit) it is much safer to specify these once and only once. + Part-of: + +2021-01-26 11:02:21 +0100 Marijn Suijten + + * ext/ldac/gstldacenc.c: + ext/ldac: Fix typo in 88200(0) stereo encoder sampling rate + Fixes: a57681455 ("ext: Add LDAC encoder") + Part-of: + +2021-01-11 01:06:24 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.c: + * sys/d3d11/gstd3d11decoder.h: + * sys/d3d11/gstd3d11mpeg2dec.c: + * sys/d3d11/gstd3d11mpeg2dec.h: + * sys/d3d11/meson.build: + * sys/d3d11/plugin.c: + d3d11: Add support for MPEG-2 video decoding + Add DXVA/Direct3D11 API based MPEG-2 decoder element + Part-of: + +2020-11-27 16:18:29 +1100 Matthew Waters + + * ext/wpe/WPEThreadedView.cpp: + wpesrc: fix possible small deadlock on shutdown + Problem is that unreffing the EGLImage/SHM Buffer while holding the + images_mutex lock may deadlock when a new buffer is advertised and + an attempt is made to lock the images_mutex there. + The advertisement of the new image/buffer is performed in the + WPEContextThread and the blocking dispatch when unreffing wants to run + something on the WPEContextThread however images_mutex has already been + locked by the destructor. + Delay unreffing images/buffers outside of images_mutex and instead just + clear the relevant fields within the lock. + Part-of: + +2021-01-20 18:16:17 +0800 Haihua Hu + + * ext/dash/gstmpdhelper.c: + dashsink: fix double unref of sinkpad caps + no need to unref caps in gst_mpd_helper_get_XXX_codec_from_mime + it will be unref in caller gst_dash_sink_get_stream_metadata() + Part-of: + +2021-01-22 16:56:24 +0800 He Junyan + + * gst-libs/gst/codecparsers/gstav1parser.c: + codecparsers: av1: Fix a typo in frame_restoration_type setting. + Fixes: #1500 + Part-of: + +2021-01-22 14:01:01 +0800 He Junyan + + * gst/videoparsers/gstav1parse.c: + av1parse: Fix some issues in the src caps. + 1. Add the mono_chrome to identify 4:0:0 chroma-format. + 2. Correct the mapping between subsampling_x/y and chroma-format. + There is no 4:4:0 format definition in AV1. And 4:4:4 should + let both subsampling_x/y be equal to 0. + 3. Send the chroma-format when the color space is not RGB. + Fixes: #1502 + Part-of: + +2021-01-22 13:25:50 +0800 He Junyan + + * gst/videoparsers/gstvp9parse.c: + vp9parse: Fix the subsampling_x/y to chroma format mapping. + The chroma format 4:4:4 needs both subsampling_x and subsampling_y + equal to 0. + Fixes: #1502 + Part-of: + +2021-01-22 21:10:59 +1100 Matthew Waters + + * gst-libs/gst/vulkan/gstvkutils.c: + vulkan: remove duplicated check + Checking the same value twice is pointless + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1504 + Part-of: + +2021-01-22 19:26:18 +1100 Matthew Waters + + * ext/ldac/meson.build: + ldac: also look for the ldac/ldacBT.h header. + Otherwise there will be a scenario where the library can be found but + not the header and a compilation build error will result + Part-of: + +2021-01-22 09:35:30 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvafilter.c: + va: filter: fix assignation to proper variable + Fix the result of a wrong copy&paste + Fixes: #1501 + Part-of: + +2021-01-21 04:41:44 +0900 Seungha Yang + + * sys/mediafoundation/gstmfvideoenc.cpp: + mfvideoenc: Add support for P010 d3d11 texture + Add P010 Direct3D11 texture format support + Part-of: + +2021-01-20 02:29:43 +0900 Seungha Yang + + * sys/d3d11/gstd3d11colorconvert.c: + * sys/d3d11/gstd3d11compositor.c: + * sys/d3d11/gstd3d11compositorbin.c: + * sys/d3d11/gstd3d11desktopdupsrc.c: + * sys/d3d11/gstd3d11download.c: + * sys/d3d11/gstd3d11pluginutils.c: + * sys/d3d11/gstd3d11pluginutils.h: + * sys/d3d11/gstd3d11upload.c: + * sys/d3d11/gstd3d11videosink.c: + * sys/d3d11/gstd3d11videosinkbin.c: + * sys/d3d11/plugin.c: + d3d11: Don't use hardcoded maximum resolution value + Maximum supported texture dimension is pre-defined based on + feature level and it couldn't be INT_MAX in any case. + See also https://docs.microsoft.com/en-us/windows/win32/direct3d11/overviews-direct3d-11-devices-downlevel-intro + Part-of: + +2021-01-16 19:14:06 +0800 He Junyan + + * docs/plugins/gst_plugins_cache.json: + doc: Add the av1 parse element. + Part-of: + +2021-01-16 16:48:38 +0800 He Junyan + + * gst-libs/gst/codecparsers/gstav1parser.c: + codecparsers: Exclude the size of obu_size when identify OBU. + obu->obu_size does not contain the bytes of obu_size itself, we need + to exclude it when doing the saint check. + Part-of: + +2021-01-06 23:33:24 +0800 He Junyan + + * tests/check/elements/av1parse.c: + * tests/check/elements/av1parse.h: + * tests/check/meson.build: + test: Add test cases for av1parse element. + Part-of: + +2020-09-22 14:54:19 +0800 He Junyan + + * gst/videoparsers/gstav1parse.c: + * gst/videoparsers/gstav1parse.h: + * gst/videoparsers/meson.build: + * gst/videoparsers/plugin.c: + videoparsers: av1: Add the AV1 parse. + This AV1 parse implements the conversion between alignment of obu, + tu and frame, and the conversion between stream-format of obu-stream + and annexb. + TODO: + 1. May need a property of operating_point to filter the OBUs + 2. May add a property to disable deep parse. + Part-of: + +2021-01-20 00:57:05 +0800 He Junyan + + * gst-libs/gst/codecs/gstmpeg2decoder.h: + codecs: mpeg2decoder: Fix a typo in header file's comment. + Part-of: + +2021-01-18 20:30:44 +0900 Seungha Yang + + * sys/d3d11/gstd3d11window_win32.cpp: + d3d11videosink: Fix ugly thread name for Win32 window impl. + Don't need to put Win32 twice + Part-of: + +2021-01-18 20:28:14 +0900 Seungha Yang + + * sys/d3d11/gstd3d11window_corewindow.cpp: + * sys/d3d11/gstd3d11window_swapchainpanel.cpp: + d3d11videosink: Fix MSVC build warnings around UWP code + gstd3d11window_corewindow.cpp(408): warning C4189: + 'storage': local variable is initialized but not referenced + gstd3d11window_corewindow.cpp(490): warning C4189: + 'self': local variable is initialized but not referenced + gstd3d11window_swapchainpanel.cpp(481): warning C4189: + 'self': local variable is initialized but not referenced + Part-of: + +2021-01-18 19:17:14 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11config.h.meson: + * gst-libs/gst/d3d11/meson.build: + * sys/d3d11/gstd3d11videosink.c: + * sys/d3d11/gstd3d11window.cpp: + * sys/d3d11/meson.build: + d3d11: Allow building UWP features with Desktop features if possible + WINAPI_PARTITION_DESKTOP and WINAPI_PARTITION_APP can coexist. + Although UWP only binaries should be used for production stage, + this change will be useful for development stage + Part-of: + +2020-12-28 02:35:38 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.c: + d3d11decoder: Do more retry for ID3D11VideoContext::DecoderBeginFrame failure + Some GPUs (especially NVIDIA) are complaining that GPU is still busy + even we did 50 times of retry with 1ms sleep per failure. + Because DXVA/D3D11 doesn't provide API for "GPU-IS-READY-TO-DECODE" + like signal, there seems to be still no better solution other than sleep. + Part-of: + +2021-01-18 19:23:30 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videosink.c: + d3d11videosink: Fix build error on UWP + gstd3d11videosink.c(662): error C2065: 'sink': undeclared identifier + Part-of: + +2021-01-17 01:16:17 +0800 He Junyan + + * sys/va/gstvabasedec.c: + * sys/va/gstvautils.c: + va: Fix some gst_object_unref error because the pointer is NULL. + !1957 introduces some error of gst_object_unref for NULL pointer. + Fixes all of them. + Part-of: + +2021-01-15 16:05:06 +0800 He Junyan + + * sys/va/gstvadecoder.c: + va: Make the caps pointer operation atomic in vadecoder. + The vadecoder's srcpad_caps and sinkpad_caps pointers are outside of the + mutex protection. Just make all operation for them atomic. + Part-of: + +2021-01-15 15:22:07 +0800 He Junyan + + * sys/va/gstvabasedec.c: + * sys/va/gstvautils.c: + va: Fix a latent race condition in vabasedec. + The vabasedec's display and decoder are created/destroyed between + the gst_va_base_dec_open/close pair. All the data and event handling + functions are between this pair and so the accessing to these pointers + are safe. But the query function can be called anytime. So we need to: + 1. Make these pointers operation in open/close and query atomic. + 2. Hold an extra ref during query function to avoid it destroyed. + Part-of: + +2021-01-14 14:37:32 +0200 Sebastian Dröge + + * sys/decklink/gstdecklinkaudiosrc.cpp: + decklinkaudiosrc: Allow disabling audio sample alignment code by setting the alignment-threshold to 0 + And handle setting it to GST_CLOCK_TIME_NONE as always aligning without + ever detecting a discont. + Part-of: + +2020-12-21 05:11:03 +0900 Seungha Yang + + * sys/mediafoundation/gstmfh264enc.cpp: + * sys/mediafoundation/gstmfh264enc.h: + * sys/mediafoundation/gstmfh265enc.cpp: + * sys/mediafoundation/gstmfh265enc.h: + * sys/mediafoundation/gstmftransform.cpp: + * sys/mediafoundation/gstmftransform.h: + * sys/mediafoundation/gstmfvideoenc.cpp: + * sys/mediafoundation/gstmfvideoenc.h: + * sys/mediafoundation/gstmfvp9enc.cpp: + * sys/mediafoundation/gstmfvp9enc.h: + * sys/mediafoundation/meson.build: + * sys/mediafoundation/plugin.c: + mfvideoenc: Add support for Direct3D11 texture + Initial support for d3d11 texture so that encoder can copy + upstream d3d11 texture into encoder's own texture pool without + downloading memory. + This implementation requires MFTEnum2() API for creating + MFT (Media Foundation Transform) object for specific GPU but + the API is Windows 10 desktop only. So UWP is not target + of this change. + See also https://docs.microsoft.com/en-us/windows/win32/api/mfapi/nf-mfapi-mftenum2 + Note that, for MF plugin to be able to support old OS versions + without breakage, this commit will load MFTEnum2() symbol + by using g_module_open() + Summary of required system environment: + - Needs Windows 10 (probably at least RS 1 update) + - GPU should support ExtendedNV12SharedTextureSupported feature + - Desktop application only (UWP is not supported yet) + Part-of: + +2021-01-12 19:12:42 +0100 Mathieu Duponchelle + + * ext/webrtc/webrtctransceiver.c: + * gst-libs/gst/webrtc/rtpreceiver.c: + * gst-libs/gst/webrtc/rtpsender.c: + webrtc: expose transport property on sender and receiver + As advised by !1366#note_629558 , the nice transport should be + accessed through: + > transceiver->sender/receiver->transport/rtcp_transport->icetransport + All the objects on the path can be accessed through properties + except sender/receiver->transport. This patch addresses that. + Part-of: + +2020-12-21 02:47:45 +0900 Seungha Yang + + * gst-libs/gst/d3d11/d3d11-prelude.h: + * gst-libs/gst/d3d11/gstd3d11.h: + * gst-libs/gst/d3d11/gstd3d11_fwd.h: + * gst-libs/gst/d3d11/gstd3d11_private.h: + * gst-libs/gst/d3d11/gstd3d11bufferpool.c: + * gst-libs/gst/d3d11/gstd3d11bufferpool.h: + * gst-libs/gst/d3d11/gstd3d11config.h.meson: + * gst-libs/gst/d3d11/gstd3d11device.c: + * gst-libs/gst/d3d11/gstd3d11device.h: + * gst-libs/gst/d3d11/gstd3d11format.c: + * gst-libs/gst/d3d11/gstd3d11format.h: + * gst-libs/gst/d3d11/gstd3d11memory.c: + * gst-libs/gst/d3d11/gstd3d11memory.h: + * gst-libs/gst/d3d11/gstd3d11utils.c: + * gst-libs/gst/d3d11/gstd3d11utils.h: + * gst-libs/gst/d3d11/meson.build: + * gst-libs/gst/meson.build: + * sys/d3d11/gstd3d11basefilter.c: + * sys/d3d11/gstd3d11basefilter.h: + * sys/d3d11/gstd3d11colorconvert.c: + * sys/d3d11/gstd3d11colorconverter.c: + * sys/d3d11/gstd3d11colorconverter.h: + * sys/d3d11/gstd3d11compositor.c: + * sys/d3d11/gstd3d11compositor.h: + * sys/d3d11/gstd3d11compositorbin.c: + * sys/d3d11/gstd3d11compositorbin.h: + * sys/d3d11/gstd3d11decoder.c: + * sys/d3d11/gstd3d11decoder.h: + * sys/d3d11/gstd3d11desktopdup.cpp: + * sys/d3d11/gstd3d11desktopdup.h: + * sys/d3d11/gstd3d11desktopdupsrc.c: + * sys/d3d11/gstd3d11desktopdupsrc.h: + * sys/d3d11/gstd3d11download.c: + * sys/d3d11/gstd3d11h264dec.c: + * sys/d3d11/gstd3d11h265dec.c: + * sys/d3d11/gstd3d11overlaycompositor.c: + * sys/d3d11/gstd3d11overlaycompositor.h: + * sys/d3d11/gstd3d11pluginutils.c: + * sys/d3d11/gstd3d11pluginutils.h: + * sys/d3d11/gstd3d11shader.c: + * sys/d3d11/gstd3d11shader.h: + * sys/d3d11/gstd3d11upload.c: + * sys/d3d11/gstd3d11utils.c: + * sys/d3d11/gstd3d11videoprocessor.c: + * sys/d3d11/gstd3d11videoprocessor.h: + * sys/d3d11/gstd3d11videosink.c: + * sys/d3d11/gstd3d11videosink.h: + * sys/d3d11/gstd3d11videosinkbin.c: + * sys/d3d11/gstd3d11vp8dec.c: + * sys/d3d11/gstd3d11vp9dec.c: + * sys/d3d11/gstd3d11window.cpp: + * sys/d3d11/gstd3d11window.h: + * sys/d3d11/gstd3d11window_corewindow.cpp: + * sys/d3d11/gstd3d11window_corewindow.h: + * sys/d3d11/gstd3d11window_swapchainpanel.cpp: + * sys/d3d11/gstd3d11window_swapchainpanel.h: + * sys/d3d11/gstd3d11window_win32.cpp: + * sys/d3d11/gstd3d11window_win32.h: + * sys/d3d11/meson.build: + * sys/d3d11/plugin.c: + d3d11: Move core methods to gst-libs + Move d3d11 device, memory, buffer pool and minimal method + to gst-libs so that other plugins can access d3d11 resource. + Since Direct3D is primary graphics API on Windows, we need + this infrastructure for various plugins can share GPU resource + without downloading GPU memory. + Note that this implementation is public only for -bad scope + for now. + Part-of: + +2021-01-12 00:13:22 +0900 Seungha Yang + + * sys/va/gstvaallocator.c: + va: allocator: Fix deadlock caused by double lock + Trivial bug fix for deadlock + Part-of: + +2021-01-04 19:34:40 +1100 Matthew Waters + + * ext/wpe/gstwpesrc.cpp: + wpesrc: replace object lock usage with a new lock + Using the object lock is problematic for anything that can dispatch to + another thread which is what createWPEView() does inside + gst_wpe_src_start(). Using the object lock there can cause a deadlock. + One example of such a deadlock is when createWPEView is called, but + another (or the same) wpesrc is on the WPEContextThread and e.g. posts a + bus message. This message propagations takes and releases the object + lock of numerous elements in quick succession for determining various + information about the elements in the bin. If the object lock is + already held, then the message propagation will block and stall bin + processing (state changes, other messages) and wpe servicing any events. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1490 + Part-of: + +2021-01-10 23:16:55 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth264picture.c: + codecs: h264picture: Count only complete complementary field pair for dpb fullness decision + Our DPB implementation was designed as such that allowing + temporary DPB overflow in the middle of field picture decoding + and incomplete field pair should not trigger DPB bumping. + Part-of: + +2021-01-10 23:11:01 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth264decoder.c: + codecs: h264decoder: Add support for field-pair input frame + In case that upstream pushed buffer as a frame unit, not picture + unit for interlaced stream, baseclass should be able to detect + AU boundary (i.e., complementary field pair). + Part-of: + +2021-01-10 22:01:27 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth264decoder.c: + codecs: h264decoder: Remove unused private variables + ... and reset() method to clear internal status at one place + Part-of: + +2020-12-22 02:29:03 +0100 Mathieu Duponchelle + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: try harder not to pick duplicate media ids + On renegotiation, or when the user has specified a mid for + a transceiver, we need to avoid picking a duplicate mid for + a transceiver that doesn't yet have one. + Also assign the mid we created to the transceiver, that doesn't + fix a specific bug but seems to make sense to me. + Part-of: + +2021-01-07 23:47:35 +0900 Seungha Yang + + * sys/va/meson.build: + * tests/examples/va/meson.build: + meson: va: Skip configuration on non-linux environment + VA plugin is linux-only plugin, so we can skip it earlier. + Note that this plugin is making use of libdrm meson fallback, + which is unusable on the other platforms such as Windows + Part-of: + +2021-01-07 12:41:16 +0800 Haihao Xiang + + * sys/msdk/gstmsdkenc.c: + msdkenc: the unit for max-frame-size is kbyte + Part-of: + +2021-01-07 09:21:47 +0100 Edward Hervey + + * ext/srt/gstsrtobject.c: + srt: Define options added in later revisions + Allows compiling the plugin against old headers. + For SRTO_BINDTODEVICE there's nothing we can do, since the value depends on + configuration options of the library. Nice. + Fixes build with libsrt < 1.4.2 + Part-of: + +2020-10-16 19:30:59 +0200 Jakub Adam + + * ext/srt/gstsrtobject.c: + srtobject: distinguish authentication error messages + Use GST_RESOURCE_ERROR_NOT_AUTHORIZED code in posted error messages + related to SRT authentication (e.g. incorrect or missing password) so + that the application can recognize them more easily. + Part-of: + +2020-10-16 19:27:37 +0200 Jakub Adam + + * ext/srt/gstsrtobject.c: + srtobject: detect socket errors from srt_epoll_wait() + On an error event, epoll wait puts the failed socket in both readfds and + writefds. We can take advantage of this and avoid explicitly checking + socket state before every read or write attempt. + In addition, srt_getrejectreason() will give us more detailed + description of the connection failure. + Part-of: + +2020-12-30 13:51:21 -0500 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/gstwebrtcice.c: + * ext/webrtc/transportsendbin.c: + * ext/webrtc/transportsendbin.h: + * ext/webrtc/transportstream.c: + * ext/webrtc/transportstream.h: + * ext/webrtc/webrtctransceiver.h: + webrtcbin: Remove remnant of non-rtcp-mux mode + There was some code left that wasn't used anymore. + Part-of: + +2020-11-24 22:25:15 +0100 Jakub Adam + + * ext/srt/gstsrtobject.c: + srtobject: make possible to specify more sockopts in SRT URI + Any socket option that can be passed to libsrt's srt-live-transmit + through SRT URI query string is now recognized. + Also make the code that applies options to SRT sockets more generic. + Part-of: + +2020-08-26 14:33:57 +0200 Jakub Adam + + * ext/srt/gstsrtsrc.c: + srtsrc: fix typos + Part-of: + +2020-08-25 13:44:42 +0200 Jakub Adam + + * ext/srt/gstsrtsink.c: + srtsink: remove unused connection_mode variable + Part-of: + +2020-11-23 16:12:39 +0100 Jakub Adam + + * ext/srt/gstsrtobject.c: + srtobject: obey "wait-for-connection" in caller mode + The pipeline now gets stuck in gst_srt_object_write_one() until the + receiver comes online, which may or may not be desired based on the use + case. + Part-of: + +2021-01-05 14:18:39 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvampeg2dec.c: + va: mpeg2dec: refactor the picture reference filling + Add the helper function _get_surface_id() which extracts the + VASurfaceID from the passed picture. This function gets the surface of + the next and previous reference picture. + Instead of if-statements, this refactor uses a switch-statement with a + fall-through, for P-type pictures, making the code a bit more readable. + Also it adds quirks for gallium driver, which cannot handle invalid + surfaces as forwarding nor backwarding references, so the function fails. + Also iHD cannot handle them, but to avoid failing, the current picture + is used as self-reference. + Part-of: + +2021-01-05 14:16:45 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvampeg2dec.c: + va: mpeg2dec: set first field either frame or has a first field + Add a helper function _is_frame_start() which check if picture has a + frame structure or if it has not an interlaced first field yet. This + function is used with filling is_first_field parameter. + Part-of: + +2021-01-06 16:38:14 +0100 Víctor Manuel Jáquez Leal + + * gst-libs/gst/codecs/gstmpeg2decoder.c: + codecs: mpeg2decoder: decode only if B and not closed gop + Mark as decode only if picture type is B, without previous picture in DBP and + closed_gop is 0 as might be understood in "6.3.8 Group of pictures header". + Part-of: + +2021-01-06 12:48:14 +0100 Víctor Manuel Jáquez Leal + + * gst-libs/gst/codecs/gstmpeg2decoder.c: + codecs: mpeg2decoder: rename variables + Since prev_picture and next_picture are plain pointers, not pointer to pointers, + it's misleading to name them with _ptr suffix. + Part-of: + +2021-01-04 21:02:35 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvadisplay.c: + * sys/va/gstvadisplay.h: + va: display: parse and set driver implementation + This enum can be used for quirk handling. It's not a property because + the driver enum list might change, it's not static, thus avoiding the + update of GType declaration. + Part-of: + +2021-01-04 20:56:26 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvadisplay.c: + * sys/va/gstvadisplay.h: + va: display: add function precondition check + Part-of: + +2020-08-25 19:12:13 +0200 Jakub Adam + + * ext/srt/gstsrtobject.c: + srtobject: post a message on the bus when broken socket is detected + So that the application gets notified may react to it. + Part-of: + +2020-12-30 23:29:47 +0800 He Junyan + + * sys/va/gstvampeg2dec.c: + va: mpeg2dec: Using the current picture's surface when missing reference. + When missing the reference frames, we should not just discard the current + frame. Some streams have group of picture header. It is an optional header + that can be used immediately before a coded I-frame to indicate to the decoder + if the first consecutive B-pictures immediately following the coded I-frame can + be reconstructed properly in the case of a random access. + In that case, the B frames may miss the previous reference and can still be + correctly decoded. We also notice that the second field of the I frame may + be set to P type, and it only ref its first field. + We should not skip all those frames, and even the frame really misses the + reference frame, some manner such as inserting grey picture should be used + to handle these cases. + The driver crashes when it needs to access the reference picture while we set + forward_reference_picture or backward_reference_picture to VA_INVALID_ID. We + now set it to current picture to avoid this. This is just a temp manner. + Part-of: + +2020-12-30 23:14:01 +0800 He Junyan + + * gst-libs/gst/codecs/gstmpeg2decoder.c: + codecs: mpeg2decoder: Creating the field based on its arriving time. + Spec says: + In a frame picture top_field_first being set to ‘1’ indicates that the + top field of the reconstructed frame is the first field output by the + decoding process. top_field_first being set to ‘0’ indicates that the + bottom field of the reconstructed frame is the first field output by + decoding process. + Here, the "output" should be interpreted just as the output order, not + including the decoding order. The field should be decoded as the order + they comes in the stream. Namely, no matter top_field_first is 0 or 1, + the first coming field is the first one to be decoded. + Part-of: + +2021-01-01 16:00:10 +0800 He Junyan + + * sys/va/gstvampeg2dec.c: + va: mpeg2dec: Apply buffer_flags to the output buffer. + Part-of: + +2021-01-01 15:56:03 +0800 He Junyan + + * gst-libs/gst/codecs/gstmpeg2decoder.c: + * gst-libs/gst/codecs/gstmpeg2picture.h: + codecs: Add buffer_flags for mpeg2 picture. + We need to store the buffer flags such as GST_VIDEO_BUFFER_FLAG_INTERLACED + and GST_VIDEO_BUFFER_FLAG_TFF for interlaced video. Without these flags, + the VPP and display elements can not apply filter correctly. + Part-of: + +2020-12-30 23:00:51 +0800 He Junyan + + * gst-libs/gst/codecs/gstmpeg2decoder.c: + codecs: Reset the quant matrices for each sequence in mpeg2 decoder. + Part-of: + +2020-10-27 11:52:09 +0530 Raghavendra + + * ext/srt/gstsrtobject.c: + * ext/srt/gstsrtobject.h: + * ext/srt/gstsrtsink.c: + * ext/srt/gstsrtsink.h: + * ext/srt/gstsrtsrc.c: + * ext/srt/gstsrtsrc.h: + srt: Add authentication to srtsink and srtsrc elements + Part-of: + +2020-12-30 22:52:01 +0800 Haihua Hu + + * ext/dash/gstdashsink.c: + * ext/dash/gstmpdrootnode.c: + dashsink: fix critical log when exit dynamic pipeline + availability-start-time and publish-time shared the same + GstDateTime object, this object will be unref twice and + cause reference count issue. Should use g_value_dup_boxed() + to copy this object. + Part-of: + +2020-12-23 16:11:42 +0800 Haihao Xiang + + * sys/msdk/gstmsdkh264enc.c: + * sys/msdk/gstmsdkh264enc.h: + * sys/msdk/gstmsdkh265enc.c: + * sys/msdk/gstmsdkh265enc.h: + msdkenc{h264,h265}: add min-qp and max-qp properties + The SDK allows user to set a QP range [1], so add min-qp and max-qp to + sepecify QP range. By default, there is no limitations on QP. + [1] https://github.com/Intel-Media-SDK/MediaSDK/blob/master/doc/mediasdk-man.md#mfxextcodingoption2 + Part-of: + +2020-12-23 13:36:02 +0800 Haihao Xiang + + * sys/msdk/gstmsdkh264enc.c: + * sys/msdk/gstmsdkh264enc.h: + * sys/msdk/gstmsdkh265enc.c: + * sys/msdk/gstmsdkh265enc.h: + msdkenc{h264,h265}: add p-pyramid property + The SDK can support P-Pyramid reference structure [1], so add a new + property to enable this feature in msdkenc{h264,h265}. + [1] https://github.com/Intel-Media-SDK/MediaSDK/blob/master/doc/mediasdk-man.md#preftype + Part-of: + +2020-12-22 16:17:18 +0800 Haihao Xiang + + * sys/msdk/gstmsdkh265enc.c: + * sys/msdk/gstmsdkh265enc.h: + msdkh265enc: add b-pyramid property + Like as msdkh264enc, b-pyramid is added to enable B-Pyramid reference + structure for H265 encoding + Part-of: + +2020-12-22 14:54:59 +0800 Haihao Xiang + + * sys/msdk/gstmsdkh265enc.c: + * sys/msdk/gstmsdkh265enc.h: + * sys/msdk/msdk-enums.c: + * sys/msdk/msdk-enums.h: + msdkh265enc: add transform-skip property + Since the SDK API 1.26, TransformSkip was added to control + transform_skip_enabled_flag setting in PPS [1] + [1] https://github.com/Intel-Media-SDK/MediaSDK/blob/master/doc/mediasdk-man.md#mfxextcodingoption3 + Part-of: + +2020-12-29 09:41:05 +0800 Haihao Xiang + + * sys/msdk/gstmsdkcontext.c: + msdk: needn't close mfx session when failed + Otherwise we will get double free issue because mfx session is closed in + finalize. See + https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1867#note_739346 + for the double free issue. + Part-of: + +2020-12-29 13:29:05 -0500 Olivier Crête + + * ext/webrtc/gstwebrtcstats.c: + webrtcstats: PLI/FIR/NACK direction are the opposite of the media + Part-of: + +2020-12-29 13:15:10 +0200 Sebastian Dröge + + * ext/assrender/gstassrender.c: + assrender: Don't try unlocking unlocked mutex + When flushing right at the beginning of the video chain function or + when failing negotiation at the top of the function, the assrender mutex + would be unlocked without being previously locked. + Part-of: + +2020-12-27 22:16:13 +0900 Seungha Yang + + * sys/d3d11/gstd3d11compositor.c: + d3d11compositor: Add support for resolution change + Not only for position update (e.g., xpos, ypos), + we need to configure shader again per resolution change of each + input stream. + Part-of: + +2020-12-28 04:33:11 +0900 Seungha Yang + + * sys/d3d11/gstd3d11shader.c: + d3d11shader: Fix ID3DBlob object leak + Even if HLSL compiler was able to compile our shader code, D3DCompile() + might return ID3DBlob object for compile warnings and the object + should be released. + Part-of: + +2020-12-28 17:13:22 +0800 He Junyan + + * gst-libs/gst/codecs/gstmpeg2decoder.c: + codecs: Fix a typo in mpeg2 stateless decoder base class. + Part-of: + +2020-12-24 20:07:09 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvampeg2dec.c: + va: mpeg2dec: cosmetic changes + Part-of: + +2020-12-27 15:47:13 +0100 Víctor Manuel Jáquez Leal + + * gst-libs/gst/codecs/gstmpeg2decoder.c: + * gst-libs/gst/codecs/gstmpeg2decoder.h: + * gst-libs/gst/codecs/gstmpeg2picture.c: + * gst-libs/gst/codecs/gstmpeg2picture.h: + codecs: mpeg2decoder: fix documentation + Part-of: + +2020-12-24 16:20:31 +0100 Víctor Manuel Jáquez Leal + + * gst-libs/gst/codecs/gstmpeg2decoder.c: + codecs: mpeg2decoder: simplify macros + For constructors, instead of casting to pointers, cast to the structures. + For compare, use inlined functions. + Part-of: + +2020-12-18 22:28:41 +0800 He Junyan + + * sys/va/gstvabasedec.h: + * sys/va/gstvadecoder.c: + * sys/va/gstvampeg2dec.c: + * sys/va/gstvampeg2dec.h: + * sys/va/meson.build: + * sys/va/plugin.c: + va: Add mpeg2 VA decoder. + Part-of: + +2020-12-18 21:25:08 +0800 He Junyan + + * gst-libs/gst/codecs/gstmpeg2decoder.c: + * gst-libs/gst/codecs/gstmpeg2decoder.h: + * gst-libs/gst/codecs/gstmpeg2picture.c: + * gst-libs/gst/codecs/gstmpeg2picture.h: + * gst-libs/gst/codecs/meson.build: + codecs: Add mpeg2 stateless decoder base class. + Part-of: + +2020-12-27 03:16:28 +0900 Seungha Yang + + * sys/mediafoundation/gstmfh264enc.cpp: + * sys/mediafoundation/gstmfh265enc.cpp: + * sys/mediafoundation/gstmfvideoenc.cpp: + * sys/mediafoundation/gstmfvideoenc.h: + * sys/mediafoundation/gstmfvp9enc.cpp: + mfvideoenc: Re-define default GOP size value + The behavior for zero AVEncMPVGOPSize value would be + varying depending on GPU vendor implementation and some + GPU will produce keyframe only once at the beginning of encoding. + That's unlikely expected result for users. + To make this property behave consistently among various GPUs, + this commit will change default value of "gop-size" property to -1 + which means "auto". When "gop-size" is unspecified, then + mfvideoenc will calculate GOP size based on framerate + like that of our x264enc implementation. + See also + https://docs.microsoft.com/en-us/windows/win32/directshow/avencmpvgopsize-property + Part-of: + +2020-12-27 03:43:11 +0900 Seungha Yang + + * sys/mediafoundation/gstmfvideoenc.cpp: + mfvideoenc: Fix use of uninitialized value + Part-of: + +2020-12-24 21:31:04 +0900 Seungha Yang + + * sys/d3d11/gstd3d11device.c: + * sys/d3d11/gstd3d11utils.c: + d3d11device: Add property for getting adapter LUID + LUID (Locally Unique Identifier) can used for identifying GPU + and that's required for some Windows APIs (e.g., MFTEnum2()) to setup device. + See also + https://docs.microsoft.com/en-us/windows/win32/api/mfapi/nf-mfapi-mftenum2 + Part-of: + +2020-12-26 20:39:07 +0900 Seungha Yang + + * sys/mediafoundation/gstmfh264enc.cpp: + * sys/mediafoundation/gstmfh265enc.cpp: + * sys/mediafoundation/gstmfvideoenc.cpp: + * sys/mediafoundation/gstmfvideoenc.h: + * sys/mediafoundation/gstmfvp9enc.cpp: + * sys/mediafoundation/plugin.c: + mfvideoenc: Remove duplicated class registration code + Each codec subclass has the same code for class/element registration, + so we can move the code into one helper methodm and that will make + future enhancement simple. + Part-of: + +2020-12-10 11:11:04 +0800 Haihao Xiang + + * sys/msdk/gstmsdkcontext.c: + * sys/msdk/msdk.c: + msdk: check GstMsdkContext instead of mfxSession instance + When creating a GstMsdkContext instance, it also creates a mfxSession + instance, so we may check GstMsdkContext instead of mfxSession instance + to make sure MSDK is available. In addition, according to MSDK doc [1], + MFXVideoCORE_SetHandle function should be executed before any actual + usage of library including queries, otherwise the behavior is + unexpected, so we should call MFXVideoCORE_QueryPlatform after + MFXVideoCORE_SetHandle on Linux + [1] https://github.com/Intel-Media-SDK/MediaSDK/blob/master/doc/mediasdk-man.md#working-with-va-api-applications + Part-of: + +2020-12-23 21:21:55 +0900 Seungha Yang + + * sys/d3d11/gstd3d11device.c: + * sys/d3d11/gstd3d11device.h: + * sys/d3d11/gstd3d11shader.c: + * sys/d3d11/plugin.c: + d3d11: Remove unnecessary helper methods + We can query selected D3D_FEATURE_LEVEL and factory version + by using native D3D11 API + Part-of: + +2020-11-21 03:20:36 +0900 Seungha Yang + + * sys/d3d11/gstd3d11desktopdup.cpp: + * sys/d3d11/gstd3d11desktopdup.h: + * sys/d3d11/gstd3d11desktopdupsrc.c: + * sys/d3d11/gstd3d11desktopdupsrc.h: + * sys/d3d11/meson.build: + * sys/d3d11/plugin.c: + d3d11: Re-implement Desktop Duplication source + Add a new video source element "d3d11desktopdupsrc" for capturing desktop image + via Desktop Duplication based on Microsoft's Desktop Duplication sample available at + https://github.com/microsoft/Windows-classic-samples/tree/master/Samples/DXGIDesktopDuplication + This element is expected to be a replacement of existing dxgiscreencapsrc + element in winscreencap plugin. + Currently this element can support (but dxgiscreencapsrc cannot) + - Copying captured D3D11 texture to output buffer without download + - Support desktop session transition + e.g., can capture desktop without error even in case that + "Lock desktop" and "Permission dialog" + - Multiple d3d11desktopdupsrc elements can capture the same monitor + Not yet implemented features + - Cropping rect is not implemented, but that can be handled by downstream + - Mult-monitor is not supported. But that is also can be implemented by + downstream element for example via multiple d3d11desktopdup elements + with d3d11compositor + Part-of: + +2020-12-22 00:47:09 +0900 Seungha Yang + + * sys/d3d11/gstd3d11device.c: + * sys/d3d11/gstd3d11device.h: + * sys/d3d11/gstd3d11utils.c: + * sys/d3d11/plugin.c: + d3d11device: Add an optional flags argument for creating device + Extend gst_d3d11_device_new() method so that caller can specify + D3D11_CREATE_DEVICE_FLAG value to use. + See https://docs.microsoft.com/en-us/windows/win32/api/d3d11/ne-d3d11-d3d11_create_device_flag + for more detail about D3D11_CREATE_DEVICE_FLAG + Part-of: + +2020-12-21 14:06:53 +0530 Raju Babannavar + + * gst/dvbsuboverlay/dvb-sub.c: + dvbsuboverlay: Add support for dynamic resolution update. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1487 + Part-of: + +2020-12-21 02:56:55 +0900 Seungha Yang + + * sys/d3d11/gstd3d11device.h: + d3d11device: Remove dead code + We don't use this method since the commit of + 0788492461e1b559230cc5c3a354fe5f48f95f8b + Part-of: + +2020-12-20 02:39:40 +0900 Seungha Yang + + * sys/d3d11/gstd3d11colorconvert.c: + * sys/d3d11/gstd3d11compositor.c: + * sys/d3d11/gstd3d11decoder.c: + * sys/d3d11/gstd3d11download.c: + * sys/d3d11/gstd3d11h264dec.c: + * sys/d3d11/gstd3d11h265dec.c: + * sys/d3d11/gstd3d11memory.c: + * sys/d3d11/gstd3d11memory.h: + * sys/d3d11/gstd3d11upload.c: + * sys/d3d11/gstd3d11utils.c: + * sys/d3d11/gstd3d11utils.h: + * sys/d3d11/gstd3d11videoprocessor.c: + * sys/d3d11/gstd3d11videoprocessor.h: + * sys/d3d11/gstd3d11videosink.c: + * sys/d3d11/gstd3d11vp8dec.c: + * sys/d3d11/gstd3d11vp9dec.c: + * sys/d3d11/gstd3d11window.cpp: + d3d11: Privatize d3d11memory implementation + Hide most of symbols of GstD3D11Memory object. + GstD3D11Memory is one of primary resource for imcoming d3d11 library + and it's expected to be a extensible feature. + Hiding implementation detail would be helpful for later use case. + Summary of this commit: + * Now all native Direct3D11 resources are private of GstD3D11Memory. + To access native resources, getter methods need to be used + or generic map (e.g., gst_memory_map) API should be called + apart from some exceptional case such as d3d11decoder case. + * Various helper methods are added for GstBuffer related operations + and in order to remove duplicated code. + Part-of: + +2020-12-20 01:06:24 +0900 Seungha Yang + + * sys/d3d11/gstd3d11compositor.c: + * sys/d3d11/gstd3d11decoder.c: + * sys/d3d11/gstd3d11utils.c: + * sys/d3d11/gstd3d11utils.h: + * sys/d3d11/gstd3d11videosink.c: + d3d11: Add a helper method for d3d11buffferpool setup + Remove duplicated code for d3d11buffferpool setup. + Part-of: + +2020-12-19 00:40:53 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.c: + * sys/d3d11/gstd3d11device.c: + * sys/d3d11/gstd3d11device.h: + * sys/d3d11/gstd3d11memory.c: + * sys/d3d11/gstd3d11overlaycompositor.c: + * sys/d3d11/gstd3d11window_corewindow.cpp: + * sys/d3d11/gstd3d11window_swapchainpanel.cpp: + * sys/d3d11/gstd3d11window_win32.cpp: + d3d11device: Remove optional helper methods + Most of Direct3D11 APIs can be called without GstD3D11Device + abstraction. This is a part of prework for public GstD3D11 library + to introduce minimal APIs + Part-of: + +2020-12-20 22:12:44 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videosink.c: + d3d11videosink: Prepare window once streaming started + ... instead of READY state. READY state is too early for setting + overlay window handle especially playbin/playsink scenario + since playsink will set given overlay handle on videosink once + READY state change of videosink is ensured. + Part-of: + +2020-08-19 03:19:26 +0900 Seungha Yang + + * sys/mediafoundation/gstmftransform.cpp: + * sys/mediafoundation/gstmftransform.h: + * sys/mediafoundation/gstmfvideoenc.cpp: + * sys/mediafoundation/gstmfvideoenc.h: + mfvideoenc: Improve latency performance for hardware encoder + Unlike software MFT (Media Foundation Transform) which is synchronous + in terms of processing input and output data, hardware MFT works + in asynchronous mode. output data might not be available right after + we pushed one input data into MFT. + Note that async MFT will fire two events, one is "METransformNeedInput" + which happens when MFT can accept more input data, + and the other is "METransformHaveOutput", that's for signaling + there's pending data which can be outputted immediately. + To listen the events, we can wait synchronously via + IMFMediaEventGenerator::GetEvent() or make use of IMFAsyncCallback + object which is asynchronous way and the event will be notified + from Media Foundation's internal worker queue thread. + To handle such asynchronous operation, previous working flow was + as follows (IMFMediaEventGenerator::GetEvent() was used for now) + - Check if there is pending output data and push the data toward downstream. + - Pulling events (from streaming thread) until there's at least + one pending "METransformNeedInput" event + - Then, push one data into MFT from streaming thread + - Check if there is pending "METransformHaveOutput" again. + If there is, push new output data to downstream + (unlikely there is pending output data at this moment) + Above flow was processed from upstream streaming thread. That means + even if there's available output data, it could be outputted later + when the next buffer is pushed from upstream streaming thread. + It would introduce at least one frame latency in case of live stream. + To reduce such latency, this commit modifies the flow to be fully + asynchronous like hardware MFT was designed and to be able to + output encoded data whenever it's available. More specifically, + IMFAsyncCallback object will be used for handling + "METransformNeedInput" and "METransformHaveOutput" events from + Media Foundation's internal thread, and new output data will be + also outputted from the Media Foundation's thread. + Part-of: + +2020-12-16 18:32:25 +0200 Sebastian Dröge + + * sys/decklink/gstdecklinkaudiosrc.cpp: + decklinkaudiosrc: Fix duration of the first audio frame after each discont + Part-of: + +2020-12-16 00:28:08 +0530 Biswapriyo Nath + + * sys/mediafoundation/gstmfdevice.h: + mediafoundation: Fix redefinition of variables. + Remove duplicate GstMFDevice and GstMFDeviceProvider declaration. + Part-of: + +2020-12-17 04:41:18 +1100 Jan Schmidt + + * gst/audiobuffersplit/gstaudiobuffersplit.c: + audiobuffersplit: Calculate the correct size for fixed size buffers + Fix the output-buffer-size property to do what it says by calculating + the correct audio buffer size for that target size, rounded down to + the nearest whole number of samples. + Part-of: + +2020-12-10 12:35:07 +0200 Sebastian Dröge + + * sys/decklink/gstdecklinkaudiosrc.cpp: + * sys/decklink/gstdecklinkvideosrc.cpp: + decklink: Implement GstBaseSrc::get_caps() to return more constrained caps + Instead of the template caps we can return a subset of them based on the + selected properties. + Part-of: + +2020-10-30 02:21:11 +0900 Seungha Yang + + * sys/wasapi2/gstwasapi2client.cpp: + wasapi2: Ensure unmute when opening audio client + ISimpleAudioVolume::SetMute() status seems to be preserved even + after process is terminated. In order to start audio client with + unmuted state, always disable mute when opening audio client. + Part-of: + +2020-12-14 16:12:22 +0100 Edward Hervey + + * gst/mpegtsdemux/mpegtsparse.c: + tsparse: Don't use non-object for debugging statement + Use the pad instead + Part-of: + +2020-12-14 10:56:39 +0100 Edward Hervey + + * tests/examples/mpegts/ts-parser.c: + examples/ts-parser: Use the section type for descriptor identification + Some descriptors can only be present in some section + Part-of: + +2020-12-14 10:56:02 +0100 Edward Hervey + + * tests/examples/mpegts/ts-parser.c: + examples/ts-parser: Try more descriptor/stream types + These were added recently + Part-of: + +2020-12-09 09:14:12 +0100 Edward Hervey + + * gst/mpegtsdemux/mpegtsbase.c: + * gst/mpegtsdemux/mpegtsbase.h: + mpegts: Don't add non-padded streams to collection on updates + When carrying over existing GstStream to a new GstStreamCollection we need to + check whether they *actually* were being used in the previous collection. + This avoids adding unknown streams (metadata, PSI, etc...) to the collection on + updates. + Part-of: + +2020-11-22 18:48:08 +0100 Edward Hervey + + * gst-libs/gst/mpegts/gst-dvb-descriptor.h: + * gst-libs/gst/mpegts/gst-dvb-section.c: + * gst-libs/gst/mpegts/gst-dvb-section.h: + * gst-libs/gst/mpegts/gstmpegtssection.c: + * gst-libs/gst/mpegts/gstmpegtssection.h: + * tests/examples/mpegts/ts-parser.c: + mpegts: Add support for SIT sections + Selection Information Tables (EN 300 468) + Part-of: + +2020-12-14 10:50:02 +0100 Edward Hervey + + * docs/libs/mpegts/index.md: + * gst-libs/gst/mpegts/gst-atsc-descriptor.h: + * gst-libs/gst/mpegts/gst-atsc-section.c: + * gst-libs/gst/mpegts/gst-atsc-section.h: + * gst-libs/gst/mpegts/gst-dvb-section.c: + * gst-libs/gst/mpegts/gst-dvb-section.h: + * gst-libs/gst/mpegts/gst-hdmv-section.h: + * gst-libs/gst/mpegts/gst-isdb-descriptor.h: + * gst-libs/gst/mpegts/gst-scte-section.c: + * gst-libs/gst/mpegts/gst-scte-section.h: + * gst-libs/gst/mpegts/gstmpegts-private.h: + * gst-libs/gst/mpegts/gstmpegtsdescriptor.c: + * gst-libs/gst/mpegts/gstmpegtsdescriptor.h: + * gst-libs/gst/mpegts/gstmpegtssection.c: + * gst-libs/gst/mpegts/gstmpegtssection.h: + * gst-libs/gst/mpegts/meson.build: + * gst-libs/gst/mpegts/mpegts.c: + * gst-libs/gst/mpegts/mpegts.h: + mpegts: Update documentation + * Split up into appropriate individual header files + * Document more sections and structures + * Add well-known list of registration id + Part-of: + +2020-12-10 16:29:31 -0300 Thibault Saunier + + * gst-libs/gst/player/gstplayer.c: + * gst-libs/gst/transcoder/gsttranscoder.c: + player/transcoder: Use bus signal watch + Instead of implementing exactly the same thing ourself but making + `GstBus` not know that it is the case. + Since we are *sure* that the bus can't have been access at the point + where we add the watch we are guaranteed that the current thread + maincontext is going to be used. + Part-of: + +2020-12-10 15:37:14 +0800 Lim Siew Hoon + + * gst/inter/gstintervideosrc.c: + intervideosrc: fix negotiation of interlaced caps + In 1.0 the field in caps is called "interlace-mode", not "interlaced". + Fixes #1480 + Part-of: + +2020-12-11 21:45:25 -0500 Arun Raghavan + + * ext/openaptx/meson.build: + * meson_options.txt: + openaptx: Drop lib prefix from option name for consistency + Part-of: + +2020-12-11 08:45:06 +0000 Igor Kovalenko + + * ext/meson.build: + * ext/openaptx/gstopenaptxdec.c: + * ext/openaptx/gstopenaptxdec.h: + * ext/openaptx/gstopenaptxenc.c: + * ext/openaptx/gstopenaptxenc.h: + * ext/openaptx/meson.build: + * ext/openaptx/openaptx-plugin.c: + * ext/openaptx/openaptx-plugin.h: + * meson_options.txt: + openaptx: add aptX and aptX-HD codecs using libopenaptx + Part-of: + +2020-10-19 14:56:43 +0100 Philippe Normand + + * ext/wpe/WPEThreadedView.cpp: + * ext/wpe/gstwpesrc.cpp: + wpe: Emit load-progress messages + The estimated-load-progress value can be used on application side to display a + progress bar for instance. + Part-of: + +2020-12-08 16:46:42 +0200 Vivia Nikolaidou + + * gst/mpegtsmux/gstbasetsmux.c: + basetsmux: Don't send the capsheader if src pad has no caps + That means we're shutting down, so there's no point in the streamheader + being sent + Part-of: + +2020-12-04 17:02:00 +1100 Matthew Waters + + * gst/rtmp2/rtmp/rtmpclient.c: + * gst/rtmp2/rtmp/rtmpconnection.c: + * gst/rtmp2/rtmp/rtmpconnection.h: + rtmp2/connection: pass the parent cancellable down to the connection + Otherwise, when rtpm2src cancels an inflight operation that has a queued + message stored, then the rtmp connection operation is not stopped. + If the cancellation occurs during rtmp connection start up, then + rtpm2src does not have any way of accessing the connection object as it + has not been returned yet. As a result, rtpm2src will cancel, the + connection will still be processing things and the + GMainContext/GMainLoop associated with the outstanding operation will be + destroyed. All outstanding operations and the rtmpconnection object will + therefore be leaked in this case. + Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1425 + Part-of: + +2020-12-07 14:54:28 +0100 Jan Alexander Steffens (heftig) + + * ext/srt/gstsrtobject.c: + srt: Don't take object lock calling gst_srt_object_get_stats + This function takes the sock lock. This can result in a deadlock when + another thread holding the sock lock is trying to take the object lock. + Thread A (Holds object lock, wants sock lock): + #2 gst_srt_object_get_stats at gst-plugins-bad/ext/srt/gstsrtobject.c:1753 + #3 gst_srt_object_get_property_helper at gst-plugins-bad/ext/srt/gstsrtobject.c:409 + #4 gst_srt_sink_get_property at gst-plugins-bad/ext/srt/gstsrtsink.c:95 + #5 g_object_get_property from libgobject-2.0.so.0 + Thread B (Holds sock lock, wants object lock): + #2 gst_element_post_message_default at gstreamer/gst/gstelement.c:2069 + #3 gst_element_post_message at gstreamer/gst/gstelement.c:2123 + #4 gst_element_message_full_with_details at gstreamer/gst/gstelement.c:2259 + #5 gst_element_message_full at gstreamer/gst/gstelement.c:2298 + #6 gst_srt_object_send_headers at gst-plugins-bad/ext/srt/gstsrtobject.c:1407 + #7 gst_srt_object_send_headers at gst-plugins-bad/ext/srt/gstsrtobject.c:1444 + #8 gst_srt_object_write_to_callers at gst-plugins-bad/ext/srt/gstsrtobject.c:1444 + #9 gst_srt_object_write at gst-plugins-bad/ext/srt/gstsrtobject.c:1598 + #10 gst_srt_sink_render at gst-plugins-bad/ext/srt/gstsrtsink.c:179 + Fixes d2d00e07acc2b1ab1ae5a728ef5dc33c9dee7869. + Part-of: + +2020-11-25 16:24:25 +0200 Sebastian Dröge + + * docs/plugins/gst_plugins_cache.json: + * ext/closedcaption/gstccconverter.c: + * ext/closedcaption/gstccconverter.h: + ccconverter: Add property to specify which sections to include in CDP packets + Various software, including ffmpeg's Decklink support, fails parsing CDP + packets that contain anything but CC data in the CDP packets. + Based on this property, timecodes are not written into the CDP packets + even if they're present. + Part-of: + +2020-11-25 14:54:09 +0200 Sebastian Dröge + + * ext/closedcaption/gstccconverter.c: + ccconverter: Refactor code to only retrieve the timecode meta once + Part-of: + +2020-12-06 18:03:47 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvadecoder.h: + va: decode: fix display type + Instead of a pointer to GstVaDisplay it was used a VADisplay type, which in + certain platforms is the same, and the compiler didn't complain. + Part-of: + +2020-07-03 12:25:31 +0200 Marc Leeman + + * docs/plugins/gst_plugins_cache.json: + * gst/rtp/gstrtpsrc.c: + * gst/rtp/gstrtpsrc.h: + rtpmanagerbad: allow setting caps on rtpsrc + rtpsrc tries to do a lookup of the caps based on the encoding-name. For + not so standard encodings, the caps can be set, avoiding the lookup. + Part-of: + +2020-11-22 04:39:57 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videosink.c: + * sys/d3d11/gstd3d11videosinkbin.c: + * sys/d3d11/gstd3d11window.cpp: + * sys/d3d11/gstd3d11window.h: + * sys/d3d11/meson.build: + d3d11videosink: Add a property to support rendering statistics data on window + Add a new property "render-stats" to allow rendering statistics + data on window for debugging and/or development purpose. + Text rendering will be accelerated by GPU since this implementation + uses Direct2D/DirectWrite API and Direct3D inter-op for minimal overhead. + Specifically, text data will be rendered on swapchain backbuffer + directly without any copy/allocation of extra texture. + Part-of: + +2020-12-04 03:40:17 +0900 Seungha Yang + + * sys/d3d11/gstd3d11colorconvert.c: + * sys/d3d11/gstd3d11window.cpp: + d3d11: Protect ID3D11VideoContext with lock + Likewise d3d11 immediate context (i.e., ID3D11DeviceContext), + ID3D11VideoContext API is not thread safe. It must be protected therefore. + Part-of: + +2020-12-03 17:13:15 +0100 Mathieu Duponchelle + + * docs/meson.build: + docs: don't exit the subdir when optional deps aren't found + Part-of: + +2020-12-02 11:29:08 +0100 Edward Hervey + + * docs/plugins/gst_plugins_cache.json: + * ext/opencv/gstretinex.cpp: + * ext/opencv/gstretinex.h: + opencv: Expose retinex parameters + Makes the plugin a tad more useful :) + Part-of: + +2020-10-12 14:12:07 +0300 Marius Vlad + + * gst-libs/gst/wayland/meson.build: + gst-libs/gst/wayland: Install "unstable" wayland header + Context creation and retrieval is required, the symbols are exported + with the header missing. Users most likely define GST_USE_UNSTABLE_API + so they're aware of the implications of using a header that might change + between releases. + Signed-off-by: Marius Vlad + Part-of: + +2020-12-03 14:12:06 +0100 Edward Hervey + + * ext/hls/gsthlsdemux.c: + hlsdemux: Use actual object for logging + i.e. the pad of the stream + Part-of: + +2020-12-03 06:55:00 -0500 Arun Raghavan + + * ext/curl/gstcurlbasesink.c: + * ext/curl/gstcurlfilesink.c: + * ext/curl/gstcurlftpsink.c: + * ext/curl/gstcurlhttpsink.c: + * ext/curl/gstcurlhttpsrc.c: + * ext/curl/gstcurlsmtpsink.c: + * ext/curl/gstcurlsshsink.c: + * ext/curl/gstcurltlssink.c: + curl: Remove incorrect GST_DEBUG_OBJECT() calls + klass is not a GstObject, and these debugs print should likely not be + around anyway. + Part-of: + +2020-11-25 17:59:54 +0100 Edward Hervey + + * sys/nvcodec/gstcudanvrtc.c: + cuda: Fix lowest targetted architecture for CUDA >= 11.0 + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1469 + Part-of: + +2020-11-05 13:48:27 +0200 Edward Hervey + + * gst/mpegtsdemux/mpegtspacketizer.c: + * gst/mpegtsdemux/mpegtspacketizer.h: + * gst/mpegtsdemux/mpegtsparse.c: + tsparse: Forward incoming timestamps + Ensure we properly forward the upstream PTS/DTS on the regular and program + source pads. All packets being processed will carry over the latest PTS/DTS (as + a reconstructed GstBuffer). + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1419 + And properly forward PTS/DTS for program pads (which wasn't the case before) + Original patch by Vivia Nikolaidou + Part-of: + +2020-12-02 09:39:45 +0200 Sebastian Dröge + + * gst-libs/gst/adaptivedemux/gstadaptivedemux.c: + adaptivedemux: Don't log with non-GObject objects + Instead of using the streams, log with the pad of the streams. + https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1457 + Part-of: + +2020-11-20 11:29:46 -0300 Thibault Saunier + + * gst/transcode/gsttranscodebin.c: + * tools/gst-transcoder.c: + transcodebin: Minor error message enhancement + +2020-11-19 22:56:46 -0300 Thibault Saunier + + * gst/transcode/gsttranscodebin.c: + transcodebin: Unlock while setting decodebin caps + Otherwise it will deadlock recursing up to notify parent object property changes + +2020-11-19 18:31:34 -0300 Thibault Saunier + + * gst/transcode/gsttranscodebin.c: + transcodebin: Avoid plugin converter if filter handles ANY caps + For example identity or clocksync or this kind of elements can be + used with any data flow and we should not enforce decoding to row in + that case. + +2020-11-19 18:39:33 -0300 Thibault Saunier + + * gst/transcode/gsttranscodebin.c: + transcodebin: Add filter as soon as it is set + Instead of waiting so that we can simply use a clocksync element as + filter, otherwise we won't know the pipeline is live as it won't + return NO_PREROLL as one would expect in that case. + Adding it right away shouldn't create any issue, both ways are fine. + +2020-11-19 18:29:15 -0300 Thibault Saunier + + * docs/plugins/gst_plugins_cache.json: + * gst/transcode/gsturitranscodebin.c: + uritranscodebin: Add `setup-source` and `element-setup` signals + The same way as playbinX does it as it is often quite useful + +2020-11-19 17:55:10 -0300 Thibault Saunier + + * docs/plugins/gst_plugins_cache.json: + * gst/transcode/gsttranscodebin.c: + * gst/transcode/gsturitranscodebin.c: + transcode: Port to encodebin2 + This allows supporting muxing sinks like hlssink2 or splitmux + +2020-11-19 17:55:10 -0300 Thibault Saunier + + * gst-libs/gst/transcoder/gsttranscoder.c: + transcoder: Handle the case where several errors are posted + There were cases where the loop was already destroyed when we were + receiving the following message. + +2020-11-19 17:54:28 -0300 Thibault Saunier + + * gst-libs/gst/transcoder/gsttranscoder.c: + transcoder: Minor refactoring to output better debug logs + +2020-11-19 17:51:56 -0300 Thibault Saunier + + * docs/plugins/gst_plugins_cache.json: + * ext/hls/gsthlssink2.c: + hlssink2: Mark as Muxer + The way it is usable by encodebin2. This is what splitmux does already. + +2020-11-30 17:12:14 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvadecoder.c: + va: decoder: Picture dups only holds GstBuffer + Also removes the warning log message at destroying buffers when picture free() + Part-of: + +2020-11-30 15:01:01 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvadecoder.c: + * sys/va/gstvadecoder.h: + * sys/va/gstvah264dec.c: + * sys/va/gstvah265dec.c: + * sys/va/gstvavp8dec.c: + * sys/va/gstvavp9dec.c: + va: Remove gst_va_decoder_destroy_buffers() + Since GstVaDecodePicture is destroyed completely with its free() function and + it's used as destroy notify by codecs picture, there's no need to call + gst_va_decoder_destroy_buffers() externally, since the codecs base classes + destroy the codec picture when it's required. + Part-of: + +2020-11-26 14:04:31 +0800 He Junyan + + * sys/va/gstvadecoder.c: + * sys/va/gstvadecoder.h: + * sys/va/gstvah264dec.c: + * sys/va/gstvah265dec.c: + * sys/va/gstvavp8dec.c: + * sys/va/gstvavp9dec.c: + va: Destroy picture unreleased buffers when finalize. + The current way of GstVaDecodePicture's finalize will leak some + resource such as parameter buffers and slice data. + The current way deliberately leaves these resource releasing logic + to va decoder related function and trigger a warning if we free the + GstVaDecodePicture without releasing these resources. + But in practice, sometimes, you do not have the chance to release + these resource before picture is freed. For example, H264/Mpeg2 + support multi slice NALs/Packets for one frame. It is possible that + we already succeed to parse and generate the first several slices + data by _decode_slice(), but then we get a wrong slice NAL/packet + and fail to parse it. We decide to discard the whole frame in the + decoder's base class, it just free the current picture and does not + trigger sub class's function again. In this kind of cases, we do + not have the chance to cleanup the resource, and the resource will + be leaked. + Part-of: + +2020-11-21 19:00:02 -0300 Thibault Saunier + + * ext/qroverlay/gstbaseqroverlay.c: + * ext/qroverlay/gstbaseqroverlay.h: + * ext/qroverlay/gstdebugqroverlay.c: + * ext/qroverlay/gstqroverlay.c: + qroverlay: Reuse the same OverlayComposition object when possible + Part-of: + +2020-11-20 11:28:25 -0300 Thibault Saunier + + * ext/qroverlay/gstbaseqroverlay.c: + * ext/qroverlay/gstbaseqroverlay.h: + * ext/qroverlay/gstdebugqroverlay.c: + * ext/qroverlay/gstqroverlay.c: + qroverlay: Rework basing it on overlaycomposition + The base class is now a bin which wraps the `overlaycomposition` + element and implements the `draw` signal. + This way we support all the video formats the GstVideoOverlayComposition + API supports and the blending code can be reused. It is also possible + to have the blending happen in the sinks now. + Part-of: + +2020-11-26 05:55:29 +0900 Seungha Yang + + * sys/d3d11/gstd3d11h264dec.c: + d3d11h264dec: Reconfigure decoder object on DPB size change + Even if resolution and/or bitdepth is not updated, required + DPB size can be changed per SPS update and it could be even + larger than previously configured size of DPB. If so, we need + to reconfigure DPB d3d11 texture pool again. + Part-of: + +2020-11-25 17:52:42 +0100 Marijn Suijten + + * gst/audiobuffersplit/gstaudiobuffersplit.c: + * gst/inter/gstinteraudiosrc.c: + audio: 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-05 17:14:22 +0000 Philippe Normand + + * gst-libs/gst/player/gstplayer.c: + player: Fix get_current_subtitle_track annotation + As the info returned is a new object, the annotation should be transfer-full, + similarly to the get_current_{audio,video}_track() implementations. + Part-of: + +2020-11-23 20:44:27 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvaallocator.c: + va: allocator: add a memory pool object helper + Since both allocators use a memory pool, with its mutex and cond, this patch + refactors it into a single internal object, implementing a generic GstMemory + pool. + Part-of: + +2020-11-17 14:53:05 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvaallocator.c: + * sys/va/gstvaallocator.h: + * sys/va/gstvapool.c: + va: pool, allocator: honor GST_BUFFER_POOL_ACQUIRE_FLAG_DONTWAIT + In order to honor GST_BUFFER_POOL_ACQUIRE_FLAG_DONTWAIT in VA pool, allocators' + wait_for_memory() has to be decoupled from their prepare_buffer() so it could be + called in pools' acquire_buffer() if the flag is not set. + wait_for_memory() functions are blocking so the received memories are assigned + to the fist requested buffer, if multithreaded calls. For this a new mutex were + added. + Part-of: + +2020-11-17 13:18:37 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvaallocator.c: + * sys/va/gstvapool.c: + va: allocator: broadcast when flushing + This patch handles when the bufferpool request a new buffer while + flushing. + Also fixes the usage of g_cond_wait(), which demands to be used + inside a loop to avoid spurious wakeups. + Part-of: + +2020-11-17 13:17:03 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvaallocator.c: + va: allocator: free allocator when a mem is held + An application, using for example appsink, can hold buffers from any + va allocator after setting the pipeline to NULL. We need to destroy + the allocator when that memory is unrefed. + This patch juggles a bit with the allocator reference count in + memories in order to achieve this: + 1. When memory is created no alloc ref is modified + 2. When memory is released, alloc ref is decreased + 3. When memory is reassiged to a buffer, alloc ref is increased + 4. When memory is flushed, alloc ref is increased becase it is going + to be decreased in gst_memory_unref() + Also this patch moves the deallocation of member variables to + finalize() rather than dispose() + Part-of: + +2020-11-23 17:01:52 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvaallocator.c: + va: allocator: dmabuf: initialize cond + Part-of: + +2020-11-20 17:32:44 -0500 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/gstwebrtcstats.c: + * ext/webrtc/transportstream.c: + * ext/webrtc/transportstream.h: + webrtc: Make ssrc map into separate data structures + They now contain a weak reference and that could be freed later + causing strange crashes as GWeakRef are not movable. + Part-of: + +2020-10-15 21:23:08 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcstats.c: + webrtcstats: Get the remote-inbound stats from the right RTPSource + This also means that we need to get the clock-rate from the codec instead + of from the RTPSource, as the remote one doesn't include a clock rate. + Part-of: + +2020-10-15 19:36:45 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/gstwebrtcbin.h: + * ext/webrtc/gstwebrtcstats.c: + * ext/webrtc/gstwebrtcstats.h: + webrtcbin: Implement getting stats for a specific pad + Part-of: + +2020-10-10 18:21:19 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcstats.c: + webrtcstats: Also return the raw rtpsource stats for more information + Part-of: + +2020-10-09 20:59:58 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcstats.c: + webrtcstats: Avoid copy of GstStructure + Instead transfer the ownership to the new structure + Part-of: + +2020-10-09 20:45:10 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcstats.c: + webrtcstats: Remove receiver side when sending + Those are just invalid and just reflect what we sent. We'd need to parse the + RTCP XR packets from the other side to know more about those. + Part-of: + +2020-10-09 20:27:40 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcstats.c: + webrtcstats: Extract statistics from the rtpjitterbuffer + And expose them as standardised webrtc statistics + Part-of: + +2020-10-09 18:45:57 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/transportstream.c: + * ext/webrtc/transportstream.h: + webrtcbin: Store the rtpjitterbuffer instances to extract stats from them + Store them as web refs to avoid having to worry about freeing later and because + the new-jitterbuffer is on a different thread + Part-of: + +2020-10-09 19:59:18 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcstats.c: + webrtcstats: Document all RTP missing fields according to the latest spec + Just document all the missing fields and document which ones will never + be implemented because they depend on the codec or depayloader + Part-of: + +2020-10-09 19:38:15 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcstats.c: + webrtcstats: RTCP computed RTT is only available at sender + The receiver doesn't have the information to compute it. + Part-of: + +2020-10-08 17:11:30 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcstats.c: + webrtcstats: Remove redundant lines + Part-of: + +2020-11-04 17:06:02 -0500 Olivier Crête + + * gst-libs/gst/webrtc/rtpreceiver.c: + * gst-libs/gst/webrtc/rtpreceiver.h: + * gst-libs/gst/webrtc/rtpsender.c: + * gst-libs/gst/webrtc/rtpsender.h: + webrtc: Also remove rtcp_transport from the structure + Part-of: + +2020-11-02 19:55:46 -0500 Olivier Crête + + * gst-libs/gst/webrtc/rtpreceiver.c: + * gst-libs/gst/webrtc/rtpreceiver.h: + * gst-libs/gst/webrtc/rtpsender.c: + * gst-libs/gst/webrtc/rtpsender.h: + webrtc: Remove APIs to set transport on sender/receiver + They're not not used ever. + Part-of: + +2020-11-02 19:49:55 -0500 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/nicetransport.c: + * ext/webrtc/transportreceivebin.c: + * ext/webrtc/transportsendbin.c: + * ext/webrtc/transportsendbin.h: + * ext/webrtc/transportstream.c: + * ext/webrtc/transportstream.h: + * ext/webrtc/webrtctransceiver.c: + * gst-libs/gst/webrtc/dtlstransport.c: + * gst-libs/gst/webrtc/dtlstransport.h: + * gst-libs/gst/webrtc/rtpreceiver.c: + * gst-libs/gst/webrtc/rtpreceiver.h: + * gst-libs/gst/webrtc/rtpsender.c: + * gst-libs/gst/webrtc/rtpsender.h: + webrtc: Remove non rtcp-mux code + RTCP mux is now always required by the WebRTC spec + Part-of: + +2020-11-20 15:01:03 +0000 Julian Bouzas + + * sys/nvcodec/gstnvdec.c: + nvcodec: Assume 25fps if framerate is invalid when calculating latency + Part-of: + +2020-11-20 22:26:14 +0100 Víctor Manuel Jáquez Leal + + * gst-libs/gst/codecs/gsth264decoder.c: + codecs: h264decoder: fix memory leak + gst_h264_dbp_get_picture_all() returns a full transfer of the GArray, which + needs be unrefed. But it is not unrefed in + gst_h264_decoder_find_first_field_picture() leaking it. + Part-of: + +2020-11-20 16:07:36 +0100 Edward Hervey + + * gst-libs/gst/mpegts/gst-dvb-descriptor.c: + * gst-libs/gst/mpegts/gst-dvb-descriptor.h: + * gst-libs/gst/mpegts/gstmpegtsdescriptor.c: + * gst-libs/gst/mpegts/gstmpegtsdescriptor.h: + mpegts: Documentation fixes + gtk-doc was complaining :) + Part-of: + +2020-11-20 13:24:24 +0000 Tim-Philipp Müller + + * ext/qroverlay/gstdebugqroverlay.c: + * ext/qroverlay/gstdebugqroverlay.h: + * ext/qroverlay/gstqroverlay.c: + * ext/qroverlay/gstqroverlay.h: + qroverlay: unset executable flag on source files + Part-of: + +2020-11-20 13:22:48 +0000 Tim-Philipp Müller + + * ext/qroverlay/meson.build: + qroverlay: fix auto detection of json-glib for plugin + Only want to check for json-glib when libqrencode was found, + but also it shouldn't be required but depend on the option. + Fixes #1465 + Part-of: + +2020-11-19 21:15:25 +0900 Seungha Yang + + * sys/d3d11/gstd3d11colorconverter.c: + * sys/d3d11/gstd3d11device.c: + * sys/d3d11/gstd3d11format.c: + * sys/d3d11/gstd3d11format.h: + * sys/d3d11/gstd3d11memory.c: + * tests/check/elements/d3d11colorconvert.c: + d3d11: Add support for packed 4:2:2 and 4:4:4 10bits formats + Add support for Y210 and Y410 formats which are commonly used format + for en/decoders on Windows. Note that those formats cannot be used for + render target (output) of shader. + Part-of: + +2020-10-02 18:47:16 -0400 Olivier Crête + + * docs/plugins/gst_plugins_cache.json: + * ext/openh264/gstopenh264dec.cpp: + openh264dec: Accept constrained-high and progressive-high profiles + They're just subsets of the high profile. + Part-of: + +2020-10-02 18:47:06 -0400 Olivier Crête + + * sys/d3d11/gstd3d11h264dec.c: + d3d11h264dec: Accept constrained-high and progressive-high profiles + They're just subsets of the high profile. + Part-of: + +2020-10-02 18:46:56 -0400 Olivier Crête + + * sys/msdk/gstmsdkh264dec.c: + msdkh264dec: Accept constrained-high and progressive-high profiles + They're just subsets of the high profile. + Part-of: + +2020-09-22 15:42:37 -0400 Olivier Crête + + * docs/plugins/gst_plugins_cache.json: + * sys/nvcodec/gstnvdecoder.c: + * sys/nvcodec/gstnvh264dec.c: + nvdec: Accept progressive-high and contrained-high profiles + They're subsets of the high profiles with no interlacing and + no B-frames for constrained + Part-of: + +2020-09-28 13:33:00 +0800 He Junyan + + * gst-libs/gst/codecparsers/gstav1parser.c: + * gst-libs/gst/codecparsers/gstav1parser.h: + codecparsers: av1: add the set_operating_point() API. + The av1 can support multi layers when scalability is enabled. We + need an API to set the operating point and filter the OBUs just + belonging to some layers(the layers are specified by the operating + point). + Part-of: + +2020-10-09 16:13:28 +0800 He Junyan + + * gst-libs/gst/codecparsers/gstav1parser.c: + * gst-libs/gst/codecparsers/gstav1parser.h: + codecparsers: av1: Add an API to reset the annex_b state only. + In practice, we encounter streams that have one or more temporal units + error. When that kind of error temporal units is in annex b format, the + whole temporal unit should be discarded. + But the temporal units before it are correct and can be used. More + important, because of the error temporal unit, the parser is in a wrong + state and all later temporal unit are also parsed uncorrectly. + We need to add this API to reset the annex_b state only when we meet + some temporal unit error. + Part-of: + +2020-10-09 16:01:35 +0800 He Junyan + + * gst-libs/gst/codecparsers/gstav1parser.c: + codecparsers: av1: clean the seen_frame_header in parse_tile_group(). + The current seen_frame_header is not cleaned correctly. According + to the spec, it should be cleaned when tiles are parsed completely. + Also delete a verbose seen_frame_header init in reset_state(). + Part-of: + +2020-09-29 13:15:37 +0800 He Junyan + + * gst-libs/gst/codecparsers/gstav1parser.c: + codecparsers: av1: fix a typo in parse_metadata_scalability + Part-of: + +2020-09-28 18:22:08 +0800 He Junyan + + * gst-libs/gst/codecparsers/gstav1parser.c: + codecparsers: av1: Do not assert in identify_one_obu when check annex b size. + Some buggy stream just writes the wrong temporal unit and frame size in + the stream. We should return failure rather than assert to abort. + Part-of: + +2020-09-22 19:16:30 +0800 He Junyan + + * gst-libs/gst/codecparsers/gstav1parser.h: + codecparsers: av1: Add unknow AV1 profile define for saint check. + Part-of: + +2020-07-24 14:54:37 +0800 He Junyan + + * gst-libs/gst/codecparsers/gstav1parser.c: + * gst-libs/gst/codecparsers/gstav1parser.h: + codecparsers: av1: Improve the parse_tile_info. + 1. store more tile info when parse tile group. + The column, row, tile offset and tile data size are all useful for + decoder process, especially for HW kind decoder such as VAAPI dec. + Also fix the tile group skip size for each tile data. + 2. No min_inner_tile_width requirement in newest spec. + 3. Calculate the sbs of each tile for both uniform tile and non-uniformi + tile. + Part-of: + +2020-07-28 17:25:44 +0800 He Junyan + + * gst-libs/gst/codecparsers/gstav1parser.c: + codecparsers: av1: Fix a tile info read typo in frame header. + Part-of: + +2020-08-25 19:44:48 +0800 He Junyan + + * gst-libs/gst/codecparsers/gstav1parser.c: + codecparsers: av1: Fix a typo when get value of segmentation params. + Part-of: + +2020-08-25 16:33:26 +0800 He Junyan + + * gst-libs/gst/codecparsers/gstav1parser.c: + * gst-libs/gst/codecparsers/gstav1parser.h: + codecparsers: av1: add valid check for global motion params. + The global motion params and its matrix values need to be verified + before we use them. If it is invalid, we should notify the decoder + that it should not be used. + Part-of: + +2020-08-25 15:25:56 +0800 He Junyan + + * gst-libs/gst/codecparsers/gstav1parser.c: + codecparsers: av1: uint8 range is not enough for av1_bitstreamfn_ns + Part-of: + +2020-08-25 15:25:06 +0800 He Junyan + + * gst-libs/gst/codecparsers/gstav1parser.h: + codecparsers: av1: delete duplicated GST_AV1_GM_ABS_ALPHA_BITS define. + Part-of: + +2020-08-27 21:33:14 +0800 He Junyan + + * tests/check/libs/av1parser.c: + test: av1parser: update the test result because of bug fixing. + Part-of: + +2020-08-24 15:29:56 +0800 He Junyan + + * gst-libs/gst/codecparsers/gstav1parser.c: + * gst-libs/gst/codecparsers/gstav1parser.h: + codecparsers: av1: Improve the loop filter setting. + 1. loop_filter_ref_deltas should be int because it needs to compare + with 0. + 2. Move the loop filter init logic to setup_past_independence() and + load_previous(), which make it more precise with the spec. + Part-of: + +2020-08-14 14:40:49 +0800 He Junyan + + * gst-libs/gst/codecparsers/gstav1parser.c: + codecparsers: av1: Fix a error report for metadata obu. + The metadata OBUs, for example, ITUT_T35 has an undefined payload such + as itu_t_t35_payload_bytes field in AV1 spec, which may cause the failure + of parsing the trailings bits. We can give a warning and ignore this kind + of errors. + Part-of: + +2020-07-28 15:06:04 +0800 He Junyan + + * gst-libs/gst/codecparsers/gstav1parser.c: + codecparsers: av1: Fix a level index bug in sequence. + Part-of: + +2020-07-24 12:49:10 +0800 He Junyan + + * gst-libs/gst/codecparsers/gstav1parser.c: + * gst-libs/gst/codecparsers/gstav1parser.h: + codecparsers: av1: all ref idx should be gint8. + All the ref index need to compare with 0 in reference index decision + algorithm. We also need to init them to -1. + Part-of: + +2020-11-14 18:48:05 +0900 Seungha Yang + + * sys/va/gstvah264dec.c: + va: h264dec: Add support for interlaced stream + Part-of: + +2020-11-16 16:29:04 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvah264dec.c: + va: h264dec: implement gst_va_h264_dec_new_field_picture() + Part-of: + +2020-11-14 20:46:30 +0900 Seungha Yang + + * sys/va/gstvah264dec.c: + va: h264dec: Fix picture_height_in_mbs_minus1 + Fix for interlaced stream (when sps->frame_mbs_only_flag is equal to one) + Part-of: + +2020-11-16 16:29:46 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvah264dec.c: + va: h264dec: admit baseline if stream obeys A.2 + Part-of: + +2020-11-15 00:20:54 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth264decoder.c: + * gst-libs/gst/codecs/gsth264decoder.h: + codecs: h264decoder: Add support for field ref picture list modification + Part-of: + +2020-11-17 18:39:56 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth264decoder.c: + * gst-libs/gst/codecs/gsth264picture.c: + * gst-libs/gst/codecs/gsth264picture.h: + * sys/va/gstvah264dec.c: + codecs: h264decoder: Add more option arguments for reference picture getter + In case that "pic_order_cnt_type" is equal to zero, ref picture + list for B slice should not include non-existing picture + as per spec 8.2.4.2.3. And, the second field is not needed + for the process of frame picture reference list construction + since it needs to be frame unit, not field picture in that case. + Part-of: + +2020-11-17 18:59:35 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth264decoder.c: + * gst-libs/gst/codecs/gsth264picture.c: + codecs: h264decoder: Split gap picture as well if needed + field pair pictures might be required for reference list + depending on context. + Part-of: + +2020-11-05 18:09:06 -0500 Nicolas Dufresne + + * gst-libs/gst/codecs/gsth264decoder.c: + h264dec: Fix POC calculation for type 0 + This is mostly for future use as it only fixes the caclulation for interlaced + cases, the case of frame seemed correct already. + Part-of: + +2020-11-17 03:11:46 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth264decoder.c: + codecs: h264decoder: Don't try to construct RefPicList0 and RefPicList1 if not required + We were trying to construct reference picture list even for + I slice before this commit. Reference list is required only for + P, SP and B slices. Also, if all existing reference pictures + are gap pictures, we don't need to construct lists. + Part-of: + +2020-11-03 01:59:46 +0800 He Junyan + + * sys/va/gstvapool.c: + va: pool: Check the force_videometa for all memory types. + force_videometa should mean that the buffer must use video meta to + map correctly. When the stride or the offset of the alloc_info is + different from the src caps, the downstream must use video meta. + So this flag should not link with the RAW caps only. All kinds of + caps(memory:VAMemory, memory:DMABuf) should have this flag. + Part-of: + +2020-11-17 00:18:22 +0800 He Junyan + + * sys/va/gstvabasedec.c: + * sys/va/gstvabasedec.h: + va: basedec: Improve the decide_allocation(). + In decide_allocation(), we now just use the other_pool for frames + copy when the src caps is raw. This can make the logic a little + clear. There is no need for us to check the alignment and video + meta again. + Part-of: + +2020-11-16 23:53:39 +0800 He Junyan + + * sys/va/gstvabasedec.c: + va: basedec: fallback to system memory if downstream caps is any. + When the downstream element reports an ANY caps, and it also fails to + support VideoMeta, we should fallback to the system memory. + Note: the basetransform kind elements never return valid allocation + query before set_caps(). So, if a basetransform return an ANY sink + caps, we always fallback to system memory for it. + Part-of: + +2020-11-16 04:38:28 +0900 Seungha Yang + + * sys/va/gstvah264dec.c: + vah264dec: Fix for long term reference picture signalling + Allocate a GArray which is used to fill + VAPictureParameterBufferH264.ReferenceFrames (called per frame), + instead of alloc/free per frame. + Also this commit is to fix the condition where long-term reference + picture is needed for VAPictureParameterBufferH264.ReferenceFrames + entry. + Part-of: + +2020-11-15 03:41:27 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth264picture.c: + codecs: h264decoder: Fix MMCO type 1 for interlaced stream + If field_pic_flag of current picture is equal to zero, + both field of reference field pair should be marked as + "unused for reference" + Part-of: + +2020-11-15 02:59:24 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth264picture.c: + codecs: h264decoder: Fix MMCO type 3 for interlaced stream + Depending on short-ref picture corresponding to picNumX value, + there's a condition that only one field should be updated to + be non-reference picture. + Part-of: + +2020-11-15 00:55:09 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth264decoder.c: + codecs: h264decoder: Split frame picture into field pictures if needed + In case of interlaced stream, frame pictures need to be splitted + into field for reference marking process. + Part-of: + +2020-11-16 00:27:28 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth264decoder.c: + * gst-libs/gst/codecs/gsth264picture.c: + * gst-libs/gst/codecs/gsth264picture.h: + codecs: h264decoder: Add util macro for frame/field picture identification + Add a macro to check whether given GstH264Picture is for frame or field + decoding. + Part-of: + +2020-11-16 20:44:06 +0900 Seungha Yang + + * sys/d3d11/gstd3d11window.cpp: + d3d11window: Prefer full color range for display target colorspace + We don't need to preserve input color range for transformed target + color space. Also some GPUs doesn't seem to be happy with 16-235 + color range for RGB color space. + Also, since our default display target color space is + DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P709, choosing full color range + would make more sense. + Part-of: + +2020-08-15 02:02:44 +1000 Jan Schmidt + + * ext/wpe/WPEThreadedView.cpp: + * ext/wpe/WPEThreadedView.h: + wpe: Don't crash when running on X11. + Don't assume the available EGL display is a wayland display - + instead, check the the GStreamer GL context is EGL, and then + use gst_gl_display_egl_from_gl_display to create a + GstGLDisplayEGL from that, which also adds refcounting + around the underlying EGLDisplay. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1385 + Part-of: + +2020-11-13 20:25:36 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvaallocator.c: + va: allocator: dmabuf: log unknown surface format + It is possible that surface format is not assigned, keeping its default + GStreamer value: unknown, but gst_video_format_to_string() doesn't print + unknown format, so this patch does it manually. + Part-of: + +2020-11-13 20:20:47 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvaallocator.c: + va: allocator: dmabuf: destroy VASurface if no pooled buffer + When gst_va_dmabuf_allocator_setup_buffer_full() receives info (not NULL) it is + supposed that this buffer is not part of the allocator pool, so it has to be + de-allocated as soon it is freed. + This patch sets the destroy notify of the assigned GstVaBufferSurface if info is + not NULL. + Part-of: + +2020-11-14 03:20:19 +0900 Seungha Yang + + * sys/va/gstvah264dec.c: + vah264dec: Allow missing reference picture + baseclass might provide reference picture list with null picture. + Ensure picture before filling picture information. + Part-of: + +2020-11-14 03:16:07 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth264decoder.c: + codecs: h264decoder: Don't give up to decode due to missing reference picture + Missing reference picture is very common thing for broken/malformed stream. + Decoder should be able to keep decoding if it's not a very critical error. + Part-of: + +2020-11-13 17:50:03 +0100 Edward Hervey + + * gst/mpegtsdemux/mpegtspacketizer.c: + mpegtsdemux: Fix off by one error + Turns out timestamps of zero are valid :) Fixes issues with streams where the + PTS/DTS would be equal to the first PCR. + Part-of: + +2020-11-06 02:45:21 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.c: + * sys/d3d11/gstd3d11decoder.h: + * sys/d3d11/gstd3d11h264dec.c: + * sys/d3d11/gstd3d11h265dec.c: + * sys/d3d11/gstd3d11vp8dec.c: + * sys/d3d11/gstd3d11vp9dec.c: + d3d11h264dec: Add support for interlaced stream + Add support for interlaced stream. + Part-of: + +2020-11-10 01:28:03 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth264decoder.c: + * gst-libs/gst/codecs/gsth264picture.c: + * gst-libs/gst/codecs/gsth264picture.h: + codecs: h264decoder: Add support for interlaced stream + Initial support for interlaced stream. Subclass should implement + new_field_picture() vfunc. Otherwise, baseclass will assume that + subclass doesn't support interlaced stream. + Restrictions: + * Reference picture modification process for interlaced stream + is not implemented yet + * PAFF (Picture Adaptive Frame Field) is not properly implemented. + * Field display ordering (e.g., top-field-first) decision should + be enhanced via picture timing SEI parsing + * Gap in field picture should be handled + Part-of: + +2020-11-05 04:16:54 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth264decoder.c: + * gst-libs/gst/codecs/gsth264picture.c: + * gst-libs/gst/codecs/gsth264picture.h: + codecs: h264decoder: Rename DPB methods + Clarify wheter it's for picture(field) or frame in order to + support interlaced stream, because DPB size is frame unit, not picture + in case of interlaced stream. + Part-of: + +2020-11-05 03:47:35 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth264decoder.c: + * gst-libs/gst/codecs/gsth264decoder.h: + codecs: h264decoder: Remove interlaced stream related constraints + ... and add new_field_picture() vfunc so that ensure interlaced + decoding support by subclass. + The method will be used later with interlaced stream support. + Part-of: + +2020-11-12 23:49:01 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth264decoder.h: + codecs: h264decoder: Move to inline GstH264DecoderClass documentation + Don't duplicate documentation for class vfunc. Hotdoc doesn't seem + to be happy with duplicated documentation. + Part-of: + +2020-11-06 01:45:36 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth264decoder.c: + * gst-libs/gst/codecs/gsth264picture.c: + * gst-libs/gst/codecs/gsth264picture.h: + * sys/d3d11/gstd3d11h264dec.c: + * sys/nvcodec/gstnvh264dec.c: + * sys/v4l2codecs/gstv4l2codech264dec.c: + * sys/va/gstvah264dec.c: + codecs: h264decoder: Store reference picture type using enum value + Managing reference picture type by using two variables + (ref and long_term) seems to be redundant and that can be + represented by using a single enum value. + This is to sync this implementation with gstreamer-vaapi so that + make comparison between this and gstreamer-vaapi easier and also + in order to minimize the change required for subclass to be able + to support interlaced. + Part-of: + +2020-11-11 01:56:52 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth264picture.c: + codecs: h264decoder: Minor documentation fix + Part-of: + +2020-11-13 23:18:20 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth264decoder.c: + codecs: h264decoder: Remove DPB size related spammy debug message + It's not informative at all if SPS wasn't updated. Also we are printing + DPB size related debug message in another place already. + Part-of: + +2020-11-12 22:27:08 +0100 Mathieu Duponchelle + + * gst/videoparsers/gsth264parse.c: + h264parse: try harder to update timecode + NumClockTS is the maximum number of timecodes the pic_timing SEI + can carry, but it is perfectly OK for it to carry fewer, and have + one of the clock_timestamp_flags set to 0. + Part-of: + +2020-11-12 22:32:00 +0100 Mathieu Duponchelle + + * gst/videoparsers/gsth264parse.c: + h264parse: fix installing of update-timecode property + Simply fixes a typo that did not have any adverse effect, + and avoid hardcoding initializer + Part-of: + +2020-11-12 19:43:22 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth264decoder.c: + codecs: h264decoder: Don't fill gap picture if it's not allowed + We should fill gap picture only if sps->gaps_in_frame_num_value_allowed_flag + is set. + Part-of: + +2020-04-16 10:06:29 -0400 Aaron Boxer + + * ext/openjpeg/gstopenjpegenc.c: + openjpegenc: store stripe offset when encoding image + The decoder can simply read this offset after decoding + to know where to blit the stripe to the full frame + Part-of: + +2020-03-24 09:15:30 -0400 Aaron Boxer + + * ext/openjpeg/gstopenjpegenc.c: + * ext/openjpeg/meson.build: + openjpegenc: take subsampling into account when calculating stripe height + We calculate minimum of (stripe height * sub sampling) across all components + to ensure that all component dimensions are consistent with sub-sampling. + The last stripe for each component is simply the remaining height. + limit wavelet resolutions for "thin" stripes + Part-of: + +2020-03-12 13:41:40 +0100 Stéphane Cerveau + + * ext/openjpeg/gstopenjpegenc.c: + openjpegenc: fix memory leak from mstream + Part-of: + +2020-01-13 14:00:38 -0500 Aaron Boxer + + * ext/openjpeg/gstopenjpegenc.c: + openjpegenc: fail negotation in handle_frame if alignment mismatch + If encoder is in stripe mode, then downstream must also support stripe + Part-of: + +2020-11-12 21:46:59 +0900 Seungha Yang + + * sys/nvcodec/gstnvdecoder.c: + * sys/nvcodec/gstnvdecoder.h: + * sys/nvcodec/gstnvh264dec.c: + * sys/nvcodec/gstnvh265dec.c: + * sys/nvcodec/gstnvvp8dec.c: + * sys/nvcodec/gstnvvp9dec.c: + nvcodec: Fix various typo + Not sure where the DECOCER came from + Part-of: + +2020-11-12 13:33:26 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvabasedec.c: + * sys/va/gstvapool.c: + va: comments to explain code + There are a couple part where code seems, at least to me, a bit oscure or + confusing. So let's better add an explanation. + Part-of: + +2020-11-10 14:48:28 +0100 Edward Hervey + + * gst-libs/gst/adaptivedemux/gstadaptivedemux.c: + adaptivedemux: Don't calculate bitrate for header/index fragments + They are generally substantially smaller than regular fragments, and therefore + we end up pushing totally wrong bitrates downstream. + Fixes erratic buffering issues with DASH introduced by + 66f5e874352016e29f555e3ce693b23474e476db + Part-of: + +2020-11-09 11:41:10 +0100 Edward Hervey + + * ext/dash/gstdashdemux.c: + * gst-libs/gst/adaptivedemux/gstadaptivedemux.c: + * gst-libs/gst/adaptivedemux/gstadaptivedemux.h: + adaptivedemux: Store QoS values on the element + Storing it per-stream requires taking the manifest lock which can apparenly be + hold for aeons. And since the QoS event comes from the video rendering thread + we *really* do not want to do that. + Storing it as-is in the element is fine, the important part is knowing the + earliest time downstream. + Part-of: + +2020-11-10 14:48:28 +0100 Edward Hervey + + * gst-libs/gst/adaptivedemux/gstadaptivedemux.c: + adaptivedemux: Don't calculate bitrate for header/index fragments + They are generally substantially smaller than regular fragments, and therefore + we end up pushing totally wrong bitrates downstream. + Fixes erratic buffering issues with DASH introduced by + 66f5e874352016e29f555e3ce693b23474e476db + Part-of: + +2020-11-11 18:07:57 +0100 Edward Hervey + + * ext/hls/gsthlsdemux.c: + hlsdemux: Don't double-free variant streams on errors + If an error happened switching to a new variant, we switch back to the previous + one ... except it will be unreffed when settin git. + In order to avoid such issues, keep a reference to the old variant until we're + sure we don't need it anymore + Fixes cases of double-free on variants and its contents + Part-of: + +2020-11-12 00:42:59 +0800 He Junyan + + * gst-libs/gst/codecs/gstvp8decoder.c: + * gst-libs/gst/codecs/gstvp8decoder.h: + codecs: vp8decoder: Fix two typo of struct name. + Part-of: + +2020-10-27 19:53:44 +0530 Sanchayan Maity + + * sys/bluez/gsta2dpsink.c: + gsta2dpsink: Fix GstPad leak + The sinkpad returned by a call to gst_element_get_static_pad needs to be + unrefed. + Part-of: + +2020-09-30 17:12:04 +0530 Arun Raghavan + + * docs/plugins/gst_plugins_cache.json: + * sys/bluez/gsta2dpsink.c: + bluez: a2dpsink: Add support for LDAC to a2dpsink + Part-of: + +2020-09-30 13:28:08 +0530 Arun Raghavan + + * docs/plugins/gst_plugins_cache.json: + * sys/bluez/a2dp-codecs.h: + * sys/bluez/gstavdtpsink.c: + * sys/bluez/gstavdtputil.c: + bluez: avdtpsink: Add support for LDAC to avdtpsink + Part-of: + +2020-09-18 17:35:24 +0530 Sanchayan Maity + + * ext/ldac/gstldacenc.c: + * ext/ldac/gstldacenc.h: + * ext/ldac/ldac-plugin.c: + * ext/ldac/meson.build: + * ext/meson.build: + * meson_options.txt: + ext: Add LDAC encoder + LDAC is an audio coding technology developed by Sony that enables the + transmission of High-Resolution (Hi-Res) audio contents over Bluetooth. + Currently Adaptive Bit Rate (ABR) as supported by libldac encoder is not + implemented. + Part-of: + +2020-11-11 18:21:25 +0900 Seungha Yang + + * gst/mpegdemux/gstmpegdemux.c: + mpegdemux: Set duration on seeking query if possible + Set duration on seeking query in the same way as duration query handler. + Otherwise application might get confused as if the duration is unknown. + Part-of: + +2020-11-11 13:39:37 +0200 Raul Tambre + + * ext/webrtc/meson.build: + webrtc: Update libnice version requirement to 0.1.17 + Since !1366 nice_agent_get_sockets() is used, which requires 0.1.17. + Update the version requirement accordingly. + Fixes #1459. + Part-of: + +2020-11-03 17:48:02 +0100 Edward Hervey + + * ext/hls/gsthlsdemux.c: + * ext/hls/gsthlsdemux.h: + hlsdemux: Re-use streams if possible + When switching variants, try to re-use existing streams/pads instead of creating + new ones. When dealing with urisourcebin and decodebin3 this is not only the + expected way but also avoids a lot of buffering/hang issues. + Part-of: + +2020-11-04 10:36:21 +0100 Edward Hervey + + * ext/hls/m3u8.c: + * ext/hls/m3u8.h: + m3u8: Make a debug function usable elsewhere + The rest of the code might want to use this + Part-of: + +2020-07-12 00:18:38 -0400 Thibault Saunier + + * docs/plugins/gst_plugins_cache.json: + * ext/qroverlay/gstdebugqroverlay.c: + qroverlay: Generate documentation + Part-of: + +2020-07-12 00:03:04 -0400 Thibault Saunier + + * ext/qroverlay/gstdebugqroverlay.c: + * ext/qroverlay/gstdebugqroverlay.h: + * ext/qroverlay/gstqroverlay.c: + * ext/qroverlay/gstqroverlay.h: + * ext/qroverlay/meson.build: + qroverlay: Add a qroverlay element that allows overlaying any data + This moves `gstqroverlay.c` to `gstdebugqroverlay.c` and implements + a simple `gstqroverlay` element. + Part-of: + +2020-07-11 23:43:01 -0400 Thibault Saunier + + * ext/qroverlay/gstqroverlay.c: + * ext/qroverlay/gstqroverlay.h: + qroverlay: Rename qroverlay to debugqroverlay + The element is specially focus on debugging purposes and not a generique QR overlay + Part-of: + +2020-07-11 23:36:03 -0400 Thibault Saunier + + * ext/qroverlay/gstqroverlay.c: + * ext/qroverlay/gstqroverlay.h: + * ext/qroverlay/meson.build: + qroverlay: Factor out qroverlay logic to a base class + Part-of: + +2020-07-11 23:35:55 -0400 Thibault Saunier + + * ext/qroverlay/gstbaseqroverlay.c: + * ext/qroverlay/gstbaseqroverlay.h: + qroverlay: Factor out qroverlay logic to a base class + Part-of: + +2020-07-11 23:06:16 -0400 Thibault Saunier + + * ext/qroverlay/gstqroverlay.c: + * ext/qroverlay/gstqroverlay.h: + qroverlay: Make subclassable + Part-of: + +2020-07-11 20:42:51 -0400 Thibault Saunier + + * ext/qroverlay/gstqroverlay.c: + * ext/qroverlay/gstqroverlay.h: + * ext/qroverlay/meson.build: + qroverlay: Port to VideoFilter + Part-of: + +2020-07-11 15:04:57 -0400 Thibault Saunier + + * ext/qroverlay/gstqroverlay.c: + qroverlay: Make default pizel-size 3 + Otherwise zbar isn't able to read the produced qrcodes + Part-of: + +2020-07-09 14:14:45 -0400 Thibault Saunier + + * ext/qroverlay/gstqroverlay.c: + * ext/qroverlay/gstqroverlay.h: + * ext/qroverlay/meson.build: + qroverlay: Cleanup the way we build the json using json-glib + And reindent the .h file removing tabs + Part-of: + +2020-07-09 13:05:20 -0400 Thibault Saunier + + * ext/qroverlay/gstqroverlay.c: + * ext/qroverlay/gstqroverlay.h: + qroverlay: Fix copyright + Part-of: + +2020-07-09 12:51:23 -0400 Thibault Saunier + + * ext/qroverlay/gstqroverlay.c: + qroverlay: Fix some warnings + Part-of: + +2020-07-09 12:49:51 -0400 Thibault Saunier + + * ext/qroverlay/gstqroverlay.c: + * ext/qroverlay/gstqroverlay.h: + qroverlay: Minor renaming and documentation fixes + Matching usual namings + Part-of: + +2020-07-09 12:37:55 -0400 Thibault Saunier + + * ext/meson.build: + * ext/qroverlay/gstqroverlay.c: + * ext/qroverlay/gstqroverlay.h: + * ext/qroverlay/meson.build: + * meson_options.txt: + qroverlay: Import from gst-qroverlay + Part-of: + +2020-10-30 23:22:01 +0900 Seungha Yang + + * sys/nvcodec/gstnvdecoder.c: + * sys/nvcodec/gstnvvp9dec.c: + * sys/nvcodec/gstnvvp9dec.h: + * sys/nvcodec/meson.build: + * sys/nvcodec/plugin.c: + nvcodec: Add VP9 stateless decoder element + Part-of: + +2020-10-30 21:20:57 +0900 Seungha Yang + + * sys/nvcodec/gstnvdecoder.c: + * sys/nvcodec/gstnvdecoder.h: + * sys/nvcodec/gstnvh264dec.c: + * sys/nvcodec/gstnvh265dec.c: + * sys/nvcodec/gstnvvp8dec.c: + nvcodec: nvdecoder: Move to refcount based GstNvDecoderFrame + This refcount based way would be helpful for sharing nvdec frame among + multiple codec pictures and later zero-copy use case. + Part-of: + +2020-10-30 23:38:15 +0900 Seungha Yang + + * sys/nvcodec/gstnvdecoder.h: + nvcodec: nvdecoder: Get rid of G_GNUC_INTERNAL + default is visibility=hidden. Don't need to use G_GNUC_INTERNAL + for new code therefore. + Part-of: + +2020-10-30 20:37:44 +0900 Seungha Yang + + * sys/nvcodec/gstnvvp8dec.c: + * sys/nvcodec/gstnvvp8dec.h: + * sys/nvcodec/meson.build: + * sys/nvcodec/plugin.c: + nvcodec: Add VP8 stateless decoder element + Like other nvcodec stateless decoders, the rank of this new nvvp8sldec + element will be secondary for now. + Part-of: + +2020-10-30 23:26:49 +0900 Seungha Yang + + * sys/nvcodec/plugin.c: + nvcodec: nvsldec: Fix typo in debug message + Part-of: + +2020-11-09 18:27:14 +0100 Edward Hervey + + * gst/mpegtsdemux/mpegtspacketizer.c: + mpegtspacketizer: Handle PCR issues with adaptive streams + A lot of content producers out there targetting "adaptive streaming" are riddled + with non-compliant PCR streams (essentially all the players out there just use + PTS/DTS and don't care about the PCR). + In order to gracefully cope with these, we detect them appropriately and any + small (< 15s) PCR resets get gracefully ignored. + Part-of: + +2020-10-30 14:07:02 +0000 Julian Bouzas + + * sys/nvcodec/gstcudautils.c: + nvcodec: leave g_once_init when all quarks are initialized + Part-of: + +2020-11-09 23:22:09 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth264picture.c: + codecs: h264decoder: Fix missing drain handling in bumping + Should've included in the commit 5527cc4a2e7ce8eeee1d8a717f99252477d6015f + Part-of: + +2020-11-09 23:04:32 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth264decoder.c: + codecs: h264decoder: Try reference picture marking process in any case + ... even if there is some invalid conditions + (because of broken stream, our implementation fault or so). + Otherwise baseclass will keep such reference pictures and + it would result to DPB full. + Part-of: + +2020-11-09 11:44:36 +0100 Edward Hervey + + * tests/examples/mpegts/ts-parser.c: + examples: Properly handle extended descriptors + By checking the extended tag. Provides a bit more information (if extended tag + is known) + Part-of: + +2020-11-08 19:08:25 +0900 Seungha Yang + + * sys/d3d11/gstd3d11h264dec.c: + d3d11h264dec: Fix for MbaffFrameFlag and FrameNumList + As per spec 7.4.3 Slice header semantics, the flag value is derived as + MbaffFrameFlag = (mb_adaptive_frame_field_flag && !field_pic_flag) + and DXVA uses the value. + Regarding FrameNumList, in case of long-term ref, FrameNumList[i] + value should be long_term_frame_idx not long_term_pic_num. + Part-of: + +2020-11-05 19:30:35 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth264picture.c: + codecs: h264decoder: Reset frame number per MMCO type 5 + It should be cleared so that avoid wrong frame gap detection + for following pictures. + Passing 4 more conformance bitstream tests + * MR2_TANDBERG_E + * MR3_TANDBERG_B + * MR4_TANDBERG_C + * MR5_TANDBERG_C + Part-of: + +2020-11-05 18:42:37 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth264decoder.c: + * gst-libs/gst/codecs/gsth264picture.c: + * gst-libs/gst/codecs/gsth264picture.h: + codecs: h264decoder: Fix for MMCO type 2 + As per 8.2.5.4.2, we should mark a picture which has + LongTermPicNum == long_term_pic_num as "unused for reference", + not pic_num. + Passing conformance bitstream test with MR2_MW_A + Part-of: + +2020-11-05 18:27:11 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth264decoder.c: + * gst-libs/gst/codecs/gsth264picture.c: + codecs: h264picture: Add more trace log + Part-of: + +2020-11-05 13:30:49 +0000 Jason Pereira + + * docs/plugins/gst_plugins_cache.json: + * sys/decklink/gstdecklink.cpp: + decklink: correct framerate 2KDCI 23.98 + Part-of: + +2020-11-05 09:11:03 +0100 Rafostar <40623528+Rafostar@users.noreply.github.com> + + * gst-libs/gst/player/gstplayer.c: + doc: player: mention that get_pipeline method needs unref + All other methods in docs clearly mention that an unref is needed, so should `get_pipeline()`. #1450 + Part-of: + +2020-11-05 09:01:47 +0100 Rafostar <40623528+Rafostar@users.noreply.github.com> + + * gst-libs/gst/player/gstplayer.c: + player: call ref_sink on pipeline + Otherwise `gst_player_get_pipeline()` will return a floating reference which may confuse bindings and lead to crash. + Fixes #1450 + Part-of: + +2020-11-04 18:43:41 +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-21 09:01:31 -0400 Nicolas Dufresne + + * sys/va/gstvabasedec.h: + * sys/va/gstvah265dec.c: + * sys/va/gstvah265dec.h: + * sys/va/meson.build: + * sys/va/plugin.c: + va: Add HEVC decoding support + This add HEVC decoding support into the new VA plugin. This implementation has + been tested using the ITU comformance test (through fluster). It fails all + MAIN10 tests, as this is not implemented yet along with the following: + CONFWIN_A_Sony_1 (looks fine, but md5sum is incorrect) + PICSIZE_A_Bossen_1 (height too high) + PICSIZE_B_Bossen_1 (same) + VPSSPSPPS_A_MainConcept_1 (parser issue) + Part-of: + +2020-11-03 16:05:48 -0500 Nicolas Dufresne + + * gst-libs/gst/codecparsers/gsth265parser.c: + h265parser: Fix wrong warning message + Part-of: + +2020-11-03 11:23:15 -0500 Nicolas Dufresne + + * gst-libs/gst/codecs/gsth265decoder.c: + h265decoder: Remove unsued WpOffsetHalfRangeC + This is only needed for VA implementation of weight tables and isn't used + within the base class. + Part-of: + +2020-11-02 00:08:04 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth264decoder.c: + * gst-libs/gst/codecs/gsth264picture.c: + * gst-libs/gst/codecs/gsth264picture.h: + codecs: h264decoder: Rework for DPB management + Sync with recent h265decoder DPB implementation. + Part-of: + +2020-11-04 18:47:30 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth264decoder.c: + * gst-libs/gst/codecs/gsth264picture.c: + * gst-libs/gst/codecs/gsth264picture.h: + codecs: h264decoder: Remove unused pts variable + Part-of: + +2020-11-03 14:12:45 +0900 youngh.lee + + * gst/aiff/aiffparse.c: + aiffparse: Also set a channel mask for 2 channels + And only do add debug output at FIXME level when using the fallback + channel mask, not for those defined in the AIFF spec. + Part-of: + +2020-06-23 10:29:42 -0400 Olivier Crête + + * ext/webrtc/icestream.c: + * ext/webrtc/nicetransport.c: + * ext/webrtc/nicetransport.h: + webrtc: Add properties to change the socket buffer sizes to ice object + libnice doesn't touch the kernel buffer sizes. When dealing with RTP data, + it's generally advisable to increase them to avoid dropping packets locally. + This is especially important when running multiple higher bitrate streams at + the same time. + Part-of: + +2020-11-03 02:22:23 +1100 Jan Schmidt + + * ext/vulkan/vkdeviceprovider.c: + vkdeviceprovider: Avoid deadlock on physical device + Don't hold the object lock on the vk physical device while + constructing a GstVulkanDevice around it, as + GstVulkanDevice can make calls on the physical device that + require the object lock. + Part-of: + +2020-11-03 02:14:21 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth265picture.c: + codecs: h265picture: Minor update for coding style + It's GstH265Dpb, not GstH265Decoder + Part-of: + +2020-11-03 01:53:15 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth265decoder.c: + * gst-libs/gst/codecs/gsth265picture.c: + * gst-libs/gst/codecs/gsth265picture.h: + codecs: h265decoder: Make GstVideoCodecFrame hold the last reference of the buffer + The functionality of passing the last reference of GstH265Picture + was silently dropped by the commit eeffd91109a409063e866337452eedd392649775 + This commit will make it work again. + Part-of: + +2020-11-03 01:41:13 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth265decoder.c: + codecs: h265decoder: Clear GstVideoCodecFrame on DPB clear if needed + h265decoder might need to clear DPB depending on context even if + it's not flushing case. So associated GstVideoCodecFrame needs to be + released in case non-flushing case. + Part-of: + +2020-11-03 00:57:46 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth265decoder.c: + codecs: h265decoder: Don't drain DPB on EOB/EOS/IDR nalu + DPB bumping decision per end-of-bitstream, end-of-sequence or IDR nal + should done by spec. In short, draining on EOB/EOS/IDR is undefined + behavior as per spec. + Part-of: + +2020-11-01 18:32:56 -0500 Nicolas Dufresne + + * gst-libs/gst/codecs/gsth265decoder.c: + h265decoder: Complete dependent slice header + This will save the last independent slice and fill in the missing + information for dependent slices. This was left over during the porting + from gstreamer-vaapi. The private variable prev_independent_slice was + already there. + Part-of: + +2020-11-01 18:30:34 -0500 Nicolas Dufresne + + * gst-libs/gst/codecs/gsth265decoder.c: + h265decoder: Prevent possible infinite loop + Theoretically, one could produce a broken stream that would lead to + infinite in the specified algorithm to calculate l0/l1 reference lists. + This patch will pearly exit if this condition is met. + Part-of: + +2020-10-22 12:38:11 -0400 Nicolas Dufresne + + * gst-libs/gst/codecparsers/gsth265parser.c: + * gst-libs/gst/codecparsers/gsth265parser.h: + h265parse: Add missing const qualifier + Part-of: + +2020-11-02 22:47:20 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.c: + Revert "d3d11decoder: Use D3D11/DXGI standard colorimetry" + This reverts commit a52fc6deeda203add520cb59ae0026d109ecda95. + The change breaks H264/HEVC conformance bitstream tests + Part-of: + +2020-11-02 08:46:25 +0000 Randy Li + + * ext/wayland/wlvideoformat.c: + wlvideoformat: fix DMA format convertor + In the most of case, this typo would work. But for + ARGB8888 and XRGB8888, which shm format is not based on fourcc, + which would never appear in format enumeration. + Part-of: + +2020-11-01 03:58:30 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.c: + d3d11decoder: Use D3D11/DXGI standard colorimetry + D3D11/DXGI supports smaller set of colorimetry than all possible + combination. This restriction would make more streams convertible + by using ID3D11VideoProcessor + Part-of: + +2020-10-31 03:28:55 +0900 Seungha Yang + + * sys/d3d11/gstd3d11window.cpp: + d3d11window: Use ID3D11VideoProcessor only if device supports corresponding conversion + ... and drop support for ID3D11VideoProcessor if device doesn't + support ID3D11VideoContext1 interface and therefore we cannot + query conversion supportability. + Part-of: + +2020-11-01 20:52:11 +0900 Seungha Yang + + * sys/d3d11/gstd3d11h264dec.c: + * sys/d3d11/gstd3d11h265dec.c: + d3d11h{264,265}dec: Submit picture level parameters only once + Submit PICTURE_PARAMETERS and INVERSE_QUANTIZATION_MATRIX + buffers only once per picture. Multiple submission is redundant. + Also this modification would fix broken hevc decoding with + dependent slice. + Part-of: + +2020-10-31 20:36:13 +0900 Seungha Yang + + codecs: h265decocer: Rework for DPB management + * Move all DPB bumping process into GstH265Dpb internal + * Handle DPB add process in GstH265Dpb struct + * Make implementation to be 1:1 mappable with hevc specification + * Fix wrong DPB bumping implementation especially when no_output_of_prior_pics_flag + was specified. + With fixes from Nicolas Dufresne + Part-of: + +2020-10-31 20:31:51 +0900 Seungha Yang + + * sys/d3d11/gstd3d11h264dec.c: + * sys/d3d11/gstd3d11h265dec.c: + * sys/d3d11/gstd3d11vp8dec.c: + * sys/d3d11/gstd3d11vp9dec.c: + d3d11decoder: Get rid of framerate field from pad template + Framerate is optional value and we don't have any framerate + related restriction for those elements. This commit is to fix + negotiation failure when upstream doesn't set framerate on caps. + Part-of: + +2020-10-31 21:46:16 +1100 Jan Schmidt + + * tests/check/elements/dtls.c: + tests: Don't set dtlsenc state before linking. + Link the dtlsenc in the testsuite before setting it to paused, as it + starts a pad task that can generate a not-linked error otherwise. + Part-of: + +2020-10-31 01:23:36 +1100 Jan Schmidt + + * tests/check/elements/dtls.c: + dtls: Catch bus errors and fail instead of hanging. + If the DTLS elements fail, they post a bus error and don't signal any + key negotiation. Catch the bus error and fail the test early instead + of letting it hang and time out. + Part-of: + +2020-10-30 22:52:18 +1100 Jan Schmidt + + * ext/sctp/gstsctpdec.c: + * ext/sctp/gstsctpenc.c: + sctp: Do downward state change logic after chaining up. + Call the parent state_change function first when changing state + downward, to make sure that the element has stopped before cleaning + it up. + Part-of: + +2020-10-30 22:49:22 +1100 Jan Schmidt + + * ext/dtls/gstdtlsconnection.c: + dtls: Avoid bio_buffer assertion on shutdown. + On shutdown, a previous iteration of dtsl_connection_process() + might be incomplete and leave a partial bio_buffer behind. + If the DTLS connection is already marked closed, drop out + of dtls_connection_process early without asserting. + Part-of: + +2020-10-30 16:31:18 +1100 Jan Schmidt + + * ext/webrtc/gstwebrtcbin.c: + webrtc: Fix a race on shutdown. + The main context can disappear in gst_webrtc_bin_enqueue_task() + between checking the is_closed flag and enqueueing a source on the + main context. Protect the main context with the object lock instead + of the PC lock, and hold a ref briefly to make sure it stays alive. + Part-of: + +2020-07-08 17:24:36 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/gstwebrtcbin.h: + * ext/webrtc/gstwebrtcice.c: + * ext/webrtc/gstwebrtcice.h: + * ext/webrtc/meson.build: + * ext/webrtc/sctptransport.c: + * ext/webrtc/sctptransport.h: + * ext/webrtc/webrtctransceiver.c: + * ext/webrtc/webrtctransceiver.h: + webrtc: Set the DSCP markings based on the priority + This matches how the WebRTC javascript API works and the Chrome implementation. + Part-of: + +2020-07-09 13:39:03 -0400 Olivier Crête + + * gst-libs/gst/webrtc/rtpsender.c: + * gst-libs/gst/webrtc/rtpsender.h: + rtpsender: Add API to set the priority + Part-of: + +2020-07-09 13:42:35 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/webrtctransceiver.h: + rtptransceiver: Store the SSRC of the current stream + Part-of: + +2020-07-08 19:13:33 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + * gst-libs/gst/webrtc/rtptransceiver.h: + * gst-libs/gst/webrtc/webrtc_fwd.h: + webrtc: Save the media kind in the transceiver + Part-of: + +2020-07-09 13:45:20 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Remove unused function + Part-of: + +2020-10-02 21:38:00 -0400 Olivier Crête + + * gst-libs/gst/webrtc/rtpreceiver.h: + * gst-libs/gst/webrtc/rtpsender.h: + * gst-libs/gst/webrtc/rtptransceiver.h: + webrtc: Document more objects + Part-of: + +2020-10-31 00:37:48 +0900 Seungha Yang + + * sys/d3d11/gstd3d11h265dec.c: + * sys/d3d11/gstd3d11vp9dec.c: + d3d11decoder: Allow 10bits only profiles + HEVC_VLD_Main10 and VP9_VLD_10bit_Profile2 might not support + 8bit format (i.e., NV12) depending on GPU vendor. + Part-of: + +2020-10-25 13:33:21 +0200 Sebastian Dröge + + * sys/decklink/gstdecklink.cpp: + decklink: Remove \n from debug output + Part-of: + +2020-10-25 13:32:26 +0200 Sebastian Dröge + + * sys/decklink/gstdecklink.cpp: + * sys/decklink/gstdecklinkaudiosink.cpp: + * sys/decklink/gstdecklinkaudiosrc.cpp: + * sys/decklink/gstdecklinkvideosink.cpp: + * sys/decklink/gstdecklinkvideosrc.cpp: + decklink: Correctly indent everything + Part-of: + +2020-10-25 13:30:55 +0200 Sebastian Dröge + + * docs/plugins/gst_plugins_cache.json: + * sys/decklink/gstdecklink.cpp: + * sys/decklink/gstdecklink.h: + * sys/decklink/gstdecklinkvideosink.cpp: + * sys/decklink/gstdecklinkvideosink.h: + * sys/decklink/gstdecklinkvideosrc.cpp: + * sys/decklink/gstdecklinkvideosrc.h: + decklink: Add a default profile id + This causes no changes to the profile but keeps the existing settings. + The profile can also be changed from e.g. the card's configuration + application and in that case probably should be left alone. + The default is the new value as it keeps the profile setting as it is, + which is consistent with the previous behaviour in 1.18. + Part-of: + +2020-10-25 13:14:11 +0200 Sebastian Dröge + + * sys/decklink/gstdecklink.cpp: + decklink: Mark internal function as static + Part-of: + +2020-10-25 13:13:37 +0200 Sebastian Dröge + + * sys/decklink/gstdecklink.cpp: + decklink: Remove some dead code + Part-of: + +2020-10-30 10:02:32 +0200 Sebastian Dröge + + * sys/decklink/gstdecklink.cpp: + decklink: Update enum value bounds check in gst_decklink_get_mode() + The widescreen modes moved after GST_DECKLINK_MODE_2160p60 and using + them now would cause an assertion. This is a regression from + 309f6187fef890c7ffa49305f38e89beac3b1423. + Part-of: + +2020-08-25 14:56:50 +0100 Chris Bass + + * ext/ttml/ttmlparse.c: + ttmlparse: Handle whitespace before XML declaration + When ttmlparse is in, e.g., an MPEG-DASH pipeline, there may be + whitespace between successive TTML documents in ttmlparse's accumulated + input. As libxml2 will fail to parse documents that have whitespace + before the opening XML declaration, ensure that any preceding whitespace + is not passed to libxml2. + Part-of: + +2020-08-25 14:54:31 +0100 Chris Bass + + * ext/ttml/ttmlparse.c: + ttmlparse: Ensure only single TTML doc parsed + The parser handles only one TTML file at a time, therefore if there are + multiple TTML documets in the input, parse only the first. + Part-of: + +2020-10-29 13:43:16 -0400 Xavier Claessens + + * sys/androidmedia/gstamc.c: + amc: Fix crash when encoding AVC + gstamcvideoenc.c calls gst_amc_avc_profile_to_string() with alternatives + set to NULL which causes a crash. + Part-of: + +2020-03-19 15:07:47 +0100 Guillaume Desmottes + + * ext/isac/gstisac.c: + * ext/isac/gstisacdec.c: + * ext/isac/gstisacdec.h: + * ext/isac/gstisacenc.c: + * ext/isac/gstisacenc.h: + * ext/isac/gstisacutils.c: + * ext/isac/gstisacutils.h: + * ext/isac/meson.build: + * ext/meson.build: + * meson_options.txt: + isac: add iSAC plugin + Wrapper on the iSAC reference encoder and decoder from webrtc, + see https://en.wikipedia.org/wiki/Internet_Speech_Audio_Codec + Part-of: + +2020-10-28 11:49:54 -0300 Thibault Saunier + + * gst/transcode/gsttranscodebin.c: + transcodebin: Create the decodebin in _init + This way user can request pads right from the beginning + Part-of: + +2020-10-25 18:04:05 +0000 Philippe Normand + + * gst/transcode/gsttranscodebin.c: + transcodebin: Accept more than one stream + Look-up the stream matching the given ID also after building the stream list + from the received collection. Without this change the transcoder would discard + the second incoming stream. + Part-of: + +2020-03-20 09:27:48 -0300 Thibault Saunier + + * docs/plugins/gst_plugins_cache.json: + * gst/transcode/gsttranscodebin.c: + * gst/transcode/gsturitranscodebin.c: + transcodebin: Port to decodebin3 + Part-of: + +2020-03-19 09:35:57 -0300 Thibault Saunier + + * gst-libs/gst/transcoder/gsttranscoder.c: + * gst/transcode/gsturitranscodebin.c: + uritranscodebin: Move to using a urisourcebin for our source. + Part-of: + +2020-03-19 09:34:54 -0300 Thibault Saunier + + * gst-libs/gst/transcoder/gsttranscoder.c: + transcoder: Base sync transcoding variant on a GMainLoop + Part-of: + +2020-10-29 06:13:05 +0000 Randy Li + + * ext/wayland/gstwaylandsink.c: + * ext/wayland/wlwindow.c: + * ext/wayland/wlwindow.h: + waylandsink: release frame callback when destroyed + We would use a frame callback from the surface to indicate + that last buffer is rendered, but when we destroy the surface + and that callback is not back yet, it may cause the wayland event + queue crash. + Part-of: + +2020-10-28 19:00:43 +0900 Seungha Yang + + * gst/rtmp2/gstrtmp2src.c: + rtmp2src: Set buffer timestamp on output buffer + This timestamp information would be useful for queue2 element + when calculating time level and also it makes buffering decision + more reliable. + Part-of: + +2020-10-28 00:47:49 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videoprocessor.c: + d3d11videoprocessor: Fix wrong input/output supportability check + The flag argument of ID3D11VideoProcessorEnumerator::CheckVideoProcessorFormat + method is output value, not input. + Part-of: + +2020-10-25 02:27:52 +0900 Seungha Yang + + * sys/nvcodec/gstnvdecoder.c: + * sys/nvcodec/gstnvdecoder.h: + * sys/nvcodec/gstnvh264dec.c: + * sys/nvcodec/gstnvh265dec.c: + nvcodec: nvsldec: Add support for CUDA memory + Add CUDA memory support. Note that zero copying is not supported yet + Part-of: + +2020-10-26 05:15:33 +0900 Seungha Yang + + * sys/d3d11/gstd3d11memory.c: + d3d11memory: Adjust log level for some spammy debug messages + Part-of: + +2020-10-26 05:11:45 +0900 Seungha Yang + + * sys/d3d11/gstd3d11colorconvert.c: + d3d11convert: Use ID3D11VideoProcessor only if device supports colorspace + Check whether conversion with given combination of input/output + format and dxgi colorspace is supported or not by driver. + If not, we should use shader. + Part-of: + +2020-10-26 05:09:40 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videoprocessor.c: + * sys/d3d11/gstd3d11videoprocessor.h: + d3d11videoprocessor: Add a method for device's conversion caps check + Add a wrapper method for + ID3D11VideoProcessorEnumerator1::CheckVideoProcessorFormatConversion. + Part-of: + +2020-10-26 05:04:55 +0900 Seungha Yang + + * sys/d3d11/gstd3d11format.c: + d3d11format: Map more colorimetry with dxgi colorspace + Map more logically identical set of GstVideoColorimetry formats + with dxgi color space. + Part-of: + +2020-10-25 23:13:46 +0800 He Junyan + + * sys/va/gstvapool.c: + va: pool: Set the video_alignment after we get image info. + The set_format() of the allocator may change the stride of the + alloc_info. We should update the video_align.stride_align based + on it. Or, we get a warning in gst_video_meta_validate_alignment(). + Part-of: + +2020-10-26 11:50:59 +0800 He Junyan + + * sys/va/gstvah264dec.c: + va: h264dec: Set the padding to VideoAlignment's right. + In our va implemenation, we just use image's info to map the buffer. + The padding info just plays a role as a place holder to expand the + allocation size in caps when decoding size is bigger than display + size. So the padding_right or padding_left does not change the result. + But we find if using padding_left, it is hard to meet the requirement + of gst_video_meta_validate_alignment(), when the video meta's stride + is different from the allocation width. + Part-of: + +2020-10-26 01:22:12 +0800 He Junyan + + * sys/va/gstvabasedec.c: + va: basedec: No need to call base class' decide_allocation(). + We have already done the jobs in gst_va_base_dec_decide_allocation() + and no need to call base class' decide_allocation() again. The base + class' decide_allocation() will set_format() again and let use do the + image/surface testing again, which is low performance and no needed. + Part-of: + +2020-10-20 14:31:22 +0800 He Junyan + + * sys/va/gstvaallocator.c: + va: allocator: use _update_image_info() to set allocator parameters. + Use this standalone function to update the allocator info and make + all ensure_image() and mem_alloc() API clean. + We also change the default way of using image. We now set the non + derive manner as the default manner, and if it fails, then fallback + to the derived image manner. + On a lot of platforms, the derived image does not have caches, so the + read and write operations have very low performance. + Part-of: + +2020-10-20 14:09:35 +0800 He Junyan + + * sys/va/gstvaallocator.c: + va: allocator: Add a helper function to update the image info. + Part-of: + +2020-10-19 23:32:44 +0800 He Junyan + + * sys/va/gstvaallocator.c: + va: allocator: Decide the allocator's parameters when set_format(). + Moving the parameters testing and setting from the allocator_alloc_full() + to the allocator_try(). The allocator_alloc_full() will be called every + time when we need to allocate a new memory. But all these parameters such + as the surface and the image format, rt_format, etc, are unchanged during + the whole allocator lifetime. Just setting them in set_format() is enough. + Part-of: + +2020-10-18 17:59:44 +0200 Nicola Murino + + * ext/opencv/meson.build: + opencv: allow compilation against 4.5.x + Part-of: + +2020-03-24 09:18:28 -0400 Aaron Boxer + + * gst/videoparsers/gstjpeg2000parse.c: + jpeg2000parse: sub-sampling parse should take component into account + Part-of: + +2020-04-21 14:16:45 +0200 Stéphane Cerveau + + * gst/videoparsers/gstjpeg2000parse.c: + jpeg2000parse: no pts interpolation with subframe. + The jpeg2000parser must not interpolate PTS with subframes. + Part-of: + +2020-01-13 14:01:19 -0500 Aaron Boxer + + * docs/plugins/gst_plugins_cache.json: + * gst/videoparsers/gstjpeg2000parse.c: + jpeg2000parse: support frame and stripe alignment in caps + forward alignment and num-stripes caps properties + Use caps height when setting caps for subframe + We want downstream to use full frame height, not subframe height + Part-of: + +2020-10-25 11:46:29 +0200 Sebastian Dröge + + * sys/decklink/gstdecklinkaudiosrc.cpp: + * sys/decklink/gstdecklinkvideosrc.cpp: + decklink: Reset skip counters when starting the sources + Part-of: + +2018-05-10 14:05:12 +0300 Vivia Nikolaidou + + * sys/decklink/gstdecklinkaudiosrc.cpp: + * sys/decklink/gstdecklinkvideosrc.cpp: + decklink*src: Post a warning message on the bus about dropped frames + Part-of: + +2017-11-28 13:44:18 +0100 Georg Lippitsch + + * sys/decklink/gstdecklinkaudiosrc.cpp: + * sys/decklink/gstdecklinkaudiosrc.h: + * sys/decklink/gstdecklinkvideosrc.cpp: + * sys/decklink/gstdecklinkvideosrc.h: + decklink*src: Aggregate dropped frame/packet logging + decklink*src currently prints a log entry for every dropped frame and + audio packet. That completely spams the logs. + This change aggregates information about dropped packets and only prints + a message once when dropping starts, and a summary when dropping ends. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/705 + Part-of: + +2020-10-24 20:59:55 +0900 Seungha Yang + + * sys/d3d11/gstd3d11memory.c: + * sys/d3d11/gstd3d11memory.h: + d3d11memory: Protect view object with lock + Make resource allocation more thread-safe + Part-of: + +2020-10-24 02:47:22 +0900 Seungha Yang + + * sys/d3d11/gstd3d11colorconvert.c: + * sys/d3d11/gstd3d11videoprocessor.c: + * sys/d3d11/gstd3d11videoprocessor.h: + d3d11convert: Add support for conversion using ID3D11VideoProcessor + Output texture of d3d11 decoder cannot have the bind flag + D3D11_BIND_SHADER_RESOURCE (meaning that it cannot be used for shader + input resource). So d3d11convert (and it's subclasses) was copying + texture into another internal texture to use d3d11 shader. + It's obviously overhead and we can avoid texture copy for + colorspace conversion or resizing via ID3D11VideoProcessor + as it supports decoder output texture. + This commit would be a visible optimization for d3d11 decoder with + d3d11compositor use case because we can avoid texture copy per frame. + Part-of: + +2020-10-24 02:33:29 +0900 Seungha Yang + + * sys/d3d11/gstd3d11memory.c: + * sys/d3d11/gstd3d11memory.h: + d3d11memory: Store ID3D11VideoProcessorOutputView object + Part-of: + +2020-10-23 22:29:57 +0800 He Junyan + + * gst-libs/gst/codecs/gsth265decoder.c: + codecs: h265decoder: Fix picture leaks because of reference set. + The last frame's reference set has no one to cleanup. We need to + clean all pictures in the stop() func. + We also add a helper function to cleanup all the pictures in the + reference picture set. + Part-of: + +2020-10-23 21:21:05 +0800 He Junyan + + * gst-libs/gst/codecs/gsth265decoder.c: + codecs: h265decoder: Fix 3 ref array leaks in finalize. + Part-of: + +2020-10-23 16:59:00 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videoprocessor.c: + * sys/d3d11/gstd3d11videoprocessor.h: + * sys/d3d11/gstd3d11window.cpp: + d3d11window: Reuse ID3D11VideoProcessorInputView if possible + GstMemory object could be disposed if GstBuffer is not allocated + by GstD3D11BufferPool such as via gst_buffer_copy() and/or + gst_buffer_make_writable(). So attaching qdata on GstMemory + object would cause unnecessary view alloc/free. + By using view pool which is implemented in GstD3D11Allocator, + we can avoid redundant view alloc/free. + Part-of: + +2020-10-21 16:28:11 +0900 Seungha Yang + + * sys/d3d11/gstd3d11memory.c: + * sys/d3d11/gstd3d11memory.h: + d3d11memory: Implement ID3D11VideoProcessorInputView pool + Similar to ID3D11VideoDecoderOutputView pool implementation + Part-of: + +2018-04-07 16:33:47 -0400 Xavier Claessens + + * gst-libs/gst/audio/meson.build: + * gst-libs/gst/codecparsers/meson.build: + * gst-libs/gst/insertbin/meson.build: + * gst-libs/gst/interfaces/meson.build: + * gst-libs/gst/mpegts/meson.build: + * gst-libs/gst/player/meson.build: + * gst-libs/gst/sctp/meson.build: + * gst-libs/gst/transcoder/meson.build: + * gst-libs/gst/vulkan/meson.build: + * gst-libs/gst/wayland/meson.build: + * gst-libs/gst/webrtc/meson.build: + * meson.build: + * pkgconfig/.gitignore: + * pkgconfig/gstreamer-bad-audio-uninstalled.pc.in: + * pkgconfig/gstreamer-bad-audio.pc.in: + * pkgconfig/gstreamer-codecparsers-uninstalled.pc.in: + * pkgconfig/gstreamer-codecparsers.pc.in: + * pkgconfig/gstreamer-insertbin-uninstalled.pc.in: + * pkgconfig/gstreamer-insertbin.pc.in: + * pkgconfig/gstreamer-mpegts-uninstalled.pc.in: + * pkgconfig/gstreamer-mpegts.pc.in: + * pkgconfig/gstreamer-photography-uninstalled.pc.in: + * pkgconfig/gstreamer-photography.pc.in: + * pkgconfig/gstreamer-player-uninstalled.pc.in: + * pkgconfig/gstreamer-player.pc.in: + * pkgconfig/gstreamer-plugins-bad-uninstalled.pc.in: + * pkgconfig/gstreamer-plugins-bad.pc.in: + * pkgconfig/gstreamer-sctp-uninstalled.pc.in: + * pkgconfig/gstreamer-sctp.pc.in: + * pkgconfig/gstreamer-transcoder-uninstalled.pc.in: + * pkgconfig/gstreamer-transcoder.pc.in: + * pkgconfig/gstreamer-vulkan-uninstalled.pc.in: + * pkgconfig/gstreamer-vulkan-wayland-uninstalled.pc.in: + * pkgconfig/gstreamer-vulkan-wayland.pc.in: + * pkgconfig/gstreamer-vulkan-xcb-uninstalled.pc.in: + * pkgconfig/gstreamer-vulkan-xcb.pc.in: + * pkgconfig/gstreamer-vulkan.pc.in: + * pkgconfig/gstreamer-wayland-uninstalled.pc.in: + * pkgconfig/gstreamer-wayland.pc.in: + * pkgconfig/gstreamer-webrtc-uninstalled.pc.in: + * pkgconfig/gstreamer-webrtc.pc.in: + * pkgconfig/meson.build: + Meson: Use pkg-config generator + +2020-07-30 20:23:37 -0400 Nicolas Dufresne + + * gst-libs/gst/codecs/gsth265decoder.c: + * gst-libs/gst/codecs/gsth265decoder.h: + * sys/d3d11/gstd3d11h265dec.c: + * sys/nvcodec/gstnvh265dec.c: + h265decoder: Add support for l0/l1 + Add support for reference list needed for VA-API and some V4L2 decoders. + Part-of: + +2020-07-28 18:37:38 -0400 Nicolas Dufresne + + * gst-libs/gst/codecs/gsth265decoder.c: + * gst-libs/gst/codecs/gsth265decoder.h: + * gst-libs/gst/codecs/gsth265picture.c: + * gst-libs/gst/codecs/gsth265picture.h: + * sys/d3d11/gstd3d11h265dec.c: + * sys/nvcodec/gstnvh265dec.c: + h265decoder: Sync with the H264 implementation + This ensures that we get the last reference to picture being outputed, + avoiding GstBuffer structure copies and simplifying the buffer management. + Part-of: + +2020-10-20 17:31:17 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.c: + * sys/d3d11/gstd3d11decoder.h: + * sys/d3d11/gstd3d11h264dec.c: + * sys/d3d11/gstd3d11h265dec.c: + * sys/d3d11/gstd3d11vp8dec.c: + * sys/d3d11/gstd3d11vp9dec.c: + d3d11decoder: Directly access ID3D11VideoDecoderOutputView for decoding + Decoder output view is stored in GstD3D11Memory object instead of + wrapper struct now. So qdata is no more required. + Part-of: + +2020-10-20 01:59:35 +0900 Seungha Yang + + * sys/d3d11/gstd3d11memory.c: + * sys/d3d11/gstd3d11memory.h: + d3d11memory: Implement ID3D11VideoDecoderOutputView pool + Similar to texture-array pool, we can reuse decoder output view + since the life time of output view is identical to that of texture-array. + In this way, we can avoid frequent output view alloc/free. + Part-of: + +2020-10-04 23:39:05 +0900 Seungha Yang + + * sys/d3d11/gstd3d11memory.c: + d3d11memory: Move to GArray to store texture-array status + The size D3D11_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION is 2048 + which is too large in practice especially for a texture + of dpb + Part-of: + +2020-10-12 19:20:10 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvabasedec.h: + * sys/va/gstvadecoder.c: + * sys/va/gstvadecoder.h: + * sys/va/gstvaprofile.c: + * sys/va/gstvavp9dec.c: + * sys/va/gstvavp9dec.h: + * sys/va/meson.build: + * sys/va/plugin.c: + va: Add VP9 decoder + Part-of: + +2020-10-16 15:46:20 +0100 Philippe Normand + + * ext/wpe/gstwpesrc.cpp: + wpe: Convert launch lines to markdown and move since tag + Seems like the examples don't appear in the generated docs because the Since tag + was badly positioned in the doc blurb. + Part-of: + +2020-10-16 10:35:36 +0200 Víctor Manuel Jáquez Leal + + * gst-libs/gst/codecs/gstvp9decoder.c: + * gst-libs/gst/codecs/gstvp9picture.h: + codecs: vp9decoder: Add segmentation to picture. + VA-API needs AC and DC quant scales for both luma and chroma, and the loop + filter level for current frame, but these values are not available outside + the private GstVp9Parser structure. And these values may change from frame + to frame, so they are picture specific. + This patch add GstVp9Segmentation structure array to GstVp9Picture to expose + it to derived classes. This approach is safer than passing the parser at + picture handling flow. + Also, this patch, in order to solve Documentation CI, mark as private the + GstVp9Picture structure. + Part-of: + +2020-10-12 11:07:47 +0200 Víctor Manuel Jáquez Leal + + * gst-libs/gst/codecs/gstvp9decoder.c: + * gst-libs/gst/codecs/gstvp9decoder.h: + * sys/d3d11/gstd3d11vp9dec.c: + codecs: vp9decoder: Pass parser as new_sequence() parameter. + In order to know the chroma format, besides profile, subsampling_x and + subsampling_y are needed (Spec 7.2.2 Color config semantics). These values are + in GstVp9Parser but not in GstVp9Framehdr. + Also, bit_depth is available in parser but not frame header. Evenmore, those + values are copied to picture structure later. + In case of VA-API, to configure the pipeline, it is require to know the chroma + format and depth. + It is possible to know chroma and depth through caps coming from vp9parser, but + it requires string parsing. It would be less error prone to get these values + through the parser structure at new_sequence() virtual method. + Part-of: + +2020-09-23 16:43:30 -0400 Nicolas Dufresne + + * gst/rtp/gstrtpsrc.c: + rtpsrc: Cleanup on BYE, timeout or when pad is reused + In this patch, we enabled 'autoremove' feature of rtpbin and also call + 'clear-ssrc' on the rtpssrcdemux element when a pad is being reused. This + ensure that the jitterbuffer is removed and no threads accumulates. + Part-of: + +2020-09-04 14:18:13 +0300 George Kiagiadakis + + * gst/rtp/gstrtpsrc.c: + rtpsrc: re-use the same src pad for streams that have the same payload type + Also use payload type when naming pads, this will make it easier to identify + pads and simplify the code. + Fixes #1395 + Part-of: + +2020-06-03 01:26:12 +0900 Seungha Yang + + * sys/d3d11/gstd3d11compositor.c: + * sys/d3d11/gstd3d11compositor.h: + * sys/d3d11/gstd3d11compositorbin.c: + * sys/d3d11/gstd3d11compositorbin.h: + * sys/d3d11/meson.build: + * sys/d3d11/plugin.c: + d3d11: Introduce d3d11compositor element + Add new video composition element which is equivalent to compositor + and glvideomixer elements. When d3d11 decoder elements are used, + d3d11compositor can do efficient graphics memory handling + (zero copying or at least copying memory on GPU memory space). + Part-of: + +2020-08-05 17:27:30 +0900 Seungha Yang + + * sys/d3d11/gstd3d11shader.c: + d3d11shader: Allow drawing without shader resource view + ... for the case that we are rendering on target without input texture. + For example, we might want to draw arbitrary shape on render target view + without shader resource view. + Part-of: + +2020-08-03 03:19:34 +0900 Seungha Yang + + * sys/d3d11/gstd3d11colorconvert.c: + * sys/d3d11/gstd3d11colorconvert.h: + * sys/d3d11/plugin.c: + d3d11convert: Add new subclasses for only color convert or resize + New d3d11colorconvert and d3d11scale elements will perform only + colorspace conversion and rescale, respectively. Those new elements + would be useful when only colorspace conversion or rescale is required + and the other part should be done by another elements. + Part-of: + +2020-08-01 20:16:52 +0900 Seungha Yang + + * sys/d3d11/gstd3d11colorconverter.c: + * sys/d3d11/gstd3d11colorconverter.h: + d3d11colorconverter: Allow setting alpha value to use + ... used for reordering case for now. In other words, non-alpha formats + such as NV12 is not supported case yet. + Part-of: + +2020-06-03 01:20:41 +0900 Seungha Yang + + * sys/d3d11/gstd3d11colorconvert.c: + * sys/d3d11/gstd3d11colorconverter.c: + * sys/d3d11/gstd3d11colorconverter.h: + * sys/d3d11/gstd3d11decoder.c: + * sys/d3d11/gstd3d11overlaycompositor.c: + * sys/d3d11/gstd3d11shader.c: + * sys/d3d11/gstd3d11shader.h: + * sys/d3d11/gstd3d11window.cpp: + d3d11colorconverter: Add support conversion with blending + This is pre-work for d3d11compositor support + Part-of: + +2020-06-03 00:59:15 +0900 Seungha Yang + + * sys/d3d11/gstd3d11colorconverter.c: + * sys/d3d11/gstd3d11colorconverter.h: + d3d11colorconverter: Add method to support updating destination rect + It's equivalent to GST_VIDEO_CONVERTER_OPT_DEST_* options of GstVideoConverter + Part-of: + +2020-06-03 00:46:13 +0900 Seungha Yang + + * sys/d3d11/gstd3d11colorconverter.c: + * sys/d3d11/gstd3d11colorconverter.h: + * sys/d3d11/gstd3d11decoder.c: + * sys/d3d11/gstd3d11overlaycompositor.c: + * sys/d3d11/gstd3d11overlaycompositor.h: + * sys/d3d11/gstd3d11window.cpp: + d3d11: Clarify target rect to be updated + Rename internal methods to clarify which rect (i.e., input or output) + should be updated + Part-of: + +2020-10-02 10:02:38 -0400 Julian Bouzas + + * sys/nvcodec/gstnvdec.c: + * sys/nvcodec/gstnvdec.h: + nvcodec: Report latency in decoder based on max-display-delay + Part-of: + +2020-10-02 09:22:34 -0400 Julian Bouzas + + * sys/nvcodec/gstnvdec.c: + * sys/nvcodec/gstnvdec.h: + nvcodec: Add max-display-delay decoder property + Part-of: + +2020-09-24 11:25:33 -0400 Julian Bouzas + + * sys/nvcodec/gstnvdec.c: + nvcodec: Fix compiler error if OpenGL is not enabled + Part-of: + +2020-09-24 10:33:58 -0400 Julian Bouzas + + * sys/nvcodec/gstnvdecoder.c: + nvcodec: Add missing CUDAMemory src caps in h264 decoder + Part-of: + +2020-09-23 13:49:43 -0400 Julian Bouzas + + * sys/nvcodec/gstnvh264enc.c: + * sys/nvcodec/gstnvh265enc.c: + nvcodec: Add missing CUDAMemory sink caps in h264 and h265 encoders + Part-of: + +2020-09-22 13:07:19 -0400 Julian Bouzas + + * sys/nvcodec/gstcudadownload.c: + nvcodec: Fix description of cudadownload element + Part-of: + +2019-08-11 15:02:04 +0900 Seungha Yang + + * tests/check/elements/cudaconvert.c: + * tests/check/elements/cudafilter.c: + * tests/check/meson.build: + tests: Add CUDA filter unit tests + Adding a test for buffer meta and colorspace conversion + Part-of: + +2019-10-16 22:43:09 +0900 Seungha Yang + + * sys/nvcodec/gstcudafilter.c: + * sys/nvcodec/gstcudascale.c: + * sys/nvcodec/gstcudascale.h: + * sys/nvcodec/meson.build: + nvcodec: Add CUDA video scale element + Add new element for video resizing using CUDA + Part-of: + +2019-10-16 22:42:55 +0900 Seungha Yang + + * sys/nvcodec/gstcudabasefilter.c: + * sys/nvcodec/gstcudabasefilter.h: + * sys/nvcodec/gstcudaconvert.c: + * sys/nvcodec/gstcudaconvert.h: + * sys/nvcodec/gstcudafilter.c: + * sys/nvcodec/gstcudafilter.h: + * sys/nvcodec/meson.build: + * sys/nvcodec/plugin.c: + nvcodec: Add CUDA video convert element + Add new element for colorspace conversion using CUDA. + Part-of: + +2019-10-16 22:42:39 +0900 Seungha Yang + + * sys/nvcodec/cuda-converter.c: + * sys/nvcodec/cuda-converter.h: + * sys/nvcodec/gstcudacontext.c: + * sys/nvcodec/gstcudacontext.h: + * sys/nvcodec/gstcudaloader.c: + * sys/nvcodec/gstcudaloader.h: + * sys/nvcodec/meson.build: + * sys/nvcodec/stub/cuda.h: + nvcodec: Add generic CUDA video convert object + Introducing generic video convert object similar to video-converter + but using CUDA. + Part-of: + +2019-10-16 22:42:24 +0900 Seungha Yang + + * sys/nvcodec/gstcudanvrtc.c: + * sys/nvcodec/gstcudanvrtc.h: + * sys/nvcodec/gstnvrtcloader.c: + * sys/nvcodec/gstnvrtcloader.h: + * sys/nvcodec/meson.build: + * sys/nvcodec/stub/nvrtc.h: + nvcodec: Add support runtime CUDA kernel source compilation + Add util functions for runtime CUDA kernel source compilation + using NVRTC library. Like other nvcodec dependent libraries, + NVRTC library will be loaded via g_module_open. + Note that the NVRTC library naming is not g_module_open friendly + on Windows. + (i.e., nvrtc64_{CUDA major version}{CUDA minor version}.dll). + So users can specify the dll name using GST_NVCODEC_NVRTC_LIBNAME + environment. + Part-of: + +2019-10-16 22:42:06 +0900 Seungha Yang + + * sys/nvcodec/gstcudabasetransform.c: + * sys/nvcodec/gstcudabasetransform.h: + * sys/nvcodec/gstcudadownload.c: + * sys/nvcodec/gstcudadownload.h: + * sys/nvcodec/gstcudaupload.c: + * sys/nvcodec/gstcudaupload.h: + * sys/nvcodec/meson.build: + * sys/nvcodec/plugin.c: + nvcodec: Add CUDA upload/download elements with base class for CUDA filters + Similar to glupload/gldownload elements but for CUDA memory. + It will help transfer memory between system and nvidia GPU + Part-of: + +2019-10-16 22:21:05 +0900 Seungha Yang + + * sys/nvcodec/gstnvbaseenc.c: + * sys/nvcodec/gstnvdec.c: + nvcodec: Peer direct access support + If support direct access each other, use device to device memory copy + without staging host memory + Part-of: + +2019-08-30 17:19:44 +0900 Seungha Yang + + * sys/nvcodec/gstcudacontext.c: + * sys/nvcodec/gstcudacontext.h: + * sys/nvcodec/gstcudaloader.c: + * sys/nvcodec/gstcudaloader.h: + cudacontext: Enable direct CUDA memory access over multiple GPUs + If each device context can access each other, enable peer access + for better interoperability. + Part-of: + +2019-08-30 13:57:15 +0900 Seungha Yang + + * sys/nvcodec/gstnvbaseenc.c: + * sys/nvcodec/gstnvbaseenc.h: + * sys/nvcodec/gstnvenc.c: + nvenc: Support CUDA buffer pool + When upstream support CUDA memory (only nvdec for now), we will create + CUDA buffer pool. + Part-of: + +2019-08-30 13:55:25 +0900 Seungha Yang + + * sys/nvcodec/gstnvdec.c: + * sys/nvcodec/gstnvdec.h: + nvdec: Support CUDA buffer pool + If downstream can accept CUDA memory caps feature (currently nvenc only), + always CUDA memory is preferred. + Part-of: + +2019-08-19 18:02:56 +0900 Seungha Yang + + * sys/nvcodec/gstcudabufferpool.c: + * sys/nvcodec/gstcudabufferpool.h: + * sys/nvcodec/gstcudaloader.c: + * sys/nvcodec/gstcudaloader.h: + * sys/nvcodec/gstcudamemory.c: + * sys/nvcodec/gstcudamemory.h: + * sys/nvcodec/meson.build: + * sys/nvcodec/stub/cuda.h: + nvcodec: Add CUDA specific memory and bufferpool + Introducing CUDA buffer pool with generic CUDA memory support. + Likewise GL memory, any elements which are able to access CUDA device + memory directly can map this CUDA memory without upload/download + overhead via the "GST_MAP_CUDA" map flag. + Also usual GstMemory map/unmap is also possible with internal staging memory. + For staging, CUDA Host allocated memory is used (see CuMemAllocHost API). + The memory is allowing system access but has lower overhead + during GPU upload/download than normal system memory. + Part-of: + +2020-10-16 12:29:02 +0100 Andrew Wesie + + * gst-libs/gst/codecparsers/gsth264parser.c: + codecparsers: h264parser: guard against ref_pic_markings overflow + Part-of: + +2020-10-16 00:48:01 +0100 Tim-Philipp Müller + + * ext/hls/gsthlssink2.c: + hlssink2: fix and flesh out docs + Part-of: + +2020-10-15 18:26:48 +0200 Stéphane Cerveau + + * ext/dash/gstxmlhelper.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-12 01:04:13 +0800 He Junyan + + * sys/d3d11/gstd3d11vp8dec.c: + d3d11: vp8dec: No need to check show_frame flag when output_picture. + The VP8 base class has already handled it for us. + Part-of: + +2020-10-12 00:57:24 +0800 He Junyan + + * gst-libs/gst/codecs/gstvp8decoder.c: + codecs: vp8decoder: handle the show_frame check in base class. + Move the show_frame check from sub class to vp8 decoder's base class. + Calling the sub class' output_picture() function only when the frame + is displayed and marking the other automatically as decode only. + This is done to avoid logic and code repetition in subclasses. + Part-of: + +2020-10-16 02:06:49 +0900 Seungha Yang + + * gst-libs/gst/codecs/gstvp9decoder.c: + * sys/d3d11/gstd3d11vp9dec.c: + codecs: vp9decoder: handle the show_frame check in base class + Same as vp8 decoder update https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1670 + Part-of: + +2020-10-15 12:08:19 -0400 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codecvp8dec.c: + v4l2codecs: vp8: Allow baseclass from skipping frames + In preparation for !1670, this will allow the base class from skipping frames + that should not be displayed. Previously it would complain about unordered + decoding taking place in the driver. + Part-of: + +2020-10-15 12:05:45 -0400 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2decoder.c: + v4l2codecs: decoder: Unmark previously pending request + requests are executed in order, so while dequeuing sink buffers for previous + request, also mark these request as no longer pending. This will allow reusing + the request later. + Part-of: + +2020-10-15 11:35:04 -0400 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2decoder.c: + v4l2codecs: decoder: Properly remove pending requests + Pass the pointer instead of NULL in order to find and remove properly any + pending request from the queue. This coding error was leading to use after + free in error and early exit cases. + Part-of: + +2020-10-14 19:04:44 +0800 He Junyan + + * sys/va/gstvabasedec.c: + va: basedec: Create the other pool anyway. + Fix a bug in _create_other_pool(). The old way of checking the + base->other_pool make that other_pool never be changed until the + gst_va_base_dec_stop() to stop the current decoding context. + But in some stream, the resolution may change during the decoding + process, and we need to re-negotiate the buffer pool. Then, the + old other_pool can not be clean correctly and the new correct one + can not be created. + Part-of: + +2020-10-14 16:54:54 +0800 He Junyan + + * sys/va/gstvabasedec.c: + va: basedec: Should unmap src frame when dst frame map failing. + Part-of: + +2020-10-13 15:28:24 +0800 He Junyan + + * sys/va/gstvapool.c: + va: bufferpool: use release_buffer to clean the mem. + The current bufferpool wastes all pre-allocate buffers when the + buffer pool is actived. + The pool->priv->size is 0 for va buffer pool. And every time, the + reset_buffer() will clean all mem and make the buffer size 0, that + can cache the gst_buffer in the buffer pool. + But when the buffer pool is activing, the default_start() just + allocate the buffer and release_buffer() immediately, all the pre + allocated buffers and surfaces are destroyed because of + gst_buffer_get_size (buffer) != pool->priv->size. + We need to use release_buffer() to do the clean job at the pool + start time. + Part-of: + +2020-10-04 02:02:16 +0900 Seungha Yang + + * gst/videoparsers/gsth265parse.c: + h265parse: Don't enable passthrough by default + SEI messages contain various information which wouldn't be conveyed + by using upstream CAPS (HDR, timecode for example). + Part-of: + +2020-10-13 13:11:06 +0300 Vivia Nikolaidou + + * docs/plugins/gst_plugins_cache.json: + * ext/opencv/gstcameracalibrate.cpp: + cameracalibrate: Improve gst-inspect documentation + Thanks to @kazz_naka on Twitter + Part-of: + +2020-10-07 21:13:09 +1100 Matthew Waters + + * ext/wpe/WPEThreadedView.cpp: + * ext/wpe/gstwpesrc.cpp: + wpesrc: add some debug logging around WPEView creation/destruction + Part-of: + +2020-10-07 21:14:55 +1100 Matthew Waters + + * ext/wpe/gstwpesrc.cpp: + wpesrc: fix a memory leak of the bytes + free the previous GBytes if load-bytes is called multiple times + before view creation. + Part-of: + +2020-10-06 22:19:21 +1100 Matthew Waters + + * ext/wpe/gstwpesrc.cpp: + wpesrc: only create webview if not already created + e.g. _decide_allocation() can be called multiple times throughout the + element's lifetime and we only want to create the view once rather than + overwriting. + Fixes a leak of the WPEView under certain circumstances. + Part-of: + +2020-10-02 12:06:59 +1000 Matthew Waters + + * ext/wpe/WPEThreadedView.cpp: + wpe: free a previous pending image/shm buffer + Don't blindly overwrite a possibly previously set buffer. + Part-of: + +2020-10-12 14:15:49 +0200 Jan Alexander Steffens (heftig) + + * ext/srt/gstsrtsrc.c: + srtsrc: Prevent `delay` from being negative + `delay` should be a GstClockTimeDiff since SRT time is int64_t. + All values are in local time so we should never see a srctime that's in + the future. If we do, clamp the delay to 0 and warn about it. + Part-of: + +2020-10-12 14:12:24 +0200 Jan Alexander Steffens (heftig) + + * ext/srt/gstsrtsrc.c: + srtsrc: Don't calculate a delay if the srctime is 0 + A zero srctime is a missing srctime. Apparently this can happen when + ["the connection is not between SRT peers or if Timestamp-Based Packet + Delivery mode (TSBPDMODE) is not enabled"][1] so it may not apply to us, + but it's best to be defensive. + [1]: https://github.com/Haivision/srt/blob/v1.4.2/docs/API.md#sending-and-receiving + Part-of: + +2020-10-12 14:09:28 +0200 Jan Alexander Steffens (heftig) + + * ext/srt/gstsrtsrc.c: + srtsrc: Defend against missing clock + If we don't have a clock, stop the source instead of asserting in + gst_clock_get_time. This can happen when the element is removed from the + pipeline while it's playing. + Part-of: + +2020-10-12 13:56:50 +0200 Marc Leeman + + * gst/rtp/gstrtpsink.h: + rtpmanagerbad: remove duplicate parent declaration + Part-of: + +2020-10-12 11:55:46 +0100 Tim-Philipp Müller + + * gst/rtmp2/gstrtmp2sink.c: + rtmp2sink: fix since marker on new "stop-commands" property + Part-of: + +2020-10-09 16:00:18 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvabasedec.c: + * sys/va/gstvabasedec.h: + * sys/va/gstvah264dec.c: + * sys/va/gstvavp8dec.c: + va: basedec: copy frames logic to decide_allocation() + Part-of: + +2020-10-09 15:47:43 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvabasedec.c: + va: basedec: refactor the other video pool instantiation + Just a code clean up + Part-of: + +2020-10-08 19:39:56 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvabasedec.c: + * sys/va/gstvabasedec.h: + * sys/va/gstvah264dec.c: + * sys/va/gstvavp8dec.c: + * sys/va/meson.build: + va: basedec: add gstvabasedec helper + This is a helper for all decoders. + It is not an abstract subclass, just merely a helper that avoids code + duplication among the decoders. + Part-of: + +2020-10-09 10:33:58 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvavp8dec.c: + va: vp8dec: add element documentation + Part-of: + +2020-10-09 12:27:12 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvah264dec.c: + va: h264dec: set video alignment definition earlier + This patch renames need_cropping variable to need_videoalign which is clearer + with its function. And now GstVideoAlignment is part of GstVaH264Dec structure, + so it can be set earlier. + Part-of: + +2020-10-05 16:40:55 -0400 Olivier Crête + + * ext/dtls/gstdtlsconnection.c: + dtlsconnection: Ignore OpenSSL system call errors + OpenSSL shouldn't be making real system calls, so we can safely + ignore syscall errors. System interactions should happen through + our BIO. So especially don't look at the system's errno, as it + should be meaningless. + Part-of: + +2020-09-12 02:48:43 +0200 Jan Alexander Steffens (heftig) + + * tests/check/elements/svthevcenc.c: + tests: svthevcenc: Fix test_encode_simple + Pick the same I420 format the other test use. Without this, the source + picks AYUV64, which fails. + Part-of: + +2020-10-07 18:03:20 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvaallocator.c: + * sys/va/gstvaallocator.h: + * sys/va/gstvah264dec.c: + * sys/va/gstvapool.c: + * sys/va/gstvapool.h: + * sys/va/gstvavp8dec.c: + * sys/va/gstvavpp.c: + va: allocator: add _set_format() and _get_format() + Since allocators keep an available memory queue to reuse, video format and usage + hint are now persistant while allocator's memories are around. + This patch adds _set_format() and _get_format() for both VA allocators. + _set_format() validates if given format can be used or reused. If no allocated + surface previously it creates a dummy one to fetch its offsets and + strides. Updated info is returned to callee. + GstVaPool uses _set_format() at config to verify the allocator capacity and to + get the surfaces offsets and strides, which are going to be used by the video + meta. + Allocator extracted caps are compared with caps from config and if they have + different strides or offsets, force_videometa is set. + A new bufferpool method gst_va_pool_requires_video_meta() is added return the + value of force_videometa. This value is checked in order to know if decoders + need to copy the surface if downstream doesn't announce video meta support. + Part-of: + +2020-10-08 14:10:41 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvacaps.c: + * sys/va/gstvacaps.h: + va: caps: added gst_caps_is_raw() + Part-of: + +2020-10-08 10:26:54 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvapool.c: + va: pool: call parent's start() method + Without preallocating buffers and memories a deadlock in pool allocator is + highly probably since it might hit the case were buffer is returned to the pool + but their memories are still hold by a copy downstream, without other + preallocated buffers available. + This kind of a hack, where buffer_reset() follow the normal path if it's called + from start(). + Part-of: + +2020-10-07 16:18:30 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvapool.c: + va: pool: fix log's object + Part-of: + +2020-10-08 10:30:28 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvaallocator.c: + va: allocator: remove noisy log message + Part-of: + +2020-10-07 11:08:49 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvaallocator.c: + va: allocator: add a todo for dmabuf_memories_setup() + It would be nice to add a surface pool for this type of surface allocation in + order to have a better control of them. + Part-of: + +2020-10-07 10:16:27 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvaallocator.c: + va: allocator: add a surface counter + Every time a new surface is created the counter increases by one, and when it is + destroyed (or will be destroyed in case of GstVaAllocator), the counter is + decreased. Then, at allocator dispose, it is warning if the counter is not zero. + This counter will be also used to check if the allocator can change its + configuration if the counter is zero or can not. + Part-of: + +2020-10-06 20:01:04 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvaallocator.c: + va: allocator: remove GstVideoInfo from GstVaBufferSurface + Don't store it them anymore since it is related with the negotiated stream and + not the concrete buffer. + Part-of: + +2020-10-06 19:54:26 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvaallocator.c: + * sys/va/gstvaallocator.h: + * sys/va/gstvadecoder.c: + * sys/va/gstvavpp.c: + va: remove GstVideoInfo parameter from _get_surface() functions + There shouldn't be need to retrieve GstVideoInfo per buffer or memory since it + is the same for all the negotiated stream. + Part-of: + +2020-10-06 19:40:16 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvavpp.c: + va: vpp: don't fetch video info from buffer + Instead of fetching video info from the buffer, use the already set ones. + Part-of: + +2020-10-07 12:49:44 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvah264dec.c: + * sys/va/gstvavp8dec.c: + * sys/va/gstvavpp.c: + va: dec, vpp: don't get buffer size from allocators + Since buffer size is now ignored by bufferpool there's no need to get tha value + from the allocator. + Part-of: + +2020-10-04 11:14:38 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvapool.c: + va: pool: ignore size in config + Part-of: + +2020-10-05 11:07:25 +0200 Guillaume Desmottes + + * gst/videoparsers/gsth265parse.c: + h265parse: set interlace-mode=interleaved on interlaced content + interlace-mode=alternate is a special case of interlace-mode=interleaved + where the fields are split using two different buffers. + We should use the latter instead of the former to no break compat with + elements supporting only 'interleaved'. + Decoders producing alternate, such as OMX on the Zynq, should change the + interlace-mode on their output caps. + Fix https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/825 + Part-of: + +2020-10-09 10:24:50 +0200 Jacek Tomaszewski + + * COPYING: + * COPYING.LIB: + Replace LGPL v2 with LGPL v2.1 in COPYING and remove COPYING.LIB + Part-of: + +2020-10-02 11:42:07 +0200 Jacek Tomaszewski + + * COPYING: + Replace GPL v2 with LGPL v2 in COPYING file + Fixes #1422 + https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1422 + Part-of: + +2020-10-08 17:52:05 +0200 Jan Alexander Steffens (heftig) + + * ext/srt/gstsrtsink.c: + srt: Consume the error from gst_srt_object_write + Instead of leaking it. + Part-of: + +2020-10-08 17:48:20 +0200 Jan Alexander Steffens (heftig) + + * ext/srt/gstsrtobject.c: + srt: Check socket state before retrieving payload size + The connection might be broken, which we should detect instead of just + aborting the write. + Part-of: + +2020-10-08 18:25:59 +0200 Jakub Adam + + * ext/x265/gstx265enc.c: + x265enc: fix deadlock on reconfig + Don't attempt to obtain encoder lock that is already held by + gst_x265_enc_encode_frame(). + Part-of: + +2020-10-07 11:04:30 +0300 Sebastian Dröge + + * pkgconfig/gstreamer-webrtc-uninstalled.pc.in: + * pkgconfig/gstreamer-webrtc.pc.in: + webrtc: Require gstreamer-sdp in the pkg-config file + Some headers include API from it. + Part-of: + +2020-10-06 11:45:36 +0200 Edward Hervey + + * ext/srt/gstsrtobject.c: + * ext/srt/gstsrtobject.h: + * ext/srt/gstsrtsrc.c: + * ext/srt/gstsrtsrc.h: + srtsrc: Fix timestamping + SRT provides the original timestamp of a packet (with drift/skew corrected for + local clock), which is what should be used for timestamping the outgoing + buffers. This ensures that we output the packets with the same timestamp (and by + extension rate) as the original feed. + Also detect if packets were dropped (by checking the sequence number) and + properly set DISCONT flag on the outgoing buffer. + Finally answer the latency queries + Part-of: + +2020-10-07 05:05:25 +0900 Seungha Yang + + * sys/mediafoundation/gstmfsourcereader.cpp: + mfvideosrc: Use only the first video stream per device + Non-first video stream might not be working with current + implementation. It could be non-video (e.g., photo source) and then + ReadSample() might be blocked forever. + Part-of: + +2020-10-08 03:15:21 +0900 Seungha Yang + + * docs/plugins/gst_plugins_cache.json: + * sys/decklink/gstdecklink.cpp: + * sys/decklink/gstdecklinkvideosink.cpp: + * sys/decklink/gstdecklinkvideosrc.cpp: + decklink: Update doc + Part-of: + +2020-10-08 01:39:42 +0900 Seungha Yang + + * sys/decklink/win/DeckLinkAPI.h: + * sys/decklink/win/DeckLinkAPI_i.c: + decklink: Update Windows headers with SDK 11.2 + Part-of: + +2020-10-08 01:33:35 +0900 Seungha Yang + + * sys/decklink/osx/DeckLinkAPI.h: + * sys/decklink/osx/DeckLinkAPIConfiguration.h: + * sys/decklink/osx/DeckLinkAPIDeckControl.h: + * sys/decklink/osx/DeckLinkAPIDiscovery.h: + * sys/decklink/osx/DeckLinkAPIDispatch.cpp: + * sys/decklink/osx/DeckLinkAPIModes.h: + * sys/decklink/osx/DeckLinkAPIStreaming.h: + * sys/decklink/osx/DeckLinkAPITypes.h: + * sys/decklink/osx/DeckLinkAPIVersion.h: + decklink: Update OSX headers with SDK 11.2 + Part-of: + +2019-06-25 11:51:32 +0200 Tim + + * sys/decklink/gstdecklink.cpp: + * sys/decklink/gstdecklink.h: + * sys/decklink/gstdecklinkvideosink.cpp: + * sys/decklink/gstdecklinkvideosink.h: + * sys/decklink/gstdecklinkvideosrc.cpp: + * sys/decklink/gstdecklinkvideosrc.h: + * sys/decklink/linux/DeckLinkAPI.h: + * sys/decklink/linux/DeckLinkAPIConfiguration.h: + * sys/decklink/linux/DeckLinkAPIDeckControl.h: + * sys/decklink/linux/DeckLinkAPIDiscovery.h: + * sys/decklink/linux/DeckLinkAPIDispatch.cpp: + * sys/decklink/linux/DeckLinkAPIModes.h: + * sys/decklink/linux/DeckLinkAPITypes.h: + * sys/decklink/linux/DeckLinkAPIVersion.h: + decklink: Updated DeckLink SDK to 11.2 to support DeckLink 8K Pro + Updated Decklink SDK to version 11.2 in order to support newer cards like the Decklink 8K Pro. + This required to replace the duplex property by a profile property. + Profile values can be the following: + - bmdProfileOneSubDeviceFullDuplex + - bmdProfileOneSubDeviceHalfDuplex + - bmdProfileTwoSubDevicesFullDuplex + - bmdProfileTwoSubDevicesHalfDuplex + - bmdProfileFourSubDevicesHalfDuplex + Fixes #987 + Part-of: + +2020-10-07 17:37:25 +0900 Seungha Yang + + * sys/mediafoundation/gstmfsourcereader.cpp: + mfvideosrc: Fix invalid memory access when outputting jpeg + Don't access unknown-dangerous-nonsense address + Part-of: + +2020-10-08 18:50:12 +0300 Sebastian Dröge + + * ext/webrtc/gstwebrtcbin.c: + * gst-libs/gst/webrtc/rtptransceiver.h: + * gst-libs/gst/webrtc/webrtc_fwd.h: + Revert "webrtc: Save the media kind in the transceiver" + This reverts commit f54d8e99457996303b8477b1f3a710f0fabd1cc6. + It breaks the CI until the C# bindings are fixed. + +2020-10-08 18:49:57 +0300 Sebastian Dröge + + * gst-libs/gst/webrtc/rtpsender.c: + * gst-libs/gst/webrtc/rtpsender.h: + Revert "rtpsender: Add API to set the priority" + This reverts commit a8b287c76472c8d7fd38800807c482d020ff4a63. + It breaks the CI until the C# bindings are fixed. + +2020-10-08 18:49:56 +0300 Sebastian Dröge + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/webrtctransceiver.h: + Revert "rtptransceiver: Store the SSRC of the current stream" + This reverts commit d1da271f255101dbe95a426d9f5065d300b53e5a. + It breaks the CI until the C# bindings are fixed. + +2020-10-08 18:49:55 +0300 Sebastian Dröge + + * ext/webrtc/gstwebrtcbin.c: + Revert "webrtcbin: Remove unused function" + This reverts commit 39723dbe934186c11f7b2a2b04c0af7932a1509c. + It breaks the CI until the C# bindings are fixed. + +2020-10-08 18:49:54 +0300 Sebastian Dröge + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/gstwebrtcbin.h: + * ext/webrtc/gstwebrtcice.c: + * ext/webrtc/gstwebrtcice.h: + * ext/webrtc/meson.build: + * ext/webrtc/sctptransport.c: + * ext/webrtc/sctptransport.h: + * ext/webrtc/webrtctransceiver.c: + * ext/webrtc/webrtctransceiver.h: + Revert "webrtc: Set the DSCP markings based on the priority" + This reverts commit 8ba08598bbe51f3b1f063ae22605f9608865f16b. + It breaks the CI until the C# bindings are fixed. + +2020-10-08 18:49:53 +0300 Sebastian Dröge + + * gst-libs/gst/webrtc/rtpreceiver.h: + * gst-libs/gst/webrtc/rtpsender.h: + * gst-libs/gst/webrtc/rtptransceiver.h: + Revert "webrtc: Document more objects" + This reverts commit ad68c6b1eb7c73c66dc9d1dbf1a8cc47fd489c61. + It breaks the CI until the C# bindings are fixed. + +2020-10-08 18:49:50 +0300 Sebastian Dröge + + * gst-libs/gst/webrtc/rtpsender.h: + * gst-libs/gst/webrtc/rtptransceiver.h: + Revert "webrtc: Add hotdoc style since tags" + This reverts commit 63a5fa818c31ecbe43891c077a38b6b162d73c28. + It breaks the CI until the C# bindings are fixed. + +2020-10-06 16:52:48 -0400 Olivier Crête + + * gst-libs/gst/webrtc/rtpsender.h: + * gst-libs/gst/webrtc/rtptransceiver.h: + webrtc: Add hotdoc style since tags + We're stuck having to add a separate comment for now. + Part-of: + +2020-10-02 21:38:00 -0400 Olivier Crête + + * gst-libs/gst/webrtc/rtpreceiver.h: + * gst-libs/gst/webrtc/rtpsender.h: + * gst-libs/gst/webrtc/rtptransceiver.h: + webrtc: Document more objects + Part-of: + +2020-07-08 17:24:36 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/gstwebrtcbin.h: + * ext/webrtc/gstwebrtcice.c: + * ext/webrtc/gstwebrtcice.h: + * ext/webrtc/meson.build: + * ext/webrtc/sctptransport.c: + * ext/webrtc/sctptransport.h: + * ext/webrtc/webrtctransceiver.c: + * ext/webrtc/webrtctransceiver.h: + webrtc: Set the DSCP markings based on the priority + This matches how the WebRTC javascript API works and the Chrome implementation. + Part-of: + +2020-07-09 13:45:20 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Remove unused function + Part-of: + +2020-07-09 13:42:35 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/webrtctransceiver.h: + rtptransceiver: Store the SSRC of the current stream + Part-of: + +2020-07-09 13:39:03 -0400 Olivier Crête + + * gst-libs/gst/webrtc/rtpsender.c: + * gst-libs/gst/webrtc/rtpsender.h: + rtpsender: Add API to set the priority + Part-of: + +2020-07-08 19:13:33 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + * gst-libs/gst/webrtc/rtptransceiver.h: + * gst-libs/gst/webrtc/webrtc_fwd.h: + webrtc: Save the media kind in the transceiver + Part-of: + +2020-10-06 13:39:23 +0200 Jan Alexander Steffens (heftig) + + * ext/srt/gstsrtobject.c: + srt: Remove unused sa_family tracking + Now that SRT no longer needs the family when creating the socket, this + code has become useless. + Part-of: + +2020-10-02 03:39:40 +0200 Niklas Hambüchen + + * ext/srt/gstsrtobject.c: + * ext/srt/meson.build: + srt: Move off deprecated `srt_socket()`. + See https://github.com/Haivision/srt/blob/73ee1e1a3e3adc2702a9a5057d101ef80447b38c/docs/API-functions.md#srt_socket + `srt_create_socket()` was added in + https://github.com/Haivision/srt/commit/4b897ba92d34f1829a1c6e419eeab17f0763a0fc + and srt `v1.3.0` is the first release that has it. + Part-of: + +2020-10-01 17:31:13 +0200 Jan Alexander Steffens (heftig) + + * ext/srt/gstsrt.c: + srt: Register a log handler + Part-of: + +2020-09-25 19:17:35 +0200 Jan Alexander Steffens (heftig) + + * ext/srt/gstsrtobject.c: + srt: Avoid removing invalid sockets from the polls + This would provoke error messages from SRT. + Part-of: + +2020-09-25 19:08:17 +0200 Jan Alexander Steffens (heftig) + + * ext/srt/gstsrtobject.c: + srt: Fix use of srt_startup + `srt_startup` can also return 1 if it was successful. Avoid warning in + this case. + Avoid a race when checking whether we need to call it at all. + Part-of: + +2020-10-06 12:35:12 +0200 Jan Alexander Steffens (heftig) + + * ext/srt/gstsrtobject.c: + srt: Fix parameter types used for socket options + The [SRT documentation][1] specifies exact types for the socket options. + Make sure we match these. + This reverts the linger workaround in commit 84f8dbd932029220ee86154dd + and extends srt_constant_params to support other types than int. + [1]: https://github.com/Haivision/srt/blob/master/docs/APISocketOptions.md + Part-of: + +2020-09-29 18:52:43 +0900 Seungha Yang + + * sys/d3d11/gstd3d11upload.c: + d3d11upload: Allow passthrough for system memory + ... like how d3d11download and gl{upload,download} do. + This should've been part of the commit 9b72b04daddafb1c86cb6ab5923c593a70bc4166 + but I missed. + Part-of: + +2020-10-04 10:01:31 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvaallocator.c: + va: allocator: refactor flush methods for both allocators + Since the logic is the same, it can be generalized in a single common + function. + Also the methods run the common function with a lock and signal the + buffers' conditional. + Part-of: + +2020-10-03 16:37:54 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvaallocator.c: + va: allocator: refactor GstVaDmabufAllocator + Move code down to group it. + Part-of: + +2020-10-03 16:30:14 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvaallocator.c: + va: allocator: refactor GstVaBuffersurface + Move code up and add namespace to methods, and renaming + _creating_buffer_surface() to the canonical + gst_va_buffer_surface_new() + Part-of: + +2020-09-30 19:35:14 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvaallocator.c: + * sys/va/gstvaallocator.h: + * sys/va/gstvapool.c: + va: implement pooled allocators + 1. Allocators don't implement memory free() methods since all the memories will + implement dispose() returning FALSE + 2. Memory/miniobject dispose() will act as memory release, enqueueing the + release memory + 3. A new allocator's method prepare_buffer() which queries the released memory + queue and will add the requiered memories to the buffer. + 4. Allocators added a GCond to synchronize dispose() and prepare_buffer() + 5. A new allocator's method flush() which will free for real the memories. + While the bufferpool will + 1. Remove all the memories at reset_buffer() + 2. Implement acquire_buffer() calling allocator's prepare_buffer() + 3. Implement flush_start() calling allocator's flush() + 4. start() is disabled since it pre-allocs buffers but also calls + our reset_buffer() which will drop the memories and later the + buffers are ditched, something we don't want. This approach avoids + buffer pre-allocation. + Part-of: + +2020-09-30 15:54:18 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvaallocator.c: + va: allocator: user gst_clear_object() for _buffer_surface_unref() + Event if this function is only used by gst_va_dmabuf_memories_setup(), it might + get reused later by GstVaDmabufAllocator's functions. This change makes the + function less fragile. + Part-of: + +2020-09-30 15:53:39 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvaallocator.c: + va: allocator: renamed gst_va_dmabuf_memory_release() + Part-of: + +2020-09-30 15:48:12 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvaallocator.c: + va: allocator: renamed available_mems queue + Part-of: + +2020-09-30 15:45:54 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvaallocator.c: + * sys/va/gstvaallocator.h: + * sys/va/gstvapool.c: + va: allocator: rename gst_va_dmabuf_allocator_setup_buffer() + Since it's related with GstVaDmabufAllocator. + Part-of: + +2020-09-29 15:03:11 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvaallocator.c: + va: allocator: calculated surface frame internally + Instead of using gst_buffer_get_size() just add the memory sizes reported by + exported fd. + Part-of: + +2020-09-28 16:59:44 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvaallocator.c: + va: allocator: make GstVaMemory shareable + Renamed the first variable member of GstVaMemory from parent to mem in + order to avoid confusion with GstMemory's parent. + When freeing the structure, memory's parent is check in order to + decide if surfaces has to be destroyed or not, since only the parent + class have to destroy it. + Removed GST_MEMORY_FLAG_NO_SHARE in memory initialization, since it is + deprecated. + Implemented allocator's share virtual method which creates a new + shallow GstVaMemory structure based on the passed one which will be + it's parent. + Part-of: + +2020-09-28 16:50:16 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvaallocator.c: + va: allocator: remove copy method for GstVaMemory + Since the memory has to be shareable. That will be address in the next + commits. + Part-of: + +2020-09-24 17:32:47 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvaallocator.c: + va: allocator: remove va allocator mem_is_span() vmethod + Since it is the default by base class. + Part-of: + +2020-10-01 03:47:13 +0900 Seungha Yang + + * sys/d3d11/gstd3d11download.c: + * sys/d3d11/gstd3d11upload.c: + * sys/d3d11/gstd3d11utils.c: + * sys/d3d11/gstd3d11utils.h: + d3d11upload/d3d11download: Make use of staging buffer + ... instead of direct cpu map for d3d11memory object. In this way, + we don't need per GstD3D11Memory staging texture. + Part-of: + +2020-10-03 18:53:46 +0900 Seungha Yang + + * sys/d3d11/gstd3d11bufferpool.c: + * sys/d3d11/gstd3d11memory.c: + * sys/d3d11/gstd3d11memory.h: + * sys/d3d11/gstd3d11utils.c: + * sys/d3d11/gstd3d11utils.h: + d3d11: Don't hold staging texture + Staging texture is used for memory transfer between system and + gpu memory. Apart from d3d11{upload,download} elements, however, + it should happen very rarely. + Before this commit, d3d11bufferpool was allocating at least one + staging texture in order to calculate cpu accessible memory size, + and it wasn't freed for later use of the texture unconditionally. + But it will increase system memory usage. Although GstD3D11memory + object is implemented so that support CPU access, most memory + transfer will happen in d3d11{upload,download} elements. + By this commit, the initial staging texture will be freed immediately + once cpu accessible memory size is calculated. + Part-of: + +2020-09-26 03:27:39 +0900 Seungha Yang + + * sys/d3d11/gstd3d11_fwd.h: + * sys/d3d11/gstd3d11basefilter.h: + * sys/d3d11/gstd3d11colorconvert.c: + * sys/d3d11/gstd3d11colorconvert.h: + * sys/d3d11/gstd3d11decoder.h: + * sys/d3d11/gstd3d11download.c: + * sys/d3d11/gstd3d11download.h: + * sys/d3d11/gstd3d11upload.c: + * sys/d3d11/gstd3d11upload.h: + * sys/d3d11/gstd3d11videosink.c: + * sys/d3d11/gstd3d11videosink.h: + * sys/d3d11/gstd3d11videosinkbin.c: + * sys/d3d11/gstd3d11videosinkbin.h: + d3d11: Move to G_DECLARE_FINAL_TYPE + ... and remove unnecessary forward declaration. + Part-of: + +2020-10-04 16:33:47 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvacaps.c: + * sys/va/gstvacaps.h: + * sys/va/gstvah264dec.c: + * sys/va/gstvavp8dec.c: + * sys/va/gstvavpp.c: + va: caps: centralize caps feature discovering + These function were repeated in the different implemented + elements. This patch centralize them. + The side effect is dmabuf memory type is no longer checked with the + current VAContext, but assuming that dmabuf is a consequence of caps + negotiation from dynamic generated caps templates, where the context's + memory types are validated, there's no need to validate them twice. + Part-of: + +2020-10-04 12:43:35 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvafilter.c: + va: filter: fix counter variable reuse + There was a bug reusing the counter variable i in nested loops. Also + the patch makes the code cleaner. + Part-of: + +2019-10-02 11:17:09 +0200 Lars Lundqvist + + * ext/curl/gstcurlbasesink.c: + curlbasesink: Add curl seek callback + Adding functionality to handle SEEK_SET enables rewinding of sent data. + In the HTTP case, this happens after an HTTP 401 has been received from + the other end. This will result in the sent data being resent. + Part-of: + +2020-09-29 15:52:21 +0300 Sebastian Dröge + + * docs/plugins/gst_plugins_cache.json: + * sys/decklink/gstdecklink.cpp: + decklink: Correctly order the different dependent mode tables + One was forgotten in 309f6187fef890c7ffa49305f38e89beac3b1423. + Part-of: + +2020-09-19 00:26:35 +0900 Seungha Yang + + * sys/wasapi/gstwasapisrc.c: + * sys/wasapi/gstwasapisrc.h: + wasapisrc: Make sure that wasapisrc produces data in loopback mode + An oddness of wasapi loopback feature is that capture client will not + produce any data if there's no outputting sound to corresponding + render client. In other words, if there's no sound to render, + capture task will stall. As an option to solve such issue, we can + add timeout to wake up from capture thread if there's no incoming data + within given time interval. But it seems to be glitch prone. + Another approach is that we can keep pushing silence data into + render client so that capture client can keep capturing data + (even if it's just silence). + This patch will choose the latter one because it's more straightforward + way and it's likely produce glitchless sound than former approach. + A bonus point of this approach is that loopback capture on Windows7/8 + will work with this patch. Note that there's an OS bug prior to Windows10 + when loopback capture client is running with event-driven mode. + To work around the bug, event signalling should be handled manually + for read thread to wake up. + Part-of: + +2020-09-29 23:46:00 +1000 Matthew Waters + + * ext/wpe/gstwpesrc.cpp: + wpesrc: fix some caps leaks using the non-GL output + Always chain up to the parent _stop() implementation as it unrefs some + caps (among other things). + Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1409 + Part-of: + +2020-06-16 11:16:37 +0900 Hosang Lee + + * ext/smoothstreaming/gstmssmanifest.c: + * ext/smoothstreaming/gstmssmanifest.h: + smoothstreaming: clear live adapter on seek + In live streaming, buffers sent by souphttpsrc are pushed to the live + adapter. The buffers in the adapter are sent out of mssdemux when it + is greater than 4096 bytes. + Occasionally, when seeking in live streams, if seek occurs just + after the last data chunk was received, and if this data chunk is + smaller than 4096 bytes, it will be kept in the live adapter. + This remaining data in the live adapter will be erroneously prepended + to the new data that is downloaded after seek and pushed out. + When qtdemux receives this data, since it does not start with + a moof box, it is impossible to demux the fragment, and bogus + size error will occur. + Clear out the live adapter on seek so that no unnecessary remaining + data is pushed out together with the new fragment after seeking. + Part-of: + +2020-09-30 10:47:45 +0200 Víctor Manuel Jáquez Leal + + * sys/va/plugin.c: + va: simplify VPP detection + Also the previous code failed if VPP was not present blacklisting the + plugin. + Part-of: + +2020-06-15 15:24:07 +0800 Haihao Xiang + + * sys/msdk/gstmsdkallocator.h: + * sys/msdk/gstmsdkallocator_libva.c: + * sys/msdk/gstmsdkcontext.h: + * sys/msdk/gstmsdkvideomemory.c: + msdk: call vaExportSurfaceHandle() to get DMABuf FD + Compared to vaAcquireBufferHandle(), vaExportSurfaceHandle() may + provide the handle details, so we needn't call vaDeriveImage(). + Part-of: + +2020-07-01 09:03:21 -0700 Ederson de Souza + + * ext/avtp/gstavtpcvfpay.c: + * tests/check/elements/avtpcrfcheck.c: + * tests/check/elements/avtpcrfsync.c: + * tests/check/elements/avtpcvfdepay.c: + tests/avtp: Fix coverity issues + Fixes sign extension issues, unchecked return values and some constant + expression results. + CID: 1465073, 1465074, 1465075, 1465076, 1465077 + Part-of: + +2020-07-08 09:08:31 -0700 Ederson de Souza + + * ext/avtp/gstavtpcvfdepay.c: + * ext/avtp/gstavtpcvfpay.c: + * ext/avtp/gstavtpsrc.c: + avtp: Change "%lu" for G_GUINT64_FORMAT + Part-of: + +2020-09-25 22:00:26 +0530 raghavendra + + * ext/srt/gstsrtobject.c: + srtobject: typecast SRTO_LINGER to linger + Part-of: + +2020-09-24 01:24:40 +0800 He Junyan + + * gst-libs/gst/codecparsers/gstvp8parser.c: + codecparsers: vp8parser: clear the frame_hdr before parsing. + Uninited frame_hdr may have garbage and may contain some wrong + results after the parsing process. + Part-of: + +2020-09-20 23:29:00 +0800 He Junyan + + * sys/va/gstvah264dec.c: + * sys/va/gstvavp8dec.c: + * sys/va/gstvavp8dec.h: + * sys/va/meson.build: + * sys/va/plugin.c: + va: Implement the VA vp8 decoder. + Part-of: + +2020-09-21 23:08:05 +0800 He Junyan + + * sys/va/gstvaallocator.h: + * sys/va/gstvadecoder.h: + * sys/va/gstvautils.h: + va: codestyle: Clear all tabs in header files + Part-of: + +2020-09-21 12:51:53 +0800 He Junyan + + * sys/va/gstvadecoder.c: + * sys/va/gstvadecoder.h: + * sys/va/gstvah264dec.c: + * sys/va/gstvautils.h: + va: util: make the _format_changed a common decoder function. + Part-of: + +2020-09-24 12:36:26 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvah264dec.c: + va: h264dec: allocate output buffers according DPB size + Instead of allocating the maximal number of references for output + buffers, this patch reduces the memory foot print in many cases by + just allocating the output buffers required for the DPB. + Part-of: + +2020-09-24 12:29:49 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvadecoder.c: + * sys/va/gstvadecoder.h: + * sys/va/gstvah264dec.c: + va: decoder: store output buffer rather than surface + GstVaDecodePicture stored the processed VASurfaceID, under the + assumption that the bufferpool with keep the referenced buffers, but + this approach is fragil. + This patch changes GstVaDecodePicture to store the output buffer, + which already contains its VASurfaceID, and provides a new method to + retrieve the VASurfaceID directly from picture. + Based on He Junyan patches for + https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1587 + Part-of: + +2020-09-23 20:08:46 +1000 Matthew Waters + + * sys/applemedia/videotexturecache-vulkan.mm: + vtdec/vulkan: use Shared storage mode for IOSurface textures + Fixes a debug assertion with i(Pad)OS 14: + 'IOSurface textures must use MTLStorageModeShared' + Part-of: + +2020-09-23 17:04:55 +0200 Jan Alexander Steffens (heftig) + + * gst/mpegtsmux/gstbasetsmux.c: + mpegtsmux: Restore intervals when creating TsMux + Otherwise the settings from the properties would be overwritten with + the defaults. + Part-of: + +2020-09-19 14:26:42 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvafilter.c: + * sys/va/gstvavpp.c: + * sys/va/plugin.c: + va: vpp: global lock to handle shared buffers + Add a global mutex to exclusive access to shared stream buffers, such + as DMABufs or VASurfaces after a tee: + LIBVA_DRIVER_NAME=iHD \ + gst-launch-1.0 v4l2src ! tee name=t t. ! queue ! \ + vapostproc skin-tone=9 ! xvimagesink \ + t. ! queue ! vapostproc ! xvimagesink + Part-of: + +2020-08-16 09:18:11 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvafilter.c: + * sys/va/gstvafilter.h: + * sys/va/gstvavpp.c: + * sys/va/gstvavpp.h: + * sys/va/meson.build: + * sys/va/plugin.c: + va: add vapostproc element + Video postprocessor for VA-API + Funcionalities: resize frames, change format, import buffers, apply + filters (such as denoise, sharpen, orientation, if driver offers them). + Part-of: + +2020-08-20 13:49:33 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvaallocator.c: + va: allocator: export composed layer for YUY2 and UYVY + This is a result of an error reported by i965 driver which only can + export composed layer for these formats. This seems to work too with + iHD. These formats are not exposed as native surfaces in Gallium. + Part-of: + +2020-08-19 16:52:10 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvaallocator.c: + * sys/va/gstvaallocator.h: + va: allocator: add gst_va_dmabuf_buffer_setup() + This function will take an array of DMABuf GstMemory and an array of + fd, and create a VASurfaceID with those fds. Later that VASurfaceID is + attached to each DMABuf through GstVaBufferSurface. + In order to free the surface GstVaBufferSurface now have GstVaDisplay + member, and _buffer_surface_unref() were added. + Part-of: + +2020-08-19 16:48:39 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvaallocator.c: + va: allocator: try to get VASurfaceID from every DMABuf allocator + Relax the check of the allocator type, because now the qdata can be + attached for other DMABuf allocators. + Part-of: + +2020-09-12 13:10:18 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvaallocator.c: + * sys/va/gstvavideoformat.c: + va: allocator: try to create surface without fourcc but chroma only + There are, in VPP, surfaces that doesn't support 4:2:2 fourccs but it + supports the chroma. So this patch gives that opportunity to the + driver. + This patch also simplifiies + gst_va_video_surface_format_from_image_format() to just an iterator + for surfaces available formats. + Part-of: + +2020-08-19 16:45:49 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvaallocator.c: + va: allocator: create surfaces with VASurfaceAttribExternalBuffers + Add a new parameter to _create_surfaces(): a pointer to + VASurfaceAttribExternalBuffers. + If it's defined the memory type is changed to DRM_PRIME, also a new item is + added to the VASurfaceAttrib array with + VASurfaceAttribExternalBufferDescriptor. + Also, the VASurfaceAttrib for pixel format is not mandatory anymore. If fourcc + parameter is 0, is not added in the array, relying on the chroma. This is + useful when creating surfaces for uploading or downloading images. + Part-of: + +2020-08-20 13:46:12 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvapool.c: + va: pool: use gst_object_replace() for allocator + Part-of: + +2020-09-16 19:14:30 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvadevice.c: + va: device: use gst_clear_object() + Part-of: + +2020-08-18 19:12:46 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvacaps.c: + * sys/va/gstvacaps.h: + va: caps: expose gst_caps_set_format_array() + Part-of: + +2020-09-22 19:59:41 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvah264dec.c: + va: vah264dec: fix documentation + Part-of: + +2020-09-23 10:58:43 +0200 Víctor Manuel Jáquez Leal + + * gst-libs/gst/codecs/gsth264decoder.c: + codecs: h264: unref leaked caps + Unref a leaked caps at set_latency(). + Part-of: + +2020-07-20 10:13:13 +0800 Haihao Xiang + + * sys/msdk/gstmsdk.c: + * sys/msdk/gstmsdkav1dec.c: + * sys/msdk/gstmsdkav1dec.h: + * sys/msdk/meson.build: + msdk: add support for AV1 decoding + Part-of: + +2020-09-19 21:43:24 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvautils.c: + va: utils: use GstObject for GstVaDisplay in context + Thus application could fetch the GstVaDisplay through the sync bus + without knowning the specific implementation, and sharing it or + extract properties. + Part-of: + +2020-09-19 21:36:58 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvautils.c: + va: utils: fix code style and wrong log message + Part-of: + +2020-09-14 09:48:48 +0100 Philippe Normand + + * ext/wpe/gstwpesrc.cpp: + wpe: Plug event leak + Handled events don't go through the default pad event handler, so they need to + be unreffed in this case. + Part-of: + +2020-08-25 01:57:55 +1000 Jan Schmidt + + * ext/wpe/gstwpesrc.cpp: + wpesrc: Don't crash if WPE doesn't generate a buffer. + On creating a 2nd wpesrc in a new pipeline in an app that already + has a runnig wpesrc, WPE sometimes doesn't return a buffer on request, + leading to a crash. This commit fixes the crash, but not the underlying + failure - a 2nd wpesrc can still error out instead. + Partially fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1386 + Part-of: + +2020-09-11 12:51:56 +0100 Philippe Normand + + * ext/wpe/WPEThreadedView.cpp: + wpe: Plug SHM buffer leaks + Fixes #1409 + Part-of: + +2020-09-10 14:39:58 +0100 Philippe Normand + + * ext/wpe/WPEThreadedView.cpp: + * ext/wpe/WPEThreadedView.h: + wpe: Move webview load waiting to WPEView + As waiting for the load to be finished is specific to the WebView, it should be + done from our WPEView, not from the WPEContextThread. This fixes issues where + multiple wpesrc elements are created in sequence. Without this patch the first + view might receive erroneous buffer notifications. + Fixes #1386 + Part-of: + +2020-09-11 18:17:20 +0530 Sanchayan Maity + + * docs/plugins/gst_plugins_cache.json: + * gst/audiobuffersplit/gstaudiobuffersplit.c: + * gst/audiobuffersplit/gstaudiobuffersplit.h: + audiobuffersplit: Add support for specifying output buffer size + Currently for buffer splitting only output duration can be specified. + Allow specifying a buffer size in bytes for splitting. + Consider a use case of the below pipeline + appsrc ! rptL16pay ! capsfilter ! rtpbin ! udpsink + Maintaining MTU for RTP transfer is desirable but in a scenario + where the buffers being pushed to appsrc do not adhere to this, + an audiobuffersplit element placed between appsrc and rtpL16pay + with output buffer size specified considering the MTU can help + mitigate this. + While rtpL16pay already has a MTU setting, in case of where an + incoming buffer has a size close to MTU, for eg. with a MTU of + 1280, a buffer of size 1276 bytes would be split into two buffers, + one of 1268 and other of 8 bytes considering RTP header size of + 12 bytes. Putting audiobuffersplit between appsrc and rtpL16pay + can take care of this. + While buffer duration could still be used being able to specify + the size in bytes is helpful here. + Part-of: + +2020-09-10 13:05:23 +0100 Philippe Normand + + * ext/wpe/WPEThreadedView.cpp: + wpe: Use proper callback for TLS errors signal handling + The load-failed and load-failed-with-tls-errors signals expect distinct callback + signatures. + Fixes #1388 + Part-of: + +2020-09-20 08:31:23 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvah264dec.c: + va: h264dec: add documentation + Part-of: + +2019-12-10 19:54:43 +0800 Haihao Xiang + + * sys/msdk/msdk.c: + msdk: enable GPUCopy + Note it works for system memory only + Part-of: + +2019-12-10 19:47:03 +0800 Haihao Xiang + + * sys/msdk/msdk.c: + msdk: call MFXInitEx instead of MFXInit + MFXInitEx has more control than MFXInit. The current setting in this + commit is identical to MFXInit + Part-of: + +2020-09-19 14:08:46 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvadecoder.c: + va: decoder: render picture only if data + Call vaRenderPicture() only if buffer or slice data is available. + Part-of: + +2020-09-17 19:54:28 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvadecoder.c: + va: decoder: warn if decode fails on a surface + Instead of logging error if a step fails, it logs a warning message + reducing the noise and obeying the rule for errors since the program + doesn't end + Part-of: + +2020-09-17 19:52:29 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvah264dec.c: + va: h264dec: check is pad has fixed caps at caps query + Otherwise it will always reply with the possible driver caps, which + generates problems with Web MSE players. + Part-of: + +2020-09-19 05:39:32 +0900 Seungha Yang + + * sys/va/gstvah264dec.c: + va: h264dec: Don't need to set pts/dts/duration on outputting frame + It will be handled by videodecoder baseclass + Part-of: + +2020-03-25 20:50:01 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/gstwebrtcice.c: + * ext/webrtc/meson.build: + webrtcbin: Accept end-of-candidate pass it to libnice + libnice now supports the concept of end-of-candidate, so use the API + for it. This also means that if you don't do that, the webrtcbin will + never declared the connection as failed. + This requires bumping the dependency to libnice 0.1.16 + Part-of: + +2020-09-17 17:39:25 -0400 Nicolas Dufresne + + * sys/kms/gstkmssink.c: + kmssink: Do not source using padded width/height + The width/height from the video meta can be padded width, height. But when + sourcing from padded buffer, we only want to use the valid pixels. This + rectangle is from the crop meta, orther it is deduces from the caps. The width + and height from the caps is save in the parent class, use these instead of the + GstVideoInfo when settting the src rectangle. + This fixes an issue with 1080p video displaying repeated or green at the + padded bottom 8 lines (seen with v4l2codecs). + Part-of: + +2020-09-18 01:41:35 +0900 Seungha Yang + + * sys/d3d11/gstd3d11colorconvert.c: + * sys/d3d11/gstd3d11colorconverter.c: + * sys/d3d11/gstd3d11device.c: + * sys/d3d11/gstd3d11download.c: + * sys/d3d11/gstd3d11format.c: + * sys/d3d11/gstd3d11format.h: + * sys/d3d11/gstd3d11memory.c: + * sys/d3d11/gstd3d11shader.c: + * sys/d3d11/gstd3d11upload.c: + * sys/d3d11/gstd3d11videosink.c: + * sys/d3d11/gstd3d11videosinkbin.c: + * tests/check/elements/d3d11colorconvert.c: + d3d11: Add support for packed 8bits 4:2:2 YUV formats + Note that newly added formats (YUY2, UYVY, and VYUY) are not supported + render target view formats. So such formats can be only input of d3d11convert + or d3d11videosink. Another note is that YUY2 format is a very common + format for hardware en/decoders on Windows. + Part-of: + +2020-08-26 17:48:06 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Merge the RTX SSRCs from all transceivers when bundling + Part-of: + +2020-09-15 17:09:57 +0200 Marian Cichy + + * ext/avtp/gstavtpaafdepay.c: + avtp: avtpaafdepay: fix crash when building caps + gst_caps_new_simple gets wrong types for rate and channel which + may lead to a crash. + As 64-bit values for rate, depth, format, channels does not + make much sense and since any other functionality in gstreamer + expects G_TYPE_INT for channels and rate, we should stick to that + Part-of: + +2020-06-09 10:10:12 +0800 Haihao Xiang + + * gst-libs/gst/codecparsers/gsth265parser.c: + * gst-libs/gst/codecparsers/gsth265parser.h: + * gst/videoparsers/gsth265parse.c: + * tests/check/libs/h265parser.c: + h265parse: recognize more HEVC extension streams + There are streams which have the right general_profile_idc and + general_profile_compatibility_flag, but don't have the right extension + flags. We may try to use chroma_format_idc and bit_depth to + recognize these streams. + e.g. + https://www.itu.int/wftp3/av-arch/jctvc-site/bitstream_exchange/draft_conformance/SCC/IBF_Disabled_A_MediaTek_2.zip + Part-of: + +2020-06-05 13:01:06 +0800 Haihao Xiang + + * gst-libs/gst/codecparsers/gsth265parser.c: + * tests/check/libs/h265parser.c: + h265parser: select the right profile for high throughput SCC stream + Currently screen-extended-high-throughput-444 is recognized as + screen-extended-main-444, screen-extended-high-throughput-444-10 is + recognized as screen-extended-main-444-10 because they have the same + extension flags, so without this patch, it is possible that a decoder + which supports SCC but doesn't support throughput SCC will try to decode + a throughput SCC stream. + e.g. + https://www.itu.int/wftp3/av-arch/jctvc-site/bitstream_exchange/draft_conformance/SCC/HT_A_SCC_Apple_2.zip + Part-of: + +2020-09-08 14:43:49 +0800 Randy Li (ayaka) + + * sys/msdk/gstmsdkvpp.c: + msdk: vpp: fixup passthrough checking for DMA + I think it is just a typo from e1a90f1ec9 + msdkvpp: Disable passthrough if memory capsfeature changes + Part-of: + +2020-09-15 17:51:51 +0200 Emmanuel Gil Peyrot + + * ext/wayland/wlshmallocator.c: + * meson.build: + waylandsink: Use memfd_create() when available + This (so-far) Linux- and FreeBSD-only API lets users create file + descriptors purely in memory, without any backing file on the filesystem + and the race condition which could ensue when unlink()ing it. + It also allows seals to be placed on the file, ensuring to every other + process that we won’t be allowed to shrink the contents, potentially + causing a SIGBUS when they try reading it. + This patch is best viewed with the -w option of git log -p. + It is an almost exact copy of Wayland commit + 6908c8c85a2e33e5654f64a55cd4f847bf385cae, see + https://gitlab.freedesktop.org/wayland/wayland/merge_requests/4 + Part-of: + +2020-09-10 21:19:43 +0900 Seungha Yang + + * gst-libs/gst/codecs/gstvp9decoder.c: + codecs: vp9decoder: Relying on upstream vp9parse for super frame handling + By this way, we can simplify the decoding flow. Moreover, we don't + need to worry about the case where multiple visible-frames are + composed in one super-frame, since upstream vp9parse will split + them per frame unit. + Part-of: + +2020-09-10 21:42:49 +0900 Seungha Yang + + * gst-libs/gst/codecs/gstvp9decoder.c: + * gst-libs/gst/codecs/gstvp9picture.c: + * gst-libs/gst/codecs/gstvp9picture.h: + codecs: vp9decoder: Remove unused pts variable + Part-of: + +2020-09-12 00:12:03 +0900 Seungha Yang + + * sys/d3d11/gstd3d11vp9dec.c: + d3d11vp9dec: Don't need to consider output_picture() call without GstVideoCodecFrame + Baseclass will be updated in order to ensure GstVideoCodecFrame. + Part-of: + +2020-09-10 20:32:13 +0900 Seungha Yang + + * sys/d3d11/gstd3d11vp9dec.c: + d3d11vp9dec: Specify profile and alignment on sink template + Set supported profile(s) on sink template caps, so that decodebin + can filter out this element if profile of given vp9 stream is not + supported by hardware decoder. + Part-of: + +2020-09-10 21:31:38 +0900 Seungha Yang + + * sys/d3d11/gstd3d11h264dec.c: + * sys/d3d11/gstd3d11h265dec.c: + * sys/d3d11/gstd3d11vp8dec.c: + * sys/d3d11/gstd3d11vp9dec.c: + d3d11decoder: Cleanup code + * Don't need to set pts/dts/duration on output buffer of frame. + it's handled by baseclass + * Remove meaningless debug output + Part-of: + +2020-08-22 12:44:16 +0200 Víctor Manuel Jáquez Leal + + * gst-libs/gst/codecs/gsth264decoder.c: + codecs: h264decoder: Calculate and set latency + Add gst_h264_decoder_set_latency(), which calculates and sets + latency on base decoder class, after new_sequence is called. + This assumes that in new_sequence() vmethod, callee negotiates + downstream caps. + Part-of: + +2020-08-22 12:47:23 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvah264dec.c: + Revert "va: h264dec: set latency" + This reverts commit 3aedef4c8601dcafb065d8095a927f1cd528056f. + Part-of: + +2020-09-14 14:42:36 +0300 Jordan Petridis + + * tests/check/gst-plugins-bad.supp: + validate: plug leak in gssdp + These are triggered by the webrtcbin tests + https://gitlab.gnome.org/GNOME/gssdp/-/issues/10 + +2020-09-04 23:34:16 +0800 yychao + + * gst-libs/gst/mpegts/gst-dvb-descriptor.c: + * gst-libs/gst/mpegts/gst-dvb-descriptor.h: + * gst/mpegtsdemux/tsdemux.c: + tsdemux: Parse Audio Preselection Descriptor + For Dolby AC4 audio experience, parsing PMTs/APD from transport stream layer for all available presentations. + Refer to ETSI EN 300 468 V1.16.1 (2019-05) + 1. 6.4.1 Audio preselection descriptor + 2. Table M.1: Mapping of codec specific values to the audio preselection descriptor + Part-of: + +2020-09-04 23:28:58 +0800 yychao + + * gst-libs/gst/mpegts/gstmpegtsdescriptor.c: + * gst-libs/gst/mpegts/gstmpegtsdescriptor.h: + * gst/mpegtsdemux/mpegtsbase.c: + * gst/mpegtsdemux/mpegtsbase.h: + * gst/mpegtsdemux/tsdemux.c: + tsdemux: Add new API for fetching extended descriptors + Part-of: + +2020-08-26 15:45:35 +1000 Matthew Waters + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/utils.h: + * ext/webrtc/webrtcsdp.c: + * ext/webrtc/webrtcsdp.h: + * tests/check/elements/webrtcbin.c: + webrtc: propagate more errors through the promise + Return errors on promises when things fail where available. + Things like parsing errors, invalid states, missing fields, unsupported + transitions, etc. + Part-of: + +2020-07-01 07:35:08 +0530 Nirbheek Chauhan + + * gst-libs/gst/vulkan/meson.build: + meson: Do not warn when a windowing system is not found + Error out when the vulkan option is enabled, and just print + a message() otherwise. This is more correct and also allows us to pass + --fatal-meson-warnings more reliably. + Part-of: + +2020-09-10 10:35:11 -0700 Adam Williamson + + * ext/opencv/meson.build: + opencv: set opencv_dep when option is disabled (#1406) + The examples build file checks opencv_dep, so it still needs to + be set even if the option is disabled. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1406 + Signed-off-by: Adam Williamson + Part-of: + +2020-09-10 23:12:10 +0200 Mathieu Duponchelle + + * ext/openh264/gstopenh264dec.cpp: + openh264dec: port to new request_sync_point() API + Part-of: + +2020-07-28 18:32:03 -0400 Nicolas Dufresne + + * gst-libs/gst/codecs/gsth264decoder.c: + * gst-libs/gst/codecs/gsth264decoder.h: + * gst-libs/gst/codecs/gsth264picture.c: + * gst-libs/gst/codecs/gsth264picture.h: + h264decoder: Fix various typos + Part-of: + +2020-07-28 18:39:52 -0400 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codech264dec.c: + v4l2slh264dec: Minor cleanup + Move few variables in their respective scope. + Part-of: + +2020-07-22 15:40:14 -0400 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codech264dec.c: + v4l2slh264dec: Fix B-Frame weight table + We where not setting the luma l1 weight table. + Part-of: + +2020-09-09 21:38:33 +0900 Seungha Yang + + * docs/plugins/gst_plugins_cache.json: + * gst/videoparsers/gstvp9parse.c: + * gst/videoparsers/gstvp9parse.h: + * gst/videoparsers/meson.build: + * gst/videoparsers/plugin.c: + * tests/check/elements/vp9parse.c: + * tests/check/elements/vp9parse.h: + * tests/check/meson.build: + videoparsers: Add vp9parse element + Adding vp9parse element to parse various stream information such as + resolution, profile, and so on. If upstream does not provide resolution and/or + profile, this would be useful for decodebin pipeline for autoplugging + suitable decoder element depending on template caps of each decoder element. + In addition, vp9parse element supports unpacking superframe into + single frame for decoders. The vp9 superframe is a frame which consists + of multiple frames (or superframe with one frame is allowed) followed by superframe + index block. Then unpacked each frame will be considered as normal frame + by decoder. The decision for unpacking will be done by downstream element's + "alignment" caps field, which can be "super-frame" or "frame". + If downstream specifies the "alignment" as "frame", + then vp9parse element will split an incoming superframe into single frames + and the superframe index (located at the end of the superframe) data + will be discarded by vp9parse element. + Part-of: + +2020-06-16 21:09:36 +0900 Seungha Yang + + * sys/mediafoundation/gstmfcapturewinrt.cpp: + * sys/mediafoundation/gstmfsourceobject.c: + * sys/mediafoundation/gstmfsourceobject.h: + * sys/mediafoundation/gstmfsourcereader.cpp: + * sys/mediafoundation/gstmfvideosrc.c: + * sys/mediafoundation/mediacapturewrapper.cpp: + * sys/mediafoundation/mediacapturewrapper.h: + mfvideosrc: Set timestamp on buffer when it's captured + Capture the timestamp immediately when new frame is arrived, + instead of doing that on ::create() method. There would be + time gap between captured time and outputting time. + Part-of: + +2020-09-04 16:53:03 +0200 Mathieu Duponchelle + + * docs/plugins/gst_plugins_cache.json: + * ext/closedcaption/gstline21enc.c: + * ext/closedcaption/gstline21enc.h: + * tests/check/elements/line21.c: + line21enc: add remove-caption-meta property + Similar to #GstCCExtractor:remove-caption-meta + Part-of: + +2020-09-04 02:38:58 +0200 Mathieu Duponchelle + + * docs/plugins/gst_plugins_cache.json: + * ext/closedcaption/gstline21enc.c: + * tests/check/elements/line21.c: + line21enc: heavily constrain video height + We can only determine a correct placement for the CC line + with: + * height == 525 (standard NTSC, line 21 / 22) + * height == 486 (NTSC usable lines + 6 lines for VBI, line 1 / 2) + Part-of: + +2020-09-04 02:33:52 +0200 Mathieu Duponchelle + + * ext/closedcaption/gstline21enc.c: + line21enc: add support for CDP closed caption meta + Part-of: + +2020-08-27 11:23:01 +0200 Edward Hervey + + * gst-libs/gst/adaptivedemux/gstadaptivedemux.c: + adaptivedemux: Add another nominal bitrate fallback calculation + Some HTTP servers don't provide fragment sizes (with the Content-Length HTTP + header). In order to still figure out a nominal bitrate (for usage by queue2), + calculate on when we're done downloading a fragment. + Part-of: + +2020-08-27 11:18:56 +0200 Edward Hervey + + * gst-libs/gst/adaptivedemux/gstadaptivedemux.c: + adaptivedemux: Handle invalid HTTP duration + The default BYTE DURATION basesrc query handler will return `-1` and TRUE. In + order to properly handle cases where upstream http servers didn't return a valid + Content-Length we also need to check whether it was valid when calculating + bitrates. + Avoids returning completely bogus bitrates with gogol's video streaming services + Part-of: + +2020-08-12 20:31:32 +0900 Seungha Yang + + * sys/mediafoundation/gstmfvideobuffer.cpp: + * sys/mediafoundation/gstmfvideobuffer.h: + * sys/mediafoundation/gstmfvideoenc.cpp: + * sys/mediafoundation/meson.build: + * sys/mediafoundation/plugin.c: + mfvideoenc: Add support for zero-copy encoding + Add custom IMFMediaBuffer and IMF2DBuffer implementation in order to + keep track of lifecycle of Media Foundation memory object. + By this new implementation, we can pass raw memory of upstream buffer + to Media Foundation without copy. + Part-of: + +2020-09-01 13:28:44 +0200 Jan Alexander Steffens (heftig) + + * gst/rtmp2/gstrtmp2sink.c: + * gst/rtmp2/gstrtmp2src.c: + * gst/rtmp2/rtmp/rtmpconnection.c: + rtmp2: Replace stats queue with stats lock + Making the thread receiving the stats wait on the loop to respond was + not a good idea, as the latter can get blocked on the streaming thread. + Have get_stats read the values directly, adding a lock to ensure we + don't read garbage. + Part-of: + +2020-08-19 14:51:17 +0300 Nazar Mokrynskyi + + * docs/meson.build: + * gst/rtmp2/gstrtmp2sink.c: + * gst/rtmp2/rtmp/rtmpclient.h: + rtmp2sink: add docs section with since marker on new stop-commands property + Part-of: + +2020-08-18 19:16:40 +0300 Nazar Mokrynskyi + + * docs/plugins/gst_plugins_cache.json: + * gst/rtmp2/gstrtmp2sink.c: + rtmp2: fix code style, update documentation cache + Part-of: + +2020-08-18 14:05:26 +0200 Jan Alexander Steffens (heftig) + + * gst/rtmp2/gstrtmp2.c: + * gst/rtmp2/gstrtmp2sink.c: + * gst/rtmp2/rtmp/rtmpclient.c: + * gst/rtmp2/rtmp/rtmpclient.h: + rtmp2: Clean up (improve) GstRtmpStopCommands type + Part-of: + +2020-05-02 04:49:42 +0300 Nazar Mokrynskyi + + * gst/rtmp2/gstrtmp2sink.c: + * gst/rtmp2/rtmp/rtmpclient.c: + * gst/rtmp2/rtmp/rtmpclient.h: + rtmp2sink: handle EOS event and close stream + https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1285 + Part-of: + +2020-09-02 15:29:49 +0200 Jan Alexander Steffens (heftig) + + * gst/mpegtsmux/gstbasetsmux.c: + * gst/mpegtsmux/gstbasetsmux.h: + mpegtsmux: Make handling of sinkpads thread-safe + Ensure we take the object lock while accessing `GstElement.sinkpads`. + Use an iterator when the code isn't simple to avoid deadlock. + When we find the best pad, take a reference so a concurrent pad + release doesn't destroy the pad before we're done with it. + Part-of: + +2020-09-01 13:29:30 +0200 Jan Alexander Steffens (heftig) + + * ext/hls/gsthlssink2.c: + hlssink2: Actually release splitmuxsink's pads + It was looking at the "outer" peer of the ghost pad, not the "inner" + peer (the target). + It provided the wrong pad to gst_element_release_request_pad. + Part-of: + +2020-09-08 10:48:56 +0200 Edward Hervey + + * gst/mpegtsmux/gstbasetsmux.c: + mpegtsmux: Don't create streams with reserved PID + There are quite a few reserved PID in the various MPEG-TS (and derivate) + specifications which we should definitely not use. Those PID have a certain + meaning and purpose. + Furthermore, a lot of the code in the muxer implementation also makes assumption + on the purpose of streams based on their PID. + Therefore, when requesting a pad with a specific PID, make sure it is not a + restricted PID. + Part-of: + +2020-09-08 17:30:42 +0100 Tim-Philipp Müller + + * .gitlab-ci.yml: + ci: include template from gst-ci master branch again + +2020-09-08 16:58:50 +0100 Tim-Philipp Müller + + * meson.build: + Back to development + === release 1.18.0 === 2020-09-08 00:07:45 +0100 Tim-Philipp Müller + * .gitlab-ci.yml: * ChangeLog: * NEWS: * README: diff --git a/NEWS b/NEWS index dba9c7c47..cc6c3b4a8 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 300b39868..c95e53e28 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 9229fa19b..775ec214b 100644 --- a/RELEASE +++ b/RELEASE @@ -1,18 +1,15 @@ -This is GStreamer gst-plugins-bad 1.18.0. +This is GStreamer gst-plugins-bad 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/gst-plugins-bad.doap b/gst-plugins-bad.doap index 57c427405..77d01f058 100644 --- a/gst-plugins-bad.doap +++ b/gst-plugins-bad.doap @@ -33,6 +33,16 @@ real live maintainer, or some actual wide use. + + + 1.19.1 + master + + 2021-06-01 + + + + 1.18.0 diff --git a/meson.build b/meson.build index c69ae9c9d..d3156f542 100644 --- a/meson.build +++ b/meson.build @@ -1,5 +1,5 @@ project('gst-plugins-bad', 'c', 'cpp', - version : '1.19.0.1', + version : '1.19.1', meson_version : '>= 0.54', default_options : [ 'warning_level=1', 'buildtype=debugoptimized' ]) -- cgit v1.2.1