From ca8068c6d793d7aaa6f2e2cc6324fdedfe2f33fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= Date: Thu, 23 Sep 2021 01:34:47 +0100 Subject: Release 1.19.2 --- ChangeLog | 3763 ++++++++++++++++++++++++++++++++++++++++++++++++++ NEWS | 25 +- RELEASE | 2 +- gst-plugins-bad.doap | 10 + meson.build | 2 +- 5 files changed, 3789 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index acb734309..944e7f8d3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,3766 @@ +=== release 1.19.2 === + +2021-09-23 01:34:47 +0100 Tim-Philipp Müller + + * ChangeLog: + * NEWS: + * RELEASE: + * gst-plugins-bad.doap: + * meson.build: + Release 1.19.2 + +2021-09-22 14:17:35 -0400 Nicolas Dufresne + + * gst/audiobuffersplit/gstaudiobuffersplit.c: + audiobuffersplit: Remove unneeded buffer_clip wrapper + This is just a small cleanup noticed while reading. + Part-of: + +2020-07-10 19:31:13 +0530 Vivek R <123vivekr@gmail.com> + + * ext/opencv/gstcvtracker.cpp: + * ext/opencv/gstcvtracker.h: + opencv: cvtracker: add draw property + This property controls the drawing of rectangle around the tracked object. + Part-of: + +2020-05-24 23:37:25 +0530 Vivek R <123vivekr@gmail.com> + + * docs/plugins/gst_plugins_cache.json: + * ext/opencv/gstcvtracker.cpp: + * ext/opencv/gstcvtracker.h: + * ext/opencv/gstopencv.cpp: + * ext/opencv/meson.build: + * tests/meson.build: + * tests/validate/meson.build: + * tests/validate/opencv/cvtracker.validatetest: + * tests/validate/opencv/cvtracker/flow-expectations/log-tracker-src-expected: + opencv: add cvtracker plugin + This adds an object tracker plugin. + Tracker implementations from https://docs.opencv.org/3.4/d0/d0a/classcv_1_1Tracker.html + Part-of: + +2020-05-25 10:35:30 +0530 Vivek R <123vivekr@gmail.com> + + * ext/opencv/meson.build: + opencv: patch to ensure headers are detected + This patch is used to ensure opencv headers are detected. + Part-of: + +2021-09-19 01:18:00 +0100 Tim-Philipp Müller + + * gst/mpegpsmux/mpegpsmux_aac.c: + * gst/mpegpsmux/mpegpsmux_aac.h: + * gst/mpegpsmux/mpegpsmux_h264.c: + * gst/mpegpsmux/mpegpsmux_h264.h: + * gst/mpegtsmux/gstatscmux.c: + * gst/mpegtsmux/gstatscmux.h: + * gst/mpegtsmux/gstbasetsmux.c: + * gst/mpegtsmux/gstbasetsmux.h: + * gst/mpegtsmux/gstbasetsmuxaac.c: + * gst/mpegtsmux/gstbasetsmuxaac.h: + * gst/mpegtsmux/gstbasetsmuxjpeg2000.c: + * gst/mpegtsmux/gstbasetsmuxjpeg2000.h: + * gst/mpegtsmux/gstbasetsmuxopus.c: + * gst/mpegtsmux/gstbasetsmuxopus.h: + * gst/mpegtsmux/gstbasetsmuxttxt.c: + * gst/mpegtsmux/gstbasetsmuxttxt.h: + * gst/mpegtsmux/gstmpegtsmux.c: + * gst/mpegtsmux/gstmpegtsmux.h: + * gst/mpegtsmux/gstmpegtsmuxplugin.c: + * gst/mpegtsmux/tsmux/tsmux.c: + * gst/mpegtsmux/tsmux/tsmux.h: + * gst/mpegtsmux/tsmux/tsmuxcommon.h: + * gst/mpegtsmux/tsmux/tsmuxstream.c: + * gst/mpegtsmux/tsmux/tsmuxstream.h: + mpegtsmux, mpegpsmux: remove GPL from choice of licenses and add SPDX license identifiers + Some people need to avoid inclusion of GPL code for their use cases and thus + get easily spooked by GPL license headers. This code is actually licensed + under different licenses, only one of which is GPL, and it's already possible + to just upgrade from LGPL to GPL anyway so having the GPL listed explicitly + as one of the choices doesn't really add anything. So remove GPL from the list + and also add SPDX license identifiers while we're at it. + Part-of: + +2021-08-24 03:54:27 +0900 Seungha Yang + + * sys/wasapi/gstmmdeviceenumerator.cpp: + * sys/wasapi/gstmmdeviceenumerator.h: + * sys/wasapi/gstwasapidevice.c: + * sys/wasapi/gstwasapidevice.h: + * sys/wasapi/gstwasapisink.c: + * sys/wasapi/gstwasapisink.h: + * sys/wasapi/gstwasapisrc.c: + * sys/wasapi/gstwasapisrc.h: + * sys/wasapi/gstwasapiutil.c: + * sys/wasapi/gstwasapiutil.h: + * sys/wasapi/meson.build: + * tests/check/elements/wasapi.c: + wasapideviceprovider: Add support for dynamic device add/remove + Adding IMMDeviceEnumerator::RegisterEndpointNotificationCallback + in order to support device monitoring. + On OnDeviceAdded(), OnDeviceRemoved(), and OnDefaultDeviceChanged() + callback, wasapi device provider implementation will enumerate + devices again and will notify newly added and removed device + via GstDeviceProvider API. + As a bonus point, this IMMDeviceEnumerator abstraction object + will spawn a dedicated internal COM thread, so various COM thread + related issues of WASAPI plugin can be resolved by this commit. + Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1649 + Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1110 + Part-of: + +2021-02-01 16:21:59 +0100 Stéphane Cerveau + + * tests/check/elements/openjpeg.c: + * tests/check/meson.build: + openjpeg: add unit test + Test various format supported with subframes. + Part-of: + +2021-01-22 10:39:56 +0100 Stéphane Cerveau + + * docs/plugins/gst_plugins_cache.json: + * ext/openjpeg/gstopenjpegdec.c: + * ext/openjpeg/gstopenjpegenc.c: + * gst/videoparsers/gstjpeg2000parse.c: + jpeg2000parse + openjpeg: Switch striped mode to its own caps + It's not compatible with any other element that use the non-striped + mode. In addition, in this mode, we require that every frame have the + same number of stripes or that the MARKER bit be present, which is + different from the other + formats too. + Part-of: + +2020-12-23 11:03:34 +0100 Stéphane Cerveau + + * ext/openjpeg/gstopenjpegdec.c: + openjpegdec: Fix crash with AYUV64 in subframe mode + Remove useless generic fill_frame methods to use + the packed one for AYUV and AYUV64. + Fix gst-launch-1.0 -v videotestsrc ! + video/x-raw,width=640,height=480,format=AYUV64 ! openjpegenc + num-stripes=8 ! openjpegdec max-threads=8 ! videoconvert ! + autovideosink sync=false + Part-of: + +2020-04-24 16:15:42 +0200 Stéphane Cerveau + + * ext/openjpeg/gstopenjpeg.h: + * ext/openjpeg/gstopenjpegdec.c: + * ext/openjpeg/gstopenjpegdec.h: + openjpegdec: support for a multithreaded decoding. + Part-of: + +2020-01-13 14:02:39 -0500 Aaron Boxer + + * ext/openjpeg/gstopenjpegdec.c: + * ext/openjpeg/gstopenjpegdec.h: + openjpegdec: enable sub frame mode + Rebuild output frame from multiple stripes input. + Keep the first frame and fill it with the following stripes to finish + a complete frame only once. + Part-of: + +2020-12-22 18:19:40 -0500 Olivier Crête + + * docs/plugins/gst_plugins_cache.json: + * gst/mpegtsmux/gstmpegtsmux.c: + mpegtsmux: Require frame alignment for JPEG 2000 + We have yet to implement stripe alignment with the required descriptor. + Part-of: + +2020-12-22 18:15:52 -0500 Olivier Crête + + * docs/plugins/gst_plugins_cache.json: + * ext/openjpeg/gstopenjpegdec.c: + openjpegdec: Reject stripes for now + They're not implemented. + Part-of: + +2020-12-22 18:20:35 -0500 Olivier Crête + + * ext/openjpeg/gstopenjpegenc.c: + openjpegenc: Only allow stripe with image/x-jpc format + It's the only format that our MPEG-TS muxer allows and the carriage of + JPEG 2000 stripes is only defined for MPEG-TS as far as I know. + Part-of: + +2020-04-21 20:56:03 +0200 Stéphane Cerveau + + * docs/plugins/gst_plugins_cache.json: + * ext/openjpeg/gstopenjpeg.h: + * ext/openjpeg/gstopenjpegenc.c: + * ext/openjpeg/gstopenjpegenc.h: + openjpegenc: support for a multithreaded encoding. + This commit introduces a multithreaded encoder allowing + to encode mulitple stripes or subframes in separated threads. + This feature aims to enhance the overall latency of a codec + pipeline. + Part-of: + +2021-09-18 12:02:15 +0100 Philippe Normand + + * ext/wpe/WPEThreadedView.cpp: + wpe: context thread dispatch fixes + Use dedicated mutex/cond/flag for jobs being dispatched in the context thread. + The previous code was signalling the thread startup condition, which is wrong. + When WPEContextThread::dispatch() is invoked it means the thread has already + correctly been started up. + Part-of: + +2021-09-18 12:01:39 +0100 Philippe Normand + + * ext/wpe/WPEThreadedView.cpp: + * ext/wpe/WPEThreadedView.h: + wpe: Properly wait on context thread startup condition + Fixes #1661 + Part-of: + +2021-09-20 09:41:32 -0400 Nicolas Dufresne + + * docs/plugins/gst_plugins_cache.json: + doc: Update kmssink caps cache + Part-of: + +2021-09-17 16:21:39 -0400 Nicolas Dufresne + + * sys/kms/gstkmsutils.c: + kmssink: Add RGB16/BGR16 support + Part-of: + +2021-09-17 16:14:36 -0400 Nicolas Dufresne + + * sys/kms/gstkmsutils.c: + kmssink: Sort format according to GST_VIDEO_FORMATS_ALL + Part-of: + +2021-09-17 15:42:25 -0400 Nicolas Dufresne + + * sys/kms/gstkmsutils.c: + kmssink: Remove big endian format inversion + This has been a bad interpretation of the DRM docuemntation. The formats are + fixed regardless the CPU, but for some formats, they expressed in the opposite + order as GStreamer. Same change was done in waylandsink 2 years ago. + https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/commit/b393b650ab9bfb9654fc116163ab331907216d74 + Part-of: + +2021-09-17 15:41:41 -0400 Nicolas Dufresne + + * sys/kms/gstkmsutils.c: + kmssink: Add NV61 support + This identically handled to NV16, so no reason not to inclue it. + Part-of: + +2021-09-17 15:39:54 -0400 Nicolas Dufresne + + * sys/kms/gstkmsutils.c: + kmssink: Add NV24 support + This was tested on RK3566 platform, using vendor DRM driver. + Part-of: + +2021-09-18 00:33:12 +0900 Seungha Yang + + * gst-libs/gst/codecs/gstav1decoder.c: + * gst-libs/gst/codecs/gstav1decoder.h: + * sys/d3d11/gstd3d11av1dec.cpp: + * sys/va/gstvaav1dec.c: + codecs: av1decoder: Use GstFlowReturn everywhere + The same modification as that of VP8 decoder + Part-of: + +2021-09-18 00:09:24 +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: Use GstFlowReturn everywhere + The same modification as that of VP8 decoder + Part-of: + +2021-09-17 23:23:06 +0900 Seungha Yang + + * gst-libs/gst/codecs/gstvp8decoder.c: + * gst-libs/gst/codecs/gstvp8decoder.h: + * sys/d3d11/gstd3d11vp8dec.cpp: + * sys/nvcodec/gstnvvp8dec.c: + * sys/v4l2codecs/gstv4l2codecvp8dec.c: + * sys/va/gstvavp8dec.c: + codecs: vp8decoder: Use GstFlowReturn everywhere + boolean return value is not sufficient for representing the reason + of error in most cases. For instance, any errors around new_sequence() + would mean negotiation error, not just *ERROR*. + And some subclasses will allocate buffer/memory/surface on new_picture() + but it could be failed because of expected error, likely flushing + Part-of: + +2021-08-16 18:15:42 +0300 Vivia Nikolaidou + + * gst/mpegtsdemux/mpegtspacketizer.c: + mpegtspacketizer: memcmp potentially seen_before data + Theoretically the version number is incremented every time there's a new + section, but in a world of streaming we can't easily make that + assumption. + An example of a broken use case is when we're cat-ing two mpeg-ts files + together, which is equivalent of capturing a DVB stream while switching + channels. A set-top box would know that we switched the channels and + reset the demuxer, but in practice this might not happen. + Part-of: + +2021-09-20 11:35:51 +0300 Sebastian Dröge + + * gst-libs/gst/play/gstplay-media-info.c: + * gst-libs/gst/play/gstplay.c: + * gst-libs/gst/player/gstplayer-media-info.c: + * gst-libs/gst/player/gstplayer.c: + player: Fix/add various annotations + Part-of: + +2021-09-18 18:07:43 +0900 Seungha Yang + + * sys/va/meson.build: + meson: va: Make AV1 support always optional + Otherwise meson configure with -Dva=enabled will be failed + when installed libva version is < 1.8 + Part-of: + +2021-09-18 11:03:16 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvacaps.c: + va: caps: Don't use image formats for decoded frames. + Initially we tried to use the internal color conversion used in i965 + and Gallium drivers when decoding. But this approach has showed + limitations and problems. + This patch removes completely the possible color conversion at + decoding, since it show problems with deinterlacing, for example: + gst-launch-1.0 filesrc location=interlaced.mpg2 ! parsebin ! vampeg2dec ! vadeinterlace ! xvimagesink + Allowing only the surface formats when decoding is more stable. + For color conversion is better to do it explicitly with vapostproc. + Part-of: + +2021-04-27 11:59:15 +0200 Marijn Suijten + + * gst-libs/gst/player/gstplayer-media-info.c: + * gst-libs/gst/player/gstplayer.c: + player: Add missing nullable annotations + Part-of: + +2021-04-27 11:58:58 +0200 Marijn Suijten + + * gst-libs/gst/play/gstplay-media-info.c: + * gst-libs/gst/play/gstplay.c: + play: Add missing nullable annotations + Part-of: + +2021-09-18 14:29:25 +0200 Fabian Orccon + + * sys/shm/meson.build: + sys: shm: Define shm_enable and shm_deps before escape meson subdir + Fixes meson configure in tests if the shm plugin is disabled + Fixes #1664 + Part-of: + +2021-09-18 02:27:51 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videosink.cpp: + * sys/d3d11/gstd3d11window.cpp: + * sys/d3d11/gstd3d11window.h: + * sys/d3d11/gstd3d11window_win32.cpp: + d3d11videosink: Display title of content if possible + Update title text of window (currently it's always "Direct3D11 renderer") + when we are rendering on internal HWND, not external HWND. + Part-of: + +2021-09-18 01:32:11 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videosink.cpp: + d3d11videosink: Remove unused enum value + Part-of: + +2021-09-15 13:59:17 +0800 Mengkejiergeli Ba + + * sys/msdk/gstmsdkenc.c: + msdkenc: Pass color properties to MediaSDK for encoding + Part-of: + +2021-09-15 16:32:02 +0800 Mengkejiergeli Ba + + * sys/msdk/gstmsdkh265enc.c: + * sys/msdk/gstmsdkh265enc.h: + msdkh265enc: Add profile main10 still picture for hevc + Part-of: + +2021-09-16 17:12:58 -0400 Nicolas Dufresne + + * ext/wayland/gstwaylandsink.c: + * ext/wayland/wlbuffer.c: + waylandsink: Fix double render check + Our code does not support rendering twice the same wl_buffer in a row, so it + tries to skip that case, but for this it relied on the GstBuffer pointer, + while the cache actually works at the GstMemory level now. To avoid this + compare the GstWlBuffer instead. + This fixes crash when use in zero-copy with videorate element. + Part-of: + +2021-09-07 09:45:54 +0200 Víctor Manuel Jáquez Leal + + * gst-libs/gst/codecs/gstmpeg2decoder.c: + codecs: mpeg2decoder: Use tsg framerate for latency. + Latency setting relies on src pad caps, but they aren't set when the + function is called, and latency is never updated. + In order to fix it, this patch uses TSG framerate first, and if it's + not set yet, sinkpad caps are used to get the framerate. + Part-of: + +2021-09-16 00:59:37 +0900 Seungha Yang + + * sys/d3d11/gstd3d11av1dec.cpp: + * sys/d3d11/gstd3d11av1dec.h: + * sys/d3d11/gstd3d11decoder.cpp: + * sys/d3d11/gstd3d11decoder.h: + * sys/d3d11/gstd3d11h264dec.cpp: + * sys/d3d11/gstd3d11h264dec.h: + * sys/d3d11/gstd3d11h265dec.cpp: + * sys/d3d11/gstd3d11h265dec.h: + * sys/d3d11/gstd3d11mpeg2dec.cpp: + * sys/d3d11/gstd3d11mpeg2dec.h: + * sys/d3d11/gstd3d11vp8dec.cpp: + * sys/d3d11/gstd3d11vp8dec.h: + * sys/d3d11/gstd3d11vp9dec.cpp: + * sys/d3d11/gstd3d11vp9dec.h: + * sys/d3d11/plugin.cpp: + d3d11decoder: Refactor for more unified decoding flow + ... and various code cleanup. + * Move spreaded decoding API calls into one method + Previously, decoding flow of most codecs are + - Call DecoderBeginFrame() on start_picture() + - Call {Get,Release}DecoderBuffer() on decode_slice() + - Call SubmitDecoderBuffers() and DecoderEndFrame() on end_picture() + Such spreaded API calls make it hard to keep track of status + of decoding. Now it will be done at once in a new method. + * Drop a code for non-zero wBadSliceChopping + When bitstream buffer provided by driver is not sufficient + to write compressed bitstream data, host decoder needs to make use + of wBadSliceChopping so that driver can understand there are + multiple bitstream buffer. But it's a bit unrealistic and + not tested. Since FFMpeg's DXVA implemetaion doesn't support it, + we might be able to ignore the case for now. + * Make code more portable + Consider common logic of GstCodecs -> DXVA translation for all D3D APIs + (i,e., D3D9, D3D11, and D3D12). + Part-of: + +2021-09-15 23:41:39 +0900 Seungha Yang + + * sys/d3d11/gstd3d11av1dec.cpp: + * 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: Remove duplicated class_init and property related code + Move them into the decoder helper code to remove duplication + Part-of: + +2021-09-11 00:43:26 +0900 Seungha Yang + + * sys/d3d11/gstd3d11av1dec.cpp: + * sys/d3d11/gstd3d11compositor.cpp: + * sys/d3d11/gstd3d11compositorbin.cpp: + * sys/d3d11/gstd3d11converter.cpp: + * sys/d3d11/gstd3d11deinterlace.cpp: + * sys/d3d11/gstd3d11desktopdup.cpp: + * sys/d3d11/gstd3d11desktopdupsrc.cpp: + * sys/d3d11/gstd3d11h264dec.cpp: + * sys/d3d11/gstd3d11h265dec.cpp: + * sys/d3d11/gstd3d11mpeg2dec.cpp: + * sys/d3d11/gstd3d11overlaycompositor.cpp: + * sys/d3d11/gstd3d11pluginutils.cpp: + * sys/d3d11/gstd3d11shader.cpp: + * sys/d3d11/gstd3d11videoprocessor.cpp: + * sys/d3d11/gstd3d11vp8dec.cpp: + * sys/d3d11/gstd3d11vp9dec.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/d3d11/meson.build: + * sys/d3d11/plugin.cpp: + d3d11: Get rid of "extern "C"" wrapping for GST_DEBUG_CATEGORY_EXTERN + Instead, change the file defining debug category to cpp + Part-of: + +2020-06-30 11:15:43 -0700 U. Artie Eoff + + * ext/closedcaption/meson.build: + * tests/check/meson.build: + tests: skip cc tests if plugin is disabled + Skip the closedcaption element tests if the + closedcaption option is disabled at compile + time (i.e. -Dclosedcaption=disabled). + v2: rename pangocairo_dep to avoid conflict + with later definition in ext/ttml/meson.build + as suggested by @tpm. + Part-of: + +2021-08-31 17:16:05 +0800 He Junyan + + * gst-libs/gst/codecs/gsth264decoder.c: + codecs: h264dec: Check bumping again after inserting current picture. + In order to get the lowest latency, we can add another bumping check after + inserting the current picture into the DPB immediately. That can avoid + waiting for another decoding circle of the next frame and so the latency + is lower. + Fix: #1628 + Part-of: + +2021-08-31 17:37:11 +0800 He Junyan + + * gst-libs/gst/codecs/gsth264picture.c: + codecs: h264: Add protection to to_insert picture in bump check. + Part-of: + +2021-08-31 16:39:06 +0800 He Junyan + + * gst-libs/gst/codecs/gsth264decoder.c: + codecs: h264dec: Improve the policy to infer max_num_reorder_frames. + The max_num_reorder_frames number can change the way we bumping the + pictures in the DPB. The smaller it is, the lower latency we will + get. So it is important for live mode streams, but it is not given + in VUI parameters sometimes. We now improve the policy to infer it: + 1. Never guess it in the "strict" compliance. + 2. For baseline and constrained baseline profiles, which do not have + B frames, set it to 0. + 3. For -intra only profiles, set it to 0. + 4. Otherwise, not guess it. + Part-of: + +2021-09-14 20:57:30 -0700 U. Artie Eoff + + * ext/aes/meson.build: + * tests/check/meson.build: + tests: skip aes test if elements not built + In ext/aes/meson.build, the aes_dep will return + not-found if -Daes=disabled, regardless of whether + openssl is found or not. Thus, we don't need a + separate check for the option. This will also + ensure that aes_dep is always defined and we can + use it in the tests/check/meson.build unit. + Fixes #1660 + v2: handle -Daes=disabled, too. + Part-of: + +2021-08-31 17:33:02 +0100 Philippe Normand + + * ext/wpe/gstwpesrcbin.cpp: + wpe: Add support for web:// URIs + The CEF source already supports this. No good reason for wpesrc not too ;) + Part-of: + +2021-07-23 23:38:22 +0800 He Junyan + + * sys/va/gstvah264dec.c: + va: h264dec: Try to use ConstrainedBaseline or Main to decode BaseLine. + In the h264, the Baseline profile is widely misused. A lot of streams declare + that they are the Baseline, but in fact they just conform to ConstrainedBaseline. + The features such as FMO and ASO are not used at all. + If the decoder does not strictly conforms to the SPEC, we can just use Baseline + or Main profile to decode it to avoid lots of streams failure. + Part-of: + +2021-07-28 23:19:15 +0800 He Junyan + + * gst-libs/gst/codecs/gsth264decoder.c: + codecs: h264dec: Improve the fast bump for the live mode. + We control the policy of fast bump by the profile and the compliance + property. For baseline and constrained baseline profiles, we can use + more radical bump policy. User can also change the bump policy by + setting the compliance property in run time. + Part-of: + +2021-07-28 22:48:21 +0800 He Junyan + + * gst-libs/gst/codecs/gsth264picture.c: + * gst-libs/gst/codecs/gsth264picture.h: + codecs: h264: Change the low_latency to an enum for dpb_needs_bump(). + The bool parameter of low_latency is not enough. We have multi policies for + low latency bumping, from the safest to something radical. So we need an enum + to represent the proper latency requirement. + Part-of: + +2021-07-26 16:09:19 +0800 He Junyan + + * gst-libs/gst/codecs/gsth264decoder.c: + * gst-libs/gst/codecs/gsth264decoder.h: + codecs: h264dec: Add a compliance property to control behavior. + Some features such as the low-latency DPB bumping and mapping the + baseline profile as the constrained-baseline profile do not conform + to the H264 offical spec. But in practice, they are very useful and + are widely needed. We add this compliance property to control the + behavior of the decoder, make it fit more requirement. + Part-of: + +2021-09-12 12:23:36 +0100 Philippe Normand + + * docs/plugins/gst_plugins_cache.json: + docs: Update cache + Part-of: + +2021-09-07 10:55:10 +0200 Víctor Manuel Jáquez Leal + + * docs/plugins/gst_plugins_cache.json: + * sys/va/gstvafilter.c: + va: Update vapostproc documentation. + Part-of: + +2021-09-07 10:16:05 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvah264dec.c: + * sys/va/gstvavpp.c: + va: Update todo lists, removing deinterlacing. + Part-of: + +2021-08-23 11:24:40 +0200 Víctor Manuel Jáquez Leal + + * docs/plugins/gst_plugins_cache.json: + * sys/va/gstvadeinterlace.c: + * sys/va/gstvadeinterlace.h: + * sys/va/meson.build: + * sys/va/plugin.c: + Add vadeinterlace element. + Part-of: + +2021-08-24 13:53:12 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvafilter.c: + * sys/va/gstvafilter.h: + va: filter: Add past and future frames in GstVaSample. + And add them in the pipeline structure if they are provided. + Part-of: + +2021-08-24 13:33:29 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvafilter.c: + * sys/va/gstvafilter.h: + va: filter: Add gst_va_filter_add_deinterlace_buffer() + This function decorates gst_va_filter_add_filter_buffer() to get the + number of past and future frames to hold, given the method. + Part-of: + +2020-12-21 18:17:24 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvafilter.c: + * sys/va/gstvafilter.h: + va: filter: Add deinterlacing method parameter. + For exposing that gobject parameter a new helper function is added: + gst_va_filter_install_deinterlace_properties() + Part-of: + +2021-08-23 16:29:36 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvafilter.c: + va: filter: Protect filters array of overwrite. + It's possible to modify the filters array from another GStremer + thread, and the post-processing operation is not atomic, so the filter + array is reffed while the VA pipeline is processed. + Part-of: + +2021-08-23 15:24:55 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvafilter.c: + va: filter: Add helper function to query pipeline caps. + This function is going to be shared for future deinterlace filter + processing. + Part-of: + +2021-08-23 15:16:16 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvafilter.c: + va: filter: Shuffle _destroy_filters_unlocked(). + In order to put it near to its caller. + Part-of: + +2021-08-10 17:55:43 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvavpp.c: + * sys/va/gstvavpp.h: + * sys/va/plugin.c: + vapostproc: Move up color balance detection to plugin. + In order to install the color balance interface, a GstVaFilter is + instantiated and queried to know if it supports color balance + filter. It was done just after the GObject was registered. Now, it's + done before. + The reason of this change is that deinterlace element has to be + registered only if deinterlace filter is available, using only one + instantiate of GstVaFilter. + Part-of: + +2021-09-07 11:35:09 +0200 Víctor Manuel Jáquez Leal + + * docs/plugins/gst_plugins_cache.json: + * sys/va/gstvabasetransform.c: + va: basetransform: Update documentation. + Part-of: + +2021-09-09 18:26:56 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvabasetransform.h: + va: basetransform: Add autoptr clean up function. + Part-of: + +2021-08-23 18:44:30 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvabasetransform.c: + va: basetransform: Use copy_metadata() at buffer import. + Instead of using only gst_buffer_copy_into() use copy_metadata() + vmethod to copy what's needed. + Part-of: + +2021-08-23 10:40:32 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvavpp.c: + vapostproc: don't chain up transform_meta() + Part-of: + +2021-07-29 12:20:30 -0300 Daniel Almeida + + * gst-libs/gst/codecs/gstvp9statefulparser.c: + codecs: gstvp9statefulparser: feature_data should be 0 if feature_enable is 0 + The spec says in 6.2.11 that feature_data[i][j] should be zero if + feature_enabled[i][j] is zero. Instead we retained the old value in the parser. + Fix it. + Part-of: + +2021-09-08 05:28:22 +0200 Marek Vasut + + * gst-libs/gst/codecparsers/gsth264parser.c: + gsth264parser: Fix handling of NALs with emulation byte set + In case a set of NALs with emulation_prevention_three_byte is decoded using + hardware decoder like Hantro G1, wrong struct v4l2_ctrl_h264_decode_params + .dec_ref_pic_marking_bit_size is passed into the kernel, which results in + decoding artifacts. Subtract the number of emulation three bytes from the + .dec_ref_pic_m->bit_size to get the correct bit size and avoid having these + artifacts. Apply the exact same fix to slice->pic_order_cnt_bit_size as well. + The following NALs (7, 8, 6, 5) decode with artifacts, + .dec_ref_pic_marking_bit_size is set to 10 without this patch. + 00000000 00 00 00 01 27 4d 00 20 89 8b 60 3c 04 bf 2e 02 |....'M. ..`<....| + 00000010 d4 18 04 18 c0 c0 01 77 00 00 5d c1 7b df 05 00 |.......w..].{...| + 00000020 00 00 01 28 ee 1f 20 00 00 01 06 05 10 b9 ed b9 |...(.. .........| + 00000030 30 5d 21 4b 71 83 71 2c 10 a3 14 bb 29 80 00 00 |0]!Kq.q,....)...| + 00000040 01 25 b8 00 05 00 00 03 03 7f fa 78 1e e7 fd fe |.%.........x....| + ^^^^^^^^^^^^--- emulation 3 byte + 00000050 b4 62 7a 31 ff 7d 81 fd 26 d8 62 b6 d6 25 46 ae |.bz1.}..&.b..%F.| + The following NALs (7, 8, 6, 5) decode fine, + .dec_ref_pic_marking_bit_size is set to 2 without this patch. + 00000000 00 00 00 01 27 4d 00 20 89 8b 60 3c 04 bf 2e 02 |....'M. ..`<....| + 00000010 d4 18 04 18 c0 c0 01 77 00 00 5d c1 7b df 05 00 |.......w..].{...| + 00000020 00 00 01 28 ee 1f 20 00 00 01 06 05 10 b9 ed b9 |...(.. .........| + 00000030 30 5d 21 4b 71 83 71 2c 10 a3 14 bb 29 80 00 00 |0]!Kq.q,....)...| + 00000040 01 25 b8 00 04 c0 00 03 7f fa 78 1e e7 fd fe b4 |.%........x.....| + 00000050 62 7a 31 ff 7d 81 fd 26 d8 62 b6 d6 25 46 ae ce |bz1.}..&.b..%F..| + Fixes: d0d65fa875 ("codecparsers: h264: record dec_ref_pic_marking() size") + Fixes: 0cc7d6f093 ("codecparsers: h264: record pic_order_cnt elements size") + Signed-off-by: Marek Vasut + Part-of: + +2021-09-03 14:57:09 -0400 Aaron Boxer + + * gst-libs/gst/codecparsers/gsth264parser.c: + gsth264parser: reject memory management control op greater than 6 + This prevents assertion from being thrown in + gst_h264_dpb_perform_memory_management_control_operation + if corrupt NAL has a control op greater than 6 + Part-of: + +2021-08-24 09:59:59 +0000 Ung, Teng En + + * sys/msdk/gstmsdk.c: + * sys/msdk/gstmsdkav1dec.c: + * sys/msdk/gstmsdkdec.c: + * sys/msdk/gstmsdkenc.c: + * sys/msdk/gstmsdkh264dec.c: + * sys/msdk/gstmsdkh264enc.c: + * sys/msdk/gstmsdkh265dec.c: + * sys/msdk/gstmsdkh265enc.c: + * sys/msdk/gstmsdkmjpegdec.c: + * sys/msdk/gstmsdkmjpegenc.c: + * sys/msdk/gstmsdkmpeg2dec.c: + * sys/msdk/gstmsdkmpeg2enc.c: + * sys/msdk/gstmsdkvc1dec.c: + * sys/msdk/gstmsdkvp8dec.c: + * sys/msdk/gstmsdkvp9dec.c: + * sys/msdk/gstmsdkvp9enc.c: + * sys/msdk/gstmsdkvpp.c: + * sys/msdk/msdk.c: + * sys/msdk/msdk.h: + msdk: Adjust the plugin and factories description based on MFX_VERSION. + Part-of: + +2021-09-08 17:32:30 +0200 Mathieu Duponchelle + + * gst-libs/gst/vulkan/xcb/gstvkdisplay_xcb.c: + vulkan: don't link to XOpenDisplay in documentation + hotdoc doesn't know about that symbol + Part-of: + +2021-08-30 23:26:39 +1000 Jan Schmidt + + * ext/mpeg2enc/gstmpeg2enc.cc: + * ext/mpeg2enc/gstmpeg2enc.hh: + * ext/mpeg2enc/gstmpeg2encpicturereader.cc: + mpeg2enc: Only allow 1 pending frame for encoding + Having an unlimited input queue is very bad if the + encoder can't run at real-time. Eventually it will + consume all RAM. I don't really see any reason to + have more than 1 outstanding encoded frame, so + remove the queue and limit things to 1 pending frame. + Part-of: + +2021-09-01 17:35:45 -0400 Thibault Saunier + + * ext/wpe/wpe-extension/gstwpeaudiosink.c: + wpe: Fix race condition on teardown + There was a race when going to PAUSED while pushing a buffer to the + pipeline process (where we weren't even cancelling anything). + This rework base all the cancellation around the GCancellable + "cancelled" signal trying to ensure that the streaming thread will not + block once a cancel operation happens. + Part-of: + +2021-09-01 17:26:04 -0400 Thibault Saunier + + * ext/wpe/gstwpesrcbin.cpp: + wpe: Use the new element.get_current_running_time API + Part-of: + +2021-09-01 17:24:45 -0400 Thibault Saunier + + * ext/wpe/gstwpesrcbin.cpp: + wpe: Mark first buffer as starting at 0 + Part-of: + +2021-09-02 22:06:52 +0900 Seungha Yang + + * gst/videoparsers/gstvideoparseutils.c: + videoparseutils: Fix for wrong CEA708 minimum size check + The minimum possible size of valid CEA708 data is 3 bytes, not 7 bytes + Part-of: + +2021-08-29 11:04:17 +0100 Philippe Normand + + * ext/wpe/gstwpevideosrc.cpp: + wpevideosrc: Uniformise default value for draw-background property + Part-of: + +2021-08-29 10:30:53 +0100 Philippe Normand + + * ext/wpe/gstwpevideosrc.cpp: + wpevideosrc: Implement basic heuristic for raw caps negotiation + Before this patch raw caps could be negotiated already with a capsfilter, but in + cases where wpesrc is being auto-plugged this approach can't be used. + Part-of: + +2021-08-29 10:28:57 +0100 Philippe Normand + + * ext/wpe/gstwpevideosrc.cpp: + wpevideosrc: Ensure debug category is set + Part-of: + +2021-07-15 21:10:14 +0200 Mathieu Duponchelle + + * ext/closedcaption/gstcccombiner.c: + cccombiner: fix scheduling with interlaced video buffers + The initial code was written with the misunderstanding that + IS_TOP_FIELD indicated that an interlaced buffer contained + a top field, not that it contained only a top field + Part-of: + +2021-08-27 15:41:32 -0400 Nicolas Dufresne + + * sys/kms/gstkmssink.c: + Revert "kmssink: Fix fallback path for driver not able to scale scenario" + This reverts commit d2a7b763bef3ca51f0c84cdac52eeed85b0db8fb. + After this change, non-scaled rendered were not centred as expected. + Part-of: + +2021-08-20 13:28:51 +0800 Mengkejiergeli Ba + + * gst-libs/gst/codecs/gstav1decoder.c: + codecs: av1dec: Fix to output frame with highest spatial layer + During the output process, if there are multiple frames in a TU (i.e. multi-spatial + layers case), only one frame with the highest spatial layer id should be selected + according to av1 spec. The highest spatial layer id is obtained from idc value of + the operating point. + Part-of: + +2021-08-24 14:33:42 +0100 Alex Ashley + + * ext/dash/gstxmlhelper.c: + * tests/check/elements/dash_mpd.c: + dashdemux: copy ContentProtection element including xml namespaces + Commit bc09d8cc changed gstmpdparser to put the entire + element in the "value" field, so that DRMs + other than PlayReady could make use of the data inside this + element. + However, the data in the "value" field does not include any + XML namespace declarations that are used within the element. This + causes problems for a namespace aware XML parser that wants to + make use of this data. + This commit modifies the way the XML is converted to a string + so that XML namespaces are preserved in the output. + Part-of: + +2021-08-26 21:26:01 +0300 Vivia Nikolaidou + + * docs/plugins/gst_plugins_cache.json: + * gst/debugutils/gsterrorignore.c: + * gst/debugutils/gsterrorignore.h: + errorignore: Add ignore-eos mode + It's otherwise very complicated to ignore GST_FLOW_EOS without a + ghostpad's chain function to rewrite. + Part-of: + +2021-08-27 17:25:04 +1000 Brad Hards + + * gst-libs/gst/codecparsers/gsth264parser.c: + gsth264parser: fix typo in debug message + Part-of: + +2021-08-26 04:12:07 +0200 Mathieu Duponchelle + + * docs/plugins/gst_plugins_cache.json: + * gst/timecode/gsttimecodestamper.c: + * gst/timecode/gsttimecodestamper.h: + timecodestamper: add support for closedcaption input + Some closedcaption elements like sccenc except input buffers + to have timecode metas. The original use case is to serialize + closed captions extracted from a video stream, in that case + ccextractor copies the video time code metas to the closed + caption buffers, but no such mechanism exists when creating + a CC stream ex nihilo. + Remedy that by having timecodestamper accept closedcaption + input caps, as long as they have a framerate. + Part-of: + +2021-07-06 12:31:42 -0400 Aaron Boxer + + * docs/plugins/gst_plugins_cache.json: + * ext/aes/gstaes.c: + * ext/aes/gstaesdec.c: + * ext/aes/gstaesdec.h: + * ext/aes/gstaesenc.c: + * ext/aes/gstaesenc.h: + * ext/aes/gstaeshelper.c: + * ext/aes/gstaeshelper.h: + * ext/aes/meson.build: + * ext/meson.build: + * meson_options.txt: + * tests/check/elements/aesdec.c: + * tests/check/elements/aesenc.c: + * tests/check/meson.build: + aes: add aes encryption and decryption elements + Part-of: + +2021-05-10 12:02:20 +0200 Johan Sternerup + + * docs/plugins/gst_plugins_cache.json: + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Return typed "sctp-transport" + With GstWebRTCSCTPTransport type exposed we can now define + "sctp-transport" property as being of this type. + Part-of: + +2021-05-07 08:12:25 +0200 Johan Sternerup + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/gstwebrtcbin.h: + * ext/webrtc/meson.build: + * ext/webrtc/webrtcdatachannel.c: + * ext/webrtc/webrtcdatachannel.h: + * ext/webrtc/webrtcsctptransport.c: + * ext/webrtc/webrtcsctptransport.h: + * gst-libs/gst/webrtc/meson.build: + * gst-libs/gst/webrtc/sctptransport.c: + * gst-libs/gst/webrtc/sctptransport.h: + * gst-libs/gst/webrtc/webrtc-priv.h: + * gst-libs/gst/webrtc/webrtc_fwd.h: + webrtc: Split sctptransport into lib and implementation parts + GstWebRTCSCTPTransport is now made into into an abstract base class + that only contains property specifications matching the + RTCSctpTransport interface of the W3C WebRTC specification, see + https://w3c.github.io/webrtc-pc/#rtcsctptransport-interface. This + class is put into the WebRTC library to expose it for applications and + to allow for generation of bindings for non-dynamic languages using + GObject introspection. + The actual implementation is moved to the subclass WebRTCSCTPTransport + located in the WebRTC plugin. + Part-of: + +2021-05-03 10:45:42 +0200 Johan Sternerup + + * docs/plugins/gst_plugins_cache.json: + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Expose SCTP Transport + Being able to access the SCTP Transport object from the application + means the application can access the associated DTLS Transport object + and its ICE Transport object. This means we can observe the ICE state + also for a data-channel-only session. The collated + ice-connection-state on webrtcbin only includes the ICE Transport + objects that resides on the RTP transceivers (which is exactly how it + is specified in + https://w3c.github.io/webrtc-pc/#rtciceconnectionstate-enum). + For the consent freshness functionality (RFC 7675) to work the ICE + state must be accessible and consequently the SCTP transport must be + accessible for enabling consent freshness checking for a + data-channel-only session. + Part-of: + +2021-04-20 20:04:33 +0100 Tim-Philipp Müller + + * ext/openh264/gstopenh264enc.cpp: + openh264enc: fix broken header AU emission by base class + This encoder advertises alignment=au as output format, which means + each output frame should contain a full decodable access unit. + The video encoder base class is not aware of our output alignment + and will output spurious buffers with just the SPS/PPS inside when + we call gst_video_encoder_set_headers(), which is broken because + each buffer is supposed to contain a full decodable access unit + in our case. + Just don't tell the base class about our headers, they will be + sent at the beginning of each IDR frame anyway. + Part-of: + +2021-04-20 19:43:53 +0100 Tim-Philipp Müller + + * ext/openh264/gstopenh264enc.cpp: + openh264enc: fix caps and header buffer leak + Part-of: + +2021-04-20 19:11:12 +0100 Tim-Philipp Müller + + * ext/openh264/gstopenh264enc.cpp: + openh264enc: fix broken sps/pps header generation + This was putting a truncated SPS into the initial header instead + of the PPS because it was always reading from the beginning of the + bitstream buffer (pBsBuf) and not from the offset where the current + NAL is at in the bitstream buffer (psBsBuf + nal_offset). + This was broken in commit 17113695. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1576 + Part-of: + +2021-08-22 00:33:58 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11bufferpool.cpp: + * gst-libs/gst/d3d11/gstd3d11bufferpool.h: + * sys/d3d11/gstd3d11compositor.cpp: + * sys/d3d11/gstd3d11convert.cpp: + * sys/d3d11/gstd3d11decoder.cpp: + * sys/d3d11/gstd3d11deinterlace.cpp: + * sys/d3d11/gstd3d11desktopdupsrc.cpp: + * sys/d3d11/gstd3d11download.cpp: + * sys/d3d11/gstd3d11upload.cpp: + * sys/d3d11/gstd3d11videosink.cpp: + * sys/mediafoundation/gstmfvideoenc.cpp: + d3d11bufferpool: Hide buffer_size field from header + User can get the required buffer size by using buffer pool config. + Since d3d11 implementation is a candidate for public library in the future, + we need to hide everything from header as much as possible. + Note that the total size of allocated d3d11 texture memory by GPU is not + controllable factor. It depends on hardware specific alignment/padding + requirement. So, GstD3D11 implementation updates actual buffer size + by allocating D3D11 texture, since there's no way to get CPU accessible + memory size without allocating real D3D11 texture. + Part-of: + +2021-08-21 02:20:11 +0900 Seungha Yang + + * sys/nvcodec/cuda-converter.c: + * sys/nvcodec/gstcudaconvert.c: + * sys/nvcodec/gstnvbaseenc.c: + * sys/nvcodec/gstnvdec.c: + * sys/nvcodec/gstnvdecoder.c: + * sys/nvcodec/gstnvenc.c: + * sys/nvcodec/gstnvenc.h: + nvcodec: Fix various typos + Part-of: + +2021-08-21 02:10:37 +0900 Seungha Yang + + * sys/nvcodec/cuda-converter.h: + * sys/nvcodec/gstcudacontext.h: + * sys/nvcodec/gstcudafilter.h: + * sys/nvcodec/gstcudaloader.h: + * sys/nvcodec/gstcudanvrtc.h: + * sys/nvcodec/gstcudautils.h: + * sys/nvcodec/gstcuvidloader.h: + * sys/nvcodec/gstnvbaseenc.h: + * sys/nvcodec/gstnvenc.h: + * sys/nvcodec/gstnvh264dec.h: + * sys/nvcodec/gstnvh264enc.h: + * sys/nvcodec/gstnvh265dec.h: + * sys/nvcodec/gstnvh265enc.h: + * sys/nvcodec/gstnvrtcloader.h: + nvcodec: Get rid of G_GNUC_INTERNAL + Our default symbol visibility is hidden, so G_GNUC_INTERNAL + is pointless + Part-of: + +2021-08-19 16:45:18 -0400 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codech264dec.c: + v4l2codecs: h264: Fix split field handling + Split fields ends up on multiple picture and requires accessing the + other_field to complete the information (POC). + This also cleanup the DPB from non-reference (was not useful) and skips + properly merge field instead of keeping them duplicated. This fixes most + of interlace decoding seen in fluster. + Part-of: + +2021-08-19 11:40:22 -0400 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codech264dec.c: + v4l2codec: h264: Implement support for split fields + When a frame is composed of two fields, the base class now split the + picture in two. In order to support this, we need to ensure that picture + buffer is held in VB2 queue so that the second field get decoded into + it. This also implements the new_field_picture() virtual and sets the + previous request on the new picture. + Part-of: + +2021-08-20 11:23:57 -0400 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codech264dec.c: + v4l2codecs: h264: Fix filling weight factors + This was a typo, the wrong index was used to set l1 weight (b-frames). + Part-of: + +2021-08-20 14:34:53 +0200 Edward Hervey + + * ext/dash/gstdashdemux.c: + dashdemux: Properly initalize GError + Part-of: + +2021-08-19 21:56:05 +0900 Seungha Yang + + * sys/mediafoundation/gstmfsourcereader.cpp: + * sys/mediafoundation/gstmfutils.cpp: + * sys/mediafoundation/gstmfutils.h: + mfvideosrc: Fix for negative MF stride + Negative stride value can be used in MediaFoundation to inform + whether memory layout is top-down or bottom-up manner. Note that + negative stride is allowed only for RGB, system memory. + See also + https://docs.microsoft.com/en-us/windows/win32/medfound/image-stride + Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1646 + Part-of: + +2021-08-18 11:14:37 -0400 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codech264dec.c: + v4l2slh264dec: Fix slice header bit size calculation + The emulation bytes need to be removed as bytes, not bit. This fixes + decoding issues with files that have emulation bytes with the Cedrus + driver. + Part-of: + +2021-08-12 14:08:19 +0200 Víctor Manuel Jáquez Leal + + * tests/examples/va/multiple-vpp.c: + example: va: Add skin tone enhancement. + If camera is used as input stream and skin tone parameter is available + in vapostproc, and no random changes are enabled, the skin tone will + be enabled. + Part-of: + +2021-08-17 14:04:41 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvavpp.c: + vapostproc: Use vapostproc as debug category name. + Otherwise is difficult to remember the different name. + Part-of: + +2021-08-12 13:54:34 +0200 Víctor Manuel Jáquez Leal + + * tests/examples/va/multiple-vpp.c: + examples: va: Add random cropping. + And remove unused caps filter. + Part-of: + +2021-07-28 13:04:50 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvavpp.c: + vapostproc: Disable cropping in pass-through mode. + Originally, if a buffer arrives with crop meta but downstream doesn't + handle crop allocation meta, vapostproc tried to reconfigure itself to + non pass-through mode automatically. Sadly, this behavior was based on + the wrong assumption that propose_allocation() vmethod would bring + downstream allocation query, but it is not. + Now, if vapostproc is in pass-through mode, the cropping is passed to + downstream. Pass-through mode can be disabled via a parameter. + Finally, if pass-through mode isn't enabled, it's assumed the buffer + is going to be processed and, if cropping, downstream already + negotiated the cropped frame size, thus it's required to do the + cropping inside vapostproc to avoid artifacts because of the size of + downstream allocated buffers. + Part-of: + +2021-08-17 14:54:21 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvavpp.c: + vapostproc: Update filters update_properties(). + Right after instantiating the VA filter and changing the element + state, rebuild the image filters. + This will fix a regression from f20b3b815, where properties in a + gst-launch pipeline are not applied. + Part-of: + +2021-08-18 09:13:45 +0300 Sebastian Dröge + + * sys/decklink/gstdecklinkvideosrc.cpp: + decklinkvideosrc: Fix PAL/NTSC widescreen autodetection when switching back to non-widescreen + Previously it would only switch to widescreen but never back. + Part-of: + +2021-07-20 18:15:11 +0800 Mengkejiergeli Ba + + * sys/msdk/gstmsdkvpp.c: + msdkvpp: Fix frc from lower fps to higher fps + There are three framerate conversion algorithms described in + , + interpolation is not implemented so far and thus distributed timestamp algorihtm + is considered to be more practical which evenly distributes output timestamps + according to output framerate. In this case, newly generated frames are inserted + between current frame and previous one, timestamp is calculated by msdk API. + This implementation first pushes newly generated buffers(outbuf_new) forward and + the current buffer(outbuf) is handled at last round by base transform automatically. + A flag "create_new_surface" is used to indicate if new surfaces have been generated + and then push new outbuf forward accordingly. + Considering the upstream element may not be the msdk element, it is necessary to + always set the input surface timestamp as same as input buffer's timestamp and + convert it to msdk timestamp. + Part-of: + +2021-05-06 22:22:12 +1000 Matthew Waters + + * ext/webrtc/gstwebrtcbin.c: + webrtc: improve matching on the correct jitterbuffer + The mapping between an RTP session and the SDP m= line is not always the + same, especially when BUNDLEing is used. + This causes a failure in a specific case where if when bundling, + if mline 0 is a data channel, and mline 1 an audio/video section, + then retrieving the transceiver at mline 0 (rtp session used) will fail + and cause an assertion. + This fix is actually potentially a regression for cases where the remote + part does not provide the a=ssrc: media level SDP attributes as is now + becoming common, especially when simulcast is involved. + The correct fix actually requires reading out header extensions as used + with bundle for signalling in the actual data, what media and therefore + transceiver is being used. + Part-of: + +2021-08-16 13:45:39 +0800 He Junyan + + * gst-libs/gst/va/gstvadisplay.h: + * sys/va/gstvaav1dec.c: + * sys/va/gstvabasedec.c: + * sys/va/gstvacaps.c: + * sys/va/gstvafilter.c: + * sys/va/gstvah264dec.c: + * sys/va/gstvah265dec.c: + * sys/va/gstvampeg2dec.c: + * sys/va/gstvavp8dec.c: + * sys/va/gstvavp9dec.c: + * sys/va/gstvavpp.c: + va: Use GST_CAPS_FEATURE_MEMORY_VA to replace "memory:VAMemory". + "memory:VAMemory" is a commonly used string which notates our VA-kind + memory type. We now used a definition in va lib to replace the simply + string usage. + Part-of: + +2021-08-16 13:32:51 +0800 He Junyan + + * sys/va/gstvacaps.c: + * sys/va/gstvafilter.c: + va: Use MEMORY_DMABUF definition to replace "memory:DMABuf" strings. + GST_CAPS_FEATURE_MEMORY_DMABUF is already a common definition, we should + just use it rather than use the "memory:DMABuf" strings by ourselves. + Part-of: + +2021-08-09 19:02:56 -0400 Thibault Saunier + + * docs/plugins/gst_plugins_cache.json: + * ext/fdkaac/gstfdkaacenc.c: + fdkaacdec: Add Converter class to hint gst-validate + fdkaacdec have minimal conversion capability, adding the Converter class allow + gst-validate to behave properly and not spit an error when it notice that the + number of channels or rate miss-match in and out. + Same logic as with opusdec, see: https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1142> + Part-of: + +2021-06-09 23:29:43 +0900 Seungha Yang + + * sys/wasapi2/plugin.c: + wasapi2: Increase rank to primary + 1 + wasapi2 plugin should be preferred than old wasapi plugin if available because: + * wasapi2 supports automatic stream routing, and it's highly recommended + feature for application by MS. See also + https://docs.microsoft.com/en-us/windows/win32/coreaudio/automatic-stream-routing + * This implementation must be various COM threading issue free by design + since wasapi2 plugin spawns a new dedicated COM thread and all COM objects' + life-cycles are managed correctly. + There are unsolved COM issues around old wasapi plugin. Such issues are + very tricky to be solved unless old wasapi plugin's threading model + is re-designed. + Note that, in case of UWP, wasapi2 plugin's rank is primary + 1 already + Part-of: + +2021-08-12 20:39:24 +0200 Mathieu Duponchelle + + * ext/closedcaption/gstccconverter.c: + ccconverter: fix overflow when not doing framerate conversion + When converting from one framerate to another, counters are + reset periodically, however when not converting they never are + and can_genearte_output ends up making overflow-prone calculations + with large values for input_frames and output_frames. + Part-of: + +2021-08-12 15:26:27 +0300 Sebastian Dröge + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Don't assume that non-audio medias are video medias when creating transceivers + And print the unknown media kind in the logs. + Part-of: + +2021-08-12 15:25:50 +0300 Sebastian Dröge + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Use the correct media for deciding the media kind when creating the transceiver from the SDP + Part-of: + +2021-07-29 21:30:32 +0800 He Junyan + + * gst-libs/gst/codecs/gsth264decoder.c: + codecs: h264dec: Output the picture directly if already a frame. + We forget one case that is the frame and field pictures may be mixed + together. For this case, the dpb is interlaced while the last picture + may be a complete frame. We do not need to cache that complete picture + and should output it directly. + Part-of: + +2021-08-06 17:11:55 +0800 He Junyan + + * sys/va/gstvacaps.c: + va: caps: Make the template raw video caps classified by features. + The current output of raw video caps is not good. When we have multi + profiles and each profile support different formats, the output of + gst-inspect may like: + SRC template: 'src' + Availability: Always + Capabilities: + video/x-raw(memory:VAMemory) + width: [ 1, 16384 ] + height: [ 1, 16384 ] + format: NV12 + video/x-raw + width: [ 1, 16384 ] + height: [ 1, 16384 ] + format: NV12 + video/x-raw(memory:VAMemory) + width: [ 1, 16384 ] + height: [ 1, 16384 ] + format: P010_10LE + video/x-raw + width: [ 1, 16384 ] + height: [ 1, 16384 ] + format: P010_10LE + video/x-raw(memory:VAMemory) + width: [ 1, 16384 ] + height: [ 1, 16384 ] + format: P012_LE + video/x-raw + width: [ 1, 16384 ] + height: [ 1, 16384 ] + format: P012_LE + The gst_caps_simplify does not classify the caps by same features, but + just leave them interweaved. We need to handle them manually here, the + result should be: + SRC template: 'src' + Availability: Always + Capabilities: + video/x-raw + width: [ 1, 16384 ] + height: [ 1, 16384 ] + format: { (string)P010_10LE, (string)P012_LE, (string)NV12 } + video/x-raw(memory:VAMemory) + width: [ 1, 16384 ] + height: [ 1, 16384 ] + format: { (string)P010_10LE, (string)P012_LE, (string)NV12 } + Part-of: + +2021-07-27 13:22:02 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvavpp.c: + vapostproc: Inherit from GstVaBaseTransform. + Part-of: + +2021-02-17 17:15:22 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvabasetransform.c: + * sys/va/gstvabasetransform.h: + * sys/va/meson.build: + va: Add base transform class. + This base transform class is a derivable class for VA-based filters, + for example vapostproc right now, but it will be used also for + future elements such as vadeinterlace. + Part-of: + +2021-07-27 13:03:37 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvapool.c: + * sys/va/gstvapool.h: + va: pool: Add gst_va_pool_new_with_config(). + It is a function helper. + Part-of: + +2021-08-10 02:48:01 +0900 Seungha Yang + + d3d11window: Misc code cleanup + * Remove unnecessary upcasting. We are now dealing with C++ class objects + and don't need explicit C-style casting in C++ world + * Use helper macro IID_PPV_ARGS() everywhere. It will make code + a little short. + * Use ComPtr smart pointer instead of calling manual IUnknown::Release() + Part-of: + +2021-08-10 02:48:45 +0900 Seungha Yang + + * sys/d3d11/gstd3d11compositor.cpp: + d3d11compositor: Fix indent + Part-of: + +2021-05-28 17:36:15 -0400 Thibault Saunier + + * ext/openh264/gstopenh264enc.cpp: + * ext/openh264/meson.build: + openh264: Respect level set downstream + We were not specifying the requested level to openh264 meaning that + it was choosing anything and was not respecting what was specified\ + downstream + Part-of: + +2021-08-04 15:02:01 +0800 He Junyan + + * ext/x265/gstx265enc.c: + x265: Fix a deadlock when failing to create the x265enc. + The GST_ELEMENT_ERROR will call the gst_object_get_path_string and + use gst_object_get_parent to get the full object path name, which + needs to lock the object. But we are already in a locked context and + so this will cause a deadlock, the pipeline can not exit normally. + Part-of: + +2021-07-22 20:58:02 +0000 R S Nikhil Krishna + + * ext/rtmp/gstrtmpsrc.c: + rtmpsrc: mention setting librtmp flags in docs + Part-of: + +2021-08-05 23:11:26 +0200 Mathieu Duponchelle + + * ext/mpeg2enc/gstmpeg2encpicturereader.cc: + mpeg2enc: fix interlace-mode detection + Previously, the code was always assuming progressive input, + fix this by looking at the caps. + Part-of: + +2021-05-23 19:15:25 +0100 Tim-Philipp Müller + + * ext/curl/gstcurlbasesink.c: + * ext/curl/gstcurlhttpsrc.c: + * ext/faad/gstfaad.c: + * ext/hls/gsthlsdemux.c: + * ext/teletextdec/gstteletextdec.c: + * gst-libs/gst/codecparsers/gsth264parser.c: + * gst-libs/gst/mpegts/gst-dvb-descriptor.c: + * gst-libs/gst/mpegts/gstmpegtsdescriptor.c: + * gst-libs/gst/mpegts/gstmpegtssection.c: + * gst/audiovisualizers/gstspectrascope.c: + * gst/mpegpsmux/mpegpsmux.c: + * gst/mpegtsdemux/mpegtspacketizer.c: + * gst/mpegtsdemux/tsdemux.c: + * gst/mxf/mxfaes-bwf.c: + * gst/mxf/mxfdms1.c: + * gst/mxf/mxfmetadata.c: + * gst/mxf/mxfmpeg.c: + * gst/mxf/mxftypes.c: + * gst/rtmp2/rtmp/amf.c: + * meson.build: + * sys/androidmedia/gstamcaudiodec.c: + * sys/androidmedia/gstamcvideodec.c: + * sys/androidmedia/jni/gstamc-codeclist-jni.c: + * sys/androidmedia/jni/gstamc-format-jni.c: + * sys/androidmedia/magicleap/gstamc-format-ml.c: + * tests/check/libs/mpegts.c: + Use g_memdup2() where available and add fallback for older GLib versions + g_memdup() is deprecated since GLib 2.68 and we want to avoid + deprecation warnings with recent versions of GLib. + Part-of: + +2021-08-05 13:02:00 +0300 Sebastian Dröge + + * gst/timecode/gsttimecodestamper.c: + timecodestamper: Fix latency calculation + The LTC extra latency is in ms already and not in frames, so multiplying + with the framerate will end up with a wrong number. + Part-of: + +2021-07-18 00:51:04 +0800 Haihao Xiang + + * sys/msdk/gstmsdkcontext.c: + msdk: make sure child context is destroyed first + The parent context shares some resources with child context, so the + child context should be destroyed first, otherwise the command below + will trigger a segmentation fault + $> gst-launch-1.0 videotestsrc num-buffers=100 ! msdkh264enc ! \ + msdkh264dec ! fakesink videotestsrc num-buffers=50 ! \ + msdkh264enc ! msdkh264dec ! fakesink + Part-of: + +2021-08-02 16:22:06 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videosink.cpp: + * sys/d3d11/gstd3d11window.cpp: + * sys/d3d11/gstd3d11window.h: + d3d11videosink: Fix warning around GstVideoOverlay::expose() + When expose() is called, d3d11videosink needs to redraw using + cached buffer, so gst_d3d11_window_render() should allow null buffer. + Part-of: + +2021-07-31 01:05:47 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videosink.cpp: + d3d11videosink: Forward navigation event without modification + Current implementation for translating native coordinate and + video coordinate is very wrong because d3d11videosink doesn't + understand native HWND's coordinate. That should be handled + by GstD3D11Window implementation as an enhancement. + Part-of: + +2021-07-31 00:59:14 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videosink.cpp: + * sys/d3d11/gstd3d11window.cpp: + * sys/d3d11/gstd3d11window.h: + * sys/d3d11/gstd3d11window_win32.cpp: + d3d11videosink: Add support for GstVideoOverlay::set_render_rectangle + Inspired by an MR https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2382 + The idea is that we can make use of MoveWindow() in WIN32 d3d11window + implementation safely because WIN32 d3d11window implementation creates + internal HWND even when external HWND is set and then subclassing is used to + draw on internal HWND in any case. So the coordinates passed to MoveWindow() + will be relative to parent HWND, and it meets well to the concept of + set_render_rectangle(). + On MoveWindow() event, WM_SIZE event will be generated by OS and then + GstD3D11WindowWin32 implementation will update render area including swapchain + correspondingly, as if it's normal window move/resize case. + But in case of UWP (CoreWindow or SwapChainPanel), we need more research to + meet expected behavior of set_render_rectangle() + Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1416 + Part-of: + +2021-07-29 18:05:35 +0800 He Junyan + + * sys/va/gstvavp8dec.c: + va: vp8: fix the overflow in _fill_quant_matrix(). + The gint8 of qi and qi_base may overflow when calculation the matrix + parameters and change the decoding result. + Part-of: + +2021-06-21 00:19:17 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11device.cpp: + * gst-libs/gst/d3d11/gstd3d11format.h: + * tests/check/elements/d3d11colorconvert.c: + d3d11: Disable packed and subsampled YUV formats + Direct3D11 sampler doesn't support them very well, and conversion + outputs usually result in poor visual quality with our shader code. + Should disable support for such formats for now + Part-of: + +2021-07-26 16:43:47 +0200 Jan Alexander Steffens (heftig) + + * gst/mpegtsdemux/tsdemux.c: + tsdemux: Notify when ignore_pcr is set + Part-of: + +2021-07-27 23:53:06 +0200 Mathieu Duponchelle + + * ext/closedcaption/gstcccombiner.c: + cccombiner: fix CDP padding detection + While a cc_data_pkt with cc_valid 0 should be considered padding, + it might be followed up by valid DTVCC packets, and should not + cause the whole CDP packet to get discarded. + Part-of: + +2021-07-27 12:51:08 +0800 He Junyan + + * gst-libs/gst/codecs/gsth264decoder.c: + codecs: h264dec: Improve the find_first_field_picture(). + We need to consider the first field of the last picture when the + last picture can not enter the DPB. + Another change is, when prev field's frame_num is not equal to the + current field's frame_num, we should also return FASLE because it + is also a case of losing some field. + Part-of: + +2021-07-27 12:16:13 +0800 He Junyan + + * gst-libs/gst/codecs/gsth264decoder.c: + codecs: h264dec: consider the last field when add picture to DPB. + There are cases that the first field of the last picture is not a + ref but the second field is a ref. We need to add both of them + because the bumping always needs a complete frame in the DPB. + Part-of: + +2021-07-27 10:51:03 +0800 He Junyan + + * gst-libs/gst/codecs/gsth264decoder.c: + codecs: h264dec: Consider the field case when directly output. + For interlaced streams, it is also possible that the last frame is + not able to be inserted into DPB when the DPB is full and the last + frame is a non ref. For this case, we need to hold a extra ref for + the first field of the last frame and wait for the complete frame + with both top and bottom fields. For the progressive stream, the + behaviour is unchanged. + Part-of: + +2021-07-26 01:16:34 +0800 He Junyan + + * gst-libs/gst/codecs/gsth264picture.c: + codecs: h264dec: Fix a error print of dpb_add. + When the dpb is interlaced, the max size should be 2*dpb->max_num_frames, + correcting the error print info for that. + Part-of: + +2021-07-28 16:11:36 +0900 Seungha Yang + + * sys/decklink/linux/DeckLinkAPIDispatch.cpp: + decklink: Don't print error for dlopen failure + This is not a fatal error on systems without decklink + Part-of: + +2021-07-27 12:21:41 +0200 Imanol Fernandez + + * gst-libs/gst/play/gstplay.c: + * gst-libs/gst/player/gstplayer.c: + player: Add static keyword to _config_quark_table + Part-of: + +2021-07-27 14:52:38 +1000 Matthew Waters + + * sys/applemedia/meson.build: + * sys/applemedia/videotexturecache-vulkan.mm: + applemedia: silence a couple of MoltenVK warnings + Part-of: + +2021-07-27 11:49:47 -0400 Nicolas Dufresne + + * gst/debugutils/gstfakeaudiosink.c: + * gst/debugutils/gstfakevideosink.c: + debugutils: Only proxy the properties once + The needed once call was removed accidently during porting. This was catch by + the CI as memory leaks. + Related to !2426 + Part-of: + +2021-07-27 12:13:43 +0200 Edward Hervey + + * gst/mxf/mxfd10.c: + mxf: Handle D10 "picture only" variant + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/80 + Part-of: + +2021-07-24 13:19:39 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvafilter.c: + * sys/va/gstvafilter.h: + * sys/va/gstvavpp.c: + va: filter: refactor convert_surface() to process() + The idea of this change is to add, in the future, + process_with_generator(), when multiple input surfaces are processed, + for blending. + Part-of: + +2021-07-18 12:46:08 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvafilter.c: + * sys/va/gstvafilter.h: + * sys/va/gstvavpp.c: + va: filter: Refactor set_formats() to set_video_info(). + Part-of: + +2021-07-18 17:13:16 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvavpp.c: + vapostproc: Don't add video alignment option in buffer pool. + vapostproc will not call gst_buffer_pool_config_set_video_alignment(), + thus this option is not required. + Part-of: + +2021-07-27 09:37:49 +0200 Edward Hervey + + * gst/mxf/mxfvc3.c: + mxfvc3: Also accept clip-wrapped vc-3 + We can now handle this fine + Part-of: + +2021-07-27 07:59:52 +0200 Edward Hervey + + * gst/mxf/mxfdemux.c: + mxfdemux: Handle EOS with non-frame wrapping + When reaching the end of non-frame wrapping track in pull mode, we want to force + the switch to the next non-eos pad. This is similar to when we exceed the + maximum drift. + Fixes issues on EOS where not everything would be drained out and stray errors + would pop out. + Part-of: + +2021-07-25 07:52:06 +0200 Edward Hervey + + * docs/plugins/gst_plugins_cache.json: + * gst/mxf/mxfdemux.c: + mxfdemux: More granular interleaved content handling + An interleave of 500ms can be way too big for some downstream queueing + elements. Instead use a smaller 100ms interleave and silence the various + warnings about resyncing (it's normal) + Part-of: + +2021-07-23 09:36:10 +0100 Philippe Normand + + * gst/debugutils/gstfakeaudiosink.c: + * gst/debugutils/gstfakesinkutils.c: + * gst/debugutils/gstfakesinkutils.h: + * gst/debugutils/gstfakevideosink.c: + * gst/debugutils/meson.build: + debugutils: De-duplicate proxy_properties function to a new utils module + Part-of: + +2021-06-08 01:40:34 +0900 Seungha Yang + + * meson_options.txt: + * sys/asio/gstasiodeviceprovider.cpp: + * sys/asio/gstasiodeviceprovider.h: + * sys/asio/gstasioobject.cpp: + * sys/asio/gstasioobject.h: + * sys/asio/gstasioringbuffer.cpp: + * sys/asio/gstasioringbuffer.h: + * sys/asio/gstasiosink.cpp: + * sys/asio/gstasiosink.h: + * sys/asio/gstasiosrc.cpp: + * sys/asio/gstasiosrc.h: + * sys/asio/gstasioutils.cpp: + * sys/asio/gstasioutils.h: + * sys/asio/meson.build: + * sys/asio/plugin.c: + * sys/meson.build: + Introduce Steinberg ASIO (Audio Streaming Input/Output) plugin + Adds a new plugin for ASIO devices. + Although there is a standard low-level audio API, WASAPI, on Windows, + ASIO is still being broadly used for audio devices which are aiming to + professional use case. In case of such devices, ASIO API might be able + to show better quality and latency performance depending on manufacturer's + driver implementation. + In order to build this plugin, user should provide path to + ASIO SDK as a build option, "asio-sdk-path". + Part-of: + +2021-06-06 22:32:08 +0900 Seungha Yang + + * docs/plugins/gst_plugins_cache.json: + * gst/audiolatency/gstaudiolatency.c: + * gst/audiolatency/gstaudiolatency.h: + audiolatency: Expose samplesperbuffer property + ... for user to be able to set the number of required samples. + For instance, our default value is 240 samples + (about 5ms latency in case that sample rate is 48000), which might + be larger than actual buffer size of audio capture device. + Part-of: + +2021-07-23 22:02:05 +0800 He Junyan + + * gst-libs/gst/codecs/gsth264decoder.c: + codecs: h264decoder: let print_ref_pic_list_b print the correct list name. + The print_ref_pic_list_b now not only needs to trace the ref_pic_list_b0/1, + but also need to trace the ref_frame_list_0_short_term. We need to pass the + name directly to it rather than an index to refer to ref_pic_list_b0/1. + Part-of: + +2021-07-23 12:31:17 +0800 He Junyan + + * gst-libs/gst/codecs/gsth264decoder.c: + codecs: h264dec: Fix a typo in construct_ref_field_pic_lists_b. + The array sort of ref_frame_list_0_short_term has some typo. The + typo makes this list not in the POC ascend order and generate wrong + decoding result for interlaced streams. + Part-of: + +2021-07-15 05:12:37 -0700 Devarsh Thakkar + + * sys/kms/gstkmssink.c: + kmssink: Fix fallback path for driver not able to scale scenario + When driver return error on update plane request, kmssink + disables the scaling and retries plane update. + While doing so kmssink was matching the source rectangle dimensions + to the target rectangle dimensions which were calculated + as per scaling but this is incorrect, instead what we want here is + that target rectangle dimensions should match the source rectangle + dimensions as scaling is disabled now and so we match result + rectangle dimensions with source rectangle dimensions. + While at it, also match the result rectangle coordinates for + horizontal and vertical offsets with source rectange coordinates, + as since there is no scaling being done so no recentering is + required. + Part-of: + +2021-07-23 16:49:49 +0800 He Junyan + + * gst/videoparsers/gstvp9parse.c: + videoparsers: vp9: Need to process the first frame even not key. + Some cut VP9 streams begin with a non key frame. The current code + just bail out the parse_process_frame() if not a key frame. Because + of this, we do not set the valid caps before we push the data of the + first frame(even this first frame will be discarded by the downstream + decoder because it is not a key frame). + The pipeline such as: + gst-launch-1.0 filesrc location=some.ivf ! ivfparse ! vp9parse ! + vavp9dec ! fakesink + will get a negotiation error and the pipeline can not continue. The + correct behaviour should be: the decoder discard the first frame and + continue to decode later frames successfully. + So, when the parse does not have valid stream info(should be the first + frame case), we should continue and report caps. + Part-of: + +2021-07-21 19:40:17 +0530 Nirbheek Chauhan + + * gst/audiolatency/gstaudiolatency.c: + audiolatency: Handle audio buffers with invalid duration + pipewiresrc outputs audio buffers without a valid duration, so we need + to calculate it manually in that case. + Upstream issue: https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1438 + Part-of: + +2021-07-22 22:00:38 +0800 He Junyan + + * sys/va/gstvah265dec.c: + va: h265dec: Do not assign the frame->output_buffer until output_picture. + We may need to drop the slices such as RASL pictures with the NoRaslOutputFlag, so + the current picture of h265decoder may be freed. We should not assign the frame-> + output_buffer too early until we really output it. Or, the later coming slices will + allocate another picture and trigger the assert of: + gst_video_decoder_allocate_output_frame_with_params: + assertion 'frame->output_buffer == NULL' failed + Part-of: + +2021-07-22 15:14:26 +0200 Edward Hervey + + * gst/mpegtsdemux/tsdemux.c: + tsdemux: Handle PCR-less streams + Some programs specify a PCR PID but don't actually store any PCR values, or are + way too far apart. + In order to gracefully handle those situations, we will queue up to a certain + amount of pending buffers before deciding to give up on that PCR PID and not use + any (i.e. using DTS/PTS values as-is) + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1629 + Part-of: + +2021-07-22 10:44:27 +0800 He Junyan + + * sys/va/gstvah265dec.c: + va: H265: Add odd bit depth and chroma depth in get_rtformat. + In H265, the stream may have odd bit depth such as 9 or 11. And + the bit depth of luma and chroma may differ. For example, the + stream with luma depth of 8 and chroma depth of 9 should use the + 10 bit rtformat as the decoded picture format. + Part-of: + +2021-07-21 00:04:18 +0800 He Junyan + + * gst-libs/gst/codecs/gsth264decoder.c: + * gst-libs/gst/codecs/gsth264picture.c: + * gst-libs/gst/codecs/gsth264picture.h: + codecs: h264dec: Improve the algorithm for low latency mode. + In low_latency mode, try to bump the picture as soon as possible + without the frames disorder: + 1. We can directly output the continuous non-reference frame. + 2. Consider max_num_reorder_frames, which is special useful for + I-P mode. + 3. Consider the leading pictures with negative POC. + 4 Output small POC pictures when non-reference frame comes. + 4. Output the POC increment<=2 pictures. This is not 100% safe, + but in practice this condition can be used. + Part-of: + +2021-07-20 23:49:12 +0800 He Junyan + + * gst-libs/gst/codecs/gsth264decoder.c: + * gst-libs/gst/codecs/gsth264picture.c: + * gst-libs/gst/codecs/gsth264picture.h: + codecs: h264dec: Add help function of dpb_set_max_num_reorder_frames. + The max_num_reorder_frames can be useful for bump check. We store it + in the DPB and no need for the decoder now. + Part-of: + +2021-07-20 23:36:38 +0800 He Junyan + + * gst-libs/gst/codecs/gsth264decoder.c: + * gst-libs/gst/codecs/gsth264picture.c: + * gst-libs/gst/codecs/gsth264picture.h: + codecs: h264dec: Add a flag to record whether picture is reference. + The picture->ref field will change from time to time according to decoder's + state and reference sliding window. We need another flag to record whether + the picture is a reference picture when it is created, and this can help + the bumping check. + Part-of: + +2021-07-12 00:31:54 +0800 He Junyan + + * gst-libs/gst/codecs/gsth264decoder.c: + codecs: h264dec: Change the order of dpb_add and dpb_bump. + The current behavior is different from the SPEC. We should check + and bump the DPB or drain the DPB before we insert the current + picture into it. This may cause the output picture disorder. + Part-of: + +2021-07-12 00:06:49 +0800 He Junyan + + * gst-libs/gst/codecs/gsth264decoder.c: + * gst-libs/gst/codecs/gsth264picture.c: + * gst-libs/gst/codecs/gsth264picture.h: + codecs: h264dec: Modify the DPB need bump check. + Accord to spec, we should not add the current picture into the DPB + when we check whether it needs to bump, so the checks of the IDR and + the "memory_management_control_operation equal to 5" are no needed. + And the spec also says that the DPB only needs to bump when there is + no empty frame buffer left(We handle the IDR cases in other places). + We need to follow that and the max_num_reorder_frames is useless. + We also minus 1 in has_empty_frame_buffer because the current frame + has not been added yet. + Part-of: + +2021-07-12 00:01:58 +0800 He Junyan + + * gst-libs/gst/codecs/gsth264picture.c: + * gst-libs/gst/codecs/gsth264picture.h: + codecs: h264dec: Make dpb_has_empty_frame_buffer a codecs API. + Part-of: + +2021-07-05 23:53:25 +0800 He Junyan + + * gst-libs/gst/codecs/gsth264picture.c: + codecs: h264dec: Set picture to a small poc when mem_mgmt_5. + When current frame memory_management_control_operation equal to 5, that + means we need to drain the dpb and the current picture act as an IDR frame. + So it should have smaller poc than the later pictures to ensure the output + order. + Part-of: + +2021-07-15 11:12:01 +0200 Edward Hervey + + * gst/mxf/mxfdemux.c: + mxfdemux: Make gst-indent on the CI happy + grmbl + Part-of: + +2021-07-15 10:59:39 +0200 Edward Hervey + + * gst/mxf/mxfdemux.c: + * gst/mxf/mxfdemux.h: + mxfdemux: Handle non-frame wrapping + * If we have an index table for non-framed essence, we can handle it + * The demuxer has a state which indicates whether it will next fetch a KLV or + data contained *within* a KLV. + * The position on Essence Tracks always correspond to the next entry to fetch, + demuxer offset will be skipped accordingly whenever we switch between + partitions (in case of resyncs). A copy of the main clip/custom KLV for that + partition is kept to track the position within the essence of that partition. + * For clip/custom-wrapped raw audio, if the edit rate is too small (and would + cause plenty of tiny buffers to be outputted), specify a minimum number of edit + units per buffer. + Part-of: + +2021-07-15 10:45:46 +0200 Edward Hervey + + mxfdemux: Use KLV for position/content tracking + * For pull-based, this avoids pulling content if it's not needed (ex: skipping filler + packet, not downloading the content if we only need to know if/where an essence + packet is, etc...). Allows reducing i/o usage to the minimum. + * This also allows doing sub-klv position tracking, and opens the way for + non-frame-wrapping handling + Part-of: + +2021-07-15 10:28:31 +0200 Edward Hervey + + * gst/mxf/mxfdemux.c: + mxfdemux: Output the topology of the file in debug logs + This provides a summary of the number/type of tracks in the Material and File + Packages + Part-of: + +2021-07-15 10:16:34 +0200 Edward Hervey + + * gst/mxf/mxfdemux.c: + mxfdemux: Refactor pull seek + In order to figure out the exact start position (backed by a keyframe) accross + all tracks, we first figure out the backing keyframe position, and *then* seek + to that position. + Avoids ending up in situations where we would properly seek to the backing + keyframe on video ... but not on the audio streams (they would have been set to + the original non-keyframe position). Fixes key-unit seeking. + Part-of: + +2021-07-14 07:58:01 +0200 Edward Hervey + + * gst/mxf/mxfaes-bwf.c: + * gst/mxf/mxfessence.h: + mxfaes-bwf: Handle new custom-constant-sized variant + Defined by Amendment 2:2013 to SMPTE ST 382:2007 + Also define a new "UNKNOWN" wrapping type to make the difference with known + wrapping types + Part-of: + +2021-07-14 07:54:38 +0200 Edward Hervey + + * gst/mxf/mxfmpeg.c: + mxfmpeg: Fix essence coding detection + The picture essence coding matching was wrong. Use the proper "base" MXFUL for + video mpeg compression for matching. + Also handle the case where some old files would put the essence container label + in the essence coding field + Part-of: + +2021-07-01 08:35:01 +0200 Edward Hervey + + * gst/mxf/mxfdemux.c: + * gst/mxf/mxfdemux.h: + * gst/mxf/mxftypes.c: + * gst/mxf/mxftypes.h: + mxfdemux: Refactor index table and offset handling + * Streamline offset <=> entry handling. Historically the demuxer didn't support + information from index tables and stored the discovered information in an array + per track. When index table support was added, a parallel system was setup for + that relationship. This commit unifies this into one system with the + `find_edit_entry()` and `find_entry_for_offset()` functions. + * By extension, per-track offset entry tables are only created/used if no index + table is present for those tracks. + * Use index table information as-is. The index table system from MXF is quite + complex and there are various ways to use the information contained + within. Instead of converting that information we store the data from the tables + as-is and extract the needed information when needed. + * Handle index tables without entries (i.e. all content package units are of the + same size). + * Allow collecting index table segments as we go instead of only once if a + random-index-pack is present. This also improves support of some files in + push-mode. + * When searching for keyframe entries, use the keyframe_offset if + present (speeds up searching). + * For interleaved content (i.e. several tracks in the sample essence container), + we use a system to be able to identify the position of each track in the delta + entries of index tables. + * Handle temporal offset only on tracks which *do* need it (as specified in the + delta entries of the index tables). If present, those offsets are stored in a + pre-processed table which allows computing PTS from DTS with a simple offset. + * Add a quirk for files which are known to be have wrongly stored temporal + offsets. + * Overall opens the way to handle more types of MXF files, especially those with + non-frame-wrapping. + Part-of: + +2021-06-29 15:29:36 +0200 Edward Hervey + + * gst/mxf/mxfdemux.c: + mxfdemux: Drop duplicate seek events + Part-of: + +2021-06-24 09:53:08 +0200 Edward Hervey + + * gst/mxf/mxftypes.c: + mxf: Improve index entry debug log + By printing out the various known flag values + Part-of: + +2021-06-23 09:08:33 +0200 Edward Hervey + + * gst/mxf/mxfmetadata.c: + mxf: Demote error message when resolving valid empty reference + A Source Clip can have zero'd SourcePackageID and SourceTrackID, this indicates + it terminates the source reference chain + Part-of: + +2021-06-17 16:38:54 +0200 Edward Hervey + + * gst/mxf/mxfdemux.c: + * gst/mxf/mxfdemux.h: + mxfdemux: Handle temporal reordering shift + This is similar to how the same issue was handled in qtdemux. + In order for the "DTS <= PTS" constraint to be respected, we calculate the + maximum temporal reordering that can happen (via index tables). + If there is a non-0 temporal reordering, we: + * Shift all outgoing PTS by that amount + * Shift segment for that stream by that amount + * Don't modify DTS (i.e. they might end up having negative running-time, before + the start of the segment) + Also ensure all entries have a valid PTS set, previously this wouldn't be set + for entries with a temporal offset of 0. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/584 + (and maybe a lot of other issues) + Part-of: + +2021-07-17 20:49:15 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvavp9dec.c: + va: vp9dec: Minor cleanups. + Added a comment with a future to-do, enhanced another comment and + fixed a typo in an error log message. + Part-of: + +2021-07-17 20:48:21 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvadecoder.c: + * sys/va/gstvadecoder.h: + va: decoder: Group decoder methods. + Move up gst_va_decoder_get_config() to group decoders function in the + same file area. + Part-of: + +2021-07-17 20:45:48 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvaav1dec.c: + * sys/va/gstvadecoder.c: + * sys/va/gstvadecoder.h: + * sys/va/gstvah264dec.c: + * sys/va/gstvah265dec.c: + * sys/va/gstvampeg2dec.c: + * sys/va/gstvavp8dec.c: + * sys/va/gstvavp9dec.c: + va: Refactor _format_changed() to _config_is_equal(). + Change gst_va_decoder_format_changed() to + gst_va_decoder_config_is_equal(), which is more similar with other + GStreamer API. + The function call is replaced but it has to be negated because the + return value is the opposite. + Part-of: + +2021-07-17 20:37:52 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvadecoder.c: + * sys/va/gstvadecoder.h: + * sys/va/gstvavp9dec.c: + va: Refactor _change_resolution() to _update_frame_size(). + Rename gst_va_decoder_change_resolution() to + gst_va_decoder_update_frame_size() which resembles + gst_va_decoder_set_frame_size(). + Also added a comment to clarify the function use and makes more + specific the error message. + Part-of: + +2021-07-17 20:29:45 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvaav1dec.c: + * sys/va/gstvadecoder.c: + * sys/va/gstvadecoder.h: + * sys/va/gstvah264dec.c: + * sys/va/gstvah265dec.c: + * sys/va/gstvampeg2dec.c: + * sys/va/gstvavp8dec.c: + * sys/va/gstvavp9dec.c: + va: Refactor _set_format() to _set_frame_size(). + Renamed gst_va_decoder_set_format() to + gst_va_decoder_set_frame_size_with_surfaces() which resembles better + the passed parameters. Internally it creates the vaContext. + Added gst_va_decoder_set_frame_size() which is an alias of + gst_va_decoder_set_frame_size_with_surfaces() without surfaces. This + is the function which replaces gst_va_decoder_set_format() where + used. + Part-of: + +2021-07-16 15:24:11 +0800 He Junyan + + * gst-libs/gst/codecs/gsth265decoder.c: + * gst-libs/gst/codecs/gsth265decoder.h: + * sys/nvcodec/gstnvh265dec.c: + codecs: h265decoder: Fix a typo of NumPocTotalCurr when process ref pic list. + We should use the NumPocTotalCurr value stored in decoder, which is a calculated + valid value, rather than use the invalid value in the slice header. Most of the + time, the NumPocTotalCurr is 0 and make the tmp_refs a very short length, and + causes the decoder's wrong result. + By the way, the NumPocTotalCurr is not the correct name specified in H265 spec, + its name should be NumPicTotalCurr. We change it to the correct name. + Part-of: + +2021-07-16 13:21:11 +0800 He Junyan + + * sys/va/gstvah265dec.c: + va: h265dec: Do not add non reference frames into ref list. + The VA's ReferenceFrames should only contain the reference frame, we + should not add the non reference frames into this list. + Part-of: + +2021-07-15 19:44:21 +0900 Seungha Yang + + * tests/check/meson.build: + tests: Enable closedcaption test on Windows + ... if closedcaption plugin is available + Part-of: + +2021-07-15 16:44:18 +0900 Seungha Yang + + * sys/mediafoundation/gstmfvideoenc.cpp: + mfvideoenc: Disable RGB format support + Some GPUs support BGRA format and it will be converted to subsampled + YUV format by GPU internally. Disable this implicit conversion + since the conversion parameters such as input/output colorimetry + are not exposed nor it's written in bitstream (e.g., VUI). + We prefer explicit conversion via our conversion elements. + Part-of: + +2021-07-15 21:32:54 +0800 He Junyan + + * sys/va/gstvah265dec.c: + va: h265dec: Fix a temp var overflow bug when write pred weight table. + The temp guint8 var of delta_chroma_offset_l0 and delta_chroma_offset_l1 + can not cover the full range of delta_chroma_weight_l0/1 in the slice + header. When overflow happens, the decoder result is wrong. + Part-of: + +2021-07-12 12:08:20 +0100 Philippe Normand + + * ext/dash/gstmpdparser.c: + * tests/check/elements/dash_mpd.c: + dash: Store entire ContentProtection node in protection event data + Some manifests use the ContentProtection node to store additional information + such as the license server url. Our MPD parser used to process the + ContentProtection node, extracting Playready PSSH boxes. However for other DRM + systems, only the `value` attribute was passed down to the protection event, so + for example, Widevine data was not parsed at all and "Widevine" was passed to + the event, which is not very useful for decryptors that require a PSSH init + data. + Parsing should now be done by decryptors which will receive the entire + ContentProtection XML node as a string. This gives more "freedom" to the + decryptor which can then detect and parse custom nodes as well. + Part-of: + +2021-07-14 22:36:52 +0800 He Junyan + + * sys/va/gstvavp9dec.c: + va: vp9dec: We need to check the resolution changes for every frame. + The VP9 streams have the ability to change the resolution dynamically + at any time point. It does not send ad KEY frame before change the + resolution, even the INTER frame can change the resolution immediately. + So we need to check the resolution change for each frame and do the + re-negiotiation if needed. + Some insaned stream may play in resolution A first and then dynamically + changes to B, and after 1 or 2 frames, it use a show_existing_frame to + repeat the old frame of resolution A before. So, not only new_picture(), + but also duplicate_picture() need to check this. + Part-of: + +2021-07-14 14:43:51 +0800 He Junyan + + * sys/va/gstvavp9dec.c: + va: vp9dec: Do not re-create context for dynamical resolution change. + The driver for VP9 should have the ability to handle the dynamical resolution + changes. So if only the resolution changes, we should not re-create the config + and context in negotiation. + Part-of: + +2021-07-14 14:27:34 +0800 He Junyan + + * sys/va/gstvadecoder.c: + * sys/va/gstvadecoder.h: + va: decoder: Add helper functions to get and change the resolution. + Some codecs such as VP9, its config and context have the ability to + dynamically. When we only change the width and height, no need to + re-create the config and context. The helper function can just change + the resolution without re-creating config and context. + Part-of: + +2021-05-29 06:03:26 +1000 Jan Schmidt + + * gst/mpegtsmux/tsmux/tsmux.c: + mpegtsmux: Quieten "missed PCR" warnings in VBR mode. + When the muxer is operating in VBR mode, it's kind of expected + for now that we might not put the PCR in exactly the right place, + because the muxer doesn't schedule packets that way. In that case + don't warn constantly about the PCR ending up a few ms off target. + Part-of: + +2021-07-13 21:38:10 +1000 Matthew Waters + + * gst/rtmp2/gstrtmp2src.c: + rtmp2src: workaround a GLib race when destroying a GMainContext/GSource + https://gitlab.gnome.org/GNOME/glib/-/issues/803 + Basically, if destruction of a GSource and its associated GMainContext are + not synchronised, Then the GSource destruction can access freed + GMainContext resources and cause a crash. This is not super common but + can happen. + Part-of: + +2021-07-08 14:25:23 +0200 Mads Buvik Sandvei + + * gst-libs/gst/codecs/gsth265decoder.c: + codecs: h265decoder: Always free messages while parsing SEI + Part-of: + +2021-07-14 19:39:11 +0900 Seungha Yang + + * gst/videoparsers/gstvp9parse.c: + vp9parse: Skip parsing decode-only frame + Decode-only frame (i.e., show_existing_frame == 1) doesn't hold + any valid information apart from the index of frame to be duplicated. + Part-of: + +2021-07-13 16:55:30 +0100 Philippe Normand + + * ext/wpe/gstwpesrcbin.cpp: + wpesrcbin: Use gst_buffer_new_memdup() + g_memdup() is deprecated. + Part-of: + +2021-07-12 23:25:02 +0800 He Junyan + + * gst-libs/gst/codecs/gstvp9statefulparser.c: + codecs: vp9statefulparser: not init segmentation_abs_or_delta_update. + The segmentation_abs_or_delta_update is a stateful var, it should not + be inited every time when parsing the segmentation. + Part-of: + +2021-07-12 23:21:29 +0900 Seungha Yang + + * tests/check/elements/wasapi2.c: + tests: wasapi2: Add more device reuse cases + Part-of: + +2021-07-12 22:17:22 +0900 Seungha Yang + + * sys/wasapi2/gstwasapi2ringbuffer.cpp: + wasapi2ringbuffer: Close IAudioClient on GstAudioRingBuffer::release + IAudioClient interface is not reusable once it's initialized. + So we should close the handle and reopen it. + Part-of: + +2021-07-13 03:35:22 +0900 Seungha Yang + + * sys/wasapi2/gstwasapi2ringbuffer.cpp: + wasapi2ringbuffer: Run gst-indent + Part-of: + +2021-07-12 09:01:06 -0300 Daniel Almeida + + * gst-libs/gst/codecparsers/gstav1parser.h: + codecparsers: av1: fix underflow in last_frame_idx + The spec mandates this field be parsed using unsigned arithmetic. Nevertheless, + av1parser will use -1 apparently as an uninitialized value in + gst_av1_parse_frame_header. This immediately underflows last_frame_idx + though, since its type was defined as guint8. Fix this by converting to gint8. + Part-of: + +2021-03-18 10:55:58 +0100 Jakub Janků + + * sys/wasapi/gstwasapisink.c: + wasapi: fix reinit of audioclient in prepare() + When the sink goes from PLAYING to READY and then back to PLAYING, + the initialization of the audioclient in prepare() fails with the + error AUDCLNT_E_ALREADY_INITIALIZED. As a result, the playback + stops. + To fix this, we need to drop the AudioClient in unprepare() and + grab a new one in prepare() to be able to initialize it again + with the new buffer spec. + Part-of: + +2021-03-17 22:45:57 +0100 Jakub Janků + + * sys/wasapi/gstwasapisink.c: + * sys/wasapi/gstwasapisrc.c: + * sys/wasapi/gstwasapiutil.c: + * sys/wasapi/gstwasapiutil.h: + wasapi: split gst_wasapi_util_get_device_client() + The functionality now resides in + gst_wasapi_util_get_device() and + gst_wasapi_util_get_audio_client(). + This is a preparatory patch. It will be used in the following + patch to init/deinit the AudioClient separately from the device. + Part-of: + +2021-07-11 18:14:46 +0200 Jakub Janků + + * tests/check/elements/wasapi.c: + * tests/check/meson.build: + tests: wasapi: check PLAYING -> READY -> PLAYING + Such sequence of state changes is valid and no error should happen. + At the moment, the test fails. Following patches aim to fix it. + Partially based on the code in tests/check/elements/wasapi2.c + Part-of: + +2021-07-09 14:55:43 +0200 Guido Günther + + * gst-libs/gst/play/gstplay-signal-adapter.c: + play: Emit correct signal + SIGNAL_MEDIA_INFO_UPDATED should be emitted on media info changes, + not SIGNAL_VIDEO_DIMENSIONS_CHANGED. + Part-of: + +2021-03-05 09:18:15 +0100 Víctor Manuel Jáquez Leal + + * gst-libs/gst/vulkan/gstvkcommandpool.h: + * gst-libs/gst/vulkan/gstvkdescriptorcache.h: + * gst-libs/gst/vulkan/gstvkdevice.h: + * gst-libs/gst/vulkan/gstvkdisplay.h: + * gst-libs/gst/vulkan/gstvkfullscreenquad.h: + * gst-libs/gst/vulkan/gstvkhandlepool.h: + * gst-libs/gst/vulkan/gstvkinstance.h: + * gst-libs/gst/vulkan/gstvkphysicaldevice.h: + * gst-libs/gst/vulkan/gstvkqueue.h: + * gst-libs/gst/vulkan/gstvkswapper.h: + * gst-libs/gst/vulkan/gstvktrash.h: + * gst-libs/gst/vulkan/gstvkwindow.h: + vulkan: Declare missing auto-pointer cleanup functions. + Also removed a couple guards since, given the glib dependency, they + are set. + Part-of: + +2021-03-03 12:54:20 +0100 Víctor Manuel Jáquez Leal + + * gst-libs/gst/vulkan/gstvkvideofilter.c: + vulkan: filter: Use filter variable name for choosing queue. + Part-of: + +2021-03-03 08:50:13 +0100 Víctor Manuel Jáquez Leal + + * docs/plugins/gst_plugins_cache.json: + * ext/vulkan/vksink.c: + vulkansink: Fix element metadata. + Part-of: + +2021-06-25 09:19:25 +0800 Yinhang Liu + + * sys/msdk/gstmsdkvpp.c: + msdkvpp: use NV12 as default format on srcpad + By default, sinkpad is NV12 format and srcpad is BGRA format, the + different format will trigger an implicit format conversion in + msdkvpp, which will cause performance drop. + Part-of: + +2021-06-01 08:40:17 +0900 Dominique Martinet + + * gst-libs/gst/wayland/wayland.c: + gst-libs/gst/wayland: handle display passing better + failure to pass a display in 'handle' would result in uninitialized value + being returned, which would often segfault later down the road when trying + to initialize gstreamer context with it. + Check the return value of gst_structure_get() to make sure we return valid + data. + Furthermore, the gstglimagesink in gst-plugins-base also has a similar + mechanism but uses 'display' as field name to pass the value; instead of + requiring the application to behave differently depending on what sink + was automatically detected just try to read both values here, with display + being the new default. + Part-of: + +2021-07-08 14:46:11 +0100 Philippe Normand + + * ext/dash/gstdashdemux.c: + dashdemux: Log protection events on corresponding pad + GstDashDemuxStream is not a GstObject, so use its pad as associated object when + emitting log messages. + Part-of: + +2021-07-08 16:49:27 +0800 He Junyan + + * sys/va/gstvafilter.c: + va: vpp: Improve the color properties setting. + The current setting of color properties are not very correct and + we will get some kind of "unknown Color Standard for YUV format" + warnings printed out by drivers. The video-color already provides + some standard APIs for us, and we can use them directly. + We also change the logic to: Finding the exactly match or explicit + standard first. If not found, we continue to find the most similar + one. + Part-of: + +2021-07-08 19:03:06 +0900 Seungha Yang + + * sys/mediafoundation/gstmfcapturewinrt.cpp: + * sys/mediafoundation/gstmfsourcereader.cpp: + mfvideosrc: Fix negotiation when interlace-mode is specified + Given caps does not need to be strictly subset of device caps. + Allow accept it if device caps and requested caps can intersect + Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1619 + Part-of: + +2021-07-08 02:24:18 +0200 Mathieu Duponchelle + + * ext/closedcaption/gstcccombiner.c: + cccombiner: mark field 0 as valid when generating padding CDP + Part-of: + +2021-07-06 17:14:21 +0900 Seungha Yang + + * sys/mediafoundation/gstmfvideobuffer.cpp: + * sys/mediafoundation/gstmfvideobuffer.h: + mfvideobuffer: Don't error for unexpected Unlock/Unlock2D call + Some GPU vendor's MFT implementation calls IMFMediaBuffer::Unlock() + without previous IMFMediaBuffer::Lock() call. Which is obviously + driver bug but we can ignore the Unlock call. + Part-of: + +2021-06-30 10:30:43 +0200 Stéphane Cerveau + + * ext/dash/gstdashsink.c: + dashsink: fix crash with no pad name for representation + if there is no pad name, the representation id + was NULL, causing a crash when writing the mpd file. + gst-launch-1.0 videotestsrc num-buffers=900 ! video/x-raw, width=800, + height=600, framerate=30/1 ! x264enc ! video/x-h264, profile=high ! + dashsink + Part-of: + +2021-03-09 11:40:43 +0100 Stéphane Cerveau + + * docs/plugins/gst_plugins_cache.json: + * ext/dash/gstdashsink.c: + dashsink: Add signals for allowing custom playlist/fragment + 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. + Following the HLS change: + https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/918 + Part-of: + +2021-07-06 14:06:24 +0800 He Junyan + + * gst-libs/gst/codecs/gsth265decoder.c: + codecs: h265dec: Disable the POC order warning for negative POC. + There may be leading frames after the IRAP frames, which has negative + POC. This kind of frames are allowed and they will be displayed before + the IRAP frame. So the warning should not be triggered for them. Init + the last_output_poc to G_MININT32 can avoid this. + Part-of: + +2021-07-06 13:38:16 +0800 He Junyan + + * gst-libs/gst/codecs/gsth264decoder.c: + codecs: h264dec: Disable the POC order warning for negative POC. + There may be leading frames after the IDR frame, which has negative + POC. This kind of frames are allowed and they will be displayed before + the IDR frame. So the warning should not be triggered for them. Init + the last_output_poc to G_MININT32 can avoid this. + Part-of: + +2021-06-25 15:57:03 +0200 Jan Alexander Steffens (heftig) + + * gst/interlace/gstinterlace.c: + interlace: Push the reconfigure event in the right direction + Part-of: + +2021-07-05 15:44:34 +0800 He Junyan + + * sys/va/gstvabasedec.c: + va: basedec: Fix some artifact when do the crop copy. + The default video converter setting will add some artifact into + the picture for 10/12 bits conversion. This make the MD5 checksum + change from the original picture. + Part-of: + +2021-07-05 02:05:03 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.cpp: + d3d11decoder: Enable zero-copy for Qualcomm + Qualcomm GPU works fine with current implementation now. + Noticeable difference between when it was disabled and current + d3d11 implementation is that we now support GstD3D11Memory + pool, so there will be no more frequent re-binding decoder surface anymore. + Part-of: + +2021-07-05 07:42:39 +0200 Edward Hervey + + * gst/mxf/mxfdemux.c: + * gst/mxf/mxfmetadata.c: + * gst/mxf/mxfmetadata.h: + mxfdemux: Check validity of interleaved File Package + As specified by the S377 MXF core specification, if a file package has + interleaved content, then all tracks must be using the same Edit Rate + Part-of: + +2021-07-05 01:54:02 +0900 Seungha Yang + + * sys/d3d11/gstd3d11vp9dec.cpp: + d3d11vp9dec: Fix for incorrect use_prev_in_find_mv_refs setting + Set use_prev_in_find_mv_refs depending on context. The value seems + to be used by AMD and Qualcomm (Intel and NVIDIA doesn't make difference + as per test) + Part-of: + +2021-05-11 14:07:14 +0800 Haihao Xiang + + * sys/msdk/gstmsdkallocator_libva.c: + * sys/msdk/gstmsdksystemmemory.c: + * sys/msdk/gstmsdkvideomemory.c: + * sys/msdk/gstmsdkvpp.c: + * sys/msdk/msdk.c: + * sys/msdk/msdk_libva.c: + gstmsdkvpp: add RGBP and BGRP in src pad + It requires MFX version 2.4+ + Part-of: + +2021-07-04 00:36:27 +0900 Seungha Yang + + * sys/mediafoundation/gstmfsourcereader.cpp: + * sys/mediafoundation/gstmftransform.cpp: + mediafoundation: Port to IID_PPV_ARGS + Make code short where possible + Part-of: + +2021-07-04 00:24:09 +0900 Seungha Yang + + * sys/mediafoundation/gstmfaacenc.cpp: + * sys/mediafoundation/gstmfmp3enc.cpp: + mfaudioenc: Remove pointless enumerating for hardware audio encoder + Hardware audio encoder can exist in theory, but it's untested + and we are not sure whether it can be preferred over software + implementation which is implemented by MS + Part-of: + +2021-07-03 23:12:08 +0900 Seungha Yang + + * sys/mediafoundation/gstmfaacenc.cpp: + * sys/mediafoundation/gstmfh264enc.cpp: + * sys/mediafoundation/gstmfh265enc.cpp: + * sys/mediafoundation/gstmfmp3enc.cpp: + * sys/mediafoundation/gstmfvp9enc.cpp: + mediafoundation: Fix typos + Part-of: + +2021-07-03 22:56:48 +0900 Seungha Yang + + * sys/mediafoundation/gstmfaacenc.cpp: + * sys/mediafoundation/gstmfaudioenc.cpp: + * sys/mediafoundation/gstmfcapturewinrt.cpp: + * sys/mediafoundation/gstmfh264enc.cpp: + * sys/mediafoundation/gstmfh265enc.cpp: + * sys/mediafoundation/gstmfmp3enc.cpp: + * sys/mediafoundation/gstmfsourcereader.cpp: + * sys/mediafoundation/gstmftransform.cpp: + * sys/mediafoundation/gstmfutils.cpp: + * sys/mediafoundation/gstmfvideobuffer.cpp: + * sys/mediafoundation/gstmfvideoenc.cpp: + * sys/mediafoundation/gstmfvp9enc.cpp: + * sys/mediafoundation/mediacapturewrapper.cpp: + mediafoundation: Run gst-indent + Part-of: + +2021-06-26 21:42:37 +0800 He Junyan + + * sys/va/gstvah265dec.c: + va: Consider the compatibility when we get_profile() for H265 decoder. + Adding the compatile profiles when we decide the final profile used for decoding. + The final profile candidates include: + 1. The profile directly specified by SPS, which is the exact one. + 2. The compatile profiles decided by the upstream element such as the h265parse. + Part-of: + +2021-06-27 15:34:28 +0800 He Junyan + + * gst/videoparsers/gsth265parse.c: + h265parse: Add special profile case for profile_idc 0. + This is a work-around to identify some main profile streams having + wrong profile_idc. There are some wrongly encoded main profile streams + which doesn't have any of the profile_idc values mentioned in Annex-A, + instead, general_profile_idc has been set as zero and the + general_profile_compatibility_flag[general_profile_idc] is TRUE. + Assuming them as MAIN profile for now. + Part-of: + +2021-06-26 15:11:47 +0800 He Junyan + + * gst/videoparsers/gsth265parse.c: + h265parse: Map -intra profiles to non-intra compatible profiles. + All the -intra profiles can map to non-intra profiles as compatible + profiles, except the monochrome case for main and main-10. + Part-of: + +2021-07-01 19:27:28 +0800 He Junyan + + * sys/va/gstvavp9dec.c: + va: vp9dec: update segmentation and store the result. + The segmentation is stateful, its information may depend on the previous + segmentation setting. For example, if loop_filter_delta_enabled is TRUE, + the filter_level[GST_VP9_REF_FRAME_INTRA][1] should inherit the previous + frame's value and can not be calculated by the current frame's segmentation + data only. So we need to maintain the segmentation state inside the vp9 + decoder and update it when the new frame header comes. + We also fix the CLAMP issue of lvl_seg and intra_lvl because of their wrong + uint type here. + Part-of: + +2021-06-30 15:23:15 +0800 He Junyan + + * gst-libs/gst/codecs/gstvp9statefulparser.c: + codecparsers: vp9statefulparser: Fix the gst_vp9_get_qindex clamp issue. + The alternate quantizer is a delta value and should be int type. + We mark it wrongly as uint, that will make CLAMP (data, 0, 255) + always choose 255 rather than 0 if the data < 0. + Part-of: + +2021-06-30 15:32:42 +0800 He Junyan + + * gst-libs/gst/codecparsers/gstvp9parser.h: + codecparsers: vp9parser: Use macro to define the size of filter_level in Segmentation. + Part-of: + +2021-06-30 12:15:42 +0800 He Junyan + + * gst-libs/gst/codecparsers/gstvp9parser.h: + codecparsers: vp9parser: Delete the verbose redefine of MAX_LOOP_FILTER. + Part-of: + +2021-06-29 23:21:24 +0800 He Junyan + + * sys/va/gstvaallocator.c: + va: allocator: dma: Fail when mapping the non-linear buffer. + The current way of DMA buffer mapping is simply forwarding the job + to parent's map function, which is a mmap(). That can not handle the + non-linear buffers, such as tiling, compressed, etc. The incorrect + mapping of such buffers causes broken images, which are recognized + as bugs. We should directly block this kind of mapping to avoid the + misunderstanding. + Part-of: + +2021-07-02 13:10:25 +1000 Matthew Waters + + * ext/closedcaption/gstccconverter.c: + * tests/check/elements/ccconverter.c: + ccconverter: fix framerate caps negotiation from non-cdp to cdp + We can only convert from non-cdp to cdp within the confines of valid cdp + framerates. The existing caps negotiation code was allowing any + framerate to convert to a cdp output which is incorrect and would hit an + assertion later. + Part-of: + +2021-06-09 15:16:39 +0800 He Junyan + + * gst-libs/gst/codecs/gsth265decoder.c: + codecs: h265decoder: Consider the conformance window changes when new_sequence(). + The change of conformance_window_flag and crop windows size also has impact on the + output resolution and caps. So it deserves a trigger of new_sequence() to notify + the sub class to update caps and pool. + Part-of: + +2021-06-16 01:07:09 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth265decoder.c: + h265decoder: Don't hold reference to GstVideoCodecFrame for dropped picture + We are dropping RASL (Random Access Skipped Leading picture) which + is associated with an IRAP (Intra Random Access Picture) that has + NoRaslOutputFlag equal to 1, since the RASL picture will not be + outputted and also it should not be used for reference picture. + So, corresponding GstVideoCodecFrame should be released immediately. + Otherwise GstVideoDecoder baseclass will hold the unused frame. + Part-of: + +2021-06-21 13:23:13 +0200 Edward Hervey + + * gst/mxf/mxfdemux.c: + * gst/mxf/mxfvanc.c: + mxfvanc: Handle empty ANC essence + Not having any *actual* ANC is totally fine and common usage with several MXF + variants. + In order to properly advance the streams, the essence handler returns an empty + GAP buffer which gets converted to a GST_EVENT_GAP. + Part-of: + +2021-06-30 18:11:46 +0900 Seungha Yang + + * sys/mediafoundation/gstmfvideoenc.cpp: + mfvideoenc: Don't ignore previous flow return value + In case of ASYNC MFT (hardware encoder), we were ignoring previous + finish_frame or pad_push return value. so, error wasn't propagated. + Part-of: + +2021-05-20 00:49:15 +0900 Seungha Yang + + * sys/d3d11/gstd3d11compositor.cpp: + * sys/d3d11/gstd3d11compositor.h: + * sys/d3d11/gstd3d11compositorbin.cpp: + d3d11compositor: Add scaling policy to support PAR-aware scaling + Identical to https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1156 + but for D3D11. + Part-of: + +2021-06-30 13:56:49 +0900 youngsoo.lee + + * gst-libs/gst/opencv/meson.build: + opencv: Fix build error on macOS + The build fails on macos with the following error: + /usr/local/Cellar/opencv/4.5.0_5/include/opencv4/opencv2/core/mat.hpp:2226:15: error: no template named 'initializer_list' in namespace 'std' + Mat_(std::initializer_list<_Tp> values); + fatal error: too many errors emitted, stopping now [-ferror-limit=] + 35 warnings and 20 errors generated. + Part-of: + +2021-03-03 15:38:45 -0300 Ezequiel Garcia + + * sys/v4l2codecs/gstv4l2codecvp8dec.c: + v4l2codecs: vp8: Check kernel version + Print a warning if the kernel version is too old. + Signed-off-by: Ezequiel Garcia + Part-of: + +2021-03-02 18:13:27 -0300 Ezequiel Garcia + + * sys/v4l2codecs/gstv4l2codecvp8dec.c: + * sys/v4l2codecs/linux/v4l2-controls.h: + * sys/v4l2codecs/linux/videodev2.h: + * sys/v4l2codecs/linux/vp8-ctrls.h: + * sys/v4l2codecs/plugin.c: + v4l2codecs: vp8: Update to the new uAPI + Starting from Linux v5.13, the V4L2 stateless VP8 uAPI + is updated and stable. + Signed-off-by: Ezequiel Garcia + Part-of: + +2021-06-27 01:15:49 +0900 Seungha Yang + + * sys/nvcodec/gstnvrtcloader.c: + nvcodec: Enhance CUDA runtime compiler library loading on Windows + The name of installed CUDA runtime compiler library is formed like + nvrtc64_{major-version}{minor-version}_0.dll on Windows + (which is differnt from documented in https://docs.nvidia.com/cuda/nvrtc/index.html) + And minor version might not be exactly same as that of CUDA. + Part-of: + +2021-06-14 18:49:20 +0900 Seungha Yang + + * sys/d3d11/gstd3d11av1dec.cpp: + * sys/d3d11/gstd3d11av1dec.h: + * sys/d3d11/gstd3d11decoder.cpp: + * sys/d3d11/gstd3d11decoder.h: + * sys/d3d11/meson.build: + * sys/d3d11/plugin.c: + d3d11: Add AV1 decoder + Introduce Direct3D11/DXVA AV1 decoder element + Part-of: + +2021-06-27 23:09:30 +0900 Seungha Yang + + * gst-libs/gst/codecs/gstav1decoder.c: + av1decoder: Store display resolution for duplicated picture + Target display resolution might be required by subclass implementation + Part-of: + +2021-06-27 20:35:49 +0900 Seungha Yang + + * gst-libs/gst/codecs/gstav1decoder.c: + av1decoder: Fix debug typo + Part-of: + +2021-06-27 20:19:39 +0900 Seungha Yang + + * gst-libs/gst/codecparsers/gstav1parser.c: + av1parser: Fix tile size calculation + Remaining size should exclude already read "tile size bits". + And see also "5.11.1. General tile group OBU syntax" + Part-of: + +2021-06-28 21:13:56 -0400 Olivier Crête + + * ext/webrtc/transportreceivebin.c: + webrtc receivebin: Drop serialized queries before receive queue + If they're not dropped, they can be blocked in the queue even if it is + leaky in the case where there is a buffer being pushed downstream. Since + in webrtc, it's unlikely that there will be a special allocator to + receive RTP packets, there is almost no downside to just ignoring the + queries. + Also drop queries if they get caught in the pad probe after the queue. + Part-of: + +2021-06-26 14:31:01 -0400 Olivier Crête + + * ext/webrtc/transportreceivebin.c: + * ext/webrtc/transportreceivebin.h: + webrtc receivebin: Only set queue to leaky when the pad is blocked + When the pad is no longer blocked, remove the leakyness to make sure + everything gets into the jitterbuffer. + Part-of: + +2021-06-26 14:25:39 -0400 Olivier Crête + + * ext/webrtc/transportreceivebin.c: + webrtc receivebin: Don't unblock pad until sender is unblocked + As ther OpenSSL session is created when the receiver goes into + playing, we have to wait for the ICE session to be connected before we + can start delivering packets to the DTLS element. + Fixes #1599 + Part-of: + +2021-06-24 13:17:09 +0300 Sebastian Dröge + + * ext/webrtc/gstwebrtcbin.c: + * gst-libs/gst/webrtc/dtlstransport.c: + webrtcbin: Sync to the clock per stream and not per bundle + By using the clocksync inside the dtlssrtpenc, all streams inside a + bundled are synchronized together. This will cause problems if their + buffers are not already arriving synchronized: clocksync would wait for + a buffer on one stream and then buffers from the other stream(s) with + lower timestamps would all be sent out too late. + Placing the clocksync before the rtpbin and rtpfunnel synchronizes each + stream individually and they will be send out more smoothly as a result. + Part-of: + +2021-06-24 14:58:12 -0400 Olivier Crête + + * ext/webrtc/transportreceivebin.c: + * ext/webrtc/transportsendbin.c: + * ext/webrtc/transportstream.c: + * gst-libs/gst/webrtc/rtpreceiver.c: + * gst-libs/gst/webrtc/rtpreceiver.h: + webrtc: Remove the webrtc-priv.h header from public headers + And this time for real, also import it in a couple more places + inside the webrtc element to make it build. + Fixes #1607 + Part-of: + +2021-06-09 17:29:19 +0800 He Junyan + + * sys/va/gstvaav1dec.c: + va: change AV1 GstVideoAlignment setting to left-top corner. + Part-of: + +2021-06-18 10:37:06 +0800 He Junyan + + * sys/va/gstvah264dec.c: + va: h264dec: Set the GstVideoAlignment correctly. + We should set GstVideoAlignment based on the sequence's crop information. + Part-of: + +2021-06-09 17:21:18 +0800 He Junyan + + * sys/va/gstvah265dec.c: + va: h265dec: Set the GstVideoAlignment correctly. + We should set GstVideoAlignment based on the conformance window info. + Part-of: + +2021-06-09 17:19:04 +0800 He Junyan + + * sys/va/gstvapool.c: + va: pool: Add VideoCropMeta to the buffer if crop_top/left > 0. + Part-of: + +2021-06-09 17:14:42 +0800 He Junyan + + * sys/va/gstvabasedec.c: + * sys/va/gstvabasedec.h: + va: basedec: Copy the frames into other_pool if needed. + If decoder's crop_top/left value > 0 and the downstream does not + support the VideoCropMeta, we need to manually copy the frames + into the other_pool and output it. + Part-of: + +2021-06-09 15:44:33 +0800 He Junyan + + * sys/va/gstvabasedec.c: + * sys/va/gstvabasedec.h: + va: basedec: Setup the other_pool to copy output if crop_left/top. + If the decoder has crop_top/left value > 0(e.g. the conformance + window in the H265). Which means that the real output picture + locates in the middle of the decoded buffer. If the downstream can + support VideoCropMeta, a VideoCropMeta is added to notify the + real picture's coordinate and size. But if not, we need to copy + it manually and the other_pool is needed. We always assume that + decoded picture starts from top-left corner, and so there is no + need to do this if crop_bottom/right value > 0. + Part-of: + +2021-06-07 00:49:49 +0800 He Junyan + + * sys/va/gstvapool.c: + va: No need to set the alignment for VideoMeta + The base va decoder's video_align is just used for calculation the + real decoded buffer's width and height. It does not have meaning + for the VideoMeta, because it does not align to the real picture + in the output buffer. We will use VideoCropMeta to replace it later. + Part-of: + +2021-06-03 00:07:05 +0800 He Junyan + + * sys/va/gstvapool.c: + va: Delete the useless align expand in va_pool_set_config(). + The base va decoder's video_align is just used for calculation the + real decoded buffer's width and height. While the gst_video_info_align + just calculate the offset and stride based on the video_align. But + all the offsets and strides are overwritten in gst_va_dmabuf_allocator_try + or gst_va_allocator_try, which make that calculation useless. + Part-of: + +2021-06-28 17:41:38 +0300 Sebastian Dröge + + * gst-libs/gst/webrtc/webrtc-priv.h: + * gst-libs/gst/webrtc/webrtc_fwd.h: + webrtc: Re-add WebRTC object docs to the public headers + So they end up in the generated documentation and the Since markers + appear in the .gir files too. + Also remove wrong "Since: 1.16" markers for some objects that were + available since 1.14.0 already. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1609 + Part-of: + +2021-06-25 10:20:06 +0300 Sebastian Dröge + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/utils.c: + webrtcbin: Set transceiver kind and codec preferences immediately when creating it + Otherwise the on-new-transceiver signal will always be emitted with kind + set to UNKNOWN and no codec preferences although both are often known at + this point already. + Part-of: + +2021-06-25 12:14:03 +0300 Sebastian Dröge + + * tests/check/elements/webrtcbin.c: + webrtcbin: Add a test for setting codec preferences as part of "on-new-transceiver" when setting the remote offer + Part-of: + +2021-06-25 12:13:42 +0300 Sebastian Dröge + + * tests/check/elements/webrtcbin.c: + webrtc: Use fail_unless_equals_string() for string assertions + Part-of: + +2021-06-08 11:40:14 +0300 Sebastian Dröge + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Store newly created transceivers when creating an answer also in the seen transceivers list + Otherwise it might be used a second time for another media afterwards. + Part-of: + +2021-06-08 11:39:27 +0300 Sebastian Dröge + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: When creating a new transceiver as part of creating the answer also take its codec preferences into account + Part-of: + +2021-06-08 11:38:11 +0300 Sebastian Dröge + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Fix a couple of caps leaks of the offer caps + Part-of: + +2021-06-24 12:28:11 +0100 Philippe Normand + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Stop transceivers update after first SDP error on data channel + When invalid SDP is supplied, _update_data_channel_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. + This change is similar to the one applied in + 064428cb34572fa1a018ebbaba6925967ba99dc0. + See also #1595 + Part-of: + +2021-06-21 16:50:46 -0400 Olivier Crête + + * tests/check/elements/webrtcbin.c: + webrtcbin test: Fix race in new test + Pull a buffer from a sink to make sure that the caps are already + set before trying to update them. + Part-of: + +2021-06-22 16:12:57 +0800 Mengkejiergeli Ba + + * sys/msdk/gstmsdkenc.c: + * sys/msdk/gstmsdkenc.h: + * sys/msdk/gstmsdkvp9enc.c: + msdk: fix qp range for vp9enc + Part-of: + +2021-06-10 11:46:35 +0300 Sebastian Dröge + + * gst/timecode/gstavwait.c: + avwait: Don't consider it a segment change if the segment is the same except for the position + Part-of: + +2021-06-21 17:13:33 +0900 Seungha Yang + + d3d11: Add support for GRAY and more YUV formats + By this commit, following formats will be newly supported by d3d11 elements + * Y444_{8, 12, 16}LE formats: + Similar to other planar formats. Such Y444 variants are not supported + by Direct3D11 natively, but we can simply map each plane by + using R8 and/or R16 texture. + * P012_LE: + It is not different from P016_LE, but defining P012 and P016 separately + for more explicit signalling. Note that DXVA uses P016 texture + for 12bits encoded bitstreams. + * GRAY: + This format is required for some codecs (e.g., AV1) if monochrome + is supported + * 4:2:0 planar 12bits (I420_12LE) and 4:2:2 planar 8, 10, 12bits + formats (Y42B, I422_10LE, and I422_12LE) + Part-of: + +2021-06-10 11:42:24 +0300 Sebastian Dröge + + * gst/mpegtsmux/gstbasetsmux.c: + tsmux: When selecting random PIDs, name the pads according to those PIDs + Some elements will make use of the automatically generated names to + create new pads in future muxer instances, for example splitmuxsink. + Previously we would've created a pad with a random pid that would become + "sink_0", and then on a new muxer instance a pad "sink_0" and tsmux + would've then failed because 0 is not a valid PID. + Part-of: + +2021-06-23 01:43:08 +0900 Seungha Yang + + mfvideoenc: Enhance B-frame timestamp handling + When B-frame is enabled, encoder seems to adjust PTS of encoded sample + by using frame duration. + For instance, one observed timestamp pattern by using B-frame enabled + and 30fps stream is: + * Frame-1: MF pts 0:00.033333300 MF dts 0:00.000000000 + * Frame-2: MF pts 0:00.133333300 MF dts 0:00.033333300 + * Frame-3: MF pts 0:00.066666600 MF dts 0:00.066666600 + * Frame-4: MF pts 0:00.099999900 MF dts 0:00.100000000 + We can notice that the amount of PTS shift is frame duration and + Frame-4 exhibits PTS < DTS. + To compensate shifted timestamp, we should + calculate the timestamp offset and re-calculate DTS correspondingly. + Otherwise, total timeline of output stream will be shifted, and that + can cause time sync issue. + Part-of: + +2021-06-10 11:36:43 +0300 Sebastian Dröge + + * gst/mpegtsmux/gstbasetsmux.c: + tsmux: Recheck existing pad PIDs when requesting a new pad with a random pid + Previously pads might have been requested already (e.g. in NULL state), + then reset was called (e.g. because changing state) and then a new pad + was requested. Resetting is re-creating the internal muxer object and as + such resetting the pid counter, so the next requested pad would get the + same pid as the first requested pad which then leads to collisions. + Part-of: + +2021-06-22 02:34:18 +0900 Seungha Yang + + * sys/mediafoundation/gstmfh264enc.cpp: + * sys/mediafoundation/gstmfh265enc.cpp: + * sys/mediafoundation/gstmfvideoenc.cpp: + mfh264enc, mfh265enc: Set profile string to src caps + Set configured profile to src caps so that downstream can figure + out selected profile. + Part-of: + +2021-04-21 16:24:00 -0400 Olivier Crête + + * ext/webrtc/webrtcdatachannel.h: + * gst-libs/gst/webrtc/datachannel.c: + * gst-libs/gst/webrtc/datachannel.h: + * gst-libs/gst/webrtc/webrtc-priv.h: + webrtc lib: Make the datachannel struct private + This will prevent any unsafe access. + Part-of: + +2021-04-21 16:19:41 -0400 Olivier Crête + + * gst-libs/gst/webrtc/dtlstransport.c: + * gst-libs/gst/webrtc/dtlstransport.h: + * gst-libs/gst/webrtc/webrtc-priv.h: + webrtc lib: Make the DTLSTransport struct private + This will prevent any unsafe access. + Part-of: + +2021-04-21 16:17:23 -0400 Olivier Crête + + * ext/webrtc/nicetransport.h: + * gst-libs/gst/webrtc/icetransport.c: + * gst-libs/gst/webrtc/icetransport.h: + * gst-libs/gst/webrtc/webrtc-priv.h: + webrtc lib: Make the icetransport struct private + This will prevent any unsafe access. + Part-of: + +2021-04-21 16:04:26 -0400 Olivier Crête + + * gst-libs/gst/webrtc/rtpreceiver.h: + * gst-libs/gst/webrtc/webrtc-priv.h: + webrtc lib: Make the rtpreceiver struct private + This will prevent any unsafe access. + Part-of: + +2021-04-21 16:00:57 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + * gst-libs/gst/webrtc/rtpsender.c: + * gst-libs/gst/webrtc/rtpsender.h: + * gst-libs/gst/webrtc/webrtc-priv.h: + webrtc lib: Make the rtpsender struct private + This will prevent any unsafe access. + Part-of: + +2021-04-21 16:00:34 -0400 Olivier Crête + + * ext/webrtc/webrtctransceiver.h: + * gst-libs/gst/webrtc/rtptransceiver.c: + * gst-libs/gst/webrtc/rtptransceiver.h: + * gst-libs/gst/webrtc/webrtc-priv.h: + webrtc lib: Make the transceiver struct private + This will prevent any unsafe access. + Part-of: + +2021-06-18 19:26:35 +0200 Mathieu Duponchelle + + * ext/x265/gstx265enc.c: + x265enc: add negative DTS support + Use the same set_min_pts approach as x264enc. + Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/304 + Part-of: + +2021-06-17 20:10:35 +0900 Seungha Yang + + * sys/decklink/gstdecklinkaudiosrc.cpp: + decklinkaudiosrc: Don't assume that stream time is always valid + As per SDK doc, IDeckLinkInputCallback::VideoInputFrameArrived + method might not provide video frame and it can be null. + In that case, given stream_time can be invalid. + So, we should not try to convert GST_CLOCK_TIME_NONE + by using gst_clock_adjust_with_calibration() + Part-of: + +2021-06-14 13:16:30 -0400 Thibault Saunier + + * gst-libs/gst/transcoder/gsttranscoder.c: + transcoder: Fix usage of g_error_propagate + In the error callback we were propagating an error we were not owning + which is incorrect use of the API. + Also we were clearing a GError we already propagated which is wrong + as propagating gives ownership away. + Part-of: + +2021-06-14 13:13:24 -0400 Thibault Saunier + + * gst-libs/gst/transcoder/gsttranscoder.c: + transcoder: Add a missing object unlocking + Part-of: + +2021-06-14 15:07:05 +0200 Stéphane Cerveau + + * ext/faad/gstfaad.c: + faad: fix typo in element documentation + seealso is now see_also + Part-of: + +2021-06-17 20:17:14 +0200 Víctor Manuel Jáquez Leal + + * tests/check/elements/msdkh264enc.c: + tests: msdkh264dec: Run test only if factory is available. + Part-of: + +2021-06-17 11:25:11 +0200 Víctor Manuel Jáquez Leal + + * sys/msdk/gstmsdkcontext.c: + msdk: Demote error log message to warning. + It is not an error that the available hardware doesn't support VA-API/MSDK. Just + none plugin features will be registered. + Part-of: + +2021-06-20 18:48:21 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11_private.h: + * gst-libs/gst/d3d11/gstd3d11bufferpool.cpp: + * gst-libs/gst/d3d11/gstd3d11device.cpp: + * gst-libs/gst/d3d11/gstd3d11format.cpp: + * gst-libs/gst/d3d11/gstd3d11memory.cpp: + * gst-libs/gst/d3d11/gstd3d11utils.cpp: + * gst-libs/gst/d3d11/meson.build: + libs: d3d11: Port to C++ + In general, C++ COM APIs are slightly less verbose and more readable + than C APIs. And C++ supports some helper methods + (smart pointer and C++ only macros for example) which are not allowed for C. + Part-of: + +2021-06-16 10:23:37 -0700 U. Artie Eoff + + * sys/msdk/gstmsdk.c: + * sys/msdk/meson.build: + msdk: declare external dependencies + Track kernel and VA driver dependencies so gstreamer + will re-inspect the plugin if any of them change. + Also, do not blacklist the plugin if !msdk_is_available + since it could be a transient issue caused by one or + more external dependency issues (e.g. wrong/missing + driver specified, but corrected by user later on). + Part-of: + +2021-06-17 01:00:33 +0900 Seungha Yang + + * gst/videoparsers/gsth264parse.c: + * gst/videoparsers/gsth265parse.c: + h264parse,h265parse: Push parameter set NAL units again per segment-done + Some decoder implementations might drain out internal buffers and + reset its status on segment-done event. So, in case that + upstream stream-format is packetized but downstream supports only + byte-format, required codec-data might not be forwarded toward + downstream if such parameter set NAL units don't exist in inband + bitstream. Therefore, parse elements should re-send parameter set NAL + units like the case of flush event. + Part-of: + +2021-06-16 10:31:13 -0400 Nicolas Dufresne + + * gst-libs/gst/codecs/gstvp8decoder.c: + vp8decoder: Drain the output queue on EOS/finish + The finish() virtual method was flushing the queue, instead push the + remaining buffers. It is not required to reset in finish() unlike + drain(). This a regression causing last frame to always be lost. + Part-of: + +2021-06-16 10:30:18 -0400 Nicolas Dufresne + + * gst-libs/gst/codecs/gstvp8decoder.c: + v4l2slvp8dec: Only ask for output delay once per negotiation + While it's technically possible to change it per frame, asking for + that every frame is not very useful. This mimic H264 decoder better. + Part-of: + +2021-06-16 16:56:14 +0800 He Junyan + + * sys/va/gstvabasedec.c: + va: Improve the default mapping between rt_format and video format. + We add 12 bits entries into this default mapping. And the old mapping + is not precise. For example, the NV12 should not be used as the default + mapping for VA_RT_FORMAT_YUV422 and VA_RT_FORMAT_YUV444, it is even not + a 422 or 444 format. + Part-of: + +2021-06-16 16:43:40 +0800 He Junyan + + * sys/va/gstvah265dec.c: + va: Add 12 bits rt_format setting in H265. + In order to support 12 bits format decoding, we need to add the + support for 12 bits rt_format in H265. + Part-of: + +2021-06-16 16:32:30 +0800 He Junyan + + * sys/va/gstvavideoformat.c: + va: Fix a typo in video format mapping. + GST_VIDEO_FORMAT_Y412_LE is a 4:4:4 format and so should be mapped + to VA_RT_YUV444_12 rt format. + Part-of: + +2021-06-15 21:36:43 +0800 He Junyan + + * gst/videoparsers/gsth265parse.c: + h265parse: Fix a typo in get_compatible_profile_caps(). + The GST_H265_PROFILE_MAIN_444_10 profile should be compatible with + GST_H265_PROFILE_SCREEN_EXTENDED_MAIN_444_10, not the current + GST_H265_PROFILE_SCREEN_EXTENDED_MAIN_10. + Part-of: + +2020-12-15 18:11:08 +0800 Randy Li (ayaka) + + * ext/wayland/gstwaylandsink.c: + * ext/wayland/gstwaylandsink.h: + * ext/wayland/wlwindow.c: + * ext/wayland/wlwindow.h: + waylandsink: prevent frame callback being released twice + For those using context from the application which + would be the embedded video case, if the frame callback + is entering at the same time as window is finalizing, + a wayland proxy object would be destroyed twice, leading + the refcout less than zero in the second time, it can + throw an abort() in wayland. + For those top window case, which as a directly connection + to the compositor, they can stop the message queue then + the frame callback won't happen at the same time as the + window is finalizing. It doesn't think it would bother + them about this. + Part-of: + +2021-06-14 16:04:52 -0400 Nicolas Dufresne + + * gst/codecalpha/gstalphadecodebin.c: + * sys/v4l2codecs/gstv4l2codecalphadecodebin.c: + alphadecodebin: Fix stall due to QoS + alphacombine element is a simple element that assumes buffers are always + paired, or at least that missing buffers are signalled with a GAP. The QoS + implementation in the GstVideoDecoder base class allow decoders dropping + frames independently and that could lead to stall in alphacombine. + Part-of: + +2021-02-02 11:02:02 +0100 Stéphane Cerveau + + * docs/plugins/gst_plugins_cache.json: + * ext/openjpeg/gstopenjpegenc.c: + * gst-libs/gst/codecparsers/gstjpeg2000sampling.c: + * gst-libs/gst/codecparsers/gstjpeg2000sampling.h: + * gst/videoparsers/gstjpeg2000parse.c: + jpeg2000parse, openjpeg: add support for YCrCb 4:1:1 sampling + Add YCrCb 4:1:1 support in openjpeg elements + and fix in jpeg2000parse the YCrCb 4:1:0 support + Part-of: + +2021-06-10 23:35:38 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.cpp: + * sys/d3d11/gstd3d11h264dec.cpp: + * sys/d3d11/gstd3d11h265dec.cpp: + * sys/d3d11/gstd3d11mpeg2dec.cpp: + * sys/d3d11/gstd3d11vp8dec.cpp: + * sys/d3d11/gstd3d11vp9dec.cpp: + d3d11decoder: Don't print error log when no DPB texture is available + ... but we are flushing. The condition is quite expected situation + when pipeline is in the middle of seeking operation. + Part-of: + +2021-05-23 18:17:38 +0800 Yinhang Liu + + * sys/msdk/gstmsdkenc.c: + msdkenc: add extbrc support in ext-coding-props property + The SDK can support external bitrate control [1], so add extbrc + to enable this feature. + [1] https://github.com/Intel-Media-SDK/MediaSDK/blob/master/doc/mediasdk-man.md#mfxextcodingoption2 + Part-of: + +2021-05-23 18:13:25 +0800 Yinhang Liu + + * docs/plugins/gst_plugins_cache.json: + * sys/msdk/gstmsdkenc.c: + * sys/msdk/gstmsdkenc.h: + msdkenc: add ext-coding-props for external coding options + This property supports passing multiple parameters using GstStructure. + Example usage: + ext-coding-props="props,key0=value0,key1=value1,..." + Part-of: + +2021-06-05 21:59:50 +0800 He Junyan + + * gst-libs/gst/codecs/gsth265decoder.c: + codecs: Fix the H265 poc out of order warning. + We always get a warning such as: + h265decoder gsth265decoder.c:1432:gst_h265_decoder_do_output_picture: \ + Outputting out of order 255 -> 0, likely a broken stream + in H265 decoder. + The problem is caused because we fail to reset the last_output_poc when + we get IDR and BLA. The incoming IDR and BLA frame already bump all the + frames in the DPB, but we forget to reset the last_output_poc, which + make the POC out of order and generate the warning all the time. + Part-of: + +2021-06-10 01:09:44 +0900 Seungha Yang + + * sys/wasapi2/gstwasapi2sink.c: + wasapi2sink: Fix ringbuffer object leak + Part-of: + +2021-06-10 00:24:24 +0900 Seungha Yang + + * sys/wasapi2/gstwasapi2ringbuffer.cpp: + wasapi2ringbuffer: Implement GstAudioRingBuffer::pause() + WASAPI doesn't support PAUSE so it's not different from Stop(). + When pipeline is in paused state, we don't need to waste CPU resource + for feeding silent buffers. + Part-of: + +2021-06-07 01:49:26 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11_fwd.h: + * gst-libs/gst/d3d11/gstd3d11memory.c: + * gst-libs/gst/d3d11/gstd3d11memory.h: + d3d11memory: Implement GstAllocator::mem_copy method + There are a few places which require deep copy + (basesink on drain for example). Also this implementation can be + useful for future use case. + One probable future use case is that copying DPB texture to + another texture for in-place transform since our DPB texture is never + writable, and therefore copying is unavoidable. + Part-of: + +2021-06-08 21:35:20 +0900 Seungha Yang + + * sys/wasapi2/gstwasapi2client.cpp: + * sys/wasapi2/gstwasapi2client.h: + * sys/wasapi2/gstwasapi2device.c: + * sys/wasapi2/gstwasapi2ringbuffer.cpp: + * sys/wasapi2/gstwasapi2src.c: + * sys/wasapi2/gstwasapi2util.c: + * sys/wasapi2/gstwasapi2util.h: + wasapi2src: Add support for loopback recording + ... and add various device error handling. + This loopback implementation is functionally identical to that of wasapisrc. + When it's enabled, wasapi2src will read data from render device instead of + capture device. + Part-of: + +2021-05-10 20:45:28 +0900 Seungha Yang + + * sys/wasapi2/gstwasapi2client.cpp: + * sys/wasapi2/gstwasapi2client.h: + * sys/wasapi2/gstwasapi2device.c: + * sys/wasapi2/gstwasapi2ringbuffer.cpp: + * sys/wasapi2/gstwasapi2ringbuffer.h: + * sys/wasapi2/gstwasapi2sink.c: + * sys/wasapi2/gstwasapi2sink.h: + * sys/wasapi2/gstwasapi2src.c: + * sys/wasapi2/gstwasapi2src.h: + * sys/wasapi2/gstwasapi2util.c: + * sys/wasapi2/gstwasapi2util.h: + * sys/wasapi2/meson.build: + * sys/wasapi2/plugin.c: + wasapi2: Rewrite plugin and implement audioringbuffer subclass + ... based on MediaFoundation work queue API. + By this commit, wasapi2 plugin will make use of pull mode scheduling + with audioringbuffer subclass. + There are several drawbacks of audiosrc/audiosink subclassing + (not audiobasesrc/audiobasesink) for WASAPI API, which are: + * audiosrc/audiosink classes try to set high priority to + read/write thread via MMCSS (Multimedia Class Scheduler Service) + but it's not allowed in case of UWP application. + In order to use MMCSS in UWP, application should use MediaFoundation + work queue indirectly. + Since audiosrc/audiosink scheduling model is not compatible with + MediaFoundation's work queue model, audioringbuffer subclassing + is required. + * WASAPI capture device might report larger packet size than expected + (i.e., larger frames we can read than expected frame size per period). + Meanwhile, in any case, application should drain all packets at that moment. + In order to handle the case, wasapi/wasapi2 plugins were making use of + GstAdapter which is obviously sub-optimal because it requires additional + memory allocation and copy. + By implementing audioringbuffer subclassing, we can avoid such inefficiency. + In this commit, all the device read/write operations will be moved + to newly implemented wasapi2ringbuffer class and + existing wasapi2client class will take care of device enumeration + and activation parts only. + Part-of: + +2021-06-06 17:32:59 +0900 Seungha Yang + + * sys/wasapi2/gstwasapi2client.cpp: + wasapi2: Use AUDCLNT_STREAMFLAGS_NOPERSIST flag + ... so that we can disable persistence of our mute/volume status + Part-of: + +2021-06-06 17:28:56 +0900 Seungha Yang + + * sys/wasapi2/gstwasapi2src.c: + wasapi2src: Fix doc typo + Part-of: + +2021-05-26 00:12:59 -0400 Thibault Saunier + + * ext/wpe/wpe-extension/gstwpebusmsgforwarder.c: + wpe: Rename `undeserializable_type` to `not_deserializable_type` + Making it more readable. + Part-of: + +2021-05-25 23:58:27 -0400 Thibault Saunier + + * ext/wpe/WPEThreadedView.cpp: + * ext/wpe/gstwpesrcbin.cpp: + * ext/wpe/wpe-extension/gstwpebusmsgforwarder.c: + wpe: Make forwarded messages layout more like GstBinForwaded messages + Making it look more like how we do this kind of things in other places. + See: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2252#note_927653 + Part-of: + +2021-05-21 10:52:01 -0400 Thibault Saunier + + * docs/plugins/gst_plugins_cache.json: + * ext/wpe/gstwpesrcbin.cpp: + * tests/examples/wpe/wpe.c: + wpe: Make wpesrc!video pad an always pad + There should always be a `video` pad no matter what. + Part-of: + +2021-05-21 10:31:53 -0400 Thibault Saunier + + * ext/wpe/wpe-extension/gstwpeextension.c: + wpe: Remove unused env var + Part-of: + +2021-05-21 10:31:37 -0400 Thibault Saunier + + * ext/wpe/wpe-extension/gstwpeaudiosink.c: + wpe: Fix atomic usage + Part-of: + +2021-05-21 10:29:11 -0400 Thibault Saunier + + * ext/wpe/gstwpesrcbin.cpp: + wpe: Add a note able requiring tracing subsystem for message forwarding + Part-of: + +2021-05-21 10:18:21 -0400 Thibault Saunier + + * ext/wpe/wpe-extension/gstwpeaudiosink.c: + wpe: Fix check on whether MEMFD_CREATE is available + The ordering of the ifdef was wrong + Part-of: + +2021-05-21 10:13:01 -0400 Thibault Saunier + + * ext/wpe/gstwpesrcbin.cpp: + * ext/wpe/wpe-extension/gstwpebusmsgforwarder.c: + wpe: Plug a leak + We were freeing after returning + Part-of: + +2021-05-21 09:54:33 -0400 Thibault Saunier + + * ext/wpe/WPEThreadedView.cpp: + Revert "wpe: Properly respect LIBGL_ALWAYS_SOFTWARE" + This causes issues I didn't see: + https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2252#note_927633 + Let's just tell people to use capsfilter to force software rendering in + `wpesrc` for now. + The intent was to allow forcing it easily in playbin2 for the CI, but + we will do it some other way and see when time comes. + This reverts commit 9415106b029e5469ca28d882dc46ecc38786d4c9. + Part-of: + +2021-05-28 15:18:53 -0400 Nicolas Dufresne + + * docs/plugins/gst_plugins_cache.json: + * gst/debugutils/debugutilsbad.c: + * gst/debugutils/gstdebugutilsbadelements.h: + * gst/debugutils/gstvideocodectestsink.c: + * gst/debugutils/gstvideocodectestsink.h: + * gst/debugutils/meson.build: + debugutils: Introduce videocodectestsink + This is a video specific sink used to test video CODEC conformance. This is similar + to a combination of filesink and testsink, but will skip over any type of + padding that GStreamer Video library introduces. This is needed in order to obtain the + correct checksum or raw yuv data. + This element currently support writing back non-padded raw I420 through the + location property and will calculate an MD5 and post it as an element message + of type conformance/checksum. More output format or checksum type could be + added in the future as needed. + Part-of: + +2021-06-04 01:44:47 +0900 Seungha Yang + + * gst-libs/gst/vulkan/gstvkinstance.c: + vkinstance: Don't abort in case that system has no available vulkan device + Specification doesn't have restriction that returned + pPhysicalDeviceCount value must be non-zero + Part-of: + +2021-06-03 11:24:53 +0200 Edward Hervey + + * gst/mpegtsdemux/tsdemux.c: + tsdemux: Clear all streams when rewinding + This avoids sending out partial invalid data downstream which could cause + decoders (ex: `dvdlpmdec`) to error out. + Part-of: + +2021-05-29 01:48:15 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11device.c: + * gst-libs/gst/d3d11/gstd3d11format.h: + * sys/d3d11/gstd3d11converter.cpp: + * tests/check/elements/d3d11colorconvert.c: + d3d11: Add support for YV12 and NV21 formats + Handle UV swapped 4:2:0 8bits formats + Part-of: + +2021-06-03 18:28:26 +0900 Seungha Yang + + * sys/d3d11/gstd3d11window_win32.cpp: + d3d11window_win32: Ensure closing internal HWND from window thread + Window handle must be closed from its own message thread + Part-of: + +2021-06-03 10:31:39 -0400 Nicolas Dufresne + + * docs/plugins/gst_plugins_cache.json: + doc: Update cache after pixel format reorder + Part-of: + +2021-06-03 10:03:19 +0800 Yinhang Liu + + * docs/plugins/gst_plugins_cache.json: + * sys/msdk/gstmsdk.c: + * sys/msdk/gstmsdkav1dec.c: + * sys/msdk/gstmsdkh264dec.c: + * sys/msdk/gstmsdkh264enc.c: + * sys/msdk/gstmsdkh265dec.c: + * sys/msdk/gstmsdkh265enc.c: + * sys/msdk/gstmsdkmjpegdec.c: + * sys/msdk/gstmsdkmjpegenc.c: + * sys/msdk/gstmsdkmpeg2dec.c: + * sys/msdk/gstmsdkmpeg2enc.c: + * sys/msdk/gstmsdkvc1dec.c: + * sys/msdk/gstmsdkvp8dec.c: + * sys/msdk/gstmsdkvp9dec.c: + * sys/msdk/gstmsdkvp9enc.c: + * sys/msdk/gstmsdkvpp.c: + doc: add the msdk elements + Supported elements: + msdkav1dec, msdkh264dec, msdkh264enc, msdkh265dec, msdkh265enc, + msdkmjpegdec, msdkmjpegenc, msdkmpeg2dec, msdkmpeg2enc, msdkvc1dec, + msdkvp8dec, msdkvp9dec, msdkvp9enc, msdkvpp. + Part-of: + +2021-06-02 14:17:13 -0400 Nicolas Dufresne + + * ext/wayland/wlwindow.c: + waylandsink: Fix for missing initial configure + We were doing our initial "empty" commit on the subsurface instead of the + toplevel surface. As an incidence, we should not have received a configure + event ever, not just on mutter. This fixes the following warning when using + mutter compositor (aka gnome-shell): + waylandsink wlwindow.c:304:gst_wl_window_new_toplevel: The compositor did not send configure event. + Part-of: + +2021-06-02 11:26:41 -0400 Nicolas Dufresne + + * tests/check/elements/camerabin.c: + test: camerabin: Fix buffer size calculation + We were assunming that GStreamer size for RGB (24bit packed) data was width x + height x 3, but GStreamer defaults to specific alignment. Use GstVideoInfo API + in order to obtain the buffer size. + This fixes failure seen when trying to merge: https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/998 + which make us negoaite 1x1 instead of 16x16 in this test. + Part-of: + +2021-05-31 17:51:58 +0800 He Junyan + + * gst-libs/gst/codecs/gsth265decoder.c: + * gst-libs/gst/codecs/gsth265picture.c: + * gst-libs/gst/codecs/gsth265picture.h: + codecs: Integrate H265 DPB full check into need_bump(). + The current DPB check of H265 is not very correct. The current frame + is already in the DPB when we check whether the DPB is full. + For example, the DPB max size is 16 and we have 15 ref frames in the + DPB, so the gst_h265_dpb_delete_unused() cleans no one, and then plus + the current frame, the DPB is 16. This causes an error return, but in + fact, the stream is correct. + We now integrate the DPB full check into the need_bump() function. + We add the correct frame into to DPB and then check whether the picture + num is bigger than max_num_pics of DPB(which means there is no room for + the current picture). If true, we bump the DPB immediately. + Part-of: + +2021-06-01 15:28:57 +0100 Tim-Philipp Müller + + * meson.build: + Back to development + === release 1.19.1 === 2021-06-01 00:14:22 +0100 Tim-Philipp Müller diff --git a/NEWS b/NEWS index cc6c3b4a8..0e581c39b 100644 --- a/NEWS +++ b/NEWS @@ -1,15 +1,15 @@ GStreamer 1.20 Release Notes GStreamer 1.20 has not been released yet. It is scheduled for release -around July 2021. +around October/November 2021. 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 +the git main branch and which will eventually result in 1.20, and 1.19.2 +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. +It is expected that feature freeze will be in early October 2021, +followed by one or two 1.19.9x pre-releases and the new 1.20 stable +release around October/November 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. @@ -17,7 +17,7 @@ around July 2021. See https://gstreamer.freedesktop.org/releases/1.20/ for the latest version of this document. -Last updated: Sunday 30 May 2021, 16:00 UTC (log) +Last updated: Wednesday 22 September 2021, 18:00 UTC (log) Introduction @@ -247,6 +247,10 @@ Documentation improvements Possibly Breaking Changes - this section will be filled in in due course +- MPEG-TS SCTE-35 API changes (FIXME: flesh out) +- gst_parse_launch() and friends now error out on non-existing + properties on top-level bins where they would silently fail and + ignore those before. Known Issues @@ -274,16 +278,15 @@ the git 1.20 branch, which will be a stable branch. 1.20.0 -1.20.0 is scheduled to be released around July 2021. +1.20.0 is scheduled to be released around October/November 2021. Schedule for 1.22 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. +development of 1.21/1.22 will happen in the git main branch. -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. +The plan for the 1.22 development cycle is yet to be confirmed. 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. diff --git a/RELEASE b/RELEASE index 775ec214b..2a58e0619 100644 --- a/RELEASE +++ b/RELEASE @@ -1,4 +1,4 @@ -This is GStreamer gst-plugins-bad 1.19.1. +This is GStreamer gst-plugins-bad 1.19.2. GStreamer 1.19 is the development branch leading up to the next major stable version which will be 1.20. diff --git a/gst-plugins-bad.doap b/gst-plugins-bad.doap index 77d01f058..107051e36 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.2 + master + + 2021-09-23 + + + + 1.19.1 diff --git a/meson.build b/meson.build index beee7d4a7..7cab556e0 100644 --- a/meson.build +++ b/meson.build @@ -1,5 +1,5 @@ project('gst-plugins-bad', 'c', 'cpp', - version : '1.19.1.1', + version : '1.19.2', meson_version : '>= 0.54', default_options : [ 'warning_level=1', 'buildtype=debugoptimized' ]) -- cgit v1.2.1